{"version":3,"file":"static/chunks/478-38f327941ac26c78.js","mappings":"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","sources":["webpack://_N_E/./node_modules/next/dist/api/image.js","webpack://_N_E/./node_modules/next/dist/api/navigation.js","webpack://_N_E/../../../src/client/app-dir/link.tsx","webpack://_N_E/../client/image-component.tsx","webpack://_N_E/../client/request-idle-callback.ts","webpack://_N_E/../client/use-intersection.tsx","webpack://_N_E/../client/use-merged-ref.ts","webpack://_N_E/../../../src/shared/lib/amp-context.shared-runtime.ts","webpack://_N_E/../../../src/shared/lib/amp-mode.ts","webpack://_N_E/../../../src/shared/lib/get-img-props.ts","webpack://_N_E/../../../src/shared/lib/head.tsx","webpack://_N_E/../../../src/shared/lib/image-blur-svg.ts","webpack://_N_E/../../../src/shared/lib/image-config-context.shared-runtime.ts","webpack://_N_E/../../../src/shared/lib/image-config.ts","webpack://_N_E/../../../src/shared/lib/image-external.tsx","webpack://_N_E/../../../src/shared/lib/image-loader.ts","webpack://_N_E/../../../src/shared/lib/router-context.shared-runtime.ts","webpack://_N_E/../../../../../src/shared/lib/router/utils/format-url.ts","webpack://_N_E/../../../../../src/shared/lib/router/utils/querystring.ts","webpack://_N_E/../../../src/shared/lib/side-effect.tsx","webpack://_N_E/../../../src/shared/lib/utils.ts","webpack://_N_E/./node_modules/zustand/esm/vanilla.mjs","webpack://_N_E/./node_modules/zustand/esm/react.mjs"],"sourcesContent":["export { default } from '../shared/lib/image-external';\nexport * from '../shared/lib/image-external';\n\n//# sourceMappingURL=image.js.map","export * from '../client/components/navigation';\n\n//# sourceMappingURL=navigation.js.map","'use client'\n\nimport type { NextRouter } from '../../shared/lib/router/router'\n\nimport React from 'react'\nimport type { UrlObject } from 'url'\nimport { formatUrl } from '../../shared/lib/router/utils/format-url'\nimport { AppRouterContext } from '../../shared/lib/app-router-context.shared-runtime'\nimport type { AppRouterInstance } from '../../shared/lib/app-router-context.shared-runtime'\nimport type { PrefetchOptions } from '../../shared/lib/app-router-context.shared-runtime'\nimport { useIntersection } from '../use-intersection'\nimport { PrefetchKind } from '../components/router-reducer/router-reducer-types'\nimport { useMergedRef } from '../use-merged-ref'\nimport { isAbsoluteUrl } from '../../shared/lib/utils'\nimport { addBasePath } from '../add-base-path'\nimport { warnOnce } from '../../shared/lib/utils/warn-once'\n\ntype Url = string | UrlObject\ntype RequiredKeys<T> = {\n  [K in keyof T]-?: {} extends Pick<T, K> ? never : K\n}[keyof T]\ntype OptionalKeys<T> = {\n  [K in keyof T]-?: {} extends Pick<T, K> ? K : never\n}[keyof T]\n\ntype InternalLinkProps = {\n  /**\n   * The path or URL to navigate to. It can also be an object.\n   *\n   * @example https://nextjs.org/docs/api-reference/next/link#with-url-object\n   */\n  href: Url\n  /**\n   * Optional decorator for the path that will be shown in the browser URL bar. Before Next.js 9.5.3 this was used for dynamic routes, check our [previous docs](https://github.com/vercel/next.js/blob/v9.5.2/docs/api-reference/next/link.md#dynamic-routes) to see how it worked. Note: when this path differs from the one provided in `href` the previous `href`/`as` behavior is used as shown in the [previous docs](https://github.com/vercel/next.js/blob/v9.5.2/docs/api-reference/next/link.md#dynamic-routes).\n   */\n  as?: Url\n  /**\n   * Replace the current `history` state instead of adding a new url into the stack.\n   *\n   * @defaultValue `false`\n   */\n  replace?: boolean\n  /**\n   * Whether to override the default scroll behavior\n   *\n   * @example https://nextjs.org/docs/api-reference/next/link#disable-scrolling-to-the-top-of-the-page\n   *\n   * @defaultValue `true`\n   */\n  scroll?: boolean\n  /**\n   * Update the path of the current page without rerunning [`getStaticProps`](https://nextjs.org/docs/pages/building-your-application/data-fetching/get-static-props), [`getServerSideProps`](https://nextjs.org/docs/pages/building-your-application/data-fetching/get-server-side-props) or [`getInitialProps`](/docs/pages/api-reference/functions/get-initial-props).\n   *\n   * @defaultValue `false`\n   */\n  shallow?: boolean\n  /**\n   * Forces `Link` to send the `href` property to its child.\n   *\n   * @defaultValue `false`\n   */\n  passHref?: boolean\n  /**\n   * Prefetch the page in the background.\n   * Any `<Link />` that is in the viewport (initially or through scroll) will be prefetched.\n   * Prefetch can be disabled by passing `prefetch={false}`. Prefetching is only enabled in production.\n   *\n   * In App Router:\n   * - `null` (default): For statically generated pages, this will prefetch the full React Server Component data. For dynamic pages, this will prefetch up to the nearest route segment with a [`loading.js`](https://nextjs.org/docs/app/api-reference/file-conventions/loading) file. If there is no loading file, it will not fetch the full tree to avoid fetching too much data.\n   * - `true`: This will prefetch the full React Server Component data for all route segments, regardless of whether they contain a segment with `loading.js`.\n   * - `false`: This will not prefetch any data, even on hover.\n   *\n   * In Pages Router:\n   * - `true` (default): The full route & its data will be prefetched.\n   * - `false`: Prefetching will not happen when entering the viewport, but will still happen on hover.\n   * @defaultValue `true` (pages router) or `null` (app router)\n   */\n  prefetch?: boolean | null\n  /**\n   * The active locale is automatically prepended. `locale` allows for providing a different locale.\n   * When `false` `href` has to include the locale as the default behavior is disabled.\n   * Note: This is only available in the Pages Router.\n   */\n  locale?: string | false\n  /**\n   * Enable legacy link behavior.\n   * @defaultValue `false`\n   * @see https://github.com/vercel/next.js/commit/489e65ed98544e69b0afd7e0cfc3f9f6c2b803b7\n   */\n  legacyBehavior?: boolean\n  /**\n   * Optional event handler for when the mouse pointer is moved onto Link\n   */\n  onMouseEnter?: React.MouseEventHandler<HTMLAnchorElement>\n  /**\n   * Optional event handler for when Link is touched.\n   */\n  onTouchStart?: React.TouchEventHandler<HTMLAnchorElement>\n  /**\n   * Optional event handler for when Link is clicked.\n   */\n  onClick?: React.MouseEventHandler<HTMLAnchorElement>\n}\n\n// TODO-APP: Include the full set of Anchor props\n// adding this to the publicly exported type currently breaks existing apps\n\n// `RouteInferType` is a stub here to avoid breaking `typedRoutes` when the type\n// isn't generated yet. It will be replaced when the webpack plugin runs.\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport type LinkProps<RouteInferType = any> = InternalLinkProps\ntype LinkPropsRequired = RequiredKeys<LinkProps>\ntype LinkPropsOptional = OptionalKeys<Omit<InternalLinkProps, 'locale'>>\n\nfunction prefetch(\n  router: AppRouterInstance,\n  href: string,\n  options: PrefetchOptions\n): void {\n  if (typeof window === 'undefined') {\n    return\n  }\n\n  const doPrefetch = async () => {\n    // note that `appRouter.prefetch()` is currently sync,\n    // so we have to wrap this call in an async function to be able to catch() errors below.\n    return router.prefetch(href, options)\n  }\n\n  // Prefetch the page if asked (only in the client)\n  // We need to handle a prefetch error here since we may be\n  // loading with priority which can reject but we don't\n  // want to force navigation since this is only a prefetch\n  doPrefetch().catch((err) => {\n    if (process.env.NODE_ENV !== 'production') {\n      // rethrow to show invalid URL errors\n      throw err\n    }\n  })\n}\n\nfunction isModifiedEvent(event: React.MouseEvent): boolean {\n  const eventTarget = event.currentTarget as HTMLAnchorElement | SVGAElement\n  const target = eventTarget.getAttribute('target')\n  return (\n    (target && target !== '_self') ||\n    event.metaKey ||\n    event.ctrlKey ||\n    event.shiftKey ||\n    event.altKey || // triggers resource download\n    (event.nativeEvent && event.nativeEvent.which === 2)\n  )\n}\n\nfunction linkClicked(\n  e: React.MouseEvent,\n  router: NextRouter | AppRouterInstance,\n  href: string,\n  as: string,\n  replace?: boolean,\n  shallow?: boolean,\n  scroll?: boolean\n): void {\n  const { nodeName } = e.currentTarget\n\n  // anchors inside an svg have a lowercase nodeName\n  const isAnchorNodeName = nodeName.toUpperCase() === 'A'\n\n  if (isAnchorNodeName && isModifiedEvent(e)) {\n    // ignore click for browser’s default behavior\n    return\n  }\n\n  e.preventDefault()\n\n  const navigate = () => {\n    // If the router is an NextRouter instance it will have `beforePopState`\n    const routerScroll = scroll ?? true\n    if ('beforePopState' in router) {\n      router[replace ? 'replace' : 'push'](href, as, {\n        shallow,\n        scroll: routerScroll,\n      })\n    } else {\n      router[replace ? 'replace' : 'push'](as || href, {\n        scroll: routerScroll,\n      })\n    }\n  }\n\n  React.startTransition(navigate)\n}\n\ntype LinkPropsReal = React.PropsWithChildren<\n  Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, keyof LinkProps> &\n    LinkProps\n>\n\nfunction formatStringOrUrl(urlObjOrString: UrlObject | string): string {\n  if (typeof urlObjOrString === 'string') {\n    return urlObjOrString\n  }\n\n  return formatUrl(urlObjOrString)\n}\n\n/**\n * A React component that extends the HTML `<a>` element to provide [prefetching](https://nextjs.org/docs/app/building-your-application/routing/linking-and-navigating#2-prefetching)\n * and client-side navigation between routes.\n *\n * It is the primary way to navigate between routes in Next.js.\n *\n * Read more: [Next.js docs: `<Link>`](https://nextjs.org/docs/app/api-reference/components/link)\n */\nconst Link = React.forwardRef<HTMLAnchorElement, LinkPropsReal>(\n  function LinkComponent(props, forwardedRef) {\n    let children: React.ReactNode\n\n    const {\n      href: hrefProp,\n      as: asProp,\n      children: childrenProp,\n      prefetch: prefetchProp = null,\n      passHref,\n      replace,\n      shallow,\n      scroll,\n      onClick,\n      onMouseEnter: onMouseEnterProp,\n      onTouchStart: onTouchStartProp,\n      legacyBehavior = false,\n      ...restProps\n    } = props\n\n    children = childrenProp\n\n    if (\n      legacyBehavior &&\n      (typeof children === 'string' || typeof children === 'number')\n    ) {\n      children = <a>{children}</a>\n    }\n\n    const router = React.useContext(AppRouterContext)\n\n    const prefetchEnabled = prefetchProp !== false\n    /**\n     * The possible states for prefetch are:\n     * - null: this is the default \"auto\" mode, where we will prefetch partially if the link is in the viewport\n     * - true: we will prefetch if the link is visible and prefetch the full page, not just partially\n     * - false: we will not prefetch if in the viewport at all\n     */\n    const appPrefetchKind =\n      prefetchProp === null ? PrefetchKind.AUTO : PrefetchKind.FULL\n\n    if (process.env.NODE_ENV !== 'production') {\n      function createPropError(args: {\n        key: string\n        expected: string\n        actual: string\n      }) {\n        return new Error(\n          `Failed prop type: The prop \\`${args.key}\\` expects a ${args.expected} in \\`<Link>\\`, but got \\`${args.actual}\\` instead.` +\n            (typeof window !== 'undefined'\n              ? \"\\nOpen your browser's console to view the Component stack trace.\"\n              : '')\n        )\n      }\n\n      // TypeScript trick for type-guarding:\n      const requiredPropsGuard: Record<LinkPropsRequired, true> = {\n        href: true,\n      } as const\n      const requiredProps: LinkPropsRequired[] = Object.keys(\n        requiredPropsGuard\n      ) as LinkPropsRequired[]\n      requiredProps.forEach((key: LinkPropsRequired) => {\n        if (key === 'href') {\n          if (\n            props[key] == null ||\n            (typeof props[key] !== 'string' && typeof props[key] !== 'object')\n          ) {\n            throw createPropError({\n              key,\n              expected: '`string` or `object`',\n              actual: props[key] === null ? 'null' : typeof props[key],\n            })\n          }\n        } else {\n          // TypeScript trick for type-guarding:\n          // eslint-disable-next-line @typescript-eslint/no-unused-vars\n          const _: never = key\n        }\n      })\n\n      // TypeScript trick for type-guarding:\n      const optionalPropsGuard: Record<LinkPropsOptional, true> = {\n        as: true,\n        replace: true,\n        scroll: true,\n        shallow: true,\n        passHref: true,\n        prefetch: true,\n        onClick: true,\n        onMouseEnter: true,\n        onTouchStart: true,\n        legacyBehavior: true,\n      } as const\n      const optionalProps: LinkPropsOptional[] = Object.keys(\n        optionalPropsGuard\n      ) as LinkPropsOptional[]\n      optionalProps.forEach((key: LinkPropsOptional) => {\n        const valType = typeof props[key]\n\n        if (key === 'as') {\n          if (props[key] && valType !== 'string' && valType !== 'object') {\n            throw createPropError({\n              key,\n              expected: '`string` or `object`',\n              actual: valType,\n            })\n          }\n        } else if (\n          key === 'onClick' ||\n          key === 'onMouseEnter' ||\n          key === 'onTouchStart'\n        ) {\n          if (props[key] && valType !== 'function') {\n            throw createPropError({\n              key,\n              expected: '`function`',\n              actual: valType,\n            })\n          }\n        } else if (\n          key === 'replace' ||\n          key === 'scroll' ||\n          key === 'shallow' ||\n          key === 'passHref' ||\n          key === 'prefetch' ||\n          key === 'legacyBehavior'\n        ) {\n          if (props[key] != null && valType !== 'boolean') {\n            throw createPropError({\n              key,\n              expected: '`boolean`',\n              actual: valType,\n            })\n          }\n        } else {\n          // TypeScript trick for type-guarding:\n          // eslint-disable-next-line @typescript-eslint/no-unused-vars\n          const _: never = key\n        }\n      })\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (props.locale) {\n        warnOnce(\n          'The `locale` prop is not supported in `next/link` while using the `app` router. Read more about app router internalization: https://nextjs.org/docs/app/building-your-application/routing/internationalization'\n        )\n      }\n      if (!asProp) {\n        let href: string | undefined\n        if (typeof hrefProp === 'string') {\n          href = hrefProp\n        } else if (\n          typeof hrefProp === 'object' &&\n          typeof hrefProp.pathname === 'string'\n        ) {\n          href = hrefProp.pathname\n        }\n\n        if (href) {\n          const hasDynamicSegment = href\n            .split('/')\n            .some((segment) => segment.startsWith('[') && segment.endsWith(']'))\n\n          if (hasDynamicSegment) {\n            throw new Error(\n              `Dynamic href \\`${href}\\` found in <Link> while using the \\`/app\\` router, this is not supported. Read more: https://nextjs.org/docs/messages/app-dir-dynamic-href`\n            )\n          }\n        }\n      }\n    }\n\n    const { href, as } = React.useMemo(() => {\n      const resolvedHref = formatStringOrUrl(hrefProp)\n      return {\n        href: resolvedHref,\n        as: asProp ? formatStringOrUrl(asProp) : resolvedHref,\n      }\n    }, [hrefProp, asProp])\n\n    const previousHref = React.useRef<string>(href)\n    const previousAs = React.useRef<string>(as)\n\n    // This will return the first child, if multiple are provided it will throw an error\n    let child: any\n    if (legacyBehavior) {\n      if (process.env.NODE_ENV === 'development') {\n        if (onClick) {\n          console.warn(\n            `\"onClick\" was passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but \"legacyBehavior\" was set. The legacy behavior requires onClick be set on the child of next/link`\n          )\n        }\n        if (onMouseEnterProp) {\n          console.warn(\n            `\"onMouseEnter\" was passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but \"legacyBehavior\" was set. The legacy behavior requires onMouseEnter be set on the child of next/link`\n          )\n        }\n        try {\n          child = React.Children.only(children)\n        } catch (err) {\n          if (!children) {\n            throw new Error(\n              `No children were passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but one child is required https://nextjs.org/docs/messages/link-no-children`\n            )\n          }\n          throw new Error(\n            `Multiple children were passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but only one child is supported https://nextjs.org/docs/messages/link-multiple-children` +\n              (typeof window !== 'undefined'\n                ? \" \\nOpen your browser's console to view the Component stack trace.\"\n                : '')\n          )\n        }\n      } else {\n        child = React.Children.only(children)\n      }\n    } else {\n      if (process.env.NODE_ENV === 'development') {\n        if ((children as any)?.type === 'a') {\n          throw new Error(\n            'Invalid <Link> with <a> child. Please remove <a> or use <Link legacyBehavior>.\\nLearn more: https://nextjs.org/docs/messages/invalid-new-link-with-extra-anchor'\n          )\n        }\n      }\n    }\n\n    const childRef: any = legacyBehavior\n      ? child && typeof child === 'object' && child.ref\n      : forwardedRef\n\n    const [setIntersectionRef, isVisible, resetVisible] = useIntersection({\n      rootMargin: '200px',\n    })\n\n    const setIntersectionWithResetRef = React.useCallback(\n      (el: Element) => {\n        // Before the link getting observed, check if visible state need to be reset\n        if (previousAs.current !== as || previousHref.current !== href) {\n          resetVisible()\n          previousAs.current = as\n          previousHref.current = href\n        }\n\n        setIntersectionRef(el)\n      },\n      [as, href, resetVisible, setIntersectionRef]\n    )\n\n    const setRef = useMergedRef(setIntersectionWithResetRef, childRef)\n\n    // Prefetch the URL if we haven't already and it's visible.\n    React.useEffect(() => {\n      // in dev, we only prefetch on hover to avoid wasting resources as the prefetch will trigger compiling the page.\n      if (process.env.NODE_ENV !== 'production') {\n        return\n      }\n\n      if (!router) {\n        return\n      }\n\n      // If we don't need to prefetch the URL, don't do prefetch.\n      if (!isVisible || !prefetchEnabled) {\n        return\n      }\n\n      // Prefetch the URL.\n      prefetch(router, href, {\n        kind: appPrefetchKind,\n      })\n    }, [as, href, isVisible, prefetchEnabled, router, appPrefetchKind])\n\n    const childProps: {\n      onTouchStart?: React.TouchEventHandler<HTMLAnchorElement>\n      onMouseEnter: React.MouseEventHandler<HTMLAnchorElement>\n      onClick: React.MouseEventHandler<HTMLAnchorElement>\n      href?: string\n      ref?: any\n    } = {\n      ref: setRef,\n      onClick(e) {\n        if (process.env.NODE_ENV !== 'production') {\n          if (!e) {\n            throw new Error(\n              `Component rendered inside next/link has to pass click event to \"onClick\" prop.`\n            )\n          }\n        }\n\n        if (!legacyBehavior && typeof onClick === 'function') {\n          onClick(e)\n        }\n\n        if (\n          legacyBehavior &&\n          child.props &&\n          typeof child.props.onClick === 'function'\n        ) {\n          child.props.onClick(e)\n        }\n\n        if (!router) {\n          return\n        }\n\n        if (e.defaultPrevented) {\n          return\n        }\n\n        linkClicked(e, router, href, as, replace, shallow, scroll)\n      },\n      onMouseEnter(e) {\n        if (!legacyBehavior && typeof onMouseEnterProp === 'function') {\n          onMouseEnterProp(e)\n        }\n\n        if (\n          legacyBehavior &&\n          child.props &&\n          typeof child.props.onMouseEnter === 'function'\n        ) {\n          child.props.onMouseEnter(e)\n        }\n\n        if (!router) {\n          return\n        }\n\n        if (!prefetchEnabled || process.env.NODE_ENV === 'development') {\n          return\n        }\n\n        prefetch(router, href, {\n          kind: appPrefetchKind,\n        })\n      },\n      onTouchStart: process.env.__NEXT_LINK_NO_TOUCH_START\n        ? undefined\n        : function onTouchStart(e) {\n            if (!legacyBehavior && typeof onTouchStartProp === 'function') {\n              onTouchStartProp(e)\n            }\n\n            if (\n              legacyBehavior &&\n              child.props &&\n              typeof child.props.onTouchStart === 'function'\n            ) {\n              child.props.onTouchStart(e)\n            }\n\n            if (!router) {\n              return\n            }\n\n            if (!prefetchEnabled) {\n              return\n            }\n\n            prefetch(router, href, {\n              kind: appPrefetchKind,\n            })\n          },\n    }\n\n    // If child is an <a> tag and doesn't have a href attribute, or if the 'passHref' property is\n    // defined, we specify the current 'href', so that repetition is not needed by the user.\n    // If the url is absolute, we can bypass the logic to prepend the basePath.\n    if (isAbsoluteUrl(as)) {\n      childProps.href = as\n    } else if (\n      !legacyBehavior ||\n      passHref ||\n      (child.type === 'a' && !('href' in child.props))\n    ) {\n      childProps.href = addBasePath(as)\n    }\n\n    return legacyBehavior ? (\n      React.cloneElement(child, childProps)\n    ) : (\n      <a {...restProps} {...childProps}>\n        {children}\n      </a>\n    )\n  }\n)\n\nexport default Link\n","'use client'\n\nimport React, {\n  useRef,\n  useEffect,\n  useCallback,\n  useContext,\n  useMemo,\n  useState,\n  forwardRef,\n  use,\n} from 'react'\nimport ReactDOM from 'react-dom'\nimport Head from '../shared/lib/head'\nimport { getImgProps } from '../shared/lib/get-img-props'\nimport type {\n  ImageProps,\n  ImgProps,\n  OnLoad,\n  OnLoadingComplete,\n  PlaceholderValue,\n} from '../shared/lib/get-img-props'\nimport type {\n  ImageConfigComplete,\n  ImageLoaderProps,\n} from '../shared/lib/image-config'\nimport { imageConfigDefault } from '../shared/lib/image-config'\nimport { ImageConfigContext } from '../shared/lib/image-config-context.shared-runtime'\nimport { warnOnce } from '../shared/lib/utils/warn-once'\nimport { RouterContext } from '../shared/lib/router-context.shared-runtime'\n\n// @ts-ignore - This is replaced by webpack alias\nimport defaultLoader from 'next/dist/shared/lib/image-loader'\nimport { useMergedRef } from './use-merged-ref'\n\n// This is replaced by webpack define plugin\nconst configEnv = process.env.__NEXT_IMAGE_OPTS as any as ImageConfigComplete\n\nif (typeof window === 'undefined') {\n  ;(globalThis as any).__NEXT_IMAGE_IMPORTED = true\n}\n\nexport type { ImageLoaderProps }\nexport type ImageLoader = (p: ImageLoaderProps) => string\n\ntype ImgElementWithDataProp = HTMLImageElement & {\n  'data-loaded-src': string | undefined\n}\n\ntype ImageElementProps = ImgProps & {\n  unoptimized: boolean\n  placeholder: PlaceholderValue\n  onLoadRef: React.MutableRefObject<OnLoad | undefined>\n  onLoadingCompleteRef: React.MutableRefObject<OnLoadingComplete | undefined>\n  setBlurComplete: (b: boolean) => void\n  setShowAltText: (b: boolean) => void\n  sizesInput: string | undefined\n}\n\n// See https://stackoverflow.com/q/39777833/266535 for why we use this ref\n// handler instead of the img's onLoad attribute.\nfunction handleLoading(\n  img: ImgElementWithDataProp,\n  placeholder: PlaceholderValue,\n  onLoadRef: React.MutableRefObject<OnLoad | undefined>,\n  onLoadingCompleteRef: React.MutableRefObject<OnLoadingComplete | undefined>,\n  setBlurComplete: (b: boolean) => void,\n  unoptimized: boolean,\n  sizesInput: string | undefined\n) {\n  const src = img?.src\n  if (!img || img['data-loaded-src'] === src) {\n    return\n  }\n  img['data-loaded-src'] = src\n  const p = 'decode' in img ? img.decode() : Promise.resolve()\n  p.catch(() => {}).then(() => {\n    if (!img.parentElement || !img.isConnected) {\n      // Exit early in case of race condition:\n      // - onload() is called\n      // - decode() is called but incomplete\n      // - unmount is called\n      // - decode() completes\n      return\n    }\n    if (placeholder !== 'empty') {\n      setBlurComplete(true)\n    }\n    if (onLoadRef?.current) {\n      // Since we don't have the SyntheticEvent here,\n      // we must create one with the same shape.\n      // See https://reactjs.org/docs/events.html\n      const event = new Event('load')\n      Object.defineProperty(event, 'target', { writable: false, value: img })\n      let prevented = false\n      let stopped = false\n      onLoadRef.current({\n        ...event,\n        nativeEvent: event,\n        currentTarget: img,\n        target: img,\n        isDefaultPrevented: () => prevented,\n        isPropagationStopped: () => stopped,\n        persist: () => {},\n        preventDefault: () => {\n          prevented = true\n          event.preventDefault()\n        },\n        stopPropagation: () => {\n          stopped = true\n          event.stopPropagation()\n        },\n      })\n    }\n    if (onLoadingCompleteRef?.current) {\n      onLoadingCompleteRef.current(img)\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      const origSrc = new URL(src, 'http://n').searchParams.get('url') || src\n      if (img.getAttribute('data-nimg') === 'fill') {\n        if (!unoptimized && (!sizesInput || sizesInput === '100vw')) {\n          let widthViewportRatio =\n            img.getBoundingClientRect().width / window.innerWidth\n          if (widthViewportRatio < 0.6) {\n            if (sizesInput === '100vw') {\n              warnOnce(\n                `Image with src \"${origSrc}\" has \"fill\" prop and \"sizes\" prop of \"100vw\", but image is not rendered at full viewport width. Please adjust \"sizes\" to improve page performance. Read more: https://nextjs.org/docs/api-reference/next/image#sizes`\n              )\n            } else {\n              warnOnce(\n                `Image with src \"${origSrc}\" has \"fill\" but is missing \"sizes\" prop. Please add it to improve page performance. Read more: https://nextjs.org/docs/api-reference/next/image#sizes`\n              )\n            }\n          }\n        }\n        if (img.parentElement) {\n          const { position } = window.getComputedStyle(img.parentElement)\n          const valid = ['absolute', 'fixed', 'relative']\n          if (!valid.includes(position)) {\n            warnOnce(\n              `Image with src \"${origSrc}\" has \"fill\" and parent element with invalid \"position\". Provided \"${position}\" should be one of ${valid\n                .map(String)\n                .join(',')}.`\n            )\n          }\n        }\n        if (img.height === 0) {\n          warnOnce(\n            `Image with src \"${origSrc}\" has \"fill\" and a height value of 0. This is likely because the parent element of the image has not been styled to have a set height.`\n          )\n        }\n      }\n\n      const heightModified =\n        img.height.toString() !== img.getAttribute('height')\n      const widthModified = img.width.toString() !== img.getAttribute('width')\n      if (\n        (heightModified && !widthModified) ||\n        (!heightModified && widthModified)\n      ) {\n        warnOnce(\n          `Image with src \"${origSrc}\" has either width or height modified, but not the other. If you use CSS to change the size of your image, also include the styles 'width: \"auto\"' or 'height: \"auto\"' to maintain the aspect ratio.`\n        )\n      }\n    }\n  })\n}\n\nfunction getDynamicProps(\n  fetchPriority?: string\n): Record<string, string | undefined> {\n  if (Boolean(use)) {\n    // In React 19.0.0 or newer, we must use camelCase\n    // prop to avoid \"Warning: Invalid DOM property\".\n    // See https://github.com/facebook/react/pull/25927\n    return { fetchPriority }\n  }\n  // In React 18.2.0 or older, we must use lowercase prop\n  // to avoid \"Warning: Invalid DOM property\".\n  return { fetchpriority: fetchPriority }\n}\n\nconst ImageElement = forwardRef<HTMLImageElement | null, ImageElementProps>(\n  (\n    {\n      src,\n      srcSet,\n      sizes,\n      height,\n      width,\n      decoding,\n      className,\n      style,\n      fetchPriority,\n      placeholder,\n      loading,\n      unoptimized,\n      fill,\n      onLoadRef,\n      onLoadingCompleteRef,\n      setBlurComplete,\n      setShowAltText,\n      sizesInput,\n      onLoad,\n      onError,\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    const ownRef = useCallback(\n      (img: ImgElementWithDataProp | null) => {\n        if (!img) {\n          return\n        }\n        if (onError) {\n          // If the image has an error before react hydrates, then the error is lost.\n          // The workaround is to wait until the image is mounted which is after hydration,\n          // then we set the src again to trigger the error handler (if there was an error).\n          // eslint-disable-next-line no-self-assign\n          img.src = img.src\n        }\n        if (process.env.NODE_ENV !== 'production') {\n          if (!src) {\n            console.error(`Image is missing required \"src\" property:`, img)\n          }\n          if (img.getAttribute('alt') === null) {\n            console.error(\n              `Image is missing required \"alt\" property. Please add Alternative Text to describe the image for screen readers and search engines.`\n            )\n          }\n        }\n        if (img.complete) {\n          handleLoading(\n            img,\n            placeholder,\n            onLoadRef,\n            onLoadingCompleteRef,\n            setBlurComplete,\n            unoptimized,\n            sizesInput\n          )\n        }\n      },\n      [\n        src,\n        placeholder,\n        onLoadRef,\n        onLoadingCompleteRef,\n        setBlurComplete,\n        onError,\n        unoptimized,\n        sizesInput,\n      ]\n    )\n\n    const ref = useMergedRef(forwardedRef, ownRef)\n\n    return (\n      <img\n        {...rest}\n        {...getDynamicProps(fetchPriority)}\n        // It's intended to keep `loading` before `src` because React updates\n        // props in order which causes Safari/Firefox to not lazy load properly.\n        // See https://github.com/facebook/react/issues/25883\n        loading={loading}\n        width={width}\n        height={height}\n        decoding={decoding}\n        data-nimg={fill ? 'fill' : '1'}\n        className={className}\n        style={style}\n        // It's intended to keep `src` the last attribute because React updates\n        // attributes in order. If we keep `src` the first one, Safari will\n        // immediately start to fetch `src`, before `sizes` and `srcSet` are even\n        // updated by React. That causes multiple unnecessary requests if `srcSet`\n        // and `sizes` are defined.\n        // This bug cannot be reproduced in Chrome or Firefox.\n        sizes={sizes}\n        srcSet={srcSet}\n        src={src}\n        ref={ref}\n        onLoad={(event) => {\n          const img = event.currentTarget as ImgElementWithDataProp\n          handleLoading(\n            img,\n            placeholder,\n            onLoadRef,\n            onLoadingCompleteRef,\n            setBlurComplete,\n            unoptimized,\n            sizesInput\n          )\n        }}\n        onError={(event) => {\n          // if the real image fails to load, this will ensure \"alt\" is visible\n          setShowAltText(true)\n          if (placeholder !== 'empty') {\n            // If the real image fails to load, this will still remove the placeholder.\n            setBlurComplete(true)\n          }\n          if (onError) {\n            onError(event)\n          }\n        }}\n      />\n    )\n  }\n)\n\nfunction ImagePreload({\n  isAppRouter,\n  imgAttributes,\n}: {\n  isAppRouter: boolean\n  imgAttributes: ImgProps\n}) {\n  const opts = {\n    as: 'image',\n    imageSrcSet: imgAttributes.srcSet,\n    imageSizes: imgAttributes.sizes,\n    crossOrigin: imgAttributes.crossOrigin,\n    referrerPolicy: imgAttributes.referrerPolicy,\n    ...getDynamicProps(imgAttributes.fetchPriority),\n  }\n\n  if (isAppRouter && ReactDOM.preload) {\n    // See https://github.com/facebook/react/pull/26940\n    ReactDOM.preload(\n      imgAttributes.src,\n      // @ts-expect-error TODO: upgrade to `@types/react-dom@18.3.x`\n      opts\n    )\n    return null\n  }\n\n  return (\n    <Head>\n      <link\n        key={\n          '__nimg-' +\n          imgAttributes.src +\n          imgAttributes.srcSet +\n          imgAttributes.sizes\n        }\n        rel=\"preload\"\n        // Note how we omit the `href` attribute, as it would only be relevant\n        // for browsers that do not support `imagesrcset`, and in those cases\n        // it would cause the incorrect image to be preloaded.\n        //\n        // https://html.spec.whatwg.org/multipage/semantics.html#attr-link-imagesrcset\n        href={imgAttributes.srcSet ? undefined : imgAttributes.src}\n        {...opts}\n      />\n    </Head>\n  )\n}\n\n/**\n * The `Image` component is used to optimize images.\n *\n * Read more: [Next.js docs: `Image`](https://nextjs.org/docs/app/api-reference/components/image)\n */\nexport const Image = forwardRef<HTMLImageElement | null, ImageProps>(\n  (props, forwardedRef) => {\n    const pagesRouter = useContext(RouterContext)\n    // We're in the app directory if there is no pages router.\n    const isAppRouter = !pagesRouter\n\n    const configContext = useContext(ImageConfigContext)\n    const config = useMemo(() => {\n      const c = configEnv || configContext || imageConfigDefault\n      const allSizes = [...c.deviceSizes, ...c.imageSizes].sort((a, b) => a - b)\n      const deviceSizes = c.deviceSizes.sort((a, b) => a - b)\n      return { ...c, allSizes, deviceSizes }\n    }, [configContext])\n\n    const { onLoad, onLoadingComplete } = props\n    const onLoadRef = useRef(onLoad)\n\n    useEffect(() => {\n      onLoadRef.current = onLoad\n    }, [onLoad])\n\n    const onLoadingCompleteRef = useRef(onLoadingComplete)\n\n    useEffect(() => {\n      onLoadingCompleteRef.current = onLoadingComplete\n    }, [onLoadingComplete])\n\n    const [blurComplete, setBlurComplete] = useState(false)\n    const [showAltText, setShowAltText] = useState(false)\n\n    const { props: imgAttributes, meta: imgMeta } = getImgProps(props, {\n      defaultLoader,\n      imgConf: config,\n      blurComplete,\n      showAltText,\n    })\n\n    return (\n      <>\n        {\n          <ImageElement\n            {...imgAttributes}\n            unoptimized={imgMeta.unoptimized}\n            placeholder={imgMeta.placeholder}\n            fill={imgMeta.fill}\n            onLoadRef={onLoadRef}\n            onLoadingCompleteRef={onLoadingCompleteRef}\n            setBlurComplete={setBlurComplete}\n            setShowAltText={setShowAltText}\n            sizesInput={props.sizes}\n            ref={forwardedRef}\n          />\n        }\n        {imgMeta.priority ? (\n          <ImagePreload\n            isAppRouter={isAppRouter}\n            imgAttributes={imgAttributes}\n          />\n        ) : null}\n      </>\n    )\n  }\n)\n","export const requestIdleCallback =\n  (typeof self !== 'undefined' &&\n    self.requestIdleCallback &&\n    self.requestIdleCallback.bind(window)) ||\n  function (cb: IdleRequestCallback): number {\n    let start = Date.now()\n    return self.setTimeout(function () {\n      cb({\n        didTimeout: false,\n        timeRemaining: function () {\n          return Math.max(0, 50 - (Date.now() - start))\n        },\n      })\n    }, 1)\n  }\n\nexport const cancelIdleCallback =\n  (typeof self !== 'undefined' &&\n    self.cancelIdleCallback &&\n    self.cancelIdleCallback.bind(window)) ||\n  function (id: number) {\n    return clearTimeout(id)\n  }\n","import { useCallback, useEffect, useRef, useState } from 'react'\nimport {\n  requestIdleCallback,\n  cancelIdleCallback,\n} from './request-idle-callback'\n\ntype UseIntersectionObserverInit = Pick<\n  IntersectionObserverInit,\n  'rootMargin' | 'root'\n>\n\ntype UseIntersection = { disabled?: boolean } & UseIntersectionObserverInit & {\n    rootRef?: React.RefObject<HTMLElement | null> | null\n  }\ntype ObserveCallback = (isVisible: boolean) => void\ntype Identifier = {\n  root: Element | Document | null\n  margin: string\n}\ntype Observer = {\n  id: Identifier\n  observer: IntersectionObserver\n  elements: Map<Element, ObserveCallback>\n}\n\nconst hasIntersectionObserver = typeof IntersectionObserver === 'function'\n\nconst observers = new Map<Identifier, Observer>()\nconst idList: Identifier[] = []\n\nfunction createObserver(options: UseIntersectionObserverInit): Observer {\n  const id = {\n    root: options.root || null,\n    margin: options.rootMargin || '',\n  }\n  const existing = idList.find(\n    (obj) => obj.root === id.root && obj.margin === id.margin\n  )\n  let instance: Observer | undefined\n\n  if (existing) {\n    instance = observers.get(existing)\n    if (instance) {\n      return instance\n    }\n  }\n\n  const elements = new Map<Element, ObserveCallback>()\n  const observer = new IntersectionObserver((entries) => {\n    entries.forEach((entry) => {\n      const callback = elements.get(entry.target)\n      const isVisible = entry.isIntersecting || entry.intersectionRatio > 0\n      if (callback && isVisible) {\n        callback(isVisible)\n      }\n    })\n  }, options)\n  instance = {\n    id,\n    observer,\n    elements,\n  }\n\n  idList.push(id)\n  observers.set(id, instance)\n  return instance\n}\n\nfunction observe(\n  element: Element,\n  callback: ObserveCallback,\n  options: UseIntersectionObserverInit\n): () => void {\n  const { id, observer, elements } = createObserver(options)\n  elements.set(element, callback)\n\n  observer.observe(element)\n  return function unobserve(): void {\n    elements.delete(element)\n    observer.unobserve(element)\n\n    // Destroy observer when there's nothing left to watch:\n    if (elements.size === 0) {\n      observer.disconnect()\n      observers.delete(id)\n      const index = idList.findIndex(\n        (obj) => obj.root === id.root && obj.margin === id.margin\n      )\n      if (index > -1) {\n        idList.splice(index, 1)\n      }\n    }\n  }\n}\n\nexport function useIntersection<T extends Element>({\n  rootRef,\n  rootMargin,\n  disabled,\n}: UseIntersection): [(element: T | null) => void, boolean, () => void] {\n  const isDisabled: boolean = disabled || !hasIntersectionObserver\n\n  const [visible, setVisible] = useState(false)\n  const elementRef = useRef<T | null>(null)\n  const setElement = useCallback((element: T | null) => {\n    elementRef.current = element\n  }, [])\n\n  useEffect(() => {\n    if (hasIntersectionObserver) {\n      if (isDisabled || visible) return\n\n      const element = elementRef.current\n      if (element && element.tagName) {\n        const unobserve = observe(\n          element,\n          (isVisible) => isVisible && setVisible(isVisible),\n          { root: rootRef?.current, rootMargin }\n        )\n\n        return unobserve\n      }\n    } else {\n      if (!visible) {\n        const idleCallback = requestIdleCallback(() => setVisible(true))\n        return () => cancelIdleCallback(idleCallback)\n      }\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [isDisabled, rootMargin, rootRef, visible, elementRef.current])\n\n  const resetVisible = useCallback(() => {\n    setVisible(false)\n  }, [])\n\n  return [setElement, visible, resetVisible]\n}\n","import { useMemo, useRef, type Ref } from 'react'\n\n// This is a compatibility hook to support React 18 and 19 refs.\n// In 19, a cleanup function from refs may be returned.\n// In 18, returning a cleanup function creates a warning.\n// Since we take userspace refs, we don't know ahead of time if a cleanup function will be returned.\n// This implements cleanup functions with the old behavior in 18.\n// We know refs are always called alternating with `null` and then `T`.\n// So a call with `null` means we need to call the previous cleanup functions.\nexport function useMergedRef<TElement>(\n  refA: Ref<TElement>,\n  refB: Ref<TElement>\n): Ref<TElement> {\n  const cleanupA = useRef<() => void>(() => {})\n  const cleanupB = useRef<() => void>(() => {})\n\n  return useMemo(() => {\n    if (!refA || !refB) {\n      return refA || refB\n    }\n\n    return (current: TElement | null): void => {\n      if (current === null) {\n        cleanupA.current()\n        cleanupB.current()\n      } else {\n        cleanupA.current = applyRef(refA, current)\n        cleanupB.current = applyRef(refB, current)\n      }\n    }\n  }, [refA, refB])\n}\n\nfunction applyRef<TElement>(\n  refA: NonNullable<Ref<TElement>>,\n  current: TElement\n) {\n  if (typeof refA === 'function') {\n    const cleanup = refA(current)\n    if (typeof cleanup === 'function') {\n      return cleanup\n    } else {\n      return () => refA(null)\n    }\n  } else {\n    refA.current = current\n    return () => {\n      refA.current = null\n    }\n  }\n}\n","import React from 'react'\n\nexport const AmpStateContext: React.Context<any> = React.createContext({})\n\nif (process.env.NODE_ENV !== 'production') {\n  AmpStateContext.displayName = 'AmpStateContext'\n}\n","export function isInAmpMode({\n  ampFirst = false,\n  hybrid = false,\n  hasQuery = false,\n} = {}): boolean {\n  return ampFirst || (hybrid && hasQuery)\n}\n","import { warnOnce } from './utils/warn-once'\nimport { getImageBlurSvg } from './image-blur-svg'\nimport { imageConfigDefault } from './image-config'\nimport type {\n  ImageConfigComplete,\n  ImageLoaderProps,\n  ImageLoaderPropsWithConfig,\n} from './image-config'\n\nimport type { JSX } from 'react'\n\nexport interface StaticImageData {\n  src: string\n  height: number\n  width: number\n  blurDataURL?: string\n  blurWidth?: number\n  blurHeight?: number\n}\n\nexport interface StaticRequire {\n  default: StaticImageData\n}\n\nexport type StaticImport = StaticRequire | StaticImageData\n\nexport type ImageProps = Omit<\n  JSX.IntrinsicElements['img'],\n  'src' | 'srcSet' | 'ref' | 'alt' | 'width' | 'height' | 'loading'\n> & {\n  src: string | StaticImport\n  alt: string\n  width?: number | `${number}`\n  height?: number | `${number}`\n  fill?: boolean\n  loader?: ImageLoader\n  quality?: number | `${number}`\n  priority?: boolean\n  loading?: LoadingValue\n  placeholder?: PlaceholderValue\n  blurDataURL?: string\n  unoptimized?: boolean\n  overrideSrc?: string\n  /**\n   * @deprecated Use `onLoad` instead.\n   * @see https://nextjs.org/docs/app/api-reference/components/image#onload\n   */\n  onLoadingComplete?: OnLoadingComplete\n  /**\n   * @deprecated Use `fill` prop instead of `layout=\"fill\"` or change import to `next/legacy/image`.\n   * @see https://nextjs.org/docs/api-reference/next/legacy/image\n   */\n  layout?: string\n  /**\n   * @deprecated Use `style` prop instead.\n   */\n  objectFit?: string\n  /**\n   * @deprecated Use `style` prop instead.\n   */\n  objectPosition?: string\n  /**\n   * @deprecated This prop does not do anything.\n   */\n  lazyBoundary?: string\n  /**\n   * @deprecated This prop does not do anything.\n   */\n  lazyRoot?: string\n}\n\nexport type ImgProps = Omit<ImageProps, 'src' | 'loader'> & {\n  loading: LoadingValue\n  width: number | undefined\n  height: number | undefined\n  style: NonNullable<JSX.IntrinsicElements['img']['style']>\n  sizes: string | undefined\n  srcSet: string | undefined\n  src: string\n}\n\nconst VALID_LOADING_VALUES = ['lazy', 'eager', undefined] as const\ntype LoadingValue = (typeof VALID_LOADING_VALUES)[number]\ntype ImageConfig = ImageConfigComplete & {\n  allSizes: number[]\n  output?: 'standalone' | 'export'\n}\n\nexport type ImageLoader = (p: ImageLoaderProps) => string\n\n// Do not export - this is an internal type only\n// because `next.config.js` is only meant for the\n// built-in loaders, not for a custom loader() prop.\ntype ImageLoaderWithConfig = (p: ImageLoaderPropsWithConfig) => string\n\nexport type PlaceholderValue = 'blur' | 'empty' | `data:image/${string}`\nexport type OnLoad = React.ReactEventHandler<HTMLImageElement> | undefined\nexport type OnLoadingComplete = (img: HTMLImageElement) => void\n\nfunction isStaticRequire(\n  src: StaticRequire | StaticImageData\n): src is StaticRequire {\n  return (src as StaticRequire).default !== undefined\n}\n\nfunction isStaticImageData(\n  src: StaticRequire | StaticImageData\n): src is StaticImageData {\n  return (src as StaticImageData).src !== undefined\n}\n\nfunction isStaticImport(src: string | StaticImport): src is StaticImport {\n  return (\n    !!src &&\n    typeof src === 'object' &&\n    (isStaticRequire(src as StaticImport) ||\n      isStaticImageData(src as StaticImport))\n  )\n}\n\nconst allImgs = new Map<\n  string,\n  { src: string; priority: boolean; placeholder: PlaceholderValue }\n>()\nlet perfObserver: PerformanceObserver | undefined\n\nfunction getInt(x: unknown): number | undefined {\n  if (typeof x === 'undefined') {\n    return x\n  }\n  if (typeof x === 'number') {\n    return Number.isFinite(x) ? x : NaN\n  }\n  if (typeof x === 'string' && /^[0-9]+$/.test(x)) {\n    return parseInt(x, 10)\n  }\n  return NaN\n}\n\nfunction getWidths(\n  { deviceSizes, allSizes }: ImageConfig,\n  width: number | undefined,\n  sizes: string | undefined\n): { widths: number[]; kind: 'w' | 'x' } {\n  if (sizes) {\n    // Find all the \"vw\" percent sizes used in the sizes prop\n    const viewportWidthRe = /(^|\\s)(1?\\d?\\d)vw/g\n    const percentSizes = []\n    for (let match; (match = viewportWidthRe.exec(sizes)); match) {\n      percentSizes.push(parseInt(match[2]))\n    }\n    if (percentSizes.length) {\n      const smallestRatio = Math.min(...percentSizes) * 0.01\n      return {\n        widths: allSizes.filter((s) => s >= deviceSizes[0] * smallestRatio),\n        kind: 'w',\n      }\n    }\n    return { widths: allSizes, kind: 'w' }\n  }\n  if (typeof width !== 'number') {\n    return { widths: deviceSizes, kind: 'w' }\n  }\n\n  const widths = [\n    ...new Set(\n      // > This means that most OLED screens that say they are 3x resolution,\n      // > are actually 3x in the green color, but only 1.5x in the red and\n      // > blue colors. Showing a 3x resolution image in the app vs a 2x\n      // > resolution image will be visually the same, though the 3x image\n      // > takes significantly more data. Even true 3x resolution screens are\n      // > wasteful as the human eye cannot see that level of detail without\n      // > something like a magnifying glass.\n      // https://blog.twitter.com/engineering/en_us/topics/infrastructure/2019/capping-image-fidelity-on-ultra-high-resolution-devices.html\n      [width, width * 2 /*, width * 3*/].map(\n        (w) => allSizes.find((p) => p >= w) || allSizes[allSizes.length - 1]\n      )\n    ),\n  ]\n  return { widths, kind: 'x' }\n}\n\ntype GenImgAttrsData = {\n  config: ImageConfig\n  src: string\n  unoptimized: boolean\n  loader: ImageLoaderWithConfig\n  width?: number\n  quality?: number\n  sizes?: string\n}\n\ntype GenImgAttrsResult = {\n  src: string\n  srcSet: string | undefined\n  sizes: string | undefined\n}\n\nfunction generateImgAttrs({\n  config,\n  src,\n  unoptimized,\n  width,\n  quality,\n  sizes,\n  loader,\n}: GenImgAttrsData): GenImgAttrsResult {\n  if (unoptimized) {\n    return { src, srcSet: undefined, sizes: undefined }\n  }\n\n  const { widths, kind } = getWidths(config, width, sizes)\n  const last = widths.length - 1\n\n  return {\n    sizes: !sizes && kind === 'w' ? '100vw' : sizes,\n    srcSet: widths\n      .map(\n        (w, i) =>\n          `${loader({ config, src, quality, width: w })} ${\n            kind === 'w' ? w : i + 1\n          }${kind}`\n      )\n      .join(', '),\n\n    // It's intended to keep `src` the last attribute because React updates\n    // attributes in order. If we keep `src` the first one, Safari will\n    // immediately start to fetch `src`, before `sizes` and `srcSet` are even\n    // updated by React. That causes multiple unnecessary requests if `srcSet`\n    // and `sizes` are defined.\n    // This bug cannot be reproduced in Chrome or Firefox.\n    src: loader({ config, src, quality, width: widths[last] }),\n  }\n}\n\n/**\n * A shared function, used on both client and server, to generate the props for <img>.\n */\nexport function getImgProps(\n  {\n    src,\n    sizes,\n    unoptimized = false,\n    priority = false,\n    loading,\n    className,\n    quality,\n    width,\n    height,\n    fill = false,\n    style,\n    overrideSrc,\n    onLoad,\n    onLoadingComplete,\n    placeholder = 'empty',\n    blurDataURL,\n    fetchPriority,\n    decoding = 'async',\n    layout,\n    objectFit,\n    objectPosition,\n    lazyBoundary,\n    lazyRoot,\n    ...rest\n  }: ImageProps,\n  _state: {\n    defaultLoader: ImageLoaderWithConfig\n    imgConf: ImageConfigComplete\n    showAltText?: boolean\n    blurComplete?: boolean\n  }\n): {\n  props: ImgProps\n  meta: {\n    unoptimized: boolean\n    priority: boolean\n    placeholder: NonNullable<ImageProps['placeholder']>\n    fill: boolean\n  }\n} {\n  const { imgConf, showAltText, blurComplete, defaultLoader } = _state\n  let config: ImageConfig\n  let c = imgConf || imageConfigDefault\n  if ('allSizes' in c) {\n    config = c as ImageConfig\n  } else {\n    const allSizes = [...c.deviceSizes, ...c.imageSizes].sort((a, b) => a - b)\n    const deviceSizes = c.deviceSizes.sort((a, b) => a - b)\n    config = { ...c, allSizes, deviceSizes }\n  }\n\n  if (typeof defaultLoader === 'undefined') {\n    throw new Error(\n      'images.loaderFile detected but the file is missing default export.\\nRead more: https://nextjs.org/docs/messages/invalid-images-config'\n    )\n  }\n  let loader: ImageLoaderWithConfig = rest.loader || defaultLoader\n\n  // Remove property so it's not spread on <img> element\n  delete rest.loader\n  delete (rest as any).srcSet\n\n  // This special value indicates that the user\n  // didn't define a \"loader\" prop or \"loader\" config.\n  const isDefaultLoader = '__next_img_default' in loader\n\n  if (isDefaultLoader) {\n    if (config.loader === 'custom') {\n      throw new Error(\n        `Image with src \"${src}\" is missing \"loader\" prop.` +\n          `\\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader`\n      )\n    }\n  } else {\n    // The user defined a \"loader\" prop or config.\n    // Since the config object is internal only, we\n    // must not pass it to the user-defined \"loader\".\n    const customImageLoader = loader as ImageLoader\n    loader = (obj) => {\n      const { config: _, ...opts } = obj\n      return customImageLoader(opts)\n    }\n  }\n\n  if (layout) {\n    if (layout === 'fill') {\n      fill = true\n    }\n    const layoutToStyle: Record<string, Record<string, string> | undefined> = {\n      intrinsic: { maxWidth: '100%', height: 'auto' },\n      responsive: { width: '100%', height: 'auto' },\n    }\n    const layoutToSizes: Record<string, string | undefined> = {\n      responsive: '100vw',\n      fill: '100vw',\n    }\n    const layoutStyle = layoutToStyle[layout]\n    if (layoutStyle) {\n      style = { ...style, ...layoutStyle }\n    }\n    const layoutSizes = layoutToSizes[layout]\n    if (layoutSizes && !sizes) {\n      sizes = layoutSizes\n    }\n  }\n\n  let staticSrc = ''\n  let widthInt = getInt(width)\n  let heightInt = getInt(height)\n  let blurWidth: number | undefined\n  let blurHeight: number | undefined\n  if (isStaticImport(src)) {\n    const staticImageData = isStaticRequire(src) ? src.default : src\n\n    if (!staticImageData.src) {\n      throw new Error(\n        `An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(\n          staticImageData\n        )}`\n      )\n    }\n    if (!staticImageData.height || !staticImageData.width) {\n      throw new Error(\n        `An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(\n          staticImageData\n        )}`\n      )\n    }\n\n    blurWidth = staticImageData.blurWidth\n    blurHeight = staticImageData.blurHeight\n    blurDataURL = blurDataURL || staticImageData.blurDataURL\n    staticSrc = staticImageData.src\n\n    if (!fill) {\n      if (!widthInt && !heightInt) {\n        widthInt = staticImageData.width\n        heightInt = staticImageData.height\n      } else if (widthInt && !heightInt) {\n        const ratio = widthInt / staticImageData.width\n        heightInt = Math.round(staticImageData.height * ratio)\n      } else if (!widthInt && heightInt) {\n        const ratio = heightInt / staticImageData.height\n        widthInt = Math.round(staticImageData.width * ratio)\n      }\n    }\n  }\n  src = typeof src === 'string' ? src : staticSrc\n\n  let isLazy =\n    !priority && (loading === 'lazy' || typeof loading === 'undefined')\n  if (!src || src.startsWith('data:') || src.startsWith('blob:')) {\n    // https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\n    unoptimized = true\n    isLazy = false\n  }\n  if (config.unoptimized) {\n    unoptimized = true\n  }\n  if (\n    isDefaultLoader &&\n    !config.dangerouslyAllowSVG &&\n    src.split('?', 1)[0].endsWith('.svg')\n  ) {\n    // Special case to make svg serve as-is to avoid proxying\n    // through the built-in Image Optimization API.\n    unoptimized = true\n  }\n\n  const qualityInt = getInt(quality)\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (config.output === 'export' && isDefaultLoader && !unoptimized) {\n      throw new Error(\n        `Image Optimization using the default loader is not compatible with \\`{ output: 'export' }\\`.\n  Possible solutions:\n    - Remove \\`{ output: 'export' }\\` and run \"next start\" to run server mode including the Image Optimization API.\n    - Configure \\`{ images: { unoptimized: true } }\\` in \\`next.config.js\\` to disable the Image Optimization API.\n  Read more: https://nextjs.org/docs/messages/export-image-api`\n      )\n    }\n    if (!src) {\n      // React doesn't show the stack trace and there's\n      // no `src` to help identify which image, so we\n      // instead console.error(ref) during mount.\n      unoptimized = true\n    } else {\n      if (fill) {\n        if (width) {\n          throw new Error(\n            `Image with src \"${src}\" has both \"width\" and \"fill\" properties. Only one should be used.`\n          )\n        }\n        if (height) {\n          throw new Error(\n            `Image with src \"${src}\" has both \"height\" and \"fill\" properties. Only one should be used.`\n          )\n        }\n        if (style?.position && style.position !== 'absolute') {\n          throw new Error(\n            `Image with src \"${src}\" has both \"fill\" and \"style.position\" properties. Images with \"fill\" always use position absolute - it cannot be modified.`\n          )\n        }\n        if (style?.width && style.width !== '100%') {\n          throw new Error(\n            `Image with src \"${src}\" has both \"fill\" and \"style.width\" properties. Images with \"fill\" always use width 100% - it cannot be modified.`\n          )\n        }\n        if (style?.height && style.height !== '100%') {\n          throw new Error(\n            `Image with src \"${src}\" has both \"fill\" and \"style.height\" properties. Images with \"fill\" always use height 100% - it cannot be modified.`\n          )\n        }\n      } else {\n        if (typeof widthInt === 'undefined') {\n          throw new Error(\n            `Image with src \"${src}\" is missing required \"width\" property.`\n          )\n        } else if (isNaN(widthInt)) {\n          throw new Error(\n            `Image with src \"${src}\" has invalid \"width\" property. Expected a numeric value in pixels but received \"${width}\".`\n          )\n        }\n        if (typeof heightInt === 'undefined') {\n          throw new Error(\n            `Image with src \"${src}\" is missing required \"height\" property.`\n          )\n        } else if (isNaN(heightInt)) {\n          throw new Error(\n            `Image with src \"${src}\" has invalid \"height\" property. Expected a numeric value in pixels but received \"${height}\".`\n          )\n        }\n        // eslint-disable-next-line no-control-regex\n        if (/^[\\x00-\\x20]/.test(src)) {\n          throw new Error(\n            `Image with src \"${src}\" cannot start with a space or control character. Use src.trimStart() to remove it or encodeURIComponent(src) to keep it.`\n          )\n        }\n        // eslint-disable-next-line no-control-regex\n        if (/[\\x00-\\x20]$/.test(src)) {\n          throw new Error(\n            `Image with src \"${src}\" cannot end with a space or control character. Use src.trimEnd() to remove it or encodeURIComponent(src) to keep it.`\n          )\n        }\n      }\n    }\n    if (!VALID_LOADING_VALUES.includes(loading)) {\n      throw new Error(\n        `Image with src \"${src}\" has invalid \"loading\" property. Provided \"${loading}\" should be one of ${VALID_LOADING_VALUES.map(\n          String\n        ).join(',')}.`\n      )\n    }\n    if (priority && loading === 'lazy') {\n      throw new Error(\n        `Image with src \"${src}\" has both \"priority\" and \"loading='lazy'\" properties. Only one should be used.`\n      )\n    }\n    if (\n      placeholder !== 'empty' &&\n      placeholder !== 'blur' &&\n      !placeholder.startsWith('data:image/')\n    ) {\n      throw new Error(\n        `Image with src \"${src}\" has invalid \"placeholder\" property \"${placeholder}\".`\n      )\n    }\n    if (placeholder !== 'empty') {\n      if (widthInt && heightInt && widthInt * heightInt < 1600) {\n        warnOnce(\n          `Image with src \"${src}\" is smaller than 40x40. Consider removing the \"placeholder\" property to improve performance.`\n        )\n      }\n    }\n    if (placeholder === 'blur' && !blurDataURL) {\n      const VALID_BLUR_EXT = ['jpeg', 'png', 'webp', 'avif'] // should match next-image-loader\n\n      throw new Error(\n        `Image with src \"${src}\" has \"placeholder='blur'\" property but is missing the \"blurDataURL\" property.\n        Possible solutions:\n          - Add a \"blurDataURL\" property, the contents should be a small Data URL to represent the image\n          - Change the \"src\" property to a static import with one of the supported file types: ${VALID_BLUR_EXT.join(\n            ','\n          )} (animated images not supported)\n          - Remove the \"placeholder\" property, effectively no blur effect\n        Read more: https://nextjs.org/docs/messages/placeholder-blur-data-url`\n      )\n    }\n    if ('ref' in rest) {\n      warnOnce(\n        `Image with src \"${src}\" is using unsupported \"ref\" property. Consider using the \"onLoad\" property instead.`\n      )\n    }\n\n    if (!unoptimized && !isDefaultLoader) {\n      const urlStr = loader({\n        config,\n        src,\n        width: widthInt || 400,\n        quality: qualityInt || 75,\n      })\n      let url: URL | undefined\n      try {\n        url = new URL(urlStr)\n      } catch (err) {}\n      if (urlStr === src || (url && url.pathname === src && !url.search)) {\n        warnOnce(\n          `Image with src \"${src}\" has a \"loader\" property that does not implement width. Please implement it or use the \"unoptimized\" property instead.` +\n            `\\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader-width`\n        )\n      }\n    }\n\n    if (onLoadingComplete) {\n      warnOnce(\n        `Image with src \"${src}\" is using deprecated \"onLoadingComplete\" property. Please use the \"onLoad\" property instead.`\n      )\n    }\n\n    for (const [legacyKey, legacyValue] of Object.entries({\n      layout,\n      objectFit,\n      objectPosition,\n      lazyBoundary,\n      lazyRoot,\n    })) {\n      if (legacyValue) {\n        warnOnce(\n          `Image with src \"${src}\" has legacy prop \"${legacyKey}\". Did you forget to run the codemod?` +\n            `\\nRead more: https://nextjs.org/docs/messages/next-image-upgrade-to-13`\n        )\n      }\n    }\n\n    if (\n      typeof window !== 'undefined' &&\n      !perfObserver &&\n      window.PerformanceObserver\n    ) {\n      perfObserver = new PerformanceObserver((entryList) => {\n        for (const entry of entryList.getEntries()) {\n          // @ts-ignore - missing \"LargestContentfulPaint\" class with \"element\" prop\n          const imgSrc = entry?.element?.src || ''\n          const lcpImage = allImgs.get(imgSrc)\n          if (\n            lcpImage &&\n            !lcpImage.priority &&\n            lcpImage.placeholder === 'empty' &&\n            !lcpImage.src.startsWith('data:') &&\n            !lcpImage.src.startsWith('blob:')\n          ) {\n            // https://web.dev/lcp/#measure-lcp-in-javascript\n            warnOnce(\n              `Image with src \"${lcpImage.src}\" was detected as the Largest Contentful Paint (LCP). Please add the \"priority\" property if this image is above the fold.` +\n                `\\nRead more: https://nextjs.org/docs/api-reference/next/image#priority`\n            )\n          }\n        }\n      })\n      try {\n        perfObserver.observe({\n          type: 'largest-contentful-paint',\n          buffered: true,\n        })\n      } catch (err) {\n        // Log error but don't crash the app\n        console.error(err)\n      }\n    }\n  }\n  const imgStyle = Object.assign(\n    fill\n      ? {\n          position: 'absolute',\n          height: '100%',\n          width: '100%',\n          left: 0,\n          top: 0,\n          right: 0,\n          bottom: 0,\n          objectFit,\n          objectPosition,\n        }\n      : {},\n    showAltText ? {} : { color: 'transparent' },\n    style\n  )\n\n  const backgroundImage =\n    !blurComplete && placeholder !== 'empty'\n      ? placeholder === 'blur'\n        ? `url(\"data:image/svg+xml;charset=utf-8,${getImageBlurSvg({\n            widthInt,\n            heightInt,\n            blurWidth,\n            blurHeight,\n            blurDataURL: blurDataURL || '', // assume not undefined\n            objectFit: imgStyle.objectFit,\n          })}\")`\n        : `url(\"${placeholder}\")` // assume `data:image/`\n      : null\n\n  let placeholderStyle = backgroundImage\n    ? {\n        backgroundSize: imgStyle.objectFit || 'cover',\n        backgroundPosition: imgStyle.objectPosition || '50% 50%',\n        backgroundRepeat: 'no-repeat',\n        backgroundImage,\n      }\n    : {}\n\n  if (process.env.NODE_ENV === 'development') {\n    if (\n      placeholderStyle.backgroundImage &&\n      placeholder === 'blur' &&\n      blurDataURL?.startsWith('/')\n    ) {\n      // During `next dev`, we don't want to generate blur placeholders with webpack\n      // because it can delay starting the dev server. Instead, `next-image-loader.js`\n      // will inline a special url to lazily generate the blur placeholder at request time.\n      placeholderStyle.backgroundImage = `url(\"${blurDataURL}\")`\n    }\n  }\n\n  const imgAttributes = generateImgAttrs({\n    config,\n    src,\n    unoptimized,\n    width: widthInt,\n    quality: qualityInt,\n    sizes,\n    loader,\n  })\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof window !== 'undefined') {\n      let fullUrl: URL\n      try {\n        fullUrl = new URL(imgAttributes.src)\n      } catch (e) {\n        fullUrl = new URL(imgAttributes.src, window.location.href)\n      }\n      allImgs.set(fullUrl.href, { src, priority, placeholder })\n    }\n  }\n\n  const props: ImgProps = {\n    ...rest,\n    loading: isLazy ? 'lazy' : loading,\n    fetchPriority,\n    width: widthInt,\n    height: heightInt,\n    decoding,\n    className,\n    style: { ...imgStyle, ...placeholderStyle },\n    sizes: imgAttributes.sizes,\n    srcSet: imgAttributes.srcSet,\n    src: overrideSrc || imgAttributes.src,\n  }\n  const meta = { unoptimized, priority, placeholder, fill }\n  return { props, meta }\n}\n","'use client'\n\nimport React, { useContext, type JSX } from 'react'\nimport Effect from './side-effect'\nimport { AmpStateContext } from './amp-context.shared-runtime'\nimport { HeadManagerContext } from './head-manager-context.shared-runtime'\nimport { isInAmpMode } from './amp-mode'\nimport { warnOnce } from './utils/warn-once'\n\ntype WithInAmpMode = {\n  inAmpMode?: boolean\n}\n\nexport function defaultHead(inAmpMode = false): JSX.Element[] {\n  const head = [<meta charSet=\"utf-8\" key=\"charset\" />]\n  if (!inAmpMode) {\n    head.push(\n      <meta name=\"viewport\" content=\"width=device-width\" key=\"viewport\" />\n    )\n  }\n  return head\n}\n\nfunction onlyReactElement(\n  list: Array<React.ReactElement<any>>,\n  child: React.ReactElement | number | string\n): Array<React.ReactElement<any>> {\n  // React children can be \"string\" or \"number\" in this case we ignore them for backwards compat\n  if (typeof child === 'string' || typeof child === 'number') {\n    return list\n  }\n  // Adds support for React.Fragment\n  if (child.type === React.Fragment) {\n    return list.concat(\n      // @ts-expect-error @types/react does not remove fragments but this could also return ReactPortal[]\n      React.Children.toArray(child.props.children).reduce(\n        // @ts-expect-error @types/react does not remove fragments but this could also return ReactPortal[]\n        (\n          fragmentList: Array<React.ReactElement<any>>,\n          fragmentChild: React.ReactElement | number | string\n        ): Array<React.ReactElement<any>> => {\n          if (\n            typeof fragmentChild === 'string' ||\n            typeof fragmentChild === 'number'\n          ) {\n            return fragmentList\n          }\n          return fragmentList.concat(fragmentChild)\n        },\n        []\n      )\n    )\n  }\n  return list.concat(child)\n}\n\nconst METATYPES = ['name', 'httpEquiv', 'charSet', 'itemProp']\n\n/*\n returns a function for filtering head child elements\n which shouldn't be duplicated, like <title/>\n Also adds support for deduplicated `key` properties\n*/\nfunction unique() {\n  const keys = new Set()\n  const tags = new Set()\n  const metaTypes = new Set()\n  const metaCategories: { [metatype: string]: Set<string> } = {}\n\n  return (h: React.ReactElement<any>) => {\n    let isUnique = true\n    let hasKey = false\n\n    if (h.key && typeof h.key !== 'number' && h.key.indexOf('$') > 0) {\n      hasKey = true\n      const key = h.key.slice(h.key.indexOf('$') + 1)\n      if (keys.has(key)) {\n        isUnique = false\n      } else {\n        keys.add(key)\n      }\n    }\n\n    // eslint-disable-next-line default-case\n    switch (h.type) {\n      case 'title':\n      case 'base':\n        if (tags.has(h.type)) {\n          isUnique = false\n        } else {\n          tags.add(h.type)\n        }\n        break\n      case 'meta':\n        for (let i = 0, len = METATYPES.length; i < len; i++) {\n          const metatype = METATYPES[i]\n          if (!h.props.hasOwnProperty(metatype)) continue\n\n          if (metatype === 'charSet') {\n            if (metaTypes.has(metatype)) {\n              isUnique = false\n            } else {\n              metaTypes.add(metatype)\n            }\n          } else {\n            const category = h.props[metatype]\n            const categories = metaCategories[metatype] || new Set()\n            if ((metatype !== 'name' || !hasKey) && categories.has(category)) {\n              isUnique = false\n            } else {\n              categories.add(category)\n              metaCategories[metatype] = categories\n            }\n          }\n        }\n        break\n    }\n\n    return isUnique\n  }\n}\n\n/**\n *\n * @param headChildrenElements List of children of <Head>\n */\nfunction reduceComponents<T extends {} & WithInAmpMode>(\n  headChildrenElements: Array<React.ReactElement<any>>,\n  props: T\n) {\n  const { inAmpMode } = props\n  return headChildrenElements\n    .reduce(onlyReactElement, [])\n    .reverse()\n    .concat(defaultHead(inAmpMode).reverse())\n    .filter(unique())\n    .reverse()\n    .map((c: React.ReactElement<any>, i: number) => {\n      const key = c.key || i\n      if (\n        process.env.NODE_ENV !== 'development' &&\n        process.env.__NEXT_OPTIMIZE_FONTS &&\n        !inAmpMode\n      ) {\n        if (\n          c.type === 'link' &&\n          c.props['href'] &&\n          // TODO(prateekbh@): Replace this with const from `constants` when the tree shaking works.\n          ['https://fonts.googleapis.com/css', 'https://use.typekit.net/'].some(\n            (url) => c.props['href'].startsWith(url)\n          )\n        ) {\n          const newProps = { ...(c.props || {}) }\n          newProps['data-href'] = newProps['href']\n          newProps['href'] = undefined\n\n          // Add this attribute to make it easy to identify optimized tags\n          newProps['data-optimized-fonts'] = true\n\n          return React.cloneElement(c, newProps)\n        }\n      }\n      if (process.env.NODE_ENV === 'development') {\n        // omit JSON-LD structured data snippets from the warning\n        if (c.type === 'script' && c.props['type'] !== 'application/ld+json') {\n          const srcMessage = c.props['src']\n            ? `<script> tag with src=\"${c.props['src']}\"`\n            : `inline <script>`\n          warnOnce(\n            `Do not add <script> tags using next/head (see ${srcMessage}). Use next/script instead. \\nSee more info here: https://nextjs.org/docs/messages/no-script-tags-in-head-component`\n          )\n        } else if (c.type === 'link' && c.props['rel'] === 'stylesheet') {\n          warnOnce(\n            `Do not add stylesheets using next/head (see <link rel=\"stylesheet\"> tag with href=\"${c.props['href']}\"). Use Document instead. \\nSee more info here: https://nextjs.org/docs/messages/no-stylesheets-in-head-component`\n          )\n        }\n      }\n      return React.cloneElement(c, { key })\n    })\n}\n\n/**\n * This component injects elements to `<head>` of your page.\n * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.\n */\nfunction Head({ children }: { children: React.ReactNode }) {\n  const ampState = useContext(AmpStateContext)\n  const headManager = useContext(HeadManagerContext)\n  return (\n    <Effect\n      reduceComponentsToState={reduceComponents}\n      headManager={headManager}\n      inAmpMode={isInAmpMode(ampState)}\n    >\n      {children}\n    </Effect>\n  )\n}\n\nexport default Head\n","/**\n * A shared function, used on both client and server, to generate a SVG blur placeholder.\n */\nexport function getImageBlurSvg({\n  widthInt,\n  heightInt,\n  blurWidth,\n  blurHeight,\n  blurDataURL,\n  objectFit,\n}: {\n  widthInt?: number\n  heightInt?: number\n  blurWidth?: number\n  blurHeight?: number\n  blurDataURL: string\n  objectFit?: string\n}): string {\n  const std = 20\n  const svgWidth = blurWidth ? blurWidth * 40 : widthInt\n  const svgHeight = blurHeight ? blurHeight * 40 : heightInt\n\n  const viewBox =\n    svgWidth && svgHeight ? `viewBox='0 0 ${svgWidth} ${svgHeight}'` : ''\n  const preserveAspectRatio = viewBox\n    ? 'none'\n    : objectFit === 'contain'\n      ? 'xMidYMid'\n      : objectFit === 'cover'\n        ? 'xMidYMid slice'\n        : 'none'\n\n  return `%3Csvg xmlns='http://www.w3.org/2000/svg' ${viewBox}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='${std}'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='${std}'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${preserveAspectRatio}' style='filter: url(%23b);' href='${blurDataURL}'/%3E%3C/svg%3E`\n}\n","import React from 'react'\nimport type { ImageConfigComplete } from './image-config'\nimport { imageConfigDefault } from './image-config'\n\nexport const ImageConfigContext =\n  React.createContext<ImageConfigComplete>(imageConfigDefault)\n\nif (process.env.NODE_ENV !== 'production') {\n  ImageConfigContext.displayName = 'ImageConfigContext'\n}\n","export const VALID_LOADERS = [\n  'default',\n  'imgix',\n  'cloudinary',\n  'akamai',\n  'custom',\n] as const\n\nexport type LoaderValue = (typeof VALID_LOADERS)[number]\n\nexport type ImageLoaderProps = {\n  src: string\n  width: number\n  quality?: number\n}\n\nexport type ImageLoaderPropsWithConfig = ImageLoaderProps & {\n  config: Readonly<ImageConfig>\n}\n\nexport type LocalPattern = {\n  /**\n   * Can be literal or wildcard.\n   * Single `*` matches a single path segment.\n   * Double `**` matches any number of path segments.\n   */\n  pathname?: string\n\n  /**\n   * Can be literal query string such as `?v=1` or\n   * empty string meaning no query string.\n   */\n  search?: string\n}\n\nexport type RemotePattern = {\n  /**\n   * Must be `http` or `https`.\n   */\n  protocol?: 'http' | 'https'\n\n  /**\n   * Can be literal or wildcard.\n   * Single `*` matches a single subdomain.\n   * Double `**` matches any number of subdomains.\n   */\n  hostname: string\n\n  /**\n   * Can be literal port such as `8080` or empty string\n   * meaning no port.\n   */\n  port?: string\n\n  /**\n   * Can be literal or wildcard.\n   * Single `*` matches a single path segment.\n   * Double `**` matches any number of path segments.\n   */\n  pathname?: string\n\n  /**\n   * Can be literal query string such as `?v=1` or\n   * empty string meaning no query string.\n   */\n  search?: string\n}\n\ntype ImageFormat = 'image/avif' | 'image/webp'\n\n/**\n * Image configurations\n *\n * @see [Image configuration options](https://nextjs.org/docs/api-reference/next/image#configuration-options)\n */\nexport type ImageConfigComplete = {\n  /** @see [Device sizes documentation](https://nextjs.org/docs/api-reference/next/image#device-sizes) */\n  deviceSizes: number[]\n\n  /** @see [Image sizing documentation](https://nextjs.org/docs/app/building-your-application/optimizing/images#image-sizing) */\n  imageSizes: number[]\n\n  /** @see [Image loaders configuration](https://nextjs.org/docs/api-reference/next/legacy/image#loader) */\n  loader: LoaderValue\n\n  /** @see [Image loader configuration](https://nextjs.org/docs/api-reference/next/legacy/image#loader-configuration) */\n  path: string\n\n  /** @see [Image loader configuration](https://nextjs.org/docs/api-reference/next/image#loader-configuration) */\n  loaderFile: string\n\n  /**\n   * @deprecated Use `remotePatterns` instead.\n   */\n  domains: string[]\n\n  /** @see [Disable static image import configuration](https://nextjs.org/docs/api-reference/next/image#disable-static-imports) */\n  disableStaticImages: boolean\n\n  /** @see [Cache behavior](https://nextjs.org/docs/api-reference/next/image#caching-behavior) */\n  minimumCacheTTL: number\n\n  /** @see [Acceptable formats](https://nextjs.org/docs/api-reference/next/image#acceptable-formats) */\n  formats: ImageFormat[]\n\n  /** @see [Dangerously Allow SVG](https://nextjs.org/docs/api-reference/next/image#dangerously-allow-svg) */\n  dangerouslyAllowSVG: boolean\n\n  /** @see [Dangerously Allow SVG](https://nextjs.org/docs/api-reference/next/image#dangerously-allow-svg) */\n  contentSecurityPolicy: string\n\n  /** @see [Dangerously Allow SVG](https://nextjs.org/docs/api-reference/next/image#dangerously-allow-svg) */\n  contentDispositionType: 'inline' | 'attachment'\n\n  /** @see [Remote Patterns](https://nextjs.org/docs/api-reference/next/image#remotepatterns) */\n  remotePatterns: RemotePattern[]\n\n  /** @see [Remote Patterns](https://nextjs.org/docs/api-reference/next/image#localPatterns) */\n  localPatterns: LocalPattern[] | undefined\n\n  /** @see [Unoptimized](https://nextjs.org/docs/api-reference/next/image#unoptimized) */\n  unoptimized: boolean\n}\n\nexport type ImageConfig = Partial<ImageConfigComplete>\n\nexport const imageConfigDefault: ImageConfigComplete = {\n  deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],\n  imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],\n  path: '/_next/image',\n  loader: 'default',\n  loaderFile: '',\n  domains: [],\n  disableStaticImages: false,\n  minimumCacheTTL: 60,\n  formats: ['image/webp'],\n  dangerouslyAllowSVG: false,\n  contentSecurityPolicy: `script-src 'none'; frame-src 'none'; sandbox;`,\n  contentDispositionType: 'attachment',\n  localPatterns: undefined, // default: allow all local images\n  remotePatterns: [], // default: allow no remote images\n  unoptimized: false,\n}\n","import type { ImageConfigComplete, ImageLoaderProps } from './image-config'\nimport type { ImageProps, ImageLoader, StaticImageData } from './get-img-props'\n\nimport { getImgProps } from './get-img-props'\nimport { Image } from '../../client/image-component'\n\n// @ts-ignore - This is replaced by webpack alias\nimport defaultLoader from 'next/dist/shared/lib/image-loader'\n\n/**\n * For more advanced use cases, you can call `getImageProps()`\n * to get the props that would be passed to the underlying `<img>` element,\n * and instead pass to them to another component, style, canvas, etc.\n *\n * Read more: [Next.js docs: `getImageProps`](https://nextjs.org/docs/app/api-reference/components/image#getimageprops)\n */\nexport function getImageProps(imgProps: ImageProps) {\n  const { props } = getImgProps(imgProps, {\n    defaultLoader,\n    // This is replaced by webpack define plugin\n    imgConf: process.env.__NEXT_IMAGE_OPTS as any as ImageConfigComplete,\n  })\n  // Normally we don't care about undefined props because we pass to JSX,\n  // but this exported function could be used by the end user for anything\n  // so we delete undefined props to clean it up a little.\n  for (const [key, value] of Object.entries(props)) {\n    if (value === undefined) {\n      delete props[key as keyof typeof props]\n    }\n  }\n  return { props }\n}\n\nexport default Image\n\nexport type { ImageProps, ImageLoaderProps, ImageLoader, StaticImageData }\n","import type { ImageLoaderPropsWithConfig } from './image-config'\n\nfunction defaultLoader({\n  config,\n  src,\n  width,\n  quality,\n}: ImageLoaderPropsWithConfig): string {\n  if (process.env.NODE_ENV !== 'production') {\n    const missingValues = []\n\n    // these should always be provided but make sure they are\n    if (!src) missingValues.push('src')\n    if (!width) missingValues.push('width')\n\n    if (missingValues.length > 0) {\n      throw new Error(\n        `Next Image Optimization requires ${missingValues.join(\n          ', '\n        )} to be provided. Make sure you pass them as props to the \\`next/image\\` component. Received: ${JSON.stringify(\n          { src, width, quality }\n        )}`\n      )\n    }\n\n    if (src.startsWith('//')) {\n      throw new Error(\n        `Failed to parse src \"${src}\" on \\`next/image\\`, protocol-relative URL (//) must be changed to an absolute URL (http:// or https://)`\n      )\n    }\n\n    if (src.startsWith('/') && config.localPatterns) {\n      if (\n        process.env.NODE_ENV !== 'test' &&\n        // micromatch isn't compatible with edge runtime\n        process.env.NEXT_RUNTIME !== 'edge'\n      ) {\n        // We use dynamic require because this should only error in development\n        const { hasLocalMatch } = require('./match-local-pattern')\n        if (!hasLocalMatch(config.localPatterns, src)) {\n          throw new Error(\n            `Invalid src prop (${src}) on \\`next/image\\` does not match \\`images.localPatterns\\` configured in your \\`next.config.js\\`\\n` +\n              `See more info: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`\n          )\n        }\n      }\n    }\n\n    if (!src.startsWith('/') && (config.domains || config.remotePatterns)) {\n      let parsedSrc: URL\n      try {\n        parsedSrc = new URL(src)\n      } catch (err) {\n        console.error(err)\n        throw new Error(\n          `Failed to parse src \"${src}\" on \\`next/image\\`, if using relative image it must start with a leading slash \"/\" or be an absolute URL (http:// or https://)`\n        )\n      }\n\n      if (\n        process.env.NODE_ENV !== 'test' &&\n        // micromatch isn't compatible with edge runtime\n        process.env.NEXT_RUNTIME !== 'edge'\n      ) {\n        // We use dynamic require because this should only error in development\n        const { hasRemoteMatch } = require('./match-remote-pattern')\n        if (!hasRemoteMatch(config.domains, config.remotePatterns, parsedSrc)) {\n          throw new Error(\n            `Invalid src prop (${src}) on \\`next/image\\`, hostname \"${parsedSrc.hostname}\" is not configured under images in your \\`next.config.js\\`\\n` +\n              `See more info: https://nextjs.org/docs/messages/next-image-unconfigured-host`\n          )\n        }\n      }\n    }\n  }\n\n  return `${config.path}?url=${encodeURIComponent(src)}&w=${width}&q=${\n    quality || 75\n  }${\n    src.startsWith('/_next/static/media/') && process.env.NEXT_DEPLOYMENT_ID\n      ? `&dpl=${process.env.NEXT_DEPLOYMENT_ID}`\n      : ''\n  }`\n}\n\n// We use this to determine if the import is the default loader\n// or a custom loader defined by the user in next.config.js\ndefaultLoader.__next_img_default = true\n\nexport default defaultLoader\n","import React from 'react'\nimport type { NextRouter } from './router/router'\n\nexport const RouterContext = React.createContext<NextRouter | null>(null)\n\nif (process.env.NODE_ENV !== 'production') {\n  RouterContext.displayName = 'RouterContext'\n}\n","// Format function modified from nodejs\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nimport type { UrlObject } from 'url'\nimport type { ParsedUrlQuery } from 'querystring'\nimport * as querystring from './querystring'\n\nconst slashedProtocols = /https?|ftp|gopher|file/\n\nexport function formatUrl(urlObj: UrlObject) {\n  let { auth, hostname } = urlObj\n  let protocol = urlObj.protocol || ''\n  let pathname = urlObj.pathname || ''\n  let hash = urlObj.hash || ''\n  let query = urlObj.query || ''\n  let host: string | false = false\n\n  auth = auth ? encodeURIComponent(auth).replace(/%3A/i, ':') + '@' : ''\n\n  if (urlObj.host) {\n    host = auth + urlObj.host\n  } else if (hostname) {\n    host = auth + (~hostname.indexOf(':') ? `[${hostname}]` : hostname)\n    if (urlObj.port) {\n      host += ':' + urlObj.port\n    }\n  }\n\n  if (query && typeof query === 'object') {\n    query = String(querystring.urlQueryToSearchParams(query as ParsedUrlQuery))\n  }\n\n  let search = urlObj.search || (query && `?${query}`) || ''\n\n  if (protocol && !protocol.endsWith(':')) protocol += ':'\n\n  if (\n    urlObj.slashes ||\n    ((!protocol || slashedProtocols.test(protocol)) && host !== false)\n  ) {\n    host = '//' + (host || '')\n    if (pathname && pathname[0] !== '/') pathname = '/' + pathname\n  } else if (!host) {\n    host = ''\n  }\n\n  if (hash && hash[0] !== '#') hash = '#' + hash\n  if (search && search[0] !== '?') search = '?' + search\n\n  pathname = pathname.replace(/[?#]/g, encodeURIComponent)\n  search = search.replace('#', '%23')\n\n  return `${protocol}${host}${pathname}${search}${hash}`\n}\n\nexport const urlObjectKeys = [\n  'auth',\n  'hash',\n  'host',\n  'hostname',\n  'href',\n  'path',\n  'pathname',\n  'port',\n  'protocol',\n  'query',\n  'search',\n  'slashes',\n]\n\nexport function formatWithValidation(url: UrlObject): string {\n  if (process.env.NODE_ENV === 'development') {\n    if (url !== null && typeof url === 'object') {\n      Object.keys(url).forEach((key) => {\n        if (!urlObjectKeys.includes(key)) {\n          console.warn(\n            `Unknown key passed via urlObject into url.format: ${key}`\n          )\n        }\n      })\n    }\n  }\n\n  return formatUrl(url)\n}\n","import type { ParsedUrlQuery } from 'querystring'\n\nexport function searchParamsToUrlQuery(\n  searchParams: URLSearchParams\n): ParsedUrlQuery {\n  const query: ParsedUrlQuery = {}\n  searchParams.forEach((value, key) => {\n    if (typeof query[key] === 'undefined') {\n      query[key] = value\n    } else if (Array.isArray(query[key])) {\n      ;(query[key] as string[]).push(value)\n    } else {\n      query[key] = [query[key] as string, value]\n    }\n  })\n  return query\n}\n\nfunction stringifyUrlQueryParam(param: unknown): string {\n  if (\n    typeof param === 'string' ||\n    (typeof param === 'number' && !isNaN(param)) ||\n    typeof param === 'boolean'\n  ) {\n    return String(param)\n  } else {\n    return ''\n  }\n}\n\nexport function urlQueryToSearchParams(\n  urlQuery: ParsedUrlQuery\n): URLSearchParams {\n  const result = new URLSearchParams()\n  Object.entries(urlQuery).forEach(([key, value]) => {\n    if (Array.isArray(value)) {\n      value.forEach((item) => result.append(key, stringifyUrlQueryParam(item)))\n    } else {\n      result.set(key, stringifyUrlQueryParam(value))\n    }\n  })\n  return result\n}\n\nexport function assign(\n  target: URLSearchParams,\n  ...searchParamsList: URLSearchParams[]\n): URLSearchParams {\n  searchParamsList.forEach((searchParams) => {\n    Array.from(searchParams.keys()).forEach((key) => target.delete(key))\n    searchParams.forEach((value, key) => target.append(key, value))\n  })\n  return target\n}\n","import type React from 'react'\nimport { Children, useEffect, useLayoutEffect, type JSX } from 'react'\n\ntype State = JSX.Element[] | undefined\n\nexport type SideEffectProps = {\n  reduceComponentsToState: <T extends {}>(\n    components: Array<React.ReactElement<any>>,\n    props: T\n  ) => State\n  handleStateChange?: (state: State) => void\n  headManager: any\n  inAmpMode?: boolean\n  children: React.ReactNode\n}\n\nconst isServer = typeof window === 'undefined'\nconst useClientOnlyLayoutEffect = isServer ? () => {} : useLayoutEffect\nconst useClientOnlyEffect = isServer ? () => {} : useEffect\n\nexport default function SideEffect(props: SideEffectProps) {\n  const { headManager, reduceComponentsToState } = props\n\n  function emitChange() {\n    if (headManager && headManager.mountedInstances) {\n      const headElements = Children.toArray(\n        Array.from(headManager.mountedInstances as Set<React.ReactNode>).filter(\n          Boolean\n        )\n      ) as React.ReactElement[]\n      headManager.updateHead(reduceComponentsToState(headElements, props))\n    }\n  }\n\n  if (isServer) {\n    headManager?.mountedInstances?.add(props.children)\n    emitChange()\n  }\n\n  useClientOnlyLayoutEffect(() => {\n    headManager?.mountedInstances?.add(props.children)\n    return () => {\n      headManager?.mountedInstances?.delete(props.children)\n    }\n  })\n\n  // We need to call `updateHead` method whenever the `SideEffect` is trigger in all\n  // life-cycles: mount, update, unmount. However, if there are multiple `SideEffect`s\n  // being rendered, we only trigger the method from the last one.\n  // This is ensured by keeping the last unflushed `updateHead` in the `_pendingUpdate`\n  // singleton in the layout effect pass, and actually trigger it in the effect pass.\n  useClientOnlyLayoutEffect(() => {\n    if (headManager) {\n      headManager._pendingUpdate = emitChange\n    }\n    return () => {\n      if (headManager) {\n        headManager._pendingUpdate = emitChange\n      }\n    }\n  })\n\n  useClientOnlyEffect(() => {\n    if (headManager && headManager._pendingUpdate) {\n      headManager._pendingUpdate()\n      headManager._pendingUpdate = null\n    }\n    return () => {\n      if (headManager && headManager._pendingUpdate) {\n        headManager._pendingUpdate()\n        headManager._pendingUpdate = null\n      }\n    }\n  })\n\n  return null\n}\n","import type { HtmlProps } from './html-context.shared-runtime'\nimport type { ComponentType, JSX } from 'react'\nimport type { DomainLocale } from '../../server/config'\nimport type { Env } from '@next/env'\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport type { NextRouter } from './router/router'\nimport type { ParsedUrlQuery } from 'querystring'\nimport type { PreviewData } from '../../types'\nimport type { COMPILER_NAMES } from './constants'\nimport type fs from 'fs'\n\nexport type NextComponentType<\n  Context extends BaseContext = NextPageContext,\n  InitialProps = {},\n  Props = {},\n> = ComponentType<Props> & {\n  /**\n   * Used for initial page load data population. Data returned from `getInitialProps` is serialized when server rendered.\n   * Make sure to return plain `Object` without using `Date`, `Map`, `Set`.\n   * @param context Context of `page`\n   */\n  getInitialProps?(context: Context): InitialProps | Promise<InitialProps>\n}\n\nexport type DocumentType = NextComponentType<\n  DocumentContext,\n  DocumentInitialProps,\n  DocumentProps\n>\n\nexport type AppType<P = {}> = NextComponentType<\n  AppContextType,\n  P,\n  AppPropsType<any, P>\n>\n\nexport type AppTreeType = ComponentType<\n  AppInitialProps & { [name: string]: any }\n>\n\n/**\n * Web vitals provided to _app.reportWebVitals by Core Web Vitals plugin developed by Google Chrome team.\n * https://nextjs.org/blog/next-9-4#integrated-web-vitals-reporting\n */\nexport const WEB_VITALS = ['CLS', 'FCP', 'FID', 'INP', 'LCP', 'TTFB'] as const\nexport type NextWebVitalsMetric = {\n  id: string\n  startTime: number\n  value: number\n  attribution?: { [key: string]: unknown }\n} & (\n  | {\n      label: 'web-vital'\n      name: (typeof WEB_VITALS)[number]\n    }\n  | {\n      label: 'custom'\n      name:\n        | 'Next.js-hydration'\n        | 'Next.js-route-change-to-render'\n        | 'Next.js-render'\n    }\n)\n\nexport type Enhancer<C> = (Component: C) => C\n\nexport type ComponentsEnhancer =\n  | {\n      enhanceApp?: Enhancer<AppType>\n      enhanceComponent?: Enhancer<NextComponentType>\n    }\n  | Enhancer<NextComponentType>\n\nexport type RenderPageResult = {\n  html: string\n  head?: Array<JSX.Element | null>\n}\n\nexport type RenderPage = (\n  options?: ComponentsEnhancer\n) => DocumentInitialProps | Promise<DocumentInitialProps>\n\nexport type BaseContext = {\n  res?: ServerResponse\n  [k: string]: any\n}\n\nexport type NEXT_DATA = {\n  props: Record<string, any>\n  page: string\n  query: ParsedUrlQuery\n  buildId: string\n  assetPrefix?: string\n  runtimeConfig?: { [key: string]: any }\n  nextExport?: boolean\n  autoExport?: boolean\n  isFallback?: boolean\n  isExperimentalCompile?: boolean\n  dynamicIds?: (string | number)[]\n  err?: Error & {\n    statusCode?: number\n    source?: typeof COMPILER_NAMES.server | typeof COMPILER_NAMES.edgeServer\n  }\n  gsp?: boolean\n  gssp?: boolean\n  customServer?: boolean\n  gip?: boolean\n  appGip?: boolean\n  locale?: string\n  locales?: string[]\n  defaultLocale?: string\n  domainLocales?: DomainLocale[]\n  scriptLoader?: any[]\n  isPreview?: boolean\n  notFoundSrcPage?: string\n}\n\n/**\n * `Next` context\n */\nexport interface NextPageContext {\n  /**\n   * Error object if encountered during rendering\n   */\n  err?: (Error & { statusCode?: number }) | null\n  /**\n   * `HTTP` request object.\n   */\n  req?: IncomingMessage\n  /**\n   * `HTTP` response object.\n   */\n  res?: ServerResponse\n  /**\n   * Path section of `URL`.\n   */\n  pathname: string\n  /**\n   * Query string section of `URL` parsed as an object.\n   */\n  query: ParsedUrlQuery\n  /**\n   * `String` of the actual path including query.\n   */\n  asPath?: string\n  /**\n   * The currently active locale\n   */\n  locale?: string\n  /**\n   * All configured locales\n   */\n  locales?: string[]\n  /**\n   * The configured default locale\n   */\n  defaultLocale?: string\n  /**\n   * `Component` the tree of the App to use if needing to render separately\n   */\n  AppTree: AppTreeType\n}\n\nexport type AppContextType<Router extends NextRouter = NextRouter> = {\n  Component: NextComponentType<NextPageContext>\n  AppTree: AppTreeType\n  ctx: NextPageContext\n  router: Router\n}\n\nexport type AppInitialProps<PageProps = any> = {\n  pageProps: PageProps\n}\n\nexport type AppPropsType<\n  Router extends NextRouter = NextRouter,\n  PageProps = {},\n> = AppInitialProps<PageProps> & {\n  Component: NextComponentType<NextPageContext, any, any>\n  router: Router\n  __N_SSG?: boolean\n  __N_SSP?: boolean\n}\n\nexport type DocumentContext = NextPageContext & {\n  renderPage: RenderPage\n  defaultGetInitialProps(\n    ctx: DocumentContext,\n    options?: { nonce?: string }\n  ): Promise<DocumentInitialProps>\n}\n\nexport type DocumentInitialProps = RenderPageResult & {\n  styles?: React.ReactElement[] | Iterable<React.ReactNode> | JSX.Element\n}\n\nexport type DocumentProps = DocumentInitialProps & HtmlProps\n\n/**\n * Next `API` route request\n */\nexport interface NextApiRequest extends IncomingMessage {\n  /**\n   * Object of `query` values from url\n   */\n  query: Partial<{\n    [key: string]: string | string[]\n  }>\n  /**\n   * Object of `cookies` from header\n   */\n  cookies: Partial<{\n    [key: string]: string\n  }>\n\n  body: any\n\n  env: Env\n\n  draftMode?: boolean\n\n  preview?: boolean\n  /**\n   * Preview data set on the request, if any\n   * */\n  previewData?: PreviewData\n}\n\n/**\n * Send body of response\n */\ntype Send<T> = (body: T) => void\n\n/**\n * Next `API` route response\n */\nexport type NextApiResponse<Data = any> = ServerResponse & {\n  /**\n   * Send data `any` data in response\n   */\n  send: Send<Data>\n  /**\n   * Send data `json` data in response\n   */\n  json: Send<Data>\n  status: (statusCode: number) => NextApiResponse<Data>\n  redirect(url: string): NextApiResponse<Data>\n  redirect(status: number, url: string): NextApiResponse<Data>\n\n  /**\n   * Set draft mode\n   */\n  setDraftMode: (options: { enable: boolean }) => NextApiResponse<Data>\n\n  /**\n   * Set preview data for Next.js' prerender mode\n   */\n  setPreviewData: (\n    data: object | string,\n    options?: {\n      /**\n       * Specifies the number (in seconds) for the preview session to last for.\n       * The given number will be converted to an integer by rounding down.\n       * By default, no maximum age is set and the preview session finishes\n       * when the client shuts down (browser is closed).\n       */\n      maxAge?: number\n      /**\n       * Specifies the path for the preview session to work under. By default,\n       * the path is considered the \"default path\", i.e., any pages under \"/\".\n       */\n      path?: string\n    }\n  ) => NextApiResponse<Data>\n\n  /**\n   * Clear preview data for Next.js' prerender mode\n   */\n  clearPreviewData: (options?: { path?: string }) => NextApiResponse<Data>\n\n  /**\n   * Revalidate a specific page and regenerate it using On-Demand Incremental\n   * Static Regeneration.\n   * The path should be an actual path, not a rewritten path. E.g. for\n   * \"/blog/[slug]\" this should be \"/blog/post-1\".\n   * @link https://nextjs.org/docs/app/building-your-application/data-fetching/incremental-static-regeneration#on-demand-revalidation-with-revalidatepath\n   */\n  revalidate: (\n    urlPath: string,\n    opts?: {\n      unstable_onlyGenerated?: boolean\n    }\n  ) => Promise<void>\n}\n\n/**\n * Next `API` route handler\n */\nexport type NextApiHandler<T = any> = (\n  req: NextApiRequest,\n  res: NextApiResponse<T>\n) => unknown | Promise<unknown>\n\n/**\n * Utils\n */\nexport function execOnce<T extends (...args: any[]) => ReturnType<T>>(\n  fn: T\n): T {\n  let used = false\n  let result: ReturnType<T>\n\n  return ((...args: any[]) => {\n    if (!used) {\n      used = true\n      result = fn(...args)\n    }\n    return result\n  }) as T\n}\n\n// Scheme: https://tools.ietf.org/html/rfc3986#section-3.1\n// Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\nconst ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/\nexport const isAbsoluteUrl = (url: string) => ABSOLUTE_URL_REGEX.test(url)\n\nexport function getLocationOrigin() {\n  const { protocol, hostname, port } = window.location\n  return `${protocol}//${hostname}${port ? ':' + port : ''}`\n}\n\nexport function getURL() {\n  const { href } = window.location\n  const origin = getLocationOrigin()\n  return href.substring(origin.length)\n}\n\nexport function getDisplayName<P>(Component: ComponentType<P>) {\n  return typeof Component === 'string'\n    ? Component\n    : Component.displayName || Component.name || 'Unknown'\n}\n\nexport function isResSent(res: ServerResponse) {\n  return res.finished || res.headersSent\n}\n\nexport function normalizeRepeatedSlashes(url: string) {\n  const urlParts = url.split('?')\n  const urlNoQuery = urlParts[0]\n\n  return (\n    urlNoQuery\n      // first we replace any non-encoded backslashes with forward\n      // then normalize repeated forward slashes\n      .replace(/\\\\/g, '/')\n      .replace(/\\/\\/+/g, '/') +\n    (urlParts[1] ? `?${urlParts.slice(1).join('?')}` : '')\n  )\n}\n\nexport async function loadGetInitialProps<\n  C extends BaseContext,\n  IP = {},\n  P = {},\n>(App: NextComponentType<C, IP, P>, ctx: C): Promise<IP> {\n  if (process.env.NODE_ENV !== 'production') {\n    if (App.prototype?.getInitialProps) {\n      const message = `\"${getDisplayName(\n        App\n      )}.getInitialProps()\" is defined as an instance method - visit https://nextjs.org/docs/messages/get-initial-props-as-an-instance-method for more information.`\n      throw new Error(message)\n    }\n  }\n  // when called from _app `ctx` is nested in `ctx`\n  const res = ctx.res || (ctx.ctx && ctx.ctx.res)\n\n  if (!App.getInitialProps) {\n    if (ctx.ctx && ctx.Component) {\n      // @ts-ignore pageProps default\n      return {\n        pageProps: await loadGetInitialProps(ctx.Component, ctx.ctx),\n      }\n    }\n    return {} as IP\n  }\n\n  const props = await App.getInitialProps(ctx)\n\n  if (res && isResSent(res)) {\n    return props\n  }\n\n  if (!props) {\n    const message = `\"${getDisplayName(\n      App\n    )}.getInitialProps()\" should resolve to an object. But found \"${props}\" instead.`\n    throw new Error(message)\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (Object.keys(props).length === 0 && !ctx.ctx) {\n      console.warn(\n        `${getDisplayName(\n          App\n        )} returned an empty object from \\`getInitialProps\\`. This de-optimizes and prevents automatic static optimization. https://nextjs.org/docs/messages/empty-object-getInitialProps`\n      )\n    }\n  }\n\n  return props\n}\n\nexport const SP = typeof performance !== 'undefined'\nexport const ST =\n  SP &&\n  (['mark', 'measure', 'getEntriesByName'] as const).every(\n    (method) => typeof performance[method] === 'function'\n  )\n\nexport class DecodeError extends Error {}\nexport class NormalizeError extends Error {}\nexport class PageNotFoundError extends Error {\n  code: string\n\n  constructor(page: string) {\n    super()\n    this.code = 'ENOENT'\n    this.name = 'PageNotFoundError'\n    this.message = `Cannot find module for page: ${page}`\n  }\n}\n\nexport class MissingStaticPage extends Error {\n  constructor(page: string, message: string) {\n    super()\n    this.message = `Failed to load static file for page: ${page} ${message}`\n  }\n}\n\nexport class MiddlewareNotFoundError extends Error {\n  code: string\n  constructor() {\n    super()\n    this.code = 'ENOENT'\n    this.message = `Cannot find the middleware module`\n  }\n}\n\nexport interface CacheFs {\n  existsSync: typeof fs.existsSync\n  readFile: typeof fs.promises.readFile\n  readFileSync: typeof fs.readFileSync\n  writeFile(f: string, d: any): Promise<void>\n  mkdir(dir: string): Promise<void | string>\n  stat(f: string): Promise<{ mtime: Date }>\n}\n\nexport function stringifyError(error: Error) {\n  return JSON.stringify({ message: error.message, stack: error.stack })\n}\n","const createStoreImpl = (createState) => {\n  let state;\n  const listeners = /* @__PURE__ */ new Set();\n  const setState = (partial, replace) => {\n    const nextState = typeof partial === \"function\" ? partial(state) : partial;\n    if (!Object.is(nextState, state)) {\n      const previousState = state;\n      state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n      listeners.forEach((listener) => listener(state, previousState));\n    }\n  };\n  const getState = () => state;\n  const getInitialState = () => initialState;\n  const subscribe = (listener) => {\n    listeners.add(listener);\n    return () => listeners.delete(listener);\n  };\n  const api = { setState, getState, getInitialState, subscribe };\n  const initialState = state = createState(setState, getState, api);\n  return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\n\nexport { createStore };\n","import React from 'react';\nimport { createStore } from 'zustand/vanilla';\n\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity) {\n  const slice = React.useSyncExternalStore(\n    api.subscribe,\n    () => selector(api.getState()),\n    () => selector(api.getInitialState())\n  );\n  React.useDebugValue(slice);\n  return slice;\n}\nconst createImpl = (createState) => {\n  const api = createStore(createState);\n  const useBoundStore = (selector) => useStore(api, selector);\n  Object.assign(useBoundStore, api);\n  return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\n\nexport { create, useStore };\n"],"names":["prefetch","router","href","options","window","doPrefetch","catch","formatStringOrUrl","urlObjOrString","formatUrl","React","forwardRef","LinkComponent","forwardedRef","children","child","hrefProp","as","asProp","childrenProp","prefetchProp","passHref","replace","shallow","scroll","onClick","onMouseEnter","onMouseEnterProp","onTouchStart","onTouchStartProp","legacyBehavior","restProps","props","a","useContext","AppRouterContext","prefetchEnabled","appPrefetchKind","PrefetchKind","AUTO","FULL","useMemo","resolvedHref","previousHref","useRef","previousAs","only","childRef","ref","setIntersectionRef","isVisible","resetVisible","useIntersection","rootMargin","setIntersectionWithResetRef","useCallback","current","el","setRef","useMergedRef","useEffect","childProps","e","defaultPrevented","nodeName","currentTarget","toUpperCase","isModifiedEvent","target","event","getAttribute","metaKey","ctrlKey","shiftKey","altKey","nativeEvent","which","preventDefault","startTransition","navigate","routerScroll","kind","process","env","NODE_ENV","undefined","isAbsoluteUrl","type","addBasePath","cloneElement","Image","configEnv","handleLoading","img","placeholder","onLoadRef","onLoadingCompleteRef","setBlurComplete","unoptimized","sizesInput","src","p","decode","Promise","resolve","then","parentElement","Event","Object","defineProperty","writable","value","prevented","stopped","isDefaultPrevented","isPropagationStopped","persist","stopPropagation","getDynamicProps","fetchPriority","use","Boolean","fetchpriority","globalThis","__NEXT_IMAGE_IMPORTED","ImageElement","srcSet","sizes","height","width","decoding","className","style","loading","fill","setShowAltText","onLoad","onError","rest","ownRef","complete","data-nimg","ImagePreload","isAppRouter","imgAttributes","opts","imageSrcSet","imageSizes","crossOrigin","referrerPolicy","ReactDOM","preload","Head","link","rel","pagesRouter","RouterContext","configContext","ImageConfigContext","config","c","imageConfigDefault","allSizes","deviceSizes","sort","b","onLoadingComplete","blurComplete","useState","showAltText","meta","imgMeta","getImgProps","defaultLoader","imgConf","priority","cancelIdleCallback","requestIdleCallback","self","bind","cb","start","Date","now","setTimeout","didTimeout","timeRemaining","Math","max","id","clearTimeout","hasIntersectionObserver","IntersectionObserver","observers","Map","idList","rootRef","disabled","isDisabled","visible","setVisible","elementRef","setElement","element","tagName","unobserve","observe","callback","observer","elements","createObserver","instance","root","margin","existing","find","obj","get","entries","forEach","entry","isIntersecting","intersectionRatio","push","set","delete","size","disconnect","index","findIndex","splice","idleCallback","refA","refB","cleanupA","cleanupB","applyRef","cleanup","AmpStateContext","createContext","isInAmpMode","ampFirst","hybrid","hasQuery","isStaticRequire","default","getInt","x","Number","isFinite","NaN","test","parseInt","_state","blurWidth","blurHeight","quality","overrideSrc","blurDataURL","layout","objectFit","objectPosition","lazyBoundary","lazyRoot","Error","loader","isDefaultLoader","customImageLoader","_","layoutStyle","intrinsic","maxWidth","responsive","layoutSizes","staticSrc","widthInt","heightInt","isStaticImageData","staticImageData","JSON","stringify","ratio","round","isLazy","startsWith","dangerouslyAllowSVG","split","endsWith","qualityInt","imgStyle","assign","position","left","top","right","bottom","color","backgroundImage","getImageBlurSvg","backgroundSize","backgroundPosition","backgroundRepeat","generateImgAttrs","widths","getWidths","viewportWidthRe","percentSizes","match","exec","length","smallestRatio","min","filter","s","Set","map","w","last","i","join","placeholderStyle","defaultHead","inAmpMode","head","charSet","name","content","onlyReactElement","list","Fragment","concat","Children","toArray","reduce","fragmentList","fragmentChild","METATYPES","reduceComponents","headChildrenElements","reverse","unique","keys","tags","metaTypes","metaCategories","isUnique","hasKey","h","key","indexOf","slice","has","add","len","metatype","hasOwnProperty","category","categories","__NEXT_OPTIMIZE_FONTS","some","url","newProps","ampState","headManager","HeadManagerContext","Effect","reduceComponentsToState","svgWidth","svgHeight","viewBox","std","preserveAspectRatio","VALID_LOADERS","path","loaderFile","domains","disableStaticImages","minimumCacheTTL","formats","contentSecurityPolicy","contentDispositionType","localPatterns","remotePatterns","getImageProps","imgProps","encodeURIComponent","__next_img_default","formatWithValidation","urlObjectKeys","slashedProtocols","urlObj","auth","hostname","protocol","pathname","hash","query","host","port","String","querystring","urlQueryToSearchParams","search","slashes","searchParamsToUrlQuery","searchParams","Array","isArray","stringifyUrlQueryParam","param","isNaN","urlQuery","result","URLSearchParams","append","item","searchParamsList","from","SideEffect","isServer","useClientOnlyLayoutEffect","useLayoutEffect","useClientOnlyEffect","emitChange","mountedInstances","headElements","updateHead","_pendingUpdate","DecodeError","MiddlewareNotFoundError","MissingStaticPage","NormalizeError","PageNotFoundError","SP","ST","WEB_VITALS","execOnce","getDisplayName","getLocationOrigin","getURL","isResSent","loadGetInitialProps","normalizeRepeatedSlashes","stringifyError","fn","used","args","ABSOLUTE_URL_REGEX","location","origin","substring","Component","displayName","res","finished","headersSent","urlParts","urlNoQuery","App","ctx","getInitialProps","performance","every","method","constructor","page","code","message","error","stack"],"sourceRoot":"","ignoreList":[0,1,21,22]}