{"version":3,"file":"static/chunks/1811-538ed87441fac88c.js","mappings":"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","sources":["webpack://_N_E/../common/hooks/useBodyScrollLock/useBodyScrollLock.ts","webpack://_N_E/../common/hooks/useClipboard.ts","webpack://_N_E/../common/hooks/useDebouncedValue.ts","webpack://_N_E/../common/hooks/useModalClosing.ts","webpack://_N_E/../common/hooks/useMountedEffect.ts","webpack://_N_E/../common/hooks/useSubscribedState.ts","webpack://_N_E/../common/hooks/useToast/icon/fail.svg","webpack://_N_E/../common/hooks/useToast/icon/info.svg","webpack://_N_E/../common/hooks/useToast/icon/success.svg","webpack://_N_E/../common/hooks/useToast/icon/warning.svg","webpack://_N_E/../common/hooks/useToast/useToast.tsx","webpack://_N_E/../common/hooks/index.ts","webpack://_N_E/../common/utils/cn.ts","webpack://_N_E/../common/utils/assert.ts","webpack://_N_E/../common/utils/cleanClassName.ts","webpack://_N_E/../common/utils/createFormSchema.ts","webpack://_N_E/../common/utils/createUuid.ts","webpack://_N_E/../common/utils/createYupSchemaResolver.ts","webpack://_N_E/../common/utils/format.ts","webpack://_N_E/../common/utils/getOsType.ts","webpack://_N_E/../common/utils/getSubDomain.ts","webpack://_N_E/../common/utils/isCurrentUrl.ts","webpack://_N_E/../common/utils/isDev.tsx","webpack://_N_E/../common/utils/isEnumValue.ts","webpack://_N_E/../common/utils/optimizeImageUrl.ts","webpack://_N_E/../common/utils/regex.ts","webpack://_N_E/../common/utils/socialOAuthUrl.ts","webpack://_N_E/../common/utils/sitemapHash.ts","webpack://_N_E/../common/utils/customEditor.ts","webpack://_N_E/../common/utils/createQueryKeys.ts","webpack://_N_E/../common/utils/index.ts","webpack://_N_E/../common/utils/hasKey.ts","webpack://_N_E/../common/utils/normalizeServerRequest.ts","webpack://_N_E/./src/constants/env.ts","webpack://_N_E/./src/constants/certification.ts","webpack://_N_E/./src/constants/cookies.ts","webpack://_N_E/./src/constants/point.ts","webpack://_N_E/./src/constants/search-params.ts","webpack://_N_E/./src/constants/selector.ts","webpack://_N_E/./src/constants/seo.ts","webpack://_N_E/./src/constants/tabs.ts","webpack://_N_E/./src/constants/index.ts","webpack://_N_E/./src/constants/routes.ts","webpack://_N_E/./src/constants/storage-key.ts","webpack://_N_E/./src/utils/createRoute.ts","webpack://_N_E/./src/utils/findRoute.ts","webpack://_N_E/./src/utils/getMetadata.ts","webpack://_N_E/./src/utils/index.ts","webpack://_N_E/../common/hooks/useBodyScrollLock/useBodyScrollLock.module.scss?c739"],"sourcesContent":["import { useLayoutEffect } from 'react';\n\nimport styles from './useBodyScrollLock.module.scss';\n\ninterface UseBodyScrollLockOptions {\n  selector?: string;\n}\n\nexport const useBodyScrollLock = (\n  enabled: boolean,\n  options?: UseBodyScrollLockOptions,\n) => {\n  const selector = options?.selector;\n  useLayoutEffect(() => {\n    if (typeof document === 'undefined' || !enabled) return;\n\n    let target = document.body;\n\n    if (selector) {\n      const optionTarget = document.getElementById(selector);\n\n      if (optionTarget) {\n        target = optionTarget;\n      }\n    }\n\n    const { classList } = target;\n\n    classList.add(styles['body-size'], styles['fixed-body']);\n\n    return () => {\n      classList.remove(styles['body-size'], styles['fixed-body']);\n    };\n  }, [enabled, selector]);\n};\n","'use client';\n\nimport { useCallback } from 'react';\n\nimport { useToast } from '@common/hooks';\n\ninterface CopyToClipboardParams {\n  value?: string;\n  message?: string;\n}\n\nexport const useClipboard = () => {\n  const { toast } = useToast();\n  /** 파라미터가 없으면 URL을 복사함 */\n  const copyToClipboard = useCallback(\n    (args?: CopyToClipboardParams) => {\n      const value = args?.value ?? window.location.href;\n      const message =\n        args?.message ?? `${args?.value ? '' : 'URL을 '}클립보드에 저장했어요`;\n\n      if (navigator.clipboard) {\n        navigator.clipboard\n          .writeText(value)\n          .then(() => toast({ message }))\n          .catch(() =>\n            toast({ message: '클립보드 복사를 실패했어요', type: 'fail' }),\n          );\n      } else {\n        try {\n          const textarea = document.createElement('textarea');\n          textarea.value = value;\n          document.body.appendChild(textarea);\n          textarea.select();\n          document.execCommand('copy');\n          document.body.removeChild(textarea);\n          toast({ message });\n        } catch (err) {\n          console.error(err);\n          toast({ message: '클립보드 복사를 실패했어요', type: 'fail' });\n        }\n      }\n    },\n    [toast],\n  );\n\n  return copyToClipboard;\n};\n","import { useEffect, useMemo, useState } from 'react';\n\nimport { debounce } from 'es-toolkit';\n\nexport const useDebouncedValue = <T>(value: T, delay = 500) => {\n  const [debouncedValue, setDebouncedValue] = useState(value);\n\n  const debounced = useMemo(\n    () =>\n      debounce((value: T) => {\n        setDebouncedValue(value);\n      }, delay),\n    [delay],\n  );\n\n  useEffect(() => {\n    debounced(value);\n\n    return debounced.cancel;\n  }, [value, debounced]);\n\n  return debouncedValue;\n};\n","import { useEffect, useState } from 'react';\n\ninterface UseModalClosingParams {\n  opened: boolean;\n  closingDuration?: number;\n}\n\nexport enum MODAL_CLOSING_STATE {\n  CLOSED = 0,\n  CLOSING = 1,\n  OPENED = 2,\n}\n\nexport const useModalClosing = ({\n  opened,\n  closingDuration,\n}: UseModalClosingParams) => {\n  const [state, setState] = useState(\n    opened ? MODAL_CLOSING_STATE.OPENED : MODAL_CLOSING_STATE.CLOSED,\n  );\n\n  useEffect(() => {\n    if (opened) setState(MODAL_CLOSING_STATE.OPENED);\n    else {\n      setState((prev) => {\n        if (prev === MODAL_CLOSING_STATE.OPENED)\n          return MODAL_CLOSING_STATE.CLOSING;\n\n        return prev;\n      });\n    }\n  }, [opened]);\n\n  useEffect(() => {\n    if (state === MODAL_CLOSING_STATE.CLOSING) {\n      const closeTimer = setTimeout(\n        () => setState(MODAL_CLOSING_STATE.CLOSED),\n        closingDuration,\n      );\n\n      return () => clearTimeout(closeTimer);\n    }\n  }, [state, closingDuration]);\n\n  return state;\n};\n","import { useEffect, useRef } from 'react';\n\n/**\n * @description 컴포넌트가 마운트된 이후에만 실행되는 useEffect입니다.\n */\nexport function useMountedEffect(\n  effect: () => void | (() => void),\n  deps?: React.DependencyList,\n) {\n  const isMounted = useRef(false);\n\n  useEffect(() => {\n    if (isMounted.current) {\n      return effect();\n    } else {\n      isMounted.current = true;\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, deps);\n}\n","import type { Dispatch, SetStateAction } from 'react';\nimport { useState } from 'react';\n\nimport { isEqual } from 'es-toolkit';\n\nimport { useMountedEffect } from './useMountedEffect';\n\nexport type DisableSetter = () => void;\n\n/**\n * @returns [value, setter, disableSetter]\n * @description 구독된 상태가 변경되면 업데이트 되는 상태값과 setter를 반환합니다.\n */\nexport function useSubscribedState<T>(\n  subscribedState: T | (() => T),\n  dependencyList?: React.DependencyList | false,\n): [T, Dispatch<SetStateAction<T>>] {\n  const valueState = useState(subscribedState);\n\n  const [value, setValue] = valueState;\n\n  const subscribedValue =\n    subscribedState instanceof Function ? subscribedState() : subscribedState;\n\n  useMountedEffect(\n    () => {\n      if (dependencyList) return;\n\n      const subscribedValueType = typeof subscribedValue;\n\n      switch (subscribedValueType) {\n        case 'object':\n        case 'function':\n          if (!isEqual(value, subscribedValue)) setValue(subscribedValue);\n          break;\n        default:\n          setValue(subscribedValue);\n      }\n    },\n    dependencyList || [subscribedValue],\n  );\n\n  return dependencyList === false\n    ? [\n        subscribedValue,\n        () => {\n          console.info('disabled setter');\n        },\n      ]\n    : valueState;\n}\n\nexport type SubscribedState<T> = ReturnType<typeof useSubscribedState<T>>;\n","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgFail = function SvgFail(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: \"1em\",\n    height: \"1em\",\n    fill: \"none\",\n    viewBox: \"0 0 20 21\"\n  }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    fill: \"#FC3933\",\n    stroke: \"#FC3933\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\",\n    strokeWidth: 1.667,\n    d: \"M11.166 2.708a1.31 1.31 0 0 0-2.331 0L1.632 17.113a1.31 1.31 0 0 0 1.166 1.899h14.404a1.31 1.31 0 0 0 1.166-1.899z\"\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    stroke: \"#fff\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\",\n    strokeWidth: 1.667,\n    d: \"M10 7.881v4.256M10 15.738a.327.327 0 1 1 0-.655M10 15.738a.327.327 0 1 0 0-.655\"\n  })));\n};\nexport default SvgFail;","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgInfo = function SvgInfo(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: \"1em\",\n    height: \"1em\",\n    fill: \"none\",\n    viewBox: \"0 0 20 21\"\n  }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    fill: \"#36F\",\n    stroke: \"#36F\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\",\n    strokeWidth: 1.667,\n    d: \"M10 19.012a8.512 8.512 0 1 0 0-17.024 8.512 8.512 0 0 0 0 17.024\"\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    stroke: \"#fff\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\",\n    strokeWidth: 1.667,\n    d: \"M8.036 14.429h3.928M10 14.429V9.845H8.69M10 6.899a.327.327 0 1 1 0-.655M10 6.899a.327.327 0 1 0 0-.655\"\n  })));\n};\nexport default SvgInfo;","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgSuccess = function SvgSuccess(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: \"1em\",\n    height: \"1em\",\n    fill: \"none\",\n    viewBox: \"0 0 20 21\"\n  }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    fill: \"#34B78F\",\n    stroke: \"#34B78F\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\",\n    strokeWidth: 1.667,\n    d: \"M14.583 1.988H5.417a3.93 3.93 0 0 0-3.929 3.929v9.166a3.93 3.93 0 0 0 3.929 3.929h9.166a3.93 3.93 0 0 0 3.929-3.929V5.917a3.93 3.93 0 0 0-3.929-3.929\"\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    stroke: \"#fff\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\",\n    strokeWidth: 1.667,\n    d: \"M13.82 7.554 8.582 14.1l-2.62-1.964\"\n  })));\n};\nexport default SvgSuccess;","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgWarning = function SvgWarning(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: \"1em\",\n    height: \"1em\",\n    fill: \"none\",\n    viewBox: \"0 0 20 21\"\n  }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    fill: \"#FCC319\",\n    stroke: \"#FCC319\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\",\n    strokeWidth: 1.667,\n    d: \"M11.166 2.708a1.31 1.31 0 0 0-2.331 0L1.632 17.113a1.31 1.31 0 0 0 1.166 1.899h14.404a1.31 1.31 0 0 0 1.166-1.899z\"\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    stroke: \"#000\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\",\n    strokeWidth: 1.667,\n    d: \"M10 7.881v4.256M10 15.738a.327.327 0 1 1 0-.655M10 15.738a.327.327 0 1 0 0-.655\"\n  })));\n};\nexport default SvgWarning;","import { useRef } from 'react';\nimport { toast as toastifyToast } from 'react-toastify';\n\nimport { isDev, type ServerResponse } from '@common/utils';\n\nimport FailIcon from './icon/fail.svg';\nimport InfoIcon from './icon/info.svg';\nimport SuccessIcon from './icon/success.svg';\nimport WarningIcon from './icon/warning.svg';\n\nexport interface ToastOptions {\n  type?: 'fail' | 'success' | 'warning' | 'info';\n  message: string;\n  holdTime?: number;\n}\n\ninterface ToastErrorOptions extends Omit<ToastOptions, 'message'> {\n  error: unknown;\n  exceptionOptions?: { [code: number]: string };\n}\n\nconst toastQueue = new Map<string, ToastOptions>();\n\nexport const useToast = () => {\n  const toast = ({\n    message,\n    holdTime = 3_000,\n    type = 'success',\n  }: Omit<ToastOptions, 'toastKey' | 'createdAt'>) => {\n    const Icon = {\n      success: SuccessIcon,\n      fail: FailIcon,\n      warning: WarningIcon,\n      info: InfoIcon,\n    }[type];\n\n    const toastKey = `${message}-${type}`;\n\n    if (toastQueue.has(toastKey)) {\n      return;\n    }\n\n    toastQueue.set(toastKey, { message, holdTime, type });\n\n    toastifyToast(message, {\n      autoClose: holdTime,\n      icon: <Icon className=\"w-20 h-20\" />,\n      onClose: () => {\n        toastQueue.delete(toastKey);\n      },\n    });\n  };\n\n  const { current } = useRef({\n    toast,\n    toastError: ({\n      error,\n      type = 'fail',\n      exceptionOptions,\n      ...restOptions\n    }: ToastErrorOptions) => {\n      const { return_code: errorCode, return_message: errorMessage } =\n        error as ServerResponse;\n\n      console.error(error);\n\n      const toastErrorMessage = (message: string) =>\n        toast({ ...restOptions, type, message });\n\n      if (!errorCode || !errorMessage) {\n        return toastErrorMessage(\n          '서버로 부터 정상적인 응답을 받지 못했습니다.',\n        );\n      }\n\n      const exceptedErrorMessage = exceptionOptions?.[errorCode];\n\n      if (exceptedErrorMessage) {\n        return toastErrorMessage(exceptedErrorMessage);\n      }\n\n      //TODO: 30000 이상 에러 메시지 백엔드와 논의 재필요\n      if (30000 <= errorCode) {\n        return toastErrorMessage(errorMessage);\n      }\n\n      return toastErrorMessage(\n        `일시적인 오류가 발생했습니다. 잠시 후 다시 시도해주세요. (${errorCode})`,\n      );\n    },\n    devToast: (message: string) => {\n      if (isDev) {\n        toast({ message, type: 'warning' });\n      }\n    },\n  });\n\n  return current;\n};\n","export * from './useBodyScrollLock/useBodyScrollLock';\nexport * from './useClipboard';\nexport * from './useDebouncedValue';\nexport * from './useModalClosing';\nexport * from './useMountedEffect';\nexport * from './useSubscribedState';\nexport * from './useToast/useToast';\n","import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs));\n}\n","import { CustomError } from '.';\n\nexport function assert(\n  condition: unknown,\n  error: Error | string = new Error(),\n): asserts condition {\n  if (!condition) {\n    if (typeof error === 'string') {\n      throw new CustomError({ return_message: error });\n    } else {\n      throw new CustomError();\n    }\n  }\n}\n","export const cleanClassName = (\n  className: string | undefined | null | false,\n) => {\n  if (className) {\n    return className\n      .replace(/(undefined)|(false)|\\n/g, '')\n      .replace(/ +(?= )/g, '')\n      .replace(/^ */g, '')\n      .replace(/ *$/g, '');\n  }\n};\n","import * as yup from 'yup';\n\ntype Yup = typeof yup;\n\n/** @deprecated createYupSchemaResolver를 사용해주세요. */\nexport const createFormSchema = <TBaseInterface extends object>(\n  factory: (yup: Yup) => {\n    [K in keyof TBaseInterface]: any;\n  },\n) => yup.object().shape(factory(yup));\n","import { v4, v3 } from 'uuid';\n\nexport const createUuid = (seed?: string) =>\n  seed ? v3(seed, '6ba70a63-4f32-3af3-a8ad-12095131c69c') : v4();\n","import { yupResolver } from '@hookform/resolvers/yup';\nimport type { Resolver } from 'react-hook-form';\nimport * as yup from 'yup';\n\ntype Yup = typeof yup;\n\nexport type FormSchemaGuide<T extends object> = Partial<{\n  [K in keyof T]: yup.AnySchema;\n}>;\n\nexport const createYupSchemaResolver = <T extends object>(\n  factory: (yup: Yup) => { [K in keyof T]: yup.AnySchema },\n) => {\n  const customYup = {\n    ...yup,\n    number: () =>\n      yup\n        .number()\n        .transform((value, originalValue) =>\n          originalValue === '' ? undefined : value,\n        ),\n  };\n\n  const schema = yup.object().shape(factory(customYup));\n\n  return yupResolver(schema as any) as unknown as Resolver<T>;\n};\n\nexport { yup };\n\nexport const customYup = {\n  stringDate: (options?: { onlyPast?: boolean; message?: string }) => {\n    const message = options?.message ?? '정상적인 날짜 형식이 아닙니다.';\n\n    let checkDate = yup\n      .string()\n      .required(message)\n      .min(8, message)\n      .max(10, message)\n      .test('is-date', message, (value) => {\n        let dateValue = value;\n\n        const regex = /^\\d{4}-\\d{2}-\\d{2}$/;\n        if (!dateValue.match(regex)) {\n          dateValue = `${value.substring(0, 4)}-${value.substring(4, 6)}-${value.substring(6, 8)}`;\n          if (!dateValue.match(regex)) {\n            return false;\n          }\n        }\n\n        const date = new Date(dateValue);\n        const year = date.getFullYear();\n        const month = date.getMonth() + 1;\n        const day = date.getDate();\n\n        const parts = dateValue.split('-');\n        const yearFromStr = parseInt(parts[0], 10);\n        const monthFromStr = parseInt(parts[1], 10);\n        const dayFromStr = parseInt(parts[2], 10);\n\n        if (\n          year !== yearFromStr ||\n          month !== monthFromStr ||\n          day !== dayFromStr\n        ) {\n          return false;\n        }\n\n        if (yearFromStr < 1900) {\n          return false;\n        }\n\n        if (month === 2) {\n          //! 윤년 확인\n          if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {\n            return day <= 29;\n          } else {\n            return day <= 28;\n          }\n        } else if ([4, 6, 9, 11].includes(month)) {\n          return day <= 30;\n        } else {\n          return day <= 31;\n        }\n      });\n\n    if (options?.onlyPast) {\n      checkDate = checkDate.test(\n        'is-past-or-present',\n        '과거의 날짜만 입력할 수 있습니다.',\n        (value) => {\n          if (!value) return false;\n          const inputDate = new Date(\n            value.replace(/(\\d{4})(\\d{2})(\\d{2})/, '$1-$2-$3'),\n          );\n          const today = new Date();\n          today.setHours(0, 0, 0, 0);\n\n          return inputDate <= today;\n        },\n      );\n    }\n\n    return checkDate;\n  },\n  stringPhone: (message = '올바른 전화번호를 입력해주세요.') =>\n    yup\n      .string()\n      .min(10, message)\n      .max(11, message)\n      .test('is-010-prefix', message, (value) => {\n        return /^010/.test(value ?? '');\n      })\n      .test('is-valid-fourth-digit', message, (value) => {\n        if (value === undefined) return;\n        const fourthDigit = value.charAt(3);\n\n        return !['0', '1'].includes(fourthDigit);\n      }),\n};\n","interface StorageOptions {\n  unit?: 'bytes' | 'KB' | 'MB' | 'GB';\n  precision?: number;\n}\n\nexport const format = {\n  phone: (phone?: string) => {\n    if (phone?.length !== 11) return phone;\n\n    return `${phone.slice(0, 3)}-${phone.slice(3, 7)}-${phone.slice(7)}`;\n  },\n  storage: (\n    bytes = 0,\n    options: StorageOptions = { unit: 'MB', precision: 2 },\n  ) => {\n    const kiloBytes = bytes / 1024;\n    const megaBytes = bytes / 1048576; // 1024 * 1024\n    const gigaBytes = bytes / 1073741824; // 1024 * 1024 * 1024\n\n    const { unit = 'MB', precision = 2 } = options;\n\n    switch (unit) {\n      case 'bytes':\n        return `${bytes} bytes`;\n      case 'KB':\n        return `${kiloBytes.toFixed(precision)}KB`;\n      case 'MB':\n        return `${megaBytes.toFixed(precision)}MB`;\n      case 'GB':\n        return `${gigaBytes.toFixed(precision)}GB`;\n      default:\n        throw new Error('정의하지 않은 단위 유형이에요.');\n    }\n  },\n  number: (num: number) => {\n    const units = ['경', '조', '억', '만', ''];\n    let remainder = num;\n    let result = '';\n\n    for (let i = 0; i < units.length; i++) {\n      const unitValue = Math.pow(10000, units.length - 1 - i);\n      const currentUnit = Math.floor(remainder / unitValue);\n      remainder %= unitValue;\n\n      if (currentUnit > 0) {\n        result += currentUnit.toLocaleString() + units[i] + ' ';\n      }\n    }\n\n    return result.trim() || '0';\n  },\n};\n","export const getOsType = () => {\n  const { userAgent } = navigator;\n\n  return /windows/i.test(userAgent)\n    ? 'windows'\n    : /android/i.test(userAgent)\n      ? 'android'\n      : /iPad|iPhone|iPod|ios/.test(userAgent)\n        ? 'ios'\n        : /Mac/.test(userAgent)\n          ? 'mac'\n          : null;\n};\n","export const getSubDomain = (value?: string) => {\n  const hostname = value ?? location.hostname;\n\n  const mainDomain = hostname.split('.').slice(-2).join('.');\n  const subDomain = hostname\n    .replace(`.${mainDomain}`, '')\n    .replace(/^(http:\\/\\/|https:\\/\\/)/, '');\n\n  return subDomain || null;\n};\n","interface CheckOptions {\n  skipPathname?: boolean;\n  skipSearch?: boolean;\n}\n\nexport const isCurrentUrl = (href: string, options?: CheckOptions) => {\n  if (typeof window === 'undefined') return false;\n\n  const targetUrl = new URL(href, location.origin);\n\n  return (\n    (options?.skipPathname || targetUrl.pathname === location.pathname) &&\n    (options?.skipSearch || targetUrl.search === location.search)\n  );\n};\n","export const isDev = process.env.NODE_ENV === 'development';\n","export const isEnumValue = <TEnum extends Record<string, string>>(\n  enumType: TEnum,\n  value?: string | null,\n): value is TEnum[keyof TEnum] =>\n  value ? Object.values(enumType).includes(value) : false;\n\nexport const isEnumKey = <TEnum extends Record<string, string>>(\n  enumType: TEnum,\n  key: string | number | symbol,\n): key is keyof TEnum => Object.keys(enumType).includes(String(key));\n\nexport const isArrayItem = <T>(array: readonly T[], value: any): value is T =>\n  array.includes(value);\n\nexport const hasObjectKey = <TValue, TKey extends string>(\n  obj: Record<any, TValue> | object | unknown,\n  key: TKey,\n): obj is Record<TKey, TValue> => {\n  return typeof obj === 'object' && obj !== null && key in obj;\n};\n","interface ImageOptimizationOptions {\n  format?: 'webp' | 'avif' | 'original';\n  width?: number;\n  height?: number;\n  quality?: number;\n}\n\nexport const optimizeImageUrl = (\n  originalUrl?: string,\n  options: ImageOptimizationOptions = {},\n) => {\n  if (!originalUrl) return '';\n\n  try {\n    const url = new URL(originalUrl);\n\n    if (!url.origin.startsWith('https://cdn.welfarehello')) return originalUrl;\n\n    const params = new URLSearchParams(url.search);\n\n    const { format = 'webp', width, height, quality = 80 } = options;\n\n    if (format !== 'original') params.set('f', format);\n\n    if (height) params.set('h', height.toString());\n    if (quality) params.set('q', quality.toString());\n\n    //* 너비 조절 시 화질 저하\n    if (width) params.set('w', width.toString());\n\n    url.search = params.toString();\n\n    return url.toString();\n  } catch (e) {\n    console.error(e);\n\n    return originalUrl;\n  }\n};\n","export const REGEX = {\n  EMAIL: /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,6}$/,\n  PHONE: /^01(?:0|1|[6-9])[.-]?(\\\\d{3}|\\\\d{4})[.-]?(\\\\d{4})$/,\n  DATE: /^(19[0-9][0-9]|20\\d{2})-(0[0-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/,\n  'YYYY-MM': /^(19[0-9][0-9]|20\\d{2})-(0[0-9]|1[0-2])$/,\n  PASSWORD: /^(?=.*[A-Za-z])(?=.*\\d)(?=.*[!@#$%^_])[A-Za-z\\d!@#$%^_]{8,}$/,\n};\n","export type SocialType = 'kakao' | 'naver' | 'google' | 'apple';\n\nconst SOCIAL_OAUTH_URL = {\n  kakao: 'https://kauth.kakao.com/oauth/authorize',\n  naver: 'https://nid.naver.com/oauth2.0/authorize',\n  google: 'https://accounts.google.com/o/oauth2/auth/oauthchooseaccount',\n  apple: 'https://appleid.apple.com/auth/authorize',\n} as const;\n\nconst encodeOAuthState = (type: SocialType, redirectPath: string) => {\n  const obj = { type, redirectPath };\n  const json = JSON.stringify(obj);\n  const base64Encoded = btoa(unescape(encodeURIComponent(json)));\n\n  return base64Encoded;\n};\n\ninterface CreateOAuthUrlParams {\n  /** NEXT_PUBLIC_DOMAIN */\n  domain: string | undefined;\n  type: SocialType;\n  /** NEXT_PUBLIC_{TYPE}_ID */\n  clientId: string | undefined;\n  scope?: string;\n  /** Apple은 응답을 POST로 보내서 API Route에서 받아야 함 */\n  appleApiRoutePath?: string;\n  /** OAuth 응답을 핸들링할 페이지 */\n  redirectPath?: string;\n}\n\n/** 인증 받기위해 들렀다 오는 소셜 로그인 URL 만들어주는 함수 */\nexport const createOAuthUrl = ({\n  domain,\n  type,\n  clientId,\n  scope,\n  appleApiRoutePath = '/api/auth/apple',\n  redirectPath = '/auth',\n}: CreateOAuthUrlParams) => {\n  if (!domain || !clientId) throw new Error('domain, clientId 는 필수입니다.');\n\n  const url = SOCIAL_OAUTH_URL[type];\n\n  const searchParams = new URLSearchParams({\n    response_type: 'code',\n    client_id: clientId,\n    state: encodeOAuthState(type, redirectPath),\n  });\n\n  if (scope) searchParams.append('scope', scope);\n\n  switch (type) {\n    case 'apple': {\n      searchParams.append(\n        'redirect_uri',\n        `${domain.replace('https://', 'https://www.')}${appleApiRoutePath}`,\n      );\n      searchParams.append('response_mode', 'form_post');\n      break;\n    }\n\n    default: {\n      searchParams.append('redirect_uri', `${domain}${redirectPath}`);\n      break;\n    }\n  }\n\n  return `${url}?${searchParams.toString()}`;\n};\n","import { createUuid } from './createUuid';\n\nconst monthText = '2024-03';\nconst hash = createUuid(monthText);\n\nexport const sitemapHash = {\n  monthText,\n  hash,\n};\n","import type { Transaction } from '@tiptap/pm/state';\nimport type { Editor } from '@tiptap/react';\n\nexport const customEditor = {\n  getImageUrls: (doc: Transaction['doc'] | Editor['$doc']) => {\n    const imageList: string[] = [];\n    doc.content.forEach((content) => {\n      if (content.type.name === 'image') {\n        imageList.push(content.attrs.src);\n      }\n    });\n\n    return imageList;\n  },\n};\n","export const createQueryKeys = <TName extends string, TKeys extends string[]>(\n  name: TName,\n  keys: [...TKeys],\n) => {\n  const result = {} as Record<TKeys[number], `${TName}.${TKeys[number]}`>;\n\n  keys.forEach((key) => {\n    result[key] = `${name}.${key}`;\n  });\n\n  return result;\n};\n","export * from './cn';\nexport * from './assert';\nexport * from './cleanClassName';\nexport * from './createFormSchema';\nexport * from './createUuid';\nexport * from './createYupSchemaResolver';\nexport * from './format';\nexport * from './getOsType';\nexport * from './getSubDomain';\nexport * from './hasKey';\nexport * from './isCurrentUrl';\nexport * from './isDev';\nexport * from './isEnumValue';\nexport * from './normalizeServerRequest';\nexport * from './optimizeImageUrl';\nexport * from './regex';\nexport * from './socialOAuthUrl';\nexport * from './timeAgo';\nexport * from './sitemapHash';\nexport * from './customNextUrl';\nexport * from './customEditor';\nexport * from './createQueryKeys';\nexport * from './customQueryOption';\n","export const hasKey = (obj: unknown, key: string): boolean => {\n  return typeof obj === 'object' && obj !== null && key in obj;\n};\n","import type { CustomRequest } from '../api';\nimport { hasKey } from './hasKey';\n\nexport interface ServerResponse<T = unknown> {\n  result_code?: number;\n  return_code?: number;\n  return_message?: string;\n  request?: CustomRequest;\n  context?: T;\n}\n\nexport enum ERROR_CODE {\n  HIDDEN = 20019,\n  UNKNOWN_BY_CLIENT = 40000,\n  UNKNOWN_REQUEST = 40500,\n  NO_REQUEST_FUNCTION = 40400,\n  NO_ENV = 40401,\n  UNKNOWN_UNAUTHORIZED = 40403,\n  UNAUTHORIZED_BY_CLIENT = 40404,\n}\n\nexport const isNormalizedResponse = (res: any): res is ServerResponse =>\n  hasKey(res, 'result_code') &&\n  hasKey(res, 'return_code') &&\n  hasKey(res, 'return_message');\n\nexport class CustomError extends Error {\n  status: number;\n  return_code: number;\n  return_message: string;\n  constructor(params?: ServerResponse) {\n    super(\n      params?.return_message ??\n        '일시적인 오류가 발생했습니다. 잠시 후 다시 시도해주세요.',\n    );\n    this.return_message = params?.return_message ?? '';\n    this.status = params?.result_code ?? 500;\n    this.return_code = params?.return_code ?? ERROR_CODE.UNKNOWN_BY_CLIENT;\n    this.name = params?.result_code === 200 ? 'Server Error' : 'Client Error';\n\n    if (params?.request) {\n      this.name = 'Request Error';\n      this.cause = JSON.stringify(params.request);\n    }\n  }\n}\n\nlet errorNum = 0;\n\n//* 서버 요청에 대한 응답을 항상 통일된 형태로 받기 위한 함수\nexport const normalizeServerRequest = <\n  TParams extends any[],\n  TResponse extends ServerResponse,\n>(\n  requestFn: (...args: TParams) => Promise<TResponse>,\n) => {\n  if (!requestFn) {\n    errorNum += 1;\n    throw new CustomError({\n      return_message: `변환된 요청함수가 없습니다. (${errorNum})`,\n      result_code: 400,\n      return_code: ERROR_CODE.NO_REQUEST_FUNCTION,\n    });\n  }\n\n  return async (...args: TParams) => {\n    try {\n      const res: TResponse = await requestFn(...args);\n\n      const { return_code } = res;\n\n      //* result_code가 0인 경우에만 정상적인 응답\n      if (return_code === 0) return res;\n\n      if (return_code) throw new CustomError(res);\n\n      throw new CustomError({\n        ...res,\n        return_message: '잘못된 형식의 응답을 받았습니다.',\n      });\n    } catch (error) {\n      if (error instanceof CustomError) throw error;\n\n      if (error instanceof Error) {\n        const errorObject: ServerResponse = {\n          return_message: error.message,\n          result_code: 500,\n          return_code: ERROR_CODE.UNKNOWN_REQUEST,\n        };\n\n        if ('request' in error) {\n          errorObject.request = error.request as CustomRequest;\n        }\n\n        throw new CustomError(errorObject);\n      }\n\n      throw new CustomError({\n        return_code: ERROR_CODE.UNKNOWN_REQUEST,\n      });\n    }\n  };\n};\n\nexport const checkServerResponse = async (res: Response) => {\n  if (!res.headers.get('content-type')?.includes('application/json')) return;\n\n  const clonedRes = res.clone();\n\n  const getRequest = async () => ({\n    body: clonedRes.body,\n    headers: clonedRes.headers,\n    endpoint: clonedRes.url,\n  });\n\n  try {\n    const data = await clonedRes.json();\n\n    if (typeof data !== 'object' || !isNormalizedResponse(data)) {\n      throw new CustomError({\n        request: await getRequest(),\n        return_message: '잘못된 형식의 응답을 받았습니다.',\n        result_code: 500,\n        return_code: ERROR_CODE.UNKNOWN_REQUEST,\n      });\n    }\n\n    if (data.return_code === 0) return;\n\n    throw new CustomError(data);\n  } catch (e) {\n    if (e instanceof CustomError) throw e;\n\n    if (e instanceof Error) {\n      throw new CustomError({\n        request: await getRequest(),\n        return_message: e.message,\n        result_code: 500,\n        return_code: ERROR_CODE.UNKNOWN_REQUEST,\n      });\n    }\n\n    throw new CustomError({\n      request: await getRequest(),\n      return_code: ERROR_CODE.UNKNOWN_REQUEST,\n    });\n  }\n};\n","//TODO: 추후 환경변수는 모두 해당 파일에서 관리\n\nexport const PRODUCT_DOMAIN = 'https://welfarehello.com';\n\nconst ENV = {\n  NODE_ENV: process.env.NODE_ENV,\n  NEXT_PUBLIC_DOMAIN: process.env.NEXT_PUBLIC_DOMAIN as string,\n  NEXT_PUBLIC_API_DOMAIN: process.env.NEXT_PUBLIC_API_DOMAIN as string,\n  NEXT_PUBLIC_GOOGLE_CLIENT_ID: process.env\n    .NEXT_PUBLIC_GOOGLE_CLIENT_ID as string,\n  NEXT_PUBLIC_KAKAO_CLIENT_ID: process.env\n    .NEXT_PUBLIC_KAKAO_CLIENT_ID as string,\n  NEXT_PUBLIC_NAVER_CLIENT_ID: process.env\n    .NEXT_PUBLIC_NAVER_CLIENT_ID as string,\n  NEXT_PUBLIC_APPLE_CLIENT_ID: process.env\n    .NEXT_PUBLIC_APPLE_CLIENT_ID as string,\n  NEXT_PUBLIC_JEJU_API_DOMAIN: process.env\n    .NEXT_PUBLIC_JEJU_API_DOMAIN as string,\n  NEXT_PUBLIC_JEJU_YOUTHDREAM_API_KEY: process.env\n    .NEXT_PUBLIC_JEJU_YOUTHDREAM_API_KEY as string,\n  NEXT_PUBLIC_DPG_API_DOMAIN: process.env.NEXT_PUBLIC_DPG_API_DOMAIN as string,\n  NEXT_PUBLIC_NAVER_CLOUD_CLIENT_ID: process.env\n    .NEXT_PUBLIC_NAVER_CLOUD_CLIENT_ID as string,\n  NEXT_PUBLIC_MOBILE_OK_URL: process.env.NEXT_PUBLIC_MOBILE_OK_URL as string,\n  NEXT_PUBLIC_EZ_IOK_URL: process.env.NEXT_PUBLIC_EZ_IOK_URL as string,\n};\n\nfor (const key in ENV) {\n  if (!ENV[key as keyof typeof ENV]) {\n    throw new Error(`환경변수 ${key}이 없습니다.`);\n  }\n}\n\nconst IS_PRODUCT = ENV.NEXT_PUBLIC_DOMAIN === PRODUCT_DOMAIN;\nconst IS_DEV = ENV.NODE_ENV === 'development';\n\nlet BASE_URL = ENV.NEXT_PUBLIC_DOMAIN;\n\nif (!IS_DEV) {\n  BASE_URL = BASE_URL.replace('https://', 'https://www.');\n}\n\nexport { BASE_URL,ENV, IS_DEV, IS_PRODUCT };\n","export const CERTIFICATION_LIST = [\n  { id: 'toss', name: '토스', icon: '/assets/pngs/ok/toss.png' },\n  {\n    id: 'kakaobank',\n    name: '카카오뱅크',\n    icon: '/assets/pngs/ok/kakaobank.png',\n  },\n  {\n    id: 'banksalad',\n    name: '뱅크샐러드',\n    icon: '/assets/pngs/ok/banksalad.png',\n  },\n  {\n    id: 'signgate',\n    name: '삼성패스',\n    icon: '/assets/pngs/ok/signgate.png',\n  },\n  { id: 'dreamsign', name: '드림인증', icon: '/assets/pngs/ok/dreamsign.png' },\n  { id: 'kbstar', name: '국민인증서', icon: '/assets/pngs/ok/kbstar.png' },\n  { id: 'shinhan', name: '신한인증서', icon: '/assets/pngs/ok/shinhan.png' },\n  { id: 'kebhana', name: '하나인증서', icon: '/assets/pngs/ok/kebhana.png' },\n  {\n    id: 'mobile-ok',\n    name: '휴대폰 본인인증',\n    icon: '/assets/pngs/ok/mobile-ok.png',\n  },\n] as const;\n","export enum COOKIES_KEYS {\n  ACCESS_TOKEN = 'accessToken',\n  REFRESH_TOKEN = 'refreshToken',\n\n  ORIGIN_HOST = 'hostOrigin',\n  LOGIN_PARAMS = 'loginParams',\n\n  LOGOUT_OPTIONS = 'logoutOptions',\n}\n\nexport const COOKIE_OPTIONS = {\n  domain:\n    process.env.NODE_ENV === 'development'\n      ? 'localhost'\n      : `.${(process.env.NEXT_PUBLIC_DOMAIN ?? '').replace('https://', '')}`,\n  path: '/',\n  secure: true,\n};\n","export const POINT = {\n  MIN_EXCHANGE: 500,\n  EXCHANGE_UNIT: 100,\n  DAY_MAX_EXCHANGE: 50_000,\n};\n","import type { UNAUTH_API } from '@/api';\n\nexport enum SEARCH_PARAMS {\n  ORIGINAL_PATH = 'original-path',\n  POST_REDIRECT = 'post-redirect',\n  APP_LOGIN_TYPE = 'app-login',\n  ACCESS_TOKEN = 'accessToken',\n  REFRESH_TOKEN = 'refreshToken',\n  /**\n   * @description redirect pathname\n   */\n  REDIRECT = 'redirect',\n  /**\n   * @description redirect searchParams\n   */\n  REDIRECT_SEARCH_PARAMS = 'redirectSearchParams',\n  VERIFICATION = 'verification',\n  ENTER_TYPE = 'enter-type',\n  SHARE_BY = 'share-by',\n  MEMBER_CODE = 'memberCode',\n  POLICY_FILTER = 'policyFilter',\n\n  //! 응급생활 관련 파라미터\n  SYMPTOM_CODE = 'symptomCode',\n  EMERGENCY_ROOM_TIME = 'emergencyRoomTime',\n  IS_REAL_DISTANCE = 'isRealDistance',\n  RADIUS = 'radius',\n  EMERGENCY_ROOM_PARAMS = 'emergencyRoomParams',\n  SELECTED_REGION = 'selectedRegion',\n  PARENT_COMMENT_ID = 'parentCommentId',\n  SORT_TYPE = 'sortType',\n  HOME_BOTTOM_DRAWER = 'home-bottom-drawer',\n}\n\nexport namespace SEARCH_PARAMS_TYPE {\n  export interface EMERGENCY_ROOM_PARAMS\n    extends Omit<\n      Parameters<typeof UNAUTH_API.getEmergencyRoomList>[number],\n      'page' | 'size'\n    > {\n    isRealDistance?: boolean;\n  }\n\n  export interface SELECTED_REGION {\n    mainRegionCode?: string;\n    subRegionCode?: string;\n  }\n}\n","export enum SELECTOR {\n  MAIN_WRAPPER = 'main-wrapper',\n  MAIN = 'main',\n  PAGE_NAV_WRAPPER = 'page-nav-wrapper',\n  VOUCHER_MAP_NAVIGATION = 'voucher-map-navigation',\n  VOUCHER_CONTENTS_CONTAINER = 'voucher-contents-container',\n  COMMENT_LIST_TOP = 'comment-list-top',\n  COMMENT_PREFIX = 'comment-id-',\n  GLOBAL_NAVIGATION = 'global-navigation',\n}\n","import type { Metadata, Viewport } from 'next';\n\nimport { BASE_URL } from './env';\n\nexport const DEFAULT_META = {\n  generator: 'Next.js',\n  applicationName: '웰로',\n  metadataBase: new URL(BASE_URL),\n  appLinks: {\n    android: {\n      package: 'com.wello.welfarehello',\n      app_name: '웰로 - 맞춤정책 추천·신청 서비스',\n      url: 'https://play.google.com/store/apps/details?id=com.wello.welfarehello',\n    },\n    ios: {\n      app_store_id: 6444814937,\n      url: 'https://apps.apple.com/kr/app/%EC%9B%B0%EB%A1%9C-wello-%EB%A7%9E%EC%B6%A4-%EC%A0%95%EC%B1%85-%EC%B6%94%EC%B2%9C-%EC%8B%A0%EC%B2%AD-%EC%84%9C%EB%B9%84%EC%8A%A4/id6444814937',\n      app_name: '웰로 Wello - 맞춤 정착 추천 신청 서비스',\n    },\n  },\n  manifest: '/manifest.json',\n  keywords: ['웰로', '정책', '취업', '육아', '정부', '보조금', '혜택'],\n  title: '웰로 - 5,200만 국민을 위한 개인 맞춤형 정책 추천 서비스',\n  authors: [\n    {\n      name: '주식회사 웰로',\n      url: 'https://www.wello.info',\n    },\n  ],\n  publisher: '주식회사 웰로',\n  description:\n    '내게 딱 맞는 정책을 매일 추천해드려요. ㅡ 청년부터 노년까지, 취업&창업·육아·대출 등 다양한 분야의 보조금·지원금 혜택을 찾아보세요!',\n  openGraph: {\n    images: 'https://cdn.welfarehello.com/common/ogimg.png',\n    title: '웰로 - 5,200만 국민을 위한 개인 맞춤형 정책 추천 서비스',\n    siteName: '웰로',\n    type: 'website',\n  },\n} satisfies Metadata;\n\nexport const DEFAULT_VIEWPORT = {\n  width: 'device-width',\n  initialScale: 1,\n  maximumScale: 1,\n  minimumScale: 1,\n  userScalable: false,\n  themeColor: '#ffffff',\n} satisfies Viewport;\n","export enum MENU_TITLE {\n  TARGET = 'TARGET',\n  SUPPORT = 'SUPPORT',\n  INFO = 'INFO',\n  APPLY = 'APPLY',\n}\n\nexport const COMMUNITY_HEADER_ITEMS = {\n  welloNews: {\n    key: 'welloNews',\n    title: '웰로소식',\n    pathname: 'welloNews',\n  },\n  policyInfo: {\n    key: 'policyInfo',\n    title: '정책소식',\n    pathname: 'policyInfo',\n  },\n  hometownNews: {\n    key: 'hometownNews',\n    title: '동네소식',\n    pathname: 'hometownNews',\n  },\n  policyTalk: {\n    key: 'policyTalk',\n    title: '정책수다',\n    pathname: 'policyTalk',\n  },\n  freeTalk: {\n    key: 'freeTalk',\n    title: '자유수다',\n    pathname: 'freeTalk',\n  },\n} as const;\n\nexport type CommunityKeys = keyof typeof COMMUNITY_HEADER_ITEMS;\n","import { IS_PRODUCT } from './env';\n\nexport * from './certification';\nexport * from './cookies';\nexport * from './env';\nexport * from './point';\nexport * from './routes';\nexport * from './search-params';\nexport * from './selector';\nexport * from './seo';\nexport * from './storage-key';\nexport * from './tabs';\n\nexport const [GTM_ID, GA_ID] = IS_PRODUCT\n  ? ['GTM-WF9XK27', 'G-WKDK663EEQ']\n  : ['GTM-NJCCF8P', 'G-7FCSFN8PD7'];\n","import type { ERROR_CODE } from '@common/utils';\n\nimport type {\n  COMMENT_SORT_TYPE,\n  COMMENT_TYPE,\n  DETAIL_POLICY_APPLICATION_TYPE,\n  EASY_LOGIN_USAGE_CODE,\n  LOGIN_TYPE,\n  POLICY_CASE_BABY_CHILD_COUNT,\n  POLICY_CASE_TYPE,\n  TERM_CATEGORY,\n  VERIFICATION_SERVICE_TYPE,\n} from '@/api';\nimport type { DLP_SEOUL_AUTH_STEP } from '@/app/(private)/dlp/seoul/auth/constants';\nimport type { PROXY_TARGET } from '@/pages/api/proxy/[...all]';\nimport type { OsType } from '@/stores/DeviceStore';\nimport type {\n  EasyCertificationParams,\n  FAMILY_PROFILE_UPDATE_PAGE_TYPE,\n} from '@/types';\nimport { createRoute } from '@/utils';\n\nexport const ROUTES = {\n  TEST: createRoute('/test'),\n\n  HOME: createRoute('/', {\n    hasBottomNav: true,\n  }),\n\n  LOGIN: createRoute<{\n    searchParams: {\n      logout?: boolean;\n      redirect?: string;\n      disableOutlink?: boolean;\n      memberCode?: string;\n    };\n  }>('/login'),\n\n  LOGIN_POINT: createRoute('/login/point'),\n\n  PEEC_EVENT: createRoute('/event/peec'),\n\n  PEEC_APPLY: createRoute('/event/peec/apply'),\n\n  AUTH: createRoute<{\n    searchParams: {\n      'login-type'?: LOGIN_TYPE;\n      'social-login-token'?: string;\n      code?: string;\n      state?: string;\n    };\n  }>('/login/auth'),\n\n  COMMUNITY: createRoute('/community', {\n    hasBottomNav: true,\n  }),\n  COMMUNITY_CATEGORY: createRoute<{\n    dynamicPath: { category: string; idIdx?: string };\n  }>(\n    ({ category, idIdx }) =>\n      `/community/${category}${idIdx ? `/${idIdx}` : ''}`,\n    {\n      hasBottomNav: true,\n    },\n  ),\n  WELLO_NEWS_DETAIL: createRoute<{\n    dynamicPath: { idIdx: string };\n  }>(({ idIdx }) => `/community/welloNews/${idIdx}`),\n  POLICY_TALK_DETAIL: createRoute<{\n    dynamicPath: { idIdx: string };\n  }>(({ idIdx }) => `/community/policyTalk/${idIdx}`),\n  FREE_TALK_DETAIL: createRoute<{\n    dynamicPath: { idIdx: string };\n  }>(({ idIdx }) => `/community/freeTalk/${idIdx}`),\n  HOMETOWN_NEWS_DETAIL: createRoute<{\n    dynamicPath: { idIdx: string };\n  }>(({ idIdx }) => `/community/hometownNews/${idIdx}`),\n  POLICY_INFO_DETAIL: createRoute<{\n    dynamicPath: { idIdx: string };\n  }>(({ idIdx }) => `/community/policyInfo/${idIdx}`),\n\n  POLICY_TALK_POST_EDIT: createRoute<{\n    dynamicPath: {\n      idx: string;\n    };\n  }>(({ idx }) => `/community/policyTalk/posting/${idx}`),\n  POLICY_TALK_POST_NEW: createRoute<{\n    searchParams: {\n      code?: string;\n      idx?: string;\n      detailApplyType?: DETAIL_POLICY_APPLICATION_TYPE;\n    };\n  }>('/community/policyTalk/posting/new'),\n  FREE_TALK_POST_EDIT: createRoute<{\n    dynamicPath: {\n      idx: string;\n    };\n  }>(({ idx }) => `/community/freeTalk/posting/${idx}`),\n  FREE_TALK_POST_NEW: createRoute('/community/freeTalk/posting/new'),\n\n  PROFILE: createRoute('/my-info', {\n    hasBottomNav: true,\n  }),\n\n  PROFILE_SCRAP: createRoute('/my-info/my-scrap', {\n    hasBottomNav: true,\n  }),\n\n  PROFILE_COMMUNITY_POSTED: createRoute('/my-info/my-community/posted', {\n    hasBottomNav: true,\n  }),\n  PROFILE_COMMUNITY_COMMENTED: createRoute('/my-info/my-community/commented', {\n    hasBottomNav: true,\n  }),\n\n  PROFILE_APPLY: createRoute('/my-info/my-apply', {\n    hasBottomNav: true,\n  }),\n\n  PROFILE_APPLY_RECOMMEND_INQUIRY: createRoute(\n    '/my-info/my-apply/recommend-inquiry',\n  ),\n\n  RANDOM_TICKET: createRoute('/my-info/random-ticket', {\n    hasBottomNav: false,\n  }),\n\n  RECOMMEND_POLICY_SITUATION_MAIN: createRoute<{\n    dynamicPath: { caseType: POLICY_CASE_TYPE | 'ALL' };\n  }>(({ caseType }) => `/recommend-policy/situation/main/${caseType}`),\n\n  RECOMMEND_POLICY_SITUATION_BABY_FORM: createRoute(\n    '/recommend-policy/situation/baby',\n  ),\n\n  RECOMMEND_POLICY_SITUATION_BABY_REPORT: createRoute<{\n    dynamicPath: {\n      subRegionCode: string;\n      childCount: POLICY_CASE_BABY_CHILD_COUNT;\n    };\n  }>(\n    ({ subRegionCode, childCount }) =>\n      `/recommend-policy/situation/baby/report/${subRegionCode}/${childCount}`,\n  ),\n\n  RECOMMEND_POLICY_SITUATION_EMERGENCY_FORM: createRoute(\n    '/recommend-policy/situation/emergency',\n  ),\n  RECOMMEND_POLICY_SITUATION_EMERGENCY_HOSPITAL_LIST: createRoute(\n    '/recommend-policy/situation/emergency/list',\n  ),\n  RECOMMEND_POLICY_SITUATION_EMERGENCY_MAP: createRoute(\n    '/recommend-policy/situation/emergency/map',\n  ),\n  RECOMMEND_POLICY_SITUATION_EMERGENCY_DETAIL: createRoute<{\n    dynamicPath: { id: number };\n    searchParams: {\n      symptomCode?: string;\n      isEmergency?: boolean;\n    };\n  }>(({ id }) => `/recommend-policy/situation/emergency/${id}`),\n  MEDICAL_POLICY_LIST: createRoute('/recommend-policy/medical'),\n\n  PUSH: createRoute('/push'),\n\n  PROFILE_EDIT: createRoute<{\n    searchParams: {\n      redirect?: string;\n    };\n  }>('/my-info/edit'),\n\n  FAMILY_PROFILE: createRoute('/my-info/settings/family'),\n\n  FAMILY_PROFILE_UPDATE: createRoute<{\n    dynamicPath: {\n      updateType: FAMILY_PROFILE_UPDATE_PAGE_TYPE;\n    };\n    searchParams: {\n      familyId?: number;\n    };\n  }>(({ updateType }) => `/my-info/settings/family/${updateType}`),\n\n  FAMILY_FILTER_UPDATE: createRoute<{\n    dynamicPath: {\n      updateType: FAMILY_PROFILE_UPDATE_PAGE_TYPE;\n    };\n    searchParams: {\n      familyId?: number;\n    };\n  }>(({ updateType }) => `/my-info/settings/family/${updateType}/filter`),\n\n  SEARCH: createRoute<{\n    searchParams: {\n      /** @description 검색어 */\n      q: string;\n    };\n  }>('/search'),\n\n  RECOMMEND_POLICY_LIST: createRoute<{\n    searchParams: { familyId?: number };\n  }>('/recommend-policy', {\n    hasBottomNav: true,\n  }),\n\n  POLICY_DETAIL: createRoute<{\n    dynamicPath: { idIdx: string };\n  }>(({ idIdx }) => `/policy/${idIdx}`),\n\n  COMMENT_LIST: createRoute<{\n    dynamicPath: {\n      commentType: COMMENT_TYPE;\n      contentId: number;\n      commentId: number;\n    };\n    searchParams: {\n      sortType?: COMMENT_SORT_TYPE;\n      parentCommentId?: number;\n      policyTalkContentIdx?: string;\n    };\n  }>(\n    ({ commentType, contentId, commentId }) =>\n      `/comment/${commentType}/${contentId}/${commentId}`,\n  ),\n  COMMENT_EDIT: createRoute<{\n    dynamicPath: { commentId: number };\n  }>(({ commentId }) => `/comment/edit/${commentId}`),\n\n  POLICY_TALK_COMMENT_NEW: createRoute<{\n    dynamicPath: { contentIdx: string };\n  }>(\n    ({ contentIdx }) =>\n      `/community/policyTalk/posting/${contentIdx}/comment/new`,\n  ),\n  POLICY_TALK_COMMENT_EDIT: createRoute<{\n    dynamicPath: { contentIdx: string; commentId: number };\n  }>(\n    ({ contentIdx, commentId }) =>\n      `/community/policyTalk/posting/${contentIdx}/comment/${commentId}`,\n  ),\n\n  HOMETOWN_NEWS_SEARCH: createRoute('/community/hometownNews/search'),\n\n  /**@name 설정 */\n  SETTINGS: createRoute('/my-info/settings'),\n\n  /**@name 알림설정 */\n  NOTIFICATION_SETTINGS: createRoute('/my-info/settings/notifications'),\n\n  /**@name 계정연동 */\n  ACCOUNT_LINKING: createRoute('/my-info/settings/account-linking'),\n\n  /**@name 공지사항*/\n  NOTICE: createRoute('/my-info/settings/notice'),\n\n  /**@name 공지사항_상세 */\n  NOTICE_DETAIL: createRoute<{\n    dynamicPath: { id: number };\n  }>(({ id }) => `/my-info/settings/notice/${id}`),\n\n  /**@name 자주_묻는_질문 */\n  FAQ: createRoute('/my-info/settings/faq'),\n\n  /**@name 고객_문의 */\n  INQUIRY_LIST: createRoute('/my-info/settings/inquiry'),\n\n  /**@name 문의_하기 */\n  INQUIRY_EDIT: createRoute<{\n    searchParams: {\n      category?: string;\n    };\n  }>('/my-info/settings/inquiry/register'),\n\n  /**@name 문의_상세 */\n  INQUIRY_DETAIL: createRoute<{\n    dynamicPath: { id: number };\n  }>(({ id }) => `/my-info/settings/inquiry/${id}`),\n\n  /**@name 회원탈퇴 */\n  RESIGN_MEMBER: createRoute('/my-info/settings/resign-member'),\n\n  PICK_POLICY_LIST: createRoute<{ dynamicPath: { id: number } }>(\n    ({ id }) => `/pick/${id}`,\n  ),\n\n  /** @name 맞춤_정책_필터_수정 */\n  MY_POLICY_FILTER: createRoute('/my-info/edit/filter'),\n\n  /**@name 장학재단 관련 */\n  POLICY_KOSAF_APPLY: createRoute('/policy/apply/1'),\n  POLICY_REPORT: createRoute('/policy/report'),\n\n  POLICY_REPORT_DETAIL: createRoute<{\n    searchParams: {\n      /** @description 장학재단 신고 내역 상세 */\n      report: string;\n      reportYear: string;\n      reportDate: string;\n    };\n  }>('/policy/report/detail'),\n\n  /**@name 제주도 관련 */\n  JEJU_APPLY: createRoute('/jeju/apply'),\n  JEJU_REPORT: createRoute('/jeju/report'),\n  JEJU_REPORT_DETAIL: createRoute<{\n    dynamicPath: { id: number };\n  }>(({ id }) => `/jeju/report/${id}`),\n\n  POLICY_CONSENT: createRoute('/policy/consent'),\n  POLICY_NOTICE: createRoute('/policy/notice'),\n  POLICY_NOTICE_DETAIL: createRoute<{\n    dynamicPath: { year: number };\n  }>(({ year }) => `/policy/notice/${year}`),\n\n  CROSS_DOMAIN_AUTH: createRoute<{\n    searchParams: {\n      accessToken: string;\n      refreshToken: string;\n    };\n  }>('/login/auth/cross-domain'),\n\n  CROSS_DOMAIN_CALLBACK: createRoute<{\n    searchParams: {\n      accessToken: string;\n      refreshToken: string;\n      redirect?: string;\n      redirectSearchParams?: string;\n    };\n  }>('/login/auth/cross-domain/callback'),\n\n  JOIN_COMMON: createRoute<{\n    searchParams: {\n      step?: number;\n    };\n  }>('/join/common'),\n\n  JOIN_COMPLETE: createRoute('/join/complete'),\n\n  JOIN_USER_INFO: createRoute<{\n    searchParams: {\n      verificationId?: number;\n    };\n  }>('/join/user-info'),\n\n  POLICY_FILTER: createRoute<{\n    dynamicPath: { situation: string };\n  }>(({ situation }) => `/filter/policy/${situation}`),\n\n  INTEREST_POLICY_FILTER: createRoute<{\n    dynamicPath: { situation: string };\n  }>(({ situation }) => `/filter/policy/interest/${situation}`),\n\n  KB_PAY_FILTER: createRoute('/filter/kb-pay'),\n\n  TERMS: createRoute<{\n    dynamicPath: { terms: TERM_CATEGORY };\n  }>(({ terms }) => `/terms/${terms}`),\n\n  TERMS_PRIVATE: createRoute<{\n    dynamicPath: { terms: TERM_CATEGORY };\n  }>(({ terms }) => `/my-info/settings/terms/${terms}`),\n\n  EASY_CERTIFICATION: createRoute<{\n    searchParams: EasyCertificationParams;\n  }>('/easy-certification'),\n  EASY_CERTIFICATION_CALLBACK: createRoute<{\n    searchParams: EasyCertificationParams & {\n      encryptMOKKeyToken?: string;\n      serviceType?: string;\n      txId?: string;\n      usageCode?: EASY_LOGIN_USAGE_CODE;\n    };\n  }>('/easy-certification/callback'),\n\n  ERROR: createRoute<{\n    dynamicPath: { code: ERROR_CODE };\n  }>(({ code }) => `/error/${code}`),\n\n  NICE_CERTIFICATION: createRoute('/easy-certification/nice'),\n  NICE_RESULT: createRoute<{\n    dynamicPath: {\n      result: 'pending' | 'success' | 'fail';\n    };\n  }>(({ result }) => `/easy-certification/nice/${result}`),\n  /** default request categoryId: 0 */\n  VOUCHER_CATEGORY: createRoute<{\n    dynamicPath: {\n      categoryId: number;\n    };\n  }>(({ categoryId }) => `/voucher/${categoryId}`, {\n    hasBottomNav: true,\n  }),\n  VOUCHER_MAIN: createRoute(`/voucher/main`, {\n    hasBottomNav: true,\n  }),\n  VOUCHER_MAIN_NOTICE: createRoute(`/voucher/main/notice`),\n  VOUCHER_PRODUCT_INTRODUCE: createRoute<{\n    dynamicPath: {\n      categoryId: number;\n    };\n  }>(({ categoryId }) => `/voucher/introduce/${categoryId}`),\n  VOUCHER_DETAIL: createRoute<{\n    dynamicPath: {\n      voucherId: string;\n    };\n  }>(({ voucherId }) => `/voucher/detail/${voucherId}`),\n  VOUCHER_INVITE: createRoute('/voucher/invite'),\n  VOUCHER_MY_WAITING: createRoute('/voucher/my-waiting'),\n  VOUCHER_QNA: createRoute<{\n    dynamicPath: {\n      categoryId: number;\n    };\n    searchParams?: {\n      subcategory?: number;\n    };\n  }>(({ categoryId }) => `/voucher/qna/${categoryId}`),\n  VOUCHER_QNA_DETAIL: createRoute<{\n    dynamicPath: {\n      categoryId: number;\n      idx: string;\n    };\n  }>(({ categoryId, idx }) => `/voucher/qna/${categoryId}/${idx}`),\n  VOUCHER_QNA_POSTING: createRoute<{\n    dynamicPath: {\n      categoryId: number;\n      idx: string;\n    };\n    searchParams?: {\n      subcategory?: number;\n    };\n  }>(({ categoryId, idx }) => `/voucher/qna/${categoryId}/${idx}/posting`),\n  /** default request categoryId: 0 */\n  VOUCHER_DESCRIPTION_SERVICE_CATEGORY: createRoute<{\n    dynamicPath: {\n      categoryId: number;\n    };\n  }>(({ categoryId }) => `/voucher/description/service/${categoryId}`),\n  VOUCHER_DESCRIPTION_CARD: createRoute('/voucher/description/card'),\n  VOUCHER_LIST: createRoute<{\n    dynamicPath: { category: number };\n  }>(({ category }) => `/voucher/list/${category}`),\n  VOUCHER_MAP: createRoute<{\n    searchParams: { category: number };\n  }>('/voucher/map', {\n    toastDirection: 'top',\n  }),\n  /** default request categoryId: 0 */\n  VOUCHER_ONLINE_CATEGORY: createRoute<{\n    dynamicPath: { category: number };\n  }>(({ category }) => `/voucher/online/${category}`),\n  CHILD_CARE_SERVICE_VOUCHER: createRoute('/voucher/child-care-service'),\n  NATIONAL_HAPPINESS_CARD_VOUCHER_ONLINE: createRoute(\n    '/voucher/national-happiness-card/online',\n  ),\n  NATIONAL_HAPPINESS_CARD_VOUCHER_OFFLINE: createRoute(\n    '/voucher/national-happiness-card/offline',\n  ),\n  CONTENT_COMPLIANCE_INFORMATION: createRoute(\n    '/content-compliance-information',\n  ),\n  WELLPER_INTRODUCTION: createRoute('/wellper/introduction'),\n  WELLPER_APPLY: createRoute('/wellper/apply'),\n  WELLPER_VERIFY_PHONE: createRoute('/wellper/verify-phone'),\n  WELLPER_DOCUMENTS_UPLOAD: createRoute('/wellper/documents-upload'),\n  WELLPER_DOCUMENTS_UPLOAD_INPUT: createRoute(\n    '/wellper/documents-upload-input',\n  ),\n  WELLPER_APPLICATION_COMPLETED: createRoute('/wellper/application-completed'),\n  POINTS: createRoute('/points'),\n  POINTS_OVERVIEW: createRoute('/points/overview'),\n  POINTS_FORM: createRoute('/points/form'),\n  POINTS_WITHDRAWAL_SUCCESS: createRoute('/points/withdrawal-success'),\n  /** 친구 초대 */\n  POINTS_INVITE: createRoute('/points/invite'),\n  /** 매일 출석 체크 */\n  ATTENDANCE_DAILY_CHECK: createRoute('/attendance/daily-check'),\n\n  CARD: createRoute('/card'),\n  REWARD: createRoute('/card/reward'),\n  CARD_BENEFIT: createRoute('/card/benefit'),\n  CARD_INVITE: createRoute('/card/invite'),\n  CARD_UPLOAD: createRoute<{\n    searchParams: { cardName: string; memberCardId: number };\n  }>('/card/upload'),\n\n  K_PASS_APPLY: createRoute('/card/k-pass/apply'),\n  HAPPINESS_CARD_APPLY: createRoute('/card/happiness/apply'),\n  CEO_CARD_APPLY: createRoute('/card/ceo/apply'),\n\n  K_PASS_BENEFIT: createRoute('/card/k-pass/benefit'),\n  HAPPINESS_CARD_BENEFIT: createRoute('/card/happiness/benefit'),\n\n  BENEFIT_NOTIFICATION: createRoute<{\n    searchParams: {\n      retry?: 'true';\n    };\n  }>('/benefit-notification'),\n  BENEFIT_NOTIFICATION_AGREEMENT: createRoute(\n    '/benefit-notification/agreement',\n  ),\n  BENEFIT_NOTIFICATION_CALLBACK: createRoute<{\n    searchParams: {\n      svcSeq: string;\n      grpSeq: string;\n      fixesGuidanceRequstSeq: string;\n    };\n  }>('/benefit-notification/callback'),\n\n  /** DLP 서울 */\n  DLP_SEOUL_AUTH: createRoute<{\n    searchParams: {\n      redirect?: string;\n    };\n  }>('/dlp/seoul/auth'),\n  DLP_SEOUL_AUTH_TERMS_PRIVACY: createRoute('/dlp/seoul/auth/terms-privacy'),\n  DLP_SEOUL_AUTH_CHECK_VERIFICATION: createRoute(\n    '/dlp/seoul/auth/check-verification',\n  ),\n  DLP_SEOUL_AUTH_CHANGE_PASSWORD_NOTICE: createRoute(\n    '/dlp/seoul/auth/change-password-notice',\n  ),\n  DLP_SEOUL_AUTH_CHECK_MY_VERIFICATION_INFO: createRoute<{\n    searchParams: {\n      redirectAnotherStep?: DLP_SEOUL_AUTH_STEP;\n    };\n  }>('/dlp/seoul/auth/check-my-verification-info'),\n  DLP_SEOUL_AUTH_SELECT_MOBILE_AGENCY: createRoute<{\n    searchParams: {\n      redirectAnotherStep?: DLP_SEOUL_AUTH_STEP;\n    };\n  }>('/dlp/seoul/auth/select-mobile-agency'),\n  DLP_SEOUL_AUTH_CHECK_SEOUL_MEMBER: createRoute(\n    '/dlp/seoul/auth/check-seoul-member',\n  ),\n  DLP_SEOUL_AUTH_NEED_VERIFICATION: createRoute(\n    '/dlp/seoul/auth/need-verification',\n  ),\n  DLP_SEOUL_AUTH_NEED_SIGNUP_NOTICE: createRoute(\n    '/dlp/seoul/auth/need-signup-notice',\n  ),\n  DLP_SEOUL_AUTH_TERMS_AGREEMENT: createRoute(\n    '/dlp/seoul/auth/terms-agreement',\n  ),\n  DLP_SEOUL_AUTH_SIGNUP_FORM: createRoute('/dlp/seoul/auth/signup-form'),\n  DLP_SEOUL_AUTH_ALREADY_SIGNUP_NOTICE: createRoute(\n    '/dlp/seoul/auth/already-signup-notice',\n  ),\n  DLP_SEOUL_AUTH_AUTO_LOGIN_ACTIVE: createRoute(\n    '/dlp/seoul/auth/auto-login-active',\n  ),\n  DLP_SEOUL_AUTH_CHANGE_PASSWORD_INPUT_AUTH_NUMBER: createRoute(\n    '/dlp/seoul/auth/change-password-input-auth-number',\n  ),\n  DLP_SEOUL_AUTH_CHANGE_PASSWORD_FORM: createRoute(\n    '/dlp/seoul/auth/change-password-form',\n  ),\n  DLP_SEOUL_AUTH_COMPLETE: createRoute('/dlp/seoul/auth/complete'),\n  DLP_SEOUL_APPLY_CLTR_PASS_TERMS: createRoute(\n    '/dlp/seoul/apply/cltr-pass/terms',\n  ),\n  DLP_SEOUL_APPLY_CLTR_PASS_FORM: createRoute(\n    '/dlp/seoul/apply/cltr-pass/form',\n  ),\n  DLP_SEOUL_APPLY_LOAN_CRDT_RCVR_TERMS: createRoute(\n    '/dlp/seoul/apply/loan-crdt-rcvr/terms',\n  ),\n  DLP_SEOUL_APPLY_LOAN_CRDT_RCVR_FORM: createRoute(\n    '/dlp/seoul/apply/loan-crdt-rcvr/form',\n  ),\n  DLP_SEOUL_APPLY_ISLT_YOUTH_SPRT_TERMS: createRoute(\n    '/dlp/seoul/apply/islt-youth-sprt/terms',\n  ),\n  DLP_SEOUL_APPLY_ISLT_YOUTH_SPRT_FORM: createRoute(\n    '/dlp/seoul/apply/islt-youth-sprt/form',\n  ),\n  DLP_SEOUL_APPLY_COMPLETE: createRoute('/dlp/seoul/apply/complete'),\n  DLP_SEOUL_REPORT: createRoute<{\n    searchParams: {\n      detailType: DETAIL_POLICY_APPLICATION_TYPE;\n    };\n  }>('/dlp/seoul/report'),\n  DLP_REVIEW: createRoute<{\n    searchParams: {\n      detailApplyType: DETAIL_POLICY_APPLICATION_TYPE;\n    };\n  }>('/dlp/review'),\n\n  INSPECTION: createRoute<{\n    searchParams: {\n      redirect?: string;\n    };\n  }>('/inspection'),\n} as const;\n\nexport const API_ROUTES = {\n  NAVER_AUTH: createRoute('/api/auth/naver'),\n  GOOGLE_AUTH: createRoute('/api/auth/google'),\n  APPLE_AUTH: createRoute('/api/auth/apple'),\n  APPLE_TOKEN: createRoute('/api/auth/apple/token'),\n  REDIRECT: createRoute('/api/redirect'),\n  MOBILE_OK_REQUEST: createRoute<{\n    searchParams: EasyCertificationParams & {\n      usageCode: EASY_LOGIN_USAGE_CODE;\n    };\n  }>('/api/mobile-ok'),\n  MOBILE_OK_CALLBACK: createRoute<{\n    searchParams: EasyCertificationParams & {\n      usageCode: EASY_LOGIN_USAGE_CODE;\n      txId: string;\n      serviceType: VERIFICATION_SERVICE_TYPE;\n    };\n  }>('/api/mobile-ok/callback'),\n  IOK_REQUEST: createRoute<{\n    searchParams: EasyCertificationParams & {\n      usageCode: EASY_LOGIN_USAGE_CODE;\n      authProviderCode: string;\n    };\n  }>('/api/iok'),\n  IOK_CALLBACK: createRoute<{\n    searchParams: EasyCertificationParams & {\n      usageCode: EASY_LOGIN_USAGE_CODE;\n      txId: string;\n      serviceType: VERIFICATION_SERVICE_TYPE;\n    };\n  }>('/api/iok/callback'),\n  JEJU_APP_API: createRoute('/api/jeju-app'),\n  DOWNLOAD_APP: createRoute('/api/download-app'),\n  PROXY: createRoute<{\n    dynamicPath: { endpoint: keyof typeof PROXY_TARGET };\n  }>(({ endpoint }) => `/api/proxy/${endpoint}`),\n\n  BENEFIT_NOTIFICATION: createRoute<{\n    dynamicPath: { dynamicPath: string };\n    searchParams?: {\n      svcSeq?: string;\n      grpSeq?: string;\n      fixesGuidanceRequstSeq?: string;\n      osType?: OsType;\n      accessToken: string | null;\n      refreshToken: string | null;\n      isWelloApp?: boolean;\n    };\n  }>(({ dynamicPath }) => `/api/benefit-notification/${dynamicPath}`),\n} as const;\n\nexport const MODULE_ROUTES = {\n  KB_HOME: createRoute('/kb-home', {\n    hasBottomNav: true,\n  }),\n};\n","export enum STORAGE_KEY {\n  SEARCH_HISTORY = 'searchHistory',\n  EASY_CERTIFICATION = 'easyCertification',\n  KOSAF_PROCESS = 'kosafProcess',\n  JEJU_YOUTHDREAM = 'jejuYouthdream',\n  NICE_FORM_VALUES = 'niceFormValues',\n  LOGOUT_TOAST = 'logoutToast',\n  POLICY_FILTER_LANDING = 'policyFilterLanding',\n  POLICY_FILTER_LANDING_FROM = 'policyFilterFrom',\n  POLICY_FILTER = 'policyFilter',\n  HOMETOWN_NEWS_DETAIL_BOTTOM_DRAWER_PATH = 'hometownNewsDetailBottomDrawerPath',\n  IS_NOT_SEE_AGAIN_VOUCHER_RECOMMEND = 'isNotSeeAgainVoucherRecommend',\n  VOUCHER_MAIN_SCROLL = 'voucherMainScroll',\n  VOUCHER_DETAIL_SCROLL = 'voucherDetailScroll',\n  MY_INFO_PROFILE_SCRAP_ACTIVE_TAB = 'myInfoProfileScrapActiveTab',\n  /** 회원 가입시 어떤 사용자가 추천했는지를 구분할 수 있는 코드 */\n  MEMBER_CODE = 'memberCode',\n  /** 웰퍼 신청 프로세스 중에 임시로 저장해 놓는 정책 분야 태그들 */\n  WELLPER_APPLY_POLICY_TEMP_VALUES = 'wellperApplyPolicyTempValues',\n  //* DLP 서울특별시\n  DLP_SEOUL_AUTH_POLICY_ID_IDX = 'dlpSeoulAuthPolicyIdIdx',\n  DLP_SEOUL_AUTH_DETAIL_APPLY_TYPE = 'dlpSeoulAuthDetailApplyType',\n  DLP_SEOUL_AUTH_STEP = 'dlpSeoulAuthStep',\n  DLP_SEOUL_AUTH_VERIFICATION_INFO = 'dlpSeoulAuthVerificationInfo',\n  DLP_SEOUL_AUTH_SESSION_ID = 'dlpSeoulAuthSessionId',\n  DLP_SEOUL_AUTH_USER_ID = 'dlpSeoulAuthUserId',\n  DLP_SEOUL_AUTH_USER_ID_MASKING = 'dlpSeoulAuthUserIdMasking',\n  DLP_SEOUL_AUTH_REDIRECT = 'dlpSeoulAuthRedirect',\n  DLP_SEOUL_LOGIN_SESSION_ID = 'dlpSeoulLoginSessionId',\n  DLP_SEOUL_ISLT_YOUTH_SPRT_FORM = 'dlpSeoulIsltYouthSprtForm',\n\n  /** history 관련 정보 */\n  HISTORY = 'history',\n  HISTORY_EXPIRE = 'historyExpire',\n  HISTORY_INDEX = 'historyIndex',\n  REPLACE_MARK = 'replaceMark',\n}\n\nexport namespace STORAGE_TYPE {\n  export type HISTORY = [number, string][];\n}\n","interface RouteOptions {\n  hasBottomNav?: boolean;\n  toastDirection?: 'top' | 'bottom';\n}\n\ntype DynamicParams = Record<string, string | number | null | boolean>;\n\nlet routeId = 0;\n\nexport const createRoute = <\n  TDynamicParams extends {\n    dynamicPath?: DynamicParams;\n    searchParams?: DynamicParams;\n  } = {\n    dynamicPath: undefined;\n    searchParams: undefined;\n  },\n>(\n  pathname: TDynamicParams['dynamicPath'] extends DynamicParams\n    ? (dynamicPath: TDynamicParams['dynamicPath']) => string\n    : string,\n  options?: RouteOptions,\n) => {\n  routeId += 1;\n\n  return Object.freeze({\n    id: routeId,\n    pathname,\n    withSearchParams: (dynamicParams: TDynamicParams) => {\n      const params = dynamicParams.searchParams ?? {};\n      const searchParams = new URLSearchParams();\n\n      for (const key in params) {\n        const value = params[key];\n\n        if (value === undefined) continue;\n\n        searchParams.append(key, String(value));\n      }\n\n      const search = searchParams.toString();\n\n      const _pathname =\n        typeof pathname === 'function'\n          ? pathname(dynamicParams.dynamicPath ?? {})\n          : pathname;\n\n      return `${_pathname}${search ? `?${search}` : ''}`;\n    },\n    hasBottomNav: options?.hasBottomNav ?? false,\n    toastDirection: options?.toastDirection ?? 'bottom',\n  } as const);\n};\n","import { MODULE_ROUTES,ROUTES } from '@/constants';\n\nexport const findRoute = (pathname: string | null) => {\n  if (!pathname) return;\n\n  const allRoutes = { ...ROUTES, ...MODULE_ROUTES };\n\n  let matchedRoute: {\n    name?: keyof typeof allRoutes;\n    point: number;\n  } = {\n    point: 0,\n  };\n\n  for (const key in allRoutes) {\n    const routeName = key as keyof typeof allRoutes;\n\n    const route = allRoutes[routeName];\n\n    if (typeof route.pathname === 'string') {\n      if (route.pathname === pathname) {\n        return route;\n      }\n    } else {\n      const splitedRoutePathname = route.pathname({} as any).split('/');\n      const splitedCurrentPathname = pathname.split('/');\n\n      if (splitedRoutePathname.length !== splitedCurrentPathname.length)\n        continue;\n\n      let matchPoint = 0;\n\n      const isAllSame = splitedCurrentPathname.every((path, index) => {\n        const partOfRoutePathname = splitedRoutePathname[index];\n\n        //! 동적 경로인 경우 더 일치도가 높은 라우트를 설정\n\n        if (partOfRoutePathname === 'undefined') {\n          matchPoint += 1;\n\n          return true;\n        }\n\n        if (path === partOfRoutePathname) {\n          matchPoint += 2;\n\n          return true;\n        }\n\n        return false;\n      });\n\n      if (isAllSame && matchedRoute.point < matchPoint) {\n        matchedRoute = {\n          name: routeName,\n          point: matchPoint,\n        };\n      }\n    }\n  }\n\n  if (matchedRoute.name) return allRoutes[matchedRoute.name];\n};\n","import type { Metadata } from 'next';\n\nimport { DEFAULT_META } from '@/constants';\n\ninterface GetMetadataProps {\n  title?: string;\n  description?: string;\n  keywords?: string[];\n  canonical?: string;\n  images?: string;\n  name?: string;\n  url?: string;\n  type?: string;\n}\n\n/**\n * 기본 SEO 메타데이터에 추가된 값만 변경해주는 함수\n */\nexport const getMetadata = ({\n  title,\n  description,\n  keywords,\n  images,\n  name,\n  canonical,\n  url,\n  type,\n}: GetMetadataProps): Metadata => {\n  return {\n    ...DEFAULT_META,\n\n    ...(title && { title }),\n    ...(description && { description }),\n    ...(keywords && { keywords }),\n    ...(canonical && {\n      alternates: {\n        canonical,\n      },\n    }),\n    openGraph: {\n      ...DEFAULT_META.openGraph,\n      ...(title && { title }),\n      ...(images && { images }),\n      ...(description && { description }),\n      ...(type && { type }),\n      ...(url && { url }),\n    },\n    authors: name\n      ? [\n          {\n            name,\n            url: DEFAULT_META.authors[0].url,\n          },\n        ]\n      : DEFAULT_META.authors,\n  };\n};\n","export * from './createRoute';\nexport * from './findRoute';\nexport * from './getMetadata';\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"fixed-body\":\"useBodyScrollLock_fixed-body__A6g2O\",\"body-size\":\"useBodyScrollLock_body-size__jqphR\"};"],"names":["MODAL_CLOSING_STATE","_path","_path2","info_path","info_path2","success_path","success_path2","warning_path","warning_path2","useBodyScrollLock","enabled","options","selector","useLayoutEffect","document","target","body","optionTarget","getElementById","classList","add","styles","remove","useClipboard","toast","useToast","useCallback","args","value","window","location","href","message","concat","navigator","clipboard","writeText","then","catch","type","textarea","createElement","appendChild","select","execCommand","removeChild","err","console","error","useDebouncedValue","delay","debouncedValue","setDebouncedValue","useState","debounced","useMemo","debounce","useEffect","cancel","useSubscribedState","subscribedState","dependencyList","valueState","setValue","subscribedValue","Function","useMountedEffect","effect","deps","isMounted","useRef","current","isEqual","info","_extends","Object","assign","bind","n","e","arguments","length","t","r","hasOwnProperty","call","apply","fail","props","node_modules_react","xmlns","width","height","fill","viewBox","stroke","strokeLinecap","strokeLinejoin","strokeWidth","d","info_extends","success_extends","success","warning_extends","warning","toastQueue","Map","holdTime","param","Icon","SuccessIcon","FailIcon","WarningIcon","InfoIcon","toastKey","has","set","toastifyToast","autoClose","icon","jsx_runtime","jsx","className","onClose","delete","toastError","exceptionOptions","restOptions","return_code","errorCode","return_message","errorMessage","toastErrorMessage","exceptedErrorMessage","devToast","isDev","cn","_len","inputs","_key","twMerge","clsx","assert","condition","CustomError","cleanClassName","replace","createUuid","seed","v3","v4","createYupSchemaResolver","customYup","yup","number","transform","originalValue","undefined","schema","shape","factory","yupResolver","stringDate","checkDate","required","min","max","test","dateValue","regex","match","substring","date","Date","year","getFullYear","month","getMonth","day","getDate","parts","split","yearFromStr","parseInt","monthFromStr","dayFromStr","includes","onlyPast","inputDate","today","setHours","stringPhone","charAt","format","phone","slice","storage","bytes","unit","precision","kiloBytes","toFixed","megaBytes","gigaBytes","units","remainder","num","result","i","unitValue","Math","pow","currentUnit","floor","toLocaleString","trim","getOsType","userAgent","getSubDomain","hostname","mainDomain","join","subDomain","isCurrentUrl","targetUrl","URL","origin","skipPathname","pathname","skipSearch","search","process","isEnumValue","enumType","values","isArrayItem","array","hasObjectKey","obj","key","optimizeImageUrl","originalUrl","url","startsWith","params","URLSearchParams","quality","toString","SOCIAL_OAUTH_URL","kakao","naver","google","apple","encodeOAuthState","redirectPath","btoa","unescape","encodeURIComponent","JSON","stringify","createOAuthUrl","domain","clientId","scope","appleApiRoutePath","searchParams","response_type","client_id","state","append","monthText","hash","sitemapHash","customEditor","getImageUrls","imageList","doc","content","forEach","name","push","attrs","src","createQueryKeys","keys","ERROR_CODE","hasKey","isNormalizedResponse","res","Error","constructor","status","result_code","request","cause","errorNum","normalizeServerRequest","requestFn","errorObject","checkServerResponse","headers","get","clonedRes","clone","getRequest","endpoint","data","json","ENV","NODE_ENV","NEXT_PUBLIC_DOMAIN","NEXT_PUBLIC_API_DOMAIN","NEXT_PUBLIC_GOOGLE_CLIENT_ID","NEXT_PUBLIC_KAKAO_CLIENT_ID","NEXT_PUBLIC_NAVER_CLIENT_ID","NEXT_PUBLIC_APPLE_CLIENT_ID","NEXT_PUBLIC_JEJU_API_DOMAIN","NEXT_PUBLIC_JEJU_YOUTHDREAM_API_KEY","NEXT_PUBLIC_DPG_API_DOMAIN","NEXT_PUBLIC_NAVER_CLOUD_CLIENT_ID","NEXT_PUBLIC_MOBILE_OK_URL","NEXT_PUBLIC_EZ_IOK_URL","IS_PRODUCT","IS_DEV","BASE_URL","CERTIFICATION_LIST","id","COOKIES_KEYS","COOKIE_OPTIONS","path","secure","POINT","MIN_EXCHANGE","EXCHANGE_UNIT","DAY_MAX_EXCHANGE","SEARCH_PARAMS","SELECTOR","MENU_TITLE","DEFAULT_META","generator","applicationName","metadataBase","appLinks","android","package","app_name","ios","app_store_id","manifest","keywords","title","authors","publisher","description","openGraph","images","siteName","COMMUNITY_HEADER_ITEMS","welloNews","policyInfo","hometownNews","policyTalk","freeTalk","GTM_ID","GA_ID","ROUTES","TEST","createRoute","HOME","hasBottomNav","LOGIN","LOGIN_POINT","PEEC_EVENT","PEEC_APPLY","AUTH","COMMUNITY","COMMUNITY_CATEGORY","category","idIdx","WELLO_NEWS_DETAIL","POLICY_TALK_DETAIL","FREE_TALK_DETAIL","HOMETOWN_NEWS_DETAIL","POLICY_INFO_DETAIL","POLICY_TALK_POST_EDIT","idx","POLICY_TALK_POST_NEW","FREE_TALK_POST_EDIT","FREE_TALK_POST_NEW","PROFILE","PROFILE_SCRAP","PROFILE_COMMUNITY_POSTED","PROFILE_COMMUNITY_COMMENTED","PROFILE_APPLY","PROFILE_APPLY_RECOMMEND_INQUIRY","RANDOM_TICKET","RECOMMEND_POLICY_SITUATION_MAIN","caseType","RECOMMEND_POLICY_SITUATION_BABY_FORM","RECOMMEND_POLICY_SITUATION_BABY_REPORT","subRegionCode","childCount","RECOMMEND_POLICY_SITUATION_EMERGENCY_FORM","RECOMMEND_POLICY_SITUATION_EMERGENCY_HOSPITAL_LIST","RECOMMEND_POLICY_SITUATION_EMERGENCY_MAP","RECOMMEND_POLICY_SITUATION_EMERGENCY_DETAIL","MEDICAL_POLICY_LIST","PUSH","PROFILE_EDIT","FAMILY_PROFILE","FAMILY_PROFILE_UPDATE","updateType","FAMILY_FILTER_UPDATE","SEARCH","RECOMMEND_POLICY_LIST","POLICY_DETAIL","COMMENT_LIST","commentType","contentId","commentId","COMMENT_EDIT","POLICY_TALK_COMMENT_NEW","contentIdx","POLICY_TALK_COMMENT_EDIT","HOMETOWN_NEWS_SEARCH","SETTINGS","NOTIFICATION_SETTINGS","ACCOUNT_LINKING","NOTICE","NOTICE_DETAIL","FAQ","INQUIRY_LIST","INQUIRY_EDIT","INQUIRY_DETAIL","RESIGN_MEMBER","PICK_POLICY_LIST","MY_POLICY_FILTER","POLICY_KOSAF_APPLY","POLICY_REPORT","POLICY_REPORT_DETAIL","JEJU_APPLY","JEJU_REPORT","JEJU_REPORT_DETAIL","POLICY_CONSENT","POLICY_NOTICE","POLICY_NOTICE_DETAIL","CROSS_DOMAIN_AUTH","CROSS_DOMAIN_CALLBACK","JOIN_COMMON","JOIN_COMPLETE","JOIN_USER_INFO","POLICY_FILTER","situation","INTEREST_POLICY_FILTER","KB_PAY_FILTER","TERMS","terms","TERMS_PRIVATE","EASY_CERTIFICATION","EASY_CERTIFICATION_CALLBACK","ERROR","code","NICE_CERTIFICATION","NICE_RESULT","VOUCHER_CATEGORY","categoryId","VOUCHER_MAIN","VOUCHER_MAIN_NOTICE","VOUCHER_PRODUCT_INTRODUCE","VOUCHER_DETAIL","voucherId","VOUCHER_INVITE","VOUCHER_MY_WAITING","VOUCHER_QNA","VOUCHER_QNA_DETAIL","VOUCHER_QNA_POSTING","VOUCHER_DESCRIPTION_SERVICE_CATEGORY","VOUCHER_DESCRIPTION_CARD","VOUCHER_LIST","VOUCHER_MAP","toastDirection","VOUCHER_ONLINE_CATEGORY","CHILD_CARE_SERVICE_VOUCHER","NATIONAL_HAPPINESS_CARD_VOUCHER_ONLINE","NATIONAL_HAPPINESS_CARD_VOUCHER_OFFLINE","CONTENT_COMPLIANCE_INFORMATION","WELLPER_INTRODUCTION","WELLPER_APPLY","WELLPER_VERIFY_PHONE","WELLPER_DOCUMENTS_UPLOAD","WELLPER_DOCUMENTS_UPLOAD_INPUT","WELLPER_APPLICATION_COMPLETED","POINTS","POINTS_OVERVIEW","POINTS_FORM","POINTS_WITHDRAWAL_SUCCESS","POINTS_INVITE","ATTENDANCE_DAILY_CHECK","CARD","REWARD","CARD_BENEFIT","CARD_INVITE","CARD_UPLOAD","K_PASS_APPLY","HAPPINESS_CARD_APPLY","CEO_CARD_APPLY","K_PASS_BENEFIT","HAPPINESS_CARD_BENEFIT","BENEFIT_NOTIFICATION","BENEFIT_NOTIFICATION_AGREEMENT","BENEFIT_NOTIFICATION_CALLBACK","DLP_SEOUL_AUTH","DLP_SEOUL_AUTH_TERMS_PRIVACY","DLP_SEOUL_AUTH_CHECK_VERIFICATION","DLP_SEOUL_AUTH_CHANGE_PASSWORD_NOTICE","DLP_SEOUL_AUTH_CHECK_MY_VERIFICATION_INFO","DLP_SEOUL_AUTH_SELECT_MOBILE_AGENCY","DLP_SEOUL_AUTH_CHECK_SEOUL_MEMBER","DLP_SEOUL_AUTH_NEED_VERIFICATION","DLP_SEOUL_AUTH_NEED_SIGNUP_NOTICE","DLP_SEOUL_AUTH_TERMS_AGREEMENT","DLP_SEOUL_AUTH_SIGNUP_FORM","DLP_SEOUL_AUTH_ALREADY_SIGNUP_NOTICE","DLP_SEOUL_AUTH_AUTO_LOGIN_ACTIVE","DLP_SEOUL_AUTH_CHANGE_PASSWORD_INPUT_AUTH_NUMBER","DLP_SEOUL_AUTH_CHANGE_PASSWORD_FORM","DLP_SEOUL_AUTH_COMPLETE","DLP_SEOUL_APPLY_CLTR_PASS_TERMS","DLP_SEOUL_APPLY_CLTR_PASS_FORM","DLP_SEOUL_APPLY_LOAN_CRDT_RCVR_TERMS","DLP_SEOUL_APPLY_LOAN_CRDT_RCVR_FORM","DLP_SEOUL_APPLY_ISLT_YOUTH_SPRT_TERMS","DLP_SEOUL_APPLY_ISLT_YOUTH_SPRT_FORM","DLP_SEOUL_APPLY_COMPLETE","DLP_SEOUL_REPORT","DLP_REVIEW","INSPECTION","API_ROUTES","NAVER_AUTH","GOOGLE_AUTH","APPLE_AUTH","APPLE_TOKEN","REDIRECT","MOBILE_OK_REQUEST","MOBILE_OK_CALLBACK","IOK_REQUEST","IOK_CALLBACK","JEJU_APP_API","DOWNLOAD_APP","PROXY","dynamicPath","MODULE_ROUTES","KB_HOME","STORAGE_KEY","routeId","freeze","withSearchParams","dynamicParams","String","_pathname","findRoute","allRoutes","matchedRoute","point","route","splitedRoutePathname","splitedCurrentPathname","matchPoint","every","index","partOfRoutePathname","module","exports"],"sourceRoot":""}