{"version":3,"file":"data-gouv-fr-components.umd.cjs","sources":["../node_modules/dayjs/esm/constant.js","../node_modules/dayjs/esm/locale/en.js","../node_modules/dayjs/esm/utils.js","../node_modules/dayjs/esm/index.js","../node_modules/dayjs/esm/plugin/localizedFormat/utils.js","../node_modules/dayjs/esm/plugin/localizedFormat/index.js","../node_modules/dayjs/esm/plugin/relativeTime/index.js","../node_modules/@intlify/shared/dist/shared.mjs","../node_modules/@intlify/message-compiler/dist/message-compiler.esm-browser.js","../node_modules/@intlify/core-base/dist/core-base.mjs","../node_modules/@vue/devtools-api/lib/esm/env.js","../node_modules/@vue/devtools-api/lib/esm/const.js","../node_modules/@vue/devtools-api/lib/esm/time.js","../node_modules/@vue/devtools-api/lib/esm/proxy.js","../node_modules/@vue/devtools-api/lib/esm/index.js","../node_modules/vue-i18n/dist/vue-i18n.runtime.mjs","../src/config.ts","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../src/api/api.ts","../node_modules/@etalab/udata-front-plugins-helper/src/paginate.js","../node_modules/@etalab/udata-front-plugins-helper/src/pagination.vue","../node_modules/@etalab/udata-front-plugins-helper/src/hook.js","../src/helpers/i18n.ts","../node_modules/oh-vue-icons/dist/index.esm.min.js","../node_modules/@gouvminint/vue-dsfr/dist/vue-dsfr.mjs","../src/api/frequency.ts","../src/api/granularity.ts","../src/api/schemas.ts","../src/components/AppLink/AppLink.vue","../node_modules/clipboard/dist/clipboard.js","../src/components/CopyButton/CopyButton.vue","../node_modules/tslib/tslib.es6.js","../node_modules/style-value-types/dist/style-value-types.es.js","../node_modules/hey-listen/dist/hey-listen.es.js","../node_modules/framesync/dist/framesync.es.js","../node_modules/@popmotion/easing/dist/easing.es.js","../node_modules/@popmotion/popcorn/dist/popcorn.es.js","../node_modules/stylefire/dist/stylefire.es.js","../node_modules/popmotion/dist/popmotion.es.js","../src/helpers/toggleAccordion.ts","../node_modules/remove-markdown/index.js","../node_modules/markdown-it/lib/common/entities.js","../node_modules/uc.micro/categories/P/regex.js","../node_modules/mdurl/encode.js","../node_modules/mdurl/decode.js","../node_modules/mdurl/format.js","../node_modules/mdurl/parse.js","../node_modules/mdurl/index.js","../node_modules/uc.micro/properties/Any/regex.js","../node_modules/uc.micro/categories/Cc/regex.js","../node_modules/uc.micro/categories/Cf/regex.js","../node_modules/uc.micro/categories/Z/regex.js","../node_modules/uc.micro/index.js","../node_modules/markdown-it/lib/common/utils.js","../node_modules/markdown-it/lib/helpers/parse_link_label.js","../node_modules/markdown-it/lib/helpers/parse_link_destination.js","../node_modules/markdown-it/lib/helpers/parse_link_title.js","../node_modules/markdown-it/lib/helpers/index.js","../node_modules/markdown-it/lib/renderer.js","../node_modules/markdown-it/lib/ruler.js","../node_modules/markdown-it/lib/rules_core/normalize.js","../node_modules/markdown-it/lib/rules_core/block.js","../node_modules/markdown-it/lib/rules_core/inline.js","../node_modules/markdown-it/lib/rules_core/linkify.js","../node_modules/markdown-it/lib/rules_core/replacements.js","../node_modules/markdown-it/lib/rules_core/smartquotes.js","../node_modules/markdown-it/lib/rules_core/text_join.js","../node_modules/markdown-it/lib/token.js","../node_modules/markdown-it/lib/rules_core/state_core.js","../node_modules/markdown-it/lib/parser_core.js","../node_modules/markdown-it/lib/rules_block/table.js","../node_modules/markdown-it/lib/rules_block/code.js","../node_modules/markdown-it/lib/rules_block/fence.js","../node_modules/markdown-it/lib/rules_block/blockquote.js","../node_modules/markdown-it/lib/rules_block/hr.js","../node_modules/markdown-it/lib/rules_block/list.js","../node_modules/markdown-it/lib/rules_block/reference.js","../node_modules/markdown-it/lib/common/html_blocks.js","../node_modules/markdown-it/lib/common/html_re.js","../node_modules/markdown-it/lib/rules_block/html_block.js","../node_modules/markdown-it/lib/rules_block/heading.js","../node_modules/markdown-it/lib/rules_block/lheading.js","../node_modules/markdown-it/lib/rules_block/paragraph.js","../node_modules/markdown-it/lib/rules_block/state_block.js","../node_modules/markdown-it/lib/parser_block.js","../node_modules/markdown-it/lib/rules_inline/text.js","../node_modules/markdown-it/lib/rules_inline/escape.js","../node_modules/markdown-it/lib/rules_inline/linkify.js","../node_modules/markdown-it/lib/rules_inline/newline.js","../node_modules/markdown-it/lib/rules_inline/backticks.js","../node_modules/markdown-it/lib/rules_inline/strikethrough.js","../node_modules/markdown-it/lib/rules_inline/emphasis.js","../node_modules/markdown-it/lib/rules_inline/link.js","../node_modules/markdown-it/lib/rules_inline/image.js","../node_modules/markdown-it/lib/rules_inline/autolink.js","../node_modules/markdown-it/lib/rules_inline/html_inline.js","../node_modules/markdown-it/lib/rules_inline/entity.js","../node_modules/markdown-it/lib/rules_inline/balance_pairs.js","../node_modules/markdown-it/lib/rules_inline/fragments_join.js","../node_modules/markdown-it/lib/rules_inline/state_inline.js","../node_modules/markdown-it/lib/parser_inline.js","../node_modules/linkify-it/lib/re.js","../node_modules/linkify-it/index.js","../node_modules/punycode/punycode.es6.js","../node_modules/markdown-it/lib/presets/default.js","../node_modules/markdown-it/lib/presets/zero.js","../node_modules/markdown-it/lib/presets/commonmark.js","../node_modules/markdown-it/lib/index.js","../node_modules/markdown-it/index.js","../src/helpers/markdown.ts","../src/helpers/index.ts","../src/composables/useEmbed.ts","../src/components/InformationPanel/InformationPanel.vue","../src/composables/organizations/useOrganizationCertified.ts","../src/components/Organization/OrganizationNameWithCertificate.vue","../src/composables/organizations/useOwnerName.ts","../../templates/svg/resources/code.svg","../../templates/svg/resources/archive.svg","../../templates/svg/resources/documentation.svg","../../templates/svg/resources/file.svg","../../templates/svg/resources/link.svg","../../templates/svg/resources/table.svg","../src/composables/resources/useResourceImage.ts","../node_modules/@conciergerie.dev/vue-toaster/dist/vue-toaster.js","../src/composables/useToast.ts","../src/composables/resources/useSchema.ts","../src/composables/useUserAvatar.ts","../src/components/Avatar/Avatar.vue","../node_modules/@vueuse/shared/index.mjs","../node_modules/@vueuse/core/index.mjs","../src/components/utils/Placeholder.vue","../src/components/QualityScore/QualityScore.vue","../src/components/Toggletip/Toggletip.vue","../src/components/DatasetCard/DatasetCard.vue","../node_modules/vue-content-loader/dist/vue-content-loader.es.js","../src/components/ResourceAccordion/EditButton.vue","../src/components/DescriptionList/DescriptionList.vue","../src/components/DescriptionList/DescriptionTerm.vue","../src/composables/useComponentsForHook.ts","../src/composables/useTabs.ts","../src/components/ResourceAccordion/ResourceAccordion.vue","../src/components/ResourceAccordion/Loader.vue","../src/components/Pagination/paginate.js","../src/components/Pagination/Pagination.vue","../src/components/ReadMore/ReadMore.vue","../src/components/Well/Well.vue","../node_modules/dayjs/esm/locale/af.js","../node_modules/dayjs/esm/locale/am.js","../node_modules/dayjs/esm/locale/ar-dz.js","../node_modules/dayjs/esm/locale/ar-iq.js","../node_modules/dayjs/esm/locale/ar-kw.js","../node_modules/dayjs/esm/locale/ar-ly.js","../node_modules/dayjs/esm/locale/ar-ma.js","../node_modules/dayjs/esm/locale/ar-sa.js","../node_modules/dayjs/esm/locale/ar-tn.js","../node_modules/dayjs/esm/locale/ar.js","../node_modules/dayjs/esm/locale/az.js","../node_modules/dayjs/esm/locale/be.js","../node_modules/dayjs/esm/locale/bg.js","../node_modules/dayjs/esm/locale/bi.js","../node_modules/dayjs/esm/locale/bm.js","../node_modules/dayjs/esm/locale/bn-bd.js","../node_modules/dayjs/esm/locale/bn.js","../node_modules/dayjs/esm/locale/bo.js","../node_modules/dayjs/esm/locale/br.js","../node_modules/dayjs/esm/locale/bs.js","../node_modules/dayjs/esm/locale/ca.js","../node_modules/dayjs/esm/locale/cs.js","../node_modules/dayjs/esm/locale/cv.js","../node_modules/dayjs/esm/locale/cy.js","../node_modules/dayjs/esm/locale/da.js","../node_modules/dayjs/esm/locale/de-at.js","../node_modules/dayjs/esm/locale/de-ch.js","../node_modules/dayjs/esm/locale/de.js","../node_modules/dayjs/esm/locale/dv.js","../node_modules/dayjs/esm/locale/el.js","../node_modules/dayjs/esm/locale/en-au.js","../node_modules/dayjs/esm/locale/en-ca.js","../node_modules/dayjs/esm/locale/en-gb.js","../node_modules/dayjs/esm/locale/en-ie.js","../node_modules/dayjs/esm/locale/en-il.js","../node_modules/dayjs/esm/locale/en-in.js","../node_modules/dayjs/esm/locale/en-nz.js","../node_modules/dayjs/esm/locale/en-sg.js","../node_modules/dayjs/esm/locale/en-tt.js","../node_modules/dayjs/esm/locale/eo.js","../node_modules/dayjs/esm/locale/es-do.js","../node_modules/dayjs/esm/locale/es-mx.js","../node_modules/dayjs/esm/locale/es-pr.js","../node_modules/dayjs/esm/locale/es-us.js","../node_modules/dayjs/esm/locale/es.js","../node_modules/dayjs/esm/locale/et.js","../node_modules/dayjs/esm/locale/eu.js","../node_modules/dayjs/esm/locale/fa.js","../node_modules/dayjs/esm/locale/fi.js","../node_modules/dayjs/esm/locale/fo.js","../node_modules/dayjs/esm/locale/fr-ca.js","../node_modules/dayjs/esm/locale/fr-ch.js","../node_modules/dayjs/esm/locale/fr.js","../node_modules/dayjs/esm/locale/fy.js","../node_modules/dayjs/esm/locale/ga.js","../node_modules/dayjs/esm/locale/gd.js","../node_modules/dayjs/esm/locale/gl.js","../node_modules/dayjs/esm/locale/gom-latn.js","../node_modules/dayjs/esm/locale/gu.js","../node_modules/dayjs/esm/locale/he.js","../node_modules/dayjs/esm/locale/hi.js","../node_modules/dayjs/esm/locale/hr.js","../node_modules/dayjs/esm/locale/ht.js","../node_modules/dayjs/esm/locale/hu.js","../node_modules/dayjs/esm/locale/hy-am.js","../node_modules/dayjs/esm/locale/id.js","../node_modules/dayjs/esm/locale/is.js","../node_modules/dayjs/esm/locale/it-ch.js","../node_modules/dayjs/esm/locale/it.js","../node_modules/dayjs/esm/locale/ja.js","../node_modules/dayjs/esm/locale/jv.js","../node_modules/dayjs/esm/locale/ka.js","../node_modules/dayjs/esm/locale/kk.js","../node_modules/dayjs/esm/locale/km.js","../node_modules/dayjs/esm/locale/kn.js","../node_modules/dayjs/esm/locale/ko.js","../node_modules/dayjs/esm/locale/ku.js","../node_modules/dayjs/esm/locale/ky.js","../node_modules/dayjs/esm/locale/lb.js","../node_modules/dayjs/esm/locale/lo.js","../node_modules/dayjs/esm/locale/lt.js","../node_modules/dayjs/esm/locale/lv.js","../node_modules/dayjs/esm/locale/me.js","../node_modules/dayjs/esm/locale/mi.js","../node_modules/dayjs/esm/locale/mk.js","../node_modules/dayjs/esm/locale/ml.js","../node_modules/dayjs/esm/locale/mn.js","../node_modules/dayjs/esm/locale/mr.js","../node_modules/dayjs/esm/locale/ms-my.js","../node_modules/dayjs/esm/locale/ms.js","../node_modules/dayjs/esm/locale/mt.js","../node_modules/dayjs/esm/locale/my.js","../node_modules/dayjs/esm/locale/nb.js","../node_modules/dayjs/esm/locale/ne.js","../node_modules/dayjs/esm/locale/nl-be.js","../node_modules/dayjs/esm/locale/nl.js","../node_modules/dayjs/esm/locale/nn.js","../node_modules/dayjs/esm/locale/oc-lnc.js","../node_modules/dayjs/esm/locale/pa-in.js","../node_modules/dayjs/esm/locale/pl.js","../node_modules/dayjs/esm/locale/pt-br.js","../node_modules/dayjs/esm/locale/pt.js","../node_modules/dayjs/esm/locale/rn.js","../node_modules/dayjs/esm/locale/ro.js","../node_modules/dayjs/esm/locale/ru.js","../node_modules/dayjs/esm/locale/rw.js","../node_modules/dayjs/esm/locale/sd.js","../node_modules/dayjs/esm/locale/se.js","../node_modules/dayjs/esm/locale/si.js","../node_modules/dayjs/esm/locale/sk.js","../node_modules/dayjs/esm/locale/sl.js","../node_modules/dayjs/esm/locale/sq.js","../node_modules/dayjs/esm/locale/sr-cyrl.js","../node_modules/dayjs/esm/locale/sr.js","../node_modules/dayjs/esm/locale/ss.js","../node_modules/dayjs/esm/locale/sv-fi.js","../node_modules/dayjs/esm/locale/sv.js","../node_modules/dayjs/esm/locale/sw.js","../node_modules/dayjs/esm/locale/ta.js","../node_modules/dayjs/esm/locale/te.js","../node_modules/dayjs/esm/locale/tet.js","../node_modules/dayjs/esm/locale/tg.js","../node_modules/dayjs/esm/locale/th.js","../node_modules/dayjs/esm/locale/tk.js","../node_modules/dayjs/esm/locale/tl-ph.js","../node_modules/dayjs/esm/locale/tlh.js","../node_modules/dayjs/esm/locale/tr.js","../node_modules/dayjs/esm/locale/tzl.js","../node_modules/dayjs/esm/locale/tzm-latn.js","../node_modules/dayjs/esm/locale/tzm.js","../node_modules/dayjs/esm/locale/ug-cn.js","../node_modules/dayjs/esm/locale/uk.js","../node_modules/dayjs/esm/locale/ur.js","../node_modules/dayjs/esm/locale/uz-latn.js","../node_modules/dayjs/esm/locale/uz.js","../node_modules/dayjs/esm/locale/vi.js","../node_modules/dayjs/esm/locale/x-pseudo.js","../node_modules/dayjs/esm/locale/yo.js","../node_modules/dayjs/esm/locale/zh-cn.js","../node_modules/dayjs/esm/locale/zh-hk.js","../node_modules/dayjs/esm/locale/zh-tw.js","../node_modules/dayjs/esm/locale/zh.js","../src/assets/img/placeholders/author.png","../src/assets/img/placeholders/dataset.png","../src/assets/img/placeholders/news.png","../src/assets/img/placeholders/organization.png","../src/assets/img/placeholders/reuse.png"],"sourcesContent":["export var SECONDS_A_MINUTE = 60;\nexport var SECONDS_A_HOUR = SECONDS_A_MINUTE * 60;\nexport var SECONDS_A_DAY = SECONDS_A_HOUR * 24;\nexport var SECONDS_A_WEEK = SECONDS_A_DAY * 7;\nexport var MILLISECONDS_A_SECOND = 1e3;\nexport var MILLISECONDS_A_MINUTE = SECONDS_A_MINUTE * MILLISECONDS_A_SECOND;\nexport var MILLISECONDS_A_HOUR = SECONDS_A_HOUR * MILLISECONDS_A_SECOND;\nexport var MILLISECONDS_A_DAY = SECONDS_A_DAY * MILLISECONDS_A_SECOND;\nexport var MILLISECONDS_A_WEEK = SECONDS_A_WEEK * MILLISECONDS_A_SECOND; // English locales\n\nexport var MS = 'millisecond';\nexport var S = 'second';\nexport var MIN = 'minute';\nexport var H = 'hour';\nexport var D = 'day';\nexport var W = 'week';\nexport var M = 'month';\nexport var Q = 'quarter';\nexport var Y = 'year';\nexport var DATE = 'date';\nexport var FORMAT_DEFAULT = 'YYYY-MM-DDTHH:mm:ssZ';\nexport var INVALID_DATE_STRING = 'Invalid Date'; // regex\n\nexport var REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/;\nexport var REGEX_FORMAT = /\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g;","// English [en]\n// We don't need weekdaysShort, weekdaysMin, monthsShort in en.js locale\nexport default {\n  name: 'en',\n  weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n  months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n  ordinal: function ordinal(n) {\n    var s = ['th', 'st', 'nd', 'rd'];\n    var v = n % 100;\n    return \"[\" + n + (s[(v - 20) % 10] || s[v] || s[0]) + \"]\";\n  }\n};","import * as C from './constant';\n\nvar padStart = function padStart(string, length, pad) {\n  var s = String(string);\n  if (!s || s.length >= length) return string;\n  return \"\" + Array(length + 1 - s.length).join(pad) + string;\n};\n\nvar padZoneStr = function padZoneStr(instance) {\n  var negMinutes = -instance.utcOffset();\n  var minutes = Math.abs(negMinutes);\n  var hourOffset = Math.floor(minutes / 60);\n  var minuteOffset = minutes % 60;\n  return \"\" + (negMinutes <= 0 ? '+' : '-') + padStart(hourOffset, 2, '0') + \":\" + padStart(minuteOffset, 2, '0');\n};\n\nvar monthDiff = function monthDiff(a, b) {\n  // function from moment.js in order to keep the same result\n  if (a.date() < b.date()) return -monthDiff(b, a);\n  var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month());\n  var anchor = a.clone().add(wholeMonthDiff, C.M);\n  var c = b - anchor < 0;\n  var anchor2 = a.clone().add(wholeMonthDiff + (c ? -1 : 1), C.M);\n  return +(-(wholeMonthDiff + (b - anchor) / (c ? anchor - anchor2 : anchor2 - anchor)) || 0);\n};\n\nvar absFloor = function absFloor(n) {\n  return n < 0 ? Math.ceil(n) || 0 : Math.floor(n);\n};\n\nvar prettyUnit = function prettyUnit(u) {\n  var special = {\n    M: C.M,\n    y: C.Y,\n    w: C.W,\n    d: C.D,\n    D: C.DATE,\n    h: C.H,\n    m: C.MIN,\n    s: C.S,\n    ms: C.MS,\n    Q: C.Q\n  };\n  return special[u] || String(u || '').toLowerCase().replace(/s$/, '');\n};\n\nvar isUndefined = function isUndefined(s) {\n  return s === undefined;\n};\n\nexport default {\n  s: padStart,\n  z: padZoneStr,\n  m: monthDiff,\n  a: absFloor,\n  p: prettyUnit,\n  u: isUndefined\n};","import * as C from './constant';\nimport en from './locale/en';\nimport U from './utils';\nvar L = 'en'; // global locale\n\nvar Ls = {}; // global loaded locale\n\nLs[L] = en;\nvar IS_DAYJS = '$isDayjsObject'; // eslint-disable-next-line no-use-before-define\n\nvar isDayjs = function isDayjs(d) {\n  return d instanceof Dayjs || !!(d && d[IS_DAYJS]);\n};\n\nvar parseLocale = function parseLocale(preset, object, isLocal) {\n  var l;\n  if (!preset) return L;\n\n  if (typeof preset === 'string') {\n    var presetLower = preset.toLowerCase();\n\n    if (Ls[presetLower]) {\n      l = presetLower;\n    }\n\n    if (object) {\n      Ls[presetLower] = object;\n      l = presetLower;\n    }\n\n    var presetSplit = preset.split('-');\n\n    if (!l && presetSplit.length > 1) {\n      return parseLocale(presetSplit[0]);\n    }\n  } else {\n    var name = preset.name;\n    Ls[name] = preset;\n    l = name;\n  }\n\n  if (!isLocal && l) L = l;\n  return l || !isLocal && L;\n};\n\nvar dayjs = function dayjs(date, c) {\n  if (isDayjs(date)) {\n    return date.clone();\n  } // eslint-disable-next-line no-nested-ternary\n\n\n  var cfg = typeof c === 'object' ? c : {};\n  cfg.date = date;\n  cfg.args = arguments; // eslint-disable-line prefer-rest-params\n\n  return new Dayjs(cfg); // eslint-disable-line no-use-before-define\n};\n\nvar wrapper = function wrapper(date, instance) {\n  return dayjs(date, {\n    locale: instance.$L,\n    utc: instance.$u,\n    x: instance.$x,\n    $offset: instance.$offset // todo: refactor; do not use this.$offset in you code\n\n  });\n};\n\nvar Utils = U; // for plugin use\n\nUtils.l = parseLocale;\nUtils.i = isDayjs;\nUtils.w = wrapper;\n\nvar parseDate = function parseDate(cfg) {\n  var date = cfg.date,\n      utc = cfg.utc;\n  if (date === null) return new Date(NaN); // null is invalid\n\n  if (Utils.u(date)) return new Date(); // today\n\n  if (date instanceof Date) return new Date(date);\n\n  if (typeof date === 'string' && !/Z$/i.test(date)) {\n    var d = date.match(C.REGEX_PARSE);\n\n    if (d) {\n      var m = d[2] - 1 || 0;\n      var ms = (d[7] || '0').substring(0, 3);\n\n      if (utc) {\n        return new Date(Date.UTC(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms));\n      }\n\n      return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n    }\n  }\n\n  return new Date(date); // everything else\n};\n\nvar Dayjs = /*#__PURE__*/function () {\n  function Dayjs(cfg) {\n    this.$L = parseLocale(cfg.locale, null, true);\n    this.parse(cfg); // for plugin\n\n    this.$x = this.$x || cfg.x || {};\n    this[IS_DAYJS] = true;\n  }\n\n  var _proto = Dayjs.prototype;\n\n  _proto.parse = function parse(cfg) {\n    this.$d = parseDate(cfg);\n    this.init();\n  };\n\n  _proto.init = function init() {\n    var $d = this.$d;\n    this.$y = $d.getFullYear();\n    this.$M = $d.getMonth();\n    this.$D = $d.getDate();\n    this.$W = $d.getDay();\n    this.$H = $d.getHours();\n    this.$m = $d.getMinutes();\n    this.$s = $d.getSeconds();\n    this.$ms = $d.getMilliseconds();\n  } // eslint-disable-next-line class-methods-use-this\n  ;\n\n  _proto.$utils = function $utils() {\n    return Utils;\n  };\n\n  _proto.isValid = function isValid() {\n    return !(this.$d.toString() === C.INVALID_DATE_STRING);\n  };\n\n  _proto.isSame = function isSame(that, units) {\n    var other = dayjs(that);\n    return this.startOf(units) <= other && other <= this.endOf(units);\n  };\n\n  _proto.isAfter = function isAfter(that, units) {\n    return dayjs(that) < this.startOf(units);\n  };\n\n  _proto.isBefore = function isBefore(that, units) {\n    return this.endOf(units) < dayjs(that);\n  };\n\n  _proto.$g = function $g(input, get, set) {\n    if (Utils.u(input)) return this[get];\n    return this.set(set, input);\n  };\n\n  _proto.unix = function unix() {\n    return Math.floor(this.valueOf() / 1000);\n  };\n\n  _proto.valueOf = function valueOf() {\n    // timezone(hour) * 60 * 60 * 1000 => ms\n    return this.$d.getTime();\n  };\n\n  _proto.startOf = function startOf(units, _startOf) {\n    var _this = this;\n\n    // startOf -> endOf\n    var isStartOf = !Utils.u(_startOf) ? _startOf : true;\n    var unit = Utils.p(units);\n\n    var instanceFactory = function instanceFactory(d, m) {\n      var ins = Utils.w(_this.$u ? Date.UTC(_this.$y, m, d) : new Date(_this.$y, m, d), _this);\n      return isStartOf ? ins : ins.endOf(C.D);\n    };\n\n    var instanceFactorySet = function instanceFactorySet(method, slice) {\n      var argumentStart = [0, 0, 0, 0];\n      var argumentEnd = [23, 59, 59, 999];\n      return Utils.w(_this.toDate()[method].apply( // eslint-disable-line prefer-spread\n      _this.toDate('s'), (isStartOf ? argumentStart : argumentEnd).slice(slice)), _this);\n    };\n\n    var $W = this.$W,\n        $M = this.$M,\n        $D = this.$D;\n    var utcPad = \"set\" + (this.$u ? 'UTC' : '');\n\n    switch (unit) {\n      case C.Y:\n        return isStartOf ? instanceFactory(1, 0) : instanceFactory(31, 11);\n\n      case C.M:\n        return isStartOf ? instanceFactory(1, $M) : instanceFactory(0, $M + 1);\n\n      case C.W:\n        {\n          var weekStart = this.$locale().weekStart || 0;\n          var gap = ($W < weekStart ? $W + 7 : $W) - weekStart;\n          return instanceFactory(isStartOf ? $D - gap : $D + (6 - gap), $M);\n        }\n\n      case C.D:\n      case C.DATE:\n        return instanceFactorySet(utcPad + \"Hours\", 0);\n\n      case C.H:\n        return instanceFactorySet(utcPad + \"Minutes\", 1);\n\n      case C.MIN:\n        return instanceFactorySet(utcPad + \"Seconds\", 2);\n\n      case C.S:\n        return instanceFactorySet(utcPad + \"Milliseconds\", 3);\n\n      default:\n        return this.clone();\n    }\n  };\n\n  _proto.endOf = function endOf(arg) {\n    return this.startOf(arg, false);\n  };\n\n  _proto.$set = function $set(units, _int) {\n    var _C$D$C$DATE$C$M$C$Y$C;\n\n    // private set\n    var unit = Utils.p(units);\n    var utcPad = \"set\" + (this.$u ? 'UTC' : '');\n    var name = (_C$D$C$DATE$C$M$C$Y$C = {}, _C$D$C$DATE$C$M$C$Y$C[C.D] = utcPad + \"Date\", _C$D$C$DATE$C$M$C$Y$C[C.DATE] = utcPad + \"Date\", _C$D$C$DATE$C$M$C$Y$C[C.M] = utcPad + \"Month\", _C$D$C$DATE$C$M$C$Y$C[C.Y] = utcPad + \"FullYear\", _C$D$C$DATE$C$M$C$Y$C[C.H] = utcPad + \"Hours\", _C$D$C$DATE$C$M$C$Y$C[C.MIN] = utcPad + \"Minutes\", _C$D$C$DATE$C$M$C$Y$C[C.S] = utcPad + \"Seconds\", _C$D$C$DATE$C$M$C$Y$C[C.MS] = utcPad + \"Milliseconds\", _C$D$C$DATE$C$M$C$Y$C)[unit];\n    var arg = unit === C.D ? this.$D + (_int - this.$W) : _int;\n\n    if (unit === C.M || unit === C.Y) {\n      // clone is for badMutable plugin\n      var date = this.clone().set(C.DATE, 1);\n      date.$d[name](arg);\n      date.init();\n      this.$d = date.set(C.DATE, Math.min(this.$D, date.daysInMonth())).$d;\n    } else if (name) this.$d[name](arg);\n\n    this.init();\n    return this;\n  };\n\n  _proto.set = function set(string, _int2) {\n    return this.clone().$set(string, _int2);\n  };\n\n  _proto.get = function get(unit) {\n    return this[Utils.p(unit)]();\n  };\n\n  _proto.add = function add(number, units) {\n    var _this2 = this,\n        _C$MIN$C$H$C$S$unit;\n\n    number = Number(number); // eslint-disable-line no-param-reassign\n\n    var unit = Utils.p(units);\n\n    var instanceFactorySet = function instanceFactorySet(n) {\n      var d = dayjs(_this2);\n      return Utils.w(d.date(d.date() + Math.round(n * number)), _this2);\n    };\n\n    if (unit === C.M) {\n      return this.set(C.M, this.$M + number);\n    }\n\n    if (unit === C.Y) {\n      return this.set(C.Y, this.$y + number);\n    }\n\n    if (unit === C.D) {\n      return instanceFactorySet(1);\n    }\n\n    if (unit === C.W) {\n      return instanceFactorySet(7);\n    }\n\n    var step = (_C$MIN$C$H$C$S$unit = {}, _C$MIN$C$H$C$S$unit[C.MIN] = C.MILLISECONDS_A_MINUTE, _C$MIN$C$H$C$S$unit[C.H] = C.MILLISECONDS_A_HOUR, _C$MIN$C$H$C$S$unit[C.S] = C.MILLISECONDS_A_SECOND, _C$MIN$C$H$C$S$unit)[unit] || 1; // ms\n\n    var nextTimeStamp = this.$d.getTime() + number * step;\n    return Utils.w(nextTimeStamp, this);\n  };\n\n  _proto.subtract = function subtract(number, string) {\n    return this.add(number * -1, string);\n  };\n\n  _proto.format = function format(formatStr) {\n    var _this3 = this;\n\n    var locale = this.$locale();\n    if (!this.isValid()) return locale.invalidDate || C.INVALID_DATE_STRING;\n    var str = formatStr || C.FORMAT_DEFAULT;\n    var zoneStr = Utils.z(this);\n    var $H = this.$H,\n        $m = this.$m,\n        $M = this.$M;\n    var weekdays = locale.weekdays,\n        months = locale.months,\n        meridiem = locale.meridiem;\n\n    var getShort = function getShort(arr, index, full, length) {\n      return arr && (arr[index] || arr(_this3, str)) || full[index].slice(0, length);\n    };\n\n    var get$H = function get$H(num) {\n      return Utils.s($H % 12 || 12, num, '0');\n    };\n\n    var meridiemFunc = meridiem || function (hour, minute, isLowercase) {\n      var m = hour < 12 ? 'AM' : 'PM';\n      return isLowercase ? m.toLowerCase() : m;\n    };\n\n    var matches = function matches(match) {\n      switch (match) {\n        case 'YY':\n          return String(_this3.$y).slice(-2);\n\n        case 'YYYY':\n          return Utils.s(_this3.$y, 4, '0');\n\n        case 'M':\n          return $M + 1;\n\n        case 'MM':\n          return Utils.s($M + 1, 2, '0');\n\n        case 'MMM':\n          return getShort(locale.monthsShort, $M, months, 3);\n\n        case 'MMMM':\n          return getShort(months, $M);\n\n        case 'D':\n          return _this3.$D;\n\n        case 'DD':\n          return Utils.s(_this3.$D, 2, '0');\n\n        case 'd':\n          return String(_this3.$W);\n\n        case 'dd':\n          return getShort(locale.weekdaysMin, _this3.$W, weekdays, 2);\n\n        case 'ddd':\n          return getShort(locale.weekdaysShort, _this3.$W, weekdays, 3);\n\n        case 'dddd':\n          return weekdays[_this3.$W];\n\n        case 'H':\n          return String($H);\n\n        case 'HH':\n          return Utils.s($H, 2, '0');\n\n        case 'h':\n          return get$H(1);\n\n        case 'hh':\n          return get$H(2);\n\n        case 'a':\n          return meridiemFunc($H, $m, true);\n\n        case 'A':\n          return meridiemFunc($H, $m, false);\n\n        case 'm':\n          return String($m);\n\n        case 'mm':\n          return Utils.s($m, 2, '0');\n\n        case 's':\n          return String(_this3.$s);\n\n        case 'ss':\n          return Utils.s(_this3.$s, 2, '0');\n\n        case 'SSS':\n          return Utils.s(_this3.$ms, 3, '0');\n\n        case 'Z':\n          return zoneStr;\n        // 'ZZ' logic below\n\n        default:\n          break;\n      }\n\n      return null;\n    };\n\n    return str.replace(C.REGEX_FORMAT, function (match, $1) {\n      return $1 || matches(match) || zoneStr.replace(':', '');\n    }); // 'ZZ'\n  };\n\n  _proto.utcOffset = function utcOffset() {\n    // Because a bug at FF24, we're rounding the timezone offset around 15 minutes\n    // https://github.com/moment/moment/pull/1871\n    return -Math.round(this.$d.getTimezoneOffset() / 15) * 15;\n  };\n\n  _proto.diff = function diff(input, units, _float) {\n    var _this4 = this;\n\n    var unit = Utils.p(units);\n    var that = dayjs(input);\n    var zoneDelta = (that.utcOffset() - this.utcOffset()) * C.MILLISECONDS_A_MINUTE;\n    var diff = this - that;\n\n    var getMonth = function getMonth() {\n      return Utils.m(_this4, that);\n    };\n\n    var result;\n\n    switch (unit) {\n      case C.Y:\n        result = getMonth() / 12;\n        break;\n\n      case C.M:\n        result = getMonth();\n        break;\n\n      case C.Q:\n        result = getMonth() / 3;\n        break;\n\n      case C.W:\n        result = (diff - zoneDelta) / C.MILLISECONDS_A_WEEK;\n        break;\n\n      case C.D:\n        result = (diff - zoneDelta) / C.MILLISECONDS_A_DAY;\n        break;\n\n      case C.H:\n        result = diff / C.MILLISECONDS_A_HOUR;\n        break;\n\n      case C.MIN:\n        result = diff / C.MILLISECONDS_A_MINUTE;\n        break;\n\n      case C.S:\n        result = diff / C.MILLISECONDS_A_SECOND;\n        break;\n\n      default:\n        result = diff; // milliseconds\n\n        break;\n    }\n\n    return _float ? result : Utils.a(result);\n  };\n\n  _proto.daysInMonth = function daysInMonth() {\n    return this.endOf(C.M).$D;\n  };\n\n  _proto.$locale = function $locale() {\n    // get locale object\n    return Ls[this.$L];\n  };\n\n  _proto.locale = function locale(preset, object) {\n    if (!preset) return this.$L;\n    var that = this.clone();\n    var nextLocaleName = parseLocale(preset, object, true);\n    if (nextLocaleName) that.$L = nextLocaleName;\n    return that;\n  };\n\n  _proto.clone = function clone() {\n    return Utils.w(this.$d, this);\n  };\n\n  _proto.toDate = function toDate() {\n    return new Date(this.valueOf());\n  };\n\n  _proto.toJSON = function toJSON() {\n    return this.isValid() ? this.toISOString() : null;\n  };\n\n  _proto.toISOString = function toISOString() {\n    // ie 8 return\n    // new Dayjs(this.valueOf() + this.$d.getTimezoneOffset() * 60000)\n    // .format('YYYY-MM-DDTHH:mm:ss.SSS[Z]')\n    return this.$d.toISOString();\n  };\n\n  _proto.toString = function toString() {\n    return this.$d.toUTCString();\n  };\n\n  return Dayjs;\n}();\n\nvar proto = Dayjs.prototype;\ndayjs.prototype = proto;\n[['$ms', C.MS], ['$s', C.S], ['$m', C.MIN], ['$H', C.H], ['$W', C.D], ['$M', C.M], ['$y', C.Y], ['$D', C.DATE]].forEach(function (g) {\n  proto[g[1]] = function (input) {\n    return this.$g(input, g[0], g[1]);\n  };\n});\n\ndayjs.extend = function (plugin, option) {\n  if (!plugin.$i) {\n    // install plugin only once\n    plugin(option, Dayjs, dayjs);\n    plugin.$i = true;\n  }\n\n  return dayjs;\n};\n\ndayjs.locale = parseLocale;\ndayjs.isDayjs = isDayjs;\n\ndayjs.unix = function (timestamp) {\n  return dayjs(timestamp * 1e3);\n};\n\ndayjs.en = Ls[L];\ndayjs.Ls = Ls;\ndayjs.p = {};\nexport default dayjs;","// eslint-disable-next-line import/prefer-default-export\nexport var t = function t(format) {\n  return format.replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g, function (_, a, b) {\n    return a || b.slice(1);\n  });\n};\nexport var englishFormats = {\n  LTS: 'h:mm:ss A',\n  LT: 'h:mm A',\n  L: 'MM/DD/YYYY',\n  LL: 'MMMM D, YYYY',\n  LLL: 'MMMM D, YYYY h:mm A',\n  LLLL: 'dddd, MMMM D, YYYY h:mm A'\n};\nexport var u = function u(formatStr, formats) {\n  return formatStr.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g, function (_, a, b) {\n    var B = b && b.toUpperCase();\n    return a || formats[b] || englishFormats[b] || t(formats[B]);\n  });\n};","import { FORMAT_DEFAULT } from '../../constant';\nimport { u, englishFormats } from './utils';\nexport default (function (o, c, d) {\n  var proto = c.prototype;\n  var oldFormat = proto.format;\n  d.en.formats = englishFormats;\n\n  proto.format = function (formatStr) {\n    if (formatStr === void 0) {\n      formatStr = FORMAT_DEFAULT;\n    }\n\n    var _this$$locale = this.$locale(),\n        _this$$locale$formats = _this$$locale.formats,\n        formats = _this$$locale$formats === void 0 ? {} : _this$$locale$formats;\n\n    var result = u(formatStr, formats);\n    return oldFormat.call(this, result);\n  };\n});","import * as C from '../../constant';\nexport default (function (o, c, d) {\n  o = o || {};\n  var proto = c.prototype;\n  var relObj = {\n    future: 'in %s',\n    past: '%s ago',\n    s: 'a few seconds',\n    m: 'a minute',\n    mm: '%d minutes',\n    h: 'an hour',\n    hh: '%d hours',\n    d: 'a day',\n    dd: '%d days',\n    M: 'a month',\n    MM: '%d months',\n    y: 'a year',\n    yy: '%d years'\n  };\n  d.en.relativeTime = relObj;\n\n  proto.fromToBase = function (input, withoutSuffix, instance, isFrom, postFormat) {\n    var loc = instance.$locale().relativeTime || relObj;\n    var T = o.thresholds || [{\n      l: 's',\n      r: 44,\n      d: C.S\n    }, {\n      l: 'm',\n      r: 89\n    }, {\n      l: 'mm',\n      r: 44,\n      d: C.MIN\n    }, {\n      l: 'h',\n      r: 89\n    }, {\n      l: 'hh',\n      r: 21,\n      d: C.H\n    }, {\n      l: 'd',\n      r: 35\n    }, {\n      l: 'dd',\n      r: 25,\n      d: C.D\n    }, {\n      l: 'M',\n      r: 45\n    }, {\n      l: 'MM',\n      r: 10,\n      d: C.M\n    }, {\n      l: 'y',\n      r: 17\n    }, {\n      l: 'yy',\n      d: C.Y\n    }];\n    var Tl = T.length;\n    var result;\n    var out;\n    var isFuture;\n\n    for (var i = 0; i < Tl; i += 1) {\n      var t = T[i];\n\n      if (t.d) {\n        result = isFrom ? d(input).diff(instance, t.d, true) : instance.diff(input, t.d, true);\n      }\n\n      var abs = (o.rounding || Math.round)(Math.abs(result));\n      isFuture = result > 0;\n\n      if (abs <= t.r || !t.r) {\n        if (abs <= 1 && i > 0) t = T[i - 1]; // 1 minutes -> a minute, 0 seconds -> 0 second\n\n        var format = loc[t.l];\n\n        if (postFormat) {\n          abs = postFormat(\"\" + abs);\n        }\n\n        if (typeof format === 'string') {\n          out = format.replace('%d', abs);\n        } else {\n          out = format(abs, withoutSuffix, t.l, isFuture);\n        }\n\n        break;\n      }\n    }\n\n    if (withoutSuffix) return out;\n    var pastOrFuture = isFuture ? loc.future : loc.past;\n\n    if (typeof pastOrFuture === 'function') {\n      return pastOrFuture(out);\n    }\n\n    return pastOrFuture.replace('%s', out);\n  };\n\n  function fromTo(input, withoutSuffix, instance, isFrom) {\n    return proto.fromToBase(input, withoutSuffix, instance, isFrom);\n  }\n\n  proto.to = function (input, withoutSuffix) {\n    return fromTo(input, withoutSuffix, this, true);\n  };\n\n  proto.from = function (input, withoutSuffix) {\n    return fromTo(input, withoutSuffix, this);\n  };\n\n  var makeNow = function makeNow(thisDay) {\n    return thisDay.$u ? d.utc() : d();\n  };\n\n  proto.toNow = function (withoutSuffix) {\n    return this.to(makeNow(this), withoutSuffix);\n  };\n\n  proto.fromNow = function (withoutSuffix) {\n    return this.from(makeNow(this), withoutSuffix);\n  };\n});","/*!\n  * shared v9.8.0\n  * (c) 2023 kazuya kawaguchi\n  * Released under the MIT License.\n  */\n/**\n * Original Utilities\n * written by kazuya kawaguchi\n */\nconst inBrowser = typeof window !== 'undefined';\nlet mark;\nlet measure;\nif ((process.env.NODE_ENV !== 'production')) {\n    const perf = inBrowser && window.performance;\n    if (perf &&\n        perf.mark &&\n        perf.measure &&\n        perf.clearMarks &&\n        // @ts-ignore browser compat\n        perf.clearMeasures) {\n        mark = (tag) => {\n            perf.mark(tag);\n        };\n        measure = (name, startTag, endTag) => {\n            perf.measure(name, startTag, endTag);\n            perf.clearMarks(startTag);\n            perf.clearMarks(endTag);\n        };\n    }\n}\nconst RE_ARGS = /\\{([0-9a-zA-Z]+)\\}/g;\n/* eslint-disable */\nfunction format(message, ...args) {\n    if (args.length === 1 && isObject(args[0])) {\n        args = args[0];\n    }\n    if (!args || !args.hasOwnProperty) {\n        args = {};\n    }\n    return message.replace(RE_ARGS, (match, identifier) => {\n        return args.hasOwnProperty(identifier) ? args[identifier] : '';\n    });\n}\nconst makeSymbol = (name, shareable = false) => !shareable ? Symbol(name) : Symbol.for(name);\nconst generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({ l: locale, k: key, s: source });\nconst friendlyJSONstringify = (json) => JSON.stringify(json)\n    .replace(/\\u2028/g, '\\\\u2028')\n    .replace(/\\u2029/g, '\\\\u2029')\n    .replace(/\\u0027/g, '\\\\u0027');\nconst isNumber = (val) => typeof val === 'number' && isFinite(val);\nconst isDate = (val) => toTypeString(val) === '[object Date]';\nconst isRegExp = (val) => toTypeString(val) === '[object RegExp]';\nconst isEmptyObject = (val) => isPlainObject(val) && Object.keys(val).length === 0;\nconst assign = Object.assign;\nlet _globalThis;\nconst getGlobalThis = () => {\n    // prettier-ignore\n    return (_globalThis ||\n        (_globalThis =\n            typeof globalThis !== 'undefined'\n                ? globalThis\n                : typeof self !== 'undefined'\n                    ? self\n                    : typeof window !== 'undefined'\n                        ? window\n                        : typeof global !== 'undefined'\n                            ? global\n                            : {}));\n};\nfunction escapeHtml(rawText) {\n    return rawText\n        .replace(/</g, '&lt;')\n        .replace(/>/g, '&gt;')\n        .replace(/\"/g, '&quot;')\n        .replace(/'/g, '&apos;');\n}\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn(obj, key) {\n    return hasOwnProperty.call(obj, key);\n}\n/* eslint-enable */\n/**\n * Useful Utilities By Evan you\n * Modified by kazuya kawaguchi\n * MIT License\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/index.ts\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/codeframe.ts\n */\nconst isArray = Array.isArray;\nconst isFunction = (val) => typeof val === 'function';\nconst isString = (val) => typeof val === 'string';\nconst isBoolean = (val) => typeof val === 'boolean';\nconst isSymbol = (val) => typeof val === 'symbol';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isObject = (val) => val !== null && typeof val === 'object';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isPromise = (val) => {\n    return isObject(val) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst isPlainObject = (val) => {\n    if (!isObject(val))\n        return false;\n    const proto = Object.getPrototypeOf(val);\n    return proto === null || proto.constructor === Object;\n};\n// for converting list and named values to displayed strings.\nconst toDisplayString = (val) => {\n    return val == null\n        ? ''\n        : isArray(val) || (isPlainObject(val) && val.toString === objectToString)\n            ? JSON.stringify(val, null, 2)\n            : String(val);\n};\nfunction join(items, separator = '') {\n    return items.reduce((str, item, index) => (index === 0 ? str + item : str + separator + item), '');\n}\nconst RANGE = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n    const lines = source.split(/\\r?\\n/);\n    let count = 0;\n    const res = [];\n    for (let i = 0; i < lines.length; i++) {\n        count += lines[i].length + 1;\n        if (count >= start) {\n            for (let j = i - RANGE; j <= i + RANGE || end > count; j++) {\n                if (j < 0 || j >= lines.length)\n                    continue;\n                const line = j + 1;\n                res.push(`${line}${' '.repeat(3 - String(line).length)}|  ${lines[j]}`);\n                const lineLength = lines[j].length;\n                if (j === i) {\n                    // push underline\n                    const pad = start - (count - lineLength) + 1;\n                    const length = Math.max(1, end > count ? lineLength - pad : end - start);\n                    res.push(`   |  ` + ' '.repeat(pad) + '^'.repeat(length));\n                }\n                else if (j > i) {\n                    if (end > count) {\n                        const length = Math.max(Math.min(end - count, lineLength), 1);\n                        res.push(`   |  ` + '^'.repeat(length));\n                    }\n                    count += lineLength + 1;\n                }\n            }\n            break;\n        }\n    }\n    return res.join('\\n');\n}\nfunction incrementer(code) {\n    let current = code;\n    return () => ++current;\n}\n\nfunction warn(msg, err) {\n    if (typeof console !== 'undefined') {\n        console.warn(`[intlify] ` + msg);\n        /* istanbul ignore if */\n        if (err) {\n            console.warn(err.stack);\n        }\n    }\n}\nconst hasWarned = {};\nfunction warnOnce(msg) {\n    if (!hasWarned[msg]) {\n        hasWarned[msg] = true;\n        warn(msg);\n    }\n}\n\n/**\n * Event emitter, forked from the below:\n * - original repository url: https://github.com/developit/mitt\n * - code url: https://github.com/developit/mitt/blob/master/src/index.ts\n * - author: Jason Miller (https://github.com/developit)\n * - license: MIT\n */\n/**\n * Create a event emitter\n *\n * @returns An event emitter\n */\nfunction createEmitter() {\n    const events = new Map();\n    const emitter = {\n        events,\n        on(event, handler) {\n            const handlers = events.get(event);\n            const added = handlers && handlers.push(handler);\n            if (!added) {\n                events.set(event, [handler]);\n            }\n        },\n        off(event, handler) {\n            const handlers = events.get(event);\n            if (handlers) {\n                handlers.splice(handlers.indexOf(handler) >>> 0, 1);\n            }\n        },\n        emit(event, payload) {\n            (events.get(event) || [])\n                .slice()\n                .map(handler => handler(payload));\n            (events.get('*') || [])\n                .slice()\n                .map(handler => handler(event, payload));\n        }\n    };\n    return emitter;\n}\n\nconst isNotObjectOrIsArray = (val) => !isObject(val) || isArray(val);\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nfunction deepCopy(src, des) {\n    // src and des should both be objects, and none of them can be a array\n    if (isNotObjectOrIsArray(src) || isNotObjectOrIsArray(des)) {\n        throw new Error('Invalid value');\n    }\n    for (const key in src) {\n        if (hasOwn(src, key)) {\n            if (isNotObjectOrIsArray(src[key]) || isNotObjectOrIsArray(des[key])) {\n                // replace with src[key] when:\n                // src[key] or des[key] is not an object, or\n                // src[key] or des[key] is an array\n                des[key] = src[key];\n            }\n            else {\n                // src[key] and des[key] are both objects, merge them\n                deepCopy(src[key], des[key]);\n            }\n        }\n    }\n}\n\nexport { assign, createEmitter, deepCopy, escapeHtml, format, friendlyJSONstringify, generateCodeFrame, generateFormatCacheKey, getGlobalThis, hasOwn, inBrowser, incrementer, isArray, isBoolean, isDate, isEmptyObject, isFunction, isNumber, isObject, isPlainObject, isPromise, isRegExp, isString, isSymbol, join, makeSymbol, mark, measure, objectToString, toDisplayString, toTypeString, warn, warnOnce };\n","/*!\n  * message-compiler v9.8.0\n  * (c) 2023 kazuya kawaguchi\n  * Released under the MIT License.\n  */\nconst LOCATION_STUB = {\n    start: { line: 1, column: 1, offset: 0 },\n    end: { line: 1, column: 1, offset: 0 }\n};\nfunction createPosition(line, column, offset) {\n    return { line, column, offset };\n}\nfunction createLocation(start, end, source) {\n    const loc = { start, end };\n    if (source != null) {\n        loc.source = source;\n    }\n    return loc;\n}\n\n/**\n * Original Utilities\n * written by kazuya kawaguchi\n */\nconst RE_ARGS = /\\{([0-9a-zA-Z]+)\\}/g;\n/* eslint-disable */\nfunction format(message, ...args) {\n    if (args.length === 1 && isObject(args[0])) {\n        args = args[0];\n    }\n    if (!args || !args.hasOwnProperty) {\n        args = {};\n    }\n    return message.replace(RE_ARGS, (match, identifier) => {\n        return args.hasOwnProperty(identifier) ? args[identifier] : '';\n    });\n}\nconst assign = Object.assign;\nconst isString = (val) => typeof val === 'string';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isObject = (val) => val !== null && typeof val === 'object';\nfunction join(items, separator = '') {\n    return items.reduce((str, item, index) => (index === 0 ? str + item : str + separator + item), '');\n}\n\nconst CompileErrorCodes = {\n    // tokenizer error codes\n    EXPECTED_TOKEN: 1,\n    INVALID_TOKEN_IN_PLACEHOLDER: 2,\n    UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER: 3,\n    UNKNOWN_ESCAPE_SEQUENCE: 4,\n    INVALID_UNICODE_ESCAPE_SEQUENCE: 5,\n    UNBALANCED_CLOSING_BRACE: 6,\n    UNTERMINATED_CLOSING_BRACE: 7,\n    EMPTY_PLACEHOLDER: 8,\n    NOT_ALLOW_NEST_PLACEHOLDER: 9,\n    INVALID_LINKED_FORMAT: 10,\n    // parser error codes\n    MUST_HAVE_MESSAGES_IN_PLURAL: 11,\n    UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,\n    UNEXPECTED_EMPTY_LINKED_KEY: 13,\n    UNEXPECTED_LEXICAL_ANALYSIS: 14,\n    // generator error codes\n    UNHANDLED_CODEGEN_NODE_TYPE: 15,\n    // minifier error codes\n    UNHANDLED_MINIFIER_NODE_TYPE: 16,\n    // Special value for higher-order compilers to pick up the last code\n    // to avoid collision of error codes. This should always be kept as the last\n    // item.\n    __EXTEND_POINT__: 17\n};\n/** @internal */\nconst errorMessages = {\n    // tokenizer error messages\n    [CompileErrorCodes.EXPECTED_TOKEN]: `Expected token: '{0}'`,\n    [CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER]: `Invalid token in placeholder: '{0}'`,\n    [CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]: `Unterminated single quote in placeholder`,\n    [CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE]: `Unknown escape sequence: \\\\{0}`,\n    [CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE]: `Invalid unicode escape sequence: {0}`,\n    [CompileErrorCodes.UNBALANCED_CLOSING_BRACE]: `Unbalanced closing brace`,\n    [CompileErrorCodes.UNTERMINATED_CLOSING_BRACE]: `Unterminated closing brace`,\n    [CompileErrorCodes.EMPTY_PLACEHOLDER]: `Empty placeholder`,\n    [CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER]: `Not allowed nest placeholder`,\n    [CompileErrorCodes.INVALID_LINKED_FORMAT]: `Invalid linked format`,\n    // parser error messages\n    [CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`,\n    [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`,\n    [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`,\n    [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`,\n    // generator error messages\n    [CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE]: `unhandled codegen node type: '{0}'`,\n    // minimizer error messages\n    [CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE]: `unhandled mimifier node type: '{0}'`\n};\nfunction createCompileError(code, loc, options = {}) {\n    const { domain, messages, args } = options;\n    const msg = format((messages || errorMessages)[code] || '', ...(args || []))\n        ;\n    const error = new SyntaxError(String(msg));\n    error.code = code;\n    if (loc) {\n        error.location = loc;\n    }\n    error.domain = domain;\n    return error;\n}\n/** @internal */\nfunction defaultOnError(error) {\n    throw error;\n}\n\nconst RE_HTML_TAG = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\nconst detectHtmlTag = (source) => RE_HTML_TAG.test(source);\n\nconst CHAR_SP = ' ';\nconst CHAR_CR = '\\r';\nconst CHAR_LF = '\\n';\nconst CHAR_LS = String.fromCharCode(0x2028);\nconst CHAR_PS = String.fromCharCode(0x2029);\nfunction createScanner(str) {\n    const _buf = str;\n    let _index = 0;\n    let _line = 1;\n    let _column = 1;\n    let _peekOffset = 0;\n    const isCRLF = (index) => _buf[index] === CHAR_CR && _buf[index + 1] === CHAR_LF;\n    const isLF = (index) => _buf[index] === CHAR_LF;\n    const isPS = (index) => _buf[index] === CHAR_PS;\n    const isLS = (index) => _buf[index] === CHAR_LS;\n    const isLineEnd = (index) => isCRLF(index) || isLF(index) || isPS(index) || isLS(index);\n    const index = () => _index;\n    const line = () => _line;\n    const column = () => _column;\n    const peekOffset = () => _peekOffset;\n    const charAt = (offset) => isCRLF(offset) || isPS(offset) || isLS(offset) ? CHAR_LF : _buf[offset];\n    const currentChar = () => charAt(_index);\n    const currentPeek = () => charAt(_index + _peekOffset);\n    function next() {\n        _peekOffset = 0;\n        if (isLineEnd(_index)) {\n            _line++;\n            _column = 0;\n        }\n        if (isCRLF(_index)) {\n            _index++;\n        }\n        _index++;\n        _column++;\n        return _buf[_index];\n    }\n    function peek() {\n        if (isCRLF(_index + _peekOffset)) {\n            _peekOffset++;\n        }\n        _peekOffset++;\n        return _buf[_index + _peekOffset];\n    }\n    function reset() {\n        _index = 0;\n        _line = 1;\n        _column = 1;\n        _peekOffset = 0;\n    }\n    function resetPeek(offset = 0) {\n        _peekOffset = offset;\n    }\n    function skipToPeek() {\n        const target = _index + _peekOffset;\n        // eslint-disable-next-line no-unmodified-loop-condition\n        while (target !== _index) {\n            next();\n        }\n        _peekOffset = 0;\n    }\n    return {\n        index,\n        line,\n        column,\n        peekOffset,\n        charAt,\n        currentChar,\n        currentPeek,\n        next,\n        peek,\n        reset,\n        resetPeek,\n        skipToPeek\n    };\n}\n\nconst EOF = undefined;\nconst DOT = '.';\nconst LITERAL_DELIMITER = \"'\";\nconst ERROR_DOMAIN$3 = 'tokenizer';\nfunction createTokenizer(source, options = {}) {\n    const location = options.location !== false;\n    const _scnr = createScanner(source);\n    const currentOffset = () => _scnr.index();\n    const currentPosition = () => createPosition(_scnr.line(), _scnr.column(), _scnr.index());\n    const _initLoc = currentPosition();\n    const _initOffset = currentOffset();\n    const _context = {\n        currentType: 14 /* TokenTypes.EOF */,\n        offset: _initOffset,\n        startLoc: _initLoc,\n        endLoc: _initLoc,\n        lastType: 14 /* TokenTypes.EOF */,\n        lastOffset: _initOffset,\n        lastStartLoc: _initLoc,\n        lastEndLoc: _initLoc,\n        braceNest: 0,\n        inLinked: false,\n        text: ''\n    };\n    const context = () => _context;\n    const { onError } = options;\n    function emitError(code, pos, offset, ...args) {\n        const ctx = context();\n        pos.column += offset;\n        pos.offset += offset;\n        if (onError) {\n            const loc = location ? createLocation(ctx.startLoc, pos) : null;\n            const err = createCompileError(code, loc, {\n                domain: ERROR_DOMAIN$3,\n                args\n            });\n            onError(err);\n        }\n    }\n    function getToken(context, type, value) {\n        context.endLoc = currentPosition();\n        context.currentType = type;\n        const token = { type };\n        if (location) {\n            token.loc = createLocation(context.startLoc, context.endLoc);\n        }\n        if (value != null) {\n            token.value = value;\n        }\n        return token;\n    }\n    const getEndToken = (context) => getToken(context, 14 /* TokenTypes.EOF */);\n    function eat(scnr, ch) {\n        if (scnr.currentChar() === ch) {\n            scnr.next();\n            return ch;\n        }\n        else {\n            emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\n            return '';\n        }\n    }\n    function peekSpaces(scnr) {\n        let buf = '';\n        while (scnr.currentPeek() === CHAR_SP || scnr.currentPeek() === CHAR_LF) {\n            buf += scnr.currentPeek();\n            scnr.peek();\n        }\n        return buf;\n    }\n    function skipSpaces(scnr) {\n        const buf = peekSpaces(scnr);\n        scnr.skipToPeek();\n        return buf;\n    }\n    function isIdentifierStart(ch) {\n        if (ch === EOF) {\n            return false;\n        }\n        const cc = ch.charCodeAt(0);\n        return ((cc >= 97 && cc <= 122) || // a-z\n            (cc >= 65 && cc <= 90) || // A-Z\n            cc === 95 // _\n        );\n    }\n    function isNumberStart(ch) {\n        if (ch === EOF) {\n            return false;\n        }\n        const cc = ch.charCodeAt(0);\n        return cc >= 48 && cc <= 57; // 0-9\n    }\n    function isNamedIdentifierStart(scnr, context) {\n        const { currentType } = context;\n        if (currentType !== 2 /* TokenTypes.BraceLeft */) {\n            return false;\n        }\n        peekSpaces(scnr);\n        const ret = isIdentifierStart(scnr.currentPeek());\n        scnr.resetPeek();\n        return ret;\n    }\n    function isListIdentifierStart(scnr, context) {\n        const { currentType } = context;\n        if (currentType !== 2 /* TokenTypes.BraceLeft */) {\n            return false;\n        }\n        peekSpaces(scnr);\n        const ch = scnr.currentPeek() === '-' ? scnr.peek() : scnr.currentPeek();\n        const ret = isNumberStart(ch);\n        scnr.resetPeek();\n        return ret;\n    }\n    function isLiteralStart(scnr, context) {\n        const { currentType } = context;\n        if (currentType !== 2 /* TokenTypes.BraceLeft */) {\n            return false;\n        }\n        peekSpaces(scnr);\n        const ret = scnr.currentPeek() === LITERAL_DELIMITER;\n        scnr.resetPeek();\n        return ret;\n    }\n    function isLinkedDotStart(scnr, context) {\n        const { currentType } = context;\n        if (currentType !== 8 /* TokenTypes.LinkedAlias */) {\n            return false;\n        }\n        peekSpaces(scnr);\n        const ret = scnr.currentPeek() === \".\" /* TokenChars.LinkedDot */;\n        scnr.resetPeek();\n        return ret;\n    }\n    function isLinkedModifierStart(scnr, context) {\n        const { currentType } = context;\n        if (currentType !== 9 /* TokenTypes.LinkedDot */) {\n            return false;\n        }\n        peekSpaces(scnr);\n        const ret = isIdentifierStart(scnr.currentPeek());\n        scnr.resetPeek();\n        return ret;\n    }\n    function isLinkedDelimiterStart(scnr, context) {\n        const { currentType } = context;\n        if (!(currentType === 8 /* TokenTypes.LinkedAlias */ ||\n            currentType === 12 /* TokenTypes.LinkedModifier */)) {\n            return false;\n        }\n        peekSpaces(scnr);\n        const ret = scnr.currentPeek() === \":\" /* TokenChars.LinkedDelimiter */;\n        scnr.resetPeek();\n        return ret;\n    }\n    function isLinkedReferStart(scnr, context) {\n        const { currentType } = context;\n        if (currentType !== 10 /* TokenTypes.LinkedDelimiter */) {\n            return false;\n        }\n        const fn = () => {\n            const ch = scnr.currentPeek();\n            if (ch === \"{\" /* TokenChars.BraceLeft */) {\n                return isIdentifierStart(scnr.peek());\n            }\n            else if (ch === \"@\" /* TokenChars.LinkedAlias */ ||\n                ch === \"%\" /* TokenChars.Modulo */ ||\n                ch === \"|\" /* TokenChars.Pipe */ ||\n                ch === \":\" /* TokenChars.LinkedDelimiter */ ||\n                ch === \".\" /* TokenChars.LinkedDot */ ||\n                ch === CHAR_SP ||\n                !ch) {\n                return false;\n            }\n            else if (ch === CHAR_LF) {\n                scnr.peek();\n                return fn();\n            }\n            else {\n                // other characters\n                return isIdentifierStart(ch);\n            }\n        };\n        const ret = fn();\n        scnr.resetPeek();\n        return ret;\n    }\n    function isPluralStart(scnr) {\n        peekSpaces(scnr);\n        const ret = scnr.currentPeek() === \"|\" /* TokenChars.Pipe */;\n        scnr.resetPeek();\n        return ret;\n    }\n    function detectModuloStart(scnr) {\n        const spaces = peekSpaces(scnr);\n        const ret = scnr.currentPeek() === \"%\" /* TokenChars.Modulo */ &&\n            scnr.peek() === \"{\" /* TokenChars.BraceLeft */;\n        scnr.resetPeek();\n        return {\n            isModulo: ret,\n            hasSpace: spaces.length > 0\n        };\n    }\n    function isTextStart(scnr, reset = true) {\n        const fn = (hasSpace = false, prev = '', detectModulo = false) => {\n            const ch = scnr.currentPeek();\n            if (ch === \"{\" /* TokenChars.BraceLeft */) {\n                return prev === \"%\" /* TokenChars.Modulo */ ? false : hasSpace;\n            }\n            else if (ch === \"@\" /* TokenChars.LinkedAlias */ || !ch) {\n                return prev === \"%\" /* TokenChars.Modulo */ ? true : hasSpace;\n            }\n            else if (ch === \"%\" /* TokenChars.Modulo */) {\n                scnr.peek();\n                return fn(hasSpace, \"%\" /* TokenChars.Modulo */, true);\n            }\n            else if (ch === \"|\" /* TokenChars.Pipe */) {\n                return prev === \"%\" /* TokenChars.Modulo */ || detectModulo\n                    ? true\n                    : !(prev === CHAR_SP || prev === CHAR_LF);\n            }\n            else if (ch === CHAR_SP) {\n                scnr.peek();\n                return fn(true, CHAR_SP, detectModulo);\n            }\n            else if (ch === CHAR_LF) {\n                scnr.peek();\n                return fn(true, CHAR_LF, detectModulo);\n            }\n            else {\n                return true;\n            }\n        };\n        const ret = fn();\n        reset && scnr.resetPeek();\n        return ret;\n    }\n    function takeChar(scnr, fn) {\n        const ch = scnr.currentChar();\n        if (ch === EOF) {\n            return EOF;\n        }\n        if (fn(ch)) {\n            scnr.next();\n            return ch;\n        }\n        return null;\n    }\n    function takeIdentifierChar(scnr) {\n        const closure = (ch) => {\n            const cc = ch.charCodeAt(0);\n            return ((cc >= 97 && cc <= 122) || // a-z\n                (cc >= 65 && cc <= 90) || // A-Z\n                (cc >= 48 && cc <= 57) || // 0-9\n                cc === 95 || // _\n                cc === 36 // $\n            );\n        };\n        return takeChar(scnr, closure);\n    }\n    function takeDigit(scnr) {\n        const closure = (ch) => {\n            const cc = ch.charCodeAt(0);\n            return cc >= 48 && cc <= 57; // 0-9\n        };\n        return takeChar(scnr, closure);\n    }\n    function takeHexDigit(scnr) {\n        const closure = (ch) => {\n            const cc = ch.charCodeAt(0);\n            return ((cc >= 48 && cc <= 57) || // 0-9\n                (cc >= 65 && cc <= 70) || // A-F\n                (cc >= 97 && cc <= 102)); // a-f\n        };\n        return takeChar(scnr, closure);\n    }\n    function getDigits(scnr) {\n        let ch = '';\n        let num = '';\n        while ((ch = takeDigit(scnr))) {\n            num += ch;\n        }\n        return num;\n    }\n    function readModulo(scnr) {\n        skipSpaces(scnr);\n        const ch = scnr.currentChar();\n        if (ch !== \"%\" /* TokenChars.Modulo */) {\n            emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\n        }\n        scnr.next();\n        return \"%\" /* TokenChars.Modulo */;\n    }\n    function readText(scnr) {\n        let buf = '';\n        while (true) {\n            const ch = scnr.currentChar();\n            if (ch === \"{\" /* TokenChars.BraceLeft */ ||\n                ch === \"}\" /* TokenChars.BraceRight */ ||\n                ch === \"@\" /* TokenChars.LinkedAlias */ ||\n                ch === \"|\" /* TokenChars.Pipe */ ||\n                !ch) {\n                break;\n            }\n            else if (ch === \"%\" /* TokenChars.Modulo */) {\n                if (isTextStart(scnr)) {\n                    buf += ch;\n                    scnr.next();\n                }\n                else {\n                    break;\n                }\n            }\n            else if (ch === CHAR_SP || ch === CHAR_LF) {\n                if (isTextStart(scnr)) {\n                    buf += ch;\n                    scnr.next();\n                }\n                else if (isPluralStart(scnr)) {\n                    break;\n                }\n                else {\n                    buf += ch;\n                    scnr.next();\n                }\n            }\n            else {\n                buf += ch;\n                scnr.next();\n            }\n        }\n        return buf;\n    }\n    function readNamedIdentifier(scnr) {\n        skipSpaces(scnr);\n        let ch = '';\n        let name = '';\n        while ((ch = takeIdentifierChar(scnr))) {\n            name += ch;\n        }\n        if (scnr.currentChar() === EOF) {\n            emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n        }\n        return name;\n    }\n    function readListIdentifier(scnr) {\n        skipSpaces(scnr);\n        let value = '';\n        if (scnr.currentChar() === '-') {\n            scnr.next();\n            value += `-${getDigits(scnr)}`;\n        }\n        else {\n            value += getDigits(scnr);\n        }\n        if (scnr.currentChar() === EOF) {\n            emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n        }\n        return value;\n    }\n    function readLiteral(scnr) {\n        skipSpaces(scnr);\n        eat(scnr, `\\'`);\n        let ch = '';\n        let literal = '';\n        const fn = (x) => x !== LITERAL_DELIMITER && x !== CHAR_LF;\n        while ((ch = takeChar(scnr, fn))) {\n            if (ch === '\\\\') {\n                literal += readEscapeSequence(scnr);\n            }\n            else {\n                literal += ch;\n            }\n        }\n        const current = scnr.currentChar();\n        if (current === CHAR_LF || current === EOF) {\n            emitError(CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER, currentPosition(), 0);\n            // TODO: Is it correct really?\n            if (current === CHAR_LF) {\n                scnr.next();\n                eat(scnr, `\\'`);\n            }\n            return literal;\n        }\n        eat(scnr, `\\'`);\n        return literal;\n    }\n    function readEscapeSequence(scnr) {\n        const ch = scnr.currentChar();\n        switch (ch) {\n            case '\\\\':\n            case `\\'`:\n                scnr.next();\n                return `\\\\${ch}`;\n            case 'u':\n                return readUnicodeEscapeSequence(scnr, ch, 4);\n            case 'U':\n                return readUnicodeEscapeSequence(scnr, ch, 6);\n            default:\n                emitError(CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE, currentPosition(), 0, ch);\n                return '';\n        }\n    }\n    function readUnicodeEscapeSequence(scnr, unicode, digits) {\n        eat(scnr, unicode);\n        let sequence = '';\n        for (let i = 0; i < digits; i++) {\n            const ch = takeHexDigit(scnr);\n            if (!ch) {\n                emitError(CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE, currentPosition(), 0, `\\\\${unicode}${sequence}${scnr.currentChar()}`);\n                break;\n            }\n            sequence += ch;\n        }\n        return `\\\\${unicode}${sequence}`;\n    }\n    function readInvalidIdentifier(scnr) {\n        skipSpaces(scnr);\n        let ch = '';\n        let identifiers = '';\n        const closure = (ch) => ch !== \"{\" /* TokenChars.BraceLeft */ &&\n            ch !== \"}\" /* TokenChars.BraceRight */ &&\n            ch !== CHAR_SP &&\n            ch !== CHAR_LF;\n        while ((ch = takeChar(scnr, closure))) {\n            identifiers += ch;\n        }\n        return identifiers;\n    }\n    function readLinkedModifier(scnr) {\n        let ch = '';\n        let name = '';\n        while ((ch = takeIdentifierChar(scnr))) {\n            name += ch;\n        }\n        return name;\n    }\n    function readLinkedRefer(scnr) {\n        const fn = (detect = false, buf) => {\n            const ch = scnr.currentChar();\n            if (ch === \"{\" /* TokenChars.BraceLeft */ ||\n                ch === \"%\" /* TokenChars.Modulo */ ||\n                ch === \"@\" /* TokenChars.LinkedAlias */ ||\n                ch === \"|\" /* TokenChars.Pipe */ ||\n                ch === \"(\" /* TokenChars.ParenLeft */ ||\n                ch === \")\" /* TokenChars.ParenRight */ ||\n                !ch) {\n                return buf;\n            }\n            else if (ch === CHAR_SP) {\n                return buf;\n            }\n            else if (ch === CHAR_LF || ch === DOT) {\n                buf += ch;\n                scnr.next();\n                return fn(detect, buf);\n            }\n            else {\n                buf += ch;\n                scnr.next();\n                return fn(true, buf);\n            }\n        };\n        return fn(false, '');\n    }\n    function readPlural(scnr) {\n        skipSpaces(scnr);\n        const plural = eat(scnr, \"|\" /* TokenChars.Pipe */);\n        skipSpaces(scnr);\n        return plural;\n    }\n    // TODO: We need refactoring of token parsing ...\n    function readTokenInPlaceholder(scnr, context) {\n        let token = null;\n        const ch = scnr.currentChar();\n        switch (ch) {\n            case \"{\" /* TokenChars.BraceLeft */:\n                if (context.braceNest >= 1) {\n                    emitError(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0);\n                }\n                scnr.next();\n                token = getToken(context, 2 /* TokenTypes.BraceLeft */, \"{\" /* TokenChars.BraceLeft */);\n                skipSpaces(scnr);\n                context.braceNest++;\n                return token;\n            case \"}\" /* TokenChars.BraceRight */:\n                if (context.braceNest > 0 &&\n                    context.currentType === 2 /* TokenTypes.BraceLeft */) {\n                    emitError(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0);\n                }\n                scnr.next();\n                token = getToken(context, 3 /* TokenTypes.BraceRight */, \"}\" /* TokenChars.BraceRight */);\n                context.braceNest--;\n                context.braceNest > 0 && skipSpaces(scnr);\n                if (context.inLinked && context.braceNest === 0) {\n                    context.inLinked = false;\n                }\n                return token;\n            case \"@\" /* TokenChars.LinkedAlias */:\n                if (context.braceNest > 0) {\n                    emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n                }\n                token = readTokenInLinked(scnr, context) || getEndToken(context);\n                context.braceNest = 0;\n                return token;\n            default:\n                let validNamedIdentifier = true;\n                let validListIdentifier = true;\n                let validLiteral = true;\n                if (isPluralStart(scnr)) {\n                    if (context.braceNest > 0) {\n                        emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n                    }\n                    token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));\n                    // reset\n                    context.braceNest = 0;\n                    context.inLinked = false;\n                    return token;\n                }\n                if (context.braceNest > 0 &&\n                    (context.currentType === 5 /* TokenTypes.Named */ ||\n                        context.currentType === 6 /* TokenTypes.List */ ||\n                        context.currentType === 7 /* TokenTypes.Literal */)) {\n                    emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n                    context.braceNest = 0;\n                    return readToken(scnr, context);\n                }\n                if ((validNamedIdentifier = isNamedIdentifierStart(scnr, context))) {\n                    token = getToken(context, 5 /* TokenTypes.Named */, readNamedIdentifier(scnr));\n                    skipSpaces(scnr);\n                    return token;\n                }\n                if ((validListIdentifier = isListIdentifierStart(scnr, context))) {\n                    token = getToken(context, 6 /* TokenTypes.List */, readListIdentifier(scnr));\n                    skipSpaces(scnr);\n                    return token;\n                }\n                if ((validLiteral = isLiteralStart(scnr, context))) {\n                    token = getToken(context, 7 /* TokenTypes.Literal */, readLiteral(scnr));\n                    skipSpaces(scnr);\n                    return token;\n                }\n                if (!validNamedIdentifier && !validListIdentifier && !validLiteral) {\n                    // TODO: we should be re-designed invalid cases, when we will extend message syntax near the future ...\n                    token = getToken(context, 13 /* TokenTypes.InvalidPlace */, readInvalidIdentifier(scnr));\n                    emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value);\n                    skipSpaces(scnr);\n                    return token;\n                }\n                break;\n        }\n        return token;\n    }\n    // TODO: We need refactoring of token parsing ...\n    function readTokenInLinked(scnr, context) {\n        const { currentType } = context;\n        let token = null;\n        const ch = scnr.currentChar();\n        if ((currentType === 8 /* TokenTypes.LinkedAlias */ ||\n            currentType === 9 /* TokenTypes.LinkedDot */ ||\n            currentType === 12 /* TokenTypes.LinkedModifier */ ||\n            currentType === 10 /* TokenTypes.LinkedDelimiter */) &&\n            (ch === CHAR_LF || ch === CHAR_SP)) {\n            emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\n        }\n        switch (ch) {\n            case \"@\" /* TokenChars.LinkedAlias */:\n                scnr.next();\n                token = getToken(context, 8 /* TokenTypes.LinkedAlias */, \"@\" /* TokenChars.LinkedAlias */);\n                context.inLinked = true;\n                return token;\n            case \".\" /* TokenChars.LinkedDot */:\n                skipSpaces(scnr);\n                scnr.next();\n                return getToken(context, 9 /* TokenTypes.LinkedDot */, \".\" /* TokenChars.LinkedDot */);\n            case \":\" /* TokenChars.LinkedDelimiter */:\n                skipSpaces(scnr);\n                scnr.next();\n                return getToken(context, 10 /* TokenTypes.LinkedDelimiter */, \":\" /* TokenChars.LinkedDelimiter */);\n            default:\n                if (isPluralStart(scnr)) {\n                    token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));\n                    // reset\n                    context.braceNest = 0;\n                    context.inLinked = false;\n                    return token;\n                }\n                if (isLinkedDotStart(scnr, context) ||\n                    isLinkedDelimiterStart(scnr, context)) {\n                    skipSpaces(scnr);\n                    return readTokenInLinked(scnr, context);\n                }\n                if (isLinkedModifierStart(scnr, context)) {\n                    skipSpaces(scnr);\n                    return getToken(context, 12 /* TokenTypes.LinkedModifier */, readLinkedModifier(scnr));\n                }\n                if (isLinkedReferStart(scnr, context)) {\n                    skipSpaces(scnr);\n                    if (ch === \"{\" /* TokenChars.BraceLeft */) {\n                        // scan the placeholder\n                        return readTokenInPlaceholder(scnr, context) || token;\n                    }\n                    else {\n                        return getToken(context, 11 /* TokenTypes.LinkedKey */, readLinkedRefer(scnr));\n                    }\n                }\n                if (currentType === 8 /* TokenTypes.LinkedAlias */) {\n                    emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\n                }\n                context.braceNest = 0;\n                context.inLinked = false;\n                return readToken(scnr, context);\n        }\n    }\n    // TODO: We need refactoring of token parsing ...\n    function readToken(scnr, context) {\n        let token = { type: 14 /* TokenTypes.EOF */ };\n        if (context.braceNest > 0) {\n            return readTokenInPlaceholder(scnr, context) || getEndToken(context);\n        }\n        if (context.inLinked) {\n            return readTokenInLinked(scnr, context) || getEndToken(context);\n        }\n        const ch = scnr.currentChar();\n        switch (ch) {\n            case \"{\" /* TokenChars.BraceLeft */:\n                return readTokenInPlaceholder(scnr, context) || getEndToken(context);\n            case \"}\" /* TokenChars.BraceRight */:\n                emitError(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0);\n                scnr.next();\n                return getToken(context, 3 /* TokenTypes.BraceRight */, \"}\" /* TokenChars.BraceRight */);\n            case \"@\" /* TokenChars.LinkedAlias */:\n                return readTokenInLinked(scnr, context) || getEndToken(context);\n            default:\n                if (isPluralStart(scnr)) {\n                    token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));\n                    // reset\n                    context.braceNest = 0;\n                    context.inLinked = false;\n                    return token;\n                }\n                const { isModulo, hasSpace } = detectModuloStart(scnr);\n                if (isModulo) {\n                    return hasSpace\n                        ? getToken(context, 0 /* TokenTypes.Text */, readText(scnr))\n                        : getToken(context, 4 /* TokenTypes.Modulo */, readModulo(scnr));\n                }\n                if (isTextStart(scnr)) {\n                    return getToken(context, 0 /* TokenTypes.Text */, readText(scnr));\n                }\n                break;\n        }\n        return token;\n    }\n    function nextToken() {\n        const { currentType, offset, startLoc, endLoc } = _context;\n        _context.lastType = currentType;\n        _context.lastOffset = offset;\n        _context.lastStartLoc = startLoc;\n        _context.lastEndLoc = endLoc;\n        _context.offset = currentOffset();\n        _context.startLoc = currentPosition();\n        if (_scnr.currentChar() === EOF) {\n            return getToken(_context, 14 /* TokenTypes.EOF */);\n        }\n        return readToken(_scnr, _context);\n    }\n    return {\n        nextToken,\n        currentOffset,\n        currentPosition,\n        context\n    };\n}\n\nconst ERROR_DOMAIN$2 = 'parser';\n// Backslash backslash, backslash quote, uHHHH, UHHHHHH.\nconst KNOWN_ESCAPES = /(?:\\\\\\\\|\\\\'|\\\\u([0-9a-fA-F]{4})|\\\\U([0-9a-fA-F]{6}))/g;\nfunction fromEscapeSequence(match, codePoint4, codePoint6) {\n    switch (match) {\n        case `\\\\\\\\`:\n            return `\\\\`;\n        case `\\\\\\'`:\n            return `\\'`;\n        default: {\n            const codePoint = parseInt(codePoint4 || codePoint6, 16);\n            if (codePoint <= 0xd7ff || codePoint >= 0xe000) {\n                return String.fromCodePoint(codePoint);\n            }\n            // invalid ...\n            // Replace them with U+FFFD REPLACEMENT CHARACTER.\n            return '�';\n        }\n    }\n}\nfunction createParser(options = {}) {\n    const location = options.location !== false;\n    const { onError } = options;\n    function emitError(tokenzer, code, start, offset, ...args) {\n        const end = tokenzer.currentPosition();\n        end.offset += offset;\n        end.column += offset;\n        if (onError) {\n            const loc = location ? createLocation(start, end) : null;\n            const err = createCompileError(code, loc, {\n                domain: ERROR_DOMAIN$2,\n                args\n            });\n            onError(err);\n        }\n    }\n    function startNode(type, offset, loc) {\n        const node = { type };\n        if (location) {\n            node.start = offset;\n            node.end = offset;\n            node.loc = { start: loc, end: loc };\n        }\n        return node;\n    }\n    function endNode(node, offset, pos, type) {\n        if (type) {\n            node.type = type;\n        }\n        if (location) {\n            node.end = offset;\n            if (node.loc) {\n                node.loc.end = pos;\n            }\n        }\n    }\n    function parseText(tokenizer, value) {\n        const context = tokenizer.context();\n        const node = startNode(3 /* NodeTypes.Text */, context.offset, context.startLoc);\n        node.value = value;\n        endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return node;\n    }\n    function parseList(tokenizer, index) {\n        const context = tokenizer.context();\n        const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\n        const node = startNode(5 /* NodeTypes.List */, offset, loc);\n        node.index = parseInt(index, 10);\n        tokenizer.nextToken(); // skip brach right\n        endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return node;\n    }\n    function parseNamed(tokenizer, key) {\n        const context = tokenizer.context();\n        const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\n        const node = startNode(4 /* NodeTypes.Named */, offset, loc);\n        node.key = key;\n        tokenizer.nextToken(); // skip brach right\n        endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return node;\n    }\n    function parseLiteral(tokenizer, value) {\n        const context = tokenizer.context();\n        const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\n        const node = startNode(9 /* NodeTypes.Literal */, offset, loc);\n        node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence);\n        tokenizer.nextToken(); // skip brach right\n        endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return node;\n    }\n    function parseLinkedModifier(tokenizer) {\n        const token = tokenizer.nextToken();\n        const context = tokenizer.context();\n        const { lastOffset: offset, lastStartLoc: loc } = context; // get linked dot loc\n        const node = startNode(8 /* NodeTypes.LinkedModifier */, offset, loc);\n        if (token.type !== 12 /* TokenTypes.LinkedModifier */) {\n            // empty modifier\n            emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0);\n            node.value = '';\n            endNode(node, offset, loc);\n            return {\n                nextConsumeToken: token,\n                node\n            };\n        }\n        // check token\n        if (token.value == null) {\n            emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n        }\n        node.value = token.value || '';\n        endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return {\n            node\n        };\n    }\n    function parseLinkedKey(tokenizer, value) {\n        const context = tokenizer.context();\n        const node = startNode(7 /* NodeTypes.LinkedKey */, context.offset, context.startLoc);\n        node.value = value;\n        endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return node;\n    }\n    function parseLinked(tokenizer) {\n        const context = tokenizer.context();\n        const linkedNode = startNode(6 /* NodeTypes.Linked */, context.offset, context.startLoc);\n        let token = tokenizer.nextToken();\n        if (token.type === 9 /* TokenTypes.LinkedDot */) {\n            const parsed = parseLinkedModifier(tokenizer);\n            linkedNode.modifier = parsed.node;\n            token = parsed.nextConsumeToken || tokenizer.nextToken();\n        }\n        // asset check token\n        if (token.type !== 10 /* TokenTypes.LinkedDelimiter */) {\n            emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n        }\n        token = tokenizer.nextToken();\n        // skip brace left\n        if (token.type === 2 /* TokenTypes.BraceLeft */) {\n            token = tokenizer.nextToken();\n        }\n        switch (token.type) {\n            case 11 /* TokenTypes.LinkedKey */:\n                if (token.value == null) {\n                    emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n                }\n                linkedNode.key = parseLinkedKey(tokenizer, token.value || '');\n                break;\n            case 5 /* TokenTypes.Named */:\n                if (token.value == null) {\n                    emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n                }\n                linkedNode.key = parseNamed(tokenizer, token.value || '');\n                break;\n            case 6 /* TokenTypes.List */:\n                if (token.value == null) {\n                    emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n                }\n                linkedNode.key = parseList(tokenizer, token.value || '');\n                break;\n            case 7 /* TokenTypes.Literal */:\n                if (token.value == null) {\n                    emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n                }\n                linkedNode.key = parseLiteral(tokenizer, token.value || '');\n                break;\n            default:\n                // empty key\n                emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0);\n                const nextContext = tokenizer.context();\n                const emptyLinkedKeyNode = startNode(7 /* NodeTypes.LinkedKey */, nextContext.offset, nextContext.startLoc);\n                emptyLinkedKeyNode.value = '';\n                endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc);\n                linkedNode.key = emptyLinkedKeyNode;\n                endNode(linkedNode, nextContext.offset, nextContext.startLoc);\n                return {\n                    nextConsumeToken: token,\n                    node: linkedNode\n                };\n        }\n        endNode(linkedNode, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return {\n            node: linkedNode\n        };\n    }\n    function parseMessage(tokenizer) {\n        const context = tokenizer.context();\n        const startOffset = context.currentType === 1 /* TokenTypes.Pipe */\n            ? tokenizer.currentOffset()\n            : context.offset;\n        const startLoc = context.currentType === 1 /* TokenTypes.Pipe */\n            ? context.endLoc\n            : context.startLoc;\n        const node = startNode(2 /* NodeTypes.Message */, startOffset, startLoc);\n        node.items = [];\n        let nextToken = null;\n        do {\n            const token = nextToken || tokenizer.nextToken();\n            nextToken = null;\n            switch (token.type) {\n                case 0 /* TokenTypes.Text */:\n                    if (token.value == null) {\n                        emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n                    }\n                    node.items.push(parseText(tokenizer, token.value || ''));\n                    break;\n                case 6 /* TokenTypes.List */:\n                    if (token.value == null) {\n                        emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n                    }\n                    node.items.push(parseList(tokenizer, token.value || ''));\n                    break;\n                case 5 /* TokenTypes.Named */:\n                    if (token.value == null) {\n                        emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n                    }\n                    node.items.push(parseNamed(tokenizer, token.value || ''));\n                    break;\n                case 7 /* TokenTypes.Literal */:\n                    if (token.value == null) {\n                        emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n                    }\n                    node.items.push(parseLiteral(tokenizer, token.value || ''));\n                    break;\n                case 8 /* TokenTypes.LinkedAlias */:\n                    const parsed = parseLinked(tokenizer);\n                    node.items.push(parsed.node);\n                    nextToken = parsed.nextConsumeToken || null;\n                    break;\n            }\n        } while (context.currentType !== 14 /* TokenTypes.EOF */ &&\n            context.currentType !== 1 /* TokenTypes.Pipe */);\n        // adjust message node loc\n        const endOffset = context.currentType === 1 /* TokenTypes.Pipe */\n            ? context.lastOffset\n            : tokenizer.currentOffset();\n        const endLoc = context.currentType === 1 /* TokenTypes.Pipe */\n            ? context.lastEndLoc\n            : tokenizer.currentPosition();\n        endNode(node, endOffset, endLoc);\n        return node;\n    }\n    function parsePlural(tokenizer, offset, loc, msgNode) {\n        const context = tokenizer.context();\n        let hasEmptyMessage = msgNode.items.length === 0;\n        const node = startNode(1 /* NodeTypes.Plural */, offset, loc);\n        node.cases = [];\n        node.cases.push(msgNode);\n        do {\n            const msg = parseMessage(tokenizer);\n            if (!hasEmptyMessage) {\n                hasEmptyMessage = msg.items.length === 0;\n            }\n            node.cases.push(msg);\n        } while (context.currentType !== 14 /* TokenTypes.EOF */);\n        if (hasEmptyMessage) {\n            emitError(tokenizer, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0);\n        }\n        endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return node;\n    }\n    function parseResource(tokenizer) {\n        const context = tokenizer.context();\n        const { offset, startLoc } = context;\n        const msgNode = parseMessage(tokenizer);\n        if (context.currentType === 14 /* TokenTypes.EOF */) {\n            return msgNode;\n        }\n        else {\n            return parsePlural(tokenizer, offset, startLoc, msgNode);\n        }\n    }\n    function parse(source) {\n        const tokenizer = createTokenizer(source, assign({}, options));\n        const context = tokenizer.context();\n        const node = startNode(0 /* NodeTypes.Resource */, context.offset, context.startLoc);\n        if (location && node.loc) {\n            node.loc.source = source;\n        }\n        node.body = parseResource(tokenizer);\n        if (options.onCacheKey) {\n            node.cacheKey = options.onCacheKey(source);\n        }\n        // assert whether achieved to EOF\n        if (context.currentType !== 14 /* TokenTypes.EOF */) {\n            emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || '');\n        }\n        endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return node;\n    }\n    return { parse };\n}\nfunction getTokenCaption(token) {\n    if (token.type === 14 /* TokenTypes.EOF */) {\n        return 'EOF';\n    }\n    const name = (token.value || '').replace(/\\r?\\n/gu, '\\\\n');\n    return name.length > 10 ? name.slice(0, 9) + '…' : name;\n}\n\nfunction createTransformer(ast, options = {} // eslint-disable-line\n) {\n    const _context = {\n        ast,\n        helpers: new Set()\n    };\n    const context = () => _context;\n    const helper = (name) => {\n        _context.helpers.add(name);\n        return name;\n    };\n    return { context, helper };\n}\nfunction traverseNodes(nodes, transformer) {\n    for (let i = 0; i < nodes.length; i++) {\n        traverseNode(nodes[i], transformer);\n    }\n}\nfunction traverseNode(node, transformer) {\n    // TODO: if we need pre-hook of transform, should be implemented to here\n    switch (node.type) {\n        case 1 /* NodeTypes.Plural */:\n            traverseNodes(node.cases, transformer);\n            transformer.helper(\"plural\" /* HelperNameMap.PLURAL */);\n            break;\n        case 2 /* NodeTypes.Message */:\n            traverseNodes(node.items, transformer);\n            break;\n        case 6 /* NodeTypes.Linked */:\n            const linked = node;\n            traverseNode(linked.key, transformer);\n            transformer.helper(\"linked\" /* HelperNameMap.LINKED */);\n            transformer.helper(\"type\" /* HelperNameMap.TYPE */);\n            break;\n        case 5 /* NodeTypes.List */:\n            transformer.helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */);\n            transformer.helper(\"list\" /* HelperNameMap.LIST */);\n            break;\n        case 4 /* NodeTypes.Named */:\n            transformer.helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */);\n            transformer.helper(\"named\" /* HelperNameMap.NAMED */);\n            break;\n    }\n    // TODO: if we need post-hook of transform, should be implemented to here\n}\n// transform AST\nfunction transform(ast, options = {} // eslint-disable-line\n) {\n    const transformer = createTransformer(ast);\n    transformer.helper(\"normalize\" /* HelperNameMap.NORMALIZE */);\n    // traverse\n    ast.body && traverseNode(ast.body, transformer);\n    // set meta information\n    const context = transformer.context();\n    ast.helpers = Array.from(context.helpers);\n}\n\nfunction optimize(ast) {\n    const body = ast.body;\n    if (body.type === 2 /* NodeTypes.Message */) {\n        optimizeMessageNode(body);\n    }\n    else {\n        body.cases.forEach(c => optimizeMessageNode(c));\n    }\n    return ast;\n}\nfunction optimizeMessageNode(message) {\n    if (message.items.length === 1) {\n        const item = message.items[0];\n        if (item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */) {\n            message.static = item.value;\n            delete item.value; // optimization for size\n        }\n    }\n    else {\n        const values = [];\n        for (let i = 0; i < message.items.length; i++) {\n            const item = message.items[i];\n            if (!(item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */)) {\n                break;\n            }\n            if (item.value == null) {\n                break;\n            }\n            values.push(item.value);\n        }\n        if (values.length === message.items.length) {\n            message.static = join(values);\n            for (let i = 0; i < message.items.length; i++) {\n                const item = message.items[i];\n                if (item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */) {\n                    delete item.value; // optimization for size\n                }\n            }\n        }\n    }\n}\n\nconst ERROR_DOMAIN$1 = 'minifier';\n/* eslint-disable @typescript-eslint/no-explicit-any */\nfunction minify(node) {\n    node.t = node.type;\n    switch (node.type) {\n        case 0 /* NodeTypes.Resource */:\n            const resource = node;\n            minify(resource.body);\n            resource.b = resource.body;\n            delete resource.body;\n            break;\n        case 1 /* NodeTypes.Plural */:\n            const plural = node;\n            const cases = plural.cases;\n            for (let i = 0; i < cases.length; i++) {\n                minify(cases[i]);\n            }\n            plural.c = cases;\n            delete plural.cases;\n            break;\n        case 2 /* NodeTypes.Message */:\n            const message = node;\n            const items = message.items;\n            for (let i = 0; i < items.length; i++) {\n                minify(items[i]);\n            }\n            message.i = items;\n            delete message.items;\n            if (message.static) {\n                message.s = message.static;\n                delete message.static;\n            }\n            break;\n        case 3 /* NodeTypes.Text */:\n        case 9 /* NodeTypes.Literal */:\n        case 8 /* NodeTypes.LinkedModifier */:\n        case 7 /* NodeTypes.LinkedKey */:\n            const valueNode = node;\n            if (valueNode.value) {\n                valueNode.v = valueNode.value;\n                delete valueNode.value;\n            }\n            break;\n        case 6 /* NodeTypes.Linked */:\n            const linked = node;\n            minify(linked.key);\n            linked.k = linked.key;\n            delete linked.key;\n            if (linked.modifier) {\n                minify(linked.modifier);\n                linked.m = linked.modifier;\n                delete linked.modifier;\n            }\n            break;\n        case 5 /* NodeTypes.List */:\n            const list = node;\n            list.i = list.index;\n            delete list.index;\n            break;\n        case 4 /* NodeTypes.Named */:\n            const named = node;\n            named.k = named.key;\n            delete named.key;\n            break;\n        default:\n            {\n                throw createCompileError(CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE, null, {\n                    domain: ERROR_DOMAIN$1,\n                    args: [node.type]\n                });\n            }\n    }\n    delete node.type;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst ERROR_DOMAIN = 'parser';\nfunction createCodeGenerator(ast, options) {\n    const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;\n    const location = options.location !== false;\n    const _context = {\n        filename,\n        code: '',\n        column: 1,\n        line: 1,\n        offset: 0,\n        map: undefined,\n        breakLineCode,\n        needIndent: _needIndent,\n        indentLevel: 0\n    };\n    if (location && ast.loc) {\n        _context.source = ast.loc.source;\n    }\n    const context = () => _context;\n    function push(code, node) {\n        _context.code += code;\n    }\n    function _newline(n, withBreakLine = true) {\n        const _breakLineCode = withBreakLine ? breakLineCode : '';\n        push(_needIndent ? _breakLineCode + `  `.repeat(n) : _breakLineCode);\n    }\n    function indent(withNewLine = true) {\n        const level = ++_context.indentLevel;\n        withNewLine && _newline(level);\n    }\n    function deindent(withNewLine = true) {\n        const level = --_context.indentLevel;\n        withNewLine && _newline(level);\n    }\n    function newline() {\n        _newline(_context.indentLevel);\n    }\n    const helper = (key) => `_${key}`;\n    const needIndent = () => _context.needIndent;\n    return {\n        context,\n        push,\n        indent,\n        deindent,\n        newline,\n        helper,\n        needIndent\n    };\n}\nfunction generateLinkedNode(generator, node) {\n    const { helper } = generator;\n    generator.push(`${helper(\"linked\" /* HelperNameMap.LINKED */)}(`);\n    generateNode(generator, node.key);\n    if (node.modifier) {\n        generator.push(`, `);\n        generateNode(generator, node.modifier);\n        generator.push(`, _type`);\n    }\n    else {\n        generator.push(`, undefined, _type`);\n    }\n    generator.push(`)`);\n}\nfunction generateMessageNode(generator, node) {\n    const { helper, needIndent } = generator;\n    generator.push(`${helper(\"normalize\" /* HelperNameMap.NORMALIZE */)}([`);\n    generator.indent(needIndent());\n    const length = node.items.length;\n    for (let i = 0; i < length; i++) {\n        generateNode(generator, node.items[i]);\n        if (i === length - 1) {\n            break;\n        }\n        generator.push(', ');\n    }\n    generator.deindent(needIndent());\n    generator.push('])');\n}\nfunction generatePluralNode(generator, node) {\n    const { helper, needIndent } = generator;\n    if (node.cases.length > 1) {\n        generator.push(`${helper(\"plural\" /* HelperNameMap.PLURAL */)}([`);\n        generator.indent(needIndent());\n        const length = node.cases.length;\n        for (let i = 0; i < length; i++) {\n            generateNode(generator, node.cases[i]);\n            if (i === length - 1) {\n                break;\n            }\n            generator.push(', ');\n        }\n        generator.deindent(needIndent());\n        generator.push(`])`);\n    }\n}\nfunction generateResource(generator, node) {\n    if (node.body) {\n        generateNode(generator, node.body);\n    }\n    else {\n        generator.push('null');\n    }\n}\nfunction generateNode(generator, node) {\n    const { helper } = generator;\n    switch (node.type) {\n        case 0 /* NodeTypes.Resource */:\n            generateResource(generator, node);\n            break;\n        case 1 /* NodeTypes.Plural */:\n            generatePluralNode(generator, node);\n            break;\n        case 2 /* NodeTypes.Message */:\n            generateMessageNode(generator, node);\n            break;\n        case 6 /* NodeTypes.Linked */:\n            generateLinkedNode(generator, node);\n            break;\n        case 8 /* NodeTypes.LinkedModifier */:\n            generator.push(JSON.stringify(node.value), node);\n            break;\n        case 7 /* NodeTypes.LinkedKey */:\n            generator.push(JSON.stringify(node.value), node);\n            break;\n        case 5 /* NodeTypes.List */:\n            generator.push(`${helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */)}(${helper(\"list\" /* HelperNameMap.LIST */)}(${node.index}))`, node);\n            break;\n        case 4 /* NodeTypes.Named */:\n            generator.push(`${helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */)}(${helper(\"named\" /* HelperNameMap.NAMED */)}(${JSON.stringify(node.key)}))`, node);\n            break;\n        case 9 /* NodeTypes.Literal */:\n            generator.push(JSON.stringify(node.value), node);\n            break;\n        case 3 /* NodeTypes.Text */:\n            generator.push(JSON.stringify(node.value), node);\n            break;\n        default:\n            {\n                throw createCompileError(CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE, null, {\n                    domain: ERROR_DOMAIN,\n                    args: [node.type]\n                });\n            }\n    }\n}\n// generate code from AST\nconst generate = (ast, options = {} // eslint-disable-line\n) => {\n    const mode = isString(options.mode) ? options.mode : 'normal';\n    const filename = isString(options.filename)\n        ? options.filename\n        : 'message.intl';\n    const sourceMap = !!options.sourceMap;\n    // prettier-ignore\n    const breakLineCode = options.breakLineCode != null\n        ? options.breakLineCode\n        : mode === 'arrow'\n            ? ';'\n            : '\\n';\n    const needIndent = options.needIndent ? options.needIndent : mode !== 'arrow';\n    const helpers = ast.helpers || [];\n    const generator = createCodeGenerator(ast, {\n        mode,\n        filename,\n        sourceMap,\n        breakLineCode,\n        needIndent\n    });\n    generator.push(mode === 'normal' ? `function __msg__ (ctx) {` : `(ctx) => {`);\n    generator.indent(needIndent);\n    if (helpers.length > 0) {\n        generator.push(`const { ${join(helpers.map(s => `${s}: _${s}`), ', ')} } = ctx`);\n        generator.newline();\n    }\n    generator.push(`return `);\n    generateNode(generator, ast);\n    generator.deindent(needIndent);\n    generator.push(`}`);\n    delete ast.helpers;\n    const { code, map } = generator.context();\n    return {\n        ast,\n        code,\n        map: map ? map.toJSON() : undefined // eslint-disable-line @typescript-eslint/no-explicit-any\n    };\n};\n\nfunction baseCompile(source, options = {}) {\n    const assignedOptions = assign({}, options);\n    const jit = !!assignedOptions.jit;\n    const enalbeMinify = !!assignedOptions.minify;\n    const enambeOptimize = assignedOptions.optimize == null ? true : assignedOptions.optimize;\n    // parse source codes\n    const parser = createParser(assignedOptions);\n    const ast = parser.parse(source);\n    if (!jit) {\n        // transform ASTs\n        transform(ast, assignedOptions);\n        // generate javascript codes\n        return generate(ast, assignedOptions);\n    }\n    else {\n        // optimize ASTs\n        enambeOptimize && optimize(ast);\n        // minimize ASTs\n        enalbeMinify && minify(ast);\n        // In JIT mode, no ast transform, no code generation.\n        return { ast, code: '' };\n    }\n}\n\nexport { CompileErrorCodes, ERROR_DOMAIN$2 as ERROR_DOMAIN, LOCATION_STUB, baseCompile, createCompileError, createLocation, createParser, createPosition, defaultOnError, detectHtmlTag, errorMessages };\n","/*!\n  * core-base v9.8.0\n  * (c) 2023 kazuya kawaguchi\n  * Released under the MIT License.\n  */\nimport { getGlobalThis, isObject, isFunction, isString, isNumber, isPlainObject, assign, join, toDisplayString, isArray, format as format$1, incrementer, isPromise, isBoolean, warn, isRegExp, warnOnce, escapeHtml, inBrowser, mark, measure, isEmptyObject, generateCodeFrame, generateFormatCacheKey, isDate } from '@intlify/shared';\nimport { CompileErrorCodes, createCompileError, detectHtmlTag, defaultOnError, baseCompile as baseCompile$1 } from '@intlify/message-compiler';\nexport { CompileErrorCodes, createCompileError } from '@intlify/message-compiler';\n\n/**\n * This is only called in esm-bundler builds.\n * istanbul-ignore-next\n */\nfunction initFeatureFlags() {\n    if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\n        getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;\n    }\n    if (typeof __INTLIFY_JIT_COMPILATION__ !== 'boolean') {\n        getGlobalThis().__INTLIFY_JIT_COMPILATION__ = false;\n    }\n    if (typeof __INTLIFY_DROP_MESSAGE_COMPILER__ !== 'boolean') {\n        getGlobalThis().__INTLIFY_DROP_MESSAGE_COMPILER__ = false;\n    }\n}\n\nconst pathStateMachine =  [];\npathStateMachine[0 /* States.BEFORE_PATH */] = {\n    [\"w\" /* PathCharTypes.WORKSPACE */]: [0 /* States.BEFORE_PATH */],\n    [\"i\" /* PathCharTypes.IDENT */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */],\n    [\"[\" /* PathCharTypes.LEFT_BRACKET */]: [4 /* States.IN_SUB_PATH */],\n    [\"o\" /* PathCharTypes.END_OF_FAIL */]: [7 /* States.AFTER_PATH */]\n};\npathStateMachine[1 /* States.IN_PATH */] = {\n    [\"w\" /* PathCharTypes.WORKSPACE */]: [1 /* States.IN_PATH */],\n    [\".\" /* PathCharTypes.DOT */]: [2 /* States.BEFORE_IDENT */],\n    [\"[\" /* PathCharTypes.LEFT_BRACKET */]: [4 /* States.IN_SUB_PATH */],\n    [\"o\" /* PathCharTypes.END_OF_FAIL */]: [7 /* States.AFTER_PATH */]\n};\npathStateMachine[2 /* States.BEFORE_IDENT */] = {\n    [\"w\" /* PathCharTypes.WORKSPACE */]: [2 /* States.BEFORE_IDENT */],\n    [\"i\" /* PathCharTypes.IDENT */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */],\n    [\"0\" /* PathCharTypes.ZERO */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */]\n};\npathStateMachine[3 /* States.IN_IDENT */] = {\n    [\"i\" /* PathCharTypes.IDENT */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */],\n    [\"0\" /* PathCharTypes.ZERO */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */],\n    [\"w\" /* PathCharTypes.WORKSPACE */]: [1 /* States.IN_PATH */, 1 /* Actions.PUSH */],\n    [\".\" /* PathCharTypes.DOT */]: [2 /* States.BEFORE_IDENT */, 1 /* Actions.PUSH */],\n    [\"[\" /* PathCharTypes.LEFT_BRACKET */]: [4 /* States.IN_SUB_PATH */, 1 /* Actions.PUSH */],\n    [\"o\" /* PathCharTypes.END_OF_FAIL */]: [7 /* States.AFTER_PATH */, 1 /* Actions.PUSH */]\n};\npathStateMachine[4 /* States.IN_SUB_PATH */] = {\n    [\"'\" /* PathCharTypes.SINGLE_QUOTE */]: [5 /* States.IN_SINGLE_QUOTE */, 0 /* Actions.APPEND */],\n    [\"\\\"\" /* PathCharTypes.DOUBLE_QUOTE */]: [6 /* States.IN_DOUBLE_QUOTE */, 0 /* Actions.APPEND */],\n    [\"[\" /* PathCharTypes.LEFT_BRACKET */]: [\n        4 /* States.IN_SUB_PATH */,\n        2 /* Actions.INC_SUB_PATH_DEPTH */\n    ],\n    [\"]\" /* PathCharTypes.RIGHT_BRACKET */]: [1 /* States.IN_PATH */, 3 /* Actions.PUSH_SUB_PATH */],\n    [\"o\" /* PathCharTypes.END_OF_FAIL */]: 8 /* States.ERROR */,\n    [\"l\" /* PathCharTypes.ELSE */]: [4 /* States.IN_SUB_PATH */, 0 /* Actions.APPEND */]\n};\npathStateMachine[5 /* States.IN_SINGLE_QUOTE */] = {\n    [\"'\" /* PathCharTypes.SINGLE_QUOTE */]: [4 /* States.IN_SUB_PATH */, 0 /* Actions.APPEND */],\n    [\"o\" /* PathCharTypes.END_OF_FAIL */]: 8 /* States.ERROR */,\n    [\"l\" /* PathCharTypes.ELSE */]: [5 /* States.IN_SINGLE_QUOTE */, 0 /* Actions.APPEND */]\n};\npathStateMachine[6 /* States.IN_DOUBLE_QUOTE */] = {\n    [\"\\\"\" /* PathCharTypes.DOUBLE_QUOTE */]: [4 /* States.IN_SUB_PATH */, 0 /* Actions.APPEND */],\n    [\"o\" /* PathCharTypes.END_OF_FAIL */]: 8 /* States.ERROR */,\n    [\"l\" /* PathCharTypes.ELSE */]: [6 /* States.IN_DOUBLE_QUOTE */, 0 /* Actions.APPEND */]\n};\n/**\n * Check if an expression is a literal value.\n */\nconst literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\nfunction isLiteral(exp) {\n    return literalValueRE.test(exp);\n}\n/**\n * Strip quotes from a string\n */\nfunction stripQuotes(str) {\n    const a = str.charCodeAt(0);\n    const b = str.charCodeAt(str.length - 1);\n    return a === b && (a === 0x22 || a === 0x27) ? str.slice(1, -1) : str;\n}\n/**\n * Determine the type of a character in a keypath.\n */\nfunction getPathCharType(ch) {\n    if (ch === undefined || ch === null) {\n        return \"o\" /* PathCharTypes.END_OF_FAIL */;\n    }\n    const code = ch.charCodeAt(0);\n    switch (code) {\n        case 0x5b: // [\n        case 0x5d: // ]\n        case 0x2e: // .\n        case 0x22: // \"\n        case 0x27: // '\n            return ch;\n        case 0x5f: // _\n        case 0x24: // $\n        case 0x2d: // -\n            return \"i\" /* PathCharTypes.IDENT */;\n        case 0x09: // Tab (HT)\n        case 0x0a: // Newline (LF)\n        case 0x0d: // Return (CR)\n        case 0xa0: // No-break space (NBSP)\n        case 0xfeff: // Byte Order Mark (BOM)\n        case 0x2028: // Line Separator (LS)\n        case 0x2029: // Paragraph Separator (PS)\n            return \"w\" /* PathCharTypes.WORKSPACE */;\n    }\n    return \"i\" /* PathCharTypes.IDENT */;\n}\n/**\n * Format a subPath, return its plain form if it is\n * a literal string or number. Otherwise prepend the\n * dynamic indicator (*).\n */\nfunction formatSubPath(path) {\n    const trimmed = path.trim();\n    // invalid leading 0\n    if (path.charAt(0) === '0' && isNaN(parseInt(path))) {\n        return false;\n    }\n    return isLiteral(trimmed)\n        ? stripQuotes(trimmed)\n        : \"*\" /* PathCharTypes.ASTARISK */ + trimmed;\n}\n/**\n * Parse a string path into an array of segments\n */\nfunction parse(path) {\n    const keys = [];\n    let index = -1;\n    let mode = 0 /* States.BEFORE_PATH */;\n    let subPathDepth = 0;\n    let c;\n    let key; // eslint-disable-line\n    let newChar;\n    let type;\n    let transition;\n    let action;\n    let typeMap;\n    const actions = [];\n    actions[0 /* Actions.APPEND */] = () => {\n        if (key === undefined) {\n            key = newChar;\n        }\n        else {\n            key += newChar;\n        }\n    };\n    actions[1 /* Actions.PUSH */] = () => {\n        if (key !== undefined) {\n            keys.push(key);\n            key = undefined;\n        }\n    };\n    actions[2 /* Actions.INC_SUB_PATH_DEPTH */] = () => {\n        actions[0 /* Actions.APPEND */]();\n        subPathDepth++;\n    };\n    actions[3 /* Actions.PUSH_SUB_PATH */] = () => {\n        if (subPathDepth > 0) {\n            subPathDepth--;\n            mode = 4 /* States.IN_SUB_PATH */;\n            actions[0 /* Actions.APPEND */]();\n        }\n        else {\n            subPathDepth = 0;\n            if (key === undefined) {\n                return false;\n            }\n            key = formatSubPath(key);\n            if (key === false) {\n                return false;\n            }\n            else {\n                actions[1 /* Actions.PUSH */]();\n            }\n        }\n    };\n    function maybeUnescapeQuote() {\n        const nextChar = path[index + 1];\n        if ((mode === 5 /* States.IN_SINGLE_QUOTE */ &&\n            nextChar === \"'\" /* PathCharTypes.SINGLE_QUOTE */) ||\n            (mode === 6 /* States.IN_DOUBLE_QUOTE */ &&\n                nextChar === \"\\\"\" /* PathCharTypes.DOUBLE_QUOTE */)) {\n            index++;\n            newChar = '\\\\' + nextChar;\n            actions[0 /* Actions.APPEND */]();\n            return true;\n        }\n    }\n    while (mode !== null) {\n        index++;\n        c = path[index];\n        if (c === '\\\\' && maybeUnescapeQuote()) {\n            continue;\n        }\n        type = getPathCharType(c);\n        typeMap = pathStateMachine[mode];\n        transition = typeMap[type] || typeMap[\"l\" /* PathCharTypes.ELSE */] || 8 /* States.ERROR */;\n        // check parse error\n        if (transition === 8 /* States.ERROR */) {\n            return;\n        }\n        mode = transition[0];\n        if (transition[1] !== undefined) {\n            action = actions[transition[1]];\n            if (action) {\n                newChar = c;\n                if (action() === false) {\n                    return;\n                }\n            }\n        }\n        // check parse finish\n        if (mode === 7 /* States.AFTER_PATH */) {\n            return keys;\n        }\n    }\n}\n// path token cache\nconst cache = new Map();\n/**\n * key-value message resolver\n *\n * @remarks\n * Resolves messages with the key-value structure. Note that messages with a hierarchical structure such as objects cannot be resolved\n *\n * @param obj - A target object to be resolved with path\n * @param path - A {@link Path | path} to resolve the value of message\n *\n * @returns A resolved {@link PathValue | path value}\n *\n * @VueI18nGeneral\n */\nfunction resolveWithKeyValue(obj, path) {\n    return isObject(obj) ? obj[path] : null;\n}\n/**\n * message resolver\n *\n * @remarks\n * Resolves messages. messages with a hierarchical structure such as objects can be resolved. This resolver is used in VueI18n as default.\n *\n * @param obj - A target object to be resolved with path\n * @param path - A {@link Path | path} to resolve the value of message\n *\n * @returns A resolved {@link PathValue | path value}\n *\n * @VueI18nGeneral\n */\nfunction resolveValue(obj, path) {\n    // check object\n    if (!isObject(obj)) {\n        return null;\n    }\n    // parse path\n    let hit = cache.get(path);\n    if (!hit) {\n        hit = parse(path);\n        if (hit) {\n            cache.set(path, hit);\n        }\n    }\n    // check hit\n    if (!hit) {\n        return null;\n    }\n    // resolve path value\n    const len = hit.length;\n    let last = obj;\n    let i = 0;\n    while (i < len) {\n        const val = last[hit[i]];\n        if (val === undefined) {\n            return null;\n        }\n        if (isFunction(last)) {\n            return null;\n        }\n        last = val;\n        i++;\n    }\n    return last;\n}\n\nconst DEFAULT_MODIFIER = (str) => str;\nconst DEFAULT_MESSAGE = (ctx) => ''; // eslint-disable-line\nconst DEFAULT_MESSAGE_DATA_TYPE = 'text';\nconst DEFAULT_NORMALIZE = (values) => values.length === 0 ? '' : join(values);\nconst DEFAULT_INTERPOLATE = toDisplayString;\nfunction pluralDefault(choice, choicesLength) {\n    choice = Math.abs(choice);\n    if (choicesLength === 2) {\n        // prettier-ignore\n        return choice\n            ? choice > 1\n                ? 1\n                : 0\n            : 1;\n    }\n    return choice ? Math.min(choice, 2) : 0;\n}\nfunction getPluralIndex(options) {\n    // prettier-ignore\n    const index = isNumber(options.pluralIndex)\n        ? options.pluralIndex\n        : -1;\n    // prettier-ignore\n    return options.named && (isNumber(options.named.count) || isNumber(options.named.n))\n        ? isNumber(options.named.count)\n            ? options.named.count\n            : isNumber(options.named.n)\n                ? options.named.n\n                : index\n        : index;\n}\nfunction normalizeNamed(pluralIndex, props) {\n    if (!props.count) {\n        props.count = pluralIndex;\n    }\n    if (!props.n) {\n        props.n = pluralIndex;\n    }\n}\nfunction createMessageContext(options = {}) {\n    const locale = options.locale;\n    const pluralIndex = getPluralIndex(options);\n    const pluralRule = isObject(options.pluralRules) &&\n        isString(locale) &&\n        isFunction(options.pluralRules[locale])\n        ? options.pluralRules[locale]\n        : pluralDefault;\n    const orgPluralRule = isObject(options.pluralRules) &&\n        isString(locale) &&\n        isFunction(options.pluralRules[locale])\n        ? pluralDefault\n        : undefined;\n    const plural = (messages) => {\n        return messages[pluralRule(pluralIndex, messages.length, orgPluralRule)];\n    };\n    const _list = options.list || [];\n    const list = (index) => _list[index];\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const _named = options.named || {};\n    isNumber(options.pluralIndex) && normalizeNamed(pluralIndex, _named);\n    const named = (key) => _named[key];\n    function message(key) {\n        // prettier-ignore\n        const msg = isFunction(options.messages)\n            ? options.messages(key)\n            : isObject(options.messages)\n                ? options.messages[key]\n                : false;\n        return !msg\n            ? options.parent\n                ? options.parent.message(key) // resolve from parent messages\n                : DEFAULT_MESSAGE\n            : msg;\n    }\n    const _modifier = (name) => options.modifiers\n        ? options.modifiers[name]\n        : DEFAULT_MODIFIER;\n    const normalize = isPlainObject(options.processor) && isFunction(options.processor.normalize)\n        ? options.processor.normalize\n        : DEFAULT_NORMALIZE;\n    const interpolate = isPlainObject(options.processor) &&\n        isFunction(options.processor.interpolate)\n        ? options.processor.interpolate\n        : DEFAULT_INTERPOLATE;\n    const type = isPlainObject(options.processor) && isString(options.processor.type)\n        ? options.processor.type\n        : DEFAULT_MESSAGE_DATA_TYPE;\n    const linked = (key, ...args) => {\n        const [arg1, arg2] = args;\n        let type = 'text';\n        let modifier = '';\n        if (args.length === 1) {\n            if (isObject(arg1)) {\n                modifier = arg1.modifier || modifier;\n                type = arg1.type || type;\n            }\n            else if (isString(arg1)) {\n                modifier = arg1 || modifier;\n            }\n        }\n        else if (args.length === 2) {\n            if (isString(arg1)) {\n                modifier = arg1 || modifier;\n            }\n            if (isString(arg2)) {\n                type = arg2 || type;\n            }\n        }\n        const ret = message(key)(ctx);\n        const msg = \n        // The message in vnode resolved with linked are returned as an array by processor.nomalize\n        type === 'vnode' && isArray(ret) && modifier\n            ? ret[0]\n            : ret;\n        return modifier ? _modifier(modifier)(msg, type) : msg;\n    };\n    const ctx = {\n        [\"list\" /* HelperNameMap.LIST */]: list,\n        [\"named\" /* HelperNameMap.NAMED */]: named,\n        [\"plural\" /* HelperNameMap.PLURAL */]: plural,\n        [\"linked\" /* HelperNameMap.LINKED */]: linked,\n        [\"message\" /* HelperNameMap.MESSAGE */]: message,\n        [\"type\" /* HelperNameMap.TYPE */]: type,\n        [\"interpolate\" /* HelperNameMap.INTERPOLATE */]: interpolate,\n        [\"normalize\" /* HelperNameMap.NORMALIZE */]: normalize,\n        [\"values\" /* HelperNameMap.VALUES */]: assign({}, _list, _named)\n    };\n    return ctx;\n}\n\nlet devtools = null;\nfunction setDevToolsHook(hook) {\n    devtools = hook;\n}\nfunction getDevToolsHook() {\n    return devtools;\n}\nfunction initI18nDevTools(i18n, version, meta) {\n    // TODO: queue if devtools is undefined\n    devtools &&\n        devtools.emit(\"i18n:init\" /* IntlifyDevToolsHooks.I18nInit */, {\n            timestamp: Date.now(),\n            i18n,\n            version,\n            meta\n        });\n}\nconst translateDevTools = /* #__PURE__*/ createDevToolsHook(\"function:translate\" /* IntlifyDevToolsHooks.FunctionTranslate */);\nfunction createDevToolsHook(hook) {\n    return (payloads) => devtools && devtools.emit(hook, payloads);\n}\n\nconst CoreWarnCodes = {\n    NOT_FOUND_KEY: 1,\n    FALLBACK_TO_TRANSLATE: 2,\n    CANNOT_FORMAT_NUMBER: 3,\n    FALLBACK_TO_NUMBER_FORMAT: 4,\n    CANNOT_FORMAT_DATE: 5,\n    FALLBACK_TO_DATE_FORMAT: 6,\n    EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER: 7,\n    __EXTEND_POINT__: 8\n};\n/** @internal */\nconst warnMessages = {\n    [CoreWarnCodes.NOT_FOUND_KEY]: `Not found '{key}' key in '{locale}' locale messages.`,\n    [CoreWarnCodes.FALLBACK_TO_TRANSLATE]: `Fall back to translate '{key}' key with '{target}' locale.`,\n    [CoreWarnCodes.CANNOT_FORMAT_NUMBER]: `Cannot format a number value due to not supported Intl.NumberFormat.`,\n    [CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT]: `Fall back to number format '{key}' key with '{target}' locale.`,\n    [CoreWarnCodes.CANNOT_FORMAT_DATE]: `Cannot format a date value due to not supported Intl.DateTimeFormat.`,\n    [CoreWarnCodes.FALLBACK_TO_DATE_FORMAT]: `Fall back to datetime format '{key}' key with '{target}' locale.`,\n    [CoreWarnCodes.EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER]: `This project is using Custom Message Compiler, which is an experimental feature. It may receive breaking changes or be removed in the future.`\n};\nfunction getWarnMessage(code, ...args) {\n    return format$1(warnMessages[code], ...args);\n}\n\nconst code = CompileErrorCodes.__EXTEND_POINT__;\nconst inc = incrementer(code);\nconst CoreErrorCodes = {\n    INVALID_ARGUMENT: code,\n    INVALID_DATE_ARGUMENT: inc(),\n    INVALID_ISO_DATE_ARGUMENT: inc(),\n    NOT_SUPPORT_NON_STRING_MESSAGE: inc(),\n    NOT_SUPPORT_LOCALE_PROMISE_VALUE: inc(),\n    NOT_SUPPORT_LOCALE_ASYNC_FUNCTION: inc(),\n    NOT_SUPPORT_LOCALE_TYPE: inc(),\n    __EXTEND_POINT__: inc() // 25\n};\nfunction createCoreError(code) {\n    return createCompileError(code, null, (process.env.NODE_ENV !== 'production') ? { messages: errorMessages } : undefined);\n}\n/** @internal */\nconst errorMessages = {\n    [CoreErrorCodes.INVALID_ARGUMENT]: 'Invalid arguments',\n    [CoreErrorCodes.INVALID_DATE_ARGUMENT]: 'The date provided is an invalid Date object.' +\n        'Make sure your Date represents a valid date.',\n    [CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT]: 'The argument provided is not a valid ISO date string',\n    [CoreErrorCodes.NOT_SUPPORT_NON_STRING_MESSAGE]: 'Not support non-string message',\n    [CoreErrorCodes.NOT_SUPPORT_LOCALE_PROMISE_VALUE]: 'cannot support promise value',\n    [CoreErrorCodes.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION]: 'cannot support async function',\n    [CoreErrorCodes.NOT_SUPPORT_LOCALE_TYPE]: 'cannot support locale type'\n};\n\n/** @internal */\nfunction getLocale(context, options) {\n    return options.locale != null\n        ? resolveLocale(options.locale)\n        : resolveLocale(context.locale);\n}\nlet _resolveLocale;\n/** @internal */\nfunction resolveLocale(locale) {\n    if (isString(locale)) {\n        return locale;\n    }\n    else {\n        if (isFunction(locale)) {\n            if (locale.resolvedOnce && _resolveLocale != null) {\n                return _resolveLocale;\n            }\n            else if (locale.constructor.name === 'Function') {\n                const resolve = locale();\n                if (isPromise(resolve)) {\n                    throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_PROMISE_VALUE);\n                }\n                return (_resolveLocale = resolve);\n            }\n            else {\n                throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION);\n            }\n        }\n        else {\n            throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_TYPE);\n        }\n    }\n}\n/**\n * Fallback with simple implemenation\n *\n * @remarks\n * A fallback locale function implemented with a simple fallback algorithm.\n *\n * Basically, it returns the value as specified in the `fallbackLocale` props, and is processed with the fallback inside intlify.\n *\n * @param ctx - A {@link CoreContext | context}\n * @param fallback - A {@link FallbackLocale | fallback locale}\n * @param start - A starting {@link Locale | locale}\n *\n * @returns Fallback locales\n *\n * @VueI18nGeneral\n */\nfunction fallbackWithSimple(ctx, fallback, start // eslint-disable-line @typescript-eslint/no-unused-vars\n) {\n    // prettier-ignore\n    return [...new Set([\n            start,\n            ...(isArray(fallback)\n                ? fallback\n                : isObject(fallback)\n                    ? Object.keys(fallback)\n                    : isString(fallback)\n                        ? [fallback]\n                        : [start])\n        ])];\n}\n/**\n * Fallback with locale chain\n *\n * @remarks\n * A fallback locale function implemented with a fallback chain algorithm. It's used in VueI18n as default.\n *\n * @param ctx - A {@link CoreContext | context}\n * @param fallback - A {@link FallbackLocale | fallback locale}\n * @param start - A starting {@link Locale | locale}\n *\n * @returns Fallback locales\n *\n * @VueI18nSee [Fallbacking](../guide/essentials/fallback)\n *\n * @VueI18nGeneral\n */\nfunction fallbackWithLocaleChain(ctx, fallback, start) {\n    const startLocale = isString(start) ? start : DEFAULT_LOCALE;\n    const context = ctx;\n    if (!context.__localeChainCache) {\n        context.__localeChainCache = new Map();\n    }\n    let chain = context.__localeChainCache.get(startLocale);\n    if (!chain) {\n        chain = [];\n        // first block defined by start\n        let block = [start];\n        // while any intervening block found\n        while (isArray(block)) {\n            block = appendBlockToChain(chain, block, fallback);\n        }\n        // prettier-ignore\n        // last block defined by default\n        const defaults = isArray(fallback) || !isPlainObject(fallback)\n            ? fallback\n            : fallback['default']\n                ? fallback['default']\n                : null;\n        // convert defaults to array\n        block = isString(defaults) ? [defaults] : defaults;\n        if (isArray(block)) {\n            appendBlockToChain(chain, block, false);\n        }\n        context.__localeChainCache.set(startLocale, chain);\n    }\n    return chain;\n}\nfunction appendBlockToChain(chain, block, blocks) {\n    let follow = true;\n    for (let i = 0; i < block.length && isBoolean(follow); i++) {\n        const locale = block[i];\n        if (isString(locale)) {\n            follow = appendLocaleToChain(chain, block[i], blocks);\n        }\n    }\n    return follow;\n}\nfunction appendLocaleToChain(chain, locale, blocks) {\n    let follow;\n    const tokens = locale.split('-');\n    do {\n        const target = tokens.join('-');\n        follow = appendItemToChain(chain, target, blocks);\n        tokens.splice(-1, 1);\n    } while (tokens.length && follow === true);\n    return follow;\n}\nfunction appendItemToChain(chain, target, blocks) {\n    let follow = false;\n    if (!chain.includes(target)) {\n        follow = true;\n        if (target) {\n            follow = target[target.length - 1] !== '!';\n            const locale = target.replace(/!/g, '');\n            chain.push(locale);\n            if ((isArray(blocks) || isPlainObject(blocks)) &&\n                blocks[locale] // eslint-disable-line @typescript-eslint/no-explicit-any\n            ) {\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                follow = blocks[locale];\n            }\n        }\n    }\n    return follow;\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Intlify core-base version\n * @internal\n */\nconst VERSION = '9.8.0';\nconst NOT_REOSLVED = -1;\nconst DEFAULT_LOCALE = 'en-US';\nconst MISSING_RESOLVE_VALUE = '';\nconst capitalize = (str) => `${str.charAt(0).toLocaleUpperCase()}${str.substr(1)}`;\nfunction getDefaultLinkedModifiers() {\n    return {\n        upper: (val, type) => {\n            // prettier-ignore\n            return type === 'text' && isString(val)\n                ? val.toUpperCase()\n                : type === 'vnode' && isObject(val) && '__v_isVNode' in val\n                    ? val.children.toUpperCase()\n                    : val;\n        },\n        lower: (val, type) => {\n            // prettier-ignore\n            return type === 'text' && isString(val)\n                ? val.toLowerCase()\n                : type === 'vnode' && isObject(val) && '__v_isVNode' in val\n                    ? val.children.toLowerCase()\n                    : val;\n        },\n        capitalize: (val, type) => {\n            // prettier-ignore\n            return (type === 'text' && isString(val)\n                ? capitalize(val)\n                : type === 'vnode' && isObject(val) && '__v_isVNode' in val\n                    ? capitalize(val.children)\n                    : val);\n        }\n    };\n}\nlet _compiler;\nfunction registerMessageCompiler(compiler) {\n    _compiler = compiler;\n}\nlet _resolver;\n/**\n * Register the message resolver\n *\n * @param resolver - A {@link MessageResolver} function\n *\n * @VueI18nGeneral\n */\nfunction registerMessageResolver(resolver) {\n    _resolver = resolver;\n}\nlet _fallbacker;\n/**\n * Register the locale fallbacker\n *\n * @param fallbacker - A {@link LocaleFallbacker} function\n *\n * @VueI18nGeneral\n */\nfunction registerLocaleFallbacker(fallbacker) {\n    _fallbacker = fallbacker;\n}\n// Additional Meta for Intlify DevTools\nlet _additionalMeta =  null;\n/* #__NO_SIDE_EFFECTS__ */\nconst setAdditionalMeta = (meta) => {\n    _additionalMeta = meta;\n};\n/* #__NO_SIDE_EFFECTS__ */\nconst getAdditionalMeta = () => _additionalMeta;\nlet _fallbackContext = null;\nconst setFallbackContext = (context) => {\n    _fallbackContext = context;\n};\nconst getFallbackContext = () => _fallbackContext;\n// ID for CoreContext\nlet _cid = 0;\nfunction createCoreContext(options = {}) {\n    // setup options\n    const onWarn = isFunction(options.onWarn) ? options.onWarn : warn;\n    const version = isString(options.version) ? options.version : VERSION;\n    const locale = isString(options.locale) || isFunction(options.locale)\n        ? options.locale\n        : DEFAULT_LOCALE;\n    const _locale = isFunction(locale) ? DEFAULT_LOCALE : locale;\n    const fallbackLocale = isArray(options.fallbackLocale) ||\n        isPlainObject(options.fallbackLocale) ||\n        isString(options.fallbackLocale) ||\n        options.fallbackLocale === false\n        ? options.fallbackLocale\n        : _locale;\n    const messages = isPlainObject(options.messages)\n        ? options.messages\n        : { [_locale]: {} };\n    const datetimeFormats = isPlainObject(options.datetimeFormats)\n            ? options.datetimeFormats\n            : { [_locale]: {} }\n        ;\n    const numberFormats = isPlainObject(options.numberFormats)\n            ? options.numberFormats\n            : { [_locale]: {} }\n        ;\n    const modifiers = assign({}, options.modifiers || {}, getDefaultLinkedModifiers());\n    const pluralRules = options.pluralRules || {};\n    const missing = isFunction(options.missing) ? options.missing : null;\n    const missingWarn = isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\n        ? options.missingWarn\n        : true;\n    const fallbackWarn = isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\n        ? options.fallbackWarn\n        : true;\n    const fallbackFormat = !!options.fallbackFormat;\n    const unresolving = !!options.unresolving;\n    const postTranslation = isFunction(options.postTranslation)\n        ? options.postTranslation\n        : null;\n    const processor = isPlainObject(options.processor) ? options.processor : null;\n    const warnHtmlMessage = isBoolean(options.warnHtmlMessage)\n        ? options.warnHtmlMessage\n        : true;\n    const escapeParameter = !!options.escapeParameter;\n    const messageCompiler = isFunction(options.messageCompiler)\n        ? options.messageCompiler\n        : _compiler;\n    if ((process.env.NODE_ENV !== 'production') &&\n        !false &&\n        !false &&\n        isFunction(options.messageCompiler)) {\n        warnOnce(getWarnMessage(CoreWarnCodes.EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER));\n    }\n    const messageResolver = isFunction(options.messageResolver)\n        ? options.messageResolver\n        : _resolver || resolveWithKeyValue;\n    const localeFallbacker = isFunction(options.localeFallbacker)\n        ? options.localeFallbacker\n        : _fallbacker || fallbackWithSimple;\n    const fallbackContext = isObject(options.fallbackContext)\n        ? options.fallbackContext\n        : undefined;\n    // setup internal options\n    const internalOptions = options;\n    const __datetimeFormatters = isObject(internalOptions.__datetimeFormatters)\n            ? internalOptions.__datetimeFormatters\n            : new Map()\n        ;\n    const __numberFormatters = isObject(internalOptions.__numberFormatters)\n            ? internalOptions.__numberFormatters\n            : new Map()\n        ;\n    const __meta = isObject(internalOptions.__meta) ? internalOptions.__meta : {};\n    _cid++;\n    const context = {\n        version,\n        cid: _cid,\n        locale,\n        fallbackLocale,\n        messages,\n        modifiers,\n        pluralRules,\n        missing,\n        missingWarn,\n        fallbackWarn,\n        fallbackFormat,\n        unresolving,\n        postTranslation,\n        processor,\n        warnHtmlMessage,\n        escapeParameter,\n        messageCompiler,\n        messageResolver,\n        localeFallbacker,\n        fallbackContext,\n        onWarn,\n        __meta\n    };\n    {\n        context.datetimeFormats = datetimeFormats;\n        context.numberFormats = numberFormats;\n        context.__datetimeFormatters = __datetimeFormatters;\n        context.__numberFormatters = __numberFormatters;\n    }\n    // for vue-devtools timeline event\n    if ((process.env.NODE_ENV !== 'production')) {\n        context.__v_emitter =\n            internalOptions.__v_emitter != null\n                ? internalOptions.__v_emitter\n                : undefined;\n    }\n    // NOTE: experimental !!\n    if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n        initI18nDevTools(context, version, __meta);\n    }\n    return context;\n}\n/** @internal */\nfunction isTranslateFallbackWarn(fallback, key) {\n    return fallback instanceof RegExp ? fallback.test(key) : fallback;\n}\n/** @internal */\nfunction isTranslateMissingWarn(missing, key) {\n    return missing instanceof RegExp ? missing.test(key) : missing;\n}\n/** @internal */\nfunction handleMissing(context, key, locale, missingWarn, type) {\n    const { missing, onWarn } = context;\n    // for vue-devtools timeline event\n    if ((process.env.NODE_ENV !== 'production')) {\n        const emitter = context.__v_emitter;\n        if (emitter) {\n            emitter.emit(\"missing\" /* VueDevToolsTimelineEvents.MISSING */, {\n                locale,\n                key,\n                type,\n                groupId: `${type}:${key}`\n            });\n        }\n    }\n    if (missing !== null) {\n        const ret = missing(context, locale, key, type);\n        return isString(ret) ? ret : key;\n    }\n    else {\n        if ((process.env.NODE_ENV !== 'production') && isTranslateMissingWarn(missingWarn, key)) {\n            onWarn(getWarnMessage(CoreWarnCodes.NOT_FOUND_KEY, { key, locale }));\n        }\n        return key;\n    }\n}\n/** @internal */\nfunction updateFallbackLocale(ctx, locale, fallback) {\n    const context = ctx;\n    context.__localeChainCache = new Map();\n    ctx.localeFallbacker(ctx, fallback, locale);\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nfunction format(ast) {\n    const msg = (ctx) => formatParts(ctx, ast);\n    return msg;\n}\nfunction formatParts(ctx, ast) {\n    const body = ast.b || ast.body;\n    if ((body.t || body.type) === 1 /* NodeTypes.Plural */) {\n        const plural = body;\n        const cases = plural.c || plural.cases;\n        return ctx.plural(cases.reduce((messages, c) => [\n            ...messages,\n            formatMessageParts(ctx, c)\n        ], []));\n    }\n    else {\n        return formatMessageParts(ctx, body);\n    }\n}\nfunction formatMessageParts(ctx, node) {\n    const _static = node.s || node.static;\n    if (_static) {\n        return ctx.type === 'text'\n            ? _static\n            : ctx.normalize([_static]);\n    }\n    else {\n        const messages = (node.i || node.items).reduce((acm, c) => [...acm, formatMessagePart(ctx, c)], []);\n        return ctx.normalize(messages);\n    }\n}\nfunction formatMessagePart(ctx, node) {\n    const type = node.t || node.type;\n    switch (type) {\n        case 3 /* NodeTypes.Text */:\n            const text = node;\n            return (text.v || text.value);\n        case 9 /* NodeTypes.Literal */:\n            const literal = node;\n            return (literal.v || literal.value);\n        case 4 /* NodeTypes.Named */:\n            const named = node;\n            return ctx.interpolate(ctx.named(named.k || named.key));\n        case 5 /* NodeTypes.List */:\n            const list = node;\n            return ctx.interpolate(ctx.list(list.i != null ? list.i : list.index));\n        case 6 /* NodeTypes.Linked */:\n            const linked = node;\n            const modifier = linked.m || linked.modifier;\n            return ctx.linked(formatMessagePart(ctx, linked.k || linked.key), modifier ? formatMessagePart(ctx, modifier) : undefined, ctx.type);\n        case 7 /* NodeTypes.LinkedKey */:\n            const linkedKey = node;\n            return (linkedKey.v || linkedKey.value);\n        case 8 /* NodeTypes.LinkedModifier */:\n            const linkedModifier = node;\n            return (linkedModifier.v || linkedModifier.value);\n        default:\n            throw new Error(`unhandled node type on format message part: ${type}`);\n    }\n}\n\nconst WARN_MESSAGE = `Detected HTML in '{source}' message. Recommend not using HTML messages to avoid XSS.`;\nfunction checkHtmlMessage(source, warnHtmlMessage) {\n    if (warnHtmlMessage && detectHtmlTag(source)) {\n        warn(format$1(WARN_MESSAGE, { source }));\n    }\n}\nconst defaultOnCacheKey = (message) => message;\nlet compileCache = Object.create(null);\nfunction clearCompileCache() {\n    compileCache = Object.create(null);\n}\nconst isMessageAST = (val) => isObject(val) &&\n    (val.t === 0 || val.type === 0) &&\n    ('b' in val || 'body' in val);\nfunction baseCompile(message, options = {}) {\n    // error detecting on compile\n    let detectError = false;\n    const onError = options.onError || defaultOnError;\n    options.onError = (err) => {\n        detectError = true;\n        onError(err);\n    };\n    // compile with mesasge-compiler\n    return { ...baseCompile$1(message, options), detectError };\n}\n/* #__NO_SIDE_EFFECTS__ */\nconst compileToFunction = (message, context) => {\n    if (!isString(message)) {\n        throw createCoreError(CoreErrorCodes.NOT_SUPPORT_NON_STRING_MESSAGE);\n    }\n    {\n        // check HTML message\n        const warnHtmlMessage = isBoolean(context.warnHtmlMessage)\n            ? context.warnHtmlMessage\n            : true;\n        (process.env.NODE_ENV !== 'production') && checkHtmlMessage(message, warnHtmlMessage);\n        // check caches\n        const onCacheKey = context.onCacheKey || defaultOnCacheKey;\n        const cacheKey = onCacheKey(message);\n        const cached = compileCache[cacheKey];\n        if (cached) {\n            return cached;\n        }\n        // compile\n        const { code, detectError } = baseCompile(message, context);\n        // evaluate function\n        const msg = new Function(`return ${code}`)();\n        // if occurred compile error, don't cache\n        return !detectError\n            ? (compileCache[cacheKey] = msg)\n            : msg;\n    }\n};\nfunction compile(message, context) {\n    if (((__INTLIFY_JIT_COMPILATION__ && !__INTLIFY_DROP_MESSAGE_COMPILER__)) &&\n        isString(message)) {\n        // check HTML message\n        const warnHtmlMessage = isBoolean(context.warnHtmlMessage)\n            ? context.warnHtmlMessage\n            : true;\n        (process.env.NODE_ENV !== 'production') && checkHtmlMessage(message, warnHtmlMessage);\n        // check caches\n        const onCacheKey = context.onCacheKey || defaultOnCacheKey;\n        const cacheKey = onCacheKey(message);\n        const cached = compileCache[cacheKey];\n        if (cached) {\n            return cached;\n        }\n        // compile with JIT mode\n        const { ast, detectError } = baseCompile(message, {\n            ...context,\n            location: (process.env.NODE_ENV !== 'production'),\n            jit: true\n        });\n        // compose message function from AST\n        const msg = format(ast);\n        // if occurred compile error, don't cache\n        return !detectError\n            ? (compileCache[cacheKey] = msg)\n            : msg;\n    }\n    else {\n        if ((process.env.NODE_ENV !== 'production') && !isMessageAST(message)) {\n            warn(`the message that is resolve with key '${context.key}' is not supported for jit compilation`);\n            return (() => message);\n        }\n        // AST case (passed from bundler)\n        const cacheKey = message.cacheKey;\n        if (cacheKey) {\n            const cached = compileCache[cacheKey];\n            if (cached) {\n                return cached;\n            }\n            // compose message function from message (AST)\n            return (compileCache[cacheKey] =\n                format(message));\n        }\n        else {\n            return format(message);\n        }\n    }\n}\n\nconst NOOP_MESSAGE_FUNCTION = () => '';\nconst isMessageFunction = (val) => isFunction(val);\n// implementation of `translate` function\nfunction translate(context, ...args) {\n    const { fallbackFormat, postTranslation, unresolving, messageCompiler, fallbackLocale, messages } = context;\n    const [key, options] = parseTranslateArgs(...args);\n    const missingWarn = isBoolean(options.missingWarn)\n        ? options.missingWarn\n        : context.missingWarn;\n    const fallbackWarn = isBoolean(options.fallbackWarn)\n        ? options.fallbackWarn\n        : context.fallbackWarn;\n    const escapeParameter = isBoolean(options.escapeParameter)\n        ? options.escapeParameter\n        : context.escapeParameter;\n    const resolvedMessage = !!options.resolvedMessage;\n    // prettier-ignore\n    const defaultMsgOrKey = isString(options.default) || isBoolean(options.default) // default by function option\n        ? !isBoolean(options.default)\n            ? options.default\n            : (!messageCompiler ? () => key : key)\n        : fallbackFormat // default by `fallbackFormat` option\n            ? (!messageCompiler ? () => key : key)\n            : '';\n    const enableDefaultMsg = fallbackFormat || defaultMsgOrKey !== '';\n    const locale = getLocale(context, options);\n    // escape params\n    escapeParameter && escapeParams(options);\n    // resolve message format\n    // eslint-disable-next-line prefer-const\n    let [formatScope, targetLocale, message] = !resolvedMessage\n        ? resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn)\n        : [\n            key,\n            locale,\n            messages[locale] || {}\n        ];\n    // NOTE:\n    //  Fix to work around `ssrTransfrom` bug in Vite.\n    //  https://github.com/vitejs/vite/issues/4306\n    //  To get around this, use temporary variables.\n    //  https://github.com/nuxt/framework/issues/1461#issuecomment-954606243\n    let format = formatScope;\n    // if you use default message, set it as message format!\n    let cacheBaseKey = key;\n    if (!resolvedMessage &&\n        !(isString(format) ||\n            isMessageAST(format) ||\n            isMessageFunction(format))) {\n        if (enableDefaultMsg) {\n            format = defaultMsgOrKey;\n            cacheBaseKey = format;\n        }\n    }\n    // checking message format and target locale\n    if (!resolvedMessage &&\n        (!(isString(format) ||\n            isMessageAST(format) ||\n            isMessageFunction(format)) ||\n            !isString(targetLocale))) {\n        return unresolving ? NOT_REOSLVED : key;\n    }\n    // TODO: refactor\n    if ((process.env.NODE_ENV !== 'production') && isString(format) && context.messageCompiler == null) {\n        warn(`The message format compilation is not supported in this build. ` +\n            `Because message compiler isn't included. ` +\n            `You need to pre-compilation all message format. ` +\n            `So translate function return '${key}'.`);\n        return key;\n    }\n    // setup compile error detecting\n    let occurred = false;\n    const onError = () => {\n        occurred = true;\n    };\n    // compile message format\n    const msg = !isMessageFunction(format)\n        ? compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, onError)\n        : format;\n    // if occurred compile error, return the message format\n    if (occurred) {\n        return format;\n    }\n    // evaluate message with context\n    const ctxOptions = getMessageContextOptions(context, targetLocale, message, options);\n    const msgContext = createMessageContext(ctxOptions);\n    const messaged = evaluateMessage(context, msg, msgContext);\n    // if use post translation option, proceed it with handler\n    const ret = postTranslation\n        ? postTranslation(messaged, key)\n        : messaged;\n    // NOTE: experimental !!\n    if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n        // prettier-ignore\n        const payloads = {\n            timestamp: Date.now(),\n            key: isString(key)\n                ? key\n                : isMessageFunction(format)\n                    ? format.key\n                    : '',\n            locale: targetLocale || (isMessageFunction(format)\n                ? format.locale\n                : ''),\n            format: isString(format)\n                ? format\n                : isMessageFunction(format)\n                    ? format.source\n                    : '',\n            message: ret\n        };\n        payloads.meta = assign({}, context.__meta, getAdditionalMeta() || {});\n        translateDevTools(payloads);\n    }\n    return ret;\n}\nfunction escapeParams(options) {\n    if (isArray(options.list)) {\n        options.list = options.list.map(item => isString(item) ? escapeHtml(item) : item);\n    }\n    else if (isObject(options.named)) {\n        Object.keys(options.named).forEach(key => {\n            if (isString(options.named[key])) {\n                options.named[key] = escapeHtml(options.named[key]);\n            }\n        });\n    }\n}\nfunction resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) {\n    const { messages, onWarn, messageResolver: resolveValue, localeFallbacker } = context;\n    const locales = localeFallbacker(context, fallbackLocale, locale); // eslint-disable-line @typescript-eslint/no-explicit-any\n    let message = {};\n    let targetLocale;\n    let format = null;\n    let from = locale;\n    let to = null;\n    const type = 'translate';\n    for (let i = 0; i < locales.length; i++) {\n        targetLocale = to = locales[i];\n        if ((process.env.NODE_ENV !== 'production') &&\n            locale !== targetLocale &&\n            isTranslateFallbackWarn(fallbackWarn, key)) {\n            onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_TRANSLATE, {\n                key,\n                target: targetLocale\n            }));\n        }\n        // for vue-devtools timeline event\n        if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\n            const emitter = context.__v_emitter;\n            if (emitter) {\n                emitter.emit(\"fallback\" /* VueDevToolsTimelineEvents.FALBACK */, {\n                    type,\n                    key,\n                    from,\n                    to,\n                    groupId: `${type}:${key}`\n                });\n            }\n        }\n        message =\n            messages[targetLocale] || {};\n        // for vue-devtools timeline event\n        let start = null;\n        let startTag;\n        let endTag;\n        if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n            start = window.performance.now();\n            startTag = 'intlify-message-resolve-start';\n            endTag = 'intlify-message-resolve-end';\n            mark && mark(startTag);\n        }\n        if ((format = resolveValue(message, key)) === null) {\n            // if null, resolve with object key path\n            format = message[key]; // eslint-disable-line @typescript-eslint/no-explicit-any\n        }\n        // for vue-devtools timeline event\n        if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n            const end = window.performance.now();\n            const emitter = context.__v_emitter;\n            if (emitter && start && format) {\n                emitter.emit(\"message-resolve\" /* VueDevToolsTimelineEvents.MESSAGE_RESOLVE */, {\n                    type: \"message-resolve\" /* VueDevToolsTimelineEvents.MESSAGE_RESOLVE */,\n                    key,\n                    message: format,\n                    time: end - start,\n                    groupId: `${type}:${key}`\n                });\n            }\n            if (startTag && endTag && mark && measure) {\n                mark(endTag);\n                measure('intlify message resolve', startTag, endTag);\n            }\n        }\n        if (isString(format) || isMessageAST(format) || isMessageFunction(format)) {\n            break;\n        }\n        const missingRet = handleMissing(context, // eslint-disable-line @typescript-eslint/no-explicit-any\n        key, targetLocale, missingWarn, type);\n        if (missingRet !== key) {\n            format = missingRet;\n        }\n        from = to;\n    }\n    return [format, targetLocale, message];\n}\nfunction compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, onError) {\n    const { messageCompiler, warnHtmlMessage } = context;\n    if (isMessageFunction(format)) {\n        const msg = format;\n        msg.locale = msg.locale || targetLocale;\n        msg.key = msg.key || key;\n        return msg;\n    }\n    if (messageCompiler == null) {\n        const msg = (() => format);\n        msg.locale = targetLocale;\n        msg.key = key;\n        return msg;\n    }\n    // for vue-devtools timeline event\n    let start = null;\n    let startTag;\n    let endTag;\n    if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n        start = window.performance.now();\n        startTag = 'intlify-message-compilation-start';\n        endTag = 'intlify-message-compilation-end';\n        mark && mark(startTag);\n    }\n    const msg = messageCompiler(format, getCompileContext(context, targetLocale, cacheBaseKey, format, warnHtmlMessage, onError));\n    // for vue-devtools timeline event\n    if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n        const end = window.performance.now();\n        const emitter = context.__v_emitter;\n        if (emitter && start) {\n            emitter.emit(\"message-compilation\" /* VueDevToolsTimelineEvents.MESSAGE_COMPILATION */, {\n                type: \"message-compilation\" /* VueDevToolsTimelineEvents.MESSAGE_COMPILATION */,\n                message: format,\n                time: end - start,\n                groupId: `${'translate'}:${key}`\n            });\n        }\n        if (startTag && endTag && mark && measure) {\n            mark(endTag);\n            measure('intlify message compilation', startTag, endTag);\n        }\n    }\n    msg.locale = targetLocale;\n    msg.key = key;\n    msg.source = format;\n    return msg;\n}\nfunction evaluateMessage(context, msg, msgCtx) {\n    // for vue-devtools timeline event\n    let start = null;\n    let startTag;\n    let endTag;\n    if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n        start = window.performance.now();\n        startTag = 'intlify-message-evaluation-start';\n        endTag = 'intlify-message-evaluation-end';\n        mark && mark(startTag);\n    }\n    const messaged = msg(msgCtx);\n    // for vue-devtools timeline event\n    if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n        const end = window.performance.now();\n        const emitter = context.__v_emitter;\n        if (emitter && start) {\n            emitter.emit(\"message-evaluation\" /* VueDevToolsTimelineEvents.MESSAGE_EVALUATION */, {\n                type: \"message-evaluation\" /* VueDevToolsTimelineEvents.MESSAGE_EVALUATION */,\n                value: messaged,\n                time: end - start,\n                groupId: `${'translate'}:${msg.key}`\n            });\n        }\n        if (startTag && endTag && mark && measure) {\n            mark(endTag);\n            measure('intlify message evaluation', startTag, endTag);\n        }\n    }\n    return messaged;\n}\n/** @internal */\nfunction parseTranslateArgs(...args) {\n    const [arg1, arg2, arg3] = args;\n    const options = {};\n    if (!isString(arg1) &&\n        !isNumber(arg1) &&\n        !isMessageFunction(arg1) &&\n        !isMessageAST(arg1)) {\n        throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\n    }\n    // prettier-ignore\n    const key = isNumber(arg1)\n        ? String(arg1)\n        : isMessageFunction(arg1)\n            ? arg1\n            : arg1;\n    if (isNumber(arg2)) {\n        options.plural = arg2;\n    }\n    else if (isString(arg2)) {\n        options.default = arg2;\n    }\n    else if (isPlainObject(arg2) && !isEmptyObject(arg2)) {\n        options.named = arg2;\n    }\n    else if (isArray(arg2)) {\n        options.list = arg2;\n    }\n    if (isNumber(arg3)) {\n        options.plural = arg3;\n    }\n    else if (isString(arg3)) {\n        options.default = arg3;\n    }\n    else if (isPlainObject(arg3)) {\n        assign(options, arg3);\n    }\n    return [key, options];\n}\nfunction getCompileContext(context, locale, key, source, warnHtmlMessage, onError) {\n    return {\n        locale,\n        key,\n        warnHtmlMessage,\n        onError: (err) => {\n            onError && onError(err);\n            if ((process.env.NODE_ENV !== 'production')) {\n                const _source = getSourceForCodeFrame(source);\n                const message = `Message compilation error: ${err.message}`;\n                const codeFrame = err.location &&\n                    _source &&\n                    generateCodeFrame(_source, err.location.start.offset, err.location.end.offset);\n                const emitter = context.__v_emitter;\n                if (emitter && _source) {\n                    emitter.emit(\"compile-error\" /* VueDevToolsTimelineEvents.COMPILE_ERROR */, {\n                        message: _source,\n                        error: err.message,\n                        start: err.location && err.location.start.offset,\n                        end: err.location && err.location.end.offset,\n                        groupId: `${'translate'}:${key}`\n                    });\n                }\n                console.error(codeFrame ? `${message}\\n${codeFrame}` : message);\n            }\n            else {\n                throw err;\n            }\n        },\n        onCacheKey: (source) => generateFormatCacheKey(locale, key, source)\n    };\n}\nfunction getSourceForCodeFrame(source) {\n    if (isString(source)) {\n        return source;\n    }\n    else {\n        if (source.loc && source.loc.source) {\n            return source.loc.source;\n        }\n    }\n}\nfunction getMessageContextOptions(context, locale, message, options) {\n    const { modifiers, pluralRules, messageResolver: resolveValue, fallbackLocale, fallbackWarn, missingWarn, fallbackContext } = context;\n    const resolveMessage = (key) => {\n        let val = resolveValue(message, key);\n        // fallback to root context\n        if (val == null && fallbackContext) {\n            const [, , message] = resolveMessageFormat(fallbackContext, key, locale, fallbackLocale, fallbackWarn, missingWarn);\n            val = resolveValue(message, key);\n        }\n        if (isString(val) || isMessageAST(val)) {\n            let occurred = false;\n            const onError = () => {\n                occurred = true;\n            };\n            const msg = compileMessageFormat(context, key, locale, val, key, onError);\n            return !occurred\n                ? msg\n                : NOOP_MESSAGE_FUNCTION;\n        }\n        else if (isMessageFunction(val)) {\n            return val;\n        }\n        else {\n            // TODO: should be implemented warning message\n            return NOOP_MESSAGE_FUNCTION;\n        }\n    };\n    const ctxOptions = {\n        locale,\n        modifiers,\n        pluralRules,\n        messages: resolveMessage\n    };\n    if (context.processor) {\n        ctxOptions.processor = context.processor;\n    }\n    if (options.list) {\n        ctxOptions.list = options.list;\n    }\n    if (options.named) {\n        ctxOptions.named = options.named;\n    }\n    if (isNumber(options.plural)) {\n        ctxOptions.pluralIndex = options.plural;\n    }\n    return ctxOptions;\n}\n\nconst intlDefined = typeof Intl !== 'undefined';\nconst Availabilities = {\n    dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\n    numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\n};\n\n// implementation of `datetime` function\nfunction datetime(context, ...args) {\n    const { datetimeFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\n    const { __datetimeFormatters } = context;\n    if ((process.env.NODE_ENV !== 'production') && !Availabilities.dateTimeFormat) {\n        onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_DATE));\n        return MISSING_RESOLVE_VALUE;\n    }\n    const [key, value, options, overrides] = parseDateTimeArgs(...args);\n    const missingWarn = isBoolean(options.missingWarn)\n        ? options.missingWarn\n        : context.missingWarn;\n    const fallbackWarn = isBoolean(options.fallbackWarn)\n        ? options.fallbackWarn\n        : context.fallbackWarn;\n    const part = !!options.part;\n    const locale = getLocale(context, options);\n    const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\n    fallbackLocale, locale);\n    if (!isString(key) || key === '') {\n        return new Intl.DateTimeFormat(locale, overrides).format(value);\n    }\n    // resolve format\n    let datetimeFormat = {};\n    let targetLocale;\n    let format = null;\n    let from = locale;\n    let to = null;\n    const type = 'datetime format';\n    for (let i = 0; i < locales.length; i++) {\n        targetLocale = to = locales[i];\n        if ((process.env.NODE_ENV !== 'production') &&\n            locale !== targetLocale &&\n            isTranslateFallbackWarn(fallbackWarn, key)) {\n            onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_DATE_FORMAT, {\n                key,\n                target: targetLocale\n            }));\n        }\n        // for vue-devtools timeline event\n        if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\n            const emitter = context.__v_emitter;\n            if (emitter) {\n                emitter.emit(\"fallback\" /* VueDevToolsTimelineEvents.FALBACK */, {\n                    type,\n                    key,\n                    from,\n                    to,\n                    groupId: `${type}:${key}`\n                });\n            }\n        }\n        datetimeFormat =\n            datetimeFormats[targetLocale] || {};\n        format = datetimeFormat[key];\n        if (isPlainObject(format))\n            break;\n        handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\n        from = to;\n    }\n    // checking format and target locale\n    if (!isPlainObject(format) || !isString(targetLocale)) {\n        return unresolving ? NOT_REOSLVED : key;\n    }\n    let id = `${targetLocale}__${key}`;\n    if (!isEmptyObject(overrides)) {\n        id = `${id}__${JSON.stringify(overrides)}`;\n    }\n    let formatter = __datetimeFormatters.get(id);\n    if (!formatter) {\n        formatter = new Intl.DateTimeFormat(targetLocale, assign({}, format, overrides));\n        __datetimeFormatters.set(id, formatter);\n    }\n    return !part ? formatter.format(value) : formatter.formatToParts(value);\n}\n/** @internal */\nconst DATETIME_FORMAT_OPTIONS_KEYS = [\n    'localeMatcher',\n    'weekday',\n    'era',\n    'year',\n    'month',\n    'day',\n    'hour',\n    'minute',\n    'second',\n    'timeZoneName',\n    'formatMatcher',\n    'hour12',\n    'timeZone',\n    'dateStyle',\n    'timeStyle',\n    'calendar',\n    'dayPeriod',\n    'numberingSystem',\n    'hourCycle',\n    'fractionalSecondDigits'\n];\n/** @internal */\nfunction parseDateTimeArgs(...args) {\n    const [arg1, arg2, arg3, arg4] = args;\n    const options = {};\n    let overrides = {};\n    let value;\n    if (isString(arg1)) {\n        // Only allow ISO strings - other date formats are often supported,\n        // but may cause different results in different browsers.\n        const matches = arg1.match(/(\\d{4}-\\d{2}-\\d{2})(T|\\s)?(.*)/);\n        if (!matches) {\n            throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\n        }\n        // Some browsers can not parse the iso datetime separated by space,\n        // this is a compromise solution by replace the 'T'/' ' with 'T'\n        const dateTime = matches[3]\n            ? matches[3].trim().startsWith('T')\n                ? `${matches[1].trim()}${matches[3].trim()}`\n                : `${matches[1].trim()}T${matches[3].trim()}`\n            : matches[1].trim();\n        value = new Date(dateTime);\n        try {\n            // This will fail if the date is not valid\n            value.toISOString();\n        }\n        catch (e) {\n            throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\n        }\n    }\n    else if (isDate(arg1)) {\n        if (isNaN(arg1.getTime())) {\n            throw createCoreError(CoreErrorCodes.INVALID_DATE_ARGUMENT);\n        }\n        value = arg1;\n    }\n    else if (isNumber(arg1)) {\n        value = arg1;\n    }\n    else {\n        throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\n    }\n    if (isString(arg2)) {\n        options.key = arg2;\n    }\n    else if (isPlainObject(arg2)) {\n        Object.keys(arg2).forEach(key => {\n            if (DATETIME_FORMAT_OPTIONS_KEYS.includes(key)) {\n                overrides[key] = arg2[key];\n            }\n            else {\n                options[key] = arg2[key];\n            }\n        });\n    }\n    if (isString(arg3)) {\n        options.locale = arg3;\n    }\n    else if (isPlainObject(arg3)) {\n        overrides = arg3;\n    }\n    if (isPlainObject(arg4)) {\n        overrides = arg4;\n    }\n    return [options.key || '', value, options, overrides];\n}\n/** @internal */\nfunction clearDateTimeFormat(ctx, locale, format) {\n    const context = ctx;\n    for (const key in format) {\n        const id = `${locale}__${key}`;\n        if (!context.__datetimeFormatters.has(id)) {\n            continue;\n        }\n        context.__datetimeFormatters.delete(id);\n    }\n}\n\n// implementation of `number` function\nfunction number(context, ...args) {\n    const { numberFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\n    const { __numberFormatters } = context;\n    if ((process.env.NODE_ENV !== 'production') && !Availabilities.numberFormat) {\n        onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_NUMBER));\n        return MISSING_RESOLVE_VALUE;\n    }\n    const [key, value, options, overrides] = parseNumberArgs(...args);\n    const missingWarn = isBoolean(options.missingWarn)\n        ? options.missingWarn\n        : context.missingWarn;\n    const fallbackWarn = isBoolean(options.fallbackWarn)\n        ? options.fallbackWarn\n        : context.fallbackWarn;\n    const part = !!options.part;\n    const locale = getLocale(context, options);\n    const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\n    fallbackLocale, locale);\n    if (!isString(key) || key === '') {\n        return new Intl.NumberFormat(locale, overrides).format(value);\n    }\n    // resolve format\n    let numberFormat = {};\n    let targetLocale;\n    let format = null;\n    let from = locale;\n    let to = null;\n    const type = 'number format';\n    for (let i = 0; i < locales.length; i++) {\n        targetLocale = to = locales[i];\n        if ((process.env.NODE_ENV !== 'production') &&\n            locale !== targetLocale &&\n            isTranslateFallbackWarn(fallbackWarn, key)) {\n            onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT, {\n                key,\n                target: targetLocale\n            }));\n        }\n        // for vue-devtools timeline event\n        if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\n            const emitter = context.__v_emitter;\n            if (emitter) {\n                emitter.emit(\"fallback\" /* VueDevToolsTimelineEvents.FALBACK */, {\n                    type,\n                    key,\n                    from,\n                    to,\n                    groupId: `${type}:${key}`\n                });\n            }\n        }\n        numberFormat =\n            numberFormats[targetLocale] || {};\n        format = numberFormat[key];\n        if (isPlainObject(format))\n            break;\n        handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\n        from = to;\n    }\n    // checking format and target locale\n    if (!isPlainObject(format) || !isString(targetLocale)) {\n        return unresolving ? NOT_REOSLVED : key;\n    }\n    let id = `${targetLocale}__${key}`;\n    if (!isEmptyObject(overrides)) {\n        id = `${id}__${JSON.stringify(overrides)}`;\n    }\n    let formatter = __numberFormatters.get(id);\n    if (!formatter) {\n        formatter = new Intl.NumberFormat(targetLocale, assign({}, format, overrides));\n        __numberFormatters.set(id, formatter);\n    }\n    return !part ? formatter.format(value) : formatter.formatToParts(value);\n}\n/** @internal */\nconst NUMBER_FORMAT_OPTIONS_KEYS = [\n    'localeMatcher',\n    'style',\n    'currency',\n    'currencyDisplay',\n    'currencySign',\n    'useGrouping',\n    'minimumIntegerDigits',\n    'minimumFractionDigits',\n    'maximumFractionDigits',\n    'minimumSignificantDigits',\n    'maximumSignificantDigits',\n    'compactDisplay',\n    'notation',\n    'signDisplay',\n    'unit',\n    'unitDisplay',\n    'roundingMode',\n    'roundingPriority',\n    'roundingIncrement',\n    'trailingZeroDisplay'\n];\n/** @internal */\nfunction parseNumberArgs(...args) {\n    const [arg1, arg2, arg3, arg4] = args;\n    const options = {};\n    let overrides = {};\n    if (!isNumber(arg1)) {\n        throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\n    }\n    const value = arg1;\n    if (isString(arg2)) {\n        options.key = arg2;\n    }\n    else if (isPlainObject(arg2)) {\n        Object.keys(arg2).forEach(key => {\n            if (NUMBER_FORMAT_OPTIONS_KEYS.includes(key)) {\n                overrides[key] = arg2[key];\n            }\n            else {\n                options[key] = arg2[key];\n            }\n        });\n    }\n    if (isString(arg3)) {\n        options.locale = arg3;\n    }\n    else if (isPlainObject(arg3)) {\n        overrides = arg3;\n    }\n    if (isPlainObject(arg4)) {\n        overrides = arg4;\n    }\n    return [options.key || '', value, options, overrides];\n}\n/** @internal */\nfunction clearNumberFormat(ctx, locale, format) {\n    const context = ctx;\n    for (const key in format) {\n        const id = `${locale}__${key}`;\n        if (!context.__numberFormatters.has(id)) {\n            continue;\n        }\n        context.__numberFormatters.delete(id);\n    }\n}\n\n{\n    initFeatureFlags();\n}\n\nexport { CoreErrorCodes, CoreWarnCodes, DATETIME_FORMAT_OPTIONS_KEYS, DEFAULT_LOCALE, DEFAULT_MESSAGE_DATA_TYPE, MISSING_RESOLVE_VALUE, NOT_REOSLVED, NUMBER_FORMAT_OPTIONS_KEYS, VERSION, clearCompileCache, clearDateTimeFormat, clearNumberFormat, compile, compileToFunction, createCoreContext, createCoreError, createMessageContext, datetime, fallbackWithLocaleChain, fallbackWithSimple, getAdditionalMeta, getDevToolsHook, getFallbackContext, getLocale, getWarnMessage, handleMissing, initI18nDevTools, isMessageAST, isMessageFunction, isTranslateFallbackWarn, isTranslateMissingWarn, number, parse, parseDateTimeArgs, parseNumberArgs, parseTranslateArgs, registerLocaleFallbacker, registerMessageCompiler, registerMessageResolver, resolveLocale, resolveValue, resolveWithKeyValue, setAdditionalMeta, setDevToolsHook, setFallbackContext, translate, translateDevTools, updateFallbackLocale };\n","export function getDevtoolsGlobalHook() {\n    return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;\n}\nexport function getTarget() {\n    // @ts-ignore\n    return (typeof navigator !== 'undefined' && typeof window !== 'undefined')\n        ? window\n        : typeof global !== 'undefined'\n            ? global\n            : {};\n}\nexport const isProxyAvailable = typeof Proxy === 'function';\n","export const HOOK_SETUP = 'devtools-plugin:setup';\nexport const HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set';\n","let supported;\nlet perf;\nexport function isPerformanceSupported() {\n    var _a;\n    if (supported !== undefined) {\n        return supported;\n    }\n    if (typeof window !== 'undefined' && window.performance) {\n        supported = true;\n        perf = window.performance;\n    }\n    else if (typeof global !== 'undefined' && ((_a = global.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {\n        supported = true;\n        perf = global.perf_hooks.performance;\n    }\n    else {\n        supported = false;\n    }\n    return supported;\n}\nexport function now() {\n    return isPerformanceSupported() ? perf.now() : Date.now();\n}\n","import { HOOK_PLUGIN_SETTINGS_SET } from './const.js';\nimport { now } from './time.js';\nexport class ApiProxy {\n    constructor(plugin, hook) {\n        this.target = null;\n        this.targetQueue = [];\n        this.onQueue = [];\n        this.plugin = plugin;\n        this.hook = hook;\n        const defaultSettings = {};\n        if (plugin.settings) {\n            for (const id in plugin.settings) {\n                const item = plugin.settings[id];\n                defaultSettings[id] = item.defaultValue;\n            }\n        }\n        const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;\n        let currentSettings = Object.assign({}, defaultSettings);\n        try {\n            const raw = localStorage.getItem(localSettingsSaveId);\n            const data = JSON.parse(raw);\n            Object.assign(currentSettings, data);\n        }\n        catch (e) {\n            // noop\n        }\n        this.fallbacks = {\n            getSettings() {\n                return currentSettings;\n            },\n            setSettings(value) {\n                try {\n                    localStorage.setItem(localSettingsSaveId, JSON.stringify(value));\n                }\n                catch (e) {\n                    // noop\n                }\n                currentSettings = value;\n            },\n            now() {\n                return now();\n            },\n        };\n        if (hook) {\n            hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {\n                if (pluginId === this.plugin.id) {\n                    this.fallbacks.setSettings(value);\n                }\n            });\n        }\n        this.proxiedOn = new Proxy({}, {\n            get: (_target, prop) => {\n                if (this.target) {\n                    return this.target.on[prop];\n                }\n                else {\n                    return (...args) => {\n                        this.onQueue.push({\n                            method: prop,\n                            args,\n                        });\n                    };\n                }\n            },\n        });\n        this.proxiedTarget = new Proxy({}, {\n            get: (_target, prop) => {\n                if (this.target) {\n                    return this.target[prop];\n                }\n                else if (prop === 'on') {\n                    return this.proxiedOn;\n                }\n                else if (Object.keys(this.fallbacks).includes(prop)) {\n                    return (...args) => {\n                        this.targetQueue.push({\n                            method: prop,\n                            args,\n                            resolve: () => { },\n                        });\n                        return this.fallbacks[prop](...args);\n                    };\n                }\n                else {\n                    return (...args) => {\n                        return new Promise(resolve => {\n                            this.targetQueue.push({\n                                method: prop,\n                                args,\n                                resolve,\n                            });\n                        });\n                    };\n                }\n            },\n        });\n    }\n    async setRealTarget(target) {\n        this.target = target;\n        for (const item of this.onQueue) {\n            this.target.on[item.method](...item.args);\n        }\n        for (const item of this.targetQueue) {\n            item.resolve(await this.target[item.method](...item.args));\n        }\n    }\n}\n","import { getTarget, getDevtoolsGlobalHook, isProxyAvailable } from './env.js';\nimport { HOOK_SETUP } from './const.js';\nimport { ApiProxy } from './proxy.js';\nexport * from './api/index.js';\nexport * from './plugin.js';\nexport * from './time.js';\nexport function setupDevtoolsPlugin(pluginDescriptor, setupFn) {\n    const descriptor = pluginDescriptor;\n    const target = getTarget();\n    const hook = getDevtoolsGlobalHook();\n    const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy;\n    if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {\n        hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);\n    }\n    else {\n        const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null;\n        const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];\n        list.push({\n            pluginDescriptor: descriptor,\n            setupFn,\n            proxy,\n        });\n        if (proxy)\n            setupFn(proxy.proxiedTarget);\n    }\n}\n","/*!\n  * vue-i18n v9.8.0\n  * (c) 2023 kazuya kawaguchi\n  * Released under the MIT License.\n  */\nimport { getGlobalThis, incrementer, format, makeSymbol, isPlainObject, isArray, deepCopy, isString, hasOwn, isObject, warn, isBoolean, isRegExp, isFunction, inBrowser, assign, isNumber, createEmitter, isEmptyObject } from '@intlify/shared';\nimport { CoreWarnCodes, CoreErrorCodes, createCompileError, DEFAULT_LOCALE, updateFallbackLocale, setFallbackContext, createCoreContext, clearDateTimeFormat, clearNumberFormat, setAdditionalMeta, getFallbackContext, NOT_REOSLVED, isTranslateFallbackWarn, isTranslateMissingWarn, parseTranslateArgs, translate, MISSING_RESOLVE_VALUE, parseDateTimeArgs, datetime, parseNumberArgs, number, isMessageAST, isMessageFunction, fallbackWithLocaleChain, NUMBER_FORMAT_OPTIONS_KEYS, DATETIME_FORMAT_OPTIONS_KEYS, registerMessageCompiler, compile, registerMessageResolver, resolveValue, registerLocaleFallbacker, setDevToolsHook } from '@intlify/core-base';\nimport { createVNode, Text, ref, computed, watch, getCurrentInstance, Fragment, defineComponent, h, effectScope, inject, onMounted, onUnmounted, shallowRef, onBeforeMount, isRef } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\n/**\n * Vue I18n Version\n *\n * @remarks\n * Semver format. Same format as the package.json `version` field.\n *\n * @VueI18nGeneral\n */\nconst VERSION = '9.8.0';\n/**\n * This is only called in esm-bundler builds.\n * istanbul-ignore-next\n */\nfunction initFeatureFlags() {\n    if (typeof __VUE_I18N_FULL_INSTALL__ !== 'boolean') {\n        getGlobalThis().__VUE_I18N_FULL_INSTALL__ = true;\n    }\n    if (typeof __VUE_I18N_LEGACY_API__ !== 'boolean') {\n        getGlobalThis().__VUE_I18N_LEGACY_API__ = true;\n    }\n    if (typeof __INTLIFY_JIT_COMPILATION__ !== 'boolean') {\n        getGlobalThis().__INTLIFY_JIT_COMPILATION__ = false;\n    }\n    if (typeof __INTLIFY_DROP_MESSAGE_COMPILER__ !== 'boolean') {\n        getGlobalThis().__INTLIFY_DROP_MESSAGE_COMPILER__ = false;\n    }\n    if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\n        getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;\n    }\n}\n\nconst code$1 = CoreWarnCodes.__EXTEND_POINT__;\nconst inc$1 = incrementer(code$1);\nconst I18nWarnCodes = {\n    FALLBACK_TO_ROOT: code$1,\n    NOT_SUPPORTED_PRESERVE: inc$1(),\n    NOT_SUPPORTED_FORMATTER: inc$1(),\n    NOT_SUPPORTED_PRESERVE_DIRECTIVE: inc$1(),\n    NOT_SUPPORTED_GET_CHOICE_INDEX: inc$1(),\n    COMPONENT_NAME_LEGACY_COMPATIBLE: inc$1(),\n    NOT_FOUND_PARENT_SCOPE: inc$1(),\n    IGNORE_OBJ_FLATTEN: inc$1(),\n    NOTICE_DROP_ALLOW_COMPOSITION: inc$1() // 17\n};\nconst warnMessages = {\n    [I18nWarnCodes.FALLBACK_TO_ROOT]: `Fall back to {type} '{key}' with root locale.`,\n    [I18nWarnCodes.NOT_SUPPORTED_PRESERVE]: `Not supported 'preserve'.`,\n    [I18nWarnCodes.NOT_SUPPORTED_FORMATTER]: `Not supported 'formatter'.`,\n    [I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE]: `Not supported 'preserveDirectiveContent'.`,\n    [I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX]: `Not supported 'getChoiceIndex'.`,\n    [I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE]: `Component name legacy compatible: '{name}' -> 'i18n'`,\n    [I18nWarnCodes.NOT_FOUND_PARENT_SCOPE]: `Not found parent scope. use the global scope.`,\n    [I18nWarnCodes.IGNORE_OBJ_FLATTEN]: `Ignore object flatten: '{key}' key has an string value`,\n    [I18nWarnCodes.NOTICE_DROP_ALLOW_COMPOSITION]: `'allowComposition' option will be dropped in the next major version. For more information, please see 👉 https://tinyurl.com/2p97mcze`\n};\nfunction getWarnMessage(code, ...args) {\n    return format(warnMessages[code], ...args);\n}\n\nconst code = CoreErrorCodes.__EXTEND_POINT__;\nconst inc = incrementer(code);\nconst I18nErrorCodes = {\n    // composer module errors\n    UNEXPECTED_RETURN_TYPE: code,\n    // legacy module errors\n    INVALID_ARGUMENT: inc(),\n    // i18n module errors\n    MUST_BE_CALL_SETUP_TOP: inc(),\n    NOT_INSTALLED: inc(),\n    NOT_AVAILABLE_IN_LEGACY_MODE: inc(),\n    // directive module errors\n    REQUIRED_VALUE: inc(),\n    INVALID_VALUE: inc(),\n    // vue-devtools errors\n    CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN: inc(),\n    NOT_INSTALLED_WITH_PROVIDE: inc(),\n    // unexpected error\n    UNEXPECTED_ERROR: inc(),\n    // not compatible legacy vue-i18n constructor\n    NOT_COMPATIBLE_LEGACY_VUE_I18N: inc(),\n    // bridge support vue 2.x only\n    BRIDGE_SUPPORT_VUE_2_ONLY: inc(),\n    // need to define `i18n` option in `allowComposition: true` and `useScope: 'local' at `useI18n``\n    MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION: inc(),\n    // Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly\n    NOT_AVAILABLE_COMPOSITION_IN_LEGACY: inc(),\n    // for enhancement\n    __EXTEND_POINT__: inc() // 40\n};\nfunction createI18nError(code, ...args) {\n    return createCompileError(code, null, (process.env.NODE_ENV !== 'production') ? { messages: errorMessages, args } : undefined);\n}\nconst errorMessages = {\n    [I18nErrorCodes.UNEXPECTED_RETURN_TYPE]: 'Unexpected return type in composer',\n    [I18nErrorCodes.INVALID_ARGUMENT]: 'Invalid argument',\n    [I18nErrorCodes.MUST_BE_CALL_SETUP_TOP]: 'Must be called at the top of a `setup` function',\n    [I18nErrorCodes.NOT_INSTALLED]: 'Need to install with `app.use` function',\n    [I18nErrorCodes.UNEXPECTED_ERROR]: 'Unexpected error',\n    [I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE]: 'Not available in legacy mode',\n    [I18nErrorCodes.REQUIRED_VALUE]: `Required in value: {0}`,\n    [I18nErrorCodes.INVALID_VALUE]: `Invalid value`,\n    [I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN]: `Cannot setup vue-devtools plugin`,\n    [I18nErrorCodes.NOT_INSTALLED_WITH_PROVIDE]: 'Need to install with `provide` function',\n    [I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N]: 'Not compatible legacy VueI18n.',\n    [I18nErrorCodes.BRIDGE_SUPPORT_VUE_2_ONLY]: 'vue-i18n-bridge support Vue 2.x only',\n    [I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION]: 'Must define ‘i18n’ option or custom block in Composition API with using local scope in Legacy API mode',\n    [I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY]: 'Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly'\n};\n\nconst TranslateVNodeSymbol = \n/* #__PURE__*/ makeSymbol('__translateVNode');\nconst DatetimePartsSymbol = /* #__PURE__*/ makeSymbol('__datetimeParts');\nconst NumberPartsSymbol = /* #__PURE__*/ makeSymbol('__numberParts');\nconst EnableEmitter = /* #__PURE__*/ makeSymbol('__enableEmitter');\nconst DisableEmitter = /* #__PURE__*/ makeSymbol('__disableEmitter');\nconst SetPluralRulesSymbol = makeSymbol('__setPluralRules');\nmakeSymbol('__intlifyMeta');\nconst InejctWithOptionSymbol = \n/* #__PURE__*/ makeSymbol('__injectWithOption');\nconst DisposeSymbol = /* #__PURE__*/ makeSymbol('__dispose');\nconst __VUE_I18N_BRIDGE__ =  '__VUE_I18N_BRIDGE__';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Transform flat json in obj to normal json in obj\n */\nfunction handleFlatJson(obj) {\n    // check obj\n    if (!isObject(obj)) {\n        return obj;\n    }\n    for (const key in obj) {\n        // check key\n        if (!hasOwn(obj, key)) {\n            continue;\n        }\n        // handle for normal json\n        if (!key.includes('.')) {\n            // recursive process value if value is also a object\n            if (isObject(obj[key])) {\n                handleFlatJson(obj[key]);\n            }\n        }\n        // handle for flat json, transform to normal json\n        else {\n            // go to the last object\n            const subKeys = key.split('.');\n            const lastIndex = subKeys.length - 1;\n            let currentObj = obj;\n            let hasStringValue = false;\n            for (let i = 0; i < lastIndex; i++) {\n                if (!(subKeys[i] in currentObj)) {\n                    currentObj[subKeys[i]] = {};\n                }\n                if (!isObject(currentObj[subKeys[i]])) {\n                    (process.env.NODE_ENV !== 'production') &&\n                        warn(getWarnMessage(I18nWarnCodes.IGNORE_OBJ_FLATTEN, {\n                            key: subKeys[i]\n                        }));\n                    hasStringValue = true;\n                    break;\n                }\n                currentObj = currentObj[subKeys[i]];\n            }\n            // update last object value, delete old property\n            if (!hasStringValue) {\n                currentObj[subKeys[lastIndex]] = obj[key];\n                delete obj[key];\n            }\n            // recursive process value if value is also a object\n            if (isObject(currentObj[subKeys[lastIndex]])) {\n                handleFlatJson(currentObj[subKeys[lastIndex]]);\n            }\n        }\n    }\n    return obj;\n}\nfunction getLocaleMessages(locale, options) {\n    const { messages, __i18n, messageResolver, flatJson } = options;\n    // prettier-ignore\n    const ret = (isPlainObject(messages)\n        ? messages\n        : isArray(__i18n)\n            ? {}\n            : { [locale]: {} });\n    // merge locale messages of i18n custom block\n    if (isArray(__i18n)) {\n        __i18n.forEach(custom => {\n            if ('locale' in custom && 'resource' in custom) {\n                const { locale, resource } = custom;\n                if (locale) {\n                    ret[locale] = ret[locale] || {};\n                    deepCopy(resource, ret[locale]);\n                }\n                else {\n                    deepCopy(resource, ret);\n                }\n            }\n            else {\n                isString(custom) && deepCopy(JSON.parse(custom), ret);\n            }\n        });\n    }\n    // handle messages for flat json\n    if (messageResolver == null && flatJson) {\n        for (const key in ret) {\n            if (hasOwn(ret, key)) {\n                handleFlatJson(ret[key]);\n            }\n        }\n    }\n    return ret;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getComponentOptions(instance) {\n    return instance.type ;\n}\nfunction adjustI18nResources(gl, options, componentOptions // eslint-disable-line @typescript-eslint/no-explicit-any\n) {\n    let messages = isObject(options.messages) ? options.messages : {};\n    if ('__i18nGlobal' in componentOptions) {\n        messages = getLocaleMessages(gl.locale.value, {\n            messages,\n            __i18n: componentOptions.__i18nGlobal\n        });\n    }\n    // merge locale messages\n    const locales = Object.keys(messages);\n    if (locales.length) {\n        locales.forEach(locale => {\n            gl.mergeLocaleMessage(locale, messages[locale]);\n        });\n    }\n    {\n        // merge datetime formats\n        if (isObject(options.datetimeFormats)) {\n            const locales = Object.keys(options.datetimeFormats);\n            if (locales.length) {\n                locales.forEach(locale => {\n                    gl.mergeDateTimeFormat(locale, options.datetimeFormats[locale]);\n                });\n            }\n        }\n        // merge number formats\n        if (isObject(options.numberFormats)) {\n            const locales = Object.keys(options.numberFormats);\n            if (locales.length) {\n                locales.forEach(locale => {\n                    gl.mergeNumberFormat(locale, options.numberFormats[locale]);\n                });\n            }\n        }\n    }\n}\nfunction createTextNode(key) {\n    return createVNode(Text, null, key, 0)\n        ;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// extend VNode interface\nconst DEVTOOLS_META = '__INTLIFY_META__';\nconst NOOP_RETURN_ARRAY = () => [];\nconst NOOP_RETURN_FALSE = () => false;\nlet composerID = 0;\nfunction defineCoreMissingHandler(missing) {\n    return ((ctx, locale, key, type) => {\n        return missing(locale, key, getCurrentInstance() || undefined, type);\n    });\n}\n// for Intlify DevTools\n/* #__NO_SIDE_EFFECTS__ */\nconst getMetaInfo = () => {\n    const instance = getCurrentInstance();\n    let meta = null; // eslint-disable-line @typescript-eslint/no-explicit-any\n    return instance && (meta = getComponentOptions(instance)[DEVTOOLS_META])\n        ? { [DEVTOOLS_META]: meta } // eslint-disable-line @typescript-eslint/no-explicit-any\n        : null;\n};\n/**\n * Create composer interface factory\n *\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction createComposer(options = {}, VueI18nLegacy) {\n    const { __root, __injectWithOption } = options;\n    const _isGlobal = __root === undefined;\n    const flatJson = options.flatJson;\n    let _inheritLocale = isBoolean(options.inheritLocale)\n        ? options.inheritLocale\n        : true;\n    const _locale = ref(\n    // prettier-ignore\n    __root && _inheritLocale\n        ? __root.locale.value\n        : isString(options.locale)\n            ? options.locale\n            : DEFAULT_LOCALE);\n    const _fallbackLocale = ref(\n    // prettier-ignore\n    __root && _inheritLocale\n        ? __root.fallbackLocale.value\n        : isString(options.fallbackLocale) ||\n            isArray(options.fallbackLocale) ||\n            isPlainObject(options.fallbackLocale) ||\n            options.fallbackLocale === false\n            ? options.fallbackLocale\n            : _locale.value);\n    const _messages = ref(getLocaleMessages(_locale.value, options));\n    // prettier-ignore\n    const _datetimeFormats = ref(isPlainObject(options.datetimeFormats)\n            ? options.datetimeFormats\n            : { [_locale.value]: {} })\n        ;\n    // prettier-ignore\n    const _numberFormats = ref(isPlainObject(options.numberFormats)\n            ? options.numberFormats\n            : { [_locale.value]: {} })\n        ;\n    // warning suppress options\n    // prettier-ignore\n    let _missingWarn = __root\n        ? __root.missingWarn\n        : isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\n            ? options.missingWarn\n            : true;\n    // prettier-ignore\n    let _fallbackWarn = __root\n        ? __root.fallbackWarn\n        : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\n            ? options.fallbackWarn\n            : true;\n    // prettier-ignore\n    let _fallbackRoot = __root\n        ? __root.fallbackRoot\n        : isBoolean(options.fallbackRoot)\n            ? options.fallbackRoot\n            : true;\n    // configure fall back to root\n    let _fallbackFormat = !!options.fallbackFormat;\n    // runtime missing\n    let _missing = isFunction(options.missing) ? options.missing : null;\n    let _runtimeMissing = isFunction(options.missing)\n        ? defineCoreMissingHandler(options.missing)\n        : null;\n    // postTranslation handler\n    let _postTranslation = isFunction(options.postTranslation)\n        ? options.postTranslation\n        : null;\n    // prettier-ignore\n    let _warnHtmlMessage = __root\n        ? __root.warnHtmlMessage\n        : isBoolean(options.warnHtmlMessage)\n            ? options.warnHtmlMessage\n            : true;\n    let _escapeParameter = !!options.escapeParameter;\n    // custom linked modifiers\n    // prettier-ignore\n    const _modifiers = __root\n        ? __root.modifiers\n        : isPlainObject(options.modifiers)\n            ? options.modifiers\n            : {};\n    // pluralRules\n    let _pluralRules = options.pluralRules || (__root && __root.pluralRules);\n    // runtime context\n    // eslint-disable-next-line prefer-const\n    let _context;\n    const getCoreContext = () => {\n        _isGlobal && setFallbackContext(null);\n        const ctxOptions = {\n            version: VERSION,\n            locale: _locale.value,\n            fallbackLocale: _fallbackLocale.value,\n            messages: _messages.value,\n            modifiers: _modifiers,\n            pluralRules: _pluralRules,\n            missing: _runtimeMissing === null ? undefined : _runtimeMissing,\n            missingWarn: _missingWarn,\n            fallbackWarn: _fallbackWarn,\n            fallbackFormat: _fallbackFormat,\n            unresolving: true,\n            postTranslation: _postTranslation === null ? undefined : _postTranslation,\n            warnHtmlMessage: _warnHtmlMessage,\n            escapeParameter: _escapeParameter,\n            messageResolver: options.messageResolver,\n            messageCompiler: options.messageCompiler,\n            __meta: { framework: 'vue' }\n        };\n        {\n            ctxOptions.datetimeFormats = _datetimeFormats.value;\n            ctxOptions.numberFormats = _numberFormats.value;\n            ctxOptions.__datetimeFormatters = isPlainObject(_context)\n                ? _context.__datetimeFormatters\n                : undefined;\n            ctxOptions.__numberFormatters = isPlainObject(_context)\n                ? _context.__numberFormatters\n                : undefined;\n        }\n        if ((process.env.NODE_ENV !== 'production')) {\n            ctxOptions.__v_emitter = isPlainObject(_context)\n                ? _context.__v_emitter\n                : undefined;\n        }\n        const ctx = createCoreContext(ctxOptions);\n        _isGlobal && setFallbackContext(ctx);\n        return ctx;\n    };\n    _context = getCoreContext();\n    updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\n    // track reactivity\n    function trackReactivityValues() {\n        return [\n                _locale.value,\n                _fallbackLocale.value,\n                _messages.value,\n                _datetimeFormats.value,\n                _numberFormats.value\n            ]\n            ;\n    }\n    // locale\n    const locale = computed({\n        get: () => _locale.value,\n        set: val => {\n            _locale.value = val;\n            _context.locale = _locale.value;\n        }\n    });\n    // fallbackLocale\n    const fallbackLocale = computed({\n        get: () => _fallbackLocale.value,\n        set: val => {\n            _fallbackLocale.value = val;\n            _context.fallbackLocale = _fallbackLocale.value;\n            updateFallbackLocale(_context, _locale.value, val);\n        }\n    });\n    // messages\n    const messages = computed(() => _messages.value);\n    // datetimeFormats\n    const datetimeFormats = /* #__PURE__*/ computed(() => _datetimeFormats.value);\n    // numberFormats\n    const numberFormats = /* #__PURE__*/ computed(() => _numberFormats.value);\n    // getPostTranslationHandler\n    function getPostTranslationHandler() {\n        return isFunction(_postTranslation) ? _postTranslation : null;\n    }\n    // setPostTranslationHandler\n    function setPostTranslationHandler(handler) {\n        _postTranslation = handler;\n        _context.postTranslation = handler;\n    }\n    // getMissingHandler\n    function getMissingHandler() {\n        return _missing;\n    }\n    // setMissingHandler\n    function setMissingHandler(handler) {\n        if (handler !== null) {\n            _runtimeMissing = defineCoreMissingHandler(handler);\n        }\n        _missing = handler;\n        _context.missing = _runtimeMissing;\n    }\n    function isResolvedTranslateMessage(type, arg // eslint-disable-line @typescript-eslint/no-explicit-any\n    ) {\n        return type !== 'translate' || !arg.resolvedMessage;\n    }\n    const wrapWithDeps = (fn, argumentParser, warnType, fallbackSuccess, fallbackFail, successCondition) => {\n        trackReactivityValues(); // track reactive dependency\n        // NOTE: experimental !!\n        let ret;\n        try {\n            if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n                setAdditionalMeta(getMetaInfo());\n            }\n            if (!_isGlobal) {\n                _context.fallbackContext = __root\n                    ? getFallbackContext()\n                    : undefined;\n            }\n            ret = fn(_context);\n        }\n        finally {\n            if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n                setAdditionalMeta(null);\n            }\n            if (!_isGlobal) {\n                _context.fallbackContext = undefined;\n            }\n        }\n        if ((warnType !== 'translate exists' && // for not `te` (e.g `t`)\n            isNumber(ret) &&\n            ret === NOT_REOSLVED) ||\n            (warnType === 'translate exists' && !ret) // for `te`\n        ) {\n            const [key, arg2] = argumentParser();\n            if ((process.env.NODE_ENV !== 'production') &&\n                __root &&\n                isString(key) &&\n                isResolvedTranslateMessage(warnType, arg2)) {\n                if (_fallbackRoot &&\n                    (isTranslateFallbackWarn(_fallbackWarn, key) ||\n                        isTranslateMissingWarn(_missingWarn, key))) {\n                    warn(getWarnMessage(I18nWarnCodes.FALLBACK_TO_ROOT, {\n                        key,\n                        type: warnType\n                    }));\n                }\n                // for vue-devtools timeline event\n                if ((process.env.NODE_ENV !== 'production')) {\n                    const { __v_emitter: emitter } = _context;\n                    if (emitter && _fallbackRoot) {\n                        emitter.emit(\"fallback\" /* VueDevToolsTimelineEvents.FALBACK */, {\n                            type: warnType,\n                            key,\n                            to: 'global',\n                            groupId: `${warnType}:${key}`\n                        });\n                    }\n                }\n            }\n            return __root && _fallbackRoot\n                ? fallbackSuccess(__root)\n                : fallbackFail(key);\n        }\n        else if (successCondition(ret)) {\n            return ret;\n        }\n        else {\n            /* istanbul ignore next */\n            throw createI18nError(I18nErrorCodes.UNEXPECTED_RETURN_TYPE);\n        }\n    };\n    // t\n    function t(...args) {\n        return wrapWithDeps(context => Reflect.apply(translate, null, [context, ...args]), () => parseTranslateArgs(...args), 'translate', root => Reflect.apply(root.t, root, [...args]), key => key, val => isString(val));\n    }\n    // rt\n    function rt(...args) {\n        const [arg1, arg2, arg3] = args;\n        if (arg3 && !isObject(arg3)) {\n            throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\n        }\n        return t(...[arg1, arg2, assign({ resolvedMessage: true }, arg3 || {})]);\n    }\n    // d\n    function d(...args) {\n        return wrapWithDeps(context => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), 'datetime format', root => Reflect.apply(root.d, root, [...args]), () => MISSING_RESOLVE_VALUE, val => isString(val));\n    }\n    // n\n    function n(...args) {\n        return wrapWithDeps(context => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), 'number format', root => Reflect.apply(root.n, root, [...args]), () => MISSING_RESOLVE_VALUE, val => isString(val));\n    }\n    // for custom processor\n    function normalize(values) {\n        return values.map(val => isString(val) || isNumber(val) || isBoolean(val)\n            ? createTextNode(String(val))\n            : val);\n    }\n    const interpolate = (val) => val;\n    const processor = {\n        normalize,\n        interpolate,\n        type: 'vnode'\n    };\n    // translateVNode, using for `i18n-t` component\n    function translateVNode(...args) {\n        return wrapWithDeps(context => {\n            let ret;\n            const _context = context;\n            try {\n                _context.processor = processor;\n                ret = Reflect.apply(translate, null, [_context, ...args]);\n            }\n            finally {\n                _context.processor = null;\n            }\n            return ret;\n        }, () => parseTranslateArgs(...args), 'translate', \n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        root => root[TranslateVNodeSymbol](...args), key => [createTextNode(key)], val => isArray(val));\n    }\n    // numberParts, using for `i18n-n` component\n    function numberParts(...args) {\n        return wrapWithDeps(context => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), 'number format', \n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        root => root[NumberPartsSymbol](...args), NOOP_RETURN_ARRAY, val => isString(val) || isArray(val));\n    }\n    // datetimeParts, using for `i18n-d` component\n    function datetimeParts(...args) {\n        return wrapWithDeps(context => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), 'datetime format', \n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        root => root[DatetimePartsSymbol](...args), NOOP_RETURN_ARRAY, val => isString(val) || isArray(val));\n    }\n    function setPluralRules(rules) {\n        _pluralRules = rules;\n        _context.pluralRules = _pluralRules;\n    }\n    // te\n    function te(key, locale) {\n        return wrapWithDeps(() => {\n            if (!key) {\n                return false;\n            }\n            const targetLocale = isString(locale) ? locale : _locale.value;\n            const message = getLocaleMessage(targetLocale);\n            const resolved = _context.messageResolver(message, key);\n            return (isMessageAST(resolved) ||\n                isMessageFunction(resolved) ||\n                isString(resolved));\n        }, () => [key], 'translate exists', root => {\n            return Reflect.apply(root.te, root, [key, locale]);\n        }, NOOP_RETURN_FALSE, val => isBoolean(val));\n    }\n    function resolveMessages(key) {\n        let messages = null;\n        const locales = fallbackWithLocaleChain(_context, _fallbackLocale.value, _locale.value);\n        for (let i = 0; i < locales.length; i++) {\n            const targetLocaleMessages = _messages.value[locales[i]] || {};\n            const messageValue = _context.messageResolver(targetLocaleMessages, key);\n            if (messageValue != null) {\n                messages = messageValue;\n                break;\n            }\n        }\n        return messages;\n    }\n    // tm\n    function tm(key) {\n        const messages = resolveMessages(key);\n        // prettier-ignore\n        return messages != null\n            ? messages\n            : __root\n                ? __root.tm(key) || {}\n                : {};\n    }\n    // getLocaleMessage\n    function getLocaleMessage(locale) {\n        return (_messages.value[locale] || {});\n    }\n    // setLocaleMessage\n    function setLocaleMessage(locale, message) {\n        if (flatJson) {\n            const _message = { [locale]: message };\n            for (const key in _message) {\n                if (hasOwn(_message, key)) {\n                    handleFlatJson(_message[key]);\n                }\n            }\n            message = _message[locale];\n        }\n        _messages.value[locale] = message;\n        _context.messages = _messages.value;\n    }\n    // mergeLocaleMessage\n    function mergeLocaleMessage(locale, message) {\n        _messages.value[locale] = _messages.value[locale] || {};\n        const _message = { [locale]: message };\n        for (const key in _message) {\n            if (hasOwn(_message, key)) {\n                handleFlatJson(_message[key]);\n            }\n        }\n        message = _message[locale];\n        deepCopy(message, _messages.value[locale]);\n        _context.messages = _messages.value;\n    }\n    // getDateTimeFormat\n    function getDateTimeFormat(locale) {\n        return _datetimeFormats.value[locale] || {};\n    }\n    // setDateTimeFormat\n    function setDateTimeFormat(locale, format) {\n        _datetimeFormats.value[locale] = format;\n        _context.datetimeFormats = _datetimeFormats.value;\n        clearDateTimeFormat(_context, locale, format);\n    }\n    // mergeDateTimeFormat\n    function mergeDateTimeFormat(locale, format) {\n        _datetimeFormats.value[locale] = assign(_datetimeFormats.value[locale] || {}, format);\n        _context.datetimeFormats = _datetimeFormats.value;\n        clearDateTimeFormat(_context, locale, format);\n    }\n    // getNumberFormat\n    function getNumberFormat(locale) {\n        return _numberFormats.value[locale] || {};\n    }\n    // setNumberFormat\n    function setNumberFormat(locale, format) {\n        _numberFormats.value[locale] = format;\n        _context.numberFormats = _numberFormats.value;\n        clearNumberFormat(_context, locale, format);\n    }\n    // mergeNumberFormat\n    function mergeNumberFormat(locale, format) {\n        _numberFormats.value[locale] = assign(_numberFormats.value[locale] || {}, format);\n        _context.numberFormats = _numberFormats.value;\n        clearNumberFormat(_context, locale, format);\n    }\n    // for debug\n    composerID++;\n    // watch root locale & fallbackLocale\n    if (__root && inBrowser) {\n        watch(__root.locale, (val) => {\n            if (_inheritLocale) {\n                _locale.value = val;\n                _context.locale = val;\n                updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\n            }\n        });\n        watch(__root.fallbackLocale, (val) => {\n            if (_inheritLocale) {\n                _fallbackLocale.value = val;\n                _context.fallbackLocale = val;\n                updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\n            }\n        });\n    }\n    // define basic composition API!\n    const composer = {\n        id: composerID,\n        locale,\n        fallbackLocale,\n        get inheritLocale() {\n            return _inheritLocale;\n        },\n        set inheritLocale(val) {\n            _inheritLocale = val;\n            if (val && __root) {\n                _locale.value = __root.locale.value;\n                _fallbackLocale.value = __root.fallbackLocale.value;\n                updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\n            }\n        },\n        get availableLocales() {\n            return Object.keys(_messages.value).sort();\n        },\n        messages,\n        get modifiers() {\n            return _modifiers;\n        },\n        get pluralRules() {\n            return _pluralRules || {};\n        },\n        get isGlobal() {\n            return _isGlobal;\n        },\n        get missingWarn() {\n            return _missingWarn;\n        },\n        set missingWarn(val) {\n            _missingWarn = val;\n            _context.missingWarn = _missingWarn;\n        },\n        get fallbackWarn() {\n            return _fallbackWarn;\n        },\n        set fallbackWarn(val) {\n            _fallbackWarn = val;\n            _context.fallbackWarn = _fallbackWarn;\n        },\n        get fallbackRoot() {\n            return _fallbackRoot;\n        },\n        set fallbackRoot(val) {\n            _fallbackRoot = val;\n        },\n        get fallbackFormat() {\n            return _fallbackFormat;\n        },\n        set fallbackFormat(val) {\n            _fallbackFormat = val;\n            _context.fallbackFormat = _fallbackFormat;\n        },\n        get warnHtmlMessage() {\n            return _warnHtmlMessage;\n        },\n        set warnHtmlMessage(val) {\n            _warnHtmlMessage = val;\n            _context.warnHtmlMessage = val;\n        },\n        get escapeParameter() {\n            return _escapeParameter;\n        },\n        set escapeParameter(val) {\n            _escapeParameter = val;\n            _context.escapeParameter = val;\n        },\n        t,\n        getLocaleMessage,\n        setLocaleMessage,\n        mergeLocaleMessage,\n        getPostTranslationHandler,\n        setPostTranslationHandler,\n        getMissingHandler,\n        setMissingHandler,\n        [SetPluralRulesSymbol]: setPluralRules\n    };\n    {\n        composer.datetimeFormats = datetimeFormats;\n        composer.numberFormats = numberFormats;\n        composer.rt = rt;\n        composer.te = te;\n        composer.tm = tm;\n        composer.d = d;\n        composer.n = n;\n        composer.getDateTimeFormat = getDateTimeFormat;\n        composer.setDateTimeFormat = setDateTimeFormat;\n        composer.mergeDateTimeFormat = mergeDateTimeFormat;\n        composer.getNumberFormat = getNumberFormat;\n        composer.setNumberFormat = setNumberFormat;\n        composer.mergeNumberFormat = mergeNumberFormat;\n        composer[InejctWithOptionSymbol] = __injectWithOption;\n        composer[TranslateVNodeSymbol] = translateVNode;\n        composer[DatetimePartsSymbol] = datetimeParts;\n        composer[NumberPartsSymbol] = numberParts;\n    }\n    // for vue-devtools timeline event\n    if ((process.env.NODE_ENV !== 'production')) {\n        composer[EnableEmitter] = (emitter) => {\n            _context.__v_emitter = emitter;\n        };\n        composer[DisableEmitter] = () => {\n            _context.__v_emitter = undefined;\n        };\n    }\n    return composer;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Convert to I18n Composer Options from VueI18n Options\n *\n * @internal\n */\nfunction convertComposerOptions(options) {\n    const locale = isString(options.locale) ? options.locale : DEFAULT_LOCALE;\n    const fallbackLocale = isString(options.fallbackLocale) ||\n        isArray(options.fallbackLocale) ||\n        isPlainObject(options.fallbackLocale) ||\n        options.fallbackLocale === false\n        ? options.fallbackLocale\n        : locale;\n    const missing = isFunction(options.missing) ? options.missing : undefined;\n    const missingWarn = isBoolean(options.silentTranslationWarn) ||\n        isRegExp(options.silentTranslationWarn)\n        ? !options.silentTranslationWarn\n        : true;\n    const fallbackWarn = isBoolean(options.silentFallbackWarn) ||\n        isRegExp(options.silentFallbackWarn)\n        ? !options.silentFallbackWarn\n        : true;\n    const fallbackRoot = isBoolean(options.fallbackRoot)\n        ? options.fallbackRoot\n        : true;\n    const fallbackFormat = !!options.formatFallbackMessages;\n    const modifiers = isPlainObject(options.modifiers) ? options.modifiers : {};\n    const pluralizationRules = options.pluralizationRules;\n    const postTranslation = isFunction(options.postTranslation)\n        ? options.postTranslation\n        : undefined;\n    const warnHtmlMessage = isString(options.warnHtmlInMessage)\n        ? options.warnHtmlInMessage !== 'off'\n        : true;\n    const escapeParameter = !!options.escapeParameterHtml;\n    const inheritLocale = isBoolean(options.sync) ? options.sync : true;\n    if ((process.env.NODE_ENV !== 'production') && options.formatter) {\n        warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\n    }\n    if ((process.env.NODE_ENV !== 'production') && options.preserveDirectiveContent) {\n        warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\n    }\n    let messages = options.messages;\n    if (isPlainObject(options.sharedMessages)) {\n        const sharedMessages = options.sharedMessages;\n        const locales = Object.keys(sharedMessages);\n        messages = locales.reduce((messages, locale) => {\n            const message = messages[locale] || (messages[locale] = {});\n            assign(message, sharedMessages[locale]);\n            return messages;\n        }, (messages || {}));\n    }\n    const { __i18n, __root, __injectWithOption } = options;\n    const datetimeFormats = options.datetimeFormats;\n    const numberFormats = options.numberFormats;\n    const flatJson = options.flatJson;\n    return {\n        locale,\n        fallbackLocale,\n        messages,\n        flatJson,\n        datetimeFormats,\n        numberFormats,\n        missing,\n        missingWarn,\n        fallbackWarn,\n        fallbackRoot,\n        fallbackFormat,\n        modifiers,\n        pluralRules: pluralizationRules,\n        postTranslation,\n        warnHtmlMessage,\n        escapeParameter,\n        messageResolver: options.messageResolver,\n        inheritLocale,\n        __i18n,\n        __root,\n        __injectWithOption\n    };\n}\n/**\n * create VueI18n interface factory\n *\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction createVueI18n(options = {}, VueI18nLegacy) {\n    {\n        const composer = createComposer(convertComposerOptions(options));\n        const { __extender } = options;\n        // defines VueI18n\n        const vueI18n = {\n            // id\n            id: composer.id,\n            // locale\n            get locale() {\n                return composer.locale.value;\n            },\n            set locale(val) {\n                composer.locale.value = val;\n            },\n            // fallbackLocale\n            get fallbackLocale() {\n                return composer.fallbackLocale.value;\n            },\n            set fallbackLocale(val) {\n                composer.fallbackLocale.value = val;\n            },\n            // messages\n            get messages() {\n                return composer.messages.value;\n            },\n            // datetimeFormats\n            get datetimeFormats() {\n                return composer.datetimeFormats.value;\n            },\n            // numberFormats\n            get numberFormats() {\n                return composer.numberFormats.value;\n            },\n            // availableLocales\n            get availableLocales() {\n                return composer.availableLocales;\n            },\n            // formatter\n            get formatter() {\n                (process.env.NODE_ENV !== 'production') && warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\n                // dummy\n                return {\n                    interpolate() {\n                        return [];\n                    }\n                };\n            },\n            set formatter(val) {\n                (process.env.NODE_ENV !== 'production') && warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\n            },\n            // missing\n            get missing() {\n                return composer.getMissingHandler();\n            },\n            set missing(handler) {\n                composer.setMissingHandler(handler);\n            },\n            // silentTranslationWarn\n            get silentTranslationWarn() {\n                return isBoolean(composer.missingWarn)\n                    ? !composer.missingWarn\n                    : composer.missingWarn;\n            },\n            set silentTranslationWarn(val) {\n                composer.missingWarn = isBoolean(val) ? !val : val;\n            },\n            // silentFallbackWarn\n            get silentFallbackWarn() {\n                return isBoolean(composer.fallbackWarn)\n                    ? !composer.fallbackWarn\n                    : composer.fallbackWarn;\n            },\n            set silentFallbackWarn(val) {\n                composer.fallbackWarn = isBoolean(val) ? !val : val;\n            },\n            // modifiers\n            get modifiers() {\n                return composer.modifiers;\n            },\n            // formatFallbackMessages\n            get formatFallbackMessages() {\n                return composer.fallbackFormat;\n            },\n            set formatFallbackMessages(val) {\n                composer.fallbackFormat = val;\n            },\n            // postTranslation\n            get postTranslation() {\n                return composer.getPostTranslationHandler();\n            },\n            set postTranslation(handler) {\n                composer.setPostTranslationHandler(handler);\n            },\n            // sync\n            get sync() {\n                return composer.inheritLocale;\n            },\n            set sync(val) {\n                composer.inheritLocale = val;\n            },\n            // warnInHtmlMessage\n            get warnHtmlInMessage() {\n                return composer.warnHtmlMessage ? 'warn' : 'off';\n            },\n            set warnHtmlInMessage(val) {\n                composer.warnHtmlMessage = val !== 'off';\n            },\n            // escapeParameterHtml\n            get escapeParameterHtml() {\n                return composer.escapeParameter;\n            },\n            set escapeParameterHtml(val) {\n                composer.escapeParameter = val;\n            },\n            // preserveDirectiveContent\n            get preserveDirectiveContent() {\n                (process.env.NODE_ENV !== 'production') &&\n                    warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\n                return true;\n            },\n            set preserveDirectiveContent(val) {\n                (process.env.NODE_ENV !== 'production') &&\n                    warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\n            },\n            // pluralizationRules\n            get pluralizationRules() {\n                return composer.pluralRules || {};\n            },\n            // for internal\n            __composer: composer,\n            // t\n            t(...args) {\n                const [arg1, arg2, arg3] = args;\n                const options = {};\n                let list = null;\n                let named = null;\n                if (!isString(arg1)) {\n                    throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\n                }\n                const key = arg1;\n                if (isString(arg2)) {\n                    options.locale = arg2;\n                }\n                else if (isArray(arg2)) {\n                    list = arg2;\n                }\n                else if (isPlainObject(arg2)) {\n                    named = arg2;\n                }\n                if (isArray(arg3)) {\n                    list = arg3;\n                }\n                else if (isPlainObject(arg3)) {\n                    named = arg3;\n                }\n                // return composer.t(key, (list || named || {}) as any, options)\n                return Reflect.apply(composer.t, composer, [\n                    key,\n                    (list || named || {}),\n                    options\n                ]);\n            },\n            rt(...args) {\n                return Reflect.apply(composer.rt, composer, [...args]);\n            },\n            // tc\n            tc(...args) {\n                const [arg1, arg2, arg3] = args;\n                const options = { plural: 1 };\n                let list = null;\n                let named = null;\n                if (!isString(arg1)) {\n                    throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\n                }\n                const key = arg1;\n                if (isString(arg2)) {\n                    options.locale = arg2;\n                }\n                else if (isNumber(arg2)) {\n                    options.plural = arg2;\n                }\n                else if (isArray(arg2)) {\n                    list = arg2;\n                }\n                else if (isPlainObject(arg2)) {\n                    named = arg2;\n                }\n                if (isString(arg3)) {\n                    options.locale = arg3;\n                }\n                else if (isArray(arg3)) {\n                    list = arg3;\n                }\n                else if (isPlainObject(arg3)) {\n                    named = arg3;\n                }\n                // return composer.t(key, (list || named || {}) as any, options)\n                return Reflect.apply(composer.t, composer, [\n                    key,\n                    (list || named || {}),\n                    options\n                ]);\n            },\n            // te\n            te(key, locale) {\n                return composer.te(key, locale);\n            },\n            // tm\n            tm(key) {\n                return composer.tm(key);\n            },\n            // getLocaleMessage\n            getLocaleMessage(locale) {\n                return composer.getLocaleMessage(locale);\n            },\n            // setLocaleMessage\n            setLocaleMessage(locale, message) {\n                composer.setLocaleMessage(locale, message);\n            },\n            // mergeLocaleMessage\n            mergeLocaleMessage(locale, message) {\n                composer.mergeLocaleMessage(locale, message);\n            },\n            // d\n            d(...args) {\n                return Reflect.apply(composer.d, composer, [...args]);\n            },\n            // getDateTimeFormat\n            getDateTimeFormat(locale) {\n                return composer.getDateTimeFormat(locale);\n            },\n            // setDateTimeFormat\n            setDateTimeFormat(locale, format) {\n                composer.setDateTimeFormat(locale, format);\n            },\n            // mergeDateTimeFormat\n            mergeDateTimeFormat(locale, format) {\n                composer.mergeDateTimeFormat(locale, format);\n            },\n            // n\n            n(...args) {\n                return Reflect.apply(composer.n, composer, [...args]);\n            },\n            // getNumberFormat\n            getNumberFormat(locale) {\n                return composer.getNumberFormat(locale);\n            },\n            // setNumberFormat\n            setNumberFormat(locale, format) {\n                composer.setNumberFormat(locale, format);\n            },\n            // mergeNumberFormat\n            mergeNumberFormat(locale, format) {\n                composer.mergeNumberFormat(locale, format);\n            },\n            // getChoiceIndex\n            // eslint-disable-next-line @typescript-eslint/no-unused-vars\n            getChoiceIndex(choice, choicesLength) {\n                (process.env.NODE_ENV !== 'production') &&\n                    warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX));\n                return -1;\n            }\n        };\n        vueI18n.__extender = __extender;\n        // for vue-devtools timeline event\n        if ((process.env.NODE_ENV !== 'production')) {\n            vueI18n.__enableEmitter = (emitter) => {\n                const __composer = composer;\n                __composer[EnableEmitter] && __composer[EnableEmitter](emitter);\n            };\n            vueI18n.__disableEmitter = () => {\n                const __composer = composer;\n                __composer[DisableEmitter] && __composer[DisableEmitter]();\n            };\n        }\n        return vueI18n;\n    }\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst baseFormatProps = {\n    tag: {\n        type: [String, Object]\n    },\n    locale: {\n        type: String\n    },\n    scope: {\n        type: String,\n        // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050\n        validator: (val /* ComponentI18nScope */) => val === 'parent' || val === 'global',\n        default: 'parent' /* ComponentI18nScope */\n    },\n    i18n: {\n        type: Object\n    }\n};\n\nfunction getInterpolateArg(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n{ slots }, // SetupContext,\nkeys) {\n    if (keys.length === 1 && keys[0] === 'default') {\n        // default slot with list\n        const ret = slots.default ? slots.default() : [];\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        return ret.reduce((slot, current) => {\n            return [\n                ...slot,\n                // prettier-ignore\n                ...(current.type === Fragment ? current.children : [current]\n                    )\n            ];\n        }, []);\n    }\n    else {\n        // named slots\n        return keys.reduce((arg, key) => {\n            const slot = slots[key];\n            if (slot) {\n                arg[key] = slot();\n            }\n            return arg;\n        }, {});\n    }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getFragmentableTag(tag) {\n    return Fragment ;\n}\n\nconst TranslationImpl = /*#__PURE__*/ defineComponent({\n    /* eslint-disable */\n    name: 'i18n-t',\n    props: assign({\n        keypath: {\n            type: String,\n            required: true\n        },\n        plural: {\n            type: [Number, String],\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            validator: (val) => isNumber(val) || !isNaN(val)\n        }\n    }, baseFormatProps),\n    /* eslint-enable */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    setup(props, context) {\n        const { slots, attrs } = context;\n        // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050\n        const i18n = props.i18n ||\n            useI18n({\n                useScope: props.scope,\n                __useComponent: true\n            });\n        return () => {\n            const keys = Object.keys(slots).filter(key => key !== '_');\n            const options = {};\n            if (props.locale) {\n                options.locale = props.locale;\n            }\n            if (props.plural !== undefined) {\n                options.plural = isString(props.plural) ? +props.plural : props.plural;\n            }\n            const arg = getInterpolateArg(context, keys);\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            const children = i18n[TranslateVNodeSymbol](props.keypath, arg, options);\n            const assignedAttrs = assign({}, attrs);\n            const tag = isString(props.tag) || isObject(props.tag)\n                ? props.tag\n                : getFragmentableTag();\n            return h(tag, assignedAttrs, children);\n        };\n    }\n});\n/**\n * export the public type for h/tsx inference\n * also to avoid inline import() in generated d.ts files\n */\n/**\n * Translation Component\n *\n * @remarks\n * See the following items for property about details\n *\n * @VueI18nSee [TranslationProps](component#translationprops)\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\n * @VueI18nSee [Component Interpolation](../guide/advanced/component)\n *\n * @example\n * ```html\n * <div id=\"app\">\n *   <!-- ... -->\n *   <i18n keypath=\"term\" tag=\"label\" for=\"tos\">\n *     <a :href=\"url\" target=\"_blank\">{{ $t('tos') }}</a>\n *   </i18n>\n *   <!-- ... -->\n * </div>\n * ```\n * ```js\n * import { createApp } from 'vue'\n * import { createI18n } from 'vue-i18n'\n *\n * const messages = {\n *   en: {\n *     tos: 'Term of Service',\n *     term: 'I accept xxx {0}.'\n *   },\n *   ja: {\n *     tos: '利用規約',\n *     term: '私は xxx の{0}に同意します。'\n *   }\n * }\n *\n * const i18n = createI18n({\n *   locale: 'en',\n *   messages\n * })\n *\n * const app = createApp({\n *   data: {\n *     url: '/term'\n *   }\n * }).use(i18n).mount('#app')\n * ```\n *\n * @VueI18nComponent\n */\nconst Translation = TranslationImpl;\nconst I18nT = Translation;\n\nfunction isVNode(target) {\n    return isArray(target) && !isString(target[0]);\n}\nfunction renderFormatter(props, context, slotKeys, partFormatter) {\n    const { slots, attrs } = context;\n    return () => {\n        const options = { part: true };\n        let overrides = {};\n        if (props.locale) {\n            options.locale = props.locale;\n        }\n        if (isString(props.format)) {\n            options.key = props.format;\n        }\n        else if (isObject(props.format)) {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            if (isString(props.format.key)) {\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                options.key = props.format.key;\n            }\n            // Filter out number format options only\n            overrides = Object.keys(props.format).reduce((options, prop) => {\n                return slotKeys.includes(prop)\n                    ? assign({}, options, { [prop]: props.format[prop] }) // eslint-disable-line @typescript-eslint/no-explicit-any\n                    : options;\n            }, {});\n        }\n        const parts = partFormatter(...[props.value, options, overrides]);\n        let children = [options.key];\n        if (isArray(parts)) {\n            children = parts.map((part, index) => {\n                const slot = slots[part.type];\n                const node = slot\n                    ? slot({ [part.type]: part.value, index, parts })\n                    : [part.value];\n                if (isVNode(node)) {\n                    node[0].key = `${part.type}-${index}`;\n                }\n                return node;\n            });\n        }\n        else if (isString(parts)) {\n            children = [parts];\n        }\n        const assignedAttrs = assign({}, attrs);\n        const tag = isString(props.tag) || isObject(props.tag)\n            ? props.tag\n            : getFragmentableTag();\n        return h(tag, assignedAttrs, children);\n    };\n}\n\nconst NumberFormatImpl = /*#__PURE__*/ defineComponent({\n    /* eslint-disable */\n    name: 'i18n-n',\n    props: assign({\n        value: {\n            type: Number,\n            required: true\n        },\n        format: {\n            type: [String, Object]\n        }\n    }, baseFormatProps),\n    /* eslint-enable */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    setup(props, context) {\n        const i18n = props.i18n ||\n            useI18n({\n                useScope: 'parent',\n                __useComponent: true\n            });\n        return renderFormatter(props, context, NUMBER_FORMAT_OPTIONS_KEYS, (...args) => \n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        i18n[NumberPartsSymbol](...args));\n    }\n});\n/**\n * export the public type for h/tsx inference\n * also to avoid inline import() in generated d.ts files\n */\n/**\n * Number Format Component\n *\n * @remarks\n * See the following items for property about details\n *\n * @VueI18nSee [FormattableProps](component#formattableprops)\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\n * @VueI18nSee [Custom Formatting](../guide/essentials/number#custom-formatting)\n *\n * @VueI18nDanger\n * Not supported IE, due to no support `Intl.NumberFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/formatToParts)\n *\n * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-numberformat)\n *\n * @VueI18nComponent\n */\nconst NumberFormat = NumberFormatImpl;\nconst I18nN = NumberFormat;\n\nconst DatetimeFormatImpl = /* #__PURE__*/ defineComponent({\n    /* eslint-disable */\n    name: 'i18n-d',\n    props: assign({\n        value: {\n            type: [Number, Date],\n            required: true\n        },\n        format: {\n            type: [String, Object]\n        }\n    }, baseFormatProps),\n    /* eslint-enable */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    setup(props, context) {\n        const i18n = props.i18n ||\n            useI18n({\n                useScope: 'parent',\n                __useComponent: true\n            });\n        return renderFormatter(props, context, DATETIME_FORMAT_OPTIONS_KEYS, (...args) => \n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        i18n[DatetimePartsSymbol](...args));\n    }\n});\n/**\n * Datetime Format Component\n *\n * @remarks\n * See the following items for property about details\n *\n * @VueI18nSee [FormattableProps](component#formattableprops)\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\n * @VueI18nSee [Custom Formatting](../guide/essentials/datetime#custom-formatting)\n *\n * @VueI18nDanger\n * Not supported IE, due to no support `Intl.DateTimeFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts)\n *\n * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-datetimeformat)\n *\n * @VueI18nComponent\n */\nconst DatetimeFormat = DatetimeFormatImpl;\nconst I18nD = DatetimeFormat;\n\nfunction getComposer$2(i18n, instance) {\n    const i18nInternal = i18n;\n    if (i18n.mode === 'composition') {\n        return (i18nInternal.__getInstance(instance) || i18n.global);\n    }\n    else {\n        const vueI18n = i18nInternal.__getInstance(instance);\n        return vueI18n != null\n            ? vueI18n.__composer\n            : i18n.global.__composer;\n    }\n}\nfunction vTDirective(i18n) {\n    const _process = (binding) => {\n        const { instance, modifiers, value } = binding;\n        /* istanbul ignore if */\n        if (!instance || !instance.$) {\n            throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n        }\n        const composer = getComposer$2(i18n, instance.$);\n        if ((process.env.NODE_ENV !== 'production') && modifiers.preserve) {\n            warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE));\n        }\n        const parsedValue = parseValue(value);\n        return [\n            Reflect.apply(composer.t, composer, [...makeParams(parsedValue)]),\n            composer\n        ];\n    };\n    const register = (el, binding) => {\n        const [textContent, composer] = _process(binding);\n        if (inBrowser && i18n.global === composer) {\n            // global scope only\n            el.__i18nWatcher = watch(composer.locale, () => {\n                binding.instance && binding.instance.$forceUpdate();\n            });\n        }\n        el.__composer = composer;\n        el.textContent = textContent;\n    };\n    const unregister = (el) => {\n        if (inBrowser && el.__i18nWatcher) {\n            el.__i18nWatcher();\n            el.__i18nWatcher = undefined;\n            delete el.__i18nWatcher;\n        }\n        if (el.__composer) {\n            el.__composer = undefined;\n            delete el.__composer;\n        }\n    };\n    const update = (el, { value }) => {\n        if (el.__composer) {\n            const composer = el.__composer;\n            const parsedValue = parseValue(value);\n            el.textContent = Reflect.apply(composer.t, composer, [\n                ...makeParams(parsedValue)\n            ]);\n        }\n    };\n    const getSSRProps = (binding) => {\n        const [textContent] = _process(binding);\n        return { textContent };\n    };\n    return {\n        created: register,\n        unmounted: unregister,\n        beforeUpdate: update,\n        getSSRProps\n    };\n}\nfunction parseValue(value) {\n    if (isString(value)) {\n        return { path: value };\n    }\n    else if (isPlainObject(value)) {\n        if (!('path' in value)) {\n            throw createI18nError(I18nErrorCodes.REQUIRED_VALUE, 'path');\n        }\n        return value;\n    }\n    else {\n        throw createI18nError(I18nErrorCodes.INVALID_VALUE);\n    }\n}\nfunction makeParams(value) {\n    const { path, locale, args, choice, plural } = value;\n    const options = {};\n    const named = args || {};\n    if (isString(locale)) {\n        options.locale = locale;\n    }\n    if (isNumber(choice)) {\n        options.plural = choice;\n    }\n    if (isNumber(plural)) {\n        options.plural = plural;\n    }\n    return [path, named, options];\n}\n\nfunction apply(app, i18n, ...options) {\n    const pluginOptions = isPlainObject(options[0])\n        ? options[0]\n        : {};\n    const useI18nComponentName = !!pluginOptions.useI18nComponentName;\n    const globalInstall = isBoolean(pluginOptions.globalInstall)\n        ? pluginOptions.globalInstall\n        : true;\n    if ((process.env.NODE_ENV !== 'production') && globalInstall && useI18nComponentName) {\n        warn(getWarnMessage(I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE, {\n            name: Translation.name\n        }));\n    }\n    if (globalInstall) {\n        [!useI18nComponentName ? Translation.name : 'i18n', 'I18nT'].forEach(name => app.component(name, Translation));\n        [NumberFormat.name, 'I18nN'].forEach(name => app.component(name, NumberFormat));\n        [DatetimeFormat.name, 'I18nD'].forEach(name => app.component(name, DatetimeFormat));\n    }\n    // install directive\n    {\n        app.directive('t', vTDirective(i18n));\n    }\n}\n\nconst VueDevToolsLabels = {\n    [\"vue-devtools-plugin-vue-i18n\" /* VueDevToolsIDs.PLUGIN */]: 'Vue I18n devtools',\n    [\"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */]: 'I18n Resources',\n    [\"vue-i18n-timeline\" /* VueDevToolsIDs.TIMELINE */]: 'Vue I18n'\n};\nconst VueDevToolsPlaceholders = {\n    [\"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */]: 'Search for scopes ...'\n};\nconst VueDevToolsTimelineColors = {\n    [\"vue-i18n-timeline\" /* VueDevToolsIDs.TIMELINE */]: 0xffcd19\n};\n\nconst VUE_I18N_COMPONENT_TYPES = 'vue-i18n: composer properties';\nlet devtoolsApi;\nasync function enableDevTools(app, i18n) {\n    return new Promise((resolve, reject) => {\n        try {\n            setupDevtoolsPlugin({\n                id: \"vue-devtools-plugin-vue-i18n\" /* VueDevToolsIDs.PLUGIN */,\n                label: VueDevToolsLabels[\"vue-devtools-plugin-vue-i18n\" /* VueDevToolsIDs.PLUGIN */],\n                packageName: 'vue-i18n',\n                homepage: 'https://vue-i18n.intlify.dev',\n                logo: 'https://vue-i18n.intlify.dev/vue-i18n-devtools-logo.png',\n                componentStateTypes: [VUE_I18N_COMPONENT_TYPES],\n                app: app // eslint-disable-line @typescript-eslint/no-explicit-any\n            }, api => {\n                devtoolsApi = api;\n                api.on.visitComponentTree(({ componentInstance, treeNode }) => {\n                    updateComponentTreeTags(componentInstance, treeNode, i18n);\n                });\n                api.on.inspectComponent(({ componentInstance, instanceData }) => {\n                    if (componentInstance.vnode.el &&\n                        componentInstance.vnode.el.__VUE_I18N__ &&\n                        instanceData) {\n                        if (i18n.mode === 'legacy') {\n                            // ignore global scope on legacy mode\n                            if (componentInstance.vnode.el.__VUE_I18N__ !==\n                                i18n.global.__composer) {\n                                inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);\n                            }\n                        }\n                        else {\n                            inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);\n                        }\n                    }\n                });\n                api.addInspector({\n                    id: \"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */,\n                    label: VueDevToolsLabels[\"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */],\n                    icon: 'language',\n                    treeFilterPlaceholder: VueDevToolsPlaceholders[\"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */]\n                });\n                api.on.getInspectorTree(payload => {\n                    if (payload.app === app &&\n                        payload.inspectorId === \"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */) {\n                        registerScope(payload, i18n);\n                    }\n                });\n                const roots = new Map();\n                api.on.getInspectorState(async (payload) => {\n                    if (payload.app === app &&\n                        payload.inspectorId === \"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */) {\n                        api.unhighlightElement();\n                        inspectScope(payload, i18n);\n                        if (payload.nodeId === 'global') {\n                            if (!roots.has(payload.app)) {\n                                const [root] = await api.getComponentInstances(payload.app);\n                                roots.set(payload.app, root);\n                            }\n                            api.highlightElement(roots.get(payload.app));\n                        }\n                        else {\n                            const instance = getComponentInstance(payload.nodeId, i18n);\n                            instance && api.highlightElement(instance);\n                        }\n                    }\n                });\n                api.on.editInspectorState(payload => {\n                    if (payload.app === app &&\n                        payload.inspectorId === \"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */) {\n                        editScope(payload, i18n);\n                    }\n                });\n                api.addTimelineLayer({\n                    id: \"vue-i18n-timeline\" /* VueDevToolsIDs.TIMELINE */,\n                    label: VueDevToolsLabels[\"vue-i18n-timeline\" /* VueDevToolsIDs.TIMELINE */],\n                    color: VueDevToolsTimelineColors[\"vue-i18n-timeline\" /* VueDevToolsIDs.TIMELINE */]\n                });\n                resolve(true);\n            });\n        }\n        catch (e) {\n            console.error(e);\n            reject(false);\n        }\n    });\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getI18nScopeLable(instance) {\n    return (instance.type.name ||\n        instance.type.displayName ||\n        instance.type.__file ||\n        'Anonymous');\n}\nfunction updateComponentTreeTags(instance, // eslint-disable-line @typescript-eslint/no-explicit-any\ntreeNode, i18n) {\n    // prettier-ignore\n    const global = i18n.mode === 'composition'\n        ? i18n.global\n        : i18n.global.__composer;\n    if (instance && instance.vnode.el && instance.vnode.el.__VUE_I18N__) {\n        // add custom tags local scope only\n        if (instance.vnode.el.__VUE_I18N__ !== global) {\n            const tag = {\n                label: `i18n (${getI18nScopeLable(instance)} Scope)`,\n                textColor: 0x000000,\n                backgroundColor: 0xffcd19\n            };\n            treeNode.tags.push(tag);\n        }\n    }\n}\nfunction inspectComposer(instanceData, composer) {\n    const type = VUE_I18N_COMPONENT_TYPES;\n    instanceData.state.push({\n        type,\n        key: 'locale',\n        editable: true,\n        value: composer.locale.value\n    });\n    instanceData.state.push({\n        type,\n        key: 'availableLocales',\n        editable: false,\n        value: composer.availableLocales\n    });\n    instanceData.state.push({\n        type,\n        key: 'fallbackLocale',\n        editable: true,\n        value: composer.fallbackLocale.value\n    });\n    instanceData.state.push({\n        type,\n        key: 'inheritLocale',\n        editable: true,\n        value: composer.inheritLocale\n    });\n    instanceData.state.push({\n        type,\n        key: 'messages',\n        editable: false,\n        value: getLocaleMessageValue(composer.messages.value)\n    });\n    {\n        instanceData.state.push({\n            type,\n            key: 'datetimeFormats',\n            editable: false,\n            value: composer.datetimeFormats.value\n        });\n        instanceData.state.push({\n            type,\n            key: 'numberFormats',\n            editable: false,\n            value: composer.numberFormats.value\n        });\n    }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getLocaleMessageValue(messages) {\n    const value = {};\n    Object.keys(messages).forEach((key) => {\n        const v = messages[key];\n        if (isFunction(v) && 'source' in v) {\n            value[key] = getMessageFunctionDetails(v);\n        }\n        else if (isMessageAST(v) && v.loc && v.loc.source) {\n            value[key] = v.loc.source;\n        }\n        else if (isObject(v)) {\n            value[key] = getLocaleMessageValue(v);\n        }\n        else {\n            value[key] = v;\n        }\n    });\n    return value;\n}\nconst ESC = {\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    '&': '&amp;'\n};\nfunction escape(s) {\n    return s.replace(/[<>\"&]/g, escapeChar);\n}\nfunction escapeChar(a) {\n    return ESC[a] || a;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getMessageFunctionDetails(func) {\n    const argString = func.source ? `(\"${escape(func.source)}\")` : `(?)`;\n    return {\n        _custom: {\n            type: 'function',\n            display: `<span>ƒ</span> ${argString}`\n        }\n    };\n}\nfunction registerScope(payload, i18n) {\n    payload.rootNodes.push({\n        id: 'global',\n        label: 'Global Scope'\n    });\n    // prettier-ignore\n    const global = i18n.mode === 'composition'\n        ? i18n.global\n        : i18n.global.__composer;\n    for (const [keyInstance, instance] of i18n.__instances) {\n        // prettier-ignore\n        const composer = i18n.mode === 'composition'\n            ? instance\n            : instance.__composer;\n        if (global === composer) {\n            continue;\n        }\n        payload.rootNodes.push({\n            id: composer.id.toString(),\n            label: `${getI18nScopeLable(keyInstance)} Scope`\n        });\n    }\n}\nfunction getComponentInstance(nodeId, i18n) {\n    let instance = null;\n    if (nodeId !== 'global') {\n        for (const [component, composer] of i18n.__instances.entries()) {\n            if (composer.id.toString() === nodeId) {\n                instance = component;\n                break;\n            }\n        }\n    }\n    return instance;\n}\nfunction getComposer$1(nodeId, i18n) {\n    if (nodeId === 'global') {\n        return i18n.mode === 'composition'\n            ? i18n.global\n            : i18n.global.__composer;\n    }\n    else {\n        const instance = Array.from(i18n.__instances.values()).find(item => item.id.toString() === nodeId);\n        if (instance) {\n            return i18n.mode === 'composition'\n                ? instance\n                : instance.__composer;\n        }\n        else {\n            return null;\n        }\n    }\n}\nfunction inspectScope(payload, i18n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n) {\n    const composer = getComposer$1(payload.nodeId, i18n);\n    if (composer) {\n        // TODO:\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        payload.state = makeScopeInspectState(composer);\n    }\n    return null;\n}\nfunction makeScopeInspectState(composer) {\n    const state = {};\n    const localeType = 'Locale related info';\n    const localeStates = [\n        {\n            type: localeType,\n            key: 'locale',\n            editable: true,\n            value: composer.locale.value\n        },\n        {\n            type: localeType,\n            key: 'fallbackLocale',\n            editable: true,\n            value: composer.fallbackLocale.value\n        },\n        {\n            type: localeType,\n            key: 'availableLocales',\n            editable: false,\n            value: composer.availableLocales\n        },\n        {\n            type: localeType,\n            key: 'inheritLocale',\n            editable: true,\n            value: composer.inheritLocale\n        }\n    ];\n    state[localeType] = localeStates;\n    const localeMessagesType = 'Locale messages info';\n    const localeMessagesStates = [\n        {\n            type: localeMessagesType,\n            key: 'messages',\n            editable: false,\n            value: getLocaleMessageValue(composer.messages.value)\n        }\n    ];\n    state[localeMessagesType] = localeMessagesStates;\n    {\n        const datetimeFormatsType = 'Datetime formats info';\n        const datetimeFormatsStates = [\n            {\n                type: datetimeFormatsType,\n                key: 'datetimeFormats',\n                editable: false,\n                value: composer.datetimeFormats.value\n            }\n        ];\n        state[datetimeFormatsType] = datetimeFormatsStates;\n        const numberFormatsType = 'Datetime formats info';\n        const numberFormatsStates = [\n            {\n                type: numberFormatsType,\n                key: 'numberFormats',\n                editable: false,\n                value: composer.numberFormats.value\n            }\n        ];\n        state[numberFormatsType] = numberFormatsStates;\n    }\n    return state;\n}\nfunction addTimelineEvent(event, payload) {\n    if (devtoolsApi) {\n        let groupId;\n        if (payload && 'groupId' in payload) {\n            groupId = payload.groupId;\n            delete payload.groupId;\n        }\n        devtoolsApi.addTimelineEvent({\n            layerId: \"vue-i18n-timeline\" /* VueDevToolsIDs.TIMELINE */,\n            event: {\n                title: event,\n                groupId,\n                time: Date.now(),\n                meta: {},\n                data: payload || {},\n                logType: event === \"compile-error\" /* VueDevToolsTimelineEvents.COMPILE_ERROR */\n                    ? 'error'\n                    : event === \"fallback\" /* VueDevToolsTimelineEvents.FALBACK */ ||\n                        event === \"missing\" /* VueDevToolsTimelineEvents.MISSING */\n                        ? 'warning'\n                        : 'default'\n            }\n        });\n    }\n}\nfunction editScope(payload, i18n) {\n    const composer = getComposer$1(payload.nodeId, i18n);\n    if (composer) {\n        const [field] = payload.path;\n        if (field === 'locale' && isString(payload.state.value)) {\n            composer.locale.value = payload.state.value;\n        }\n        else if (field === 'fallbackLocale' &&\n            (isString(payload.state.value) ||\n                isArray(payload.state.value) ||\n                isObject(payload.state.value))) {\n            composer.fallbackLocale.value = payload.state.value;\n        }\n        else if (field === 'inheritLocale' && isBoolean(payload.state.value)) {\n            composer.inheritLocale = payload.state.value;\n        }\n    }\n}\n\n/**\n * Supports compatibility for legacy vue-i18n APIs\n * This mixin is used when we use vue-i18n@v9.x or later\n */\nfunction defineMixin(vuei18n, composer, i18n) {\n    return {\n        beforeCreate() {\n            const instance = getCurrentInstance();\n            /* istanbul ignore if */\n            if (!instance) {\n                throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n            }\n            const options = this.$options;\n            if (options.i18n) {\n                const optionsI18n = options.i18n;\n                if (options.__i18n) {\n                    optionsI18n.__i18n = options.__i18n;\n                }\n                optionsI18n.__root = composer;\n                if (this === this.$root) {\n                    // merge option and gttach global\n                    this.$i18n = mergeToGlobal(vuei18n, optionsI18n);\n                }\n                else {\n                    optionsI18n.__injectWithOption = true;\n                    optionsI18n.__extender = i18n.__vueI18nExtend;\n                    // atttach local VueI18n instance\n                    this.$i18n = createVueI18n(optionsI18n);\n                    // extend VueI18n instance\n                    const _vueI18n = this.$i18n;\n                    if (_vueI18n.__extender) {\n                        _vueI18n.__disposer = _vueI18n.__extender(this.$i18n);\n                    }\n                }\n            }\n            else if (options.__i18n) {\n                if (this === this.$root) {\n                    // merge option and gttach global\n                    this.$i18n = mergeToGlobal(vuei18n, options);\n                }\n                else {\n                    // atttach local VueI18n instance\n                    this.$i18n = createVueI18n({\n                        __i18n: options.__i18n,\n                        __injectWithOption: true,\n                        __extender: i18n.__vueI18nExtend,\n                        __root: composer\n                    });\n                    // extend VueI18n instance\n                    const _vueI18n = this.$i18n;\n                    if (_vueI18n.__extender) {\n                        _vueI18n.__disposer = _vueI18n.__extender(this.$i18n);\n                    }\n                }\n            }\n            else {\n                // attach global VueI18n instance\n                this.$i18n = vuei18n;\n            }\n            if (options.__i18nGlobal) {\n                adjustI18nResources(composer, options, options);\n            }\n            // defines vue-i18n legacy APIs\n            this.$t = (...args) => this.$i18n.t(...args);\n            this.$rt = (...args) => this.$i18n.rt(...args);\n            this.$tc = (...args) => this.$i18n.tc(...args);\n            this.$te = (key, locale) => this.$i18n.te(key, locale);\n            this.$d = (...args) => this.$i18n.d(...args);\n            this.$n = (...args) => this.$i18n.n(...args);\n            this.$tm = (key) => this.$i18n.tm(key);\n            i18n.__setInstance(instance, this.$i18n);\n        },\n        mounted() {\n            /* istanbul ignore if */\n            if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n                !false &&\n                this.$el &&\n                this.$i18n) {\n                const _vueI18n = this.$i18n;\n                this.$el.__VUE_I18N__ = _vueI18n.__composer;\n                const emitter = (this.__v_emitter =\n                    createEmitter());\n                _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);\n                emitter.on('*', addTimelineEvent);\n            }\n        },\n        unmounted() {\n            const instance = getCurrentInstance();\n            /* istanbul ignore if */\n            if (!instance) {\n                throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n            }\n            const _vueI18n = this.$i18n;\n            /* istanbul ignore if */\n            if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n                !false &&\n                this.$el &&\n                this.$el.__VUE_I18N__) {\n                if (this.__v_emitter) {\n                    this.__v_emitter.off('*', addTimelineEvent);\n                    delete this.__v_emitter;\n                }\n                if (this.$i18n) {\n                    _vueI18n.__disableEmitter && _vueI18n.__disableEmitter();\n                    delete this.$el.__VUE_I18N__;\n                }\n            }\n            delete this.$t;\n            delete this.$rt;\n            delete this.$tc;\n            delete this.$te;\n            delete this.$d;\n            delete this.$n;\n            delete this.$tm;\n            if (_vueI18n.__disposer) {\n                _vueI18n.__disposer();\n                delete _vueI18n.__disposer;\n                delete _vueI18n.__extender;\n            }\n            i18n.__deleteInstance(instance);\n            delete this.$i18n;\n        }\n    };\n}\nfunction mergeToGlobal(g, options) {\n    g.locale = options.locale || g.locale;\n    g.fallbackLocale = options.fallbackLocale || g.fallbackLocale;\n    g.missing = options.missing || g.missing;\n    g.silentTranslationWarn =\n        options.silentTranslationWarn || g.silentFallbackWarn;\n    g.silentFallbackWarn = options.silentFallbackWarn || g.silentFallbackWarn;\n    g.formatFallbackMessages =\n        options.formatFallbackMessages || g.formatFallbackMessages;\n    g.postTranslation = options.postTranslation || g.postTranslation;\n    g.warnHtmlInMessage = options.warnHtmlInMessage || g.warnHtmlInMessage;\n    g.escapeParameterHtml = options.escapeParameterHtml || g.escapeParameterHtml;\n    g.sync = options.sync || g.sync;\n    g.__composer[SetPluralRulesSymbol](options.pluralizationRules || g.pluralizationRules);\n    const messages = getLocaleMessages(g.locale, {\n        messages: options.messages,\n        __i18n: options.__i18n\n    });\n    Object.keys(messages).forEach(locale => g.mergeLocaleMessage(locale, messages[locale]));\n    if (options.datetimeFormats) {\n        Object.keys(options.datetimeFormats).forEach(locale => g.mergeDateTimeFormat(locale, options.datetimeFormats[locale]));\n    }\n    if (options.numberFormats) {\n        Object.keys(options.numberFormats).forEach(locale => g.mergeNumberFormat(locale, options.numberFormats[locale]));\n    }\n    return g;\n}\n\n/**\n * Injection key for {@link useI18n}\n *\n * @remarks\n * The global injection key for I18n instances with `useI18n`. this injection key is used in Web Components.\n * Specify the i18n instance created by {@link createI18n} together with `provide` function.\n *\n * @VueI18nGeneral\n */\nconst I18nInjectionKey = \n/* #__PURE__*/ makeSymbol('global-vue-i18n');\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nfunction createI18n(options = {}, VueI18nLegacy) {\n    // prettier-ignore\n    const __legacyMode = __VUE_I18N_LEGACY_API__ && isBoolean(options.legacy)\n            ? options.legacy\n            : __VUE_I18N_LEGACY_API__;\n    // prettier-ignore\n    const __globalInjection = isBoolean(options.globalInjection)\n        ? options.globalInjection\n        : true;\n    // prettier-ignore\n    const __allowComposition = __VUE_I18N_LEGACY_API__ && __legacyMode\n            ? !!options.allowComposition\n            : true;\n    const __instances = new Map();\n    const [globalScope, __global] = createGlobal(options, __legacyMode);\n    const symbol = /* #__PURE__*/ makeSymbol((process.env.NODE_ENV !== 'production') ? 'vue-i18n' : '');\n    if ((process.env.NODE_ENV !== 'production')) {\n        if (__legacyMode && __allowComposition && !false) {\n            warn(getWarnMessage(I18nWarnCodes.NOTICE_DROP_ALLOW_COMPOSITION));\n        }\n    }\n    function __getInstance(component) {\n        return __instances.get(component) || null;\n    }\n    function __setInstance(component, instance) {\n        __instances.set(component, instance);\n    }\n    function __deleteInstance(component) {\n        __instances.delete(component);\n    }\n    {\n        const i18n = {\n            // mode\n            get mode() {\n                return __VUE_I18N_LEGACY_API__ && __legacyMode\n                    ? 'legacy'\n                    : 'composition';\n            },\n            // allowComposition\n            get allowComposition() {\n                return __allowComposition;\n            },\n            // install plugin\n            async install(app, ...options) {\n                if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n                    !false) {\n                    app.__VUE_I18N__ = i18n;\n                }\n                // setup global provider\n                app.__VUE_I18N_SYMBOL__ = symbol;\n                app.provide(app.__VUE_I18N_SYMBOL__, i18n);\n                // set composer & vuei18n extend hook options from plugin options\n                if (isPlainObject(options[0])) {\n                    const opts = options[0];\n                    i18n.__composerExtend =\n                        opts.__composerExtend;\n                    i18n.__vueI18nExtend =\n                        opts.__vueI18nExtend;\n                }\n                // global method and properties injection for Composition API\n                let globalReleaseHandler = null;\n                if (!__legacyMode && __globalInjection) {\n                    globalReleaseHandler = injectGlobalFields(app, i18n.global);\n                }\n                // install built-in components and directive\n                if (__VUE_I18N_FULL_INSTALL__) {\n                    apply(app, i18n, ...options);\n                }\n                // setup mixin for Legacy API\n                if (__VUE_I18N_LEGACY_API__ && __legacyMode) {\n                    app.mixin(defineMixin(__global, __global.__composer, i18n));\n                }\n                // release global scope\n                const unmountApp = app.unmount;\n                app.unmount = () => {\n                    globalReleaseHandler && globalReleaseHandler();\n                    i18n.dispose();\n                    unmountApp();\n                };\n                // setup vue-devtools plugin\n                if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && !false) {\n                    const ret = await enableDevTools(app, i18n);\n                    if (!ret) {\n                        throw createI18nError(I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN);\n                    }\n                    const emitter = createEmitter();\n                    if (__legacyMode) {\n                        const _vueI18n = __global;\n                        _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);\n                    }\n                    else {\n                        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                        const _composer = __global;\n                        _composer[EnableEmitter] && _composer[EnableEmitter](emitter);\n                    }\n                    emitter.on('*', addTimelineEvent);\n                }\n            },\n            // global accessor\n            get global() {\n                return __global;\n            },\n            dispose() {\n                globalScope.stop();\n            },\n            // @internal\n            __instances,\n            // @internal\n            __getInstance,\n            // @internal\n            __setInstance,\n            // @internal\n            __deleteInstance\n        };\n        return i18n;\n    }\n}\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction useI18n(options = {}) {\n    const instance = getCurrentInstance();\n    if (instance == null) {\n        throw createI18nError(I18nErrorCodes.MUST_BE_CALL_SETUP_TOP);\n    }\n    if (!instance.isCE &&\n        instance.appContext.app != null &&\n        !instance.appContext.app.__VUE_I18N_SYMBOL__) {\n        throw createI18nError(I18nErrorCodes.NOT_INSTALLED);\n    }\n    const i18n = getI18nInstance(instance);\n    const gl = getGlobalComposer(i18n);\n    const componentOptions = getComponentOptions(instance);\n    const scope = getScope(options, componentOptions);\n    if (__VUE_I18N_LEGACY_API__) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        if (i18n.mode === 'legacy' && !options.__useComponent) {\n            if (!i18n.allowComposition) {\n                throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE);\n            }\n            return useI18nForLegacy(instance, scope, gl, options);\n        }\n    }\n    if (scope === 'global') {\n        adjustI18nResources(gl, options, componentOptions);\n        return gl;\n    }\n    if (scope === 'parent') {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        let composer = getComposer(i18n, instance, options.__useComponent);\n        if (composer == null) {\n            if ((process.env.NODE_ENV !== 'production')) {\n                warn(getWarnMessage(I18nWarnCodes.NOT_FOUND_PARENT_SCOPE));\n            }\n            composer = gl;\n        }\n        return composer;\n    }\n    const i18nInternal = i18n;\n    let composer = i18nInternal.__getInstance(instance);\n    if (composer == null) {\n        const composerOptions = assign({}, options);\n        if ('__i18n' in componentOptions) {\n            composerOptions.__i18n = componentOptions.__i18n;\n        }\n        if (gl) {\n            composerOptions.__root = gl;\n        }\n        composer = createComposer(composerOptions);\n        if (i18nInternal.__composerExtend) {\n            composer[DisposeSymbol] =\n                i18nInternal.__composerExtend(composer);\n        }\n        setupLifeCycle(i18nInternal, instance, composer);\n        i18nInternal.__setInstance(instance, composer);\n    }\n    return composer;\n}\n/**\n * Cast to VueI18n legacy compatible type\n *\n * @remarks\n * This API is provided only with [vue-i18n-bridge](https://vue-i18n.intlify.dev/guide/migration/ways.html#what-is-vue-i18n-bridge).\n *\n * The purpose of this function is to convert an {@link I18n} instance created with {@link createI18n | createI18n(legacy: true)} into a `vue-i18n@v8.x` compatible instance of `new VueI18n` in a TypeScript environment.\n *\n * @param i18n - An instance of {@link I18n}\n * @returns A i18n instance which is casted to {@link VueI18n} type\n *\n * @VueI18nTip\n * :new: provided by **vue-i18n-bridge only**\n *\n * @VueI18nGeneral\n */\n/* #__NO_SIDE_EFFECTS__ */\nconst castToVueI18n = (i18n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n) => {\n    if (!(__VUE_I18N_BRIDGE__ in i18n)) {\n        throw createI18nError(I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N);\n    }\n    return i18n;\n};\nfunction createGlobal(options, legacyMode, VueI18nLegacy // eslint-disable-line @typescript-eslint/no-explicit-any\n) {\n    const scope = effectScope();\n    {\n        const obj = __VUE_I18N_LEGACY_API__ && legacyMode\n            ? scope.run(() => createVueI18n(options))\n            : scope.run(() => createComposer(options));\n        if (obj == null) {\n            throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n        }\n        return [scope, obj];\n    }\n}\nfunction getI18nInstance(instance) {\n    {\n        const i18n = inject(!instance.isCE\n            ? instance.appContext.app.__VUE_I18N_SYMBOL__\n            : I18nInjectionKey);\n        /* istanbul ignore if */\n        if (!i18n) {\n            throw createI18nError(!instance.isCE\n                ? I18nErrorCodes.UNEXPECTED_ERROR\n                : I18nErrorCodes.NOT_INSTALLED_WITH_PROVIDE);\n        }\n        return i18n;\n    }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getScope(options, componentOptions) {\n    // prettier-ignore\n    return isEmptyObject(options)\n        ? ('__i18n' in componentOptions)\n            ? 'local'\n            : 'global'\n        : !options.useScope\n            ? 'local'\n            : options.useScope;\n}\nfunction getGlobalComposer(i18n) {\n    // prettier-ignore\n    return i18n.mode === 'composition'\n            ? i18n.global\n            : i18n.global.__composer\n        ;\n}\nfunction getComposer(i18n, target, useComponent = false) {\n    let composer = null;\n    const root = target.root;\n    let current = getParentComponentInstance(target, useComponent);\n    while (current != null) {\n        const i18nInternal = i18n;\n        if (i18n.mode === 'composition') {\n            composer = i18nInternal.__getInstance(current);\n        }\n        else {\n            if (__VUE_I18N_LEGACY_API__) {\n                const vueI18n = i18nInternal.__getInstance(current);\n                if (vueI18n != null) {\n                    composer = vueI18n\n                        .__composer;\n                    if (useComponent &&\n                        composer &&\n                        !composer[InejctWithOptionSymbol] // eslint-disable-line @typescript-eslint/no-explicit-any\n                    ) {\n                        composer = null;\n                    }\n                }\n            }\n        }\n        if (composer != null) {\n            break;\n        }\n        if (root === current) {\n            break;\n        }\n        current = current.parent;\n    }\n    return composer;\n}\nfunction getParentComponentInstance(target, useComponent = false) {\n    if (target == null) {\n        return null;\n    }\n    {\n        // if `useComponent: true` will be specified, we get lexical scope owner instance for use-case slots\n        return !useComponent\n            ? target.parent\n            : target.vnode.ctx || target.parent; // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n}\nfunction setupLifeCycle(i18n, target, composer) {\n    let emitter = null;\n    {\n        onMounted(() => {\n            // inject composer instance to DOM for intlify-devtools\n            if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n                !false &&\n                target.vnode.el) {\n                target.vnode.el.__VUE_I18N__ = composer;\n                emitter = createEmitter();\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                const _composer = composer;\n                _composer[EnableEmitter] && _composer[EnableEmitter](emitter);\n                emitter.on('*', addTimelineEvent);\n            }\n        }, target);\n        onUnmounted(() => {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            const _composer = composer;\n            // remove composer instance from DOM for intlify-devtools\n            if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n                !false &&\n                target.vnode.el &&\n                target.vnode.el.__VUE_I18N__) {\n                emitter && emitter.off('*', addTimelineEvent);\n                _composer[DisableEmitter] && _composer[DisableEmitter]();\n                delete target.vnode.el.__VUE_I18N__;\n            }\n            i18n.__deleteInstance(target);\n            // dispose extended resources\n            const dispose = _composer[DisposeSymbol];\n            if (dispose) {\n                dispose();\n                delete _composer[DisposeSymbol];\n            }\n        }, target);\n    }\n}\nfunction useI18nForLegacy(instance, scope, root, options = {} // eslint-disable-line @typescript-eslint/no-explicit-any\n) {\n    const isLocalScope = scope === 'local';\n    const _composer = shallowRef(null);\n    if (isLocalScope &&\n        instance.proxy &&\n        !(instance.proxy.$options.i18n || instance.proxy.$options.__i18n)) {\n        throw createI18nError(I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);\n    }\n    const _inheritLocale = isBoolean(options.inheritLocale)\n        ? options.inheritLocale\n        : !isString(options.locale);\n    const _locale = ref(\n    // prettier-ignore\n    !isLocalScope || _inheritLocale\n        ? root.locale.value\n        : isString(options.locale)\n            ? options.locale\n            : DEFAULT_LOCALE);\n    const _fallbackLocale = ref(\n    // prettier-ignore\n    !isLocalScope || _inheritLocale\n        ? root.fallbackLocale.value\n        : isString(options.fallbackLocale) ||\n            isArray(options.fallbackLocale) ||\n            isPlainObject(options.fallbackLocale) ||\n            options.fallbackLocale === false\n            ? options.fallbackLocale\n            : _locale.value);\n    const _messages = ref(getLocaleMessages(_locale.value, options));\n    // prettier-ignore\n    const _datetimeFormats = ref(isPlainObject(options.datetimeFormats)\n        ? options.datetimeFormats\n        : { [_locale.value]: {} });\n    // prettier-ignore\n    const _numberFormats = ref(isPlainObject(options.numberFormats)\n        ? options.numberFormats\n        : { [_locale.value]: {} });\n    // prettier-ignore\n    const _missingWarn = isLocalScope\n        ? root.missingWarn\n        : isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\n            ? options.missingWarn\n            : true;\n    // prettier-ignore\n    const _fallbackWarn = isLocalScope\n        ? root.fallbackWarn\n        : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\n            ? options.fallbackWarn\n            : true;\n    // prettier-ignore\n    const _fallbackRoot = isLocalScope\n        ? root.fallbackRoot\n        : isBoolean(options.fallbackRoot)\n            ? options.fallbackRoot\n            : true;\n    // configure fall back to root\n    const _fallbackFormat = !!options.fallbackFormat;\n    // runtime missing\n    const _missing = isFunction(options.missing) ? options.missing : null;\n    // postTranslation handler\n    const _postTranslation = isFunction(options.postTranslation)\n        ? options.postTranslation\n        : null;\n    // prettier-ignore\n    const _warnHtmlMessage = isLocalScope\n        ? root.warnHtmlMessage\n        : isBoolean(options.warnHtmlMessage)\n            ? options.warnHtmlMessage\n            : true;\n    const _escapeParameter = !!options.escapeParameter;\n    // prettier-ignore\n    const _modifiers = isLocalScope\n        ? root.modifiers\n        : isPlainObject(options.modifiers)\n            ? options.modifiers\n            : {};\n    // pluralRules\n    const _pluralRules = options.pluralRules || (isLocalScope && root.pluralRules);\n    // track reactivity\n    function trackReactivityValues() {\n        return [\n            _locale.value,\n            _fallbackLocale.value,\n            _messages.value,\n            _datetimeFormats.value,\n            _numberFormats.value\n        ];\n    }\n    // locale\n    const locale = computed({\n        get: () => {\n            return _composer.value ? _composer.value.locale.value : _locale.value;\n        },\n        set: val => {\n            if (_composer.value) {\n                _composer.value.locale.value = val;\n            }\n            _locale.value = val;\n        }\n    });\n    // fallbackLocale\n    const fallbackLocale = computed({\n        get: () => {\n            return _composer.value\n                ? _composer.value.fallbackLocale.value\n                : _fallbackLocale.value;\n        },\n        set: val => {\n            if (_composer.value) {\n                _composer.value.fallbackLocale.value = val;\n            }\n            _fallbackLocale.value = val;\n        }\n    });\n    // messages\n    const messages = computed(() => {\n        if (_composer.value) {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            return _composer.value.messages.value;\n        }\n        else {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            return _messages.value;\n        }\n    });\n    const datetimeFormats = computed(() => _datetimeFormats.value);\n    const numberFormats = computed(() => _numberFormats.value);\n    function getPostTranslationHandler() {\n        return _composer.value\n            ? _composer.value.getPostTranslationHandler()\n            : _postTranslation;\n    }\n    function setPostTranslationHandler(handler) {\n        if (_composer.value) {\n            _composer.value.setPostTranslationHandler(handler);\n        }\n    }\n    function getMissingHandler() {\n        return _composer.value ? _composer.value.getMissingHandler() : _missing;\n    }\n    function setMissingHandler(handler) {\n        if (_composer.value) {\n            _composer.value.setMissingHandler(handler);\n        }\n    }\n    function warpWithDeps(fn) {\n        trackReactivityValues();\n        return fn();\n    }\n    function t(...args) {\n        return _composer.value\n            ? warpWithDeps(() => Reflect.apply(_composer.value.t, null, [...args]))\n            : warpWithDeps(() => '');\n    }\n    function rt(...args) {\n        return _composer.value\n            ? Reflect.apply(_composer.value.rt, null, [...args])\n            : '';\n    }\n    function d(...args) {\n        return _composer.value\n            ? warpWithDeps(() => Reflect.apply(_composer.value.d, null, [...args]))\n            : warpWithDeps(() => '');\n    }\n    function n(...args) {\n        return _composer.value\n            ? warpWithDeps(() => Reflect.apply(_composer.value.n, null, [...args]))\n            : warpWithDeps(() => '');\n    }\n    function tm(key) {\n        return _composer.value ? _composer.value.tm(key) : {};\n    }\n    function te(key, locale) {\n        return _composer.value ? _composer.value.te(key, locale) : false;\n    }\n    function getLocaleMessage(locale) {\n        return _composer.value ? _composer.value.getLocaleMessage(locale) : {};\n    }\n    function setLocaleMessage(locale, message) {\n        if (_composer.value) {\n            _composer.value.setLocaleMessage(locale, message);\n            _messages.value[locale] = message;\n        }\n    }\n    function mergeLocaleMessage(locale, message) {\n        if (_composer.value) {\n            _composer.value.mergeLocaleMessage(locale, message);\n        }\n    }\n    function getDateTimeFormat(locale) {\n        return _composer.value ? _composer.value.getDateTimeFormat(locale) : {};\n    }\n    function setDateTimeFormat(locale, format) {\n        if (_composer.value) {\n            _composer.value.setDateTimeFormat(locale, format);\n            _datetimeFormats.value[locale] = format;\n        }\n    }\n    function mergeDateTimeFormat(locale, format) {\n        if (_composer.value) {\n            _composer.value.mergeDateTimeFormat(locale, format);\n        }\n    }\n    function getNumberFormat(locale) {\n        return _composer.value ? _composer.value.getNumberFormat(locale) : {};\n    }\n    function setNumberFormat(locale, format) {\n        if (_composer.value) {\n            _composer.value.setNumberFormat(locale, format);\n            _numberFormats.value[locale] = format;\n        }\n    }\n    function mergeNumberFormat(locale, format) {\n        if (_composer.value) {\n            _composer.value.mergeNumberFormat(locale, format);\n        }\n    }\n    const wrapper = {\n        get id() {\n            return _composer.value ? _composer.value.id : -1;\n        },\n        locale,\n        fallbackLocale,\n        messages,\n        datetimeFormats,\n        numberFormats,\n        get inheritLocale() {\n            return _composer.value ? _composer.value.inheritLocale : _inheritLocale;\n        },\n        set inheritLocale(val) {\n            if (_composer.value) {\n                _composer.value.inheritLocale = val;\n            }\n        },\n        get availableLocales() {\n            return _composer.value\n                ? _composer.value.availableLocales\n                : Object.keys(_messages.value);\n        },\n        get modifiers() {\n            return (_composer.value ? _composer.value.modifiers : _modifiers);\n        },\n        get pluralRules() {\n            return (_composer.value ? _composer.value.pluralRules : _pluralRules);\n        },\n        get isGlobal() {\n            return _composer.value ? _composer.value.isGlobal : false;\n        },\n        get missingWarn() {\n            return _composer.value ? _composer.value.missingWarn : _missingWarn;\n        },\n        set missingWarn(val) {\n            if (_composer.value) {\n                _composer.value.missingWarn = val;\n            }\n        },\n        get fallbackWarn() {\n            return _composer.value ? _composer.value.fallbackWarn : _fallbackWarn;\n        },\n        set fallbackWarn(val) {\n            if (_composer.value) {\n                _composer.value.missingWarn = val;\n            }\n        },\n        get fallbackRoot() {\n            return _composer.value ? _composer.value.fallbackRoot : _fallbackRoot;\n        },\n        set fallbackRoot(val) {\n            if (_composer.value) {\n                _composer.value.fallbackRoot = val;\n            }\n        },\n        get fallbackFormat() {\n            return _composer.value ? _composer.value.fallbackFormat : _fallbackFormat;\n        },\n        set fallbackFormat(val) {\n            if (_composer.value) {\n                _composer.value.fallbackFormat = val;\n            }\n        },\n        get warnHtmlMessage() {\n            return _composer.value\n                ? _composer.value.warnHtmlMessage\n                : _warnHtmlMessage;\n        },\n        set warnHtmlMessage(val) {\n            if (_composer.value) {\n                _composer.value.warnHtmlMessage = val;\n            }\n        },\n        get escapeParameter() {\n            return _composer.value\n                ? _composer.value.escapeParameter\n                : _escapeParameter;\n        },\n        set escapeParameter(val) {\n            if (_composer.value) {\n                _composer.value.escapeParameter = val;\n            }\n        },\n        t,\n        getPostTranslationHandler,\n        setPostTranslationHandler,\n        getMissingHandler,\n        setMissingHandler,\n        rt,\n        d,\n        n,\n        tm,\n        te,\n        getLocaleMessage,\n        setLocaleMessage,\n        mergeLocaleMessage,\n        getDateTimeFormat,\n        setDateTimeFormat,\n        mergeDateTimeFormat,\n        getNumberFormat,\n        setNumberFormat,\n        mergeNumberFormat\n    };\n    function sync(composer) {\n        composer.locale.value = _locale.value;\n        composer.fallbackLocale.value = _fallbackLocale.value;\n        Object.keys(_messages.value).forEach(locale => {\n            composer.mergeLocaleMessage(locale, _messages.value[locale]);\n        });\n        Object.keys(_datetimeFormats.value).forEach(locale => {\n            composer.mergeDateTimeFormat(locale, _datetimeFormats.value[locale]);\n        });\n        Object.keys(_numberFormats.value).forEach(locale => {\n            composer.mergeNumberFormat(locale, _numberFormats.value[locale]);\n        });\n        composer.escapeParameter = _escapeParameter;\n        composer.fallbackFormat = _fallbackFormat;\n        composer.fallbackRoot = _fallbackRoot;\n        composer.fallbackWarn = _fallbackWarn;\n        composer.missingWarn = _missingWarn;\n        composer.warnHtmlMessage = _warnHtmlMessage;\n    }\n    onBeforeMount(() => {\n        if (instance.proxy == null || instance.proxy.$i18n == null) {\n            throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);\n        }\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const composer = (_composer.value = instance.proxy.$i18n\n            .__composer);\n        if (scope === 'global') {\n            _locale.value = composer.locale.value;\n            _fallbackLocale.value = composer.fallbackLocale.value;\n            _messages.value = composer.messages.value;\n            _datetimeFormats.value = composer.datetimeFormats.value;\n            _numberFormats.value = composer.numberFormats.value;\n        }\n        else if (isLocalScope) {\n            sync(composer);\n        }\n    });\n    return wrapper;\n}\nconst globalExportProps = [\n    'locale',\n    'fallbackLocale',\n    'availableLocales'\n];\nconst globalExportMethods = ['t', 'rt', 'd', 'n', 'tm', 'te']\n    ;\nfunction injectGlobalFields(app, composer) {\n    const i18n = Object.create(null);\n    globalExportProps.forEach(prop => {\n        const desc = Object.getOwnPropertyDescriptor(composer, prop);\n        if (!desc) {\n            throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n        }\n        const wrap = isRef(desc.value) // check computed props\n            ? {\n                get() {\n                    return desc.value.value;\n                },\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                set(val) {\n                    desc.value.value = val;\n                }\n            }\n            : {\n                get() {\n                    return desc.get && desc.get();\n                }\n            };\n        Object.defineProperty(i18n, prop, wrap);\n    });\n    app.config.globalProperties.$i18n = i18n;\n    globalExportMethods.forEach(method => {\n        const desc = Object.getOwnPropertyDescriptor(composer, method);\n        if (!desc || !desc.value) {\n            throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n        }\n        Object.defineProperty(app.config.globalProperties, `$${method}`, desc);\n    });\n    const dispose = () => {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        delete app.config.globalProperties.$i18n;\n        globalExportMethods.forEach(method => {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            delete app.config.globalProperties[`$${method}`];\n        });\n    };\n    return dispose;\n}\n\n{\n    initFeatureFlags();\n}\n// register message compiler for jit compilation\nif (__INTLIFY_JIT_COMPILATION__) {\n    registerMessageCompiler(compile);\n}\n// register message resolver at vue-i18n\nregisterMessageResolver(resolveValue);\n// register fallback locale at vue-i18n\nregisterLocaleFallbacker(fallbackWithLocaleChain);\n// NOTE: experimental !!\nif ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n    const target = getGlobalThis();\n    target.__INTLIFY__ = true;\n    setDevToolsHook(target.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__);\n}\nif ((process.env.NODE_ENV !== 'production')) ;\n\nexport { DatetimeFormat, I18nD, I18nInjectionKey, I18nN, I18nT, NumberFormat, Translation, VERSION, castToVueI18n, createI18n, useI18n, vTDirective };\n","import { reactive, readonly, ref } from \"vue\";\n\nconst admin_root = ref(import.meta.env.VITE_ADMIN_ROOT);\n\nconst api_root = ref(import.meta.env.VITE_API_URL);\n\nconst api_2_root = ref(import.meta.env.VITE_API_2_URL);\n\nconst show_copy_resource_permalink = ref(import.meta.env.VITE_SHOW_COPY_RESOURCE_PERMALINK === \"true\");\n\nconst schema_documentation_url = ref(import.meta.env.VITE_SCHEMA_DOCUMENTATION_URL);\n\nconst schema_catalog_url = ref(import.meta.env.VITE_SCHEMA_CATALOG_URL);\n\nconst schema_validata_url = ref(import.meta.env.VITE_SCHEMA_VALIDATA_URL);\n\nconst site_root = ref(import.meta.env.VITE_SITE_ROOT_URL);\n\nconst static_root = ref(import.meta.env.VITE_STATIC_ROOT_URL);\n\nconst title = ref(import.meta.env.VITE_TITLE);\n\nconst explorable_resources = ref<Array<string>>([]);\n\nconst only_locales = ref(import.meta.env.VITE_ONLY_LOCALES);\n\nconst default_lang = ref(import.meta.env.VITE_DEFAULT_LANG);\n\nconst guides_quality_url = ref(import.meta.env.VITE_GUIDES_QUALITY_URL);\n\nconst localConfig = reactive({\n    admin_root,\n    api_root,\n    api_2_root,\n    default_lang,\n    explorable_resources,\n    guides_quality_url,\n    only_locales,\n    schema_catalog_url,\n    schema_documentation_url,\n    schema_validata_url,\n    show_copy_resource_permalink,\n    site_root,\n    static_root,\n    title,\n});\n\nconst config = readonly(localConfig);\n\nconst setupComponents = (config: Partial<typeof localConfig>) => {\n    const mergedConfig = {...localConfig, ...config};\n    admin_root.value = mergedConfig.admin_root;\n    default_lang.value = mergedConfig.default_lang;\n    explorable_resources.value = mergedConfig.explorable_resources;\n    guides_quality_url.value = mergedConfig.guides_quality_url;\n    only_locales.value = mergedConfig.only_locales;\n    schema_catalog_url.value = mergedConfig.schema_catalog_url;\n    schema_documentation_url.value = mergedConfig.schema_documentation_url;\n    schema_validata_url.value = mergedConfig.schema_validata_url;\n    show_copy_resource_permalink.value = mergedConfig.show_copy_resource_permalink;\n    site_root.value = mergedConfig.site_root;\n    static_root.value = mergedConfig.static_root;\n    title.value = mergedConfig.title;\n    api_root.value = mergedConfig.api_root;\n    api_2_root.value = mergedConfig.api_2_root;\n};\n\nexport { config, setupComponents };\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n  return function wrap() {\n    return fn.apply(thisArg, arguments);\n  };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n    const str = toString.call(thing);\n    return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n  type = type.toLowerCase();\n  return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n  return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n    && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  let result;\n  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n  if (kindOf(val) !== 'object') {\n    return false;\n  }\n\n  const prototype = getPrototypeOf(val);\n  return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n  let kind;\n  return thing && (\n    (typeof FormData === 'function' && thing instanceof FormData) || (\n      isFunction(thing.append) && (\n        (kind = kindOf(thing)) === 'formdata' ||\n        // detect form-data instance\n        (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n      )\n    )\n  )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n  str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  let i;\n  let l;\n\n  // Force an array if not already something iterable\n  if (typeof obj !== 'object') {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Iterate over object keys\n    const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n    const len = keys.length;\n    let key;\n\n    for (i = 0; i < len; i++) {\n      key = keys[i];\n      fn.call(null, obj[key], key, obj);\n    }\n  }\n}\n\nfunction findKey(obj, key) {\n  key = key.toLowerCase();\n  const keys = Object.keys(obj);\n  let i = keys.length;\n  let _key;\n  while (i-- > 0) {\n    _key = keys[i];\n    if (key === _key.toLowerCase()) {\n      return _key;\n    }\n  }\n  return null;\n}\n\nconst _global = (() => {\n  /*eslint no-undef:0*/\n  if (typeof globalThis !== \"undefined\") return globalThis;\n  return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n  const {caseless} = isContextDefined(this) && this || {};\n  const result = {};\n  const assignValue = (val, key) => {\n    const targetKey = caseless && findKey(result, key) || key;\n    if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n      result[targetKey] = merge(result[targetKey], val);\n    } else if (isPlainObject(val)) {\n      result[targetKey] = merge({}, val);\n    } else if (isArray(val)) {\n      result[targetKey] = val.slice();\n    } else {\n      result[targetKey] = val;\n    }\n  }\n\n  for (let i = 0, l = arguments.length; i < l; i++) {\n    arguments[i] && forEach(arguments[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n  forEach(b, (val, key) => {\n    if (thisArg && isFunction(val)) {\n      a[key] = bind(val, thisArg);\n    } else {\n      a[key] = val;\n    }\n  }, {allOwnKeys});\n  return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n  if (content.charCodeAt(0) === 0xFEFF) {\n    content = content.slice(1);\n  }\n  return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n  constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n  constructor.prototype.constructor = constructor;\n  Object.defineProperty(constructor, 'super', {\n    value: superConstructor.prototype\n  });\n  props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n  let props;\n  let i;\n  let prop;\n  const merged = {};\n\n  destObj = destObj || {};\n  // eslint-disable-next-line no-eq-null,eqeqeq\n  if (sourceObj == null) return destObj;\n\n  do {\n    props = Object.getOwnPropertyNames(sourceObj);\n    i = props.length;\n    while (i-- > 0) {\n      prop = props[i];\n      if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n        destObj[prop] = sourceObj[prop];\n        merged[prop] = true;\n      }\n    }\n    sourceObj = filter !== false && getPrototypeOf(sourceObj);\n  } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n  return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n  str = String(str);\n  if (position === undefined || position > str.length) {\n    position = str.length;\n  }\n  position -= searchString.length;\n  const lastIndex = str.indexOf(searchString, position);\n  return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n  if (!thing) return null;\n  if (isArray(thing)) return thing;\n  let i = thing.length;\n  if (!isNumber(i)) return null;\n  const arr = new Array(i);\n  while (i-- > 0) {\n    arr[i] = thing[i];\n  }\n  return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n  // eslint-disable-next-line func-names\n  return thing => {\n    return TypedArray && thing instanceof TypedArray;\n  };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n  const generator = obj && obj[Symbol.iterator];\n\n  const iterator = generator.call(obj);\n\n  let result;\n\n  while ((result = iterator.next()) && !result.done) {\n    const pair = result.value;\n    fn.call(obj, pair[0], pair[1]);\n  }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n  let matches;\n  const arr = [];\n\n  while ((matches = regExp.exec(str)) !== null) {\n    arr.push(matches);\n  }\n\n  return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n  return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n    function replacer(m, p1, p2) {\n      return p1.toUpperCase() + p2;\n    }\n  );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n  const descriptors = Object.getOwnPropertyDescriptors(obj);\n  const reducedDescriptors = {};\n\n  forEach(descriptors, (descriptor, name) => {\n    let ret;\n    if ((ret = reducer(descriptor, name, obj)) !== false) {\n      reducedDescriptors[name] = ret || descriptor;\n    }\n  });\n\n  Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n  reduceDescriptors(obj, (descriptor, name) => {\n    // skip restricted props in strict mode\n    if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n      return false;\n    }\n\n    const value = obj[name];\n\n    if (!isFunction(value)) return;\n\n    descriptor.enumerable = false;\n\n    if ('writable' in descriptor) {\n      descriptor.writable = false;\n      return;\n    }\n\n    if (!descriptor.set) {\n      descriptor.set = () => {\n        throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n      };\n    }\n  });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n  const obj = {};\n\n  const define = (arr) => {\n    arr.forEach(value => {\n      obj[value] = true;\n    });\n  }\n\n  isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n  return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n  value = +value;\n  return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n  DIGIT,\n  ALPHA,\n  ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n  let str = '';\n  const {length} = alphabet;\n  while (size--) {\n    str += alphabet[Math.random() * length|0]\n  }\n\n  return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n  return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n  const stack = new Array(10);\n\n  const visit = (source, i) => {\n\n    if (isObject(source)) {\n      if (stack.indexOf(source) >= 0) {\n        return;\n      }\n\n      if(!('toJSON' in source)) {\n        stack[i] = source;\n        const target = isArray(source) ? [] : {};\n\n        forEach(source, (value, key) => {\n          const reducedValue = visit(value, i + 1);\n          !isUndefined(reducedValue) && (target[key] = reducedValue);\n        });\n\n        stack[i] = undefined;\n\n        return target;\n      }\n    }\n\n    return source;\n  }\n\n  return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n  thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n  isArray,\n  isArrayBuffer,\n  isBuffer,\n  isFormData,\n  isArrayBufferView,\n  isString,\n  isNumber,\n  isBoolean,\n  isObject,\n  isPlainObject,\n  isUndefined,\n  isDate,\n  isFile,\n  isBlob,\n  isRegExp,\n  isFunction,\n  isStream,\n  isURLSearchParams,\n  isTypedArray,\n  isFileList,\n  forEach,\n  merge,\n  extend,\n  trim,\n  stripBOM,\n  inherits,\n  toFlatObject,\n  kindOf,\n  kindOfTest,\n  endsWith,\n  toArray,\n  forEachEntry,\n  matchAll,\n  isHTMLForm,\n  hasOwnProperty,\n  hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n  reduceDescriptors,\n  freezeMethods,\n  toObjectSet,\n  toCamelCase,\n  noop,\n  toFiniteNumber,\n  findKey,\n  global: _global,\n  isContextDefined,\n  ALPHABET,\n  generateString,\n  isSpecCompliantForm,\n  toJSONObject,\n  isAsyncFn,\n  isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n  Error.call(this);\n\n  if (Error.captureStackTrace) {\n    Error.captureStackTrace(this, this.constructor);\n  } else {\n    this.stack = (new Error()).stack;\n  }\n\n  this.message = message;\n  this.name = 'AxiosError';\n  code && (this.code = code);\n  config && (this.config = config);\n  request && (this.request = request);\n  response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n  toJSON: function toJSON() {\n    return {\n      // Standard\n      message: this.message,\n      name: this.name,\n      // Microsoft\n      description: this.description,\n      number: this.number,\n      // Mozilla\n      fileName: this.fileName,\n      lineNumber: this.lineNumber,\n      columnNumber: this.columnNumber,\n      stack: this.stack,\n      // Axios\n      config: utils.toJSONObject(this.config),\n      code: this.code,\n      status: this.response && this.response.status ? this.response.status : null\n    };\n  }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n  'ERR_BAD_OPTION_VALUE',\n  'ERR_BAD_OPTION',\n  'ECONNABORTED',\n  'ETIMEDOUT',\n  'ERR_NETWORK',\n  'ERR_FR_TOO_MANY_REDIRECTS',\n  'ERR_DEPRECATED',\n  'ERR_BAD_RESPONSE',\n  'ERR_BAD_REQUEST',\n  'ERR_CANCELED',\n  'ERR_NOT_SUPPORT',\n  'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n  descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n  const axiosError = Object.create(prototype);\n\n  utils.toFlatObject(error, axiosError, function filter(obj) {\n    return obj !== Error.prototype;\n  }, prop => {\n    return prop !== 'isAxiosError';\n  });\n\n  AxiosError.call(axiosError, error.message, code, config, request, response);\n\n  axiosError.cause = error;\n\n  axiosError.name = error.name;\n\n  customProps && Object.assign(axiosError, customProps);\n\n  return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n  return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n  return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n  if (!path) return key;\n  return path.concat(key).map(function each(token, i) {\n    // eslint-disable-next-line no-param-reassign\n    token = removeBrackets(token);\n    return !dots && i ? '[' + token + ']' : token;\n  }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n  return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n  return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n  if (!utils.isObject(obj)) {\n    throw new TypeError('target must be an object');\n  }\n\n  // eslint-disable-next-line no-param-reassign\n  formData = formData || new (PlatformFormData || FormData)();\n\n  // eslint-disable-next-line no-param-reassign\n  options = utils.toFlatObject(options, {\n    metaTokens: true,\n    dots: false,\n    indexes: false\n  }, false, function defined(option, source) {\n    // eslint-disable-next-line no-eq-null,eqeqeq\n    return !utils.isUndefined(source[option]);\n  });\n\n  const metaTokens = options.metaTokens;\n  // eslint-disable-next-line no-use-before-define\n  const visitor = options.visitor || defaultVisitor;\n  const dots = options.dots;\n  const indexes = options.indexes;\n  const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n  const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n  if (!utils.isFunction(visitor)) {\n    throw new TypeError('visitor must be a function');\n  }\n\n  function convertValue(value) {\n    if (value === null) return '';\n\n    if (utils.isDate(value)) {\n      return value.toISOString();\n    }\n\n    if (!useBlob && utils.isBlob(value)) {\n      throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n    }\n\n    if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n      return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n    }\n\n    return value;\n  }\n\n  /**\n   * Default visitor.\n   *\n   * @param {*} value\n   * @param {String|Number} key\n   * @param {Array<String|Number>} path\n   * @this {FormData}\n   *\n   * @returns {boolean} return true to visit the each prop of the value recursively\n   */\n  function defaultVisitor(value, key, path) {\n    let arr = value;\n\n    if (value && !path && typeof value === 'object') {\n      if (utils.endsWith(key, '{}')) {\n        // eslint-disable-next-line no-param-reassign\n        key = metaTokens ? key : key.slice(0, -2);\n        // eslint-disable-next-line no-param-reassign\n        value = JSON.stringify(value);\n      } else if (\n        (utils.isArray(value) && isFlatArray(value)) ||\n        ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n        )) {\n        // eslint-disable-next-line no-param-reassign\n        key = removeBrackets(key);\n\n        arr.forEach(function each(el, index) {\n          !(utils.isUndefined(el) || el === null) && formData.append(\n            // eslint-disable-next-line no-nested-ternary\n            indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n            convertValue(el)\n          );\n        });\n        return false;\n      }\n    }\n\n    if (isVisitable(value)) {\n      return true;\n    }\n\n    formData.append(renderKey(path, key, dots), convertValue(value));\n\n    return false;\n  }\n\n  const stack = [];\n\n  const exposedHelpers = Object.assign(predicates, {\n    defaultVisitor,\n    convertValue,\n    isVisitable\n  });\n\n  function build(value, path) {\n    if (utils.isUndefined(value)) return;\n\n    if (stack.indexOf(value) !== -1) {\n      throw Error('Circular reference detected in ' + path.join('.'));\n    }\n\n    stack.push(value);\n\n    utils.forEach(value, function each(el, key) {\n      const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n        formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n      );\n\n      if (result === true) {\n        build(el, path ? path.concat(key) : [key]);\n      }\n    });\n\n    stack.pop();\n  }\n\n  if (!utils.isObject(obj)) {\n    throw new TypeError('data must be an object');\n  }\n\n  build(obj);\n\n  return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n  const charMap = {\n    '!': '%21',\n    \"'\": '%27',\n    '(': '%28',\n    ')': '%29',\n    '~': '%7E',\n    '%20': '+',\n    '%00': '\\x00'\n  };\n  return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n    return charMap[match];\n  });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n  this._pairs = [];\n\n  params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n  this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n  const _encode = encoder ? function(value) {\n    return encoder.call(this, value, encode);\n  } : encode;\n\n  return this._pairs.map(function each(pair) {\n    return _encode(pair[0]) + '=' + _encode(pair[1]);\n  }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n  return encodeURIComponent(val).\n    replace(/%3A/gi, ':').\n    replace(/%24/g, '$').\n    replace(/%2C/gi, ',').\n    replace(/%20/g, '+').\n    replace(/%5B/gi, '[').\n    replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n  /*eslint no-param-reassign:0*/\n  if (!params) {\n    return url;\n  }\n  \n  const _encode = options && options.encode || encode;\n\n  const serializeFn = options && options.serialize;\n\n  let serializedParams;\n\n  if (serializeFn) {\n    serializedParams = serializeFn(params, options);\n  } else {\n    serializedParams = utils.isURLSearchParams(params) ?\n      params.toString() :\n      new AxiosURLSearchParams(params, options).toString(_encode);\n  }\n\n  if (serializedParams) {\n    const hashmarkIndex = url.indexOf(\"#\");\n\n    if (hashmarkIndex !== -1) {\n      url = url.slice(0, hashmarkIndex);\n    }\n    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n  }\n\n  return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n  constructor() {\n    this.handlers = [];\n  }\n\n  /**\n   * Add a new interceptor to the stack\n   *\n   * @param {Function} fulfilled The function to handle `then` for a `Promise`\n   * @param {Function} rejected The function to handle `reject` for a `Promise`\n   *\n   * @return {Number} An ID used to remove interceptor later\n   */\n  use(fulfilled, rejected, options) {\n    this.handlers.push({\n      fulfilled,\n      rejected,\n      synchronous: options ? options.synchronous : false,\n      runWhen: options ? options.runWhen : null\n    });\n    return this.handlers.length - 1;\n  }\n\n  /**\n   * Remove an interceptor from the stack\n   *\n   * @param {Number} id The ID that was returned by `use`\n   *\n   * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n   */\n  eject(id) {\n    if (this.handlers[id]) {\n      this.handlers[id] = null;\n    }\n  }\n\n  /**\n   * Clear all interceptors from the stack\n   *\n   * @returns {void}\n   */\n  clear() {\n    if (this.handlers) {\n      this.handlers = [];\n    }\n  }\n\n  /**\n   * Iterate over all the registered interceptors\n   *\n   * This method is particularly useful for skipping over any\n   * interceptors that may have become `null` calling `eject`.\n   *\n   * @param {Function} fn The function to call for each interceptor\n   *\n   * @returns {void}\n   */\n  forEach(fn) {\n    utils.forEach(this.handlers, function forEachHandler(h) {\n      if (h !== null) {\n        fn(h);\n      }\n    });\n  }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n  silentJSONParsing: true,\n  forcedJSONParsing: true,\n  clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n  isBrowser: true,\n  classes: {\n    URLSearchParams,\n    FormData,\n    Blob\n  },\n  protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n * nativescript\n *  navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n  (product) => {\n    return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n  })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n  return (\n    typeof WorkerGlobalScope !== 'undefined' &&\n    // eslint-disable-next-line no-undef\n    self instanceof WorkerGlobalScope &&\n    typeof self.importScripts === 'function'\n  );\n})();\n\nexport {\n  hasBrowserEnv,\n  hasStandardBrowserWebWorkerEnv,\n  hasStandardBrowserEnv\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n  ...utils,\n  ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n  return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n    visitor: function(value, key, path, helpers) {\n      if (platform.isNode && utils.isBuffer(value)) {\n        this.append(key, value.toString('base64'));\n        return false;\n      }\n\n      return helpers.defaultVisitor.apply(this, arguments);\n    }\n  }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n  // foo[x][y][z]\n  // foo.x.y.z\n  // foo-x-y-z\n  // foo x y z\n  return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n    return match[0] === '[]' ? '' : match[1] || match[0];\n  });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n  const obj = {};\n  const keys = Object.keys(arr);\n  let i;\n  const len = keys.length;\n  let key;\n  for (i = 0; i < len; i++) {\n    key = keys[i];\n    obj[key] = arr[key];\n  }\n  return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n  function buildPath(path, value, target, index) {\n    let name = path[index++];\n\n    if (name === '__proto__') return true;\n\n    const isNumericKey = Number.isFinite(+name);\n    const isLast = index >= path.length;\n    name = !name && utils.isArray(target) ? target.length : name;\n\n    if (isLast) {\n      if (utils.hasOwnProp(target, name)) {\n        target[name] = [target[name], value];\n      } else {\n        target[name] = value;\n      }\n\n      return !isNumericKey;\n    }\n\n    if (!target[name] || !utils.isObject(target[name])) {\n      target[name] = [];\n    }\n\n    const result = buildPath(path, value, target[name], index);\n\n    if (result && utils.isArray(target[name])) {\n      target[name] = arrayToObject(target[name]);\n    }\n\n    return !isNumericKey;\n  }\n\n  if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n    const obj = {};\n\n    utils.forEachEntry(formData, (name, value) => {\n      buildPath(parsePropPath(name), value, obj, 0);\n    });\n\n    return obj;\n  }\n\n  return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n  if (utils.isString(rawValue)) {\n    try {\n      (parser || JSON.parse)(rawValue);\n      return utils.trim(rawValue);\n    } catch (e) {\n      if (e.name !== 'SyntaxError') {\n        throw e;\n      }\n    }\n  }\n\n  return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n  transitional: transitionalDefaults,\n\n  adapter: ['xhr', 'http'],\n\n  transformRequest: [function transformRequest(data, headers) {\n    const contentType = headers.getContentType() || '';\n    const hasJSONContentType = contentType.indexOf('application/json') > -1;\n    const isObjectPayload = utils.isObject(data);\n\n    if (isObjectPayload && utils.isHTMLForm(data)) {\n      data = new FormData(data);\n    }\n\n    const isFormData = utils.isFormData(data);\n\n    if (isFormData) {\n      return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n    }\n\n    if (utils.isArrayBuffer(data) ||\n      utils.isBuffer(data) ||\n      utils.isStream(data) ||\n      utils.isFile(data) ||\n      utils.isBlob(data)\n    ) {\n      return data;\n    }\n    if (utils.isArrayBufferView(data)) {\n      return data.buffer;\n    }\n    if (utils.isURLSearchParams(data)) {\n      headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n      return data.toString();\n    }\n\n    let isFileList;\n\n    if (isObjectPayload) {\n      if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n        return toURLEncodedForm(data, this.formSerializer).toString();\n      }\n\n      if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n        const _FormData = this.env && this.env.FormData;\n\n        return toFormData(\n          isFileList ? {'files[]': data} : data,\n          _FormData && new _FormData(),\n          this.formSerializer\n        );\n      }\n    }\n\n    if (isObjectPayload || hasJSONContentType ) {\n      headers.setContentType('application/json', false);\n      return stringifySafely(data);\n    }\n\n    return data;\n  }],\n\n  transformResponse: [function transformResponse(data) {\n    const transitional = this.transitional || defaults.transitional;\n    const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n    const JSONRequested = this.responseType === 'json';\n\n    if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n      const silentJSONParsing = transitional && transitional.silentJSONParsing;\n      const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n      try {\n        return JSON.parse(data);\n      } catch (e) {\n        if (strictJSONParsing) {\n          if (e.name === 'SyntaxError') {\n            throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n          }\n          throw e;\n        }\n      }\n    }\n\n    return data;\n  }],\n\n  /**\n   * A timeout in milliseconds to abort a request. If set to 0 (default) a\n   * timeout is not created.\n   */\n  timeout: 0,\n\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-TOKEN',\n\n  maxContentLength: -1,\n  maxBodyLength: -1,\n\n  env: {\n    FormData: platform.classes.FormData,\n    Blob: platform.classes.Blob\n  },\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  },\n\n  headers: {\n    common: {\n      'Accept': 'application/json, text/plain, */*',\n      'Content-Type': undefined\n    }\n  }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n  defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n  'age', 'authorization', 'content-length', 'content-type', 'etag',\n  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n  'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n  'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n  const parsed = {};\n  let key;\n  let val;\n  let i;\n\n  rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n    i = line.indexOf(':');\n    key = line.substring(0, i).trim().toLowerCase();\n    val = line.substring(i + 1).trim();\n\n    if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n      return;\n    }\n\n    if (key === 'set-cookie') {\n      if (parsed[key]) {\n        parsed[key].push(val);\n      } else {\n        parsed[key] = [val];\n      }\n    } else {\n      parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n    }\n  });\n\n  return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n  return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n  if (value === false || value == null) {\n    return value;\n  }\n\n  return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n  const tokens = Object.create(null);\n  const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n  let match;\n\n  while ((match = tokensRE.exec(str))) {\n    tokens[match[1]] = match[2];\n  }\n\n  return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n  if (utils.isFunction(filter)) {\n    return filter.call(this, value, header);\n  }\n\n  if (isHeaderNameFilter) {\n    value = header;\n  }\n\n  if (!utils.isString(value)) return;\n\n  if (utils.isString(filter)) {\n    return value.indexOf(filter) !== -1;\n  }\n\n  if (utils.isRegExp(filter)) {\n    return filter.test(value);\n  }\n}\n\nfunction formatHeader(header) {\n  return header.trim()\n    .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n      return char.toUpperCase() + str;\n    });\n}\n\nfunction buildAccessors(obj, header) {\n  const accessorName = utils.toCamelCase(' ' + header);\n\n  ['get', 'set', 'has'].forEach(methodName => {\n    Object.defineProperty(obj, methodName + accessorName, {\n      value: function(arg1, arg2, arg3) {\n        return this[methodName].call(this, header, arg1, arg2, arg3);\n      },\n      configurable: true\n    });\n  });\n}\n\nclass AxiosHeaders {\n  constructor(headers) {\n    headers && this.set(headers);\n  }\n\n  set(header, valueOrRewrite, rewrite) {\n    const self = this;\n\n    function setHeader(_value, _header, _rewrite) {\n      const lHeader = normalizeHeader(_header);\n\n      if (!lHeader) {\n        throw new Error('header name must be a non-empty string');\n      }\n\n      const key = utils.findKey(self, lHeader);\n\n      if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n        self[key || _header] = normalizeValue(_value);\n      }\n    }\n\n    const setHeaders = (headers, _rewrite) =>\n      utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n    if (utils.isPlainObject(header) || header instanceof this.constructor) {\n      setHeaders(header, valueOrRewrite)\n    } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n      setHeaders(parseHeaders(header), valueOrRewrite);\n    } else {\n      header != null && setHeader(valueOrRewrite, header, rewrite);\n    }\n\n    return this;\n  }\n\n  get(header, parser) {\n    header = normalizeHeader(header);\n\n    if (header) {\n      const key = utils.findKey(this, header);\n\n      if (key) {\n        const value = this[key];\n\n        if (!parser) {\n          return value;\n        }\n\n        if (parser === true) {\n          return parseTokens(value);\n        }\n\n        if (utils.isFunction(parser)) {\n          return parser.call(this, value, key);\n        }\n\n        if (utils.isRegExp(parser)) {\n          return parser.exec(value);\n        }\n\n        throw new TypeError('parser must be boolean|regexp|function');\n      }\n    }\n  }\n\n  has(header, matcher) {\n    header = normalizeHeader(header);\n\n    if (header) {\n      const key = utils.findKey(this, header);\n\n      return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n    }\n\n    return false;\n  }\n\n  delete(header, matcher) {\n    const self = this;\n    let deleted = false;\n\n    function deleteHeader(_header) {\n      _header = normalizeHeader(_header);\n\n      if (_header) {\n        const key = utils.findKey(self, _header);\n\n        if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n          delete self[key];\n\n          deleted = true;\n        }\n      }\n    }\n\n    if (utils.isArray(header)) {\n      header.forEach(deleteHeader);\n    } else {\n      deleteHeader(header);\n    }\n\n    return deleted;\n  }\n\n  clear(matcher) {\n    const keys = Object.keys(this);\n    let i = keys.length;\n    let deleted = false;\n\n    while (i--) {\n      const key = keys[i];\n      if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n        delete this[key];\n        deleted = true;\n      }\n    }\n\n    return deleted;\n  }\n\n  normalize(format) {\n    const self = this;\n    const headers = {};\n\n    utils.forEach(this, (value, header) => {\n      const key = utils.findKey(headers, header);\n\n      if (key) {\n        self[key] = normalizeValue(value);\n        delete self[header];\n        return;\n      }\n\n      const normalized = format ? formatHeader(header) : String(header).trim();\n\n      if (normalized !== header) {\n        delete self[header];\n      }\n\n      self[normalized] = normalizeValue(value);\n\n      headers[normalized] = true;\n    });\n\n    return this;\n  }\n\n  concat(...targets) {\n    return this.constructor.concat(this, ...targets);\n  }\n\n  toJSON(asStrings) {\n    const obj = Object.create(null);\n\n    utils.forEach(this, (value, header) => {\n      value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n    });\n\n    return obj;\n  }\n\n  [Symbol.iterator]() {\n    return Object.entries(this.toJSON())[Symbol.iterator]();\n  }\n\n  toString() {\n    return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'AxiosHeaders';\n  }\n\n  static from(thing) {\n    return thing instanceof this ? thing : new this(thing);\n  }\n\n  static concat(first, ...targets) {\n    const computed = new this(first);\n\n    targets.forEach((target) => computed.set(target));\n\n    return computed;\n  }\n\n  static accessor(header) {\n    const internals = this[$internals] = (this[$internals] = {\n      accessors: {}\n    });\n\n    const accessors = internals.accessors;\n    const prototype = this.prototype;\n\n    function defineAccessor(_header) {\n      const lHeader = normalizeHeader(_header);\n\n      if (!accessors[lHeader]) {\n        buildAccessors(prototype, _header);\n        accessors[lHeader] = true;\n      }\n    }\n\n    utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n    return this;\n  }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n  let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n  return {\n    get: () => value,\n    set(headerValue) {\n      this[mapped] = headerValue;\n    }\n  }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n  const config = this || defaults;\n  const context = response || config;\n  const headers = AxiosHeaders.from(context.headers);\n  let data = context.data;\n\n  utils.forEach(fns, function transform(fn) {\n    data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n  });\n\n  headers.normalize();\n\n  return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n  // eslint-disable-next-line no-eq-null,eqeqeq\n  AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n  this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n  __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n  const validateStatus = response.config.validateStatus;\n  if (!response.status || !validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(new AxiosError(\n      'Request failed with status code ' + response.status,\n      [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n      response.config,\n      response.request,\n      response\n    ));\n  }\n}\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n  // Standard browser envs support document.cookie\n  {\n    write(name, value, expires, path, domain, secure) {\n      const cookie = [name + '=' + encodeURIComponent(value)];\n\n      utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n      utils.isString(path) && cookie.push('path=' + path);\n\n      utils.isString(domain) && cookie.push('domain=' + domain);\n\n      secure === true && cookie.push('secure');\n\n      document.cookie = cookie.join('; ');\n    },\n\n    read(name) {\n      const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n      return (match ? decodeURIComponent(match[3]) : null);\n    },\n\n    remove(name) {\n      this.write(name, '', Date.now() - 86400000);\n    }\n  }\n\n  :\n\n  // Non-standard browser env (web workers, react-native) lack needed support.\n  {\n    write() {},\n    read() {\n      return null;\n    },\n    remove() {}\n  };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n  // by any combination of letters, digits, plus, period, or hyphen.\n  return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n  return relativeURL\n    ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n    : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n  if (baseURL && !isAbsoluteURL(requestedURL)) {\n    return combineURLs(baseURL, requestedURL);\n  }\n  return requestedURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n  (function standardBrowserEnv() {\n    const msie = /(msie|trident)/i.test(navigator.userAgent);\n    const urlParsingNode = document.createElement('a');\n    let originURL;\n\n    /**\n    * Parse a URL to discover its components\n    *\n    * @param {String} url The URL to be parsed\n    * @returns {Object}\n    */\n    function resolveURL(url) {\n      let href = url;\n\n      if (msie) {\n        // IE needs attribute set twice to normalize properties\n        urlParsingNode.setAttribute('href', href);\n        href = urlParsingNode.href;\n      }\n\n      urlParsingNode.setAttribute('href', href);\n\n      // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n      return {\n        href: urlParsingNode.href,\n        protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n        host: urlParsingNode.host,\n        search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n        hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n        hostname: urlParsingNode.hostname,\n        port: urlParsingNode.port,\n        pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n          urlParsingNode.pathname :\n          '/' + urlParsingNode.pathname\n      };\n    }\n\n    originURL = resolveURL(window.location.href);\n\n    /**\n    * Determine if a URL shares the same origin as the current location\n    *\n    * @param {String} requestURL The URL to test\n    * @returns {boolean} True if URL shares the same origin, otherwise false\n    */\n    return function isURLSameOrigin(requestURL) {\n      const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n      return (parsed.protocol === originURL.protocol &&\n          parsed.host === originURL.host);\n    };\n  })() :\n\n  // Non standard browser envs (web workers, react-native) lack needed support.\n  (function nonStandardBrowserEnv() {\n    return function isURLSameOrigin() {\n      return true;\n    };\n  })();\n","'use strict';\n\nexport default function parseProtocol(url) {\n  const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n  return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n  samplesCount = samplesCount || 10;\n  const bytes = new Array(samplesCount);\n  const timestamps = new Array(samplesCount);\n  let head = 0;\n  let tail = 0;\n  let firstSampleTS;\n\n  min = min !== undefined ? min : 1000;\n\n  return function push(chunkLength) {\n    const now = Date.now();\n\n    const startedAt = timestamps[tail];\n\n    if (!firstSampleTS) {\n      firstSampleTS = now;\n    }\n\n    bytes[head] = chunkLength;\n    timestamps[head] = now;\n\n    let i = tail;\n    let bytesCount = 0;\n\n    while (i !== head) {\n      bytesCount += bytes[i++];\n      i = i % samplesCount;\n    }\n\n    head = (head + 1) % samplesCount;\n\n    if (head === tail) {\n      tail = (tail + 1) % samplesCount;\n    }\n\n    if (now - firstSampleTS < min) {\n      return;\n    }\n\n    const passed = startedAt && now - startedAt;\n\n    return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n  };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n  let bytesNotified = 0;\n  const _speedometer = speedometer(50, 250);\n\n  return e => {\n    const loaded = e.loaded;\n    const total = e.lengthComputable ? e.total : undefined;\n    const progressBytes = loaded - bytesNotified;\n    const rate = _speedometer(progressBytes);\n    const inRange = loaded <= total;\n\n    bytesNotified = loaded;\n\n    const data = {\n      loaded,\n      total,\n      progress: total ? (loaded / total) : undefined,\n      bytes: progressBytes,\n      rate: rate ? rate : undefined,\n      estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n      event: e\n    };\n\n    data[isDownloadStream ? 'download' : 'upload'] = true;\n\n    listener(data);\n  };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n  return new Promise(function dispatchXhrRequest(resolve, reject) {\n    let requestData = config.data;\n    const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n    let {responseType, withXSRFToken} = config;\n    let onCanceled;\n    function done() {\n      if (config.cancelToken) {\n        config.cancelToken.unsubscribe(onCanceled);\n      }\n\n      if (config.signal) {\n        config.signal.removeEventListener('abort', onCanceled);\n      }\n    }\n\n    let contentType;\n\n    if (utils.isFormData(requestData)) {\n      if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n        requestHeaders.setContentType(false); // Let the browser set it\n      } else if ((contentType = requestHeaders.getContentType()) !== false) {\n        // fix semicolon duplication issue for ReactNative FormData implementation\n        const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n        requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n      }\n    }\n\n    let request = new XMLHttpRequest();\n\n    // HTTP basic authentication\n    if (config.auth) {\n      const username = config.auth.username || '';\n      const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n      requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n    }\n\n    const fullPath = buildFullPath(config.baseURL, config.url);\n\n    request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n    // Set the request timeout in MS\n    request.timeout = config.timeout;\n\n    function onloadend() {\n      if (!request) {\n        return;\n      }\n      // Prepare the response\n      const responseHeaders = AxiosHeaders.from(\n        'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n      );\n      const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n        request.responseText : request.response;\n      const response = {\n        data: responseData,\n        status: request.status,\n        statusText: request.statusText,\n        headers: responseHeaders,\n        config,\n        request\n      };\n\n      settle(function _resolve(value) {\n        resolve(value);\n        done();\n      }, function _reject(err) {\n        reject(err);\n        done();\n      }, response);\n\n      // Clean up request\n      request = null;\n    }\n\n    if ('onloadend' in request) {\n      // Use onloadend if available\n      request.onloadend = onloadend;\n    } else {\n      // Listen for ready state to emulate onloadend\n      request.onreadystatechange = function handleLoad() {\n        if (!request || request.readyState !== 4) {\n          return;\n        }\n\n        // The request errored out and we didn't get a response, this will be\n        // handled by onerror instead\n        // With one exception: request that using file: protocol, most browsers\n        // will return status as 0 even though it's a successful request\n        if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n          return;\n        }\n        // readystate handler is calling before onerror or ontimeout handlers,\n        // so we should call onloadend on the next 'tick'\n        setTimeout(onloadend);\n      };\n    }\n\n    // Handle browser request cancellation (as opposed to a manual cancellation)\n    request.onabort = function handleAbort() {\n      if (!request) {\n        return;\n      }\n\n      reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle low level network errors\n    request.onerror = function handleError() {\n      // Real errors are hidden from us by the browser\n      // onerror should only fire if it's a network error\n      reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle timeout\n    request.ontimeout = function handleTimeout() {\n      let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n      const transitional = config.transitional || transitionalDefaults;\n      if (config.timeoutErrorMessage) {\n        timeoutErrorMessage = config.timeoutErrorMessage;\n      }\n      reject(new AxiosError(\n        timeoutErrorMessage,\n        transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n        config,\n        request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Add xsrf header\n    // This is only done if running in a standard browser environment.\n    // Specifically not if we're in a web worker, or react-native.\n    if(platform.hasStandardBrowserEnv) {\n      withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n      if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n        // Add xsrf header\n        const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n        if (xsrfValue) {\n          requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n        }\n      }\n    }\n\n    // Remove Content-Type if data is undefined\n    requestData === undefined && requestHeaders.setContentType(null);\n\n    // Add headers to the request\n    if ('setRequestHeader' in request) {\n      utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n        request.setRequestHeader(key, val);\n      });\n    }\n\n    // Add withCredentials to request if needed\n    if (!utils.isUndefined(config.withCredentials)) {\n      request.withCredentials = !!config.withCredentials;\n    }\n\n    // Add responseType to request if needed\n    if (responseType && responseType !== 'json') {\n      request.responseType = config.responseType;\n    }\n\n    // Handle progress if needed\n    if (typeof config.onDownloadProgress === 'function') {\n      request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n    }\n\n    // Not all browsers support upload events\n    if (typeof config.onUploadProgress === 'function' && request.upload) {\n      request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n    }\n\n    if (config.cancelToken || config.signal) {\n      // Handle cancellation\n      // eslint-disable-next-line func-names\n      onCanceled = cancel => {\n        if (!request) {\n          return;\n        }\n        reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n        request.abort();\n        request = null;\n      };\n\n      config.cancelToken && config.cancelToken.subscribe(onCanceled);\n      if (config.signal) {\n        config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n      }\n    }\n\n    const protocol = parseProtocol(fullPath);\n\n    if (protocol && platform.protocols.indexOf(protocol) === -1) {\n      reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n      return;\n    }\n\n\n    // Send the request\n    request.send(requestData || null);\n  });\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n  http: httpAdapter,\n  xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n  if (fn) {\n    try {\n      Object.defineProperty(fn, 'name', {value});\n    } catch (e) {\n      // eslint-disable-next-line no-empty\n    }\n    Object.defineProperty(fn, 'adapterName', {value});\n  }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n  getAdapter: (adapters) => {\n    adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n    const {length} = adapters;\n    let nameOrAdapter;\n    let adapter;\n\n    const rejectedReasons = {};\n\n    for (let i = 0; i < length; i++) {\n      nameOrAdapter = adapters[i];\n      let id;\n\n      adapter = nameOrAdapter;\n\n      if (!isResolvedHandle(nameOrAdapter)) {\n        adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n        if (adapter === undefined) {\n          throw new AxiosError(`Unknown adapter '${id}'`);\n        }\n      }\n\n      if (adapter) {\n        break;\n      }\n\n      rejectedReasons[id || '#' + i] = adapter;\n    }\n\n    if (!adapter) {\n\n      const reasons = Object.entries(rejectedReasons)\n        .map(([id, state]) => `adapter ${id} ` +\n          (state === false ? 'is not supported by the environment' : 'is not available in the build')\n        );\n\n      let s = length ?\n        (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n        'as no adapter specified';\n\n      throw new AxiosError(\n        `There is no suitable adapter to dispatch the request ` + s,\n        'ERR_NOT_SUPPORT'\n      );\n    }\n\n    return adapter;\n  },\n  adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n\n  if (config.signal && config.signal.aborted) {\n    throw new CanceledError(null, config);\n  }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n  throwIfCancellationRequested(config);\n\n  config.headers = AxiosHeaders.from(config.headers);\n\n  // Transform request data\n  config.data = transformData.call(\n    config,\n    config.transformRequest\n  );\n\n  if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n    config.headers.setContentType('application/x-www-form-urlencoded', false);\n  }\n\n  const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n  return adapter(config).then(function onAdapterResolution(response) {\n    throwIfCancellationRequested(config);\n\n    // Transform response data\n    response.data = transformData.call(\n      config,\n      config.transformResponse,\n      response\n    );\n\n    response.headers = AxiosHeaders.from(response.headers);\n\n    return response;\n  }, function onAdapterRejection(reason) {\n    if (!isCancel(reason)) {\n      throwIfCancellationRequested(config);\n\n      // Transform response data\n      if (reason && reason.response) {\n        reason.response.data = transformData.call(\n          config,\n          config.transformResponse,\n          reason.response\n        );\n        reason.response.headers = AxiosHeaders.from(reason.response.headers);\n      }\n    }\n\n    return Promise.reject(reason);\n  });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n  // eslint-disable-next-line no-param-reassign\n  config2 = config2 || {};\n  const config = {};\n\n  function getMergedValue(target, source, caseless) {\n    if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n      return utils.merge.call({caseless}, target, source);\n    } else if (utils.isPlainObject(source)) {\n      return utils.merge({}, source);\n    } else if (utils.isArray(source)) {\n      return source.slice();\n    }\n    return source;\n  }\n\n  // eslint-disable-next-line consistent-return\n  function mergeDeepProperties(a, b, caseless) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(a, b, caseless);\n    } else if (!utils.isUndefined(a)) {\n      return getMergedValue(undefined, a, caseless);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function valueFromConfig2(a, b) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(undefined, b);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function defaultToConfig2(a, b) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(undefined, b);\n    } else if (!utils.isUndefined(a)) {\n      return getMergedValue(undefined, a);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function mergeDirectKeys(a, b, prop) {\n    if (prop in config2) {\n      return getMergedValue(a, b);\n    } else if (prop in config1) {\n      return getMergedValue(undefined, a);\n    }\n  }\n\n  const mergeMap = {\n    url: valueFromConfig2,\n    method: valueFromConfig2,\n    data: valueFromConfig2,\n    baseURL: defaultToConfig2,\n    transformRequest: defaultToConfig2,\n    transformResponse: defaultToConfig2,\n    paramsSerializer: defaultToConfig2,\n    timeout: defaultToConfig2,\n    timeoutMessage: defaultToConfig2,\n    withCredentials: defaultToConfig2,\n    withXSRFToken: defaultToConfig2,\n    adapter: defaultToConfig2,\n    responseType: defaultToConfig2,\n    xsrfCookieName: defaultToConfig2,\n    xsrfHeaderName: defaultToConfig2,\n    onUploadProgress: defaultToConfig2,\n    onDownloadProgress: defaultToConfig2,\n    decompress: defaultToConfig2,\n    maxContentLength: defaultToConfig2,\n    maxBodyLength: defaultToConfig2,\n    beforeRedirect: defaultToConfig2,\n    transport: defaultToConfig2,\n    httpAgent: defaultToConfig2,\n    httpsAgent: defaultToConfig2,\n    cancelToken: defaultToConfig2,\n    socketPath: defaultToConfig2,\n    responseEncoding: defaultToConfig2,\n    validateStatus: mergeDirectKeys,\n    headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n  };\n\n  utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n    const merge = mergeMap[prop] || mergeDeepProperties;\n    const configValue = merge(config1[prop], config2[prop], prop);\n    (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n  });\n\n  return config;\n}\n","export const VERSION = \"1.6.8\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n  validators[type] = function validator(thing) {\n    return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n  };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n  function formatMessage(opt, desc) {\n    return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n  }\n\n  // eslint-disable-next-line func-names\n  return (value, opt, opts) => {\n    if (validator === false) {\n      throw new AxiosError(\n        formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n        AxiosError.ERR_DEPRECATED\n      );\n    }\n\n    if (version && !deprecatedWarnings[opt]) {\n      deprecatedWarnings[opt] = true;\n      // eslint-disable-next-line no-console\n      console.warn(\n        formatMessage(\n          opt,\n          ' has been deprecated since v' + version + ' and will be removed in the near future'\n        )\n      );\n    }\n\n    return validator ? validator(value, opt, opts) : true;\n  };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n  if (typeof options !== 'object') {\n    throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n  }\n  const keys = Object.keys(options);\n  let i = keys.length;\n  while (i-- > 0) {\n    const opt = keys[i];\n    const validator = schema[opt];\n    if (validator) {\n      const value = options[opt];\n      const result = value === undefined || validator(value, opt, options);\n      if (result !== true) {\n        throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n      }\n      continue;\n    }\n    if (allowUnknown !== true) {\n      throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n    }\n  }\n}\n\nexport default {\n  assertOptions,\n  validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n  constructor(instanceConfig) {\n    this.defaults = instanceConfig;\n    this.interceptors = {\n      request: new InterceptorManager(),\n      response: new InterceptorManager()\n    };\n  }\n\n  /**\n   * Dispatch a request\n   *\n   * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n   * @param {?Object} config\n   *\n   * @returns {Promise} The Promise to be fulfilled\n   */\n  async request(configOrUrl, config) {\n    try {\n      return await this._request(configOrUrl, config);\n    } catch (err) {\n      if (err instanceof Error) {\n        let dummy;\n\n        Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n        // slice off the Error: ... line\n        const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n\n        if (!err.stack) {\n          err.stack = stack;\n          // match without the 2 top stack lines\n        } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n          err.stack += '\\n' + stack\n        }\n      }\n\n      throw err;\n    }\n  }\n\n  _request(configOrUrl, config) {\n    /*eslint no-param-reassign:0*/\n    // Allow for axios('example/url'[, config]) a la fetch API\n    if (typeof configOrUrl === 'string') {\n      config = config || {};\n      config.url = configOrUrl;\n    } else {\n      config = configOrUrl || {};\n    }\n\n    config = mergeConfig(this.defaults, config);\n\n    const {transitional, paramsSerializer, headers} = config;\n\n    if (transitional !== undefined) {\n      validator.assertOptions(transitional, {\n        silentJSONParsing: validators.transitional(validators.boolean),\n        forcedJSONParsing: validators.transitional(validators.boolean),\n        clarifyTimeoutError: validators.transitional(validators.boolean)\n      }, false);\n    }\n\n    if (paramsSerializer != null) {\n      if (utils.isFunction(paramsSerializer)) {\n        config.paramsSerializer = {\n          serialize: paramsSerializer\n        }\n      } else {\n        validator.assertOptions(paramsSerializer, {\n          encode: validators.function,\n          serialize: validators.function\n        }, true);\n      }\n    }\n\n    // Set config.method\n    config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n    // Flatten headers\n    let contextHeaders = headers && utils.merge(\n      headers.common,\n      headers[config.method]\n    );\n\n    headers && utils.forEach(\n      ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n      (method) => {\n        delete headers[method];\n      }\n    );\n\n    config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n    // filter out skipped interceptors\n    const requestInterceptorChain = [];\n    let synchronousRequestInterceptors = true;\n    this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n      if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n        return;\n      }\n\n      synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n      requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n    });\n\n    const responseInterceptorChain = [];\n    this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n      responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n    });\n\n    let promise;\n    let i = 0;\n    let len;\n\n    if (!synchronousRequestInterceptors) {\n      const chain = [dispatchRequest.bind(this), undefined];\n      chain.unshift.apply(chain, requestInterceptorChain);\n      chain.push.apply(chain, responseInterceptorChain);\n      len = chain.length;\n\n      promise = Promise.resolve(config);\n\n      while (i < len) {\n        promise = promise.then(chain[i++], chain[i++]);\n      }\n\n      return promise;\n    }\n\n    len = requestInterceptorChain.length;\n\n    let newConfig = config;\n\n    i = 0;\n\n    while (i < len) {\n      const onFulfilled = requestInterceptorChain[i++];\n      const onRejected = requestInterceptorChain[i++];\n      try {\n        newConfig = onFulfilled(newConfig);\n      } catch (error) {\n        onRejected.call(this, error);\n        break;\n      }\n    }\n\n    try {\n      promise = dispatchRequest.call(this, newConfig);\n    } catch (error) {\n      return Promise.reject(error);\n    }\n\n    i = 0;\n    len = responseInterceptorChain.length;\n\n    while (i < len) {\n      promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n    }\n\n    return promise;\n  }\n\n  getUri(config) {\n    config = mergeConfig(this.defaults, config);\n    const fullPath = buildFullPath(config.baseURL, config.url);\n    return buildURL(fullPath, config.params, config.paramsSerializer);\n  }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, config) {\n    return this.request(mergeConfig(config || {}, {\n      method,\n      url,\n      data: (config || {}).data\n    }));\n  };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  /*eslint func-names:0*/\n\n  function generateHTTPMethod(isForm) {\n    return function httpMethod(url, data, config) {\n      return this.request(mergeConfig(config || {}, {\n        method,\n        headers: isForm ? {\n          'Content-Type': 'multipart/form-data'\n        } : {},\n        url,\n        data\n      }));\n    };\n  }\n\n  Axios.prototype[method] = generateHTTPMethod();\n\n  Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n  constructor(executor) {\n    if (typeof executor !== 'function') {\n      throw new TypeError('executor must be a function.');\n    }\n\n    let resolvePromise;\n\n    this.promise = new Promise(function promiseExecutor(resolve) {\n      resolvePromise = resolve;\n    });\n\n    const token = this;\n\n    // eslint-disable-next-line func-names\n    this.promise.then(cancel => {\n      if (!token._listeners) return;\n\n      let i = token._listeners.length;\n\n      while (i-- > 0) {\n        token._listeners[i](cancel);\n      }\n      token._listeners = null;\n    });\n\n    // eslint-disable-next-line func-names\n    this.promise.then = onfulfilled => {\n      let _resolve;\n      // eslint-disable-next-line func-names\n      const promise = new Promise(resolve => {\n        token.subscribe(resolve);\n        _resolve = resolve;\n      }).then(onfulfilled);\n\n      promise.cancel = function reject() {\n        token.unsubscribe(_resolve);\n      };\n\n      return promise;\n    };\n\n    executor(function cancel(message, config, request) {\n      if (token.reason) {\n        // Cancellation has already been requested\n        return;\n      }\n\n      token.reason = new CanceledError(message, config, request);\n      resolvePromise(token.reason);\n    });\n  }\n\n  /**\n   * Throws a `CanceledError` if cancellation has been requested.\n   */\n  throwIfRequested() {\n    if (this.reason) {\n      throw this.reason;\n    }\n  }\n\n  /**\n   * Subscribe to the cancel signal\n   */\n\n  subscribe(listener) {\n    if (this.reason) {\n      listener(this.reason);\n      return;\n    }\n\n    if (this._listeners) {\n      this._listeners.push(listener);\n    } else {\n      this._listeners = [listener];\n    }\n  }\n\n  /**\n   * Unsubscribe from the cancel signal\n   */\n\n  unsubscribe(listener) {\n    if (!this._listeners) {\n      return;\n    }\n    const index = this._listeners.indexOf(listener);\n    if (index !== -1) {\n      this._listeners.splice(index, 1);\n    }\n  }\n\n  /**\n   * Returns an object that contains a new `CancelToken` and a function that, when called,\n   * cancels the `CancelToken`.\n   */\n  static source() {\n    let cancel;\n    const token = new CancelToken(function executor(c) {\n      cancel = c;\n    });\n    return {\n      token,\n      cancel\n    };\n  }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n *  ```js\n *  function f(x, y, z) {}\n *  var args = [1, 2, 3];\n *  f.apply(null, args);\n *  ```\n *\n * With `spread` this example can be re-written.\n *\n *  ```js\n *  spread(function(x, y, z) {})([1, 2, 3]);\n *  ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n  return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n  Continue: 100,\n  SwitchingProtocols: 101,\n  Processing: 102,\n  EarlyHints: 103,\n  Ok: 200,\n  Created: 201,\n  Accepted: 202,\n  NonAuthoritativeInformation: 203,\n  NoContent: 204,\n  ResetContent: 205,\n  PartialContent: 206,\n  MultiStatus: 207,\n  AlreadyReported: 208,\n  ImUsed: 226,\n  MultipleChoices: 300,\n  MovedPermanently: 301,\n  Found: 302,\n  SeeOther: 303,\n  NotModified: 304,\n  UseProxy: 305,\n  Unused: 306,\n  TemporaryRedirect: 307,\n  PermanentRedirect: 308,\n  BadRequest: 400,\n  Unauthorized: 401,\n  PaymentRequired: 402,\n  Forbidden: 403,\n  NotFound: 404,\n  MethodNotAllowed: 405,\n  NotAcceptable: 406,\n  ProxyAuthenticationRequired: 407,\n  RequestTimeout: 408,\n  Conflict: 409,\n  Gone: 410,\n  LengthRequired: 411,\n  PreconditionFailed: 412,\n  PayloadTooLarge: 413,\n  UriTooLong: 414,\n  UnsupportedMediaType: 415,\n  RangeNotSatisfiable: 416,\n  ExpectationFailed: 417,\n  ImATeapot: 418,\n  MisdirectedRequest: 421,\n  UnprocessableEntity: 422,\n  Locked: 423,\n  FailedDependency: 424,\n  TooEarly: 425,\n  UpgradeRequired: 426,\n  PreconditionRequired: 428,\n  TooManyRequests: 429,\n  RequestHeaderFieldsTooLarge: 431,\n  UnavailableForLegalReasons: 451,\n  InternalServerError: 500,\n  NotImplemented: 501,\n  BadGateway: 502,\n  ServiceUnavailable: 503,\n  GatewayTimeout: 504,\n  HttpVersionNotSupported: 505,\n  VariantAlsoNegotiates: 506,\n  InsufficientStorage: 507,\n  LoopDetected: 508,\n  NotExtended: 510,\n  NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n  HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  const context = new Axios(defaultConfig);\n  const instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n  // Copy context to instance\n  utils.extend(instance, context, null, {allOwnKeys: true});\n\n  // Factory for creating new instances\n  instance.create = function create(instanceConfig) {\n    return createInstance(mergeConfig(defaultConfig, instanceConfig));\n  };\n\n  return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from \"axios\";\nimport { config } from \"../config\";\nimport { computed, watch } from \"vue\";\n\nconst CancelToken = axios.CancelToken;\nexport const generateCancelToken = () => CancelToken.source();\n\nexport const generateAbortcontroller = (timeoutMs: number) => {\n  const abortController = new AbortController();\n  setTimeout(() => abortController.abort(), timeoutMs || 0);\n  return abortController;\n};\n\nexport const apiRootAbsoluteRef = computed(() => config.api_root?.startsWith(\"http\") ? config.api_root : document.location.origin + config.api_root);\nexport let api_root_absolute = apiRootAbsoluteRef.value;\n\nexport const api2RootAbsoluteRef = computed(() => config.api_2_root?.startsWith(\"http\") ? config.api_2_root : document.location.origin + config.api_2_root);\nexport let api_2_root_absolute = api2RootAbsoluteRef.value;\n\n// Instantiate axios with base URL from config\n// No need for CSRF or anything fancy here\n// TODO : maybe add interceptor to better handle errors ?\nexport const api = axios.create({\n  baseURL: api_root_absolute,\n});\n\nexport const apiv2 = axios.create({\n  baseURL: api_2_root_absolute,\n});\n\nwatch(apiRootAbsoluteRef, (value) => {\n  api_root_absolute = value;\n  api.defaults.baseURL = value;\n});\n\nwatch(api2RootAbsoluteRef, (value) => {\n  api_2_root_absolute = value;\n  apiv2.defaults.baseURL = value;\n});\n","export const PAGES_AROUND = 3;\n\n/**\n *\n * @param {number} size\n * @param {number} startAt\n * @returns {Array<number>}\n */\nfunction range(size, startAt = 1) {\n  return [...Array(size).keys()].map((i) => i + startAt);\n}\n\n/**\n *\n * @param {number} pageCount\n * @returns {Array<number>}\n */\nfunction getPages(pageCount) {\n  return range(pageCount);\n}\n\n/**\n * Get the number of pages to show inside the pagination based on the total number of pages and the current one.\n * We want 3 pages around the current one with some exceptions :\n * - we want to show at most all pages except the first and last\n * - if we're close to the first page, we'll show less than 3 pages on the left\n * - if we're close to the last page, we'll show less than 3 pages on the right\n * @param {{length: number}} pages\n * @param {number} currentPage\n * @returns {number}\n */\nfunction getPagesShown(pages, currentPage) {\n  return Math.min(\n    PAGES_AROUND * 2 + 1,\n    pages.length - 2,\n    PAGES_AROUND + currentPage - 1,\n    PAGES_AROUND + pages.length - currentPage\n  );\n}\n\n/**\n * Get the first page to show\n * We want to start 3 pages before the current one but we don't want to start below page 2\n * @param {number} currentPage\n * @returns {number}\n */\nfunction getStartPage(currentPage) {\n  return Math.max(\n    currentPage - PAGES_AROUND, // we want to start 3 pages before the current one\n    2 // we don't want to start below page 2\n  )\n}\n\n/**\n * Return an array of page number to show in pagination\n * @param {number} currentPage - Current page\n * @param {number} pageCount - Number of pages\n * @returns {Array<number| null>}\n */\nexport default function getVisiblePages(currentPage, pageCount) {\n  const pages = getPages(pageCount);\n  const start = getStartPage(currentPage);\n  if (pageCount <= 2) {\n    return [];\n  }\n  /** @type {Array<number | null>} */\n  let pagination = range(getPagesShown(pages, currentPage), start);\n  if(!pagination.includes(2)) {\n    pagination.unshift(null);\n  }\n  if(!pagination.includes(pageCount - 1)) {\n    pagination.push(null);\n  }\n  return pagination;\n}\n","<!--\n---\nname: Pagination\ncategory: 5 - Interactions\n---\n\n# Pagination\n\nA simple pagination Vue component that allow you to paginate long collections.\n\n## Usage\n\nSimply provide necessary props :\n\n* page : current page\n* page_size : how many elements will be on each page\n* total_results : total collection length\n* changePage : a function that will be called on each button click. It will be passed a single argument : the new page number\n\nCheck the example below for more infos :\n\n```pagination-ex.vue\n<template>\n    <pagination\n      v-if=\"totalResults > pageSize\"\n      :page=\"currentPage\"\n      :page-size=\"pageSize\"\n      :total-results=\"totalResults\"\n      :change-page=\"changePage\"\n    />\n</template>\n\n<script>\nimport Pagination from \"../components/pagination/pagination.vue\"\n\nexport default {\n  name: \"XXX\",\n  components: {\n      Pagination\n  },\n  methods: {\n    changePage(index) {\n      this.page = index; // Change current page\n      this.loadPage(); // Load corresponding new info\n      scrollToTop(); // Then scroll to the top\n    }\n  }\n};\n</script>\n```\n-->\n\n<template>\n  <nav role=\"navigation\" class=\"fr-pagination fr-pagination--centered\" aria-label=\"Pagination\">\n    <ul class=\"fr-pagination__list\">\n      <li>\n        <a\n          :href=\"page === 1 ? undefined :'#'\"\n          class=\"fr-pagination__link fr-pagination__link--first\"\n          @click.prevent=\"onClick(1)\"\n        >\n          {{ $t('First page') }}\n        </a>\n      </li>\n      <li>\n        <a\n          :href=\"page === 1 ? undefined : '#'\"\n          class=\"fr-pagination__link fr-pagination__link--prev fr-pagination__link--lg-label\"\n          @click.prevent=\"previousPage\"\n        >\n          {{ $t('Previous page') }}\n        </a>\n      </li>\n      <li>\n        <a\n          :aria-current=\"page === 1 ? 'page' : undefined\"\n          :href=\"page === 1 ? undefined : '#'\"\n          class=\"fr-pagination__link\"\n          :class=\"{'fr-hidden fr-unhidden-sm': page > 1}\"\n          :title=\"$t('Page', {nb: 1})\"\n          @click.prevent=\"onClick(1)\"\n          :data-page=\"1\"\n        >\n          1\n        </a>\n      </li>\n      <li v-for=\"index in visiblePages\">\n        <a\n          class=\"fr-pagination__link\"\n          :class=\"{'fr-hidden fr-unhidden-lg': index < page - 1 || index > page + 1}\"\n          :aria-current=\"page === index ? 'page' : undefined\"\n          :href=\"page === index ? undefined : '#'\"\n          :title=\"$t('Page', {nb: index})\"\n          @click.prevent=\"onClick(index)\"\n          :data-page=\"index\"\n          v-if=\"index\"\n          >\n          {{ index }}\n        </a>\n        <a class=\"fr-pagination__link fr-hidden fr-unhidden-lg\" v-else>\n          …\n        </a>\n      </li>\n      <li>\n        <a\n          class=\"fr-pagination__link\"\n          :aria-current=\"page === pageCount ? 'page' : undefined\"\n          :href=\"page === pageCount ? undefined : '#'\"\n          :title=\"$t('Page', {nb: pageCount})\"\n          @click.prevent=\"onClick(pageCount)\"\n          :data-page=\"pageCount\"\n        >\n          {{ pageCount }}\n        </a>\n      </li>\n      <li>\n        <a\n          class=\"fr-pagination__link fr-pagination__link--next fr-pagination__link--lg-label\"\n          :href=\"page === pageCount ? undefined : '#'\"\n          @click.prevent=\"nextPage\"\n        >\n          {{ $t('Next page') }}\n        </a>\n      </li>\n      <li>\n        <a\n          class=\"fr-pagination__link fr-pagination__link--last\"\n          :href=\"page === pageCount ? undefined : '#'\"\n          @click.prevent=\"onClick(pageCount)\"\n        >\n          {{ $t('Last page') }}\n        </a>\n      </li>\n    </ul>\n  </nav>\n</template>\n\n<script>\nimport { computed, defineComponent } from \"vue\";\nimport getVisiblePages from \"./paginate\";\n\nexport default defineComponent({\n  props: {\n    page: {\n      type: Number,\n      default: 1,\n    },\n    changePage: {\n      type: Function,\n      required: true,\n    },\n    pageSize: {\n      type: Number,\n      default: 20,\n    },\n    totalResults: {\n      type: Number,\n      required: true,\n    },\n  },\n  setup(props) {\n    const pageCount = computed(() => Math.ceil(props.totalResults / props.pageSize));\n    const visiblePages = computed(() => getVisiblePages(props.page, pageCount.value));\n\n    /**\n    * @param {number} index\n    */\n    const onClick = (index) => {\n      if (index !== props.page) {\n        return props.changePage(index);\n      }\n    }\n\n    const nextPage = () => {\n      const index = props.page + 1;\n      if (index <= pageCount.value) {\n        return props.changePage(index);\n      }\n    };\n\n    const previousPage = () => {\n      const index = props.page - 1;\n      if (index > 0) {\n        return props.changePage(index);\n      }\n    }\n\n    return {\n      pageCount,\n      visiblePages,\n      onClick,\n      nextPage,\n      previousPage,\n    }\n  }\n});\n</script>\n","/**\n * @typedef {object} Component\n * @property {string} hook - Hook name\n * @property {import(\"vue\").Component} component - Vue Component to show in udata-front\n * @property {string} [module] module - Udata module registering this component, logged before the component is used\n * * @property {string} [name] - Component name, logged before the component is used\n */\n\n/**\n * @typedef {object} Translation\n * @property {object} messages - Messages to add to vue-i18n\n * @property {string} [module] - Udata module registering this translation\n */\n\n/** @typedef {Object<string, Array<Component>>} Components - see {@link Component} */\n/** @typedef {Array<Translation>} Translations - see {@link Translation} */\n\n/**\n * @typedef {object} UdataFrontNamespace\n * @property {Components} components - Key-value pair matching components (see {@link Component}) with hooks\n * @property {Translations} translations - Translations to add to vue-i18n (see {@link Translation})\n*/\n\n/** @type {UdataFrontNamespace?} */\n// @ts-expect-error\nglobalThis.udata_front;\n\n/** @type {UdataFrontNamespace} */\n// @ts-expect-error\nconst udata_front = globalThis.udata_front ?? {\n  components: {},\n  translations: [],\n}\n\nexport function reset() {\n  udata_front.components = {};\n  udata_front.translations = [];\n}\n\n/**\n * @callback RegisterComponent\n * @param {string} hook\n * @param {import(\"vue\").Component} component\n * @param {string} [module]\n * @param {string} [name]\n * @returns {Component}\n */\n\n/** @type {RegisterComponent} */\nexport function registerComponent(hook, component, module, name) {\n  if(!udata_front.components[hook]) {\n    udata_front.components[hook] = [];\n  }\n\n  const udataFrontComponent = {\n    component,\n    hook,\n    module,\n    name,\n  };\n\n  udata_front.components[hook].push(udataFrontComponent);\n\n  return udataFrontComponent;\n}\n\n/**\n * @callback RegisterTranslation\n * @param {object} messages - Messages translation following vue-i18n format\n * @param {string} [module] - Udata module, logged when the hook is called\n * @returns {Translation}\n */\n\n/** @type {RegisterTranslation} */\nexport function registerTranslation(messages, module) {\n  const translation = {\n    messages,\n    module,\n  };\n  udata_front.translations.push(translation);\n  return translation;\n}\n\n/** @returns {Components} */\nexport function getRegisteredComponents() {\n  return udata_front.components;\n}\n\n/**\n * @param {string} name - Hook name\n *  @returns {Array<Component>} all components for this hook\n*/\nexport function getRegisteredComponentsForHook(name) {\n  return udata_front.components[name] ?? [];\n}\n\n/** @returns {Translations} */\nexport function getRegisteredTranslations() {\n  return udata_front.translations;\n}\n\nglobalThis.udata_front = udata_front;\n","import dayjs from \"dayjs/esm\";\nimport LocalizedFormat from 'dayjs/esm/plugin/localizedFormat';\nimport RelativeTime from \"dayjs/esm/plugin/relativeTime\";\nimport { DefineLocaleMessage, I18n, Locale, createI18n } from \"vue-i18n\";\nimport messages from '@intlify/unplugin-vue-i18n/messages';\nimport { config } from \"../config\";\nimport { api_root_absolute } from \"../api/api\";\nimport { getRegisteredTranslations } from \"@etalab/udata-front-plugins-helper\";\n\ndayjs.extend(LocalizedFormat);\ndayjs.extend(RelativeTime, {\n  thresholds: [\n    { l: 'd', r: 1 },\n    { l: 'dd', r: 29, d: 'day' },\n    { l: 'M', r: 1 },\n    { l: 'MM', r: 11, d: 'month' },\n    { l: 'y', r: 1 },\n    { l: 'yy', d: 'year' }\n  ],\n});\n\nlet i18n : I18n | null = null;\n\nconst setupI18n = () => {\n  i18n = createI18n({\n    legacy: false,\n    globalInjection: true,\n    locale: config.default_lang,\n    messages: {},\n    formatFallbackMessages: true\n  });\n  setupI18nWithExistingInstance(i18n);\n  return i18n;\n}\n\nconst setupI18nWithExistingInstance = (newI18n: I18n) => {\n  const locales = config.only_locales.split(\",\");\n  if(!locales.includes(config.default_lang)) {\n    throw new Error(\"Default lang is not in only locales, it won't be loaded\");\n  }\n\n  const modules = import.meta.glob<{default: any}>(\"/node_modules/dayjs/esm/locale/*.js\");\n  let langPromises = [];\n  for (let path in modules) {\n    let locale = path.split(\"/\").pop()?.split(\".\").shift() ?? \"\";\n    if(locales.includes(locale)) {\n      langPromises.push(modules[path]());\n    }\n  }\n  const isFulfilled = <T>(result: PromiseSettledResult<T>): result is PromiseFulfilledResult<T> => result.status === 'fulfilled';\n\n  Promise.allSettled(langPromises).then(results => {\n    const loadedLocales = results\n      .filter(isFulfilled)\n      .map(result => result.value.default);\n    for(let loadedLocale of loadedLocales) {\n      dayjs.locale(loadedLocale, undefined, true);\n    }\n    dayjs.locale(config.default_lang);\n  });\n\n  i18n = newI18n;\n\n  for (let locale in messages) {\n    if(locales.includes(locale)) {\n      i18n.global.mergeLocaleMessage(locale, messages[locale]);\n    }\n  }\n\n  return i18n;\n}\n\nconst loadedModules: Record<string, boolean> = {};\n\nexport function getLocalizedUrl (path: string) {\n  const lang = i18n?.global.locale.value ?? config.default_lang;\n  const url = new URL(api_root_absolute + path);\n  const params = new URLSearchParams({ lang });\n  url.search = params.toString();\n  return url.toString();\n}\n\n/**\n * Reload translations from plugins if they aren't already loaded\n */\nexport function reloadLocale() {\n  const translations = getRegisteredTranslations();\n  let messages: Record<string, any> = {};\n  for (let translation of translations) {\n    if(translation.module) {\n      if (loadedModules[translation.module]) {\n        continue;\n      }\n      loadedModules[translation.module] = true;\n    }\n    messages = {...messages, ...(translation.messages as Record<Locale, DefineLocaleMessage>)[config.default_lang]};\n  }\n  if(i18n) {\n    i18n.global.mergeLocaleMessage(config.default_lang, messages);\n  }\n}\n\nexport { dayjs, i18n, setupI18n, setupI18nWithExistingInstance };\n","import{defineComponent as n,ref as o,reactive as e,computed as t,onMounted as v,onUpdated as r,toRefs as i,isVue2 as a,h as s}from\"vue-demi\";const l={\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#039;\",\"&\":\"&amp;\"};let h=0;var f=n=>n.replace(/[<>\"&]/g,(n=>l[n]||n)),p=n=>n+h++;const u={},m=n=>{const{name:o,paths:e=[],d:t,polygons:v=[],points:r}=n;t&&e.push({d:t}),r&&v.push({points:r}),u[o]=Object.assign({},n,{paths:e,polygons:v}),u[o].minX||(u[o].minX=0),u[o].minY||(u[o].minY=0)},c=(...n)=>{for(const o of n)m(o)},d=()=>u,g=n({name:\"OhVueIcon\",props:{name:{type:String,validator:n=>!n||n in u||(console.warn(`Invalid prop: prop \"name\" is referring to an unregistered icon \"${n}\".\\nPlease make sure you have imported this icon before using it.`),!1)},title:String,fill:String,scale:{type:[Number,String],default:1},animation:{validator:n=>[\"spin\",\"spin-pulse\",\"wrench\",\"ring\",\"pulse\",\"flash\",\"float\"].includes(n)},hover:Boolean,flip:{validator:n=>[\"horizontal\",\"vertical\",\"both\"].includes(n)},speed:{validator:n=>\"fast\"===n||\"slow\"===n},label:String,inverse:Boolean},setup(n){const a=o([]),s=e({outerScale:1.2,x:null,y:null}),l=e({width:0,height:0}),h=t((()=>{const o=Number(n.scale);return isNaN(o)||o<=0?(console.warn('Invalid prop: prop \"scale\" should be a number over 0.'),s.outerScale):o*s.outerScale})),f=t((()=>({\"ov-icon\":!0,\"ov-inverse\":n.inverse,\"ov-flip-horizontal\":\"horizontal\"===n.flip,\"ov-flip-vertical\":\"vertical\"===n.flip,\"ov-flip-both\":\"both\"===n.flip,\"ov-spin\":\"spin\"===n.animation,\"ov-spin-pulse\":\"spin-pulse\"===n.animation,\"ov-wrench\":\"wrench\"===n.animation,\"ov-ring\":\"ring\"===n.animation,\"ov-pulse\":\"pulse\"===n.animation,\"ov-flash\":\"flash\"===n.animation,\"ov-float\":\"float\"===n.animation,\"ov-hover\":n.hover,\"ov-fast\":\"fast\"===n.speed,\"ov-slow\":\"slow\"===n.speed}))),m=t((()=>n.name?u[n.name]:null)),c=t((()=>m.value?`${m.value.minX} ${m.value.minY} ${m.value.width} ${m.value.height}`:`0 0 ${g.value} ${w.value}`)),d=t((()=>{if(!m.value)return 1;const{width:n,height:o}=m.value;return Math.max(n,o)/16})),g=t((()=>l.width||m.value&&m.value.width/d.value*h.value||0)),w=t((()=>l.height||m.value&&m.value.height/d.value*h.value||0)),y=t((()=>1!==h.value&&{fontSize:h.value+\"em\"})),b=t((()=>{if(!m.value||!m.value.raw)return null;const n={};let o=m.value.raw;return o=o.replace(/\\s(?:xml:)?id=([\"']?)([^\"')\\s]+)\\1/g,((o,e,t)=>{const v=p(\"vat-\");return n[t]=v,` id=\"${v}\"`})),o=o.replace(/#(?:([^'\")\\s]+)|xpointer\\(id\\((['\"]?)([^')]+)\\2\\)\\))/g,((o,e,t,v)=>{const r=e||v;return r&&n[r]?`#${n[r]}`:o})),o})),$=t((()=>m.value&&m.value.attr?m.value.attr:{})),x=()=>{if(!n.name&&null!==n.name&&0===a.value.length)return void console.warn('Invalid prop: prop \"name\" is required.');if(m.value)return;let o=0,e=0;a.value.forEach((n=>{n.outerScale=h.value,o=Math.max(o,n.width),e=Math.max(e,n.height)})),l.width=o,l.height=e,a.value.forEach((n=>{n.x=(o-n.width)/2,n.y=(e-n.height)/2}))};return v((()=>{x()})),r((()=>{x()})),{...i(s),children:a,icon:m,klass:f,style:y,width:g,height:w,box:c,attribs:$,raw:b}},created(){const n=this.$parent;n&&n.children&&n.children.push(this)},render(){const n=Object.assign({role:this.$attrs.role||(this.label||this.title?\"img\":null),\"aria-label\":this.label||null,\"aria-hidden\":!(this.label||this.title),width:this.width,height:this.height,viewBox:this.box},this.attribs);this.attribs.stroke?n.stroke=this.fill?this.fill:\"currentColor\":n.fill=this.fill?this.fill:\"currentColor\",this.x&&(n.x=this.x.toString()),this.y&&(n.y=this.y.toString());let o={class:this.klass,style:this.style};if(a?o.attrs=n:o=Object.assign(o,n),this.raw){const n=this.title?`<title>${f(this.title)}</title>${this.raw}`:this.raw;a?o.domProps={innerHTML:n}:o.innerHTML=n}const e=this.title?[s(\"title\",this.title)]:[],t=(n,o,e)=>s(n,a?{attrs:o,key:`${n}-${e}`}:{...o,key:`${n}-${e}`});return s(\"svg\",o,this.raw?void 0:e.concat([this.$slots.default?a?this.$slots.default:this.$slots.default():this.icon?[...this.icon.paths.map(((n,o)=>t(\"path\",n,o))),...this.icon.polygons.map(((n,o)=>t(\"polygon\",n,o)))]:[]]))}});function w(n,o){void 0===o&&(o={});var e=o.insertAt;if(n&&\"undefined\"!=typeof document){var t=document.head||document.getElementsByTagName(\"head\")[0],v=document.createElement(\"style\");v.type=\"text/css\",\"top\"===e&&t.firstChild?t.insertBefore(v,t.firstChild):t.appendChild(v),v.styleSheet?v.styleSheet.cssText=n:v.appendChild(document.createTextNode(n))}}w(\".ov-icon {\\n  display: inline-block;\\n  overflow: visible;\\n  vertical-align: -0.2em;\\n}\\n\");w(\"/* ---------------- spin ---------------- */\\n.ov-spin:not(.ov-hover),\\n.ov-spin.ov-hover:hover,\\n.ov-parent.ov-hover:hover > .ov-spin {\\n  animation: ov-spin 1s linear infinite;\\n}\\n\\n.ov-spin:not(.ov-hover).ov-fast,\\n.ov-spin.ov-hover.ov-fast:hover,\\n.ov-parent.ov-hover:hover > .ov-spin.ov-fast {\\n  animation: ov-spin 0.7s linear infinite;\\n}\\n\\n.ov-spin:not(.ov-hover).ov-slow,\\n.ov-spin.ov-hover.ov-slow:hover,\\n.ov-parent.ov-hover:hover > .ov-spin.ov-slow {\\n  animation: ov-spin 2s linear infinite;\\n}\\n\\n/* ---------------- spin-pulse ---------------- */\\n\\n.ov-spin-pulse:not(.ov-hover),\\n.ov-spin-pulse.ov-hover:hover,\\n.ov-parent.ov-hover:hover > .ov-spin-pulse {\\n  animation: ov-spin 1s infinite steps(8);\\n}\\n\\n.ov-spin-pulse:not(.ov-hover).ov-fast,\\n.ov-spin-pulse.ov-hover.ov-fast:hover,\\n.ov-parent.ov-hover:hover > .ov-spin-pulse.ov-fast {\\n  animation: ov-spin 0.7s infinite steps(8);\\n}\\n\\n.ov-spin-pulse:not(.ov-hover).ov-slow,\\n.ov-spin-pulse.ov-hover.ov-slow:hover,\\n.ov-parent.ov-hover:hover > .ov-spin-pulse.ov-slow {\\n  animation: ov-spin 2s infinite steps(8);\\n}\\n\\n@keyframes ov-spin {\\n  0% {\\n    transform: rotate(0deg);\\n  }\\n  100% {\\n    transform: rotate(360deg);\\n  }\\n}\\n\\n/* ---------------- wrench ---------------- */\\n.ov-wrench:not(.ov-hover),\\n.ov-wrench.ov-hover:hover,\\n.ov-parent.ov-hover:hover > .ov-wrench {\\n  animation: ov-wrench 2.5s ease infinite;\\n}\\n\\n.ov-wrench:not(.ov-hover).ov-fast,\\n.ov-wrench.ov-hover.ov-fast:hover,\\n.ov-parent.ov-hover:hover > .ov-wrench.ov-fast {\\n  animation: ov-wrench 1.2s ease infinite;\\n}\\n\\n.ov-wrench:not(.ov-hover).ov-slow,\\n.ov-wrench.ov-hover.ov-slow:hover,\\n.ov-parent.ov-hover:hover > .ov-wrench.ov-slow {\\n  animation: ov-wrench 3.7s ease infinite;\\n}\\n\\n@keyframes ov-wrench {\\n  0% {\\n    transform: rotate(-12deg);\\n  }\\n\\n  8% {\\n    transform: rotate(12deg);\\n  }\\n\\n  10%, 28%, 30%, 48%, 50%, 68% {\\n    transform: rotate(24deg);\\n  }\\n\\n  18%, 20%, 38%, 40%, 58%, 60% {\\n    transform: rotate(-24deg);\\n  }\\n\\n  75%, 100% {\\n    transform: rotate(0deg);\\n  }\\n}\\n\\n/* ---------------- ring ---------------- */\\n.ov-ring:not(.ov-hover),\\n.ov-ring.ov-hover:hover,\\n.ov-parent.ov-hover:hover > .ov-ring {\\n  animation: ov-ring 2s ease infinite;\\n}\\n\\n.ov-ring:not(.ov-hover).ov-fast,\\n.ov-ring.ov-hover.ov-fast:hover,\\n.ov-parent.ov-hover:hover > .ov-ring.ov-fast {\\n  animation: ov-ring 1s ease infinite;\\n}\\n\\n.ov-ring:not(.ov-hover).ov-slow,\\n.ov-ring.ov-hover.ov-slow:hover,\\n.ov-parent.ov-hover:hover > .ov-ring.ov-slow {\\n  animation: ov-ring 3s ease infinite;\\n}\\n\\n@keyframes ov-ring {\\n  0% {\\n    transform: rotate(-15deg);\\n  }\\n\\n  2% {\\n    transform: rotate(15deg);\\n  }\\n\\n  4%, 12% {\\n    transform: rotate(-18deg);\\n  }\\n\\n  6% {\\n    transform: rotate(18deg);\\n  }\\n\\n  8% {\\n    transform: rotate(-22deg);\\n  }\\n\\n  10% {\\n    transform: rotate(22deg);\\n  }\\n\\n  12% {\\n    transform: rotate(-18deg);\\n  }\\n\\n  14% {\\n    transform: rotate(18deg);\\n  }\\n\\n  16% {\\n    transform: rotate(-12deg);\\n  }\\n\\n  18% {\\n    transform: rotate(12deg);\\n  }\\n\\n  20%, 100% {\\n    transform: rotate(0deg);\\n  }\\n}\\n\\n/* ---------------- pulse ---------------- */\\n.ov-pulse:not(.ov-hover),\\n.ov-pulse.ov-hover:hover,\\n.ov-parent.ov-hover:hover > .ov-pulse {\\n  animation: ov-pulse 2s linear infinite;\\n}\\n\\n.ov-pulse:not(.ov-hover).ov-fast,\\n.ov-pulse.ov-hover.ov-fast:hover,\\n.ov-parent.ov-hover:hover > .ov-pulse.ov-fast {\\n  animation: ov-pulse 1s linear infinite;\\n}\\n\\n.ov-pulse:not(.ov-hover).ov-slow,\\n.ov-pulse.ov-hover.ov-slow:hover,\\n.ov-parent.ov-hover:hover > .ov-pulse.ov-slow {\\n  animation: ov-pulse 3s linear infinite;\\n}\\n\\n@keyframes ov-pulse {\\n  0% {\\n    transform: scale(1.1);\\n  }\\n\\n  50% {\\n    transform: scale(0.8);\\n  }\\n\\n  100% {\\n    transform: scale(1.1);\\n  }\\n}\\n\\n/* ---------------- flash ---------------- */\\n.ov-flash:not(.ov-hover),\\n.ov-flash.ov-hover:hover,\\n.ov-parent.ov-hover:hover > .ov-flash {\\n  animation: ov-flash 2s ease infinite;\\n}\\n\\n.ov-flash:not(.ov-hover).ov-fast,\\n.ov-flash.ov-hover.ov-fast:hover,\\n.ov-parent.ov-hover:hover > .ov-flash.ov-fast {\\n  animation: ov-flash 1s ease infinite;\\n}\\n\\n.ov-flash:not(.ov-hover).ov-slow,\\n.ov-flash.ov-hover.ov-slow:hover,\\n.ov-parent.ov-hover:hover > .ov-flash.ov-slow {\\n  animation: ov-flash 3s ease infinite;\\n}\\n\\n@keyframes ov-flash {\\n  0%, 100%, 50%{\\n    opacity: 1;\\n  }\\n  25%, 75%{\\n    opacity: 0;\\n  }\\n}\\n\\n/* ---------------- float ---------------- */\\n.ov-float:not(.ov-hover),\\n.ov-float.ov-hover:hover,\\n.ov-parent.ov-hover:hover > .ov-float {\\n  animation: ov-float 2s linear infinite;\\n}\\n\\n.ov-float:not(.ov-hover).ov-fast,\\n.ov-float.ov-hover.ov-fast:hover,\\n.ov-parent.ov-hover:hover > .ov-float.ov-fast {\\n  animation: ov-float 1s linear infinite;\\n}\\n\\n.ov-float:not(.ov-hover).ov-slow,\\n.ov-float.ov-hover.ov-slow:hover,\\n.ov-parent.ov-hover:hover > .ov-float.ov-slow {\\n  animation: ov-float 3s linear infinite;\\n}\\n\\n@keyframes ov-float {\\n  0%, 100% {\\n    transform: translateY(-3px);\\n  }\\n  50% {\\n    transform: translateY(3px);\\n  }\\n}\\n\");w(\".ov-flip-horizontal {\\n  transform: scale(-1, 1);\\n}\\n\\n.ov-flip-vertical {\\n  transform: scale(1, -1);\\n}\\n\\n.ov-flip-both {\\n  transform: scale(-1, -1);\\n}\\n\\n.ov-inverse {\\n  color: #fff;\\n}\\n\");export{g as OhVueIcon,c as addIcons,d as listIcons};\n//# sourceMappingURL=index.esm.min.js.map\n","import { OhVueIcon as fe, addIcons as Ke } from \"oh-vue-icons\";\nimport { defineComponent as w, openBlock as r, createElementBlock as d, normalizeClass as C, toDisplayString as p, ref as R, watchEffect as Nt, computed as _, onMounted as le, watch as ae, createElementVNode as i, renderSlot as M, unref as B, createBlock as z, Transition as rt, withCtx as A, resolveDynamicComponent as J, createTextVNode as L, createCommentVNode as m, withDirectives as Oe, vShow as lt, Fragment as T, renderList as F, normalizeProps as re, mergeProps as N, createVNode as X, pushScopeId as Te, popScopeId as Se, resolveComponent as ne, withModifiers as U, guardReactiveProps as Ee, useSlots as st, normalizeStyle as it, useAttrs as Vt, withKeys as ue, onUnmounted as Ae, Comment as Pt, cloneVNode as Xt, onBeforeUnmount as Yt, nextTick as jt, useCssVars as Ot, vModelSelect as Qt, reactive as qt, Teleport as Gt } from \"vue\";\nconst Kt = /* @__PURE__ */ w({\n  __name: \"DsfrBackToTop\",\n  props: {\n    label: { default: \"Haut de page\" },\n    position: { default: \"right\" }\n  },\n  setup(l) {\n    return (e, a) => (r(), d(\"a\", {\n      class: C([\"fr-link fr-icon-arrow-up-fill\", `fr-link--icon-${e.position}`]),\n      href: \"#top\"\n    }, p(e.label), 3));\n  }\n}), Ut = \"abcdefghijklmnopqrstuvwyz0123456789\", Ue = Ut.repeat(10), Wt = () => {\n  const l = Math.floor(Math.random() * Ue.length);\n  return Ue[l];\n}, Y = (l = \"\", e = \"\") => (l ? l + \"-\" : \"\") + Zt(5) + (e ? \"-\" + e : \"\"), Zt = (l) => Array.from({ length: l }).map(Wt).join(\"\"), Qu = (l, e) => Array.from({ length: l }).map((a, t) => e(void 0, t, void 0)), Jt = \"(prefers-color-scheme: dark)\", Me = \"vue-dsfr-scheme\", ze = \"light\", ye = \"dark\", me = \"system\", We = \"data-fr-theme\", Pe = (l) => {\n  const e = l ?? (localStorage.getItem(Me) || me);\n  return [ze, ye, me].includes(e) ? e : me;\n}, Ze = (l, e) => (l = Pe(l), l === me ? e != null && e.matches ? ye : ze : l), oe = () => {\n  const l = R(), e = R(!1), a = R(!1), t = () => {\n    if (!l.value)\n      return;\n    l.value.style.setProperty(\"--collapser\", \"none\");\n    const s = l.value.offsetHeight;\n    l.value.style.setProperty(\"--collapse\", -s + \"px\"), l.value.style.setProperty(\"--collapser\", \"\");\n  };\n  return {\n    collapse: l,\n    collapsing: e,\n    cssExpanded: a,\n    doExpand: (s) => {\n      l.value && (s === !0 && l.value.style.setProperty(\"--collapse-max-height\", \"none\"), window.requestAnimationFrame(() => {\n        e.value = !0, t(), window.requestAnimationFrame(() => {\n          a.value = s;\n        });\n      }));\n    },\n    adjust: t,\n    onTransitionEnd: (s) => {\n      e.value = !1, l.value && s === !1 && l.value.style.removeProperty(\"--collapse-max-height\");\n    }\n  };\n}, qu = (l) => {\n  if (typeof window > \"u\")\n    return;\n  const e = {\n    scheme: localStorage.getItem(Me) || me,\n    dataThemeAttribute: We,\n    ...l\n  }, a = window.matchMedia && window.matchMedia(Jt), t = R(Pe(e.scheme));\n  localStorage.setItem(Me, t.value);\n  const n = R(Ze(t.value, a)), o = R(t.value !== me);\n  Nt(() => {\n    var u;\n    (u = document.body.parentElement) == null || u.setAttribute(\n      e.dataThemeAttribute || We,\n      n.value\n    );\n  }), a == null || a.addEventListener(\"change\", (u) => {\n    o.value || (u.matches ? n.value = ye : n.value = ze);\n  }), !o.value && (a != null && a.matches) && (n.value = ye);\n  const s = (u) => {\n    if (t.value = Pe(u), localStorage.setItem(Me, t.value), [ze, ye].includes(t.value)) {\n      n.value = t.value, o.value = !0;\n      return;\n    }\n    n.value = Ze(t.value, a), o.value = !1;\n  };\n  return s(t.value), {\n    setScheme: s,\n    theme: _(() => n.value),\n    scheme: _(() => t.value)\n  };\n}, xt = { class: \"fr-accordion\" }, ea = { class: \"fr-accordion__title\" }, ta = [\"aria-expanded\", \"aria-controls\"], aa = [\"id\"], na = /* @__PURE__ */ w({\n  __name: \"DsfrAccordion\",\n  props: {\n    id: { default: () => Y(\"accordion\") },\n    expandedId: { default: void 0 },\n    title: { default: \"Sans intitulé\" }\n  },\n  emits: [\"expand\"],\n  setup(l, { emit: e }) {\n    const a = l, t = e, {\n      collapse: n,\n      collapsing: o,\n      cssExpanded: s,\n      doExpand: u,\n      onTransitionEnd: c\n    } = oe(), f = _(() => a.expandedId === a.id);\n    le(() => {\n      f.value && u(!0);\n    }), ae(f, (h, D) => {\n      h !== D && u(h);\n    });\n    const y = () => {\n      t(\"expand\", f.value ? void 0 : a.id);\n    };\n    return (h, D) => (r(), d(\"section\", xt, [\n      i(\"h3\", ea, [\n        i(\"button\", {\n          class: \"fr-accordion__btn\",\n          \"aria-expanded\": f.value,\n          \"aria-controls\": h.id,\n          type: \"button\",\n          onClick: D[0] || (D[0] = (v) => y())\n        }, [\n          M(h.$slots, \"title\", {}, () => [\n            i(\"span\", null, p(h.title), 1)\n          ])\n        ], 8, ta)\n      ]),\n      i(\"div\", {\n        id: h.id,\n        ref_key: \"collapse\",\n        ref: n,\n        class: C([\"fr-collapse\", {\n          \"fr-collapse--expanded\": B(s),\n          // Need to use a separate data to add/remove the class after a RAF\n          \"fr-collapsing\": B(o)\n        }]),\n        onTransitionend: D[1] || (D[1] = (v) => B(c)(f.value))\n      }, [\n        M(h.$slots, \"default\")\n      ], 42, aa)\n    ]));\n  }\n}), ra = /* @__PURE__ */ w({\n  __name: \"DsfrAccordionsGroup\",\n  setup(l) {\n    const e = R(), a = (t) => {\n      e.value = t;\n    };\n    return (t, n) => (r(), d(\"ul\", {\n      class: \"fr-accordions-group\",\n      onExpand: n[0] || (n[0] = (o) => a(o))\n    }, [\n      M(t.$slots, \"default\", { expandedId: e.value })\n    ], 32));\n  }\n}), la = [\"id\"], sa = { class: \"alert-content\" }, ia = { class: \"fr-alert__description\" }, oa = /* @__PURE__ */ w({\n  __name: \"DsfrAlert\",\n  props: {\n    id: { default: () => Y(\"basic\", \"alert\") },\n    type: { default: \"info\" },\n    title: { default: \"\" },\n    description: {},\n    titleTag: { default: \"h3\" },\n    small: { type: Boolean },\n    closed: { type: Boolean },\n    closeable: { type: Boolean }\n  },\n  emits: [\"close\"],\n  setup(l, { emit: e }) {\n    const a = l, t = e, n = () => t(\"close\"), o = _(\n      () => [\n        `fr-alert--${a.type}`,\n        {\n          \"fr-alert--sm\": a.small\n        }\n      ]\n    );\n    return (s, u) => (r(), z(rt, { name: \"slide-fade\" }, {\n      default: A(() => [\n        s.closed ? m(\"\", !0) : (r(), d(\"div\", {\n          key: 0,\n          id: s.id,\n          class: C([\"fr-alert\", o.value])\n        }, [\n          i(\"div\", sa, [\n            s.small ? m(\"\", !0) : (r(), z(J(s.titleTag), {\n              key: 0,\n              class: \"fr-alert__title\"\n            }, {\n              default: A(() => [\n                L(p(s.title), 1)\n              ]),\n              _: 1\n            })),\n            i(\"p\", ia, p(s.description), 1)\n          ]),\n          s.closeable ? (r(), d(\"button\", {\n            key: 0,\n            class: \"fr-btn fr-btn--close\",\n            title: \"Fermer\",\n            \"aria-label\": \"Fermer\",\n            onClick: n\n          })) : m(\"\", !0)\n        ], 10, la))\n      ]),\n      _: 1\n    }));\n  }\n}), da = /* @__PURE__ */ w({\n  __name: \"DsfrBadge\",\n  props: {\n    label: {},\n    type: { default: \"info\" },\n    noIcon: { type: Boolean },\n    small: { type: Boolean },\n    ellipsis: { type: Boolean }\n  },\n  setup(l) {\n    return (e, a) => (r(), d(\"p\", {\n      class: C([\"fr-badge\", {\n        [`fr-badge--${e.type}`]: e.type,\n        \"fr-badge--no-icon\": e.noIcon,\n        \"fr-badge--sm\": e.small\n      }])\n    }, [\n      i(\"span\", {\n        class: C(e.ellipsis ? \"fr-ellipsis\" : \"\")\n      }, p(e.label), 3)\n    ], 2));\n  }\n}), ua = {\n  role: \"navigation\",\n  class: \"fr-breadcrumb\",\n  \"aria-label\": \"vous êtes ici :\"\n}, ca = [\"aria-expanded\", \"aria-controls\"], fa = [\"id\"], pa = { class: \"fr-breadcrumb__list\" }, ha = [\"aria-current\"], va = /* @__PURE__ */ w({\n  __name: \"DsfrBreadcrumb\",\n  props: {\n    breadcrumbId: { default: () => Y(\"breadcrumb\") },\n    links: { default: () => [{ text: \"\" }] }\n  },\n  setup(l) {\n    const {\n      collapse: e,\n      collapsing: a,\n      cssExpanded: t,\n      doExpand: n,\n      onTransitionEnd: o\n    } = oe(), s = R(!1);\n    return ae(s, (u, c) => {\n      u !== c && n(u);\n    }), (u, c) => (r(), d(\"nav\", ua, [\n      Oe(i(\"button\", {\n        class: \"fr-breadcrumb__button\",\n        \"aria-expanded\": s.value,\n        \"aria-controls\": u.breadcrumbId,\n        onClick: c[0] || (c[0] = (f) => s.value = !s.value)\n      }, \" Voir le fil d’Ariane \", 8, ca), [\n        [lt, !s.value]\n      ]),\n      i(\"div\", {\n        id: u.breadcrumbId,\n        ref_key: \"collapse\",\n        ref: e,\n        class: C([\"fr-collapse\", {\n          \"fr-collapse--expanded\": B(t),\n          // Need to use a separate data to add/remove the class after a RAF\n          \"fr-collapsing\": B(a)\n        }]),\n        onTransitionend: c[1] || (c[1] = (f) => B(o)(s.value))\n      }, [\n        i(\"ol\", pa, [\n          (r(!0), d(T, null, F(u.links, (f, y) => (r(), d(\"li\", {\n            key: y,\n            class: \"fr-breadcrumb__item\",\n            \"data-testid\": \"lis\"\n          }, [\n            f.to ? (r(), z(J(\"RouterLink\"), {\n              key: 0,\n              class: \"fr-breadcrumb__link\",\n              to: f.to,\n              \"aria-current\": y === u.links.length - 1 ? \"page\" : void 0\n            }, {\n              default: A(() => [\n                L(p(f.text), 1)\n              ]),\n              _: 2\n            }, 1032, [\"to\", \"aria-current\"])) : m(\"\", !0),\n            f.to ? m(\"\", !0) : (r(), d(\"a\", {\n              key: 1,\n              class: \"fr-breadcrumb__link\",\n              \"aria-current\": y === u.links.length - 1 ? \"page\" : void 0\n            }, p(f.text), 9, ha))\n          ]))), 128))\n        ])\n      ], 42, fa)\n    ]));\n  }\n}), ma = [\"title\", \"disabled\", \"aria-disabled\"], ga = { key: 1 }, ba = /* @__PURE__ */ w({\n  __name: \"DsfrButton\",\n  props: {\n    disabled: { type: Boolean },\n    label: { default: void 0 },\n    secondary: { type: Boolean },\n    tertiary: { type: Boolean },\n    iconRight: { type: Boolean },\n    iconOnly: { type: Boolean },\n    noOutline: { type: Boolean },\n    size: { default: \"md\" },\n    icon: { default: void 0 },\n    onClick: { type: Function, default: () => {\n    } }\n  },\n  setup(l, { expose: e }) {\n    const a = l, t = _(() => [\"sm\", \"small\"].includes(a.size)), n = _(() => [\"md\", \"medium\"].includes(a.size)), o = _(() => [\"lg\", \"large\"].includes(a.size)), s = R(null);\n    e({ focus: () => {\n      var f;\n      (f = s.value) == null || f.focus();\n    } });\n    const c = _(() => typeof a.icon == \"string\" ? { name: a.icon } : a.icon);\n    return (f, y) => (r(), d(\"button\", {\n      ref_key: \"btn\",\n      ref: s,\n      class: C({\n        \"fr-btn\": !0,\n        \"fr-btn--secondary\": f.secondary && !f.tertiary,\n        \"fr-btn--tertiary\": f.tertiary && !f.secondary && !f.noOutline,\n        \"fr-btn--tertiary-no-outline\": f.tertiary && !f.secondary && f.noOutline,\n        \"fr-btn--sm\": t.value,\n        \"fr-btn--md\": n.value,\n        \"fr-btn--lg\": o.value,\n        \"inline-flex\": !0,\n        reverse: f.iconRight,\n        \"justify-center\": f.iconOnly\n      }),\n      title: f.iconOnly ? f.label : void 0,\n      disabled: f.disabled,\n      \"aria-disabled\": f.disabled,\n      onClick: y[0] || (y[0] = (h) => f.onClick ? f.onClick(h) : () => {\n      })\n    }, [\n      f.icon ? (r(), z(B(fe), re(N({ key: 0 }, c.value)), null, 16)) : m(\"\", !0),\n      f.iconOnly ? m(\"\", !0) : (r(), d(\"span\", ga, [\n        L(p(f.label) + \" \", 1),\n        M(f.$slots, \"default\", {}, void 0, !0)\n      ]))\n    ], 10, ma));\n  }\n}), ee = (l, e) => {\n  const a = l.__vccOpts || l;\n  for (const [t, n] of e)\n    a[t] = n;\n  return a;\n}, He = /* @__PURE__ */ ee(ba, [[\"__scopeId\", \"data-v-8c0b3ad0\"]]), Be = /* @__PURE__ */ w({\n  __name: \"DsfrButtonGroup\",\n  props: {\n    buttons: { default: () => [] },\n    reverse: { type: Boolean },\n    iconRight: { type: Boolean },\n    align: { default: void 0 },\n    inlineLayoutWhen: { type: [String, Boolean], default: \"never\" },\n    size: { default: \"\" }\n  },\n  setup(l) {\n    const e = l, a = _(() => [\"sm\", \"small\"].includes(e.size)), t = _(() => [\"md\", \"medium\"].includes(e.size)), n = _(() => [\"lg\", \"large\"].includes(e.size)), o = _(() => [\"always\", !0].includes(e.inlineLayoutWhen)), s = _(() => [\"sm\", \"small\"].includes(e.inlineLayoutWhen)), u = _(() => [\"md\", \"medium\"].includes(e.inlineLayoutWhen)), c = _(() => [\"lg\", \"large\"].includes(e.inlineLayoutWhen)), f = _(() => e.align === \"center\"), y = _(() => e.align === \"right\");\n    return (h, D) => (r(), d(\"ul\", {\n      class: C([\"fr-btns-group\", {\n        \"fr-btns-group--inline\": o.value,\n        \"fr-btns-group--sm\": a.value,\n        \"fr-btns-group--md\": t.value,\n        \"fr-btns-group--lg\": n.value,\n        \"fr-btns-group--inline-sm\": s.value,\n        \"fr-btns-group--inline-md\": u.value,\n        \"fr-btns-group--inline-lg\": c.value,\n        \"fr-btns-group--center\": f.value,\n        \"fr-btns-group--right\": y.value,\n        \"fr-btns-group--icon-right\": h.iconRight,\n        \"fr-btns-group--inline-reverse\": h.reverse\n      }]),\n      \"data-testid\": \"fr-btns\"\n    }, [\n      (r(!0), d(T, null, F(h.buttons, ({ onClick: v, ...k }, E) => (r(), d(\"li\", { key: E }, [\n        X(He, N(k, { onClick: v }), null, 16, [\"onClick\"])\n      ]))), 128))\n    ], 2));\n  }\n}), ka = (l) => (Te(\"data-v-e5e46915\"), l = l(), Se(), l), ya = { class: \"fr-callout\" }, _a = /* @__PURE__ */ ka(() => /* @__PURE__ */ i(\"div\", { class: \"fr-mt-n2w fr-mb-2w fr-ml-n4w\" }, null, -1)), wa = { class: \"fr-callout__text\" }, Da = /* @__PURE__ */ w({\n  __name: \"DsfrCallout\",\n  props: {\n    title: {},\n    content: {},\n    titleTag: { default: \"h3\" },\n    button: { default: () => {\n    } },\n    icon: { default: void 0 }\n  },\n  setup(l) {\n    return (e, a) => (r(), d(\"div\", ya, [\n      _a,\n      (r(), z(J(e.titleTag), { class: \"fr-callout__title\" }, {\n        default: A(() => [\n          L(p(e.title), 1)\n        ]),\n        _: 1\n      })),\n      i(\"p\", wa, p(e.content), 1),\n      e.button ? (r(), z(He, re(N({ key: 0 }, e.button)), null, 16)) : m(\"\", !0),\n      M(e.$slots, \"default\", {}, void 0, !0)\n    ]));\n  }\n}), Ma = /* @__PURE__ */ ee(Da, [[\"__scopeId\", \"data-v-e5e46915\"]]), za = { class: \"fr-card__body\" }, Ca = { class: \"fr-card__content\" }, $a = [\"href\"], La = { class: \"fr-card__desc\" }, Ia = { class: \"fr-card__detail\" }, Ta = {\n  key: 0,\n  class: \"fr-card__footer\"\n}, Sa = {\n  key: 1,\n  class: \"fr-links-group\"\n}, Ea = [\"href\"], Aa = {\n  key: 0,\n  class: \"fr-card__header\"\n}, Ha = { class: \"fr-card__img\" }, Ba = [\"src\", \"alt\"], Fa = /* @__PURE__ */ w({\n  __name: \"DsfrCard\",\n  props: {\n    imgSrc: { default: void 0 },\n    link: { default: void 0 },\n    title: {},\n    description: {},\n    size: { default: \"md\" },\n    detail: { default: void 0 },\n    altImg: { default: \"\" },\n    titleTag: { default: \"h3\" },\n    buttons: { default: () => [] },\n    linksGroup: { default: () => [] },\n    noArrow: { type: Boolean },\n    horizontal: { type: Boolean },\n    download: { type: Boolean }\n  },\n  setup(l, { expose: e }) {\n    const a = l, t = _(() => [\"sm\", \"small\"].includes(a.size)), n = _(() => [\"lg\", \"large\"].includes(a.size)), o = _(() => typeof a.link == \"string\" && a.link.startsWith(\"http\")), s = R(null);\n    return e({ goToTargetLink: () => {\n      var c;\n      ((c = s.value) == null ? void 0 : c.querySelector(\".fr-card__link\")).click();\n    } }), (c, f) => {\n      const y = ne(\"RouterLink\");\n      return r(), d(\"div\", {\n        class: C([\"fr-card\", {\n          \"fr-card--horizontal\": c.horizontal,\n          \"fr-enlarge-link\": !c.noArrow,\n          \"fr-card--sm\": t.value,\n          \"fr-card--lg\": n.value,\n          \"fr-card--download\": c.download\n        }]),\n        \"data-testid\": \"fr-card\"\n      }, [\n        i(\"div\", za, [\n          i(\"div\", Ca, [\n            (r(), z(J(c.titleTag), {\n              ref: \"title\",\n              class: \"fr-card__title\"\n            }, {\n              default: A(() => [\n                o.value ? (r(), d(\"a\", {\n                  key: 0,\n                  href: c.link,\n                  \"data-testid\": \"card-link\",\n                  class: \"fr-card__link\"\n                }, p(c.title), 9, $a)) : c.link ? (r(), z(y, {\n                  key: 1,\n                  to: c.link,\n                  class: \"fr-card__link\",\n                  \"data-testid\": \"card-link\",\n                  onClick: f[0] || (f[0] = (h) => h.stopPropagation())\n                }, {\n                  default: A(() => [\n                    L(p(c.title), 1)\n                  ]),\n                  _: 1\n                }, 8, [\"to\"])) : (r(), d(T, { key: 2 }, [\n                  L(p(c.title), 1)\n                ], 64))\n              ]),\n              _: 1\n            }, 512)),\n            i(\"p\", La, p(c.description), 1),\n            i(\"p\", Ia, p(c.detail), 1)\n          ]),\n          c.buttons.length || c.linksGroup.length ? (r(), d(\"div\", Ta, [\n            c.buttons.length ? (r(), z(Be, {\n              key: 0,\n              buttons: c.buttons,\n              \"inline-layout-when\": \"lg\",\n              size: c.size,\n              reverse: \"\"\n            }, null, 8, [\"buttons\", \"size\"])) : m(\"\", !0),\n            c.linksGroup.length ? (r(), d(\"ul\", Sa, [\n              (r(!0), d(T, null, F(c.linksGroup, (h, D) => (r(), d(\"li\", {\n                key: `card-link-${D}`\n              }, [\n                h.to ? (r(), z(y, {\n                  key: 0,\n                  to: h.to\n                }, {\n                  default: A(() => [\n                    L(p(h.label), 1)\n                  ]),\n                  _: 2\n                }, 1032, [\"to\"])) : (r(), d(\"a\", {\n                  key: 1,\n                  href: h.link || h.href,\n                  class: C({\n                    \"fr-link\": !0,\n                    \"fr-icon-arrow-right-line\": !0,\n                    \"fr-link--icon-right\": !0,\n                    \"fr-link--sm\": t.value,\n                    \"fr-link--lg\": n.value\n                  })\n                }, p(h.label), 11, Ea))\n              ]))), 128))\n            ])) : m(\"\", !0)\n          ])) : m(\"\", !0)\n        ]),\n        c.imgSrc ? (r(), d(\"div\", Aa, [\n          i(\"div\", Ha, [\n            i(\"img\", {\n              src: c.imgSrc,\n              class: \"fr-responsive-img\",\n              alt: c.altImg,\n              \"data-testid\": \"card-img\"\n            }, null, 8, Ba)\n          ])\n        ])) : m(\"\", !0)\n      ], 2);\n    };\n  }\n}), Ra = [\"id\", \"name\", \"checked\", \"data-testid\", \"data-test\"], Na = [\"for\"], Va = {\n  key: 0,\n  class: \"required\"\n}, Pa = {\n  key: 0,\n  class: \"fr-hint-text\"\n}, Xa = {\n  key: 0,\n  class: \"fr-messages-group\"\n}, ot = /* @__PURE__ */ w({\n  __name: \"DsfrCheckbox\",\n  props: {\n    id: { default: () => Y(\"basic\", \"checkbox\") },\n    name: {},\n    required: { type: Boolean },\n    modelValue: { type: Boolean },\n    small: { type: Boolean },\n    label: { default: \"\" },\n    errorMessage: { default: \"\" },\n    validMessage: { default: \"\" },\n    hint: { default: \"\" }\n  },\n  emits: [\"update:modelValue\"],\n  setup(l, { emit: e }) {\n    const a = l, t = e, n = _(() => a.errorMessage || a.validMessage), o = _(() => a.errorMessage ? \"fr-error-text\" : \"fr-valid-text\"), s = (u) => {\n      t(\"update:modelValue\", u.target.checked);\n    };\n    return (u, c) => (r(), d(\"div\", {\n      class: C([\"fr-checkbox-group\", {\n        \"fr-checkbox-group--error\": u.errorMessage,\n        \"fr-checkbox-group--valid\": u.validMessage,\n        \"fr-checkbox-group--sm\": u.small\n      }])\n    }, [\n      i(\"input\", N({\n        id: u.id,\n        name: u.name,\n        type: \"checkbox\",\n        checked: u.modelValue\n      }, u.$attrs, {\n        \"data-testid\": `input-checkbox-${u.id}`,\n        \"data-test\": `input-checkbox-${u.id}`,\n        onChange: c[0] || (c[0] = (f) => s(f))\n      }), null, 16, Ra),\n      i(\"label\", {\n        for: u.id,\n        class: \"fr-label\"\n      }, [\n        M(u.$slots, \"label\", {}, () => [\n          L(p(u.label) + \" \", 1),\n          M(u.$slots, \"required-tip\", {}, () => [\n            u.required ? (r(), d(\"span\", Va, \" *\")) : m(\"\", !0)\n          ])\n        ]),\n        u.hint ? (r(), d(\"span\", Pa, p(u.hint), 1)) : m(\"\", !0)\n      ], 8, Na),\n      n.value ? (r(), d(\"div\", Xa, [\n        i(\"p\", {\n          class: C([\"fr-message--info flex items-center\", o.value])\n        }, p(n.value), 3)\n      ])) : m(\"\", !0)\n    ], 2));\n  }\n}), Ya = { class: \"fr-form-group\" }, ja = [\"disabled\"], Oa = [\"id\"], Qa = {\n  key: 0,\n  class: \"required\"\n}, qa = [\"aria-labelledby\"], Ga = {\n  key: 0,\n  class: \"fr-messages-group\"\n}, Ka = /* @__PURE__ */ w({\n  __name: \"DsfrCheckboxSet\",\n  props: {\n    titleId: { default: () => Y(\"checkbox\", \"group\") },\n    disabled: { type: Boolean },\n    inline: { type: Boolean },\n    required: { type: Boolean },\n    small: { type: Boolean },\n    errorMessage: { default: \"\" },\n    validMessage: { default: \"\" },\n    legend: { default: \"\" },\n    options: { default: () => [] },\n    modelValue: { default: () => [] }\n  },\n  emits: [\"update:modelValue\"],\n  setup(l, { emit: e }) {\n    const a = l, t = e, n = _(() => a.errorMessage || a.validMessage), o = _(() => a.errorMessage ? \"fr-error-text\" : \"fr-valid-text\"), s = ({ name: u, checked: c }) => {\n      const f = c ? [...a.modelValue, u] : a.modelValue.filter((y) => y !== u);\n      t(\"update:modelValue\", f);\n    };\n    return (u, c) => (r(), d(\"div\", Ya, [\n      i(\"fieldset\", {\n        class: C([\"fr-fieldset\", {\n          \"fr-fieldset--error\": u.errorMessage,\n          \"fr-fieldset--valid\": u.validMessage,\n          \"fr-fieldset--inline\": u.inline\n        }]),\n        disabled: u.disabled\n      }, [\n        i(\"legend\", {\n          id: u.titleId,\n          class: \"fr-fieldset__legend fr-text--regular\"\n        }, [\n          M(u.$slots, \"legend\", {}, () => [\n            L(p(u.legend) + \" \", 1),\n            M(u.$slots, \"required-tip\", {}, () => [\n              u.required ? (r(), d(\"span\", Qa, \" *\")) : m(\"\", !0)\n            ])\n          ])\n        ], 8, Oa),\n        i(\"div\", {\n          class: \"fr-fieldset__content\",\n          role: \"group\",\n          \"aria-labelledby\": u.titleId\n        }, [\n          (r(!0), d(T, null, F(u.options, (f) => (r(), z(ot, {\n            id: f.id,\n            key: f.id || f.name,\n            name: f.name,\n            label: f.label,\n            disabled: f.disabled,\n            small: u.small,\n            \"model-value\": u.modelValue.includes(f.name),\n            hint: f.hint,\n            \"onUpdate:modelValue\": (y) => s({ name: f.name, checked: y })\n          }, null, 8, [\"id\", \"name\", \"label\", \"disabled\", \"small\", \"model-value\", \"hint\", \"onUpdate:modelValue\"]))), 128))\n        ], 8, qa),\n        n.value ? (r(), d(\"div\", Ga, [\n          i(\"p\", {\n            class: C([\"fr-message--info flex items-center\", o.value])\n          }, [\n            i(\"span\", null, p(n.value), 1)\n          ], 2)\n        ])) : m(\"\", !0)\n      ], 10, ja)\n    ]));\n  }\n}), Ua = { class: \"fr-consent-banner__content\" }, Wa = { class: \"fr-text--sm\" }, Za = { class: \"fr-consent-banner__buttons fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-sm\" }, Ja = /* @__PURE__ */ w({\n  __name: \"DsfrConsent\",\n  props: {\n    url: { default: \"\" }\n  },\n  emits: [\"accept-all\", \"refuse-all\", \"customize\"],\n  setup(l) {\n    const e = l, a = _(() => typeof e.url == \"string\" && e.url.startsWith(\"http\")), t = _(() => e.url ? a.value ? \"a\" : \"RouterLink\" : \"a\"), n = _(() => ({ [a.value ? \"href\" : \"to\"]: e.url }));\n    return (o, s) => (r(), d(T, null, [\n      i(\"div\", Ua, [\n        i(\"p\", Wa, [\n          M(o.$slots, \"default\", {}, () => [\n            L(\" Bienvenue ! Nous utilisons des cookies pour améliorer votre expérience et les services disponibles sur ce site. Pour en savoir plus, visitez la page \"),\n            (r(), z(J(t.value), N(n.value, { \"data-testid\": \"link\" }), {\n              default: A(() => [\n                L(\" Données personnelles et cookies \")\n              ]),\n              _: 1\n            }, 16)),\n            L(\". Vous pouvez, à tout moment, avoir le contrôle sur les cookies que vous souhaitez activer. \")\n          ])\n        ])\n      ]),\n      i(\"ul\", Za, [\n        i(\"li\", null, [\n          i(\"button\", {\n            class: \"fr-btn\",\n            title: \"Autoriser tous les cookies\",\n            onClick: s[0] || (s[0] = U((u) => o.$emit(\"accept-all\"), [\"stop\"]))\n          }, \" Tout accepter \")\n        ]),\n        i(\"li\", null, [\n          i(\"button\", {\n            class: \"fr-btn\",\n            title: \"Refuser tous les cookies\",\n            onClick: s[1] || (s[1] = U((u) => o.$emit(\"refuse-all\"), [\"stop\"]))\n          }, \" Tout refuser \")\n        ]),\n        i(\"li\", null, [\n          i(\"button\", {\n            class: \"fr-btn fr-btn--secondary\",\n            \"data-fr-opened\": \"false\",\n            \"aria-controls\": \"fr-consent-modal\",\n            title: \"Personnaliser les cookies\",\n            onClick: s[2] || (s[2] = U((u) => o.$emit(\"customize\"), [\"stop\"]))\n          }, \" Personnaliser \")\n        ])\n      ])\n    ], 64));\n  }\n}), xa = \"data:image/png;base64,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\", en = (l) => (Te(\"data-v-cdfca046\"), l = l(), Se(), l), tn = { class: \"fr-container flex\" }, an = { class: \"half\" }, nn = { class: \"font-25\" }, rn = { class: \"block mt-15 mb-15\" }, ln = { class: \"font-125\" }, sn = /* @__PURE__ */ en(() => /* @__PURE__ */ i(\"div\", { class: \"half self-center text-center\" }, [\n  /* @__PURE__ */ i(\"img\", {\n    class: \"error-img\",\n    src: xa\n  })\n], -1)), on = /* @__PURE__ */ w({\n  __name: \"DsfrErrorPage\",\n  props: {\n    title: { default: \"Page non trouvée\" },\n    subtitle: { default: \"Erreur 404\" },\n    description: { default: \"La page que vous cherchez est introuvable. Excusez-nous pour la gêne occasionnée.\" },\n    help: { default: \"Si vous avez tapé l'adresse web dans le navigateur, vérifiez qu'elle est correcte. La page n'est peut être plus disponible.\" },\n    buttons: { default: () => [] }\n  },\n  setup(l) {\n    return (e, a) => {\n      var t;\n      return r(), d(\"div\", tn, [\n        i(\"div\", an, [\n          i(\"h1\", nn, p(e.title), 1),\n          i(\"span\", rn, p(e.subtitle), 1),\n          i(\"p\", ln, p(e.description), 1),\n          i(\"p\", null, p(e.help), 1),\n          (t = e.buttons) != null && t.length ? (r(), z(Be, {\n            key: 0,\n            buttons: e.buttons,\n            \"inline-layout-when\": \"always\"\n          }, null, 8, [\"buttons\"])) : m(\"\", !0)\n        ]),\n        sn\n      ]);\n    };\n  }\n}), dn = /* @__PURE__ */ ee(on, [[\"__scopeId\", \"data-v-cdfca046\"]]), un = { class: \"fr-fieldset\" }, cn = [\"id\"], fn = {\n  key: 1,\n  class: \"fr-fieldset__element\"\n}, pn = { class: \"fr-fieldset__element\" }, hn = /* @__PURE__ */ w({\n  __name: \"DsfrFieldset\",\n  props: {\n    legend: { default: \"\" },\n    legendClass: { default: \"\" },\n    legendId: { default: \"\" },\n    hint: { default: \"\" },\n    hintClass: { default: \"\" }\n  },\n  setup(l) {\n    return (e, a) => {\n      var t, n, o, s;\n      return r(), d(\"fieldset\", un, [\n        e.legend || (n = (t = e.$slots).legend) != null && n.call(t).length ? (r(), d(\"legend\", {\n          key: 0,\n          id: e.legendId,\n          class: C([\"fr-fieldset__legend\", e.legendClass])\n        }, [\n          L(p(e.legend) + \" \", 1),\n          M(e.$slots, \"legend\")\n        ], 10, cn)) : m(\"\", !0),\n        e.hint || (s = (o = e.$slots).hint) != null && s.call(o).length ? (r(), d(\"div\", fn, [\n          i(\"span\", {\n            class: C([\"fr-hint-text\", e.hintClass])\n          }, [\n            L(p(e.hint) + \" \", 1),\n            M(e.$slots, \"hint\")\n          ], 2)\n        ])) : m(\"\", !0),\n        i(\"div\", pn, [\n          M(e.$slots, \"default\")\n        ])\n      ]);\n    };\n  }\n}), vn = [\"href\", \"download\"], mn = { class: \"fr-link__detail\" }, dt = /* @__PURE__ */ w({\n  __name: \"DsfrFileDownload\",\n  props: {\n    title: { default: \"Télécharger le document\" },\n    format: { default: \"JPEG\" },\n    size: { default: \"250 Ko\" },\n    href: { default: \"#\" },\n    download: { default: \"\" }\n  },\n  setup(l) {\n    return (e, a) => (r(), d(\"a\", {\n      href: e.href,\n      download: e.download,\n      class: \"fr-link fr-link--download\"\n    }, [\n      L(p(e.title) + \" \", 1),\n      i(\"span\", mn, p(e.format) + \" – \" + p(e.size), 1)\n    ], 8, vn));\n  }\n}), gn = { class: \"fr-downloads-group fr-downloads-group--bordered\" }, bn = {\n  key: 0,\n  class: \"fr-downloads-group__title\"\n}, kn = /* @__PURE__ */ w({\n  __name: \"DsfrFileDownloadList\",\n  props: {\n    files: { default: () => [] },\n    title: { default: \"\" }\n  },\n  setup(l) {\n    return (e, a) => (r(), d(\"div\", gn, [\n      e.title ? (r(), d(\"h4\", bn, p(e.title), 1)) : m(\"\", !0),\n      i(\"ul\", null, [\n        (r(!0), d(T, null, F(e.files, (t, n) => (r(), d(\"li\", { key: n }, [\n          X(dt, {\n            title: t.title,\n            format: t.format,\n            size: t.size,\n            href: t.href,\n            download: t.download\n          }, null, 8, [\"title\", \"format\", \"size\", \"href\", \"download\"])\n        ]))), 128))\n      ])\n    ]));\n  }\n}), yn = [\"for\"], _n = {\n  key: 0,\n  class: \"fr-hint-text\"\n}, wn = [\"id\", \"aria-describedby\", \"value\", \"disabled\", \"accept\"], Dn = {\n  key: 0,\n  class: \"fr-messages-group\"\n}, Mn = [\"id\"], zn = /* @__PURE__ */ w({\n  __name: \"DsfrFileUpload\",\n  props: {\n    id: { default: () => Y(\"file-upload\") },\n    label: { default: \"Ajouter un fichier\" },\n    accept: { default: () => [] },\n    hint: { default: \"\" },\n    error: { default: \"\" },\n    validMessage: { default: \"\" },\n    disabled: { type: Boolean },\n    modelValue: { default: \"\" }\n  },\n  emits: [\"update:modelValue\", \"change\"],\n  setup(l, { emit: e }) {\n    const a = e, t = (n) => {\n      var o, s;\n      a(\"update:modelValue\", (o = n.target) == null ? void 0 : o.value), a(\"change\", (s = n.target) == null ? void 0 : s.files);\n    };\n    return (n, o) => (r(), d(\"div\", {\n      class: C([\"fr-upload-group\", {\n        \"fr-upload-group--error\": n.error,\n        \"fr-upload-group--valid\": n.validMessage,\n        \"fr-upload-group--disabled\": n.disabled\n      }])\n    }, [\n      i(\"label\", {\n        class: \"fr-label\",\n        for: n.id\n      }, [\n        L(p(n.label) + \" \", 1),\n        n.hint ? (r(), d(\"span\", _n, p(n.hint), 1)) : m(\"\", !0)\n      ], 8, yn),\n      i(\"input\", N({\n        id: n.id,\n        class: \"fr-upload\",\n        type: \"file\",\n        \"aria-describedby\": n.error || n.validMessage ? `${n.id}-desc` : void 0\n      }, n.$attrs, {\n        value: n.modelValue,\n        disabled: n.disabled,\n        accept: n.accept.join(\",\"),\n        onChange: o[0] || (o[0] = (s) => t(s))\n      }), null, 16, wn),\n      n.error || n.validMessage ? (r(), d(\"div\", Dn, [\n        n.error ? (r(), d(\"p\", {\n          key: 0,\n          id: `${n.id}-desc`,\n          class: \"fr-error-text fr-mt-3v\"\n        }, p(n.error ?? n.validMessage), 9, Mn)) : m(\"\", !0)\n      ])) : m(\"\", !0)\n    ], 2));\n  }\n}), Cn = { class: \"fr-follow__social\" }, $n = /* @__PURE__ */ i(\"br\", null, null, -1), Ln = {\n  key: 0,\n  class: \"fr-btns-group fr-btns-group--lg\"\n}, In = [\"title\", \"href\"], ut = /* @__PURE__ */ w({\n  __name: \"DsfrSocialNetworks\",\n  props: {\n    networks: {},\n    titleTag: { default: \"h3\" }\n  },\n  setup(l) {\n    return (e, a) => (r(), d(\"div\", Cn, [\n      (r(), z(J(e.titleTag), { class: \"fr-h5 fr-mb-3v fr-mb-3v\" }, {\n        default: A(() => [\n          L(\" Suivez-nous \"),\n          $n,\n          L(\" sur les réseaux sociaux \")\n        ]),\n        _: 1\n      })),\n      e.networks.length ? (r(), d(\"ul\", Ln, [\n        (r(!0), d(T, null, F(e.networks, (t, n) => (r(), d(\"li\", { key: n }, [\n          i(\"a\", {\n            class: C([\"fr-btn\", `fr-btn--${t.name}`]),\n            title: t.name,\n            href: t.href,\n            target: \"_blank\",\n            rel: \"noopener noreferrer\"\n          }, p(t.name), 11, In)\n        ]))), 128))\n      ])) : m(\"\", !0)\n    ]));\n  }\n}), Tn = { class: \"fr-follow__newsletter\" }, Sn = { class: \"fr-h5 fr-follow__title\" }, En = { class: \"fr-text--sm fr-follow__desc\" }, An = { key: 0 }, Hn = [\"title\"], Bn = { key: 1 }, Fn = { action: \"\" }, Rn = {\n  class: \"fr-label\",\n  for: \"newsletter-email\"\n}, Nn = { class: \"fr-input-wrap fr-input-wrap--addon\" }, Vn = [\"title\", \"placeholder\", \"value\"], Pn = [\"title\"], Xn = {\n  key: 0,\n  class: \"fr-messages-group\"\n}, Yn = {\n  id: \"newsletter-email-desc-error\",\n  class: \"fr-error-text\"\n}, jn = {\n  id: \"fr-newsletter-hint-text\",\n  class: \"fr-hint-text\"\n}, ct = /* @__PURE__ */ w({\n  __name: \"DsfrNewsLetter\",\n  props: {\n    title: { default: \"Abonnez-vous à notre lettre d’information\" },\n    description: { default: \"\" },\n    email: { default: \"\" },\n    error: { default: \"\" },\n    labelEmail: { default: \"Votre adresse électronique (ex. : prenom.nom@example.com)\" },\n    placeholder: { default: \"prenom.nom@example.com\" },\n    hintText: { default: \"\" },\n    inputTitle: { default: \"Adresse courriel\" },\n    buttonText: { default: \"S’abonner\" },\n    buttonTitle: { default: \"S‘abonner à notre lettre d’information\" },\n    buttonAction: { type: Function, default: () => {\n    } },\n    onlyCallout: { type: Boolean, default: !1 }\n  },\n  emits: [\"update:email\"],\n  setup(l, { emit: e }) {\n    const a = e, t = (n) => a(\"update:email\", n.target.value);\n    return (n, o) => (r(), d(\"div\", Tn, [\n      i(\"div\", null, [\n        i(\"h3\", Sn, p(n.title), 1),\n        i(\"p\", En, p(n.description), 1)\n      ]),\n      n.onlyCallout ? (r(), d(\"div\", An, [\n        i(\"button\", {\n          class: \"fr-btn\",\n          title: n.buttonTitle,\n          onClick: o[0] || (o[0] = (s) => n.buttonAction ? n.buttonAction(s) : () => {\n          })\n        }, p(n.buttonText), 9, Hn)\n      ])) : (r(), d(\"div\", Bn, [\n        i(\"form\", Fn, [\n          i(\"label\", Rn, p(n.labelEmail), 1),\n          i(\"div\", Nn, [\n            i(\"input\", {\n              id: \"newsletter-email\",\n              class: \"fr-input\",\n              \"aria-describedby\": \"fr-newsletter-hint-text\",\n              title: n.inputTitle || n.labelEmail,\n              placeholder: n.placeholder || n.labelEmail,\n              type: \"email\",\n              name: \"newsletter-email\",\n              value: n.email,\n              autocomplete: \"email\",\n              onInput: o[1] || (o[1] = (s) => t(s))\n            }, null, 40, Vn),\n            i(\"button\", {\n              id: \"newsletter-button\",\n              class: \"fr-btn\",\n              title: n.buttonTitle,\n              type: \"submit\"\n            }, p(n.buttonText), 9, Pn)\n          ]),\n          n.error ? (r(), d(\"div\", Xn, [\n            i(\"p\", Yn, p(n.error), 1)\n          ])) : m(\"\", !0),\n          i(\"p\", jn, p(n.hintText), 1)\n        ])\n      ]))\n    ]));\n  }\n}), On = { class: \"fr-follow\" }, Qn = { class: \"fr-container\" }, qn = { class: \"fr-grid-row\" }, Gn = /* @__PURE__ */ w({\n  __name: \"DsfrFollow\",\n  props: {\n    newsletterData: { default: () => {\n    } },\n    networks: { default: () => [] }\n  },\n  setup(l) {\n    const e = l, a = _(() => e.networks && e.networks.length), t = _(() => typeof e.newsletterData == \"object\");\n    return (n, o) => (r(), d(\"div\", On, [\n      i(\"div\", Qn, [\n        i(\"div\", qn, [\n          M(n.$slots, \"default\", {}, () => [\n            n.newsletterData ? (r(), d(\"div\", {\n              key: 0,\n              class: C({ \"fr-col-12\": !0, \"fr-col-md-8\": a.value })\n            }, [\n              X(ct, re(Ee(n.newsletterData)), null, 16)\n            ], 2)) : m(\"\", !0),\n            a.value ? (r(), d(\"div\", {\n              key: 1,\n              class: C({ \"fr-col-12\": !0, \"fr-col-md-4\": t.value })\n            }, [\n              X(ut, { networks: n.networks }, null, 8, [\"networks\"])\n            ], 2)) : m(\"\", !0)\n          ])\n        ])\n      ])\n    ]));\n  }\n}), Kn = [\"innerHTML\"], Qe = /* @__PURE__ */ w({\n  __name: \"DsfrLogo\",\n  props: {\n    small: { type: Boolean },\n    large: { type: Boolean },\n    logoText: { default: () => \"Gouvernement\" }\n  },\n  setup(l) {\n    const e = l, a = _(() => e.logoText instanceof Array ? e.logoText.join(\"<br>\") : e.logoText);\n    return (t, n) => (r(), d(\"p\", {\n      class: C([\"fr-logo\", {\n        \"fr-logo--sm\": t.small && !t.large,\n        \"fr-logo--lg\": t.large && !t.small\n      }]),\n      innerHTML: a.value\n    }, null, 10, Kn));\n  }\n}), Un = { class: \"fr-footer__partners\" }, Wn = {\n  key: 0,\n  class: \"fr-footer__partners-title\"\n}, Zn = { class: \"fr-footer__partners-logos\" }, Jn = {\n  key: 0,\n  class: \"fr-footer__partners-main\"\n}, xn = [\"href\"], er = [\"src\", \"alt\"], tr = { class: \"fr-footer__partners-sub\" }, ar = [\"href\"], nr = [\"src\", \"alt\"], ft = /* @__PURE__ */ w({\n  __name: \"DsfrFooterPartners\",\n  props: {\n    mainPartner: { default: void 0 },\n    subPartners: { default: () => [] },\n    title: { default: \"\" }\n  },\n  setup(l) {\n    return (e, a) => (r(), d(\"div\", Un, [\n      e.title ? (r(), d(\"h4\", Wn, p(e.title), 1)) : m(\"\", !0),\n      i(\"div\", Zn, [\n        e.mainPartner ? (r(), d(\"div\", Jn, [\n          i(\"a\", {\n            class: \"fr-footer__partners-link\",\n            href: e.mainPartner.href,\n            target: \"_blank\"\n          }, [\n            i(\"img\", {\n              class: \"fr-footer__logo\",\n              src: e.mainPartner.logo,\n              alt: e.mainPartner.name\n            }, null, 8, er)\n          ], 8, xn)\n        ])) : m(\"\", !0),\n        i(\"div\", tr, [\n          i(\"ul\", null, [\n            (r(!0), d(T, null, F(e.subPartners, (t, n) => (r(), d(\"li\", { key: n }, [\n              i(\"a\", {\n                class: \"fr-footer__partners-link\",\n                href: t.href,\n                target: \"_blank\"\n              }, [\n                i(\"img\", {\n                  class: \"fr-footer__logo\",\n                  src: t.logo,\n                  alt: t.name\n                }, null, 8, nr)\n              ], 8, ar)\n            ]))), 128))\n          ])\n        ])\n      ])\n    ]));\n  }\n}), rr = {\n  id: \"footer\",\n  class: \"fr-footer\",\n  role: \"contentinfo\"\n}, lr = {\n  key: 0,\n  class: \"fr-footer__top\"\n}, sr = { class: \"fr-container\" }, ir = { class: \"fr-grid-row fr-grid-row--start fr-grid-row--gutters\" }, or = { class: \"fr-container\" }, dr = { class: \"fr-footer__body\" }, ur = { class: \"fr-footer__brand fr-enlarge-link\" }, cr = [\"src\", \"alt\"], fr = { class: \"fr-footer__content\" }, pr = { class: \"fr-footer__content-desc\" }, hr = { class: \"fr-footer__content-list\" }, vr = [\"href\"], mr = { class: \"fr-footer__bottom\" }, gr = { class: \"fr-footer__bottom-list\" }, br = { class: \"fr-footer__bottom-copy\" }, kr = /* @__PURE__ */ w({\n  __name: \"DsfrFooter\",\n  props: {\n    a11yCompliance: { default: \"non conforme\" },\n    a11yComplianceLink: { default: \"/a11y\" },\n    legalLink: { default: \"/mentions-legales\" },\n    homeLink: { default: \"/\" },\n    partners: { default: () => {\n    } },\n    personalDataLink: { default: \"/donnees-personnelles\" },\n    cookiesLink: { default: \"/cookies\" },\n    logoText: { default: () => [\"République\", \"Française\"] },\n    descText: { default: void 0 },\n    beforeMandatoryLinks: { default: () => [] },\n    afterMandatoryLinks: { default: () => [] },\n    mandatoryLinks: { default: (l) => [\n      {\n        label: `Accessibilité : ${l.a11yCompliance}`,\n        to: l.a11yComplianceLink\n      },\n      {\n        label: \"Mentions légales\",\n        to: l.legalLink\n      },\n      {\n        label: \"Données personnelles\",\n        to: l.personalDataLink\n      },\n      {\n        label: \"Gestion des cookies\",\n        to: l.cookiesLink\n      }\n    ] },\n    ecosystemLinks: { default: () => [\n      {\n        label: \"legifrance.gouv.fr\",\n        href: \"https://legifrance.gouv.fr\"\n      },\n      {\n        label: \"gouvernement.fr\",\n        href: \"https://gouvernement.fr\"\n      },\n      {\n        label: \"service-public.fr\",\n        href: \"https://service-public.fr\"\n      },\n      {\n        label: \"data.gouv.fr\",\n        href: \"https://data.gouv.fr\"\n      }\n    ] },\n    operatorLinkText: { default: \"Revenir à l’accueil\" },\n    operatorTo: { default: \"/\" },\n    operatorImgStyle: { default: void 0 },\n    operatorImgSrc: { default: void 0 },\n    operatorImgAlt: { default: \"\" },\n    licenceTo: { default: \"https://github.com/etalab/licence-ouverte/blob/master/LO.md\" },\n    licenceLinkProps: { default: () => {\n    } },\n    licenceText: { default: \"Sauf mention contraire, tous les textes de ce site sont sous\" },\n    licenceName: { default: \"licence etalab-2.0\" }\n  },\n  setup(l) {\n    const e = l, a = _(() => [\n      ...e.beforeMandatoryLinks,\n      ...e.mandatoryLinks,\n      ...e.afterMandatoryLinks\n    ]), t = st(), n = _(() => {\n      var c;\n      return (c = t[\"footer-link-lists\"]) == null ? void 0 : c.call(t).length;\n    }), o = _(() => {\n      const c = e.licenceTo || e.licenceLinkProps.to;\n      return c && typeof c == \"string\" && c.startsWith(\"http\");\n    }), s = _(() => o.value ? \"\" : e.licenceTo), u = _(() => o.value ? e.licenceTo : \"\");\n    return (c, f) => {\n      const y = ne(\"RouterLink\");\n      return r(), d(\"footer\", rr, [\n        n.value ? (r(), d(\"div\", lr, [\n          i(\"div\", sr, [\n            i(\"div\", ir, [\n              M(c.$slots, \"footer-link-lists\", {}, void 0, !0)\n            ])\n          ])\n        ])) : m(\"\", !0),\n        i(\"div\", or, [\n          i(\"div\", dr, [\n            i(\"div\", ur, [\n              X(y, {\n                to: c.homeLink,\n                title: \"Retour à l’accueil\"\n              }, {\n                default: A(() => [\n                  X(Qe, { \"logo-text\": c.logoText }, null, 8, [\"logo-text\"])\n                ]),\n                _: 1\n              }, 8, [\"to\"]),\n              c.operatorImgSrc ? (r(), z(y, {\n                key: 0,\n                class: \"fr-footer__brand-link\",\n                to: c.operatorTo,\n                title: c.operatorLinkText\n              }, {\n                default: A(() => [\n                  i(\"img\", {\n                    class: \"fr-footer__logo fr-responsive-img\",\n                    style: it([\n                      typeof c.operatorImgStyle == \"string\" ? c.operatorImgStyle : \"\",\n                      {\n                        \"margin-left\": \"0.5px\",\n                        padding: \"1rem\",\n                        ...typeof c.operatorImgStyle == \"object\" ? c.operatorImgStyle : {},\n                        \"max-width\": \"12.5rem\"\n                      }\n                    ]),\n                    src: c.operatorImgSrc,\n                    alt: c.operatorImgAlt\n                  }, null, 12, cr)\n                ]),\n                _: 1\n              }, 8, [\"to\", \"title\"])) : m(\"\", !0)\n            ]),\n            i(\"div\", fr, [\n              i(\"p\", pr, [\n                M(c.$slots, \"description\", {}, () => [\n                  L(p(c.descText), 1)\n                ], !0)\n              ]),\n              i(\"ul\", hr, [\n                (r(!0), d(T, null, F(c.ecosystemLinks, (h, D) => (r(), d(\"li\", {\n                  key: D,\n                  class: \"fr-footer__content-item\"\n                }, [\n                  i(\"a\", {\n                    class: \"fr-footer__content-link\",\n                    href: h.href,\n                    target: \"_blank\"\n                  }, p(h.label), 9, vr)\n                ]))), 128))\n              ])\n            ])\n          ]),\n          c.partners ? (r(), z(ft, re(N({ key: 0 }, c.partners)), null, 16)) : m(\"\", !0),\n          i(\"div\", mr, [\n            i(\"ul\", gr, [\n              (r(!0), d(T, null, F(a.value, (h, D) => (r(), d(\"li\", {\n                key: D,\n                class: \"fr-footer__bottom-item\"\n              }, [\n                X(y, {\n                  class: \"fr-footer__bottom-link\",\n                  to: h.to ?? \"#\",\n                  \"data-testid\": h.to\n                }, {\n                  default: A(() => [\n                    L(p(h.label), 1)\n                  ]),\n                  _: 2\n                }, 1032, [\"to\", \"data-testid\"])\n              ]))), 128))\n            ]),\n            i(\"div\", br, [\n              i(\"p\", null, [\n                L(p(c.licenceText) + \" \", 1),\n                (r(), z(J(o.value ? \"a\" : \"RouterLink\"), N({\n                  class: \"fr-link-licence no-content-after\",\n                  to: o.value ? null : s.value,\n                  href: u.value,\n                  target: o.value ? \"_blank\" : void 0,\n                  rel: \"noopener noreferrer\"\n                }, c.licenceLinkProps), {\n                  default: A(() => [\n                    L(p(c.licenceName), 1)\n                  ]),\n                  _: 1\n                }, 16, [\"to\", \"href\", \"target\"]))\n              ])\n            ])\n          ])\n        ])\n      ]);\n    };\n  }\n}), yr = /* @__PURE__ */ ee(kr, [[\"__scopeId\", \"data-v-e46cae1b\"]]), _r = { class: \"fr-footer__top-cat\" }, wr = { class: \"fr-footer__top-list\" }, Dr = [\"href\"], Mr = /* @__PURE__ */ w({\n  __name: \"DsfrFooterLinkList\",\n  props: {\n    categoryName: { default: \"Nom de la catégorie\" },\n    links: { default: () => [] }\n  },\n  setup(l) {\n    return (e, a) => {\n      const t = ne(\"RouterLink\");\n      return r(), d(\"div\", null, [\n        i(\"h3\", _r, p(e.categoryName), 1),\n        i(\"ul\", wr, [\n          (r(!0), d(T, null, F(e.links, (n, o) => (r(), d(\"li\", { key: o }, [\n            typeof n.to == \"string\" && n.to.startsWith(\"http\") ? (r(), d(\"a\", {\n              key: 0,\n              class: \"fr-footer__top-link\",\n              target: \"_blank\",\n              href: n.to\n            }, p(n.label), 9, Dr)) : (r(), z(t, {\n              key: 1,\n              class: \"fr-footer__top-link\",\n              to: n.to\n            }, {\n              default: A(() => [\n                L(p(n.label), 1)\n              ]),\n              _: 2\n            }, 1032, [\"to\"]))\n          ]))), 128))\n        ])\n      ]);\n    };\n  }\n}), zr = { class: \"fr-connect-group\" }, Cr = /* @__PURE__ */ i(\"span\", { class: \"fr-connect__login\" }, \"S’identifier avec\", -1), $r = { class: \"fr-connect__brand\" }, Lr = [\"href\", \"title\"], Ir = /* @__PURE__ */ w({\n  __name: \"DsfrFranceConnect\",\n  props: {\n    secure: { type: Boolean }\n  },\n  setup(l) {\n    return (e, a) => (r(), d(\"div\", zr, [\n      i(\"button\", {\n        class: C(e.secure ? \"fr-connect fr-connect--plus\" : \"fr-connect\")\n      }, [\n        Cr,\n        i(\"span\", $r, \"FranceConnect\" + p(e.secure ? \"+\" : \"\"), 1)\n      ], 2),\n      i(\"p\", null, [\n        i(\"a\", {\n          href: e.secure ? \"https://franceconnect.gouv.fr/france-connect-plus\" : \"https://franceconnect.gouv.fr/\",\n          target: \"_blank\",\n          rel: \"noopener noreferrer\",\n          title: e.secure ? \"Qu’est ce que FranceConnect+ ? - nouvelle fenêtre\" : \"Qu’est ce que FranceConnect ? - nouvelle fenêtre\"\n        }, \"Qu’est-ce que France Connect\" + p(e.secure ? \"+\" : \"\") + \" ?\", 9, Lr)\n      ])\n    ]));\n  }\n}), Tr = [\"for\"], Sr = {\n  key: 0,\n  class: \"required\"\n}, Er = {\n  key: 0,\n  class: \"fr-hint-text\"\n}, Ar = /* @__PURE__ */ w({\n  inheritAttrs: !1,\n  __name: \"DsfrInput\",\n  props: {\n    id: { default: () => Y(\"basic\", \"input\") },\n    descriptionId: { default: void 0 },\n    hint: { default: \"\" },\n    isInvalid: { type: Boolean },\n    isValid: { type: Boolean },\n    isTextarea: { type: Boolean },\n    isWithWrapper: { type: Boolean },\n    labelVisible: { type: Boolean },\n    label: { default: \"\" },\n    labelClass: { default: \"\" },\n    modelValue: { default: \"\" },\n    wrapperClass: { default: \"\" }\n  },\n  setup(l, { expose: e }) {\n    const a = l, t = Vt(), n = R(null), o = () => {\n      var f;\n      return (f = n.value) == null ? void 0 : f.focus();\n    }, s = _(() => a.isTextarea ? \"textarea\" : \"input\"), u = _(() => a.isWithWrapper || t.type === \"date\" || !!a.wrapperClass), c = _(() => [\n      \"fr-label\",\n      { invisible: !a.labelVisible },\n      a.labelClass\n    ]);\n    return e({\n      focus: o\n    }), (f, y) => (r(), d(T, null, [\n      i(\"label\", {\n        class: C(c.value),\n        for: f.id\n      }, [\n        M(f.$slots, \"label\", {}, () => [\n          L(p(f.label) + \" \", 1),\n          M(f.$slots, \"required-tip\", {}, () => [\n            f.$attrs.required ? (r(), d(\"span\", Sr, \" *\")) : m(\"\", !0)\n          ], !0)\n        ], !0),\n        f.hint ? (r(), d(\"span\", Er, p(f.hint), 1)) : m(\"\", !0)\n      ], 10, Tr),\n      u.value ? (r(), d(\"div\", {\n        key: 1,\n        class: C([\n          { \"fr-input-wrap\": f.isWithWrapper || f.$attrs.type === \"date\" },\n          f.wrapperClass\n        ])\n      }, [\n        (r(), z(J(s.value), N({ id: f.id }, f.$attrs, {\n          ref_key: \"__input\",\n          ref: n,\n          class: [\"fr-input\", {\n            \"fr-input--error\": f.isInvalid,\n            \"fr-input--valid\": f.isValid\n          }],\n          value: f.modelValue,\n          \"aria-describedby\": f.descriptionId || void 0,\n          onInput: y[1] || (y[1] = (h) => f.$emit(\"update:modelValue\", h.target.value))\n        }), null, 16, [\"id\", \"class\", \"value\", \"aria-describedby\"]))\n      ], 2)) : (r(), z(J(s.value), N({\n        key: 0,\n        id: f.id\n      }, f.$attrs, {\n        ref_key: \"__input\",\n        ref: n,\n        class: [\"fr-input\", {\n          \"fr-input--error\": f.isInvalid,\n          \"fr-input--valid\": f.isValid\n        }],\n        value: f.modelValue,\n        \"aria-describedby\": f.descriptionId || void 0,\n        onInput: y[0] || (y[0] = (h) => f.$emit(\"update:modelValue\", h.target.value))\n      }), null, 16, [\"id\", \"class\", \"value\", \"aria-describedby\"]))\n    ], 64));\n  }\n}), qe = /* @__PURE__ */ ee(Ar, [[\"__scopeId\", \"data-v-628eac34\"]]), Xe = /* @__PURE__ */ w({\n  __name: \"DsfrSearchBar\",\n  props: {\n    id: { default: () => Y(\"search\", \"input\") },\n    label: { default: \"\" },\n    labelVisible: { type: Boolean },\n    large: { type: Boolean },\n    buttonText: { default: \"\" },\n    modelValue: { default: \"\" },\n    placeholder: { default: \"Rechercher\" },\n    disabled: { type: Boolean }\n  },\n  emits: [\"update:modelValue\", \"search\"],\n  setup(l) {\n    return (e, a) => (r(), d(\"div\", {\n      class: C([\"fr-search-bar\", { \"fr-search-bar--lg\": e.large }]),\n      role: \"search\"\n    }, [\n      X(qe, {\n        id: e.id,\n        type: \"search\",\n        placeholder: e.placeholder,\n        \"model-value\": e.modelValue,\n        \"label-visible\": e.labelVisible,\n        label: e.label,\n        disabled: e.disabled,\n        \"onUpdate:modelValue\": a[0] || (a[0] = (t) => e.$emit(\"update:modelValue\", t)),\n        onKeydown: a[1] || (a[1] = ue((t) => e.$emit(\"search\", \"\"), [\"enter\"]))\n      }, null, 8, [\"id\", \"placeholder\", \"model-value\", \"label-visible\", \"label\", \"disabled\"]),\n      X(He, {\n        title: \"Rechercher\",\n        disabled: e.disabled,\n        onClick: a[2] || (a[2] = (t) => e.$emit(\"search\", \"\"))\n      }, {\n        default: A(() => [\n          L(p(e.buttonText), 1)\n        ]),\n        _: 1\n      }, 8, [\"disabled\"])\n    ], 2));\n  }\n}), pt = /* @__PURE__ */ w({\n  __name: \"DsfrHeaderMenuLink\",\n  props: {\n    button: { type: Boolean },\n    icon: { default: void 0 },\n    iconAttrs: { default: () => ({}) },\n    iconRight: { type: Boolean },\n    label: { default: \"\" },\n    target: { default: \"_self\" },\n    onClick: { type: Function, default: () => {\n    } },\n    to: { default: void 0 },\n    href: { default: void 0 }\n  },\n  setup(l) {\n    const e = l, a = _(() => e.button ? \"button\" : n.value || o.value ? \"a\" : \"RouterLink\"), t = _(() => typeof e.path == \"string\"), n = _(() => {\n      var f;\n      return ((f = e.href) == null ? void 0 : f.startsWith(\"http\")) || t.value && e.path.startsWith(\"http\");\n    }), o = _(() => {\n      var f;\n      return ((f = e.href) == null ? void 0 : f.startsWith(\"mailto\")) || t.value && e.path.startsWith(\"mailto\");\n    }), s = _(() => {\n      if (!(!n.value && !o.value))\n        return e.href !== void 0 ? e.href : e.path;\n    }), u = _(() => {\n      if (!(n.value || o.value))\n        return e.to || e.path;\n    }), c = _(() => u.value ? { to: u.value } : { href: s.value });\n    return (f, y) => (r(), z(J(a.value), N({ class: \"fr-btn\" }, c.value, {\n      target: f.target,\n      onClick: U(f.onClick, [\"stop\"])\n    }), {\n      default: A(() => [\n        (f.icon || f.iconAttrs) && !f.iconRight ? (r(), z(B(fe), N({\n          key: 0,\n          name: f.icon,\n          class: \"fr-mr-1w\"\n        }, f.iconAttrs), null, 16, [\"name\"])) : m(\"\", !0),\n        L(\" \" + p(f.label) + \" \", 1),\n        (f.icon || f.iconAttrs) && f.iconRight ? (r(), z(B(fe), N({\n          key: 1,\n          name: f.icon,\n          class: \"fr-ml-1w\"\n        }, f.iconAttrs), null, 16, [\"name\"])) : m(\"\", !0)\n      ]),\n      _: 1\n    }, 16, [\"target\", \"onClick\"]));\n  }\n}), Hr = [\"aria-label\"], Br = { class: \"fr-btns-group\" }, Ye = /* @__PURE__ */ w({\n  __name: \"DsfrHeaderMenuLinks\",\n  props: {\n    links: { default: () => [] },\n    navAriaLabel: { default: \"Menu secondaire\" }\n  },\n  emits: [\"linkClick\"],\n  setup(l) {\n    return (e, a) => (r(), d(\"nav\", {\n      role: \"navigation\",\n      \"aria-label\": e.navAriaLabel\n    }, [\n      i(\"ul\", Br, [\n        (r(!0), d(T, null, F(e.links, (t, n) => (r(), d(\"li\", { key: n }, [\n          X(pt, N(t, {\n            \"on-click\": () => e.$emit(\"linkClick\")\n          }), null, 16, [\"on-click\"])\n        ]))), 128))\n      ])\n    ], 8, Hr));\n  }\n}), Fr = {\n  role: \"banner\",\n  class: \"fr-header\"\n}, Rr = { class: \"fr-header__body\" }, Nr = { class: \"fr-container width-inherit\" }, Vr = { class: \"fr-header__body-row\" }, Pr = { class: \"fr-header__brand fr-enlarge-link\" }, Xr = { class: \"fr-header__brand-top\" }, Yr = { class: \"fr-header__logo\" }, jr = {\n  key: 0,\n  class: \"fr-header__operator\"\n}, Or = [\"src\", \"alt\"], Qr = {\n  key: 1,\n  class: \"fr-header__navbar\"\n}, qr = [\"data-fr-opened\"], Gr = {\n  key: 0,\n  class: \"fr-header__service\"\n}, Kr = { class: \"fr-header__service-title\" }, Ur = {\n  key: 0,\n  class: \"fr-badge fr-badge--sm fr-badge--green-emeraude\"\n}, Wr = {\n  key: 0,\n  class: \"fr-header__service-tagline\"\n}, Zr = {\n  key: 1,\n  class: \"fr-header__service\"\n}, Jr = /* @__PURE__ */ i(\"p\", { class: \"fr-header__service-title\" }, [\n  /* @__PURE__ */ i(\"span\", { class: \"fr-badge fr-badge--sm fr-badge--green-emeraude\" }, \"BETA\")\n], -1), xr = [\n  Jr\n], el = { class: \"fr-header__tools\" }, tl = {\n  key: 0,\n  class: \"fr-header__tools-links\"\n}, al = { role: \"navigation\" }, nl = {\n  key: 1,\n  class: \"fr-header__search fr-modal\"\n}, rl = { class: \"fr-container\" }, ll = { class: \"fr-header__menu-links\" }, sl = { role: \"navigation\" }, il = {\n  key: 1,\n  class: \"flex justify-center items-center\"\n}, ol = {\n  key: 1,\n  class: \"fr-hidden fr-unhidden-lg\"\n}, dl = /* @__PURE__ */ w({\n  __name: \"DsfrHeader\",\n  props: {\n    serviceTitle: { default: void 0 },\n    serviceDescription: { default: void 0 },\n    homeTo: { default: \"/\" },\n    logoText: { default: () => \"Gouvernement\" },\n    modelValue: { default: \"\" },\n    operatorImgAlt: { default: \"\" },\n    operatorImgSrc: { default: \"\" },\n    operatorImgStyle: { default: () => ({}) },\n    placeholder: { default: \"Rechercher...\" },\n    quickLinks: { default: () => [] },\n    searchLabel: { default: \"Recherche\" },\n    quickLinksAriaLabel: { default: \"Menu secondaire\" },\n    showSearch: { type: Boolean },\n    showBeta: { type: Boolean }\n  },\n  emits: [\"update:modelValue\", \"search\"],\n  setup(l) {\n    const e = l, a = (v) => {\n      v.key === \"Escape\" && s();\n    };\n    le(() => {\n      document.addEventListener(\"keydown\", a);\n    }), Ae(() => {\n      document.removeEventListener(\"keydown\", a);\n    });\n    const t = R(!1), n = R(!1), o = R(!1), s = () => {\n      var v;\n      o.value = !1, t.value = !1, n.value = !1, (v = document.getElementById(\"button-menu\")) == null || v.focus();\n    }, u = () => {\n      var v;\n      o.value = !0, t.value = !0, n.value = !1, (v = document.getElementById(\"close-button\")) == null || v.focus();\n    }, c = () => {\n      o.value = !0, t.value = !1, n.value = !0;\n    }, f = s, y = st(), h = _(() => {\n      var v;\n      return !!((v = y.operator) != null && v.call(y).length) || !!e.operatorImgSrc;\n    }), D = _(() => !!y.mainnav);\n    return (v, k) => {\n      var H, Q, te;\n      const E = ne(\"RouterLink\");\n      return r(), d(\"header\", Fr, [\n        i(\"div\", Rr, [\n          i(\"div\", Nr, [\n            i(\"div\", Vr, [\n              i(\"div\", Pr, [\n                i(\"div\", Xr, [\n                  i(\"div\", Yr, [\n                    X(Qe, {\n                      \"logo-text\": v.logoText,\n                      \"data-testid\": \"header-logo\"\n                    }, null, 8, [\"logo-text\"])\n                  ]),\n                  h.value ? (r(), d(\"div\", jr, [\n                    M(v.$slots, \"operator\", {}, () => [\n                      v.operatorImgSrc ? (r(), d(\"img\", {\n                        key: 0,\n                        class: \"fr-responsive-img\",\n                        src: v.operatorImgSrc,\n                        alt: v.operatorImgAlt,\n                        style: it(v.operatorImgStyle)\n                      }, null, 12, Or)) : m(\"\", !0)\n                    ])\n                  ])) : m(\"\", !0),\n                  v.showSearch || D.value || (H = v.quickLinks) != null && H.length ? (r(), d(\"div\", Qr, [\n                    v.showSearch ? (r(), d(\"button\", {\n                      key: 0,\n                      class: \"fr-btn fr-btn--search\",\n                      \"aria-controls\": \"header-search\",\n                      \"aria-label\": \"Recherche\",\n                      title: \"Recherche\",\n                      \"data-fr-opened\": n.value,\n                      onClick: k[0] || (k[0] = U((I) => c(), [\"prevent\", \"stop\"]))\n                    }, null, 8, qr)) : m(\"\", !0),\n                    D.value || (Q = v.quickLinks) != null && Q.length ? (r(), d(\"button\", {\n                      key: 1,\n                      id: \"button-menu\",\n                      class: \"fr-btn--menu fr-btn\",\n                      \"data-fr-opened\": u,\n                      \"aria-controls\": \"header-navigation\",\n                      \"aria-haspopup\": \"menu\",\n                      \"aria-label\": \"Menu\",\n                      title: \"Menu\",\n                      \"data-testid\": \"open-menu-btn\",\n                      onClick: k[1] || (k[1] = U((I) => u(), [\"prevent\", \"stop\"]))\n                    })) : m(\"\", !0)\n                  ])) : m(\"\", !0)\n                ]),\n                v.serviceTitle ? (r(), d(\"div\", Gr, [\n                  X(E, N({\n                    to: v.homeTo,\n                    title: `Accueil - ${v.serviceTitle}`\n                  }, v.$attrs), {\n                    default: A(() => [\n                      i(\"p\", Kr, [\n                        L(p(v.serviceTitle) + \" \", 1),\n                        v.showBeta ? (r(), d(\"span\", Ur, \" BETA \")) : m(\"\", !0)\n                      ])\n                    ]),\n                    _: 1\n                  }, 16, [\"to\", \"title\"]),\n                  v.serviceDescription ? (r(), d(\"p\", Wr, p(v.serviceDescription), 1)) : m(\"\", !0)\n                ])) : m(\"\", !0),\n                !v.serviceTitle && v.showBeta ? (r(), d(\"div\", Zr, xr)) : m(\"\", !0)\n              ]),\n              i(\"div\", el, [\n                (te = v.quickLinks) != null && te.length ? (r(), d(\"div\", tl, [\n                  i(\"nav\", al, [\n                    t.value ? m(\"\", !0) : (r(), z(Ye, {\n                      key: 0,\n                      links: v.quickLinks,\n                      \"nav-aria-label\": v.quickLinksAriaLabel\n                    }, null, 8, [\"links\", \"nav-aria-label\"]))\n                  ])\n                ])) : m(\"\", !0),\n                v.showSearch ? (r(), d(\"div\", nl, [\n                  X(Xe, {\n                    label: v.searchLabel,\n                    \"model-value\": v.modelValue,\n                    placeholder: v.placeholder,\n                    style: { \"justify-content\": \"flex-end\" },\n                    \"onUpdate:modelValue\": k[2] || (k[2] = (I) => v.$emit(\"update:modelValue\", I)),\n                    onSearch: k[3] || (k[3] = (I) => v.$emit(\"search\", I))\n                  }, null, 8, [\"label\", \"model-value\", \"placeholder\"])\n                ])) : m(\"\", !0)\n              ])\n            ]),\n            v.showSearch || D.value || v.quickLinks && v.quickLinks.length ? (r(), d(\"div\", {\n              key: 0,\n              id: \"header-navigation\",\n              class: C([\"fr-header__menu fr-modal\", { \"fr-modal--opened\": o.value }]),\n              \"aria-label\": \"Menu modal\",\n              role: \"dialog\",\n              \"aria-modal\": \"true\"\n            }, [\n              i(\"div\", rl, [\n                i(\"button\", {\n                  id: \"close-button\",\n                  class: \"fr-btn fr-btn--close\",\n                  \"aria-controls\": \"header-navigation\",\n                  \"data-testid\": \"close-modal-btn\",\n                  onClick: k[4] || (k[4] = U((I) => s(), [\"prevent\", \"stop\"]))\n                }, \" Fermer \"),\n                i(\"div\", ll, [\n                  i(\"nav\", sl, [\n                    t.value ? (r(), z(Ye, {\n                      key: 0,\n                      role: \"navigation\",\n                      links: v.quickLinks,\n                      \"nav-aria-label\": v.quickLinksAriaLabel,\n                      onLinkClick: B(f)\n                    }, null, 8, [\"links\", \"nav-aria-label\", \"onLinkClick\"])) : m(\"\", !0)\n                  ])\n                ]),\n                o.value ? M(v.$slots, \"mainnav\", {\n                  key: 0,\n                  hidemodal: s\n                }) : m(\"\", !0),\n                n.value ? (r(), d(\"div\", il, [\n                  X(Xe, {\n                    \"model-value\": v.modelValue,\n                    placeholder: v.placeholder,\n                    \"onUpdate:modelValue\": k[5] || (k[5] = (I) => v.$emit(\"update:modelValue\", I)),\n                    onSearch: k[6] || (k[6] = (I) => v.$emit(\"search\", I))\n                  }, null, 8, [\"model-value\", \"placeholder\"])\n                ])) : m(\"\", !0)\n              ])\n            ], 2)) : m(\"\", !0),\n            D.value && !o.value ? (r(), d(\"div\", ol, [\n              M(v.$slots, \"mainnav\", { hidemodal: s })\n            ])) : m(\"\", !0),\n            M(v.$slots, \"default\")\n          ])\n        ])\n      ]);\n    };\n  }\n}), ul = { class: \"fr-highlight\" }, cl = /* @__PURE__ */ w({\n  __name: \"DsfrHighlight\",\n  props: {\n    text: { default: void 0 },\n    small: { type: Boolean },\n    large: { type: Boolean }\n  },\n  setup(l) {\n    return (e, a) => (r(), d(\"div\", ul, [\n      i(\"p\", {\n        class: C({\n          \"fr-text--lg\": e.large && !e.small,\n          \"fr-text--sm\": e.small && !e.large\n        })\n      }, [\n        L(p(e.text) + \" \", 1),\n        M(e.$slots, \"default\")\n      ], 2)\n    ]));\n  }\n}), fl = {\n  key: 1,\n  class: \"fr-messages-group\"\n}, pl = [\"id\", \"data-testid\"], hl = /* @__PURE__ */ w({\n  __name: \"DsfrInputGroup\",\n  props: {\n    descriptionId: { default: () => Y(\"basic\", \"input\") },\n    hint: { default: \"\" },\n    labelVisible: { type: Boolean },\n    label: { default: \"\" },\n    labelClass: { default: \"\" },\n    modelValue: { default: \"\" },\n    placeholder: { default: void 0 },\n    errorMessage: { default: void 0 },\n    validMessage: { default: void 0 },\n    wrapperClass: { default: \"\" }\n  },\n  emits: [\"update:modelValue\"],\n  setup(l) {\n    const e = l, a = _(() => e.errorMessage || e.validMessage), t = _(() => e.errorMessage ? \"fr-error-text\" : \"fr-valid-text\");\n    return (n, o) => (r(), d(\"div\", {\n      class: C([\"fr-input-group\", {\n        \"fr-input-group--error\": n.errorMessage,\n        \"fr-input-group--valid\": n.validMessage\n      }])\n    }, [\n      M(n.$slots, \"before-input\"),\n      M(n.$slots, \"default\"),\n      n.$slots.default ? m(\"\", !0) : (r(), z(qe, N({ key: 0 }, n.$attrs, {\n        \"is-valid\": !!n.validMessage,\n        \"is-invalid\": !!n.errorMessage,\n        label: n.label,\n        hint: n.hint,\n        \"description-id\": a.value && n.descriptionId || void 0,\n        \"label-visible\": n.labelVisible,\n        \"model-value\": n.modelValue,\n        placeholder: n.placeholder,\n        \"onUpdate:modelValue\": o[0] || (o[0] = (s) => n.$emit(\"update:modelValue\", s))\n      }), null, 16, [\"is-valid\", \"is-invalid\", \"label\", \"hint\", \"description-id\", \"label-visible\", \"model-value\", \"placeholder\"])),\n      a.value ? (r(), d(\"div\", fl, [\n        i(\"p\", {\n          id: n.descriptionId,\n          \"data-testid\": n.descriptionId,\n          class: C(t.value)\n        }, [\n          i(\"span\", null, p(a.value), 1)\n        ], 10, pl)\n      ])) : m(\"\", !0)\n    ], 2));\n  }\n}), vl = {\n  role: \"navigation\",\n  class: \"fr-translate fr-nav\"\n}, ml = { class: \"fr-nav__item\" }, gl = [\"aria-controls\", \"aria-expanded\"], bl = { class: \"fr-hidden-lg\" }, kl = [\"id\"], yl = { class: \"fr-menu__list\" }, _l = [\"hreflang\", \"lang\", \"aria-current\", \"href\", \"onClick\"], wl = /* @__PURE__ */ w({\n  __name: \"DsfrLanguageSelector\",\n  props: {\n    id: { default: () => Y(\"translate\") },\n    languages: { default: () => [] },\n    currentLanguage: { default: \"fr\" }\n  },\n  emits: [\"select\"],\n  setup(l, { emit: e }) {\n    const {\n      collapse: a,\n      collapsing: t,\n      cssExpanded: n,\n      doExpand: o,\n      onTransitionEnd: s\n    } = oe(), u = l, c = R(!1), f = e;\n    function y(D) {\n      c.value = !1, f(\"select\", D);\n    }\n    const h = _(\n      () => u.languages.find(({ codeIso: D }) => D === u.currentLanguage)\n    );\n    return ae(c, (D, v) => {\n      D !== v && o(D);\n    }), (D, v) => {\n      var k, E;\n      return r(), d(\"nav\", vl, [\n        i(\"div\", ml, [\n          i(\"button\", {\n            class: \"fr-translate__btn fr-btn fr-btn--tertiary\",\n            \"aria-controls\": D.id,\n            \"aria-expanded\": c.value,\n            title: \"Sélectionner une langue\",\n            type: \"button\",\n            onClick: v[0] || (v[0] = U((H) => c.value = !c.value, [\"prevent\", \"stop\"]))\n          }, [\n            L(p((k = h.value) == null ? void 0 : k.codeIso.toUpperCase()), 1),\n            i(\"span\", bl, \" - \" + p((E = h.value) == null ? void 0 : E.label), 1)\n          ], 8, gl),\n          i(\"div\", {\n            id: D.id,\n            ref_key: \"collapse\",\n            ref: a,\n            class: C([\"fr-collapse fr-translate__menu fr-menu\", { \"fr-collapse--expanded\": B(n), \"fr-collapsing\": B(t) }]),\n            onTransitionend: v[1] || (v[1] = (H) => B(s)(c.value))\n          }, [\n            i(\"ul\", yl, [\n              (r(!0), d(T, null, F(D.languages, (H, Q) => (r(), d(\"li\", { key: Q }, [\n                i(\"a\", {\n                  class: \"fr-translate__language fr-nav__link\",\n                  hreflang: H.codeIso,\n                  lang: H.codeIso,\n                  \"aria-current\": D.currentLanguage === H.codeIso ? !0 : void 0,\n                  href: `#${H.codeIso}`,\n                  onClick: U((te) => y(H), [\"prevent\", \"stop\"])\n                }, p(H.codeIso.toUpperCase() + \" - \" + H.label), 9, _l)\n              ]))), 128))\n            ])\n          ], 42, kl)\n        ])\n      ]);\n    };\n  }\n});\n/*!\n* tabbable 6.2.0\n* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE\n*/\nvar ht = [\"input:not([inert])\", \"select:not([inert])\", \"textarea:not([inert])\", \"a[href]:not([inert])\", \"button:not([inert])\", \"[tabindex]:not(slot):not([inert])\", \"audio[controls]:not([inert])\", \"video[controls]:not([inert])\", '[contenteditable]:not([contenteditable=\"false\"]):not([inert])', \"details>summary:first-of-type:not([inert])\", \"details:not([inert])\"], Ce = /* @__PURE__ */ ht.join(\",\"), vt = typeof Element > \"u\", pe = vt ? function() {\n} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector, $e = !vt && Element.prototype.getRootNode ? function(l) {\n  var e;\n  return l == null || (e = l.getRootNode) === null || e === void 0 ? void 0 : e.call(l);\n} : function(l) {\n  return l == null ? void 0 : l.ownerDocument;\n}, Le = function l(e, a) {\n  var t;\n  a === void 0 && (a = !0);\n  var n = e == null || (t = e.getAttribute) === null || t === void 0 ? void 0 : t.call(e, \"inert\"), o = n === \"\" || n === \"true\", s = o || a && e && l(e.parentNode);\n  return s;\n}, Dl = function(e) {\n  var a, t = e == null || (a = e.getAttribute) === null || a === void 0 ? void 0 : a.call(e, \"contenteditable\");\n  return t === \"\" || t === \"true\";\n}, mt = function(e, a, t) {\n  if (Le(e))\n    return [];\n  var n = Array.prototype.slice.apply(e.querySelectorAll(Ce));\n  return a && pe.call(e, Ce) && n.unshift(e), n = n.filter(t), n;\n}, gt = function l(e, a, t) {\n  for (var n = [], o = Array.from(e); o.length; ) {\n    var s = o.shift();\n    if (!Le(s, !1))\n      if (s.tagName === \"SLOT\") {\n        var u = s.assignedElements(), c = u.length ? u : s.children, f = l(c, !0, t);\n        t.flatten ? n.push.apply(n, f) : n.push({\n          scopeParent: s,\n          candidates: f\n        });\n      } else {\n        var y = pe.call(s, Ce);\n        y && t.filter(s) && (a || !e.includes(s)) && n.push(s);\n        var h = s.shadowRoot || // check for an undisclosed shadow\n        typeof t.getShadowRoot == \"function\" && t.getShadowRoot(s), D = !Le(h, !1) && (!t.shadowRootFilter || t.shadowRootFilter(s));\n        if (h && D) {\n          var v = l(h === !0 ? s.children : h.children, !0, t);\n          t.flatten ? n.push.apply(n, v) : n.push({\n            scopeParent: s,\n            candidates: v\n          });\n        } else\n          o.unshift.apply(o, s.children);\n      }\n  }\n  return n;\n}, bt = function(e) {\n  return !isNaN(parseInt(e.getAttribute(\"tabindex\"), 10));\n}, ce = function(e) {\n  if (!e)\n    throw new Error(\"No node provided\");\n  return e.tabIndex < 0 && (/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName) || Dl(e)) && !bt(e) ? 0 : e.tabIndex;\n}, Ml = function(e, a) {\n  var t = ce(e);\n  return t < 0 && a && !bt(e) ? 0 : t;\n}, zl = function(e, a) {\n  return e.tabIndex === a.tabIndex ? e.documentOrder - a.documentOrder : e.tabIndex - a.tabIndex;\n}, kt = function(e) {\n  return e.tagName === \"INPUT\";\n}, Cl = function(e) {\n  return kt(e) && e.type === \"hidden\";\n}, $l = function(e) {\n  var a = e.tagName === \"DETAILS\" && Array.prototype.slice.apply(e.children).some(function(t) {\n    return t.tagName === \"SUMMARY\";\n  });\n  return a;\n}, Ll = function(e, a) {\n  for (var t = 0; t < e.length; t++)\n    if (e[t].checked && e[t].form === a)\n      return e[t];\n}, Il = function(e) {\n  if (!e.name)\n    return !0;\n  var a = e.form || $e(e), t = function(u) {\n    return a.querySelectorAll('input[type=\"radio\"][name=\"' + u + '\"]');\n  }, n;\n  if (typeof window < \"u\" && typeof window.CSS < \"u\" && typeof window.CSS.escape == \"function\")\n    n = t(window.CSS.escape(e.name));\n  else\n    try {\n      n = t(e.name);\n    } catch (s) {\n      return console.error(\"Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s\", s.message), !1;\n    }\n  var o = Ll(n, e.form);\n  return !o || o === e;\n}, Tl = function(e) {\n  return kt(e) && e.type === \"radio\";\n}, Sl = function(e) {\n  return Tl(e) && !Il(e);\n}, El = function(e) {\n  var a, t = e && $e(e), n = (a = t) === null || a === void 0 ? void 0 : a.host, o = !1;\n  if (t && t !== e) {\n    var s, u, c;\n    for (o = !!((s = n) !== null && s !== void 0 && (u = s.ownerDocument) !== null && u !== void 0 && u.contains(n) || e != null && (c = e.ownerDocument) !== null && c !== void 0 && c.contains(e)); !o && n; ) {\n      var f, y, h;\n      t = $e(n), n = (f = t) === null || f === void 0 ? void 0 : f.host, o = !!((y = n) !== null && y !== void 0 && (h = y.ownerDocument) !== null && h !== void 0 && h.contains(n));\n    }\n  }\n  return o;\n}, Je = function(e) {\n  var a = e.getBoundingClientRect(), t = a.width, n = a.height;\n  return t === 0 && n === 0;\n}, Al = function(e, a) {\n  var t = a.displayCheck, n = a.getShadowRoot;\n  if (getComputedStyle(e).visibility === \"hidden\")\n    return !0;\n  var o = pe.call(e, \"details>summary:first-of-type\"), s = o ? e.parentElement : e;\n  if (pe.call(s, \"details:not([open]) *\"))\n    return !0;\n  if (!t || t === \"full\" || t === \"legacy-full\") {\n    if (typeof n == \"function\") {\n      for (var u = e; e; ) {\n        var c = e.parentElement, f = $e(e);\n        if (c && !c.shadowRoot && n(c) === !0)\n          return Je(e);\n        e.assignedSlot ? e = e.assignedSlot : !c && f !== e.ownerDocument ? e = f.host : e = c;\n      }\n      e = u;\n    }\n    if (El(e))\n      return !e.getClientRects().length;\n    if (t !== \"legacy-full\")\n      return !0;\n  } else if (t === \"non-zero-area\")\n    return Je(e);\n  return !1;\n}, Hl = function(e) {\n  if (/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))\n    for (var a = e.parentElement; a; ) {\n      if (a.tagName === \"FIELDSET\" && a.disabled) {\n        for (var t = 0; t < a.children.length; t++) {\n          var n = a.children.item(t);\n          if (n.tagName === \"LEGEND\")\n            return pe.call(a, \"fieldset[disabled] *\") ? !0 : !n.contains(e);\n        }\n        return !0;\n      }\n      a = a.parentElement;\n    }\n  return !1;\n}, Ie = function(e, a) {\n  return !(a.disabled || // we must do an inert look up to filter out any elements inside an inert ancestor\n  //  because we're limited in the type of selectors we can use in JSDom (see related\n  //  note related to `candidateSelectors`)\n  Le(a) || Cl(a) || Al(a, e) || // For a details element with a summary, the summary element gets the focus\n  $l(a) || Hl(a));\n}, je = function(e, a) {\n  return !(Sl(a) || ce(a) < 0 || !Ie(e, a));\n}, Bl = function(e) {\n  var a = parseInt(e.getAttribute(\"tabindex\"), 10);\n  return !!(isNaN(a) || a >= 0);\n}, Fl = function l(e) {\n  var a = [], t = [];\n  return e.forEach(function(n, o) {\n    var s = !!n.scopeParent, u = s ? n.scopeParent : n, c = Ml(u, s), f = s ? l(n.candidates) : u;\n    c === 0 ? s ? a.push.apply(a, f) : a.push(u) : t.push({\n      documentOrder: o,\n      tabIndex: c,\n      item: n,\n      isScope: s,\n      content: f\n    });\n  }), t.sort(zl).reduce(function(n, o) {\n    return o.isScope ? n.push.apply(n, o.content) : n.push(o.content), n;\n  }, []).concat(a);\n}, Rl = function(e, a) {\n  a = a || {};\n  var t;\n  return a.getShadowRoot ? t = gt([e], a.includeContainer, {\n    filter: je.bind(null, a),\n    flatten: !1,\n    getShadowRoot: a.getShadowRoot,\n    shadowRootFilter: Bl\n  }) : t = mt(e, a.includeContainer, je.bind(null, a)), Fl(t);\n}, Nl = function(e, a) {\n  a = a || {};\n  var t;\n  return a.getShadowRoot ? t = gt([e], a.includeContainer, {\n    filter: Ie.bind(null, a),\n    flatten: !0,\n    getShadowRoot: a.getShadowRoot\n  }) : t = mt(e, a.includeContainer, Ie.bind(null, a)), t;\n}, ve = function(e, a) {\n  if (a = a || {}, !e)\n    throw new Error(\"No node provided\");\n  return pe.call(e, Ce) === !1 ? !1 : je(a, e);\n}, Vl = /* @__PURE__ */ ht.concat(\"iframe\").join(\",\"), Ve = function(e, a) {\n  if (a = a || {}, !e)\n    throw new Error(\"No node provided\");\n  return pe.call(e, Vl) === !1 ? !1 : Ie(a, e);\n};\n/*!\n* focus-trap 7.5.4\n* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE\n*/\nfunction xe(l, e) {\n  var a = Object.keys(l);\n  if (Object.getOwnPropertySymbols) {\n    var t = Object.getOwnPropertySymbols(l);\n    e && (t = t.filter(function(n) {\n      return Object.getOwnPropertyDescriptor(l, n).enumerable;\n    })), a.push.apply(a, t);\n  }\n  return a;\n}\nfunction et(l) {\n  for (var e = 1; e < arguments.length; e++) {\n    var a = arguments[e] != null ? arguments[e] : {};\n    e % 2 ? xe(Object(a), !0).forEach(function(t) {\n      Pl(l, t, a[t]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(l, Object.getOwnPropertyDescriptors(a)) : xe(Object(a)).forEach(function(t) {\n      Object.defineProperty(l, t, Object.getOwnPropertyDescriptor(a, t));\n    });\n  }\n  return l;\n}\nfunction Pl(l, e, a) {\n  return e = Yl(e), e in l ? Object.defineProperty(l, e, {\n    value: a,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : l[e] = a, l;\n}\nfunction Xl(l, e) {\n  if (typeof l != \"object\" || l === null)\n    return l;\n  var a = l[Symbol.toPrimitive];\n  if (a !== void 0) {\n    var t = a.call(l, e || \"default\");\n    if (typeof t != \"object\")\n      return t;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (e === \"string\" ? String : Number)(l);\n}\nfunction Yl(l) {\n  var e = Xl(l, \"string\");\n  return typeof e == \"symbol\" ? e : String(e);\n}\nvar tt = {\n  activateTrap: function(e, a) {\n    if (e.length > 0) {\n      var t = e[e.length - 1];\n      t !== a && t.pause();\n    }\n    var n = e.indexOf(a);\n    n === -1 || e.splice(n, 1), e.push(a);\n  },\n  deactivateTrap: function(e, a) {\n    var t = e.indexOf(a);\n    t !== -1 && e.splice(t, 1), e.length > 0 && e[e.length - 1].unpause();\n  }\n}, jl = function(e) {\n  return e.tagName && e.tagName.toLowerCase() === \"input\" && typeof e.select == \"function\";\n}, Ol = function(e) {\n  return (e == null ? void 0 : e.key) === \"Escape\" || (e == null ? void 0 : e.key) === \"Esc\" || (e == null ? void 0 : e.keyCode) === 27;\n}, _e = function(e) {\n  return (e == null ? void 0 : e.key) === \"Tab\" || (e == null ? void 0 : e.keyCode) === 9;\n}, Ql = function(e) {\n  return _e(e) && !e.shiftKey;\n}, ql = function(e) {\n  return _e(e) && e.shiftKey;\n}, at = function(e) {\n  return setTimeout(e, 0);\n}, nt = function(e, a) {\n  var t = -1;\n  return e.every(function(n, o) {\n    return a(n) ? (t = o, !1) : !0;\n  }), t;\n}, ke = function(e) {\n  for (var a = arguments.length, t = new Array(a > 1 ? a - 1 : 0), n = 1; n < a; n++)\n    t[n - 1] = arguments[n];\n  return typeof e == \"function\" ? e.apply(void 0, t) : e;\n}, De = function(e) {\n  return e.target.shadowRoot && typeof e.composedPath == \"function\" ? e.composedPath()[0] : e.target;\n}, Gl = [], Kl = function(e, a) {\n  var t = (a == null ? void 0 : a.document) || document, n = (a == null ? void 0 : a.trapStack) || Gl, o = et({\n    returnFocusOnDeactivate: !0,\n    escapeDeactivates: !0,\n    delayInitialFocus: !0,\n    isKeyForward: Ql,\n    isKeyBackward: ql\n  }, a), s = {\n    // containers given to createFocusTrap()\n    // @type {Array<HTMLElement>}\n    containers: [],\n    // list of objects identifying tabbable nodes in `containers` in the trap\n    // NOTE: it's possible that a group has no tabbable nodes if nodes get removed while the trap\n    //  is active, but the trap should never get to a state where there isn't at least one group\n    //  with at least one tabbable node in it (that would lead to an error condition that would\n    //  result in an error being thrown)\n    // @type {Array<{\n    //   container: HTMLElement,\n    //   tabbableNodes: Array<HTMLElement>, // empty if none\n    //   focusableNodes: Array<HTMLElement>, // empty if none\n    //   posTabIndexesFound: boolean,\n    //   firstTabbableNode: HTMLElement|undefined,\n    //   lastTabbableNode: HTMLElement|undefined,\n    //   firstDomTabbableNode: HTMLElement|undefined,\n    //   lastDomTabbableNode: HTMLElement|undefined,\n    //   nextTabbableNode: (node: HTMLElement, forward: boolean) => HTMLElement|undefined\n    // }>}\n    containerGroups: [],\n    // same order/length as `containers` list\n    // references to objects in `containerGroups`, but only those that actually have\n    //  tabbable nodes in them\n    // NOTE: same order as `containers` and `containerGroups`, but __not necessarily__\n    //  the same length\n    tabbableGroups: [],\n    nodeFocusedBeforeActivation: null,\n    mostRecentlyFocusedNode: null,\n    active: !1,\n    paused: !1,\n    // timer ID for when delayInitialFocus is true and initial focus in this trap\n    //  has been delayed during activation\n    delayInitialFocusTimer: void 0,\n    // the most recent KeyboardEvent for the configured nav key (typically [SHIFT+]TAB), if any\n    recentNavEvent: void 0\n  }, u, c = function(b, g, $) {\n    return b && b[g] !== void 0 ? b[g] : o[$ || g];\n  }, f = function(b, g) {\n    var $ = typeof (g == null ? void 0 : g.composedPath) == \"function\" ? g.composedPath() : void 0;\n    return s.containerGroups.findIndex(function(V) {\n      var P = V.container, O = V.tabbableNodes;\n      return P.contains(b) || // fall back to explicit tabbable search which will take into consideration any\n      //  web components if the `tabbableOptions.getShadowRoot` option was used for\n      //  the trap, enabling shadow DOM support in tabbable (`Node.contains()` doesn't\n      //  look inside web components even if open)\n      ($ == null ? void 0 : $.includes(P)) || O.find(function(K) {\n        return K === b;\n      });\n    });\n  }, y = function(b) {\n    var g = o[b];\n    if (typeof g == \"function\") {\n      for (var $ = arguments.length, V = new Array($ > 1 ? $ - 1 : 0), P = 1; P < $; P++)\n        V[P - 1] = arguments[P];\n      g = g.apply(void 0, V);\n    }\n    if (g === !0 && (g = void 0), !g) {\n      if (g === void 0 || g === !1)\n        return g;\n      throw new Error(\"`\".concat(b, \"` was specified but was not a node, or did not return a node\"));\n    }\n    var O = g;\n    if (typeof g == \"string\" && (O = t.querySelector(g), !O))\n      throw new Error(\"`\".concat(b, \"` as selector refers to no known node\"));\n    return O;\n  }, h = function() {\n    var b = y(\"initialFocus\");\n    if (b === !1)\n      return !1;\n    if (b === void 0 || !Ve(b, o.tabbableOptions))\n      if (f(t.activeElement) >= 0)\n        b = t.activeElement;\n      else {\n        var g = s.tabbableGroups[0], $ = g && g.firstTabbableNode;\n        b = $ || y(\"fallbackFocus\");\n      }\n    if (!b)\n      throw new Error(\"Your focus-trap needs to have at least one focusable element\");\n    return b;\n  }, D = function() {\n    if (s.containerGroups = s.containers.map(function(b) {\n      var g = Rl(b, o.tabbableOptions), $ = Nl(b, o.tabbableOptions), V = g.length > 0 ? g[0] : void 0, P = g.length > 0 ? g[g.length - 1] : void 0, O = $.find(function(W) {\n        return ve(W);\n      }), K = $.slice().reverse().find(function(W) {\n        return ve(W);\n      }), Z = !!g.find(function(W) {\n        return ce(W) > 0;\n      });\n      return {\n        container: b,\n        tabbableNodes: g,\n        focusableNodes: $,\n        /** True if at least one node with positive `tabindex` was found in this container. */\n        posTabIndexesFound: Z,\n        /** First tabbable node in container, __tabindex__ order; `undefined` if none. */\n        firstTabbableNode: V,\n        /** Last tabbable node in container, __tabindex__ order; `undefined` if none. */\n        lastTabbableNode: P,\n        // NOTE: DOM order is NOT NECESSARILY \"document position\" order, but figuring that out\n        //  would require more than just https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n        //  because that API doesn't work with Shadow DOM as well as it should (@see\n        //  https://github.com/whatwg/dom/issues/320) and since this first/last is only needed, so far,\n        //  to address an edge case related to positive tabindex support, this seems like a much easier,\n        //  \"close enough most of the time\" alternative for positive tabindexes which should generally\n        //  be avoided anyway...\n        /** First tabbable node in container, __DOM__ order; `undefined` if none. */\n        firstDomTabbableNode: O,\n        /** Last tabbable node in container, __DOM__ order; `undefined` if none. */\n        lastDomTabbableNode: K,\n        /**\n         * Finds the __tabbable__ node that follows the given node in the specified direction,\n         *  in this container, if any.\n         * @param {HTMLElement} node\n         * @param {boolean} [forward] True if going in forward tab order; false if going\n         *  in reverse.\n         * @returns {HTMLElement|undefined} The next tabbable node, if any.\n         */\n        nextTabbableNode: function(de) {\n          var ge = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !0, ie = g.indexOf(de);\n          return ie < 0 ? ge ? $.slice($.indexOf(de) + 1).find(function(be) {\n            return ve(be);\n          }) : $.slice(0, $.indexOf(de)).reverse().find(function(be) {\n            return ve(be);\n          }) : g[ie + (ge ? 1 : -1)];\n        }\n      };\n    }), s.tabbableGroups = s.containerGroups.filter(function(b) {\n      return b.tabbableNodes.length > 0;\n    }), s.tabbableGroups.length <= 0 && !y(\"fallbackFocus\"))\n      throw new Error(\"Your focus-trap must have at least one container with at least one tabbable node in it at all times\");\n    if (s.containerGroups.find(function(b) {\n      return b.posTabIndexesFound;\n    }) && s.containerGroups.length > 1)\n      throw new Error(\"At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.\");\n  }, v = function j(b) {\n    var g = b.activeElement;\n    if (g)\n      return g.shadowRoot && g.shadowRoot.activeElement !== null ? j(g.shadowRoot) : g;\n  }, k = function j(b) {\n    if (b !== !1 && b !== v(document)) {\n      if (!b || !b.focus) {\n        j(h());\n        return;\n      }\n      b.focus({\n        preventScroll: !!o.preventScroll\n      }), s.mostRecentlyFocusedNode = b, jl(b) && b.select();\n    }\n  }, E = function(b) {\n    var g = y(\"setReturnFocus\", b);\n    return g || (g === !1 ? !1 : b);\n  }, H = function(b) {\n    var g = b.target, $ = b.event, V = b.isBackward, P = V === void 0 ? !1 : V;\n    g = g || De($), D();\n    var O = null;\n    if (s.tabbableGroups.length > 0) {\n      var K = f(g, $), Z = K >= 0 ? s.containerGroups[K] : void 0;\n      if (K < 0)\n        P ? O = s.tabbableGroups[s.tabbableGroups.length - 1].lastTabbableNode : O = s.tabbableGroups[0].firstTabbableNode;\n      else if (P) {\n        var W = nt(s.tabbableGroups, function(Re) {\n          var Ne = Re.firstTabbableNode;\n          return g === Ne;\n        });\n        if (W < 0 && (Z.container === g || Ve(g, o.tabbableOptions) && !ve(g, o.tabbableOptions) && !Z.nextTabbableNode(g, !1)) && (W = K), W >= 0) {\n          var de = W === 0 ? s.tabbableGroups.length - 1 : W - 1, ge = s.tabbableGroups[de];\n          O = ce(g) >= 0 ? ge.lastTabbableNode : ge.lastDomTabbableNode;\n        } else\n          _e($) || (O = Z.nextTabbableNode(g, !1));\n      } else {\n        var ie = nt(s.tabbableGroups, function(Re) {\n          var Ne = Re.lastTabbableNode;\n          return g === Ne;\n        });\n        if (ie < 0 && (Z.container === g || Ve(g, o.tabbableOptions) && !ve(g, o.tabbableOptions) && !Z.nextTabbableNode(g)) && (ie = K), ie >= 0) {\n          var be = ie === s.tabbableGroups.length - 1 ? 0 : ie + 1, Ge = s.tabbableGroups[be];\n          O = ce(g) >= 0 ? Ge.firstTabbableNode : Ge.firstDomTabbableNode;\n        } else\n          _e($) || (O = Z.nextTabbableNode(g));\n      }\n    } else\n      O = y(\"fallbackFocus\");\n    return O;\n  }, Q = function(b) {\n    var g = De(b);\n    if (!(f(g, b) >= 0)) {\n      if (ke(o.clickOutsideDeactivates, b)) {\n        u.deactivate({\n          // NOTE: by setting `returnFocus: false`, deactivate() will do nothing,\n          //  which will result in the outside click setting focus to the node\n          //  that was clicked (and if not focusable, to \"nothing\"); by setting\n          //  `returnFocus: true`, we'll attempt to re-focus the node originally-focused\n          //  on activation (or the configured `setReturnFocus` node), whether the\n          //  outside click was on a focusable node or not\n          returnFocus: o.returnFocusOnDeactivate\n        });\n        return;\n      }\n      ke(o.allowOutsideClick, b) || b.preventDefault();\n    }\n  }, te = function(b) {\n    var g = De(b), $ = f(g, b) >= 0;\n    if ($ || g instanceof Document)\n      $ && (s.mostRecentlyFocusedNode = g);\n    else {\n      b.stopImmediatePropagation();\n      var V, P = !0;\n      if (s.mostRecentlyFocusedNode)\n        if (ce(s.mostRecentlyFocusedNode) > 0) {\n          var O = f(s.mostRecentlyFocusedNode), K = s.containerGroups[O].tabbableNodes;\n          if (K.length > 0) {\n            var Z = K.findIndex(function(W) {\n              return W === s.mostRecentlyFocusedNode;\n            });\n            Z >= 0 && (o.isKeyForward(s.recentNavEvent) ? Z + 1 < K.length && (V = K[Z + 1], P = !1) : Z - 1 >= 0 && (V = K[Z - 1], P = !1));\n          }\n        } else\n          s.containerGroups.some(function(W) {\n            return W.tabbableNodes.some(function(de) {\n              return ce(de) > 0;\n            });\n          }) || (P = !1);\n      else\n        P = !1;\n      P && (V = H({\n        // move FROM the MRU node, not event-related node (which will be the node that is\n        //  outside the trap causing the focus escape we're trying to fix)\n        target: s.mostRecentlyFocusedNode,\n        isBackward: o.isKeyBackward(s.recentNavEvent)\n      })), k(V || s.mostRecentlyFocusedNode || h());\n    }\n    s.recentNavEvent = void 0;\n  }, I = function(b) {\n    var g = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1;\n    s.recentNavEvent = b;\n    var $ = H({\n      event: b,\n      isBackward: g\n    });\n    $ && (_e(b) && b.preventDefault(), k($));\n  }, S = function(b) {\n    if (Ol(b) && ke(o.escapeDeactivates, b) !== !1) {\n      b.preventDefault(), u.deactivate();\n      return;\n    }\n    (o.isKeyForward(b) || o.isKeyBackward(b)) && I(b, o.isKeyBackward(b));\n  }, q = function(b) {\n    var g = De(b);\n    f(g, b) >= 0 || ke(o.clickOutsideDeactivates, b) || ke(o.allowOutsideClick, b) || (b.preventDefault(), b.stopImmediatePropagation());\n  }, G = function() {\n    if (s.active)\n      return tt.activateTrap(n, u), s.delayInitialFocusTimer = o.delayInitialFocus ? at(function() {\n        k(h());\n      }) : k(h()), t.addEventListener(\"focusin\", te, !0), t.addEventListener(\"mousedown\", Q, {\n        capture: !0,\n        passive: !1\n      }), t.addEventListener(\"touchstart\", Q, {\n        capture: !0,\n        passive: !1\n      }), t.addEventListener(\"click\", q, {\n        capture: !0,\n        passive: !1\n      }), t.addEventListener(\"keydown\", S, {\n        capture: !0,\n        passive: !1\n      }), u;\n  }, x = function() {\n    if (s.active)\n      return t.removeEventListener(\"focusin\", te, !0), t.removeEventListener(\"mousedown\", Q, !0), t.removeEventListener(\"touchstart\", Q, !0), t.removeEventListener(\"click\", q, !0), t.removeEventListener(\"keydown\", S, !0), u;\n  }, we = function(b) {\n    var g = b.some(function($) {\n      var V = Array.from($.removedNodes);\n      return V.some(function(P) {\n        return P === s.mostRecentlyFocusedNode;\n      });\n    });\n    g && k(h());\n  }, he = typeof window < \"u\" && \"MutationObserver\" in window ? new MutationObserver(we) : void 0, se = function() {\n    he && (he.disconnect(), s.active && !s.paused && s.containers.map(function(b) {\n      he.observe(b, {\n        subtree: !0,\n        childList: !0\n      });\n    }));\n  };\n  return u = {\n    get active() {\n      return s.active;\n    },\n    get paused() {\n      return s.paused;\n    },\n    activate: function(b) {\n      if (s.active)\n        return this;\n      var g = c(b, \"onActivate\"), $ = c(b, \"onPostActivate\"), V = c(b, \"checkCanFocusTrap\");\n      V || D(), s.active = !0, s.paused = !1, s.nodeFocusedBeforeActivation = t.activeElement, g == null || g();\n      var P = function() {\n        V && D(), G(), se(), $ == null || $();\n      };\n      return V ? (V(s.containers.concat()).then(P, P), this) : (P(), this);\n    },\n    deactivate: function(b) {\n      if (!s.active)\n        return this;\n      var g = et({\n        onDeactivate: o.onDeactivate,\n        onPostDeactivate: o.onPostDeactivate,\n        checkCanReturnFocus: o.checkCanReturnFocus\n      }, b);\n      clearTimeout(s.delayInitialFocusTimer), s.delayInitialFocusTimer = void 0, x(), s.active = !1, s.paused = !1, se(), tt.deactivateTrap(n, u);\n      var $ = c(g, \"onDeactivate\"), V = c(g, \"onPostDeactivate\"), P = c(g, \"checkCanReturnFocus\"), O = c(g, \"returnFocus\", \"returnFocusOnDeactivate\");\n      $ == null || $();\n      var K = function() {\n        at(function() {\n          O && k(E(s.nodeFocusedBeforeActivation)), V == null || V();\n        });\n      };\n      return O && P ? (P(E(s.nodeFocusedBeforeActivation)).then(K, K), this) : (K(), this);\n    },\n    pause: function(b) {\n      if (s.paused || !s.active)\n        return this;\n      var g = c(b, \"onPause\"), $ = c(b, \"onPostPause\");\n      return s.paused = !0, g == null || g(), x(), se(), $ == null || $(), this;\n    },\n    unpause: function(b) {\n      if (!s.paused || !s.active)\n        return this;\n      var g = c(b, \"onUnpause\"), $ = c(b, \"onPostUnpause\");\n      return s.paused = !1, g == null || g(), D(), G(), se(), $ == null || $(), this;\n    },\n    updateContainerElements: function(b) {\n      var g = [].concat(b).filter(Boolean);\n      return s.containers = g.map(function($) {\n        return typeof $ == \"string\" ? t.querySelector($) : $;\n      }), s.active && D(), se(), this;\n    }\n  }, u.updateContainerElements(e), u;\n};\n/*!\n  * focus-trap-vue v4.0.2\n  * (c) 2023 Eduardo San Martin Morote\n  * @license MIT\n  */\nconst Ul = {\n  escapeDeactivates: {\n    type: Boolean,\n    default: !0\n  },\n  returnFocusOnDeactivate: {\n    type: Boolean,\n    default: !0\n  },\n  allowOutsideClick: {\n    type: [Boolean, Function],\n    default: !0\n  },\n  clickOutsideDeactivates: [Boolean, Function],\n  initialFocus: [String, Function, Boolean],\n  fallbackFocus: [String, Function],\n  checkCanFocusTrap: Function,\n  checkCanReturnFocus: Function,\n  delayInitialFocus: {\n    type: Boolean,\n    default: !0\n  },\n  document: Object,\n  preventScroll: Boolean,\n  setReturnFocus: [Object, String, Boolean, Function],\n  tabbableOptions: Object\n}, Wl = w({\n  props: Object.assign({\n    active: {\n      // TODO: could be options for activate but what about the options for deactivating?\n      type: Boolean,\n      default: !0\n    }\n  }, Ul),\n  emits: [\n    \"update:active\",\n    \"activate\",\n    \"postActivate\",\n    \"deactivate\",\n    \"postDeactivate\"\n  ],\n  render() {\n    return this.renderImpl();\n  },\n  setup(l, { slots: e, emit: a }) {\n    let t;\n    const n = R(null), o = _(() => {\n      const u = n.value;\n      return u && (u instanceof HTMLElement ? u : u.$el);\n    });\n    function s() {\n      return t || (t = Kl(o.value, {\n        escapeDeactivates: l.escapeDeactivates,\n        allowOutsideClick: l.allowOutsideClick,\n        returnFocusOnDeactivate: l.returnFocusOnDeactivate,\n        clickOutsideDeactivates: l.clickOutsideDeactivates,\n        onActivate: () => {\n          a(\"update:active\", !0), a(\"activate\");\n        },\n        onDeactivate: () => {\n          a(\"update:active\", !1), a(\"deactivate\");\n        },\n        onPostActivate: () => a(\"postActivate\"),\n        onPostDeactivate: () => a(\"postDeactivate\"),\n        initialFocus: l.initialFocus,\n        fallbackFocus: l.fallbackFocus,\n        tabbableOptions: l.tabbableOptions,\n        delayInitialFocus: l.delayInitialFocus,\n        preventScroll: l.preventScroll\n      }));\n    }\n    return le(() => {\n      ae(() => l.active, (u) => {\n        u && o.value ? s().activate() : t && (t.deactivate(), (!o.value || o.value.nodeType === Node.COMMENT_NODE) && (t = null));\n      }, { immediate: !0, flush: \"post\" });\n    }), Ae(() => {\n      t && t.deactivate(), t = null;\n    }), {\n      activate() {\n        s().activate();\n      },\n      deactivate() {\n        t && t.deactivate();\n      },\n      renderImpl() {\n        if (!e.default)\n          return null;\n        const u = e.default().filter((f) => f.type !== Pt);\n        return !u || !u.length || u.length > 1 ? (console.error(\"[focus-trap-vue]: FocusTrap requires exactly one child.\"), u) : Xt(u[0], { ref: n });\n      }\n    };\n  }\n}), Zl = (l) => (Te(\"data-v-85f0c4b0\"), l = l(), Se(), l), Jl = [\"aria-labelledby\", \"role\", \"open\"], xl = { class: \"fr-container fr-container--fluid fr-container-md\" }, es = { class: \"fr-grid-row fr-grid-row--center\" }, ts = { class: \"fr-modal__body\" }, as = { class: \"fr-modal__header\" }, ns = /* @__PURE__ */ Zl(() => /* @__PURE__ */ i(\"span\", null, \" Fermer \", -1)), rs = [\n  ns\n], ls = { class: \"fr-modal__content\" }, ss = [\"id\"], is = { key: 0 }, os = {\n  key: 0,\n  class: \"fr-modal__footer\"\n}, ds = /* @__PURE__ */ w({\n  __name: \"DsfrModal\",\n  props: {\n    modalId: { default: () => Y(\"modal\", \"dialog\") },\n    opened: { type: Boolean },\n    actions: { default: () => [] },\n    isAlert: { type: Boolean },\n    origin: { default: () => ({ focus() {\n    } }) },\n    title: {},\n    icon: { default: void 0 },\n    size: { default: \"md\" }\n  },\n  emits: [\"close\"],\n  setup(l, { emit: e }) {\n    const a = l, t = e, n = (h) => {\n      h.key === \"Escape\" && y();\n    }, o = _(() => a.isAlert ? \"alertdialog\" : \"dialog\"), s = R(null);\n    ae(() => a.opened, (h) => {\n      var D, v;\n      h ? (document.body.classList.add(\"modal-open\"), (D = u.value) == null || D.showModal(), setTimeout(() => {\n        var k;\n        (k = s.value) == null || k.focus();\n      }, 100)) : (document.body.classList.remove(\"modal-open\"), (v = u.value) == null || v.close());\n    });\n    const u = R();\n    le(() => {\n      c();\n    }), Yt(() => {\n      f();\n    });\n    function c() {\n      document.addEventListener(\"keydown\", n);\n    }\n    function f() {\n      document.removeEventListener(\"keydown\", n);\n    }\n    async function y() {\n      var h;\n      await jt(), (h = a.origin) == null || h.focus(), t(\"close\");\n    }\n    return (h, D) => {\n      const v = ne(\"VIcon\");\n      return h.opened ? (r(), z(B(Wl), { key: 0 }, {\n        default: A(() => [\n          i(\"dialog\", {\n            id: \"fr-modal-1\",\n            ref_key: \"modal\",\n            ref: u,\n            \"aria-labelledby\": h.modalId,\n            role: o.value,\n            class: C([\"fr-modal\", { \"fr-modal--opened\": h.opened }]),\n            open: h.opened\n          }, [\n            i(\"div\", xl, [\n              i(\"div\", es, [\n                i(\"div\", {\n                  class: C([\"fr-col-12\", {\n                    \"fr-col-md-8\": h.size === \"lg\",\n                    \"fr-col-md-6\": h.size === \"md\",\n                    \"fr-col-md-4\": h.size === \"sm\"\n                  }])\n                }, [\n                  i(\"div\", ts, [\n                    i(\"div\", as, [\n                      i(\"button\", {\n                        ref_key: \"closeBtn\",\n                        ref: s,\n                        class: \"fr-btn fr-btn--close\",\n                        title: \"Fermer la fenêtre modale\",\n                        \"aria-controls\": \"fr-modal-1\",\n                        type: \"button\",\n                        onClick: D[0] || (D[0] = (k) => y())\n                      }, rs, 512)\n                    ]),\n                    i(\"div\", ls, [\n                      i(\"h1\", {\n                        id: h.modalId,\n                        class: \"fr-modal__title\"\n                      }, [\n                        h.icon ? (r(), d(\"span\", is, [\n                          X(v, {\n                            name: h.icon,\n                            scale: \"2\"\n                          }, null, 8, [\"name\"])\n                        ])) : m(\"\", !0),\n                        L(\" \" + p(h.title), 1)\n                      ], 8, ss),\n                      M(h.$slots, \"default\", {}, void 0, !0)\n                    ]),\n                    h.actions && h.actions.length ? (r(), d(\"div\", os, [\n                      X(Be, {\n                        align: \"right\",\n                        buttons: h.actions,\n                        \"inline-layout-when\": \"large\",\n                        reverse: \"\"\n                      }, null, 8, [\"buttons\"])\n                    ])) : m(\"\", !0)\n                  ])\n                ], 2)\n              ])\n            ])\n          ], 10, Jl)\n        ]),\n        _: 3\n      })) : m(\"\", !0);\n    };\n  }\n}), us = /* @__PURE__ */ ee(ds, [[\"__scopeId\", \"data-v-85f0c4b0\"]]), cs = [\"id\", \"aria-current\"], fs = /* @__PURE__ */ w({\n  __name: \"DsfrNavigationItem\",\n  props: {\n    id: { default: () => Y(\"nav\", \"item\") },\n    active: { type: Boolean }\n  },\n  setup(l) {\n    return (e, a) => (r(), d(\"li\", {\n      id: e.id,\n      class: \"fr-nav__item\",\n      \"aria-current\": e.active ? \"page\" : void 0\n    }, [\n      M(e.$slots, \"default\", {}, void 0, !0)\n    ], 8, cs));\n  }\n}), yt = /* @__PURE__ */ ee(fs, [[\"__scopeId\", \"data-v-4cedeb00\"]]), ps = [\"href\"], Fe = /* @__PURE__ */ w({\n  __name: \"DsfrNavigationMenuLink\",\n  props: {\n    id: { default: () => Y(\"menu-link\") },\n    to: { default: \"#\" },\n    text: { default: \"\" },\n    icon: { default: void 0 },\n    onClick: { type: Function, default: () => {\n    } }\n  },\n  emits: [\"toggle-id\"],\n  setup(l) {\n    const e = l, a = _(() => typeof e.to == \"string\" && e.to.startsWith(\"http\"));\n    return (t, n) => {\n      const o = ne(\"RouterLink\");\n      return a.value ? (r(), d(\"a\", {\n        key: 0,\n        class: \"fr-nav__link\",\n        \"data-testid\": \"nav-external-link\",\n        href: t.to,\n        onClick: n[0] || (n[0] = (s) => t.$emit(\"toggle-id\", t.id))\n      }, p(t.text), 9, ps)) : (r(), z(o, {\n        key: 1,\n        class: \"fr-nav__link\",\n        \"data-testid\": \"nav-router-link\",\n        to: t.to,\n        onClick: n[1] || (n[1] = (s) => t.$emit(\"toggle-id\", t.id))\n      }, {\n        default: A(() => [\n          t.icon ? (r(), z(B(fe), {\n            key: 0,\n            name: t.icon\n          }, null, 8, [\"name\"])) : m(\"\", !0),\n          L(\" \" + p(t.text), 1)\n        ]),\n        _: 1\n      }, 8, [\"to\"]));\n    };\n  }\n}), hs = [\"id\", \"aria-current\"], _t = /* @__PURE__ */ w({\n  __name: \"DsfrNavigationMenuItem\",\n  props: {\n    id: { default: () => Y(\"menu\", \"item\") },\n    active: { type: Boolean }\n  },\n  setup(l) {\n    return (e, a) => (r(), d(\"li\", {\n      id: e.id,\n      class: \"fr-menu__item\",\n      \"aria-current\": e.active ? \"page\" : void 0\n    }, [\n      M(e.$slots, \"default\")\n    ], 8, hs));\n  }\n}), vs = [\"aria-expanded\", \"aria-current\", \"aria-controls\"], ms = [\"id\"], gs = {\n  ref: \"menuList\",\n  class: \"fr-menu__list\"\n}, wt = /* @__PURE__ */ w({\n  __name: \"DsfrNavigationMenu\",\n  props: {\n    id: { default: () => Y(\"menu\") },\n    title: {},\n    links: { default: () => [] },\n    expandedId: { default: \"\" },\n    active: { type: Boolean }\n  },\n  emits: [\"toggle-id\"],\n  setup(l) {\n    const {\n      collapse: e,\n      collapsing: a,\n      cssExpanded: t,\n      doExpand: n,\n      onTransitionEnd: o\n    } = oe(), s = l, u = _(() => s.id === s.expandedId);\n    return ae(u, (c, f) => {\n      c !== f && n(c);\n    }), le(() => {\n      u.value && n(!0);\n    }), (c, f) => (r(), d(T, null, [\n      i(\"button\", {\n        class: \"fr-nav__btn\",\n        \"aria-expanded\": u.value,\n        \"aria-current\": c.active || void 0,\n        \"aria-controls\": c.id,\n        onClick: f[0] || (f[0] = (y) => c.$emit(\"toggle-id\", c.id))\n      }, [\n        i(\"span\", null, p(c.title), 1)\n      ], 8, vs),\n      i(\"div\", {\n        id: c.id,\n        ref_key: \"collapse\",\n        ref: e,\n        class: C([\"fr-collapse fr-menu\", { \"fr-collapse--expanded\": B(t), \"fr-collapsing\": B(a) }]),\n        \"data-testid\": \"navigation-menu\",\n        onTransitionend: f[2] || (f[2] = (y) => B(o)(u.value))\n      }, [\n        i(\"ul\", gs, [\n          M(c.$slots, \"default\"),\n          (r(!0), d(T, null, F(c.links, (y, h) => (r(), z(_t, { key: h }, {\n            default: A(() => [\n              X(Fe, N(y, {\n                onToggleId: f[1] || (f[1] = (D) => c.$emit(\"toggle-id\", c.expandedId))\n              }), null, 16)\n            ]),\n            _: 2\n          }, 1024))), 128))\n        ], 512)\n      ], 42, ms)\n    ], 64));\n  }\n}), bs = { class: \"fr-col-12 fr-col-lg-3\" }, ks = { class: \"fr-mega-menu__category\" }, ys = { class: \"fr-mega-menu__list\" }, Dt = /* @__PURE__ */ w({\n  __name: \"DsfrNavigationMegaMenuCategory\",\n  props: {\n    title: {},\n    links: {}\n  },\n  setup(l) {\n    return (e, a) => (r(), d(\"div\", bs, [\n      i(\"h5\", ks, [\n        i(\"a\", {\n          class: \"fr-nav__link\",\n          href: \"#\",\n          onClick: a[0] || (a[0] = U(() => {\n          }, [\"prevent\"]))\n        }, p(e.title), 1)\n      ]),\n      i(\"ul\", ys, [\n        (r(!0), d(T, null, F(e.links, (t, n) => (r(), d(\"li\", {\n          key: n,\n          class: \"fr-nav__link\"\n        }, [\n          X(Fe, re(Ee(t)), null, 16)\n        ]))), 128))\n      ])\n    ]));\n  }\n}), _s = [\"aria-expanded\", \"aria-current\", \"aria-controls\"], ws = [\"id\"], Ds = { class: \"fr-container fr-container--fluid fr-container-lg\" }, Ms = {\n  ref: \"megaMenuList\",\n  class: \"fr-grid-row fr-grid-row-lg--gutters\"\n}, zs = { class: \"fr-col-12 fr-col-lg-8 fr-col-offset-lg-4--right fr-mb-4v\" }, Cs = { class: \"fr-mega-menu__leader\" }, $s = { class: \"fr-h4 fr-mb-2v\" }, Ls = { class: \"fr-hidden fr-displayed-lg\" }, Is = /* @__PURE__ */ w({\n  __name: \"DsfrNavigationMegaMenu\",\n  props: {\n    id: { default: () => Y(\"menu\") },\n    title: {},\n    description: { default: \"\" },\n    link: { default: () => ({ to: \"#\", text: \"Voir toute la rubrique\" }) },\n    menus: { default: () => [] },\n    expandedId: { default: \"\" },\n    active: { type: Boolean }\n  },\n  emits: [\"toggle-id\"],\n  setup(l) {\n    const e = l, {\n      collapse: a,\n      collapsing: t,\n      cssExpanded: n,\n      doExpand: o,\n      onTransitionEnd: s\n    } = oe(), u = _(() => e.id === e.expandedId);\n    return ae(u, (c, f) => {\n      c !== f && o(c);\n    }), le(() => {\n      u.value && o(!0);\n    }), (c, f) => {\n      const y = ne(\"RouterLink\");\n      return r(), d(T, null, [\n        i(\"button\", {\n          class: \"fr-nav__btn\",\n          \"aria-expanded\": u.value,\n          \"aria-current\": c.active || void 0,\n          \"aria-controls\": c.id,\n          onClick: f[0] || (f[0] = (h) => c.$emit(\"toggle-id\", c.id))\n        }, p(c.title), 9, _s),\n        i(\"div\", {\n          id: c.id,\n          ref_key: \"collapse\",\n          ref: a,\n          \"data-testid\": \"mega-menu-wrapper\",\n          class: C([\"fr-collapse fr-mega-menu\", {\n            \"fr-collapse--expanded\": B(n),\n            // Need to use a separate data to add/remove the class after a RAF\n            \"fr-collapsing\": B(t)\n          }]),\n          tabindex: \"-1\",\n          onTransitionend: f[2] || (f[2] = (h) => B(s)(u.value))\n        }, [\n          i(\"div\", Ds, [\n            i(\"button\", {\n              class: \"fr-link--close fr-link\",\n              \"aria-controls\": \"mega-menu-695\",\n              onClick: f[1] || (f[1] = (h) => c.$emit(\"toggle-id\", c.id))\n            }, \" Fermer \"),\n            i(\"div\", Ms, [\n              i(\"div\", zs, [\n                i(\"div\", Cs, [\n                  i(\"h4\", $s, p(c.title), 1),\n                  i(\"p\", Ls, [\n                    L(p(c.description) + \" \", 1),\n                    M(c.$slots, \"description\", {}, void 0, !0)\n                  ]),\n                  X(y, {\n                    class: \"fr-link fr-icon-arrow-right-line fr-link--icon-right fr-link--align-on-content\",\n                    to: c.link.to\n                  }, {\n                    default: A(() => [\n                      L(p(c.link.text), 1)\n                    ]),\n                    _: 1\n                  }, 8, [\"to\"])\n                ])\n              ]),\n              M(c.$slots, \"default\", {}, void 0, !0),\n              (r(!0), d(T, null, F(c.menus, (h, D) => (r(), z(Dt, N({ key: D }, h), null, 16))), 128))\n            ], 512)\n          ])\n        ], 42, ws)\n      ], 64);\n    };\n  }\n}), Mt = /* @__PURE__ */ ee(Is, [[\"__scopeId\", \"data-v-fd96bc35\"]]), Ts = [\"id\", \"aria-label\"], Ss = { class: \"fr-nav__list\" }, Es = /* @__PURE__ */ w({\n  __name: \"DsfrNavigation\",\n  props: {\n    id: { default: () => Y(\"menu\") },\n    label: { default: \"Menu principal\" },\n    navItems: { default: () => [] }\n  },\n  setup(l) {\n    const e = l, a = R(void 0), t = (u) => {\n      if (u === a.value) {\n        a.value = void 0;\n        return;\n      }\n      a.value = u;\n    }, n = (u) => {\n      s(u.target);\n    }, o = (u) => {\n      u.key === \"Escape\" && t(a.value);\n    }, s = (u) => {\n      if (u !== document.getElementById(e.id)) {\n        if (!(u != null && u.parentNode)) {\n          t(a.value);\n          return;\n        }\n        s(u.parentNode);\n      }\n    };\n    return le(() => {\n      document.addEventListener(\"click\", n), document.addEventListener(\"keydown\", o);\n    }), Ae(() => {\n      document.removeEventListener(\"click\", n), document.removeEventListener(\"keydown\", o);\n    }), (u, c) => (r(), d(\"nav\", {\n      id: u.id,\n      class: \"fr-nav\",\n      role: \"navigation\",\n      \"aria-label\": u.label\n    }, [\n      i(\"ul\", Ss, [\n        M(u.$slots, \"default\"),\n        (r(!0), d(T, null, F(u.navItems, (f, y) => (r(), z(yt, { key: y }, {\n          default: A(() => [\n            f.to && f.text ? (r(), z(Fe, N({ key: 0 }, f, {\n              \"expanded-id\": a.value,\n              onToggleId: c[0] || (c[0] = (h) => t(h))\n            }), null, 16, [\"expanded-id\"])) : f.title && f.links ? (r(), z(wt, N({ key: 1 }, f, {\n              \"expanded-id\": a.value,\n              onToggleId: c[1] || (c[1] = (h) => t(h))\n            }), null, 16, [\"expanded-id\"])) : f.title && f.menus ? (r(), z(Mt, N({ key: 2 }, f, {\n              \"expanded-id\": a.value,\n              onToggleId: c[2] || (c[2] = (h) => t(h))\n            }), null, 16, [\"expanded-id\"])) : m(\"\", !0)\n          ]),\n          _: 2\n        }, 1024))), 128))\n      ])\n    ], 8, Ts));\n  }\n}), As = { class: \"fr-notice fr-notice--info\" }, Hs = { class: \"fr-container\" }, Bs = { class: \"fr-notice__body\" }, Fs = { class: \"fr-notice__title\" }, Rs = /* @__PURE__ */ w({\n  __name: \"DsfrNotice\",\n  props: {\n    title: { default: \"\" },\n    closeable: { type: Boolean }\n  },\n  emits: [\"close\"],\n  setup(l) {\n    return (e, a) => (r(), d(\"div\", As, [\n      i(\"div\", Hs, [\n        i(\"div\", Bs, [\n          i(\"p\", Fs, [\n            M(e.$slots, \"default\", {}, () => [\n              L(p(e.title), 1)\n            ])\n          ]),\n          e.closeable ? (r(), d(\"button\", {\n            key: 0,\n            class: \"fr-btn--close fr-btn\",\n            title: \"Masquer le message\",\n            onClick: a[0] || (a[0] = (t) => e.$emit(\"close\"))\n          }, \" Masquer le message \")) : m(\"\", !0)\n        ])\n      ])\n    ]));\n  }\n}), Ns = {\n  role: \"navigation\",\n  class: \"fr-pagination\",\n  \"aria-label\": \"Pagination\"\n}, Vs = { class: \"fr-pagination__list\" }, Ps = [\"href\", \"title\", \"disabled\"], Xs = [\"href\", \"title\", \"disabled\"], Ys = [\"href\", \"title\", \"aria-current\", \"onClick\"], js = { key: 0 }, Os = { key: 1 }, Qs = [\"href\", \"title\", \"disabled\"], qs = [\"href\", \"title\", \"disabled\"], Gs = /* @__PURE__ */ w({\n  __name: \"DsfrPagination\",\n  props: {\n    pages: {},\n    currentPage: { default: 0 },\n    firstPageTitle: { default: \"Première page\" },\n    lastPageTitle: { default: \"Dernière page\" },\n    nextPageTitle: { default: \"Page suivante\" },\n    prevPageTitle: { default: \"Page précédente\" },\n    truncLimit: { default: 5 }\n  },\n  emits: [\"update:currentPage\"],\n  setup(l, { emit: e }) {\n    const a = l, t = e, n = _(() => Math.min(a.pages.length - 1 - a.truncLimit, Math.max(a.currentPage - (a.truncLimit - a.truncLimit % 2) / 2, 0))), o = _(() => Math.min(a.pages.length - 1, n.value + a.truncLimit)), s = _(() => a.pages.length > a.truncLimit ? a.pages.slice(n.value, o.value + 1) : a.pages), u = (k) => t(\"update:currentPage\", k), c = (k) => u(k), f = () => c(0), y = () => c(Math.max(0, a.currentPage - 1)), h = () => c(Math.min(a.pages.length - 1, a.currentPage + 1)), D = () => c(a.pages.length - 1), v = (k) => a.pages.indexOf(k) === a.currentPage;\n    return (k, E) => {\n      var H, Q, te, I;\n      return r(), d(\"nav\", Ns, [\n        i(\"ul\", Vs, [\n          i(\"li\", null, [\n            i(\"a\", {\n              href: (H = k.pages[0]) == null ? void 0 : H.href,\n              class: \"fr-pagination__link fr-pagination__link--first\",\n              title: k.firstPageTitle,\n              disabled: k.currentPage === 0 ? !0 : null,\n              onClick: E[0] || (E[0] = U((S) => f(), [\"prevent\"]))\n            }, null, 8, Ps)\n          ]),\n          i(\"li\", null, [\n            i(\"a\", {\n              href: (Q = k.pages[Math.max(k.currentPage - 1, 0)]) == null ? void 0 : Q.href,\n              class: \"fr-pagination__link fr-pagination__link--prev fr-pagination__link--lg-label\",\n              title: k.prevPageTitle,\n              disabled: k.currentPage === 0 ? !0 : null,\n              onClick: E[1] || (E[1] = U((S) => y(), [\"prevent\"]))\n            }, p(k.prevPageTitle), 9, Xs)\n          ]),\n          (r(!0), d(T, null, F(s.value, (S, q) => (r(), d(\"li\", { key: q }, [\n            i(\"a\", {\n              href: S == null ? void 0 : S.href,\n              class: \"fr-pagination__link fr-unhidden-lg\",\n              title: S.title,\n              \"aria-current\": v(S) ? \"page\" : void 0,\n              onClick: U((G) => c(k.pages.indexOf(S)), [\"prevent\"])\n            }, [\n              s.value.indexOf(S) === 0 && n.value > 0 ? (r(), d(\"span\", js, \"...\")) : m(\"\", !0),\n              L(\" \" + p(S.label) + \" \", 1),\n              s.value.indexOf(S) === s.value.length - 1 && o.value < k.pages.length - 1 ? (r(), d(\"span\", Os, \"...\")) : m(\"\", !0)\n            ], 8, Ys)\n          ]))), 128)),\n          i(\"li\", null, [\n            i(\"a\", {\n              href: (te = k.pages[Math.min(k.currentPage + 1, k.pages.length - 1)]) == null ? void 0 : te.href,\n              class: \"fr-pagination__link fr-pagination__link--next fr-pagination__link--lg-label\",\n              title: k.nextPageTitle,\n              disabled: k.currentPage === k.pages.length - 1 ? !0 : null,\n              onClick: E[2] || (E[2] = U((S) => h(), [\"prevent\"]))\n            }, p(k.nextPageTitle), 9, Qs)\n          ]),\n          i(\"li\", null, [\n            i(\"a\", {\n              class: \"fr-pagination__link fr-pagination__link--last\",\n              href: (I = k.pages[k.pages.length - 1]) == null ? void 0 : I.href,\n              title: k.lastPageTitle,\n              disabled: k.currentPage === k.pages.length - 1 ? !0 : null,\n              onClick: E[3] || (E[3] = U((S) => D(), [\"prevent\"]))\n            }, null, 8, qs)\n          ])\n        ])\n      ]);\n    };\n  }\n}), Ks = /* @__PURE__ */ ee(Gs, [[\"__scopeId\", \"data-v-5919632d\"]]), Us = [\"aria-label\"], Ws = { class: \"fr-content-media__img\" }, Zs = [\"src\", \"alt\", \"title\", \"ratio\"], Js = { class: \"fr-content-media__caption\" }, xs = /* @__PURE__ */ w({\n  __name: \"DsfrPicture\",\n  props: {\n    alt: { default: \"\" },\n    legend: { default: \"\" },\n    size: { default: \"medium\" },\n    src: {},\n    title: { default: \"\" },\n    ratio: { default: \"16x9\" }\n  },\n  setup(l) {\n    return (e, a) => (r(), d(\"figure\", {\n      class: C([\"fr-content-media\", {\n        \"fr-content-media--sm\": e.size == \"small\",\n        \"fr-content-media--lg\": e.size == \"large\"\n      }]),\n      role: \"group\",\n      \"aria-label\": e.legend\n    }, [\n      i(\"div\", Ws, [\n        M(e.$slots, \"default\", {}, () => [\n          e.src ? (r(), d(\"img\", {\n            key: 0,\n            src: e.src,\n            class: C([\"fr-responsive-img\", `fr-ratio-${e.ratio}`]),\n            alt: e.alt,\n            title: e.title,\n            ratio: e.ratio\n          }, null, 10, Zs)) : m(\"\", !0)\n        ])\n      ]),\n      i(\"figcaption\", Js, p(e.legend), 1)\n    ], 10, Us));\n  }\n}), ei = { class: \"fr-quote fr-quote--column\" }, ti = [\"cite\"], ai = { class: \"fr-quote__author\" }, ni = { class: \"fr-quote__source\" }, ri = [\"href\"], li = {\n  key: 0,\n  class: \"fr-quote__image\"\n}, si = [\"src\"], ii = /* @__PURE__ */ w({\n  __name: \"DsfrQuote\",\n  props: {\n    quote: { default: void 0 },\n    author: { default: void 0 },\n    details: { default: () => [] },\n    source: { default: \"\" },\n    sourceUrl: { default: \"\" },\n    quoteImage: { default: \"\" }\n  },\n  setup(l) {\n    return (e, a) => (r(), d(\"figure\", ei, [\n      e.source ? (r(), d(\"blockquote\", {\n        key: 0,\n        cite: e.sourceUrl\n      }, [\n        i(\"p\", null, \"« \" + p(e.quote) + \" »\", 1)\n      ], 8, ti)) : m(\"\", !0),\n      i(\"figcaption\", null, [\n        i(\"p\", ai, p(e.author), 1),\n        i(\"ul\", ni, [\n          i(\"li\", null, [\n            i(\"cite\", null, p(e.source), 1)\n          ]),\n          (r(!0), d(T, null, F(e.details, (t, n) => (r(), d(\"li\", { key: n }, [\n            typeof t == \"object\" ? (r(), d(\"a\", {\n              key: 0,\n              target: \"_blank\",\n              rel: \"noopener noreferrer\",\n              href: t.url\n            }, p(t.label), 9, ri)) : m(\"\", !0),\n            L(\" \" + p(typeof t != \"object\" ? t : \"\"), 1)\n          ]))), 128))\n        ]),\n        e.quoteImage ? (r(), d(\"div\", li, [\n          i(\"img\", {\n            src: e.quoteImage,\n            class: \"fr-responsive-img\",\n            alt: \"\"\n          }, null, 8, si)\n        ])) : m(\"\", !0)\n      ])\n    ]));\n  }\n}), oi = [\"id\", \"name\", \"value\", \"checked\"], di = [\"for\"], ui = {\n  key: 0,\n  class: \"required\"\n}, ci = {\n  key: 0,\n  class: \"fr-hint-text\"\n}, fi = {\n  key: 0,\n  class: \"fr-radio-rich__pictogram\"\n}, pi = [\"src\"], zt = /* @__PURE__ */ w({\n  __name: \"DsfrRadioButton\",\n  props: {\n    id: { default: () => Y(\"basic\", \"checkbox\") },\n    name: {},\n    modelValue: { default: \"\" },\n    small: { type: Boolean },\n    value: {},\n    label: { default: \"\" },\n    hint: { default: \"\" },\n    img: { default: \"\" }\n  },\n  emits: [\"update:modelValue\"],\n  setup(l) {\n    const e = l, a = _(() => !!e.img);\n    return (t, n) => (r(), d(\"div\", {\n      class: C([\"fr-radio-group\", {\n        \"fr-radio-rich\": a.value,\n        \"fr-radio-group--sm\": t.small\n      }])\n    }, [\n      i(\"input\", N({\n        id: t.id,\n        type: \"radio\",\n        name: t.name,\n        value: t.value,\n        checked: t.modelValue === t.value\n      }, t.$attrs, {\n        onClick: n[0] || (n[0] = (o) => t.$emit(\"update:modelValue\", t.value))\n      }), null, 16, oi),\n      i(\"label\", {\n        for: t.id,\n        class: \"fr-label\"\n      }, [\n        M(t.$slots, \"label\", {}, () => [\n          L(p(t.label) + \" \", 1),\n          M(t.$slots, \"required-tip\", {}, () => [\n            t.$attrs.required ? (r(), d(\"span\", ui, \" *\")) : m(\"\", !0)\n          ])\n        ]),\n        t.hint ? (r(), d(\"span\", ci, p(t.hint), 1)) : m(\"\", !0)\n      ], 8, di),\n      t.img ? (r(), d(\"div\", fi, [\n        i(\"img\", {\n          src: t.img,\n          alt: \"\"\n        }, null, 8, pi)\n      ])) : m(\"\", !0)\n    ], 2));\n  }\n}), hi = { class: \"fr-form-group\" }, vi = [\"disabled\"], mi = [\"id\"], gi = {\n  key: 0,\n  class: \"required\"\n}, bi = {\n  class: \"fr-fieldset__content\",\n  role: \"radiogroup\"\n}, ki = {\n  key: 1,\n  class: \"fr-messages-group\"\n}, yi = { class: \"line-1\" }, _i = /* @__PURE__ */ w({\n  __name: \"DsfrRadioButtonSet\",\n  props: {\n    titleId: { default: () => Y(\"radio-button\", \"group\") },\n    disabled: { type: Boolean },\n    inline: { type: Boolean },\n    required: { type: Boolean },\n    small: { type: Boolean },\n    name: { default: \"no-name\" },\n    errorMessage: { default: \"\" },\n    validMessage: { default: \"\" },\n    legend: { default: \"\" },\n    modelValue: {},\n    options: { default: () => [] }\n  },\n  emits: [\"update:modelValue\"],\n  setup(l, { emit: e }) {\n    const a = l, t = e, n = _(() => a.errorMessage || a.validMessage), o = _(() => a.errorMessage ? \"fr-error-text\" : \"fr-valid-text\"), s = (u) => {\n      u !== a.modelValue && t(\"update:modelValue\", u);\n    };\n    return (u, c) => (r(), d(\"div\", hi, [\n      i(\"fieldset\", {\n        class: C([\"fr-fieldset\", {\n          \"fr-fieldset--error\": u.errorMessage,\n          \"fr-fieldset--valid\": u.validMessage,\n          \"fr-fieldset--inline\": u.inline\n        }]),\n        disabled: u.disabled\n      }, [\n        u.legend ? (r(), d(\"legend\", {\n          key: 0,\n          id: u.titleId,\n          class: \"fr-fieldset__legend fr-text--regular\"\n        }, [\n          M(u.$slots, \"legend\", {}, () => [\n            L(p(u.legend) + \" \", 1),\n            M(u.$slots, \"required-tip\", {}, () => [\n              u.required ? (r(), d(\"span\", gi, \" *\")) : m(\"\", !0)\n            ])\n          ])\n        ], 8, mi)) : m(\"\", !0),\n        i(\"div\", bi, [\n          (r(!0), d(T, null, F(u.options, (f, y) => (r(), z(zt, N({\n            key: f.value || y,\n            name: u.name\n          }, f, {\n            small: u.small,\n            \"model-value\": u.modelValue,\n            \"onUpdate:modelValue\": c[0] || (c[0] = (h) => s(h))\n          }), null, 16, [\"name\", \"small\", \"model-value\"]))), 128))\n        ]),\n        n.value ? (r(), d(\"div\", ki, [\n          i(\"p\", {\n            class: C([\"fr-message--info flex items-center\", o.value])\n          }, [\n            i(\"span\", yi, p(n.value), 1)\n          ], 2)\n        ])) : m(\"\", !0)\n      ], 10, vi)\n    ]));\n  }\n}), wi = [\"for\"], Di = {\n  key: 0,\n  class: \"required\"\n}, Mi = {\n  key: 0,\n  class: \"fr-hint-text\"\n}, zi = [\"id\", \"name\", \"disabled\", \"required\"], Ci = [\"selected\"], $i = [\"selected\", \"value\", \"disabled\"], Li = [\"id\"], Ii = /* @__PURE__ */ w({\n  inheritAttrs: !1,\n  __name: \"DsfrSelect\",\n  props: {\n    required: { type: Boolean },\n    disabled: { type: Boolean },\n    selectId: { default: () => Y(\"select\") },\n    description: { default: void 0 },\n    modelValue: { default: void 0 },\n    label: { default: \"\" },\n    options: { default: () => [] },\n    successMessage: { default: \"\" },\n    errorMessage: { default: \"\" },\n    defaultUnselectedText: { default: \"Sélectionnez une option\" }\n  },\n  emits: [\"update:modelValue\"],\n  setup(l) {\n    const e = l, a = _(() => e.errorMessage || e.successMessage), t = _(() => e.errorMessage ? \"error\" : \"valid\");\n    return (n, o) => (r(), d(\"div\", {\n      class: C([\"fr-select-group\", { [`fr-select-group--${t.value}`]: a.value }])\n    }, [\n      i(\"label\", {\n        class: \"fr-label\",\n        for: n.selectId\n      }, [\n        M(n.$slots, \"label\", {}, () => [\n          L(p(n.label) + \" \", 1),\n          M(n.$slots, \"required-tip\", {}, () => [\n            n.required ? (r(), d(\"span\", Di, \" *\")) : m(\"\", !0)\n          ])\n        ]),\n        n.description ? (r(), d(\"span\", Mi, p(n.description), 1)) : m(\"\", !0)\n      ], 8, wi),\n      i(\"select\", {\n        id: n.selectId,\n        class: C([{ [`fr-select--${t.value}`]: a.value }, \"fr-select\"]),\n        name: n.selectId,\n        disabled: n.disabled,\n        required: n.required,\n        onChange: o[0] || (o[0] = (s) => {\n          var u;\n          return n.$emit(\"update:modelValue\", (u = s.target) == null ? void 0 : u.value);\n        })\n      }, [\n        i(\"option\", {\n          value: \"\",\n          selected: n.modelValue == null,\n          disabled: \"\",\n          hidden: \"\"\n        }, p(n.defaultUnselectedText), 9, Ci),\n        (r(!0), d(T, null, F(n.options, (s, u) => (r(), d(\"option\", {\n          key: u,\n          selected: n.modelValue === s || typeof s == \"object\" && s.value === n.modelValue,\n          value: typeof s == \"object\" ? s.value : s,\n          disabled: !!(typeof s == \"object\" && s.disabled)\n        }, p(typeof s == \"object\" ? s.text : s), 9, $i))), 128))\n      ], 42, zi),\n      a.value ? (r(), d(\"p\", {\n        key: 0,\n        id: `select-${t.value}-desc-${t.value}`,\n        class: C(`fr-${t.value}-text`)\n      }, p(a.value), 11, Li)) : m(\"\", !0)\n    ], 2));\n  }\n}), Ti = { class: \"fr-share\" }, Si = { class: \"fr-share__title\" }, Ei = { class: \"fr-btns-group\" }, Ai = [\"title\", \"href\", \"onClick\"], Hi = { key: 0 }, Bi = [\"href\", \"title\"], Fi = [\"title\"], Ri = /* @__PURE__ */ w({\n  __name: \"DsfrShare\",\n  props: {\n    title: { default: \"Partager la page\" },\n    copyLabel: { default: \"Copier dans le presse-papier\" },\n    mail: { default: () => {\n    } },\n    networks: { default: () => [] }\n  },\n  setup(l) {\n    const e = () => {\n      const t = window.location.href;\n      navigator.clipboard.writeText(t);\n    }, a = ({ url: t, label: n }) => {\n      window.open(\n        t,\n        n,\n        \"toolbar=no,location=yes,status=no,menubar=no,scrollbars=yes,resizable=yes,width=600,height=450\"\n      );\n    };\n    return (t, n) => {\n      var o;\n      return r(), d(\"div\", Ti, [\n        i(\"p\", Si, p(t.title), 1),\n        i(\"ul\", Ei, [\n          (r(!0), d(T, null, F(t.networks, (s, u) => (r(), d(\"li\", { key: u }, [\n            i(\"a\", {\n              class: C(`fr-btn fr-btn--${s.name}`),\n              title: `${s.label} - nouvelle fenêtre`,\n              href: s.url,\n              target: \"_blank\",\n              rel: \"noopener noreferrer\",\n              onClick: U((c) => a(s), [\"prevent\"])\n            }, p(s.label), 11, Ai)\n          ]))), 128)),\n          (o = t.mail) != null && o.to ? (r(), d(\"li\", Hi, [\n            i(\"a\", {\n              class: \"fr-btn fr-btn--mail\",\n              href: t.mail.to,\n              title: t.mail.label,\n              target: \"_blank\",\n              rel: \"noopener noreferrer\"\n            }, p(t.mail.label), 9, Bi)\n          ])) : m(\"\", !0),\n          i(\"li\", null, [\n            i(\"button\", {\n              class: \"fr-btn fr-btn--copy\",\n              title: t.copyLabel,\n              onClick: n[0] || (n[0] = (s) => e())\n            }, p(t.copyLabel), 9, Fi)\n          ])\n        ])\n      ]);\n    };\n  }\n}), Ct = /* @__PURE__ */ w({\n  __name: \"DsfrSideMenuListItem\",\n  props: {\n    active: { type: Boolean }\n  },\n  setup(l) {\n    return (e, a) => (r(), d(\"li\", {\n      class: C([\"fr-sidemenu__item\", { \"fr-sidemenu__item--active\": e.active }])\n    }, [\n      M(e.$slots, \"default\")\n    ], 2));\n  }\n}), Ni = [\"aria-current\", \"aria-expanded\", \"aria-controls\"], $t = /* @__PURE__ */ w({\n  __name: \"DsfrSideMenuButton\",\n  props: {\n    active: { type: Boolean },\n    expanded: { type: Boolean },\n    controlId: {}\n  },\n  emits: [\"toggle-expand\"],\n  setup(l) {\n    return (e, a) => (r(), d(\"button\", {\n      class: \"fr-sidemenu__btn\",\n      \"aria-current\": e.active ? \"page\" : void 0,\n      \"aria-expanded\": !!e.expanded,\n      \"aria-controls\": e.controlId,\n      onClick: a[0] || (a[0] = (t) => e.$emit(\"toggle-expand\", e.controlId))\n    }, [\n      M(e.$slots, \"default\")\n    ], 8, Ni));\n  }\n}), Vi = [\"id\"], Pi = { class: \"fr-sidemenu__list\" }, Lt = /* @__PURE__ */ w({\n  __name: \"DsfrSideMenuList\",\n  props: {\n    id: {},\n    collapsable: { type: Boolean },\n    expanded: { type: Boolean },\n    menuItems: { default: () => [] }\n  },\n  emits: [\"toggle-expand\"],\n  setup(l) {\n    const e = l, {\n      collapse: a,\n      collapsing: t,\n      cssExpanded: n,\n      doExpand: o,\n      onTransitionEnd: s\n    } = oe();\n    ae(() => e.expanded, (y, h) => {\n      y !== h && o(y);\n    }), le(() => {\n      e.expanded && o(!0);\n    });\n    const u = (y) => typeof y == \"string\" && y.startsWith(\"http\"), c = (y) => u(y) ? \"a\" : \"RouterLink\", f = (y) => ({ [u(y) ? \"href\" : \"to\"]: y });\n    return (y, h) => {\n      const D = ne(\"DsfrSideMenuList\", !0);\n      return r(), d(\"div\", {\n        id: y.id,\n        ref_key: \"collapse\",\n        ref: a,\n        class: C({\n          \"fr-collapse\": y.collapsable,\n          \"fr-collapsing\": B(t),\n          \"fr-collapse--expanded\": B(n)\n        }),\n        onTransitionend: h[2] || (h[2] = (v) => B(s)(!!y.expanded))\n      }, [\n        i(\"ul\", Pi, [\n          M(y.$slots, \"default\"),\n          (r(!0), d(T, null, F(y.menuItems, (v, k) => (r(), z(Ct, {\n            key: k,\n            active: v.active\n          }, {\n            default: A(() => [\n              v.menuItems ? m(\"\", !0) : (r(), z(J(c(v.to)), N({\n                key: 0,\n                class: \"fr-sidemenu__link\",\n                \"aria-current\": v.active ? \"page\" : void 0\n              }, f(v.to)), {\n                default: A(() => [\n                  L(p(v.text), 1)\n                ]),\n                _: 2\n              }, 1040, [\"aria-current\"])),\n              v.menuItems ? (r(), d(T, { key: 1 }, [\n                X($t, {\n                  active: !!v.active,\n                  expanded: !!v.expanded,\n                  \"control-id\": v.id,\n                  onToggleExpand: h[0] || (h[0] = (E) => y.$emit(\"toggle-expand\", E))\n                }, {\n                  default: A(() => [\n                    L(p(v.text), 1)\n                  ]),\n                  _: 2\n                }, 1032, [\"active\", \"expanded\", \"control-id\"]),\n                v.menuItems ? (r(), z(D, {\n                  key: 0,\n                  id: v.id,\n                  collapsable: \"\",\n                  expanded: v.expanded,\n                  \"menu-items\": v.menuItems,\n                  onToggleExpand: h[1] || (h[1] = (E) => y.$emit(\"toggle-expand\", E))\n                }, null, 8, [\"id\", \"expanded\", \"menu-items\"])) : m(\"\", !0)\n              ], 64)) : m(\"\", !0)\n            ]),\n            _: 2\n          }, 1032, [\"active\"]))), 128))\n        ])\n      ], 42, Vi);\n    };\n  }\n}), Xi = [\"aria-labelledby\"], Yi = { class: \"fr-sidemenu__inner\" }, ji = [\"aria-controls\", \"aria-expanded\"], Oi = [\"id\"], Qi = { class: \"fr-sidemenu__title\" }, qi = /* @__PURE__ */ w({\n  __name: \"DsfrSideMenu\",\n  props: {\n    buttonLabel: { default: \"Dans cette rubrique\" },\n    id: { default: () => Y(\"sidemenu\") },\n    collapseValue: { default: \"-492px\" },\n    menuItems: { default: () => {\n    } },\n    headingTitle: { default: \"\" }\n  },\n  emits: [\"toggle-expand\"],\n  setup(l) {\n    const {\n      collapse: e,\n      collapsing: a,\n      cssExpanded: t,\n      doExpand: n,\n      onTransitionEnd: o\n    } = oe(), s = R(!1);\n    return ae(s, (u, c) => {\n      u !== c && n(u);\n    }), (u, c) => (r(), d(\"nav\", {\n      class: \"fr-sidemenu\",\n      \"aria-labelledby\": u.id\n    }, [\n      i(\"div\", Yi, [\n        i(\"button\", {\n          class: \"fr-sidemenu__btn\",\n          \"aria-controls\": u.id,\n          \"aria-expanded\": s.value,\n          onClick: c[0] || (c[0] = U((f) => s.value = !s.value, [\"prevent\", \"stop\"]))\n        }, p(u.buttonLabel), 9, ji),\n        i(\"div\", {\n          id: u.id,\n          ref_key: \"collapse\",\n          ref: e,\n          class: C([\"fr-collapse\", {\n            \"fr-collapse--expanded\": B(t),\n            // Need to use a separate data to add/remove the class after a RAF\n            \"fr-collapsing\": B(a)\n          }]),\n          onTransitionend: c[2] || (c[2] = (f) => B(o)(s.value))\n        }, [\n          i(\"div\", Qi, p(u.headingTitle), 1),\n          M(u.$slots, \"default\", {}, () => [\n            X(Lt, {\n              id: B(Y)(\"sidemenu\", \"list\"),\n              \"menu-items\": u.menuItems,\n              onToggleExpand: c[1] || (c[1] = (f) => u.$emit(\"toggle-expand\", f))\n            }, null, 8, [\"id\", \"menu-items\"])\n          ])\n        ], 42, Oi)\n      ])\n    ], 8, Xi));\n  }\n}), Gi = /* @__PURE__ */ w({\n  __name: \"DsfrSideMenuLink\",\n  props: {\n    active: { type: Boolean },\n    to: { default: \"\" }\n  },\n  emits: [\"toggle-expand\"],\n  setup(l) {\n    const e = l, a = _(() => typeof e.to == \"string\" && e.to.startsWith(\"http\")), t = _(() => a.value ? \"a\" : \"RouterLink\"), n = _(() => ({ [a.value ? \"href\" : \"to\"]: e.to }));\n    return (o, s) => (r(), z(J(t.value), N({\n      \"aria-current\": o.active ? \"page\" : void 0,\n      class: \"fr-sidemenu__link\"\n    }, n.value), {\n      default: A(() => [\n        M(o.$slots, \"default\")\n      ]),\n      _: 3\n    }, 16, [\"aria-current\"]));\n  }\n}), Ki = { class: \"fr-skiplinks\" }, Ui = {\n  class: \"fr-container\",\n  role: \"navigation\",\n  \"aria-label\": \"Accès rapide\"\n}, Wi = { class: \"fr-skiplinks__list\" }, Zi = [\"href\", \"onClick\"], Ji = /* @__PURE__ */ w({\n  __name: \"DsfrSkipLinks\",\n  props: {\n    links: {}\n  },\n  setup(l) {\n    const e = (a) => {\n      const t = document.getElementById(a);\n      t == null || t.focus();\n    };\n    return (a, t) => (r(), d(\"div\", Ki, [\n      i(\"nav\", Ui, [\n        i(\"ul\", Wi, [\n          (r(!0), d(T, null, F(a.links, (n) => (r(), d(\"li\", {\n            key: n.id\n          }, [\n            i(\"a\", {\n              class: \"fr-link\",\n              href: `#${n.id}`,\n              onClick: U((o) => e(n.id), [\"prevent\"])\n            }, p(n.text), 9, Zi)\n          ]))), 128))\n        ])\n      ])\n    ]));\n  }\n}), xi = { class: \"fr-stepper\" }, eo = { class: \"fr-stepper__title\" }, to = { class: \"fr-stepper__state\" }, ao = [\"data-fr-current-step\", \"data-fr-steps\"], no = { class: \"fr-stepper__details\" }, ro = {\n  key: 0,\n  class: \"fr-text--bold\"\n}, lo = /* @__PURE__ */ w({\n  __name: \"DsfrStepper\",\n  props: {\n    steps: { default: () => [] },\n    currentStep: { default: 1 }\n  },\n  setup(l) {\n    return (e, a) => (r(), d(\"div\", xi, [\n      i(\"h2\", eo, [\n        i(\"span\", to, \"Étape \" + p(e.currentStep) + \" sur \" + p(e.steps.length), 1),\n        L(\" \" + p(e.steps[e.currentStep - 1]), 1)\n      ]),\n      i(\"div\", {\n        class: \"fr-stepper__steps\",\n        \"data-fr-current-step\": e.currentStep,\n        \"data-fr-steps\": e.steps.length\n      }, null, 8, ao),\n      i(\"p\", no, [\n        e.currentStep < e.steps.length ? (r(), d(\"span\", ro, \"Étape suivante :\")) : m(\"\", !0),\n        L(\" \" + p(e.steps[e.currentStep]), 1)\n      ])\n    ]));\n  }\n}), so = {\n  class: \"fr-summary\",\n  role: \"navigation\",\n  \"aria-labelledby\": \"fr-summary-title\"\n}, io = {\n  id: \"fr-summary-title\",\n  class: \"fr-summary__title\"\n}, oo = { class: \"fr-summary__list\" }, uo = [\"href\"], co = /* @__PURE__ */ w({\n  __name: \"DsfrSummary\",\n  props: {\n    title: { default: \"Sommaire\" },\n    anchors: { default: () => [] }\n  },\n  setup(l) {\n    return (e, a) => (r(), d(\"nav\", so, [\n      i(\"h2\", io, p(e.title), 1),\n      i(\"ol\", oo, [\n        (r(!0), d(T, null, F(e.anchors, (t, n) => (r(), d(\"li\", { key: n }, [\n          i(\"a\", {\n            class: \"fr-summary__link\",\n            href: t.link\n          }, p(t.name), 9, uo)\n        ]))), 128))\n      ])\n    ]));\n  }\n}), fo = [\"id\", \"aria-labelledby\", \"tabindex\"], po = /* @__PURE__ */ w({\n  __name: \"DsfrTabContent\",\n  props: {\n    asc: { type: Boolean },\n    selected: { type: Boolean },\n    panelId: {},\n    tabId: {}\n  },\n  setup(l) {\n    Ot((o) => ({\n      fd60c27c: t.value,\n      adf308da: n.value\n    }));\n    const e = l, a = { true: \"100%\", false: \"-100%\" }, t = _(() => a[String(e.asc)]), n = _(() => a[String(!e.asc)]);\n    return (o, s) => (r(), z(rt, {\n      name: \"slide-fade\",\n      mode: \"in-out\"\n    }, {\n      default: A(() => [\n        Oe(i(\"div\", {\n          id: o.panelId,\n          class: C([\"fr-tabs__panel\", {\n            \"fr-tabs__panel--selected\": o.selected\n          }]),\n          role: \"tabpanel\",\n          \"aria-labelledby\": o.tabId,\n          tabindex: o.selected ? 0 : -1\n        }, [\n          M(o.$slots, \"default\", {}, void 0, !0)\n        ], 10, fo), [\n          [lt, o.selected]\n        ])\n      ]),\n      _: 3\n    }));\n  }\n}), It = /* @__PURE__ */ ee(po, [[\"__scopeId\", \"data-v-a72352e0\"]]), ho = { role: \"presentation\" }, vo = [\"id\", \"data-testid\", \"tabindex\", \"aria-selected\", \"aria-controls\"], mo = {\n  key: 0,\n  style: { \"margin-left\": \"-0.25rem\", \"margin-right\": \"0.5rem\", \"font-size\": \"0.95rem\" }\n}, Tt = /* @__PURE__ */ w({\n  __name: \"DsfrTabItem\",\n  props: {\n    panelId: {},\n    tabId: {},\n    selected: { type: Boolean },\n    icon: { default: void 0 }\n  },\n  emits: [\"click\", \"next\", \"previous\", \"first\", \"last\"],\n  setup(l) {\n    const e = l, a = R(null);\n    return ae(() => e.selected, (t) => {\n      var n;\n      t && ((n = a.value) == null || n.focus());\n    }), (t, n) => {\n      const o = ne(\"VIcon\");\n      return r(), d(\"li\", ho, [\n        i(\"button\", {\n          id: t.tabId,\n          ref_key: \"button\",\n          ref: a,\n          \"data-testid\": `test-${t.tabId}`,\n          class: \"fr-tabs__tab\",\n          tabindex: t.selected ? 0 : -1,\n          role: \"tab\",\n          type: \"button\",\n          \"aria-selected\": t.selected,\n          \"aria-controls\": t.panelId,\n          onClick: n[0] || (n[0] = U((s) => t.$emit(\"click\", s), [\"prevent\"])),\n          onKeydown: [\n            n[1] || (n[1] = ue((s) => t.$emit(\"next\"), [\"right\"])),\n            n[2] || (n[2] = ue((s) => t.$emit(\"previous\"), [\"left\"])),\n            n[3] || (n[3] = ue((s) => t.$emit(\"next\"), [\"down\"])),\n            n[4] || (n[4] = ue((s) => t.$emit(\"previous\"), [\"up\"])),\n            n[5] || (n[5] = ue((s) => t.$emit(\"first\"), [\"home\"])),\n            n[6] || (n[6] = ue((s) => t.$emit(\"last\"), [\"end\"]))\n          ]\n        }, [\n          t.icon ? (r(), d(\"span\", mo, [\n            X(o, { name: t.icon }, null, 8, [\"name\"])\n          ])) : m(\"\", !0),\n          M(t.$slots, \"default\")\n        ], 40, vo)\n      ]);\n    };\n  }\n}), St = /* @__PURE__ */ w({\n  __name: \"DsfrTableCell\",\n  props: {\n    field: {},\n    cellAttrs: { default: () => ({}) }\n  },\n  setup(l) {\n    const e = l, a = _(() => typeof e.field == \"object\" && e.field !== null && e.field.component ? e.field.component : !1), t = _(() => typeof e.field == \"string\");\n    return (n, o) => (r(), d(\"td\", re(Ee(n.cellAttrs)), [\n      a.value ? (r(), z(J(a.value), re(N({ key: 0 }, typeof n.field == \"object\" ? n.field : {})), {\n        default: A(() => [\n          L(p(n.field.text), 1)\n        ]),\n        _: 1\n      }, 16)) : (r(), d(T, { key: 1 }, [\n        L(p(t.value ? n.field : n.field.text), 1)\n      ], 64))\n    ], 16));\n  }\n}), Et = /* @__PURE__ */ w({\n  __name: \"DsfrTableRow\",\n  props: {\n    rowData: { default: () => [] },\n    rowAttrs: { default: () => ({}) }\n  },\n  setup(l) {\n    return (e, a) => (r(), d(\"tr\", re(Ee(e.rowAttrs)), [\n      M(e.$slots, \"default\"),\n      (r(!0), d(T, null, F(e.rowData, (t, n) => (r(), z(St, {\n        key: n,\n        field: t,\n        \"cell-attrs\": typeof t == \"object\" && !t.component ? t.cellAttrs : {}\n      }, null, 8, [\"field\", \"cell-attrs\"]))), 128))\n    ], 16));\n  }\n}), At = /* @__PURE__ */ w({\n  __name: \"DsfrTableHeader\",\n  props: {\n    header: { default: \"\" },\n    headerAttrs: { default: () => ({}) },\n    icon: { default: void 0 }\n  },\n  setup(l) {\n    return (e, a) => (r(), d(\"th\", N(e.headerAttrs, { scope: \"col\" }), [\n      L(p(e.header) + \" \", 1),\n      e.icon && e.icon.name ? (r(), z(B(fe), re(N({ key: 0 }, e.icon)), null, 16)) : m(\"\", !0)\n    ], 16));\n  }\n}), go = { key: 0 }, Ht = /* @__PURE__ */ w({\n  __name: \"DsfrTableHeaders\",\n  props: {\n    headers: {}\n  },\n  setup(l) {\n    return (e, a) => e.headers ? (r(), d(\"tr\", go, [\n      (r(!0), d(T, null, F(e.headers, (t, n) => (r(), z(At, {\n        key: n,\n        header: (typeof t == \"object\" ? t : {}).text || t,\n        \"header-attrs\": t.headerAttrs\n      }, null, 8, [\"header\", \"header-attrs\"]))), 128))\n    ])) : m(\"\", !0);\n  }\n}), bo = (l) => (Te(\"data-v-cf117527\"), l = l(), Se(), l), ko = { class: \"simple-table\" }, yo = { class: \"caption\" }, _o = { key: 1 }, wo = [\"colspan\"], Do = { class: \"flex justify-right\" }, Mo = { class: \"self-center\" }, zo = /* @__PURE__ */ bo(() => /* @__PURE__ */ i(\"span\", null, \"Résultats par page : \", -1)), Co = [\"value\"], $o = { class: \"flex ml-1\" }, Lo = { class: \"self-center\" }, Io = { class: \"flex ml-1\" }, To = /* @__PURE__ */ w({\n  __name: \"DsfrTable\",\n  props: {\n    title: {},\n    headers: { default: () => [] },\n    rows: { default: () => [] },\n    noCaption: { type: Boolean },\n    pagination: { type: Boolean },\n    defaultCurrentPage: { default: 1 },\n    defaultOptionSelected: { default: 10 }\n  },\n  setup(l) {\n    const e = l, a = (k) => Array.isArray(k) ? k : k.rowData, t = R(e.defaultCurrentPage), n = R(e.defaultOptionSelected), o = R(e.rows.length > n.value ? Math.ceil(e.rows.length / n.value) : 1), s = [5, 10, 25, 50, 100], u = () => t.value * n.value - n.value, c = () => t.value * n.value;\n    ae(() => n.value, (k) => {\n      o.value = e.rows.length > n.value ? Math.ceil(e.rows.length / k) : 1;\n    });\n    const f = _(() => e.pagination ? e.rows.slice(u(), c()) : e.rows), y = () => {\n      t.value = 1;\n    }, h = () => {\n      t.value > 1 && (t.value -= 1);\n    }, D = () => {\n      t.value < o.value && (t.value += 1);\n    }, v = () => {\n      t.value = o.value;\n    };\n    return (k, E) => (r(), d(\"div\", {\n      class: C([\"fr-table\", { \"fr-table--no-caption\": k.noCaption }])\n    }, [\n      i(\"table\", ko, [\n        i(\"caption\", yo, p(k.title), 1),\n        i(\"thead\", null, [\n          M(k.$slots, \"header\", {}, () => [\n            k.headers && k.headers.length ? (r(), z(Ht, {\n              key: 0,\n              headers: k.headers\n            }, null, 8, [\"headers\"])) : m(\"\", !0)\n          ], !0)\n        ]),\n        i(\"tbody\", null, [\n          M(k.$slots, \"default\", {}, void 0, !0),\n          k.rows && k.rows.length ? (r(!0), d(T, { key: 0 }, F(f.value, (H, Q) => (r(), z(Et, {\n            key: Q,\n            \"row-data\": a(H),\n            \"row-attrs\": \"rowAttrs\" in H ? H.rowAttrs : {}\n          }, null, 8, [\"row-data\", \"row-attrs\"]))), 128)) : m(\"\", !0),\n          k.pagination ? (r(), d(\"tr\", _o, [\n            i(\"td\", {\n              colspan: k.headers.length\n            }, [\n              i(\"div\", Do, [\n                i(\"div\", Mo, [\n                  zo,\n                  Oe(i(\"select\", {\n                    \"onUpdate:modelValue\": E[0] || (E[0] = (H) => n.value = H)\n                  }, [\n                    (r(), d(T, null, F(s, (H, Q) => i(\"option\", {\n                      key: Q,\n                      value: H\n                    }, p(H), 9, Co)), 64))\n                  ], 512), [\n                    [Qt, n.value]\n                  ])\n                ]),\n                i(\"div\", $o, [\n                  i(\"span\", Lo, \"Page \" + p(t.value) + \" sur \" + p(o.value), 1)\n                ]),\n                i(\"div\", Io, [\n                  i(\"button\", {\n                    class: \"fr-icon-arrow-left-s-first-line\",\n                    onClick: E[1] || (E[1] = (H) => y())\n                  }),\n                  i(\"button\", {\n                    class: \"fr-icon-arrow-left-s-line-double\",\n                    onClick: E[2] || (E[2] = (H) => h())\n                  }),\n                  i(\"button\", {\n                    class: \"fr-icon-arrow-right-s-line-double\",\n                    onClick: E[3] || (E[3] = (H) => D())\n                  }),\n                  i(\"button\", {\n                    class: \"fr-icon-arrow-right-s-last-line\",\n                    onClick: E[4] || (E[4] = (H) => v())\n                  })\n                ])\n              ])\n            ], 8, wo)\n          ])) : m(\"\", !0)\n        ])\n      ])\n    ], 2));\n  }\n}), So = /* @__PURE__ */ ee(To, [[\"__scopeId\", \"data-v-cf117527\"]]), Eo = [\"aria-label\"], Ao = /* @__PURE__ */ w({\n  __name: \"DsfrTabs\",\n  props: {\n    tabListName: {},\n    tabTitles: {},\n    tabContents: { default: () => [] },\n    initialSelectedIndex: { default: 0 }\n  },\n  emits: [\"select-tab\"],\n  setup(l, { expose: e, emit: a }) {\n    const t = l, n = a, o = R(t.initialSelectedIndex || 0), s = qt({}), u = R(!0), c = R(null), f = R(null), y = R(null);\n    le(() => {\n      var I;\n      window.ResizeObserver && (c.value = new window.ResizeObserver(() => {\n        D();\n      })), (I = f.value) == null || I.querySelectorAll(\".fr-tabs__panel\").forEach((S) => {\n        var q;\n        S && ((q = c.value) == null || q.observe(S));\n      });\n    }), Ae(() => {\n      var I;\n      (I = f.value) == null || I.querySelectorAll(\".fr-tabs__panel\").forEach((S) => {\n        var q;\n        S && ((q = c.value) == null || q.unobserve(S));\n      });\n    });\n    const h = (I) => o.value === I, D = () => {\n      var G, x;\n      if (o.value < 0 || !y.value || !y.value.offsetHeight)\n        return;\n      const I = y.value.offsetHeight, S = (G = f.value) == null ? void 0 : G.querySelectorAll(\".fr-tabs__panel\")[o.value];\n      if (!S || !S.offsetHeight)\n        return;\n      const q = S.offsetHeight;\n      (x = f.value) == null || x.style.setProperty(\"--tabs-height\", I + q + \"px\");\n    }, v = (I) => {\n      if (s[I])\n        return s[I];\n      const S = Y(\"tab\");\n      return s[I] = S, S;\n    }, k = async (I) => {\n      u.value = I > o.value, o.value = I, n(\"select-tab\", I);\n    }, E = async () => {\n      const I = o.value === 0 ? t.tabTitles.length - 1 : o.value - 1;\n      await k(I);\n    }, H = async () => {\n      const I = o.value === t.tabTitles.length - 1 ? 0 : o.value + 1;\n      await k(I);\n    }, Q = async () => {\n      await k(0);\n    }, te = async () => {\n      await k(t.tabTitles.length - 1);\n    };\n    return e({\n      selectIndex: k,\n      selectFirst: Q,\n      selectLast: te\n    }), (I, S) => (r(), d(\"div\", {\n      ref_key: \"$el\",\n      ref: f,\n      class: \"fr-tabs\"\n    }, [\n      i(\"ul\", {\n        ref_key: \"tablist\",\n        ref: y,\n        class: \"fr-tabs__list\",\n        role: \"tablist\",\n        \"aria-label\": I.tabListName\n      }, [\n        M(I.$slots, \"tab-items\", {}, () => [\n          (r(!0), d(T, null, F(I.tabTitles, (q, G) => (r(), z(Tt, {\n            key: G,\n            icon: q.icon,\n            \"panel-id\": q.panelId || `${v(G)}-panel`,\n            \"tab-id\": q.tabId || v(G),\n            selected: h(G),\n            onClick: (x) => k(G),\n            onNext: S[0] || (S[0] = (x) => H()),\n            onPrevious: S[1] || (S[1] = (x) => E()),\n            onFirst: S[2] || (S[2] = (x) => Q()),\n            onLast: S[3] || (S[3] = (x) => te())\n          }, {\n            default: A(() => [\n              L(p(q.title), 1)\n            ]),\n            _: 2\n          }, 1032, [\"icon\", \"panel-id\", \"tab-id\", \"selected\", \"onClick\"]))), 128))\n        ])\n      ], 8, Eo),\n      (r(!0), d(T, null, F(I.tabContents, (q, G) => {\n        var x, we, he, se;\n        return r(), z(It, {\n          key: G,\n          \"panel-id\": ((we = (x = I.tabTitles) == null ? void 0 : x[G]) == null ? void 0 : we.panelId) || `${v(G)}-panel`,\n          \"tab-id\": ((se = (he = I.tabTitles) == null ? void 0 : he[G]) == null ? void 0 : se.tabId) || v(G),\n          selected: h(G),\n          asc: u.value\n        }, {\n          default: A(() => [\n            i(\"p\", null, p(q), 1)\n          ]),\n          _: 2\n        }, 1032, [\"panel-id\", \"tab-id\", \"selected\", \"asc\"]);\n      }), 128)),\n      M(I.$slots, \"default\")\n    ], 512));\n  }\n}), Ho = { key: 1 }, Bo = /* @__PURE__ */ w({\n  __name: \"DsfrTag\",\n  props: {\n    label: { default: void 0 },\n    link: { default: void 0 },\n    tagName: { default: \"p\" },\n    icon: { default: void 0 },\n    disabled: { type: Boolean },\n    small: { type: Boolean },\n    iconOnly: { type: Boolean }\n  },\n  setup(l) {\n    const e = l, a = _(() => typeof e.link == \"string\" && e.link.startsWith(\"http\")), t = _(() => e.link ? a.value ? \"a\" : \"RouterLink\" : e.disabled && e.tagName === \"p\" ? \"button\" : e.tagName), n = _(() => ({ [a.value ? \"href\" : \"to\"]: e.link }));\n    return (o, s) => (r(), z(J(t.value), N({\n      class: [\"fr-tag\", {\n        \"fr-tag--sm\": o.small\n      }],\n      disabled: o.disabled\n    }, n.value), {\n      default: A(() => [\n        o.icon ? (r(), z(B(fe), {\n          key: 0,\n          name: o.icon,\n          label: o.iconOnly ? o.label : void 0,\n          scale: 0.9\n        }, null, 8, [\"name\", \"label\"])) : m(\"\", !0),\n        o.iconOnly ? m(\"\", !0) : (r(), d(\"span\", Ho, p(o.label), 1)),\n        M(o.$slots, \"default\", {}, void 0, !0)\n      ]),\n      _: 3\n    }, 16, [\"disabled\", \"class\"]));\n  }\n}), Bt = /* @__PURE__ */ ee(Bo, [[\"__scopeId\", \"data-v-90d8a6d9\"]]), Fo = { class: \"fr-tags-group\" }, Ro = /* @__PURE__ */ w({\n  __name: \"DsfrTags\",\n  props: {\n    tags: { default: () => [] }\n  },\n  setup(l) {\n    return (e, a) => (r(), d(\"ul\", Fo, [\n      (r(!0), d(T, null, F(e.tags, ({ icon: t, label: n, ...o }, s) => (r(), d(\"li\", { key: s }, [\n        X(Bt, N(o, {\n          icon: t,\n          label: n\n        }), null, 16, [\"icon\", \"label\"])\n      ]))), 128))\n    ]));\n  }\n}), No = { class: \"fr-tile__body\" }, Vo = { class: \"fr-tile__content\" }, Po = [\"download\", \"href\"], Xo = {\n  key: 0,\n  class: \"fr-tile__desc\"\n}, Yo = {\n  key: 1,\n  class: \"fr-tile__detail\"\n}, jo = { class: \"fr-tile__header\" }, Oo = {\n  key: 0,\n  class: \"fr-tile__pictogram\"\n}, Qo = [\"src\"], qo = /* @__PURE__ */ w({\n  __name: \"DsfrTile\",\n  props: {\n    title: { default: \"Titre de la tuile\" },\n    imgSrc: { default: void 0 },\n    description: { default: void 0 },\n    details: { default: void 0 },\n    disabled: { type: Boolean },\n    horizontal: { type: Boolean, default: !1 },\n    vertical: { default: void 0 },\n    to: { default: \"#\" },\n    titleTag: { default: \"h3\" },\n    download: { type: Boolean },\n    small: { type: Boolean },\n    icon: { type: Boolean, default: !0 },\n    noBorder: { type: Boolean },\n    shadow: { type: Boolean },\n    noBackground: { type: Boolean },\n    grey: { type: Boolean }\n  },\n  setup(l) {\n    const e = l, a = _(() => typeof e.to == \"string\" && e.to.startsWith(\"http\"));\n    return (t, n) => {\n      const o = ne(\"RouterLink\");\n      return r(), d(\"div\", {\n        class: C([\"fr-tile fr-enlarge-link\", [{\n          \"fr-tile--disabled\": t.disabled,\n          \"fr-tile--sm\": t.small === !0,\n          \"fr-tile--horizontal\": t.horizontal === !0,\n          \"fr-tile--vertical\": t.horizontal === !1 || t.vertical === \"md\" || t.vertical === \"lg\",\n          \"fr-tile--vertical@md\": t.vertical === \"md\",\n          \"fr-tile--vertical@lg\": t.vertical === \"lg\",\n          \"fr-tile--download\": t.download,\n          \"fr-tile--no-icon\": t.icon === !1,\n          \"fr-tile--no-border\": t.noBorder,\n          \"fr-tile--no-background\": t.noBackground,\n          \"fr-tile--shadow\": t.shadow,\n          \"fr-tile--grey\": t.grey\n        }]])\n      }, [\n        i(\"div\", No, [\n          i(\"div\", Vo, [\n            (r(), z(J(t.titleTag), { class: \"fr-tile__title\" }, {\n              default: A(() => [\n                a.value ? (r(), d(\"a\", {\n                  key: 0,\n                  class: \"fr-tile__link\",\n                  target: \"_blank\",\n                  download: t.download,\n                  href: t.disabled ? \"\" : t.to\n                }, p(t.title), 9, Po)) : m(\"\", !0),\n                a.value ? m(\"\", !0) : (r(), z(o, {\n                  key: 1,\n                  download: t.download,\n                  class: \"fr-tile__link so-test\",\n                  to: t.disabled ? \"\" : t.to\n                }, {\n                  default: A(() => [\n                    L(p(t.title), 1)\n                  ]),\n                  _: 1\n                }, 8, [\"download\", \"to\"]))\n              ]),\n              _: 1\n            })),\n            t.description ? (r(), d(\"p\", Xo, p(t.description), 1)) : m(\"\", !0),\n            t.details ? (r(), d(\"p\", Yo, p(t.details), 1)) : m(\"\", !0)\n          ])\n        ]),\n        i(\"div\", jo, [\n          t.imgSrc ? (r(), d(\"div\", Oo, [\n            i(\"img\", {\n              src: t.imgSrc,\n              class: \"fr-artwork\",\n              alt: \"\"\n            }, null, 8, Qo)\n          ])) : m(\"\", !0)\n        ])\n      ], 2);\n    };\n  }\n}), Ft = /* @__PURE__ */ ee(qo, [[\"__scopeId\", \"data-v-1b0bc2e6\"]]), Go = { class: \"fr-grid-row fr-grid-row--gutters\" }, Ko = /* @__PURE__ */ w({\n  __name: \"DsfrTiles\",\n  props: {\n    tiles: { default: () => [] },\n    horizontal: { type: Boolean }\n  },\n  setup(l) {\n    return (e, a) => (r(), d(\"div\", Go, [\n      (r(!0), d(T, null, F(e.tiles, (t, n) => (r(), d(\"div\", {\n        key: n,\n        class: C({\n          [t.containerClass]: t.containerClass,\n          \"fr-col-6 fr-col-md-4 fr-col-lg-3\": !t.containerClass && !e.horizontal,\n          \"fr-col-12\": e.horizontal\n        })\n      }, [\n        X(Ft, N({ horizontal: e.horizontal }, t), null, 16, [\"horizontal\"])\n      ], 2))), 128))\n    ]));\n  }\n}), Uo = { class: \"fr-toggle\" }, Wo = [\"id\", \"disabled\", \"checked\", \"data-testid\", \"aria-describedby\"], Zo = [\"id\", \"for\"], Jo = [\"id\"], xo = /* @__PURE__ */ w({\n  __name: \"DsfrToggleSwitch\",\n  props: {\n    modelValue: { type: Boolean },\n    inputId: { default: () => Y(\"toggle\") },\n    hint: { default: \"\" },\n    label: { default: \"\" },\n    disabled: { type: Boolean }\n  },\n  emits: [\"update:modelValue\"],\n  setup(l) {\n    const e = l, a = _(() => `${e.inputId}-hint-text`);\n    return (t, n) => (r(), d(\"div\", Uo, [\n      i(\"input\", {\n        id: t.inputId,\n        disabled: t.disabled,\n        type: \"checkbox\",\n        checked: t.modelValue,\n        \"data-testid\": t.inputId,\n        class: \"fr-toggle__input\",\n        \"aria-describedby\": a.value,\n        onInput: n[0] || (n[0] = (o) => t.$emit(\"update:modelValue\", o.target.checked))\n      }, null, 40, Wo),\n      i(\"label\", {\n        id: a.value,\n        class: \"fr-toggle__label\",\n        for: t.inputId,\n        \"data-fr-checked-label\": \"Activé\",\n        \"data-fr-unchecked-label\": \"Désactivé\",\n        style: { \"--toggle-status-width\": \"3.55208125rem\" }\n      }, p(t.label), 9, Zo),\n      t.hint ? (r(), d(\"p\", {\n        key: 0,\n        id: `${t.inputId}-hint-text`,\n        class: \"fr-hint-text\"\n      }, p(t.hint), 9, Jo)) : m(\"\", !0)\n    ]));\n  }\n}), ed = { class: \"fr-transcription\" }, td = [\"aria-expanded\", \"aria-controls\"], ad = [\"id\"], nd = [\"id\", \"aria-labelledby\"], rd = { class: \"fr-container fr-container--fluid fr-container-md\" }, ld = { class: \"fr-grid-row fr-grid-row--center\" }, sd = { class: \"fr-col-12 fr-col-md-10 fr-col-lg-8\" }, id = { class: \"fr-modal__body\" }, od = { class: \"fr-modal__header\" }, dd = [\"aria-controls\"], ud = { class: \"fr-modal__content\" }, cd = [\"id\"], fd = { class: \"fr-transcription__footer\" }, pd = { class: \"fr-transcription__actions-group\" }, hd = [\"aria-controls\"], Rt = /* @__PURE__ */ w({\n  __name: \"DsfrTranscription\",\n  props: {\n    id: { default: () => Y(\"transcription\") },\n    title: { default: \"Titre de la vidéo\" },\n    content: { default: \"Transcription du contenu de la vidéo\" }\n  },\n  setup(l) {\n    const e = l, {\n      collapse: a,\n      collapsing: t,\n      cssExpanded: n,\n      doExpand: o,\n      onTransitionEnd: s\n    } = oe(), u = R(!1), c = R(!1), f = _(() => `fr-transcription__modal-${e.id}`), y = _(() => `fr-transcription__collapse-${e.id}`);\n    return ae(c, (h, D) => {\n      h !== D && o(h);\n    }), (h, D) => {\n      const v = ne(\"DsfrModal\");\n      return r(), d(\"div\", ed, [\n        i(\"button\", {\n          class: \"fr-transcription__btn\",\n          \"aria-expanded\": c.value,\n          \"aria-controls\": y.value,\n          onClick: D[0] || (D[0] = (k) => c.value = !c.value)\n        }, \" Transcription \", 8, td),\n        i(\"div\", {\n          id: y.value,\n          ref_key: \"collapse\",\n          ref: a,\n          class: C([\"fr-collapse\", { \"fr-collapse--expanded\": B(n), \"fr-collapsing\": B(t) }]),\n          onTransitionend: D[2] || (D[2] = (k) => B(s)(c.value))\n        }, [\n          i(\"dialog\", {\n            id: f.value,\n            class: \"fr-modal\",\n            role: \"dialog\",\n            \"aria-labelledby\": `${f.value}-title`\n          }, [\n            i(\"div\", rd, [\n              i(\"div\", ld, [\n                i(\"div\", sd, [\n                  i(\"div\", id, [\n                    i(\"div\", od, [\n                      i(\"button\", {\n                        class: \"fr-btn--close fr-btn\",\n                        \"aria-controls\": f.value,\n                        title: \"Fermer\"\n                      }, \" Fermer \", 8, dd)\n                    ]),\n                    i(\"div\", ud, [\n                      i(\"h1\", {\n                        id: `${f.value}-title`,\n                        class: \"fr-modal__title\"\n                      }, p(h.title), 9, cd),\n                      L(\" \" + p(h.content), 1)\n                    ]),\n                    i(\"div\", fd, [\n                      i(\"div\", pd, [\n                        i(\"button\", {\n                          class: \"fr-btn fr-btn--fullscreen\",\n                          \"aria-controls\": f.value,\n                          \"data-fr-opened\": \"false\",\n                          title: \"\",\n                          onClick: D[1] || (D[1] = (k) => u.value = !0)\n                        }, \" Agrandir \", 8, hd)\n                      ])\n                    ])\n                  ])\n                ])\n              ])\n            ])\n          ], 8, nd)\n        ], 42, ad),\n        (r(), z(Gt, { to: \"body\" }, [\n          X(v, {\n            title: h.title,\n            opened: u.value,\n            onClose: D[3] || (D[3] = (k) => u.value = !1)\n          }, {\n            default: A(() => [\n              M(h.$slots, \"default\", {}, () => [\n                L(p(h.content), 1)\n              ])\n            ]),\n            _: 3\n          }, 8, [\"title\", \"opened\"])\n        ]))\n      ]);\n    };\n  }\n}), vd = [\"src\"], md = { class: \"fr-content-media__caption\" }, gd = /* @__PURE__ */ w({\n  __name: \"DsfrVideo\",\n  props: {\n    src: {},\n    legend: { default: \"\" },\n    size: { default: \"medium\" },\n    transcriptionTitle: { default: \"\" },\n    transcriptionContent: { default: \"\" },\n    ratio: { default: \"16x9\" }\n  },\n  setup(l) {\n    return (e, a) => (r(), d(\"figure\", {\n      class: C([\"fr-content-media\", {\n        \"fr-content-media--sm\": e.size == \"small\",\n        \"fr-content-media--lg\": e.size == \"large\"\n      }])\n    }, [\n      i(\"div\", {\n        class: C([\"fr-responsive-vid\", `fr-ratio-${e.ratio}`])\n      }, [\n        i(\"iframe\", {\n          src: e.src,\n          class: \"fr-responsive-vid__player\",\n          width: \"100%\",\n          height: \"100%\",\n          allow: \"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; fullscreen\"\n        }, null, 8, vd)\n      ], 2),\n      i(\"div\", md, p(e.legend), 1),\n      X(Rt, {\n        title: e.transcriptionTitle,\n        content: e.transcriptionContent\n      }, null, 8, [\"title\", \"content\"])\n    ], 2));\n  }\n}), bd = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  DsfrAccordion: na,\n  DsfrAccordionsGroup: ra,\n  DsfrAlert: oa,\n  DsfrBackToTop: Kt,\n  DsfrBadge: da,\n  DsfrBreadcrumb: va,\n  DsfrButton: He,\n  DsfrButtonGroup: Be,\n  DsfrCallout: Ma,\n  DsfrCard: Fa,\n  DsfrCheckbox: ot,\n  DsfrCheckboxSet: Ka,\n  DsfrConsent: Ja,\n  DsfrErrorPage: dn,\n  DsfrFieldset: hn,\n  DsfrFileDownload: dt,\n  DsfrFileDownloadList: kn,\n  DsfrFileUpload: zn,\n  DsfrFollow: Gn,\n  DsfrFooter: yr,\n  DsfrFooterLinkList: Mr,\n  DsfrFooterPartners: ft,\n  DsfrFranceConnect: Ir,\n  DsfrHeader: dl,\n  DsfrHeaderMenuLink: pt,\n  DsfrHeaderMenuLinks: Ye,\n  DsfrHighlight: cl,\n  DsfrInput: qe,\n  DsfrInputGroup: hl,\n  DsfrLanguageSelector: wl,\n  DsfrLogo: Qe,\n  DsfrModal: us,\n  DsfrNavigation: Es,\n  DsfrNavigationItem: yt,\n  DsfrNavigationMegaMenu: Mt,\n  DsfrNavigationMegaMenuCategory: Dt,\n  DsfrNavigationMenu: wt,\n  DsfrNavigationMenuItem: _t,\n  DsfrNavigationMenuLink: Fe,\n  DsfrNewsLetter: ct,\n  DsfrNotice: Rs,\n  DsfrPagination: Ks,\n  DsfrPicture: xs,\n  DsfrQuote: ii,\n  DsfrRadioButton: zt,\n  DsfrRadioButtonSet: _i,\n  DsfrSearchBar: Xe,\n  DsfrSelect: Ii,\n  DsfrShare: Ri,\n  DsfrSideMenu: qi,\n  DsfrSideMenuButton: $t,\n  DsfrSideMenuLink: Gi,\n  DsfrSideMenuList: Lt,\n  DsfrSideMenuListItem: Ct,\n  DsfrSkipLinks: Ji,\n  DsfrSocialNetworks: ut,\n  DsfrStepper: lo,\n  DsfrSummary: co,\n  DsfrTabContent: It,\n  DsfrTabItem: Tt,\n  DsfrTable: So,\n  DsfrTableCell: St,\n  DsfrTableHeader: At,\n  DsfrTableHeaders: Ht,\n  DsfrTableRow: Et,\n  DsfrTabs: Ao,\n  DsfrTag: Bt,\n  DsfrTags: Ro,\n  DsfrTile: Ft,\n  DsfrTiles: Ko,\n  DsfrToggleSwitch: xo,\n  DsfrTranscription: Rt,\n  DsfrVideo: gd\n}, Symbol.toStringTag, { value: \"Module\" })), kd = { name: \"ri-account-circle-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12 2c5.52 0 10 4.48 10 10s-4.48 10-10 10S2 17.52 2 12 6.48 2 12 2zM6.023 15.416C7.491 17.606 9.695 19 12.16 19c2.464 0 4.669-1.393 6.136-3.584A8.968 8.968 0 0012.16 13a8.968 8.968 0 00-6.137 2.416zM12 11a3 3 0 100-6 3 3 0 000 6z\"/>' }, yd = { name: \"ri-account-circle-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-4.987-3.744A7.966 7.966 0 0012 20a7.97 7.97 0 005.167-1.892A6.979 6.979 0 0012.16 16a6.981 6.981 0 00-5.147 2.256zM5.616 16.82A8.975 8.975 0 0112.16 14a8.972 8.972 0 016.362 2.634 8 8 0 10-12.906.187zM12 13a4 4 0 110-8 4 4 0 010 8zm0-2a2 2 0 100-4 2 2 0 000 4z\"/>' }, _d = { name: \"ri-add-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z\"/>' }, wd = { name: \"ri-alert-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12.866 3l9.526 16.5a1 1 0 01-.866 1.5H2.474a1 1 0 01-.866-1.5L11.134 3a1 1 0 011.732 0zM11 16v2h2v-2h-2zm0-7v5h2V9h-2z\"/>' }, Dd = { name: \"ri-alert-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12.866 3l9.526 16.5a1 1 0 01-.866 1.5H2.474a1 1 0 01-.866-1.5L11.134 3a1 1 0 011.732 0zm-8.66 16h15.588L12 5.5 4.206 19zM11 16h2v2h-2v-2zm0-7h2v5h-2V9z\"/>' }, Md = { name: \"ri-arrow-down-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M13 16.172l5.364-5.364 1.414 1.414L12 20l-7.778-7.778 1.414-1.414L11 16.172V4h2v12.172z\"/>' }, zd = { name: \"ri-arrow-down-s-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12 13.172l4.95-4.95 1.414 1.414L12 16 5.636 9.636 7.05 8.222z\"/>' }, Cd = { name: \"ri-arrow-drop-down-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12 15l-4.243-4.243 1.415-1.414L12 12.172l2.828-2.829 1.415 1.414z\"/>' }, $d = { name: \"ri-arrow-left-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M7.828 11H20v2H7.828l5.364 5.364-1.414 1.414L4 12l7.778-7.778 1.414 1.414z\"/>' }, Ld = { name: \"ri-arrow-left-s-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M10.828 12l4.95 4.95-1.414 1.414L8 12l6.364-6.364 1.414 1.414z\"/>' }, Id = { name: \"ri-arrow-right-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M16.172 11l-5.364-5.364 1.414-1.414L20 12l-7.778 7.778-1.414-1.414L16.172 13H4v-2z\"/>' }, Td = { name: \"ri-arrow-right-s-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M13.172 12l-4.95-4.95 1.414-1.414L16 12l-6.364 6.364-1.414-1.414z\"/>' }, Sd = { name: \"ri-arrow-up-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M13 7.828V20h-2V7.828l-5.364 5.364-1.414-1.414L12 4l7.778 7.778-1.414 1.414L13 7.828z\"/>' }, Ed = { name: \"ri-arrow-up-s-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12 10.828l-4.95 4.95-1.414-1.414L12 8l6.364 6.364-1.414 1.414z\"/>' }, Ad = { name: \"ri-chat-1-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M10 3h4a8 8 0 110 16v3.5c-5-2-12-5-12-11.5a8 8 0 018-8zm2 14h2a6 6 0 100-12h-4a6 6 0 00-6 6c0 3.61 2.462 5.966 8 8.48V17z\"/>' }, Hd = { name: \"ri-chat-quote-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M21 3a1 1 0 011 1v14a1 1 0 01-1 1H6.455L2 22.5V4a1 1 0 011-1h18zm-1 2H4v13.385L5.763 17H20V5zm-9.485 2.412l.447.688c-1.668.903-1.639 2.352-1.639 2.664.155-.02.318-.024.48-.009a1.761 1.761 0 011.613 1.745 1.75 1.75 0 01-1.75 1.75c-.537 0-1.05-.245-1.374-.59-.515-.546-.792-1.16-.792-2.155 0-1.75 1.228-3.318 3.015-4.093zm5 0l.447.688c-1.668.903-1.639 2.352-1.639 2.664.155-.02.318-.024.48-.009a1.761 1.761 0 011.613 1.745 1.75 1.75 0 01-1.75 1.75c-.537 0-1.05-.245-1.374-.59-.515-.546-.792-1.16-.792-2.155 0-1.75 1.228-3.318 3.015-4.093z\"/>' }, Bd = { name: \"ri-check-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M10 15.172l9.192-9.193 1.415 1.414L10 18l-6.364-6.364 1.414-1.414z\"/>' }, Fd = { name: \"ri-checkbox-circle-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-.997-6l7.07-7.071-1.414-1.414-5.656 5.657-2.829-2.829-1.414 1.414L11.003 16z\"/>' }, Rd = { name: \"ri-checkbox-circle-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-2a8 8 0 100-16 8 8 0 000 16zm-.997-4L6.76 11.757l1.414-1.414 2.829 2.829 5.656-5.657 1.415 1.414L11.003 16z\"/>' }, Nd = { name: \"ri-close-circle-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-11.414L9.172 7.757 7.757 9.172 10.586 12l-2.829 2.828 1.415 1.415L12 13.414l2.828 2.829 1.415-1.415L13.414 12l2.829-2.828-1.415-1.415L12 10.586z\"/>' }, Vd = { name: \"ri-close-circle-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-2a8 8 0 100-16 8 8 0 000 16zm0-9.414l2.828-2.829 1.415 1.415L13.414 12l2.829 2.828-1.415 1.415L12 13.414l-2.828 2.829-1.415-1.415L10.586 12 7.757 9.172l1.415-1.415L12 10.586z\"/>' }, Pd = { name: \"ri-close-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636z\"/>' }, Xd = { name: \"ri-delete-bin-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M17 6h5v2h-2v13a1 1 0 01-1 1H5a1 1 0 01-1-1V8H2V6h5V3a1 1 0 011-1h8a1 1 0 011 1v3zm-8 5v6h2v-6H9zm4 0v6h2v-6h-2zM9 4v2h6V4H9z\"/>' }, Yd = { name: \"ri-delete-bin-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M17 6h5v2h-2v13a1 1 0 01-1 1H5a1 1 0 01-1-1V8H2V6h5V3a1 1 0 011-1h8a1 1 0 011 1v3zm1 2H6v12h12V8zm-9 3h2v6H9v-6zm4 0h2v6h-2v-6zM9 4v2h6V4H9z\"/>' }, jd = { name: \"ri-double-quotes-l\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M4.583 17.321C3.553 16.227 3 15 3 13.011c0-3.5 2.457-6.637 6.03-8.188l.893 1.378c-3.335 1.804-3.987 4.145-4.247 5.621.537-.278 1.24-.375 1.929-.311 1.804.167 3.226 1.648 3.226 3.489a3.5 3.5 0 01-3.5 3.5 3.871 3.871 0 01-2.748-1.179zm10 0C13.553 16.227 13 15 13 13.011c0-3.5 2.457-6.637 6.03-8.188l.893 1.378c-3.335 1.804-3.987 4.145-4.247 5.621.537-.278 1.24-.375 1.929-.311 1.804.167 3.226 1.648 3.226 3.489a3.5 3.5 0 01-3.5 3.5 3.871 3.871 0 01-2.748-1.179z\"/>' }, Od = { name: \"ri-download-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M3 19h18v2H3v-2zm10-5.828L19.071 7.1l1.414 1.414L12 17 3.515 8.515 4.929 7.1 11 13.17V2h2v11.172z\"/>' }, Qd = { name: \"ri-edit-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M7.243 18H3v-4.243L14.435 2.322a1 1 0 011.414 0l2.829 2.829a1 1 0 010 1.414L7.243 18zM3 20h18v2H3v-2z\"/>' }, qd = { name: \"ri-edit-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M6.414 16L16.556 5.858l-1.414-1.414L5 14.586V16h1.414zm.829 2H3v-4.243L14.435 2.322a1 1 0 011.414 0l2.829 2.829a1 1 0 010 1.414L7.243 18zM3 20h18v2H3v-2z\"/>' }, Gd = { name: \"ri-error-warning-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-7v2h2v-2h-2zm0-8v6h2V7h-2z\"/>' }, Kd = { name: \"ri-error-warning-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-2a8 8 0 100-16 8 8 0 000 16zm-1-5h2v2h-2v-2zm0-8h2v6h-2V7z\"/>' }, Ud = { name: \"ri-external-link-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M10 6v2H5v11h11v-5h2v6a1 1 0 01-1 1H4a1 1 0 01-1-1V7a1 1 0 011-1h6zm11-3v8h-2V6.413l-7.793 7.794-1.414-1.414L17.585 5H13V3h8z\"/>' }, Wd = { name: \"ri-eye-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12 3c5.392 0 9.878 3.88 10.819 9-.94 5.12-5.427 9-10.819 9-5.392 0-9.878-3.88-10.819-9C2.121 6.88 6.608 3 12 3zm0 16a9.005 9.005 0 008.777-7 9.005 9.005 0 00-17.554 0A9.005 9.005 0 0012 19zm0-2.5a4.5 4.5 0 110-9 4.5 4.5 0 010 9zm0-2a2.5 2.5 0 100-5 2.5 2.5 0 000 5z\"/>' }, Zd = { name: \"ri-eye-off-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M17.882 19.297A10.949 10.949 0 0112 21c-5.392 0-9.878-3.88-10.819-9a10.982 10.982 0 013.34-6.066L1.392 2.808l1.415-1.415 19.799 19.8-1.415 1.414-3.31-3.31zM5.935 7.35A8.965 8.965 0 003.223 12a9.005 9.005 0 0013.201 5.838l-2.028-2.028A4.5 4.5 0 018.19 9.604L5.935 7.35zm6.979 6.978l-3.242-3.242a2.5 2.5 0 003.241 3.241zm7.893 2.264l-1.431-1.43A8.935 8.935 0 0020.777 12 9.005 9.005 0 009.552 5.338L7.974 3.76C9.221 3.27 10.58 3 12 3c5.392 0 9.878 3.88 10.819 9a10.947 10.947 0 01-2.012 4.592zm-9.084-9.084a4.5 4.5 0 014.769 4.769l-4.77-4.769z\"/>' }, Jd = { name: \"ri-facebook-circle-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12 2C6.477 2 2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.879V14.89h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.562V12h2.773l-.443 2.89h-2.33v6.989C18.343 21.129 22 16.99 22 12c0-5.523-4.477-10-10-10z\"/>' }, xd = { name: \"ri-file-download-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M16 2l5 5v14.008a.993.993 0 01-.993.992H3.993A1 1 0 013 21.008V2.992C3 2.444 3.445 2 3.993 2H16zm-3 10V8h-2v4H8l4 4 4-4h-3z\"/>' }, eu = { name: \"ri-file-download-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M13 12h3l-4 4-4-4h3V8h2v4zm2-8H5v16h14V8h-4V4zM3 2.992C3 2.444 3.447 2 3.999 2H16l5 5v13.993A1 1 0 0120.007 22H3.993A1 1 0 013 21.008V2.992z\"/>' }, tu = { name: \"ri-file-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M3 8l6.003-6h10.995C20.55 2 21 2.455 21 2.992v18.016a.993.993 0 01-.993.992H3.993A1 1 0 013 20.993V8zm7-4.5L4.5 9H10V3.5z\"/>' }, au = { name: \"ri-file-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M9 2.003V2h10.998C20.55 2 21 2.455 21 2.992v18.016a.993.993 0 01-.993.992H3.993A1 1 0 013 20.993V8l6-5.997zM5.83 8H9V4.83L5.83 8zM11 4v5a1 1 0 01-1 1H5v10h14V4h-8z\"/>' }, nu = { name: \"ri-file-pdf-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M16 2l5 5v14.008a.993.993 0 01-.993.992H3.993A1 1 0 013 21.008V2.992C3 2.444 3.445 2 3.993 2H16zm-4 14a4 4 0 100-8H8v8h4zm-2-6h2a2 2 0 110 4h-2v-4z\"/>' }, ru = { name: \"ri-file-pdf-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12 16H8V8h4a4 4 0 110 8zm-2-6v4h2a2 2 0 100-4h-2zm5-6H5v16h14V8h-4V4zM3 2.992C3 2.444 3.447 2 3.999 2H16l5 5v13.993A1 1 0 0120.007 22H3.993A1 1 0 013 21.008V2.992z\"/>' }, lu = { name: \"ri-information-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z\"/>' }, su = { name: \"ri-information-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-2a8 8 0 100-16 8 8 0 000 16zM11 7h2v2h-2V7zm0 4h2v6h-2v-6z\"/>' }, iu = { name: \"ri-instagram-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12 2c2.717 0 3.056.01 4.122.06 1.065.05 1.79.217 2.428.465.66.254 1.216.598 1.772 1.153a4.908 4.908 0 011.153 1.772c.247.637.415 1.363.465 2.428.047 1.066.06 1.405.06 4.122 0 2.717-.01 3.056-.06 4.122-.05 1.065-.218 1.79-.465 2.428a4.883 4.883 0 01-1.153 1.772 4.915 4.915 0 01-1.772 1.153c-.637.247-1.363.415-2.428.465-1.066.047-1.405.06-4.122.06-2.717 0-3.056-.01-4.122-.06-1.065-.05-1.79-.218-2.428-.465a4.89 4.89 0 01-1.772-1.153 4.904 4.904 0 01-1.153-1.772c-.248-.637-.415-1.363-.465-2.428C2.013 15.056 2 14.717 2 12c0-2.717.01-3.056.06-4.122.05-1.066.217-1.79.465-2.428a4.88 4.88 0 011.153-1.772A4.897 4.897 0 015.45 2.525c.638-.248 1.362-.415 2.428-.465C8.944 2.013 9.283 2 12 2zm0 5a5 5 0 100 10 5 5 0 000-10zm6.5-.25a1.25 1.25 0 00-2.5 0 1.25 1.25 0 002.5 0zM12 9a3 3 0 110 6 3 3 0 010-6z\"/>' }, ou = { name: \"ri-linkedin-box-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M18.335 18.339H15.67v-4.177c0-.996-.02-2.278-1.39-2.278-1.389 0-1.601 1.084-1.601 2.205v4.25h-2.666V9.75h2.56v1.17h.035c.358-.674 1.228-1.387 2.528-1.387 2.7 0 3.2 1.778 3.2 4.091v4.715zM7.003 8.575a1.546 1.546 0 01-1.548-1.549 1.548 1.548 0 111.547 1.549zm1.336 9.764H5.666V9.75H8.34v8.589zM19.67 3H4.329C3.593 3 3 3.58 3 4.297v15.406C3 20.42 3.594 21 4.328 21h15.338C20.4 21 21 20.42 21 19.703V4.297C21 3.58 20.4 3 19.666 3h.003z\"/>' }, du = { name: \"ri-lock-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M19 10h1a1 1 0 011 1v10a1 1 0 01-1 1H4a1 1 0 01-1-1V11a1 1 0 011-1h1V9a7 7 0 1114 0v1zm-2 0V9A5 5 0 007 9v1h10zm-6 4v4h2v-4h-2z\"/>' }, uu = { name: \"ri-lock-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M19 10h1a1 1 0 011 1v10a1 1 0 01-1 1H4a1 1 0 01-1-1V11a1 1 0 011-1h1V9a7 7 0 1114 0v1zM5 12v8h14v-8H5zm6 2h2v4h-2v-4zm6-4V9A5 5 0 007 9v1h10z\"/>' }, cu = { name: \"ri-mail-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M3 3h18a1 1 0 011 1v16a1 1 0 01-1 1H3a1 1 0 01-1-1V4a1 1 0 011-1zm9.06 8.683L5.648 6.238 4.353 7.762l7.72 6.555 7.581-6.56-1.308-1.513-6.285 5.439z\"/>' }, fu = { name: \"ri-mail-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M3 3h18a1 1 0 011 1v16a1 1 0 01-1 1H3a1 1 0 01-1-1V4a1 1 0 011-1zm17 4.238l-7.928 7.1L4 7.216V19h16V7.238zM4.511 5l7.55 6.662L19.502 5H4.511z\"/>' }, pu = { name: \"ri-menu-2-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M3 4h18v2H3V4zm0 7h12v2H3v-2zm0 7h18v2H3v-2z\"/>' }, hu = { name: \"ri-menu-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M3 4h18v2H3V4zm0 7h18v2H3v-2zm0 7h18v2H3v-2z\"/>' }, vu = { name: \"ri-pause-circle-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zM9 9v6h2V9H9zm4 0v6h2V9h-2z\"/>' }, mu = { name: \"ri-pause-circle-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-2a8 8 0 100-16 8 8 0 000 16zM9 9h2v6H9V9zm4 0h2v6h-2V9z\"/>' }, gu = { name: \"ri-play-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M19.376 12.416L8.777 19.482A.5.5 0 018 19.066V4.934a.5.5 0 01.777-.416l10.599 7.066a.5.5 0 010 .832z\"/>' }, bu = { name: \"ri-play-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M16.394 12L10 7.737v8.526L16.394 12zm2.982.416L8.777 19.482A.5.5 0 018 19.066V4.934a.5.5 0 01.777-.416l10.599 7.066a.5.5 0 010 .832z\"/>' }, ku = { name: \"ri-printer-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M7 17h10v5H7v-5zm12 3v-5H5v5H3a1 1 0 01-1-1V9a1 1 0 011-1h18a1 1 0 011 1v10a1 1 0 01-1 1h-2zM5 10v2h3v-2H5zm2-8h10a1 1 0 011 1v3H6V3a1 1 0 011-1z\"/>' }, yu = { name: \"ri-printer-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M6 19H3a1 1 0 01-1-1V8a1 1 0 011-1h3V3a1 1 0 011-1h10a1 1 0 011 1v4h3a1 1 0 011 1v10a1 1 0 01-1 1h-3v2a1 1 0 01-1 1H7a1 1 0 01-1-1v-2zm0-2v-1a1 1 0 011-1h10a1 1 0 011 1v1h2V9H4v8h2zM8 4v3h8V4H8zm0 13v3h8v-3H8zm-3-7h3v2H5v-2z\"/>' }, _u = { name: \"ri-question-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-7v2h2v-2h-2zm2-1.645A3.502 3.502 0 0012 6.5a3.501 3.501 0 00-3.433 2.813l1.962.393A1.5 1.5 0 1112 11.5a1 1 0 00-1 1V14h2v-.645z\"/>' }, wu = { name: \"ri-question-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-2a8 8 0 100-16 8 8 0 000 16zm-1-5h2v2h-2v-2zm2-1.645V14h-2v-1.5a1 1 0 011-1 1.5 1.5 0 10-1.471-1.794l-1.962-.393A3.501 3.501 0 1113 13.355z\"/>' }, Du = { name: \"ri-save-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M18 21v-8H6v8H4a1 1 0 01-1-1V4a1 1 0 011-1h13l4 4v13a1 1 0 01-1 1h-2zm-2 0H8v-6h8v6z\"/>' }, Mu = { name: \"ri-save-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M7 19v-6h10v6h2V7.828L16.172 5H5v14h2zM4 3h13l4 4v13a1 1 0 01-1 1H4a1 1 0 01-1-1V4a1 1 0 011-1zm5 12v4h6v-4H9z\"/>' }, zu = { name: \"ri-search-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M18.031 16.617l4.283 4.282-1.415 1.415-4.282-4.283A8.96 8.96 0 0111 20c-4.968 0-9-4.032-9-9s4.032-9 9-9 9 4.032 9 9a8.96 8.96 0 01-1.969 5.617z\"/>' }, Cu = { name: \"ri-search-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M18.031 16.617l4.283 4.282-1.415 1.415-4.282-4.283A8.96 8.96 0 0111 20c-4.968 0-9-4.032-9-9s4.032-9 9-9 9 4.032 9 9a8.96 8.96 0 01-1.969 5.617zm-2.006-.742A6.977 6.977 0 0018 11c0-3.868-3.133-7-7-7-3.868 0-7 3.132-7 7 0 3.867 3.132 7 7 7a6.977 6.977 0 004.875-1.975l.15-.15z\"/>' }, $u = { name: \"ri-skip-back-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M8 11.333l10.223-6.815a.5.5 0 01.777.416v14.132a.5.5 0 01-.777.416L8 12.667V19a1 1 0 01-2 0V5a1 1 0 112 0v6.333z\"/>' }, Lu = { name: \"ri-skip-forward-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M16 12.667L5.777 19.482A.5.5 0 015 19.066V4.934a.5.5 0 01.777-.416L16 11.333V5a1 1 0 012 0v14a1 1 0 01-2 0v-6.333z\"/>' }, Iu = { name: \"ri-sort-asc\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M19 3l4 5h-3v12h-2V8h-3l4-5zm-5 15v2H3v-2h11zm0-7v2H3v-2h11zm-2-7v2H3V4h9z\"/>' }, Tu = { name: \"ri-sort-desc\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M20 4v12h3l-4 5-4-5h3V4h2zm-8 14v2H3v-2h9zm2-7v2H3v-2h11zm0-7v2H3V4h11z\"/>' }, Su = { name: \"ri-subtract-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M5 11h14v2H5z\"/>' }, Eu = { name: \"ri-twitter-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M22.162 5.656a8.384 8.384 0 01-2.402.658A4.196 4.196 0 0021.6 4c-.82.488-1.719.83-2.656 1.015a4.182 4.182 0 00-7.126 3.814 11.874 11.874 0 01-8.62-4.37 4.168 4.168 0 00-.566 2.103c0 1.45.738 2.731 1.86 3.481a4.168 4.168 0 01-1.894-.523v.052a4.185 4.185 0 003.355 4.101 4.21 4.21 0 01-1.89.072A4.185 4.185 0 007.97 16.65a8.394 8.394 0 01-6.191 1.732 11.83 11.83 0 006.41 1.88c7.693 0 11.9-6.373 11.9-11.9 0-.18-.005-.362-.013-.54a8.496 8.496 0 002.087-2.165z\"/>' }, Au = { name: \"ri-user-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M4 22a8 8 0 1116 0H4zm8-9c-3.315 0-6-2.685-6-6s2.685-6 6-6 6 2.685 6 6-2.685 6-6 6z\"/>' }, Hu = { name: \"ri-user-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M4 22a8 8 0 1116 0h-2a6 6 0 10-12 0H4zm8-9c-3.315 0-6-2.685-6-6s2.685-6 6-6 6 2.685 6 6-2.685 6-6 6zm0-2c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4z\"/>' }, Bu = { name: \"ri-volume-down-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M8.889 16H5a1 1 0 01-1-1V9a1 1 0 011-1h3.889l5.294-4.332a.5.5 0 01.817.387v15.89a.5.5 0 01-.817.387L8.89 16zm9.974.591l-1.422-1.422A3.993 3.993 0 0019 12c0-1.43-.75-2.685-1.88-3.392l1.439-1.439A5.991 5.991 0 0121 12c0 1.842-.83 3.49-2.137 4.591z\"/>' }, Fu = { name: \"ri-volume-down-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M13 7.22L9.603 10H6v4h3.603L13 16.78V7.22zM8.889 16H5a1 1 0 01-1-1V9a1 1 0 011-1h3.889l5.294-4.332a.5.5 0 01.817.387v15.89a.5.5 0 01-.817.387L8.89 16zm9.974.591l-1.422-1.422A3.993 3.993 0 0019 12c0-1.43-.75-2.685-1.88-3.392l1.439-1.439A5.991 5.991 0 0121 12c0 1.842-.83 3.49-2.137 4.591z\"/>' }, Ru = { name: \"ri-volume-mute-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M5.889 16H2a1 1 0 01-1-1V9a1 1 0 011-1h3.889l5.294-4.332a.5.5 0 01.817.387v15.89a.5.5 0 01-.817.387L5.89 16zm14.525-4l3.536 3.536-1.414 1.414L19 13.414l-3.536 3.536-1.414-1.414L17.586 12 14.05 8.464l1.414-1.414L19 10.586l3.536-3.536 1.414 1.414L20.414 12z\"/>' }, Nu = { name: \"ri-volume-mute-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M10 7.22L6.603 10H3v4h3.603L10 16.78V7.22zM5.889 16H2a1 1 0 01-1-1V9a1 1 0 011-1h3.889l5.294-4.332a.5.5 0 01.817.387v15.89a.5.5 0 01-.817.387L5.89 16zm14.525-4l3.536 3.536-1.414 1.414L19 13.414l-3.536 3.536-1.414-1.414L17.586 12 14.05 8.464l1.414-1.414L19 10.586l3.536-3.536 1.414 1.414L20.414 12z\"/>' }, Vu = { name: \"ri-volume-up-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M5.889 16H2a1 1 0 01-1-1V9a1 1 0 011-1h3.889l5.294-4.332a.5.5 0 01.817.387v15.89a.5.5 0 01-.817.387L5.89 16zm13.517 4.134l-1.416-1.416A8.978 8.978 0 0021 12a8.982 8.982 0 00-3.304-6.968l1.42-1.42A10.976 10.976 0 0123 12c0 3.223-1.386 6.122-3.594 8.134zm-3.543-3.543l-1.422-1.422A3.993 3.993 0 0016 12c0-1.43-.75-2.685-1.88-3.392l1.439-1.439A5.991 5.991 0 0118 12c0 1.842-.83 3.49-2.137 4.591z\"/>' }, Pu = { name: \"ri-volume-up-line\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M10 7.22L6.603 10H3v4h3.603L10 16.78V7.22zM5.889 16H2a1 1 0 01-1-1V9a1 1 0 011-1h3.889l5.294-4.332a.5.5 0 01.817.387v15.89a.5.5 0 01-.817.387L5.89 16zm13.517 4.134l-1.416-1.416A8.978 8.978 0 0021 12a8.982 8.982 0 00-3.304-6.968l1.42-1.42A10.976 10.976 0 0123 12c0 3.223-1.386 6.122-3.594 8.134zm-3.543-3.543l-1.422-1.422A3.993 3.993 0 0016 12c0-1.43-.75-2.685-1.88-3.392l1.439-1.439A5.991 5.991 0 0118 12c0 1.842-.83 3.49-2.137 4.591z\"/>' }, Xu = { name: \"ri-youtube-fill\", minX: 0, minY: 0, width: 24, height: 24, raw: '<path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M21.543 6.498C22 8.28 22 12 22 12s0 3.72-.457 5.502c-.254.985-.997 1.76-1.938 2.022C17.896 20 12 20 12 20s-5.893 0-7.605-.476c-.945-.266-1.687-1.04-1.938-2.022C2 15.72 2 12 2 12s0-3.72.457-5.502c.254-.985.997-1.76 1.938-2.022C6.107 4 12 4 12 4s5.896 0 7.605.476c.945.266 1.687 1.04 1.938 2.022zM10 15.5l6-3.5-6-3.5v7z\"/>' }, Yu = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  RiAccountCircleFill: kd,\n  RiAccountCircleLine: yd,\n  RiAddLine: _d,\n  RiAlertFill: wd,\n  RiAlertLine: Dd,\n  RiArrowDownLine: Md,\n  RiArrowDownSLine: zd,\n  RiArrowDropDownLine: Cd,\n  RiArrowLeftLine: $d,\n  RiArrowLeftSLine: Ld,\n  RiArrowRightLine: Id,\n  RiArrowRightSLine: Td,\n  RiArrowUpLine: Sd,\n  RiArrowUpSLine: Ed,\n  RiChat1Line: Ad,\n  RiChatQuoteLine: Hd,\n  RiCheckLine: Bd,\n  RiCheckboxCircleFill: Fd,\n  RiCheckboxCircleLine: Rd,\n  RiCloseCircleFill: Nd,\n  RiCloseCircleLine: Vd,\n  RiCloseLine: Pd,\n  RiDeleteBinFill: Xd,\n  RiDeleteBinLine: Yd,\n  RiDoubleQuotesL: jd,\n  RiDownloadLine: Od,\n  RiEditFill: Qd,\n  RiEditLine: qd,\n  RiErrorWarningFill: Gd,\n  RiErrorWarningLine: Kd,\n  RiExternalLinkLine: Ud,\n  RiEyeLine: Wd,\n  RiEyeOffLine: Zd,\n  RiFacebookCircleFill: Jd,\n  RiFileDownloadFill: xd,\n  RiFileDownloadLine: eu,\n  RiFileFill: tu,\n  RiFileLine: au,\n  RiFilePdfFill: nu,\n  RiFilePdfLine: ru,\n  RiInformationFill: lu,\n  RiInformationLine: su,\n  RiInstagramFill: iu,\n  RiLinkedinBoxFill: ou,\n  RiLockFill: du,\n  RiLockLine: uu,\n  RiMailFill: cu,\n  RiMailLine: fu,\n  RiMenu2Fill: pu,\n  RiMenuFill: hu,\n  RiPauseCircleFill: vu,\n  RiPauseCircleLine: mu,\n  RiPlayFill: gu,\n  RiPlayLine: bu,\n  RiPrinterFill: ku,\n  RiPrinterLine: yu,\n  RiQuestionFill: _u,\n  RiQuestionLine: wu,\n  RiSaveFill: Du,\n  RiSaveLine: Mu,\n  RiSearchFill: zu,\n  RiSearchLine: Cu,\n  RiSkipBackFill: $u,\n  RiSkipForwardFill: Lu,\n  RiSortAsc: Iu,\n  RiSortDesc: Tu,\n  RiSubtractLine: Su,\n  RiTwitterFill: Eu,\n  RiUserFill: Au,\n  RiUserLine: Hu,\n  RiVolumeDownFill: Bu,\n  RiVolumeDownLine: Fu,\n  RiVolumeMuteFill: Ru,\n  RiVolumeMuteLine: Nu,\n  RiVolumeUpFill: Vu,\n  RiVolumeUpLine: Pu,\n  RiYoutubeFill: Xu\n}, Symbol.toStringTag, { value: \"Module\" })), Gu = {\n  install: (l, { icons: e, components: a } = {}) => {\n    Object.entries(bd).forEach(([t, n]) => {\n      (a === void 0 || a === \"all\" || a.map(({ name: o }) => o).includes(t)) && l.component(t, n);\n    }), Ke(...Object.values(Yu)), e && Ke(...e), l.component(\"VIcon\", fe);\n  }\n};\nexport {\n  na as DsfrAccordion,\n  ra as DsfrAccordionsGroup,\n  oa as DsfrAlert,\n  Kt as DsfrBackToTop,\n  da as DsfrBadge,\n  va as DsfrBreadcrumb,\n  He as DsfrButton,\n  Be as DsfrButtonGroup,\n  Ma as DsfrCallout,\n  Fa as DsfrCard,\n  ot as DsfrCheckbox,\n  Ka as DsfrCheckboxSet,\n  Ja as DsfrConsent,\n  dn as DsfrErrorPage,\n  hn as DsfrFieldset,\n  dt as DsfrFileDownload,\n  kn as DsfrFileDownloadList,\n  zn as DsfrFileUpload,\n  Gn as DsfrFollow,\n  yr as DsfrFooter,\n  Mr as DsfrFooterLinkList,\n  ft as DsfrFooterPartners,\n  Ir as DsfrFranceConnect,\n  dl as DsfrHeader,\n  pt as DsfrHeaderMenuLink,\n  Ye as DsfrHeaderMenuLinks,\n  cl as DsfrHighlight,\n  qe as DsfrInput,\n  hl as DsfrInputGroup,\n  wl as DsfrLanguageSelector,\n  Qe as DsfrLogo,\n  us as DsfrModal,\n  Es as DsfrNavigation,\n  yt as DsfrNavigationItem,\n  Mt as DsfrNavigationMegaMenu,\n  Dt as DsfrNavigationMegaMenuCategory,\n  wt as DsfrNavigationMenu,\n  _t as DsfrNavigationMenuItem,\n  Fe as DsfrNavigationMenuLink,\n  ct as DsfrNewsLetter,\n  Rs as DsfrNotice,\n  Ks as DsfrPagination,\n  xs as DsfrPicture,\n  ii as DsfrQuote,\n  zt as DsfrRadioButton,\n  _i as DsfrRadioButtonSet,\n  Xe as DsfrSearchBar,\n  Ii as DsfrSelect,\n  Ri as DsfrShare,\n  qi as DsfrSideMenu,\n  $t as DsfrSideMenuButton,\n  Gi as DsfrSideMenuLink,\n  Lt as DsfrSideMenuList,\n  Ct as DsfrSideMenuListItem,\n  Ji as DsfrSkipLinks,\n  ut as DsfrSocialNetworks,\n  lo as DsfrStepper,\n  co as DsfrSummary,\n  It as DsfrTabContent,\n  Tt as DsfrTabItem,\n  So as DsfrTable,\n  St as DsfrTableCell,\n  At as DsfrTableHeader,\n  Ht as DsfrTableHeaders,\n  Et as DsfrTableRow,\n  Ao as DsfrTabs,\n  Bt as DsfrTag,\n  Ro as DsfrTags,\n  Ft as DsfrTile,\n  Ko as DsfrTiles,\n  xo as DsfrToggleSwitch,\n  Rt as DsfrTranscription,\n  gd as DsfrVideo,\n  Ue as alphanum,\n  Gu as default,\n  Wt as getRandomAlphaNum,\n  Y as getRandomId,\n  Zt as getRandomString,\n  Yu as icons,\n  Qu as repeatFn,\n  oe as useCollapsable,\n  qu as useScheme\n};\n","import { getLocalizedUrl } from \"../helpers/i18n\";\nimport { type Frequencies } from \"../types/frequency\";\nimport { api } from \"./api\";\n\nlet frequenciesRequest: Promise<Frequencies>;\n\nexport function getFrequencies(frequencies: Frequencies, id: string): string | null {\n  const frequency = frequencies.find((f: any) => f.id.toLowerCase() === id.toLowerCase());\n  return frequency ? frequency.label : null;\n}\n\nexport function getFrequenciesUrl() {\n  return getLocalizedUrl('/datasets/frequencies/');\n}\n\nexport function fetchFrequencies(): Promise<Frequencies> {\n  if (frequenciesRequest) {\n    return frequenciesRequest;\n  }\n  return frequenciesRequest = api.get(getFrequenciesUrl())\n  .then((resp) => resp.data);\n}\n","import { getLocalizedUrl } from \"../helpers/i18n\";\nimport { type Granularities } from \"../types/granularity\";\nimport { api } from \"./api\";\n\nlet granularitiesRequest: Promise<Granularities>;\n\nexport function getGranularity(granularities: Granularities, id: string): string | null {\n  const granularity = granularities.find((g: any) => g.id === id);\n  return granularity ? granularity.name : null;\n}\n\nexport function getGranularitiesUrl() {\n  return getLocalizedUrl('/spatial/granularities/');\n}\n\nexport function fetchGranularities(): Promise<Granularities> {\n  if (granularitiesRequest) {\n    return granularitiesRequest;\n  }\n  return granularitiesRequest = api.get(getGranularitiesUrl())\n  .then((resp) => resp.data);\n}\n","import type { AxiosResponse } from \"axios\";\nimport { api } from \"./api\";\n/**\n * A schema version.\n */\nexport type SchemaVersion = {\n  version_name: string;\n  schema_url: string;\n}\n\n/**\n * A schema from the schema catalog\n */\nexport type RegisteredSchema = {\n  name: string;\n  schema_type: string;\n  versions: Array<SchemaVersion>;\n}\n\n/**\n * A schema associated with a resource.\n */\nexport type Schema = {\n  name?: string\n  url ?: string\n  version ?: string\n} | null;\n\nexport interface ValidataError {\n  code: string;\n  description: string;\n  fieldName: string;\n  fieldNumber: number;\n  fieldPosition: number;\n  message: string;\n  name: string;\n  note: string;\n  rowNumber: number;\n  rowPosition: number;\n}\nexport type SchemaResponseData = Array<RegisteredSchema>;\nexport type SchemaResponse = AxiosResponse<SchemaResponseData>;\n\nlet catalogRequest: Promise<Array<RegisteredSchema>> | null = null;\n\n/**\n * Get Schema Catalog\n */\nexport function getCatalog() {\n  if (catalogRequest) {\n    return catalogRequest;\n  }\n  catalogRequest = api.get<SchemaResponseData>(\"datasets/schemas/\")\n  .then((resp) => resp.data)\n  return catalogRequest;\n}\n","<template>\n  <a v-if=\"isExternalLink(to)\" v-bind=\"externalAttrs\" :href=\"to\">\n    <slot></slot>\n  </a>\n  <router-link\n    v-else\n    v-bind=\"$props\"\n  >\n    <slot></slot>\n  </router-link>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, inject, useAttrs } from 'vue';\nimport { RouterLink, type RouterLinkProps, routerKey, type RouteLocationRaw } from 'vue-router';\nwithDefaults(defineProps<{ to: RouteLocationRaw } & RouterLinkProps>(), {\n  ariaCurrentValue: \"page\",\n});\nconst router = inject(routerKey, null);\nconst attrs = useAttrs();\nconst externalAttrs = computed(() => ({\n  ...attrs,\n  target: router ? \"_blank\" : attrs.target\n}));\nfunction isExternalLink(link: RouteLocationRaw): boolean {\n  return !router || typeof link === 'string' && link.startsWith('http');\n}\n</script>\n","/*!\n * clipboard.js v2.0.11\n * https://clipboardjs.com/\n *\n * Licensed MIT © Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  \"default\": function() { return /* binding */ clipboard; }\n});\n\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(279);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(370);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(817);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n;// CONCATENATED MODULE: ./src/common/command.js\n/**\n * Executes a given operation type.\n * @param {String} type\n * @return {Boolean}\n */\nfunction command(type) {\n  try {\n    return document.execCommand(type);\n  } catch (err) {\n    return false;\n  }\n}\n;// CONCATENATED MODULE: ./src/actions/cut.js\n\n\n/**\n * Cut action wrapper.\n * @param {String|HTMLElement} target\n * @return {String}\n */\n\nvar ClipboardActionCut = function ClipboardActionCut(target) {\n  var selectedText = select_default()(target);\n  command('cut');\n  return selectedText;\n};\n\n/* harmony default export */ var actions_cut = (ClipboardActionCut);\n;// CONCATENATED MODULE: ./src/common/create-fake-element.js\n/**\n * Creates a fake textarea element with a value.\n * @param {String} value\n * @return {HTMLElement}\n */\nfunction createFakeElement(value) {\n  var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n  var fakeElement = document.createElement('textarea'); // Prevent zooming on iOS\n\n  fakeElement.style.fontSize = '12pt'; // Reset box model\n\n  fakeElement.style.border = '0';\n  fakeElement.style.padding = '0';\n  fakeElement.style.margin = '0'; // Move element out of screen horizontally\n\n  fakeElement.style.position = 'absolute';\n  fakeElement.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n  var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n  fakeElement.style.top = \"\".concat(yPosition, \"px\");\n  fakeElement.setAttribute('readonly', '');\n  fakeElement.value = value;\n  return fakeElement;\n}\n;// CONCATENATED MODULE: ./src/actions/copy.js\n\n\n\n/**\n * Create fake copy action wrapper using a fake element.\n * @param {String} target\n * @param {Object} options\n * @return {String}\n */\n\nvar fakeCopyAction = function fakeCopyAction(value, options) {\n  var fakeElement = createFakeElement(value);\n  options.container.appendChild(fakeElement);\n  var selectedText = select_default()(fakeElement);\n  command('copy');\n  fakeElement.remove();\n  return selectedText;\n};\n/**\n * Copy action wrapper.\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @return {String}\n */\n\n\nvar ClipboardActionCopy = function ClipboardActionCopy(target) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n    container: document.body\n  };\n  var selectedText = '';\n\n  if (typeof target === 'string') {\n    selectedText = fakeCopyAction(target, options);\n  } else if (target instanceof HTMLInputElement && !['text', 'search', 'url', 'tel', 'password'].includes(target === null || target === void 0 ? void 0 : target.type)) {\n    // If input type doesn't support `setSelectionRange`. Simulate it. https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n    selectedText = fakeCopyAction(target.value, options);\n  } else {\n    selectedText = select_default()(target);\n    command('copy');\n  }\n\n  return selectedText;\n};\n\n/* harmony default export */ var actions_copy = (ClipboardActionCopy);\n;// CONCATENATED MODULE: ./src/actions/default.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n/**\n * Inner function which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n * @param {Object} options\n */\n\nvar ClipboardActionDefault = function ClipboardActionDefault() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  // Defines base properties passed from constructor.\n  var _options$action = options.action,\n      action = _options$action === void 0 ? 'copy' : _options$action,\n      container = options.container,\n      target = options.target,\n      text = options.text; // Sets the `action` to be performed which can be either 'copy' or 'cut'.\n\n  if (action !== 'copy' && action !== 'cut') {\n    throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n  } // Sets the `target` property using an element that will be have its content copied.\n\n\n  if (target !== undefined) {\n    if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n      if (action === 'copy' && target.hasAttribute('disabled')) {\n        throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n      }\n\n      if (action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n        throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n      }\n    } else {\n      throw new Error('Invalid \"target\" value, use a valid Element');\n    }\n  } // Define selection strategy based on `text` property.\n\n\n  if (text) {\n    return actions_copy(text, {\n      container: container\n    });\n  } // Defines which selection strategy based on `target` property.\n\n\n  if (target) {\n    return action === 'cut' ? actions_cut(target) : actions_copy(target, {\n      container: container\n    });\n  }\n};\n\n/* harmony default export */ var actions_default = (ClipboardActionDefault);\n;// CONCATENATED MODULE: ./src/clipboard.js\nfunction clipboard_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return clipboard_typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\nfunction getAttributeValue(suffix, element) {\n  var attribute = \"data-clipboard-\".concat(suffix);\n\n  if (!element.hasAttribute(attribute)) {\n    return;\n  }\n\n  return element.getAttribute(attribute);\n}\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\nvar Clipboard = /*#__PURE__*/function (_Emitter) {\n  _inherits(Clipboard, _Emitter);\n\n  var _super = _createSuper(Clipboard);\n\n  /**\n   * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n   * @param {Object} options\n   */\n  function Clipboard(trigger, options) {\n    var _this;\n\n    _classCallCheck(this, Clipboard);\n\n    _this = _super.call(this);\n\n    _this.resolveOptions(options);\n\n    _this.listenClick(trigger);\n\n    return _this;\n  }\n  /**\n   * Defines if attributes would be resolved using internal setter functions\n   * or custom functions that were passed in the constructor.\n   * @param {Object} options\n   */\n\n\n  _createClass(Clipboard, [{\n    key: \"resolveOptions\",\n    value: function resolveOptions() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n      this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n      this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n      this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n    }\n    /**\n     * Adds a click event listener to the passed trigger.\n     * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n     */\n\n  }, {\n    key: \"listenClick\",\n    value: function listenClick(trigger) {\n      var _this2 = this;\n\n      this.listener = listen_default()(trigger, 'click', function (e) {\n        return _this2.onClick(e);\n      });\n    }\n    /**\n     * Defines a new `ClipboardAction` on each click event.\n     * @param {Event} e\n     */\n\n  }, {\n    key: \"onClick\",\n    value: function onClick(e) {\n      var trigger = e.delegateTarget || e.currentTarget;\n      var action = this.action(trigger) || 'copy';\n      var text = actions_default({\n        action: action,\n        container: this.container,\n        target: this.target(trigger),\n        text: this.text(trigger)\n      }); // Fires an event based on the copy operation result.\n\n      this.emit(text ? 'success' : 'error', {\n        action: action,\n        text: text,\n        trigger: trigger,\n        clearSelection: function clearSelection() {\n          if (trigger) {\n            trigger.focus();\n          }\n\n          window.getSelection().removeAllRanges();\n        }\n      });\n    }\n    /**\n     * Default `action` lookup function.\n     * @param {Element} trigger\n     */\n\n  }, {\n    key: \"defaultAction\",\n    value: function defaultAction(trigger) {\n      return getAttributeValue('action', trigger);\n    }\n    /**\n     * Default `target` lookup function.\n     * @param {Element} trigger\n     */\n\n  }, {\n    key: \"defaultTarget\",\n    value: function defaultTarget(trigger) {\n      var selector = getAttributeValue('target', trigger);\n\n      if (selector) {\n        return document.querySelector(selector);\n      }\n    }\n    /**\n     * Allow fire programmatically a copy action\n     * @param {String|HTMLElement} target\n     * @param {Object} options\n     * @returns Text copied.\n     */\n\n  }, {\n    key: \"defaultText\",\n\n    /**\n     * Default `text` lookup function.\n     * @param {Element} trigger\n     */\n    value: function defaultText(trigger) {\n      return getAttributeValue('text', trigger);\n    }\n    /**\n     * Destroy lifecycle.\n     */\n\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this.listener.destroy();\n    }\n  }], [{\n    key: \"copy\",\n    value: function copy(target) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        container: document.body\n      };\n      return actions_copy(target, options);\n    }\n    /**\n     * Allow fire programmatically a cut action\n     * @param {String|HTMLElement} target\n     * @returns Text cutted.\n     */\n\n  }, {\n    key: \"cut\",\n    value: function cut(target) {\n      return actions_cut(target);\n    }\n    /**\n     * Returns the support of the given action, or all actions if no action is\n     * given.\n     * @param {String} [action]\n     */\n\n  }, {\n    key: \"isSupported\",\n    value: function isSupported() {\n      var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n      var actions = typeof action === 'string' ? [action] : action;\n      var support = !!document.queryCommandSupported;\n      actions.forEach(function (action) {\n        support = support && !!document.queryCommandSupported(action);\n      });\n      return support;\n    }\n  }]);\n\n  return Clipboard;\n}((tiny_emitter_default()));\n\n/* harmony default export */ var clipboard = (Clipboard);\n\n/***/ }),\n\n/***/ 828:\n/***/ (function(module) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n    var proto = Element.prototype;\n\n    proto.matches = proto.matchesSelector ||\n                    proto.mozMatchesSelector ||\n                    proto.msMatchesSelector ||\n                    proto.oMatchesSelector ||\n                    proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n    while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n        if (typeof element.matches === 'function' &&\n            element.matches(selector)) {\n          return element;\n        }\n        element = element.parentNode;\n    }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n\n/***/ 438:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar closest = __webpack_require__(828);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n    var listenerFn = listener.apply(this, arguments);\n\n    element.addEventListener(type, listenerFn, useCapture);\n\n    return {\n        destroy: function() {\n            element.removeEventListener(type, listenerFn, useCapture);\n        }\n    }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n    // Handle the regular Element usage\n    if (typeof elements.addEventListener === 'function') {\n        return _delegate.apply(null, arguments);\n    }\n\n    // Handle Element-less usage, it defaults to global delegation\n    if (typeof type === 'function') {\n        // Use `document` as the first parameter, then apply arguments\n        // This is a short way to .unshift `arguments` without running into deoptimizations\n        return _delegate.bind(null, document).apply(null, arguments);\n    }\n\n    // Handle Selector-based usage\n    if (typeof elements === 'string') {\n        elements = document.querySelectorAll(elements);\n    }\n\n    // Handle Array-like based usage\n    return Array.prototype.map.call(elements, function (element) {\n        return _delegate(element, selector, type, callback, useCapture);\n    });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n    return function(e) {\n        e.delegateTarget = closest(e.target, selector);\n\n        if (e.delegateTarget) {\n            callback.call(element, e);\n        }\n    }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n\n/***/ 879:\n/***/ (function(__unused_webpack_module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n    return value !== undefined\n        && value instanceof HTMLElement\n        && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n    var type = Object.prototype.toString.call(value);\n\n    return value !== undefined\n        && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n        && ('length' in value)\n        && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n    return typeof value === 'string'\n        || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n    var type = Object.prototype.toString.call(value);\n\n    return type === '[object Function]';\n};\n\n\n/***/ }),\n\n/***/ 370:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar is = __webpack_require__(879);\nvar delegate = __webpack_require__(438);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n    if (!target && !type && !callback) {\n        throw new Error('Missing required arguments');\n    }\n\n    if (!is.string(type)) {\n        throw new TypeError('Second argument must be a String');\n    }\n\n    if (!is.fn(callback)) {\n        throw new TypeError('Third argument must be a Function');\n    }\n\n    if (is.node(target)) {\n        return listenNode(target, type, callback);\n    }\n    else if (is.nodeList(target)) {\n        return listenNodeList(target, type, callback);\n    }\n    else if (is.string(target)) {\n        return listenSelector(target, type, callback);\n    }\n    else {\n        throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n    }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n    node.addEventListener(type, callback);\n\n    return {\n        destroy: function() {\n            node.removeEventListener(type, callback);\n        }\n    }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n    Array.prototype.forEach.call(nodeList, function(node) {\n        node.addEventListener(type, callback);\n    });\n\n    return {\n        destroy: function() {\n            Array.prototype.forEach.call(nodeList, function(node) {\n                node.removeEventListener(type, callback);\n            });\n        }\n    }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n    return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n\n/***/ 817:\n/***/ (function(module) {\n\nfunction select(element) {\n    var selectedText;\n\n    if (element.nodeName === 'SELECT') {\n        element.focus();\n\n        selectedText = element.value;\n    }\n    else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n        var isReadOnly = element.hasAttribute('readonly');\n\n        if (!isReadOnly) {\n            element.setAttribute('readonly', '');\n        }\n\n        element.select();\n        element.setSelectionRange(0, element.value.length);\n\n        if (!isReadOnly) {\n            element.removeAttribute('readonly');\n        }\n\n        selectedText = element.value;\n    }\n    else {\n        if (element.hasAttribute('contenteditable')) {\n            element.focus();\n        }\n\n        var selection = window.getSelection();\n        var range = document.createRange();\n\n        range.selectNodeContents(element);\n        selection.removeAllRanges();\n        selection.addRange(range);\n\n        selectedText = selection.toString();\n    }\n\n    return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n\n/***/ 279:\n/***/ (function(module) {\n\nfunction E () {\n  // Keep this empty so it's easier to inherit from\n  // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n  on: function (name, callback, ctx) {\n    var e = this.e || (this.e = {});\n\n    (e[name] || (e[name] = [])).push({\n      fn: callback,\n      ctx: ctx\n    });\n\n    return this;\n  },\n\n  once: function (name, callback, ctx) {\n    var self = this;\n    function listener () {\n      self.off(name, listener);\n      callback.apply(ctx, arguments);\n    };\n\n    listener._ = callback\n    return this.on(name, listener, ctx);\n  },\n\n  emit: function (name) {\n    var data = [].slice.call(arguments, 1);\n    var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n    var i = 0;\n    var len = evtArr.length;\n\n    for (i; i < len; i++) {\n      evtArr[i].fn.apply(evtArr[i].ctx, data);\n    }\n\n    return this;\n  },\n\n  off: function (name, callback) {\n    var e = this.e || (this.e = {});\n    var evts = e[name];\n    var liveEvents = [];\n\n    if (evts && callback) {\n      for (var i = 0, len = evts.length; i < len; i++) {\n        if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n          liveEvents.push(evts[i]);\n      }\n    }\n\n    // Remove event from queue to prevent memory leak\n    // Suggested by https://github.com/lazd\n    // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n    (liveEvents.length)\n      ? e[name] = liveEvents\n      : delete e[name];\n\n    return this;\n  }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(686);\n/******/ })()\n.default;\n});","<template>\n  <button\n    type=\"button\"\n    class=\"fr-btn fr-btn--sm fr-btn--contrast fr-icon-clipboard-line\"\n    :aria-label=\"t('Copy')\"\n    :data-clipboard-text=\"text\"\n    ref=\"buttonRef\"\n  >\n  </button>\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, ref } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport Clipboard from \"clipboard\";\n\ndefineProps<{\n  /**\n   * The text to copy\n   */\n  text: string,\n}>();\n\nconst { t } = useI18n();\nconst buttonRef = ref<HTMLButtonElement | null>(null);\n\nonMounted(() => {\n  if(buttonRef.value) {\n    new Clipboard(buttonRef.value);\n  }\n});\n</script>\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n    for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n};\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n    result.default = mod;\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n","import { __assign } from 'tslib';\n\nvar clamp = function (min, max) { return function (v) {\r\n    return Math.max(Math.min(v, max), min);\r\n}; };\r\nvar sanitize = function (v) { return (v % 1 ? Number(v.toFixed(5)) : v); };\r\nvar floatRegex = /(-)?(\\d[\\d\\.]*)/g;\r\nvar colorRegex = /(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2,3}\\s*\\/*\\s*[\\d\\.]+%?\\))/gi;\r\nvar singleColorRegex = /^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2,3}\\s*\\/*\\s*[\\d\\.]+%?\\))$/i;\n\nvar number = {\r\n    test: function (v) { return typeof v === 'number'; },\r\n    parse: parseFloat,\r\n    transform: function (v) { return v; }\r\n};\r\nvar alpha = __assign(__assign({}, number), { transform: clamp(0, 1) });\r\nvar scale = __assign(__assign({}, number), { default: 1 });\n\nvar createUnitType = function (unit) { return ({\r\n    test: function (v) {\r\n        return typeof v === 'string' && v.endsWith(unit) && v.split(' ').length === 1;\r\n    },\r\n    parse: parseFloat,\r\n    transform: function (v) { return \"\" + v + unit; }\r\n}); };\r\nvar degrees = createUnitType('deg');\r\nvar percent = createUnitType('%');\r\nvar px = createUnitType('px');\r\nvar vh = createUnitType('vh');\r\nvar vw = createUnitType('vw');\r\nvar progressPercentage = __assign(__assign({}, percent), { parse: function (v) { return percent.parse(v) / 100; }, transform: function (v) { return percent.transform(v * 100); } });\n\nvar getValueFromFunctionString = function (value) {\r\n    return value.substring(value.indexOf('(') + 1, value.lastIndexOf(')'));\r\n};\r\nvar clampRgbUnit = clamp(0, 255);\r\nvar isRgba = function (v) { return v.red !== undefined; };\r\nvar isHsla = function (v) { return v.hue !== undefined; };\r\nfunction getValuesAsArray(value) {\r\n    return getValueFromFunctionString(value)\r\n        .replace(/(,|\\/)/g, ' ')\r\n        .split(/ \\s*/);\r\n}\r\nvar splitColorValues = function (terms) {\r\n    return function (v) {\r\n        if (typeof v !== 'string')\r\n            return v;\r\n        var values = {};\r\n        var valuesArray = getValuesAsArray(v);\r\n        for (var i = 0; i < 4; i++) {\r\n            values[terms[i]] =\r\n                valuesArray[i] !== undefined ? parseFloat(valuesArray[i]) : 1;\r\n        }\r\n        return values;\r\n    };\r\n};\r\nvar rgbaTemplate = function (_a) {\r\n    var red = _a.red, green = _a.green, blue = _a.blue, _b = _a.alpha, alpha = _b === void 0 ? 1 : _b;\r\n    return \"rgba(\" + red + \", \" + green + \", \" + blue + \", \" + alpha + \")\";\r\n};\r\nvar hslaTemplate = function (_a) {\r\n    var hue = _a.hue, saturation = _a.saturation, lightness = _a.lightness, _b = _a.alpha, alpha = _b === void 0 ? 1 : _b;\r\n    return \"hsla(\" + hue + \", \" + saturation + \", \" + lightness + \", \" + alpha + \")\";\r\n};\r\nvar rgbUnit = __assign(__assign({}, number), { transform: function (v) { return Math.round(clampRgbUnit(v)); } });\r\nfunction isColorString(color, colorType) {\r\n    return color.startsWith(colorType) && singleColorRegex.test(color);\r\n}\r\nvar rgba = {\r\n    test: function (v) { return (typeof v === 'string' ? isColorString(v, 'rgb') : isRgba(v)); },\r\n    parse: splitColorValues(['red', 'green', 'blue', 'alpha']),\r\n    transform: function (_a) {\r\n        var red = _a.red, green = _a.green, blue = _a.blue, _b = _a.alpha, alpha$1 = _b === void 0 ? 1 : _b;\r\n        return rgbaTemplate({\r\n            red: rgbUnit.transform(red),\r\n            green: rgbUnit.transform(green),\r\n            blue: rgbUnit.transform(blue),\r\n            alpha: sanitize(alpha.transform(alpha$1))\r\n        });\r\n    }\r\n};\r\nvar hsla = {\r\n    test: function (v) { return (typeof v === 'string' ? isColorString(v, 'hsl') : isHsla(v)); },\r\n    parse: splitColorValues(['hue', 'saturation', 'lightness', 'alpha']),\r\n    transform: function (_a) {\r\n        var hue = _a.hue, saturation = _a.saturation, lightness = _a.lightness, _b = _a.alpha, alpha$1 = _b === void 0 ? 1 : _b;\r\n        return hslaTemplate({\r\n            hue: Math.round(hue),\r\n            saturation: percent.transform(sanitize(saturation)),\r\n            lightness: percent.transform(sanitize(lightness)),\r\n            alpha: sanitize(alpha.transform(alpha$1))\r\n        });\r\n    }\r\n};\r\nvar hex = __assign(__assign({}, rgba), { test: function (v) { return typeof v === 'string' && isColorString(v, '#'); }, parse: function (v) {\r\n        var r = '';\r\n        var g = '';\r\n        var b = '';\r\n        if (v.length > 4) {\r\n            r = v.substr(1, 2);\r\n            g = v.substr(3, 2);\r\n            b = v.substr(5, 2);\r\n        }\r\n        else {\r\n            r = v.substr(1, 1);\r\n            g = v.substr(2, 1);\r\n            b = v.substr(3, 1);\r\n            r += r;\r\n            g += g;\r\n            b += b;\r\n        }\r\n        return {\r\n            red: parseInt(r, 16),\r\n            green: parseInt(g, 16),\r\n            blue: parseInt(b, 16),\r\n            alpha: 1\r\n        };\r\n    } });\r\nvar color = {\r\n    test: function (v) {\r\n        return (typeof v === 'string' && singleColorRegex.test(v)) ||\r\n            isRgba(v) ||\r\n            isHsla(v);\r\n    },\r\n    parse: function (v) {\r\n        if (rgba.test(v)) {\r\n            return rgba.parse(v);\r\n        }\r\n        else if (hsla.test(v)) {\r\n            return hsla.parse(v);\r\n        }\r\n        else if (hex.test(v)) {\r\n            return hex.parse(v);\r\n        }\r\n        return v;\r\n    },\r\n    transform: function (v) {\r\n        if (isRgba(v)) {\r\n            return rgba.transform(v);\r\n        }\r\n        else if (isHsla(v)) {\r\n            return hsla.transform(v);\r\n        }\r\n        return v;\r\n    }\r\n};\n\nvar COLOR_TOKEN = '${c}';\r\nvar NUMBER_TOKEN = '${n}';\r\nvar convertNumbersToZero = function (v) {\r\n    return typeof v === 'number' ? 0 : v;\r\n};\r\nvar complex = {\r\n    test: function (v) {\r\n        if (typeof v !== 'string' || !isNaN(v))\r\n            return false;\r\n        var numValues = 0;\r\n        var foundNumbers = v.match(floatRegex);\r\n        var foundColors = v.match(colorRegex);\r\n        if (foundNumbers)\r\n            numValues += foundNumbers.length;\r\n        if (foundColors)\r\n            numValues += foundColors.length;\r\n        return numValues > 0;\r\n    },\r\n    parse: function (v) {\r\n        var input = v;\r\n        var parsed = [];\r\n        var foundColors = input.match(colorRegex);\r\n        if (foundColors) {\r\n            input = input.replace(colorRegex, COLOR_TOKEN);\r\n            parsed.push.apply(parsed, foundColors.map(color.parse));\r\n        }\r\n        var foundNumbers = input.match(floatRegex);\r\n        if (foundNumbers) {\r\n            parsed.push.apply(parsed, foundNumbers.map(number.parse));\r\n        }\r\n        return parsed;\r\n    },\r\n    createTransformer: function (prop) {\r\n        var template = prop;\r\n        var token = 0;\r\n        var foundColors = prop.match(colorRegex);\r\n        var numColors = foundColors ? foundColors.length : 0;\r\n        if (foundColors) {\r\n            for (var i = 0; i < numColors; i++) {\r\n                template = template.replace(foundColors[i], COLOR_TOKEN);\r\n                token++;\r\n            }\r\n        }\r\n        var foundNumbers = template.match(floatRegex);\r\n        var numNumbers = foundNumbers ? foundNumbers.length : 0;\r\n        if (foundNumbers) {\r\n            for (var i = 0; i < numNumbers; i++) {\r\n                template = template.replace(foundNumbers[i], NUMBER_TOKEN);\r\n                token++;\r\n            }\r\n        }\r\n        return function (v) {\r\n            var output = template;\r\n            for (var i = 0; i < token; i++) {\r\n                output = output.replace(i < numColors ? COLOR_TOKEN : NUMBER_TOKEN, i < numColors ? color.transform(v[i]) : sanitize(v[i]));\r\n            }\r\n            return output;\r\n        };\r\n    },\r\n    getAnimatableNone: function (target) {\r\n        var parsedTarget = complex.parse(target);\r\n        var targetTransformer = complex.createTransformer(target);\r\n        return targetTransformer(parsedTarget.map(convertNumbersToZero));\r\n    }\r\n};\n\nexport { alpha, color, complex, degrees, hex, hsla, number, percent, progressPercentage, px, rgbUnit, rgba, scale, vh, vw };\n","var warning = function () { };\r\nvar invariant = function () { };\r\nif (process.env.NODE_ENV !== 'production') {\r\n    warning = function (check, message) {\r\n        if (!check && typeof console !== 'undefined') {\r\n            console.warn(message);\r\n        }\r\n    };\r\n    invariant = function (check, message) {\r\n        if (!check) {\r\n            throw new Error(message);\r\n        }\r\n    };\r\n}\n\nexport { invariant, warning };\n","import { invariant } from 'hey-listen';\n\nvar prevTime = 0;\nvar onNextFrame = typeof window !== 'undefined' && window.requestAnimationFrame !== undefined ? function (callback) {\n    return window.requestAnimationFrame(callback);\n} : function (callback) {\n    var timestamp = Date.now();\n    var timeToCall = Math.max(0, 16.7 - (timestamp - prevTime));\n    prevTime = timestamp + timeToCall;\n    setTimeout(function () {\n        return callback(prevTime);\n    }, timeToCall);\n};\n\nvar createStep = function (setRunNextFrame) {\n    var processToRun = [];\n    var processToRunNextFrame = [];\n    var numThisFrame = 0;\n    var isProcessing = false;\n    var i = 0;\n    var cancelled = new WeakSet();\n    var toKeepAlive = new WeakSet();\n    var renderStep = {\n        cancel: function (process) {\n            var indexOfCallback = processToRunNextFrame.indexOf(process);\n            cancelled.add(process);\n            if (indexOfCallback !== -1) {\n                processToRunNextFrame.splice(indexOfCallback, 1);\n            }\n        },\n        process: function (frame) {\n            var _a;\n            isProcessing = true;\n            _a = [processToRunNextFrame, processToRun], processToRun = _a[0], processToRunNextFrame = _a[1];\n            processToRunNextFrame.length = 0;\n            numThisFrame = processToRun.length;\n            if (numThisFrame) {\n                var process_1;\n                for (i = 0; i < numThisFrame; i++) {\n                    process_1 = processToRun[i];\n                    process_1(frame);\n                    if (toKeepAlive.has(process_1) === true && !cancelled.has(process_1)) {\n                        renderStep.schedule(process_1);\n                        setRunNextFrame(true);\n                    }\n                }\n            }\n            isProcessing = false;\n        },\n        schedule: function (process, keepAlive, immediate) {\n            if (keepAlive === void 0) {\n                keepAlive = false;\n            }\n            if (immediate === void 0) {\n                immediate = false;\n            }\n            invariant(typeof process === \"function\", \"Argument must be a function\");\n            var addToCurrentBuffer = immediate && isProcessing;\n            var buffer = addToCurrentBuffer ? processToRun : processToRunNextFrame;\n            cancelled.delete(process);\n            if (keepAlive) toKeepAlive.add(process);\n            if (buffer.indexOf(process) === -1) {\n                buffer.push(process);\n                if (addToCurrentBuffer) numThisFrame = processToRun.length;\n            }\n        }\n    };\n    return renderStep;\n};\n\nvar maxElapsed = 40;\nvar defaultElapsed = 1 / 60 * 1000;\nvar useDefaultElapsed = true;\nvar willRunNextFrame = false;\nvar isProcessing = false;\nvar frame = {\n    delta: 0,\n    timestamp: 0\n};\nvar stepsOrder = [\"read\", \"update\", \"preRender\", \"render\", \"postRender\"];\nvar setWillRunNextFrame = function (willRun) {\n    return willRunNextFrame = willRun;\n};\nvar steps = /*#__PURE__*/stepsOrder.reduce(function (acc, key) {\n    acc[key] = createStep(setWillRunNextFrame);\n    return acc;\n}, {});\nvar sync = /*#__PURE__*/stepsOrder.reduce(function (acc, key) {\n    var step = steps[key];\n    acc[key] = function (process, keepAlive, immediate) {\n        if (keepAlive === void 0) {\n            keepAlive = false;\n        }\n        if (immediate === void 0) {\n            immediate = false;\n        }\n        if (!willRunNextFrame) startLoop();\n        step.schedule(process, keepAlive, immediate);\n        return process;\n    };\n    return acc;\n}, {});\nvar cancelSync = /*#__PURE__*/stepsOrder.reduce(function (acc, key) {\n    acc[key] = steps[key].cancel;\n    return acc;\n}, {});\nvar processStep = function (stepId) {\n    return steps[stepId].process(frame);\n};\nvar processFrame = function (timestamp) {\n    willRunNextFrame = false;\n    frame.delta = useDefaultElapsed ? defaultElapsed : Math.max(Math.min(timestamp - frame.timestamp, maxElapsed), 1);\n    if (!useDefaultElapsed) defaultElapsed = frame.delta;\n    frame.timestamp = timestamp;\n    isProcessing = true;\n    stepsOrder.forEach(processStep);\n    isProcessing = false;\n    if (willRunNextFrame) {\n        useDefaultElapsed = false;\n        onNextFrame(processFrame);\n    }\n};\nvar startLoop = function () {\n    willRunNextFrame = true;\n    useDefaultElapsed = true;\n    if (!isProcessing) onNextFrame(processFrame);\n};\nvar getFrameData = function () {\n    return frame;\n};\n\nexport default sync;\nexport { cancelSync, getFrameData };\n","var DEFAULT_OVERSHOOT_STRENGTH = 1.525;\nvar reversed = function (easing) {\n    return function (p) {\n        return 1 - easing(1 - p);\n    };\n};\nvar mirrored = function (easing) {\n    return function (p) {\n        return p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;\n    };\n};\nvar createReversedEasing = reversed;\nvar createMirroredEasing = mirrored;\nvar createExpoIn = function (power) {\n    return function (p) {\n        return Math.pow(p, power);\n    };\n};\nvar createBackIn = function (power) {\n    return function (p) {\n        return p * p * ((power + 1) * p - power);\n    };\n};\nvar createAnticipateEasing = function (power) {\n    var backEasing = createBackIn(power);\n    return function (p) {\n        return (p *= 2) < 1 ? 0.5 * backEasing(p) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n    };\n};\nvar linear = function (p) {\n    return p;\n};\nvar easeIn = /*#__PURE__*/createExpoIn(2);\nvar easeOut = /*#__PURE__*/reversed(easeIn);\nvar easeInOut = /*#__PURE__*/mirrored(easeIn);\nvar circIn = function (p) {\n    return 1 - Math.sin(Math.acos(p));\n};\nvar circOut = /*#__PURE__*/reversed(circIn);\nvar circInOut = /*#__PURE__*/mirrored(circOut);\nvar backIn = /*#__PURE__*/createBackIn(DEFAULT_OVERSHOOT_STRENGTH);\nvar backOut = /*#__PURE__*/reversed(backIn);\nvar backInOut = /*#__PURE__*/mirrored(backIn);\nvar anticipate = /*#__PURE__*/createAnticipateEasing(DEFAULT_OVERSHOOT_STRENGTH);\nvar BOUNCE_FIRST_THRESHOLD = 4.0 / 11.0;\nvar BOUNCE_SECOND_THRESHOLD = 8.0 / 11.0;\nvar BOUNCE_THIRD_THRESHOLD = 9.0 / 10.0;\nvar ca = 4356.0 / 361.0;\nvar cb = 35442.0 / 1805.0;\nvar cc = 16061.0 / 1805.0;\nvar bounceOut = function (p) {\n    var p2 = p * p;\n    return p < BOUNCE_FIRST_THRESHOLD ? 7.5625 * p2 : p < BOUNCE_SECOND_THRESHOLD ? 9.075 * p2 - 9.9 * p + 3.4 : p < BOUNCE_THIRD_THRESHOLD ? ca * p2 - cb * p + cc : 10.8 * p * p - 20.52 * p + 10.72;\n};\nvar bounceIn = function (p) {\n    return 1.0 - bounceOut(1.0 - p);\n};\nvar bounceInOut = function (p) {\n    return p < 0.5 ? 0.5 * (1.0 - bounceOut(1.0 - p * 2.0)) : 0.5 * bounceOut(p * 2.0 - 1.0) + 0.5;\n};\nvar NEWTON_ITERATIONS = 8;\nvar NEWTON_MIN_SLOPE = 0.001;\nvar SUBDIVISION_PRECISION = 0.0000001;\nvar SUBDIVISION_MAX_ITERATIONS = 10;\nvar K_SPLINE_TABLE_SIZE = 11;\nvar K_SAMPLE_STEP_SIZE = 1.0 / (K_SPLINE_TABLE_SIZE - 1.0);\nvar FLOAT_32_SUPPORTED = typeof Float32Array !== 'undefined';\nvar a = function (a1, a2) {\n    return 1.0 - 3.0 * a2 + 3.0 * a1;\n};\nvar b = function (a1, a2) {\n    return 3.0 * a2 - 6.0 * a1;\n};\nvar c = function (a1) {\n    return 3.0 * a1;\n};\nvar getSlope = function (t, a1, a2) {\n    return 3.0 * a(a1, a2) * t * t + 2.0 * b(a1, a2) * t + c(a1);\n};\nvar calcBezier = function (t, a1, a2) {\n    return ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n};\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n    var sampleValues = FLOAT_32_SUPPORTED ? new Float32Array(K_SPLINE_TABLE_SIZE) : new Array(K_SPLINE_TABLE_SIZE);\n    var binarySubdivide = function (aX, aA, aB) {\n        var i = 0;\n        var currentX;\n        var currentT;\n        do {\n            currentT = aA + (aB - aA) / 2.0;\n            currentX = calcBezier(currentT, mX1, mX2) - aX;\n            if (currentX > 0.0) {\n                aB = currentT;\n            } else {\n                aA = currentT;\n            }\n        } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n        return currentT;\n    };\n    var newtonRaphsonIterate = function (aX, aGuessT) {\n        var i = 0;\n        var currentSlope = 0;\n        var currentX;\n        for (; i < NEWTON_ITERATIONS; ++i) {\n            currentSlope = getSlope(aGuessT, mX1, mX2);\n            if (currentSlope === 0.0) {\n                return aGuessT;\n            }\n            currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n            aGuessT -= currentX / currentSlope;\n        }\n        return aGuessT;\n    };\n    var calcSampleValues = function () {\n        for (var i = 0; i < K_SPLINE_TABLE_SIZE; ++i) {\n            sampleValues[i] = calcBezier(i * K_SAMPLE_STEP_SIZE, mX1, mX2);\n        }\n    };\n    var getTForX = function (aX) {\n        var intervalStart = 0.0;\n        var currentSample = 1;\n        var lastSample = K_SPLINE_TABLE_SIZE - 1;\n        var dist = 0.0;\n        var guessForT = 0.0;\n        var initialSlope = 0.0;\n        for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n            intervalStart += K_SAMPLE_STEP_SIZE;\n        }\n        --currentSample;\n        dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n        guessForT = intervalStart + dist * K_SAMPLE_STEP_SIZE;\n        initialSlope = getSlope(guessForT, mX1, mX2);\n        if (initialSlope >= NEWTON_MIN_SLOPE) {\n            return newtonRaphsonIterate(aX, guessForT);\n        } else if (initialSlope === 0.0) {\n            return guessForT;\n        } else {\n            return binarySubdivide(aX, intervalStart, intervalStart + K_SAMPLE_STEP_SIZE);\n        }\n    };\n    calcSampleValues();\n    var resolver = function (aX) {\n        var returnValue;\n        if (mX1 === mY1 && mX2 === mY2) {\n            returnValue = aX;\n        } else if (aX === 0) {\n            returnValue = 0;\n        } else if (aX === 1) {\n            returnValue = 1;\n        } else {\n            returnValue = calcBezier(getTForX(aX), mY1, mY2);\n        }\n        return returnValue;\n    };\n    return resolver;\n}\n\nexport { reversed, mirrored, createReversedEasing, createMirroredEasing, createExpoIn, createBackIn, createAnticipateEasing, linear, easeIn, easeOut, easeInOut, circIn, circOut, circInOut, backIn, backOut, backInOut, anticipate, bounceOut, bounceIn, bounceInOut, cubicBezier };\n","import { hsla, rgba, hex, color, complex } from 'style-value-types';\nimport { invariant } from 'hey-listen';\nimport { getFrameData } from 'framesync';\nimport { createAnticipateEasing, createBackIn, createExpoIn, cubicBezier, linear, easeIn, easeOut, easeInOut, circIn, circOut, circInOut, backIn, backOut, backInOut, anticipate, reversed, mirrored } from '@popmotion/easing';\nexport { createAnticipateEasing, createBackIn, createExpoIn, cubicBezier, linear, easeIn, easeOut, easeInOut, circIn, circOut, circInOut, backIn, backOut, backInOut, anticipate, reversed, mirrored } from '@popmotion/easing';\n\nvar zeroPoint = {\r\n    x: 0,\r\n    y: 0,\r\n    z: 0\r\n};\r\nvar isNum = function (v) { return typeof v === 'number'; };\n\nvar radiansToDegrees = (function (radians) { return (radians * 180) / Math.PI; });\n\nvar angle = (function (a, b) {\r\n    if (b === void 0) { b = zeroPoint; }\r\n    return radiansToDegrees(Math.atan2(b.y - a.y, b.x - a.x));\r\n});\n\nvar applyOffset = (function (from, to) {\r\n    var hasReceivedFrom = true;\r\n    if (to === undefined) {\r\n        to = from;\r\n        hasReceivedFrom = false;\r\n    }\r\n    return function (v) {\r\n        if (hasReceivedFrom) {\r\n            return v - from + to;\r\n        }\r\n        else {\r\n            from = v;\r\n            hasReceivedFrom = true;\r\n            return to;\r\n        }\r\n    };\r\n});\n\nvar curryRange = (function (func) { return function (min, max, v) { return (v !== undefined ? func(min, max, v) : function (cv) { return func(min, max, cv); }); }; });\n\nvar clamp = function (min, max, v) {\r\n    return Math.min(Math.max(v, min), max);\r\n};\r\nvar clamp$1 = curryRange(clamp);\n\nvar conditional = (function (check, apply) { return function (v) {\r\n    return check(v) ? apply(v) : v;\r\n}; });\n\nvar degreesToRadians = (function (degrees) { return (degrees * Math.PI) / 180; });\n\nvar isPoint = (function (point) {\r\n    return point.hasOwnProperty('x') && point.hasOwnProperty('y');\r\n});\n\nvar isPoint3D = (function (point) {\r\n    return isPoint(point) && point.hasOwnProperty('z');\r\n});\n\nvar distance1D = function (a, b) { return Math.abs(a - b); };\r\nvar distance = (function (a, b) {\r\n    if (b === void 0) { b = zeroPoint; }\r\n    if (isNum(a) && isNum(b)) {\r\n        return distance1D(a, b);\r\n    }\r\n    else if (isPoint(a) && isPoint(b)) {\r\n        var xDelta = distance1D(a.x, b.x);\r\n        var yDelta = distance1D(a.y, b.y);\r\n        var zDelta = isPoint3D(a) && isPoint3D(b) ? distance1D(a.z, b.z) : 0;\r\n        return Math.sqrt(Math.pow(xDelta, 2) + Math.pow(yDelta, 2) + Math.pow(zDelta, 2));\r\n    }\r\n    return 0;\r\n});\n\nvar progress = (function (from, to, value) {\r\n    var toFromDifference = to - from;\r\n    return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\r\n});\n\nvar mix = (function (from, to, progress) {\r\n    return -progress * from + progress * to + from;\r\n});\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n    return __assign.apply(this, arguments);\r\n};\n\nvar mixLinearColor = function (from, to, v) {\r\n    var fromExpo = from * from;\r\n    var toExpo = to * to;\r\n    return Math.sqrt(Math.max(0, v * (toExpo - fromExpo) + fromExpo));\r\n};\r\nvar colorTypes = [hex, rgba, hsla];\r\nvar getColorType = function (v) {\r\n    return colorTypes.find(function (type) { return type.test(v); });\r\n};\r\nvar notAnimatable = function (color$$1) {\r\n    return \"'\" + color$$1 + \"' is not an animatable color. Use the equivalent color code instead.\";\r\n};\r\nvar mixColor = (function (from, to) {\r\n    var fromColorType = getColorType(from);\r\n    var toColorType = getColorType(to);\r\n    invariant(!!fromColorType, notAnimatable(from));\r\n    invariant(!!toColorType, notAnimatable(to));\r\n    invariant(fromColorType.transform === toColorType.transform, 'Both colors must be hex/RGBA, OR both must be HSLA.');\r\n    var fromColor = fromColorType.parse(from);\r\n    var toColor = toColorType.parse(to);\r\n    var blended = __assign({}, fromColor);\r\n    var mixFunc = fromColorType === hsla ? mix : mixLinearColor;\r\n    return function (v) {\r\n        for (var key in blended) {\r\n            if (key !== 'alpha') {\r\n                blended[key] = mixFunc(fromColor[key], toColor[key], v);\r\n            }\r\n        }\r\n        blended.alpha = mix(fromColor.alpha, toColor.alpha, v);\r\n        return fromColorType.transform(blended);\r\n    };\r\n});\n\nvar combineFunctions = function (a, b) { return function (v) { return b(a(v)); }; };\r\nvar pipe = (function () {\r\n    var transformers = [];\r\n    for (var _i = 0; _i < arguments.length; _i++) {\r\n        transformers[_i] = arguments[_i];\r\n    }\r\n    return transformers.reduce(combineFunctions);\r\n});\n\nfunction getMixer(origin, target) {\r\n    if (isNum(origin)) {\r\n        return function (v) { return mix(origin, target, v); };\r\n    }\r\n    else if (color.test(origin)) {\r\n        return mixColor(origin, target);\r\n    }\r\n    else {\r\n        return mixComplex(origin, target);\r\n    }\r\n}\r\nvar mixArray = function (from, to) {\r\n    var output = from.slice();\r\n    var numValues = output.length;\r\n    var blendValue = from.map(function (fromThis, i) { return getMixer(fromThis, to[i]); });\r\n    return function (v) {\r\n        for (var i = 0; i < numValues; i++) {\r\n            output[i] = blendValue[i](v);\r\n        }\r\n        return output;\r\n    };\r\n};\r\nvar mixObject = function (origin, target) {\r\n    var output = __assign({}, origin, target);\r\n    var blendValue = {};\r\n    for (var key in output) {\r\n        if (origin[key] !== undefined && target[key] !== undefined) {\r\n            blendValue[key] = getMixer(origin[key], target[key]);\r\n        }\r\n    }\r\n    return function (v) {\r\n        for (var key in blendValue) {\r\n            output[key] = blendValue[key](v);\r\n        }\r\n        return output;\r\n    };\r\n};\r\nfunction analyse(value) {\r\n    var parsed = complex.parse(value);\r\n    var numValues = parsed.length;\r\n    var numNumbers = 0;\r\n    var numRGB = 0;\r\n    var numHSL = 0;\r\n    for (var i = 0; i < numValues; i++) {\r\n        if (numNumbers || typeof parsed[i] === 'number') {\r\n            numNumbers++;\r\n        }\r\n        else {\r\n            if (parsed[i].hue !== undefined) {\r\n                numHSL++;\r\n            }\r\n            else {\r\n                numRGB++;\r\n            }\r\n        }\r\n    }\r\n    return { parsed: parsed, numNumbers: numNumbers, numRGB: numRGB, numHSL: numHSL };\r\n}\r\nvar mixComplex = function (origin, target) {\r\n    var template = complex.createTransformer(target);\r\n    var originStats = analyse(origin);\r\n    var targetStats = analyse(target);\r\n    invariant(originStats.numHSL === targetStats.numHSL &&\r\n        originStats.numRGB === targetStats.numRGB &&\r\n        originStats.numNumbers >= targetStats.numNumbers, \"Complex values '\" + origin + \"' and '\" + target + \"' too different to mix. Ensure all colors are of the same type.\");\r\n    return pipe(mixArray(originStats.parsed, targetStats.parsed), template);\r\n};\n\nvar mixNumber = function (from, to) { return function (p) { return mix(from, to, p); }; };\r\nfunction detectMixerFactory(v) {\r\n    if (typeof v === 'number') {\r\n        return mixNumber;\r\n    }\r\n    else if (typeof v === 'string') {\r\n        if (color.test(v)) {\r\n            return mixColor;\r\n        }\r\n        else {\r\n            return mixComplex;\r\n        }\r\n    }\r\n    else if (Array.isArray(v)) {\r\n        return mixArray;\r\n    }\r\n    else if (typeof v === 'object') {\r\n        return mixObject;\r\n    }\r\n}\r\nfunction createMixers(output, ease, customMixer) {\r\n    var mixers = [];\r\n    var mixerFactory = customMixer || detectMixerFactory(output[0]);\r\n    var numMixers = output.length - 1;\r\n    for (var i = 0; i < numMixers; i++) {\r\n        var mixer = mixerFactory(output[i], output[i + 1]);\r\n        if (ease) {\r\n            var easingFunction = Array.isArray(ease) ? ease[i] : ease;\r\n            mixer = pipe(easingFunction, mixer);\r\n        }\r\n        mixers.push(mixer);\r\n    }\r\n    return mixers;\r\n}\r\nfunction fastInterpolate(_a, _b) {\r\n    var from = _a[0], to = _a[1];\r\n    var mixer = _b[0];\r\n    return function (v) { return mixer(progress(from, to, v)); };\r\n}\r\nfunction slowInterpolate(input, mixers) {\r\n    var inputLength = input.length;\r\n    var lastInputIndex = inputLength - 1;\r\n    return function (v) {\r\n        var mixerIndex = 0;\r\n        var foundMixerIndex = false;\r\n        if (v <= input[0]) {\r\n            foundMixerIndex = true;\r\n        }\r\n        else if (v >= input[lastInputIndex]) {\r\n            mixerIndex = lastInputIndex - 1;\r\n            foundMixerIndex = true;\r\n        }\r\n        if (!foundMixerIndex) {\r\n            var i = 1;\r\n            for (; i < inputLength; i++) {\r\n                if (input[i] > v || i === lastInputIndex) {\r\n                    break;\r\n                }\r\n            }\r\n            mixerIndex = i - 1;\r\n        }\r\n        var progressInRange = progress(input[mixerIndex], input[mixerIndex + 1], v);\r\n        return mixers[mixerIndex](progressInRange);\r\n    };\r\n}\r\nfunction interpolate(input, output, _a) {\r\n    var _b = _a === void 0 ? {} : _a, _c = _b.clamp, clamp = _c === void 0 ? true : _c, ease = _b.ease, mixer = _b.mixer;\r\n    var inputLength = input.length;\r\n    invariant(inputLength === output.length, 'Both input and output ranges must be the same length');\r\n    invariant(!ease || !Array.isArray(ease) || ease.length === inputLength - 1, 'Array of easing functions must be of length `input.length - 1`, as it applies to the transitions **between** the defined values.');\r\n    if (input[0] > input[inputLength - 1]) {\r\n        input = [].concat(input);\r\n        output = [].concat(output);\r\n        input.reverse();\r\n        output.reverse();\r\n    }\r\n    var mixers = createMixers(output, ease, mixer);\r\n    var interpolator = inputLength === 2\r\n        ? fastInterpolate(input, mixers)\r\n        : slowInterpolate(input, mixers);\r\n    return clamp\r\n        ? pipe(clamp$1(input[0], input[inputLength - 1]), interpolator)\r\n        : interpolator;\r\n}\n\nvar pointFromVector = (function (origin, angle, distance) {\r\n    angle = degreesToRadians(angle);\r\n    return {\r\n        x: distance * Math.cos(angle) + origin.x,\r\n        y: distance * Math.sin(angle) + origin.y\r\n    };\r\n});\n\nvar toDecimal = (function (num, precision) {\r\n    if (precision === void 0) { precision = 2; }\r\n    precision = Math.pow(10, precision);\r\n    return Math.round(num * precision) / precision;\r\n});\n\nvar smoothFrame = (function (prevValue, nextValue, duration, smoothing) {\r\n    if (smoothing === void 0) { smoothing = 0; }\r\n    return toDecimal(prevValue +\r\n        (duration * (nextValue - prevValue)) / Math.max(smoothing, duration));\r\n});\n\nvar smooth = (function (strength) {\r\n    if (strength === void 0) { strength = 50; }\r\n    var previousValue = 0;\r\n    var lastUpdated = 0;\r\n    return function (v) {\r\n        var currentFramestamp = getFrameData().timestamp;\r\n        var timeDelta = currentFramestamp !== lastUpdated ? currentFramestamp - lastUpdated : 0;\r\n        var newValue = timeDelta\r\n            ? smoothFrame(previousValue, v, timeDelta, strength)\r\n            : previousValue;\r\n        lastUpdated = currentFramestamp;\r\n        previousValue = newValue;\r\n        return newValue;\r\n    };\r\n});\n\nvar snap = (function (points) {\r\n    if (typeof points === 'number') {\r\n        return function (v) { return Math.round(v / points) * points; };\r\n    }\r\n    else {\r\n        var i_1 = 0;\r\n        var numPoints_1 = points.length;\r\n        return function (v) {\r\n            var lastDistance = Math.abs(points[0] - v);\r\n            for (i_1 = 1; i_1 < numPoints_1; i_1++) {\r\n                var point = points[i_1];\r\n                var distance = Math.abs(point - v);\r\n                if (distance === 0)\r\n                    return point;\r\n                if (distance > lastDistance)\r\n                    return points[i_1 - 1];\r\n                if (i_1 === numPoints_1 - 1)\r\n                    return point;\r\n                lastDistance = distance;\r\n            }\r\n        };\r\n    }\r\n});\n\nvar identity = function (v) { return v; };\r\nvar springForce = function (alterDisplacement) {\r\n    if (alterDisplacement === void 0) { alterDisplacement = identity; }\r\n    return curryRange(function (constant, origin, v) {\r\n        var displacement = origin - v;\r\n        var springModifiedDisplacement = -(0 - constant + 1) * (0 - alterDisplacement(Math.abs(displacement)));\r\n        return displacement <= 0\r\n            ? origin + springModifiedDisplacement\r\n            : origin - springModifiedDisplacement;\r\n    });\r\n};\r\nvar springForceLinear = springForce();\r\nvar springForceExpo = springForce(Math.sqrt);\n\nvar velocityPerFrame = (function (xps, frameDuration) {\r\n    return isNum(xps) ? xps / (1000 / frameDuration) : 0;\r\n});\n\nvar velocityPerSecond = (function (velocity, frameDuration) {\r\n    return frameDuration ? velocity * (1000 / frameDuration) : 0;\r\n});\n\nvar wrap = function (min, max, v) {\r\n    var rangeSize = max - min;\r\n    return ((((v - min) % rangeSize) + rangeSize) % rangeSize) + min;\r\n};\r\nvar wrap$1 = curryRange(wrap);\n\nvar clampProgress = clamp$1(0, 1);\r\nvar steps = (function (steps, direction) {\r\n    if (direction === void 0) { direction = 'end'; }\r\n    return function (progress) {\r\n        progress =\r\n            direction === 'end' ? Math.min(progress, 0.999) : Math.max(progress, 0.001);\r\n        var expanded = progress * steps;\r\n        var rounded = direction === 'end' ? Math.floor(expanded) : Math.ceil(expanded);\r\n        return clampProgress(rounded / steps);\r\n    };\r\n});\n\nexport { angle, applyOffset, clamp$1 as clamp, conditional, degreesToRadians, distance, interpolate, isPoint, isPoint3D, mix, mixArray, mixColor, mixComplex, mixObject, pipe, pointFromVector, progress, radiansToDegrees, smooth, smoothFrame, snap, springForce, springForceExpo, springForceLinear, steps, toDecimal, velocityPerFrame, velocityPerSecond, wrap$1 as wrap };\n","import { __rest, __assign } from 'tslib';\nimport sync from 'framesync';\nimport { number, color, px, degrees, scale, alpha, progressPercentage } from 'style-value-types';\nimport { invariant } from 'hey-listen';\n\nvar createStyler = function (_a) {\n    var onRead = _a.onRead,\n        onRender = _a.onRender,\n        _b = _a.uncachedValues,\n        uncachedValues = _b === void 0 ? new Set() : _b,\n        _c = _a.useCache,\n        useCache = _c === void 0 ? true : _c;\n    return function (_a) {\n        if (_a === void 0) {\n            _a = {};\n        }\n        var props = __rest(_a, []);\n        var state = {};\n        var changedValues = [];\n        var hasChanged = false;\n        function setValue(key, value) {\n            if (key.startsWith('--')) {\n                props.hasCSSVariable = true;\n            }\n            var currentValue = state[key];\n            state[key] = value;\n            if (state[key] === currentValue) return;\n            if (changedValues.indexOf(key) === -1) {\n                changedValues.push(key);\n            }\n            if (!hasChanged) {\n                hasChanged = true;\n                sync.render(styler.render);\n            }\n        }\n        var styler = {\n            get: function (key, forceRead) {\n                if (forceRead === void 0) {\n                    forceRead = false;\n                }\n                var useCached = !forceRead && useCache && !uncachedValues.has(key) && state[key] !== undefined;\n                return useCached ? state[key] : onRead(key, props);\n            },\n            set: function (values, value) {\n                if (typeof values === 'string') {\n                    setValue(values, value);\n                } else {\n                    for (var key in values) {\n                        setValue(key, values[key]);\n                    }\n                }\n                return this;\n            },\n            render: function (forceRender) {\n                if (forceRender === void 0) {\n                    forceRender = false;\n                }\n                if (hasChanged || forceRender === true) {\n                    onRender(state, props, changedValues);\n                    hasChanged = false;\n                    changedValues.length = 0;\n                }\n                return this;\n            }\n        };\n        return styler;\n    };\n};\n\nvar CAMEL_CASE_PATTERN = /([a-z])([A-Z])/g;\nvar REPLACE_TEMPLATE = '$1-$2';\nvar camelToDash = function (str) {\n    return str.replace(CAMEL_CASE_PATTERN, REPLACE_TEMPLATE).toLowerCase();\n};\n\nvar camelCache = /*#__PURE__*/new Map();\nvar dashCache = /*#__PURE__*/new Map();\nvar prefixes = ['Webkit', 'Moz', 'O', 'ms', ''];\nvar numPrefixes = prefixes.length;\nvar isBrowser = typeof document !== 'undefined';\nvar testElement;\nvar setDashPrefix = function (key, prefixed) {\n    return dashCache.set(key, camelToDash(prefixed));\n};\nvar testPrefix = function (key) {\n    testElement = testElement || document.createElement('div');\n    for (var i = 0; i < numPrefixes; i++) {\n        var prefix = prefixes[i];\n        var noPrefix = prefix === '';\n        var prefixedPropertyName = noPrefix ? key : prefix + key.charAt(0).toUpperCase() + key.slice(1);\n        if (prefixedPropertyName in testElement.style || noPrefix) {\n            if (noPrefix && key === 'clipPath' && dashCache.has(key)) {\n                return;\n            }\n            camelCache.set(key, prefixedPropertyName);\n            setDashPrefix(key, \"\" + (noPrefix ? '' : '-') + camelToDash(prefixedPropertyName));\n        }\n    }\n};\nvar setServerProperty = function (key) {\n    return setDashPrefix(key, key);\n};\nvar prefixer = function (key, asDashCase) {\n    if (asDashCase === void 0) {\n        asDashCase = false;\n    }\n    var cache = asDashCase ? dashCache : camelCache;\n    if (!cache.has(key)) {\n        isBrowser ? testPrefix(key) : setServerProperty(key);\n    }\n    return cache.get(key) || key;\n};\n\nvar axes = ['', 'X', 'Y', 'Z'];\nvar order = ['translate', 'scale', 'rotate', 'skew', 'transformPerspective'];\nvar transformProps = /*#__PURE__*/order.reduce(function (acc, key) {\n    return axes.reduce(function (axesAcc, axesKey) {\n        axesAcc.push(key + axesKey);\n        return axesAcc;\n    }, acc);\n}, ['x', 'y', 'z']);\nvar transformPropDictionary = /*#__PURE__*/transformProps.reduce(function (dict, key) {\n    dict[key] = true;\n    return dict;\n}, {});\nfunction isTransformProp(key) {\n    return transformPropDictionary[key] === true;\n}\nfunction sortTransformProps(a, b) {\n    return transformProps.indexOf(a) - transformProps.indexOf(b);\n}\nvar transformOriginProps = /*#__PURE__*/new Set(['originX', 'originY', 'originZ']);\nfunction isTransformOriginProp(key) {\n    return transformOriginProps.has(key);\n}\n\nvar int = /*#__PURE__*/__assign( /*#__PURE__*/__assign({}, number), { transform: Math.round });\nvar valueTypes = {\n    color: color,\n    backgroundColor: color,\n    outlineColor: color,\n    fill: color,\n    stroke: color,\n    borderColor: color,\n    borderTopColor: color,\n    borderRightColor: color,\n    borderBottomColor: color,\n    borderLeftColor: color,\n    borderWidth: px,\n    borderTopWidth: px,\n    borderRightWidth: px,\n    borderBottomWidth: px,\n    borderLeftWidth: px,\n    borderRadius: px,\n    radius: px,\n    borderTopLeftRadius: px,\n    borderTopRightRadius: px,\n    borderBottomRightRadius: px,\n    borderBottomLeftRadius: px,\n    width: px,\n    maxWidth: px,\n    height: px,\n    maxHeight: px,\n    size: px,\n    top: px,\n    right: px,\n    bottom: px,\n    left: px,\n    padding: px,\n    paddingTop: px,\n    paddingRight: px,\n    paddingBottom: px,\n    paddingLeft: px,\n    margin: px,\n    marginTop: px,\n    marginRight: px,\n    marginBottom: px,\n    marginLeft: px,\n    rotate: degrees,\n    rotateX: degrees,\n    rotateY: degrees,\n    rotateZ: degrees,\n    scale: scale,\n    scaleX: scale,\n    scaleY: scale,\n    scaleZ: scale,\n    skew: degrees,\n    skewX: degrees,\n    skewY: degrees,\n    distance: px,\n    translateX: px,\n    translateY: px,\n    translateZ: px,\n    x: px,\n    y: px,\n    z: px,\n    perspective: px,\n    opacity: alpha,\n    originX: progressPercentage,\n    originY: progressPercentage,\n    originZ: px,\n    zIndex: int,\n    fillOpacity: alpha,\n    strokeOpacity: alpha,\n    numOctaves: int\n};\nvar getValueType = function (key) {\n    return valueTypes[key];\n};\nvar getValueAsType = function (value, type) {\n    return type && typeof value === 'number' ? type.transform(value) : value;\n};\n\nvar SCROLL_LEFT = 'scrollLeft';\nvar SCROLL_TOP = 'scrollTop';\nvar scrollKeys = /*#__PURE__*/new Set([SCROLL_LEFT, SCROLL_TOP]);\n\nvar blacklist = /*#__PURE__*/new Set([SCROLL_LEFT, SCROLL_TOP, 'transform']);\nvar translateAlias = {\n    x: 'translateX',\n    y: 'translateY',\n    z: 'translateZ'\n};\nfunction isCustomTemplate(v) {\n    return typeof v === 'function';\n}\nfunction buildTransform(state, transform, transformKeys, transformIsDefault, enableHardwareAcceleration, allowTransformNone) {\n    if (allowTransformNone === void 0) {\n        allowTransformNone = true;\n    }\n    var transformString = '';\n    var transformHasZ = false;\n    transformKeys.sort(sortTransformProps);\n    var numTransformKeys = transformKeys.length;\n    for (var i = 0; i < numTransformKeys; i++) {\n        var key = transformKeys[i];\n        transformString += (translateAlias[key] || key) + \"(\" + transform[key] + \") \";\n        transformHasZ = key === 'z' ? true : transformHasZ;\n    }\n    if (!transformHasZ && enableHardwareAcceleration) {\n        transformString += 'translateZ(0)';\n    } else {\n        transformString = transformString.trim();\n    }\n    if (isCustomTemplate(state.transform)) {\n        transformString = state.transform(transform, transformIsDefault ? '' : transformString);\n    } else if (allowTransformNone && transformIsDefault) {\n        transformString = 'none';\n    }\n    return transformString;\n}\nfunction buildStyleProperty(state, enableHardwareAcceleration, styles, transform, transformOrigin, transformKeys, isDashCase, allowTransformNone) {\n    if (enableHardwareAcceleration === void 0) {\n        enableHardwareAcceleration = true;\n    }\n    if (styles === void 0) {\n        styles = {};\n    }\n    if (transform === void 0) {\n        transform = {};\n    }\n    if (transformOrigin === void 0) {\n        transformOrigin = {};\n    }\n    if (transformKeys === void 0) {\n        transformKeys = [];\n    }\n    if (isDashCase === void 0) {\n        isDashCase = false;\n    }\n    if (allowTransformNone === void 0) {\n        allowTransformNone = true;\n    }\n    var transformIsDefault = true;\n    var hasTransform = false;\n    var hasTransformOrigin = false;\n    for (var key in state) {\n        var value = state[key];\n        var valueType = getValueType(key);\n        var valueAsType = getValueAsType(value, valueType);\n        if (isTransformProp(key)) {\n            hasTransform = true;\n            transform[key] = valueAsType;\n            transformKeys.push(key);\n            if (transformIsDefault) {\n                if (valueType.default && value !== valueType.default || !valueType.default && value !== 0) {\n                    transformIsDefault = false;\n                }\n            }\n        } else if (isTransformOriginProp(key)) {\n            transformOrigin[key] = valueAsType;\n            hasTransformOrigin = true;\n        } else if (!blacklist.has(key) || !isCustomTemplate(valueAsType)) {\n            styles[prefixer(key, isDashCase)] = valueAsType;\n        }\n    }\n    if (hasTransform || typeof state.transform === 'function') {\n        styles.transform = buildTransform(state, transform, transformKeys, transformIsDefault, enableHardwareAcceleration, allowTransformNone);\n    }\n    if (hasTransformOrigin) {\n        styles.transformOrigin = (transformOrigin.originX || '50%') + \" \" + (transformOrigin.originY || '50%') + \" \" + (transformOrigin.originZ || 0);\n    }\n    return styles;\n}\nfunction createStyleBuilder(_a) {\n    var _b = _a === void 0 ? {} : _a,\n        _c = _b.enableHardwareAcceleration,\n        enableHardwareAcceleration = _c === void 0 ? true : _c,\n        _d = _b.isDashCase,\n        isDashCase = _d === void 0 ? true : _d,\n        _e = _b.allowTransformNone,\n        allowTransformNone = _e === void 0 ? true : _e;\n    var styles = {};\n    var transform = {};\n    var transformOrigin = {};\n    var transformKeys = [];\n    return function (state) {\n        transformKeys.length = 0;\n        buildStyleProperty(state, enableHardwareAcceleration, styles, transform, transformOrigin, transformKeys, isDashCase, allowTransformNone);\n        return styles;\n    };\n}\n\nfunction onRead(key, options) {\n    var element = options.element,\n        preparseOutput = options.preparseOutput;\n    var defaultValueType = getValueType(key);\n    if (isTransformProp(key)) {\n        return defaultValueType ? defaultValueType.default || 0 : 0;\n    } else if (scrollKeys.has(key)) {\n        return element[key];\n    } else {\n        var domValue = window.getComputedStyle(element, null).getPropertyValue(prefixer(key, true)) || 0;\n        return preparseOutput && defaultValueType && defaultValueType.test(domValue) && defaultValueType.parse ? defaultValueType.parse(domValue) : domValue;\n    }\n}\nfunction onRender(state, _a, changedValues) {\n    var element = _a.element,\n        buildStyles = _a.buildStyles,\n        hasCSSVariable = _a.hasCSSVariable;\n    Object.assign(element.style, buildStyles(state));\n    if (hasCSSVariable) {\n        var numChangedValues = changedValues.length;\n        for (var i = 0; i < numChangedValues; i++) {\n            var key = changedValues[i];\n            if (key.startsWith('--')) {\n                element.style.setProperty(key, state[key]);\n            }\n        }\n    }\n    if (changedValues.indexOf(SCROLL_LEFT) !== -1) {\n        element[SCROLL_LEFT] = state[SCROLL_LEFT];\n    }\n    if (changedValues.indexOf(SCROLL_TOP) !== -1) {\n        element[SCROLL_TOP] = state[SCROLL_TOP];\n    }\n}\nvar cssStyler = /*#__PURE__*/createStyler({\n    onRead: onRead,\n    onRender: onRender,\n    uncachedValues: scrollKeys\n});\nfunction createCssStyler(element, _a) {\n    if (_a === void 0) {\n        _a = {};\n    }\n    var enableHardwareAcceleration = _a.enableHardwareAcceleration,\n        allowTransformNone = _a.allowTransformNone,\n        props = __rest(_a, [\"enableHardwareAcceleration\", \"allowTransformNone\"]);\n    return cssStyler(__assign({ element: element, buildStyles: createStyleBuilder({\n            enableHardwareAcceleration: enableHardwareAcceleration,\n            allowTransformNone: allowTransformNone\n        }), preparseOutput: true }, props));\n}\n\nvar camelCaseAttributes = /*#__PURE__*/new Set(['baseFrequency', 'diffuseConstant', 'kernelMatrix', 'kernelUnitLength', 'keySplines', 'keyTimes', 'limitingConeAngle', 'markerHeight', 'markerWidth', 'numOctaves', 'targetX', 'targetY', 'surfaceScale', 'specularConstant', 'specularExponent', 'stdDeviation', 'tableValues']);\n\nvar defaultOrigin = 0.5;\nvar svgAttrsTemplate = function () {\n    return {\n        style: {}\n    };\n};\nvar progressToPixels = function (progress, length) {\n    return px.transform(progress * length);\n};\nvar unmeasured = { x: 0, y: 0, width: 0, height: 0 };\nfunction calcOrigin(origin, offset, size) {\n    return typeof origin === 'string' ? origin : px.transform(offset + size * origin);\n}\nfunction calculateSVGTransformOrigin(dimensions, originX, originY) {\n    return calcOrigin(originX, dimensions.x, dimensions.width) + \" \" + calcOrigin(originY, dimensions.y, dimensions.height);\n}\nvar svgStyleConfig = {\n    enableHardwareAcceleration: false,\n    isDashCase: false\n};\nfunction buildSVGAttrs(_a, dimensions, totalPathLength, cssBuilder, attrs, isDashCase) {\n    if (dimensions === void 0) {\n        dimensions = unmeasured;\n    }\n    if (cssBuilder === void 0) {\n        cssBuilder = createStyleBuilder(svgStyleConfig);\n    }\n    if (attrs === void 0) {\n        attrs = svgAttrsTemplate();\n    }\n    if (isDashCase === void 0) {\n        isDashCase = true;\n    }\n    var attrX = _a.attrX,\n        attrY = _a.attrY,\n        originX = _a.originX,\n        originY = _a.originY,\n        pathLength = _a.pathLength,\n        _b = _a.pathSpacing,\n        pathSpacing = _b === void 0 ? 1 : _b,\n        _c = _a.pathOffset,\n        pathOffset = _c === void 0 ? 0 : _c,\n        state = __rest(_a, [\"attrX\", \"attrY\", \"originX\", \"originY\", \"pathLength\", \"pathSpacing\", \"pathOffset\"]);\n    var style = cssBuilder(state);\n    for (var key in style) {\n        if (key === 'transform') {\n            attrs.style.transform = style[key];\n        } else {\n            var attrKey = isDashCase && !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n            attrs[attrKey] = style[key];\n        }\n    }\n    if (originX !== undefined || originY !== undefined || style.transform) {\n        attrs.style.transformOrigin = calculateSVGTransformOrigin(dimensions, originX !== undefined ? originX : defaultOrigin, originY !== undefined ? originY : defaultOrigin);\n    }\n    if (attrX !== undefined) attrs.x = attrX;\n    if (attrY !== undefined) attrs.y = attrY;\n    if (totalPathLength !== undefined && pathLength !== undefined) {\n        attrs[isDashCase ? 'stroke-dashoffset' : 'strokeDashoffset'] = progressToPixels(-pathOffset, totalPathLength);\n        attrs[isDashCase ? 'stroke-dasharray' : 'strokeDasharray'] = progressToPixels(pathLength, totalPathLength) + \" \" + progressToPixels(pathSpacing, totalPathLength);\n    }\n    return attrs;\n}\nfunction createAttrBuilder(dimensions, totalPathLength, isDashCase) {\n    if (isDashCase === void 0) {\n        isDashCase = true;\n    }\n    var attrs = svgAttrsTemplate();\n    var cssBuilder = createStyleBuilder(svgStyleConfig);\n    return function (state) {\n        return buildSVGAttrs(state, dimensions, totalPathLength, cssBuilder, attrs, isDashCase);\n    };\n}\n\nvar getDimensions = function (element) {\n    return typeof element.getBBox === 'function' ? element.getBBox() : element.getBoundingClientRect();\n};\nvar getSVGElementDimensions = function (element) {\n    try {\n        return getDimensions(element);\n    } catch (e) {\n        return { x: 0, y: 0, width: 0, height: 0 };\n    }\n};\n\nvar isPath = function (element) {\n    return element.tagName === 'path';\n};\nvar svgStyler = /*#__PURE__*/createStyler({\n    onRead: function (key, _a) {\n        var element = _a.element;\n        key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n        if (!isTransformProp(key)) {\n            return element.getAttribute(key);\n        } else {\n            var valueType = getValueType(key);\n            return valueType ? valueType.default || 0 : 0;\n        }\n    },\n    onRender: function (state, _a) {\n        var element = _a.element,\n            buildAttrs = _a.buildAttrs;\n        var attrs = buildAttrs(state);\n        for (var key in attrs) {\n            if (key === 'style') {\n                Object.assign(element.style, attrs.style);\n            } else {\n                element.setAttribute(key, attrs[key]);\n            }\n        }\n    }\n});\nvar svg = function (element) {\n    var dimensions = getSVGElementDimensions(element);\n    var pathLength = isPath(element) && element.getTotalLength ? element.getTotalLength() : undefined;\n    return svgStyler({\n        element: element,\n        buildAttrs: createAttrBuilder(dimensions, pathLength)\n    });\n};\n\nvar viewport = /*#__PURE__*/createStyler({\n    useCache: false,\n    onRead: function (key) {\n        return key === 'scrollTop' ? window.pageYOffset : window.pageXOffset;\n    },\n    onRender: function (_a) {\n        var _b = _a.scrollTop,\n            scrollTop = _b === void 0 ? 0 : _b,\n            _c = _a.scrollLeft,\n            scrollLeft = _c === void 0 ? 0 : _c;\n        return window.scrollTo(scrollLeft, scrollTop);\n    }\n});\n\nvar cache = /*#__PURE__*/new WeakMap();\nvar isHTMLElement = function (node) {\n    return node instanceof HTMLElement || typeof node.click === 'function';\n};\nvar isSVGElement = function (node) {\n    return node instanceof SVGElement || 'ownerSVGElement' in node;\n};\nvar createDOMStyler = function (node, props) {\n    var styler;\n    if (node === window) {\n        styler = viewport(node);\n    } else if (isHTMLElement(node)) {\n        styler = createCssStyler(node, props);\n    } else if (isSVGElement(node)) {\n        styler = svg(node);\n    }\n    invariant(styler !== undefined, 'No valid node provided. Node must be HTMLElement, SVGElement or window.');\n    cache.set(node, styler);\n    return styler;\n};\nvar getStyler = function (node, props) {\n    return cache.has(node) ? cache.get(node) : createDOMStyler(node, props);\n};\nfunction index(nodeOrSelector, props) {\n    var node = typeof nodeOrSelector === 'string' ? document.querySelector(nodeOrSelector) : nodeOrSelector;\n    return getStyler(node, props);\n}\n\nexport default index;\nexport { buildSVGAttrs, buildStyleProperty, createStyler as createStylerFactory, isTransformProp, transformProps };\n","import { __assign, __spreadArrays, __extends, __rest } from 'tslib';\nimport { pipe, angle, degreesToRadians, distance, isPoint3D, isPoint, mix, pointFromVector, progress, radiansToDegrees, smoothFrame, velocityPerFrame, velocityPerSecond, mixComplex, mixColor, clamp, applyOffset, conditional, interpolate, mixArray, smooth, snap, springForce, springForceExpo, springForceLinear, wrap } from '@popmotion/popcorn';\nimport sync, { getFrameData, cancelSync } from 'framesync';\nimport { color, complex, px, percent, degrees, vh, vw, number } from 'style-value-types';\nimport * as styleValueTypes from 'style-value-types';\nexport { styleValueTypes as valueTypes };\nimport { createReversedEasing, linear, easeOut, easeInOut } from '@popmotion/easing';\nimport * as easing from '@popmotion/easing';\nexport { easing };\nimport styler from 'stylefire';\nexport { default as styler } from 'stylefire';\nimport { warning } from 'hey-listen';\n\nvar Chainable = /*#__PURE__*/function () {\n    function Chainable(props) {\n        if (props === void 0) {\n            props = {};\n        }\n        this.props = props;\n    }\n    Chainable.prototype.applyMiddleware = function (middleware) {\n        return this.create(__assign(__assign({}, this.props), { middleware: this.props.middleware ? __spreadArrays([middleware], this.props.middleware) : [middleware] }));\n    };\n    Chainable.prototype.pipe = function () {\n        var funcs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            funcs[_i] = arguments[_i];\n        }\n        var pipedUpdate = funcs.length === 1 ? funcs[0] : pipe.apply(void 0, funcs);\n        return this.applyMiddleware(function (update) {\n            return function (v) {\n                return update(pipedUpdate(v));\n            };\n        });\n    };\n    Chainable.prototype.while = function (predicate) {\n        return this.applyMiddleware(function (update, complete) {\n            return function (v) {\n                return predicate(v) ? update(v) : complete();\n            };\n        });\n    };\n    Chainable.prototype.filter = function (predicate) {\n        return this.applyMiddleware(function (update) {\n            return function (v) {\n                return predicate(v) && update(v);\n            };\n        });\n    };\n    return Chainable;\n}();\n\nvar Observer = /*#__PURE__*/function () {\n    function Observer(_a, observer) {\n        var _this = this;\n        var middleware = _a.middleware,\n            onComplete = _a.onComplete;\n        this.isActive = true;\n        this.update = function (v) {\n            if (_this.observer.update) _this.updateObserver(v);\n        };\n        this.complete = function () {\n            if (_this.observer.complete && _this.isActive) _this.observer.complete();\n            if (_this.onComplete) _this.onComplete();\n            _this.isActive = false;\n        };\n        this.error = function (err) {\n            if (_this.observer.error && _this.isActive) _this.observer.error(err);\n            _this.isActive = false;\n        };\n        this.observer = observer;\n        this.updateObserver = function (v) {\n            return observer.update(v);\n        };\n        this.onComplete = onComplete;\n        if (observer.update && middleware && middleware.length) {\n            middleware.forEach(function (m) {\n                return _this.updateObserver = m(_this.updateObserver, _this.complete);\n            });\n        }\n    }\n    return Observer;\n}();\nvar createObserver = function (observerCandidate, _a, onComplete) {\n    var middleware = _a.middleware;\n    if (typeof observerCandidate === 'function') {\n        return new Observer({ middleware: middleware, onComplete: onComplete }, { update: observerCandidate });\n    } else {\n        return new Observer({ middleware: middleware, onComplete: onComplete }, observerCandidate);\n    }\n};\n\nvar Action = /*#__PURE__*/function (_super) {\n    __extends(Action, _super);\n    function Action() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Action.prototype.create = function (props) {\n        return new Action(props);\n    };\n    Action.prototype.start = function (observerCandidate) {\n        if (observerCandidate === void 0) {\n            observerCandidate = {};\n        }\n        var isComplete = false;\n        var subscription = {\n            stop: function () {\n                return undefined;\n            }\n        };\n        var _a = this.props,\n            init = _a.init,\n            observerProps = __rest(_a, [\"init\"]);\n        var observer = createObserver(observerCandidate, observerProps, function () {\n            isComplete = true;\n            subscription.stop();\n        });\n        var api = init(observer);\n        subscription = api ? __assign(__assign({}, subscription), api) : subscription;\n        if (observerCandidate.registerParent) {\n            observerCandidate.registerParent(subscription);\n        }\n        if (isComplete) subscription.stop();\n        return subscription;\n    };\n    return Action;\n}(Chainable);\nvar action = function (init) {\n    return new Action({ init: init });\n};\n\nvar BaseMulticast = /*#__PURE__*/function (_super) {\n    __extends(BaseMulticast, _super);\n    function BaseMulticast() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.subscribers = [];\n        return _this;\n    }\n    BaseMulticast.prototype.complete = function () {\n        this.subscribers.forEach(function (subscriber) {\n            return subscriber.complete();\n        });\n    };\n    BaseMulticast.prototype.error = function (err) {\n        this.subscribers.forEach(function (subscriber) {\n            return subscriber.error(err);\n        });\n    };\n    BaseMulticast.prototype.update = function (v) {\n        for (var i = 0; i < this.subscribers.length; i++) {\n            this.subscribers[i].update(v);\n        }\n    };\n    BaseMulticast.prototype.subscribe = function (observerCandidate) {\n        var _this = this;\n        var observer = createObserver(observerCandidate, this.props);\n        this.subscribers.push(observer);\n        var subscription = {\n            unsubscribe: function () {\n                var index = _this.subscribers.indexOf(observer);\n                if (index !== -1) _this.subscribers.splice(index, 1);\n            }\n        };\n        return subscription;\n    };\n    BaseMulticast.prototype.stop = function () {\n        if (this.parent) this.parent.stop();\n    };\n    BaseMulticast.prototype.registerParent = function (subscription) {\n        this.stop();\n        this.parent = subscription;\n    };\n    return BaseMulticast;\n}(Chainable);\n\nvar Multicast = /*#__PURE__*/function (_super) {\n    __extends(Multicast, _super);\n    function Multicast() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Multicast.prototype.create = function (props) {\n        return new Multicast(props);\n    };\n    return Multicast;\n}(BaseMulticast);\nvar multicast = function () {\n    return new Multicast();\n};\n\nvar stepProgress = function (steps, progress) {\n    var segment = 1 / (steps - 1);\n    var subsegment = 1 / (2 * (steps - 1));\n    var percentProgressOfTarget = Math.min(progress, 1);\n    var subsegmentProgressOfTarget = percentProgressOfTarget / subsegment;\n    var segmentProgressOfTarget = Math.floor((subsegmentProgressOfTarget + 1) / 2);\n    return segmentProgressOfTarget * segment;\n};\n\nvar calc = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    angle: angle,\n    degreesToRadians: degreesToRadians,\n    distance: distance,\n    isPoint3D: isPoint3D,\n    isPoint: isPoint,\n    dilate: mix,\n    getValueFromProgress: mix,\n    pointFromAngleAndDistance: pointFromVector,\n    getProgressFromValue: progress,\n    radiansToDegrees: radiansToDegrees,\n    smooth: smoothFrame,\n    speedPerFrame: velocityPerFrame,\n    speedPerSecond: velocityPerSecond,\n    stepProgress: stepProgress\n});\n\nvar isValueList = function (v) {\n    return Array.isArray(v);\n};\nvar isSingleValue = function (v) {\n    var typeOfV = typeof v;\n    return typeOfV === 'string' || typeOfV === 'number';\n};\nvar ValueReaction = /*#__PURE__*/function (_super) {\n    __extends(ValueReaction, _super);\n    function ValueReaction(props) {\n        var _this = _super.call(this, props) || this;\n        _this.scheduleVelocityCheck = function () {\n            return sync.postRender(_this.velocityCheck);\n        };\n        _this.velocityCheck = function (_a) {\n            var timestamp = _a.timestamp;\n            if (timestamp !== _this.lastUpdated) {\n                _this.prev = _this.current;\n            }\n        };\n        _this.prev = _this.current = props.value || 0;\n        if (isSingleValue(_this.current)) {\n            _this.updateCurrent = function (v) {\n                return _this.current = v;\n            };\n            _this.getVelocityOfCurrent = function () {\n                return _this.getSingleVelocity(_this.current, _this.prev);\n            };\n        } else if (isValueList(_this.current)) {\n            _this.updateCurrent = function (v) {\n                return _this.current = __spreadArrays(v);\n            };\n            _this.getVelocityOfCurrent = function () {\n                return _this.getListVelocity();\n            };\n        } else {\n            _this.updateCurrent = function (v) {\n                _this.current = {};\n                for (var key in v) {\n                    if (v.hasOwnProperty(key)) {\n                        _this.current[key] = v[key];\n                    }\n                }\n            };\n            _this.getVelocityOfCurrent = function () {\n                return _this.getMapVelocity();\n            };\n        }\n        if (props.initialSubscription) _this.subscribe(props.initialSubscription);\n        return _this;\n    }\n    ValueReaction.prototype.create = function (props) {\n        return new ValueReaction(props);\n    };\n    ValueReaction.prototype.get = function () {\n        return this.current;\n    };\n    ValueReaction.prototype.getVelocity = function () {\n        return this.getVelocityOfCurrent();\n    };\n    ValueReaction.prototype.update = function (v) {\n        _super.prototype.update.call(this, v);\n        this.prev = this.current;\n        this.updateCurrent(v);\n        var _a = getFrameData(),\n            delta = _a.delta,\n            timestamp = _a.timestamp;\n        this.timeDelta = delta;\n        this.lastUpdated = timestamp;\n        sync.postRender(this.scheduleVelocityCheck);\n    };\n    ValueReaction.prototype.subscribe = function (observerCandidate) {\n        var sub = _super.prototype.subscribe.call(this, observerCandidate);\n        this.subscribers[this.subscribers.length - 1].update(this.current);\n        return sub;\n    };\n    ValueReaction.prototype.getSingleVelocity = function (current, prev) {\n        return typeof current === 'number' && typeof prev === 'number' ? velocityPerSecond(current - prev, this.timeDelta) : velocityPerSecond(parseFloat(current) - parseFloat(prev), this.timeDelta) || 0;\n    };\n    ValueReaction.prototype.getListVelocity = function () {\n        var _this = this;\n        return this.current.map(function (c, i) {\n            return _this.getSingleVelocity(c, _this.prev[i]);\n        });\n    };\n    ValueReaction.prototype.getMapVelocity = function () {\n        var velocity = {};\n        for (var key in this.current) {\n            if (this.current.hasOwnProperty(key)) {\n                velocity[key] = this.getSingleVelocity(this.current[key], this.prev[key]);\n            }\n        }\n        return velocity;\n    };\n    return ValueReaction;\n}(BaseMulticast);\nvar value = function (value, initialSubscription) {\n    return new ValueReaction({ value: value, initialSubscription: initialSubscription });\n};\n\nvar multi = function (_a) {\n    var getCount = _a.getCount,\n        getFirst = _a.getFirst,\n        getOutput = _a.getOutput,\n        mapApi = _a.mapApi,\n        setProp = _a.setProp,\n        startActions = _a.startActions;\n    return function (actions) {\n        return action(function (_a) {\n            var update = _a.update,\n                complete = _a.complete,\n                error = _a.error;\n            var numActions = getCount(actions);\n            var output = getOutput();\n            var updateOutput = function () {\n                return update(output);\n            };\n            var numCompletedActions = 0;\n            var subs = startActions(actions, function (a, name) {\n                var hasCompleted = false;\n                return a.start({\n                    complete: function () {\n                        if (!hasCompleted) {\n                            hasCompleted = true;\n                            numCompletedActions++;\n                            if (numCompletedActions === numActions) sync.update(complete);\n                        }\n                    },\n                    error: error,\n                    update: function (v) {\n                        setProp(output, name, v);\n                        sync.update(updateOutput, false, true);\n                    }\n                });\n            });\n            return Object.keys(getFirst(subs)).reduce(function (api, methodName) {\n                api[methodName] = mapApi(subs, methodName);\n                return api;\n            }, {});\n        });\n    };\n};\n\nvar composite = /*#__PURE__*/multi({\n    getOutput: function () {\n        return {};\n    },\n    getCount: function (subs) {\n        return Object.keys(subs).length;\n    },\n    getFirst: function (subs) {\n        return subs[Object.keys(subs)[0]];\n    },\n    mapApi: function (subs, methodName) {\n        return function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            return Object.keys(subs).reduce(function (output, propKey) {\n                var _a;\n                if (subs[propKey][methodName]) {\n                    args[0] && args[0][propKey] !== undefined ? output[propKey] = subs[propKey][methodName](args[0][propKey]) : output[propKey] = (_a = subs[propKey])[methodName].apply(_a, args);\n                }\n                return output;\n            }, {});\n        };\n    },\n    setProp: function (output, name, v) {\n        return output[name] = v;\n    },\n    startActions: function (actions, starter) {\n        return Object.keys(actions).reduce(function (subs, key) {\n            subs[key] = starter(actions[key], key);\n            return subs;\n        }, {});\n    }\n});\n\nvar parallel = /*#__PURE__*/multi({\n    getOutput: function () {\n        return [];\n    },\n    getCount: function (subs) {\n        return subs.length;\n    },\n    getFirst: function (subs) {\n        return subs[0];\n    },\n    mapApi: function (subs, methodName) {\n        return function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            return subs.map(function (sub, i) {\n                if (sub[methodName]) {\n                    return Array.isArray(args[0]) ? sub[methodName](args[0][i]) : sub[methodName].apply(sub, args);\n                }\n            });\n        };\n    },\n    setProp: function (output, name, v) {\n        return output[name] = v;\n    },\n    startActions: function (actions, starter) {\n        return actions.map(function (action, i) {\n            return starter(action, i);\n        });\n    }\n});\nvar parallel$1 = function () {\n    var actions = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        actions[_i] = arguments[_i];\n    }\n    return parallel(actions);\n};\n\nvar createVectorTests = function (typeTests) {\n    var testNames = Object.keys(typeTests);\n    var isVectorProp = function (prop, key) {\n        return prop !== undefined && !typeTests[key](prop);\n    };\n    var getVectorKeys = function (props) {\n        return testNames.reduce(function (vectorKeys, key) {\n            if (isVectorProp(props[key], key)) vectorKeys.push(key);\n            return vectorKeys;\n        }, []);\n    };\n    var testVectorProps = function (props) {\n        return props && testNames.some(function (key) {\n            return isVectorProp(props[key], key);\n        });\n    };\n    return { getVectorKeys: getVectorKeys, testVectorProps: testVectorProps };\n};\nvar unitTypes = [px, percent, degrees, vh, vw];\nvar findUnitType = function (prop) {\n    return unitTypes.find(function (type) {\n        return type.test(prop);\n    });\n};\nvar isUnitProp = function (prop) {\n    return Boolean(findUnitType(prop));\n};\nvar createAction = function (action, props) {\n    return action(props);\n};\nvar reduceArrayValue = function (i) {\n    return function (props, key) {\n        props[key] = props[key][i];\n        return props;\n    };\n};\nvar createArrayAction = function (action, props, vectorKeys) {\n    var firstVectorKey = vectorKeys[0];\n    var actionList = props[firstVectorKey].map(function (v, i) {\n        var childActionProps = vectorKeys.reduce(reduceArrayValue(i), __assign({}, props));\n        return getActionCreator(v)(action, childActionProps);\n    });\n    return parallel$1.apply(void 0, actionList);\n};\nvar reduceObjectValue = function (key) {\n    return function (props, propKey) {\n        props[propKey] = props[propKey][key];\n        return props;\n    };\n};\nvar createObjectAction = function (action, props, vectorKeys) {\n    var firstVectorKey = vectorKeys[0];\n    var actionMap = Object.keys(props[firstVectorKey]).reduce(function (map, key) {\n        var childActionProps = vectorKeys.reduce(reduceObjectValue(key), __assign({}, props));\n        map[key] = getActionCreator(props[firstVectorKey][key])(action, childActionProps);\n        return map;\n    }, {});\n    return composite(actionMap);\n};\nvar createUnitAction = function (action, _a) {\n    var from = _a.from,\n        to = _a.to,\n        props = __rest(_a, [\"from\", \"to\"]);\n    var unitType = findUnitType(from) || findUnitType(to);\n    var transform = unitType.transform,\n        parse = unitType.parse;\n    return action(__assign(__assign({}, props), { from: typeof from === 'string' ? parse(from) : from, to: typeof to === 'string' ? parse(to) : to })).pipe(transform);\n};\nvar createMixerAction = function (mixer) {\n    return function (action, _a) {\n        var from = _a.from,\n            to = _a.to,\n            props = __rest(_a, [\"from\", \"to\"]);\n        return action(__assign(__assign({}, props), { from: 0, to: 1 })).pipe(mixer(from, to));\n    };\n};\nvar createColorAction = /*#__PURE__*/createMixerAction(mixColor);\nvar createComplexAction = /*#__PURE__*/createMixerAction(mixComplex);\nvar createVectorAction = function (action, typeTests) {\n    var _a = createVectorTests(typeTests),\n        testVectorProps = _a.testVectorProps,\n        getVectorKeys = _a.getVectorKeys;\n    var vectorAction = function (props) {\n        var isVector = testVectorProps(props);\n        if (!isVector) return action(props);\n        var vectorKeys = getVectorKeys(props);\n        var testKey = vectorKeys[0];\n        var testProp = props[testKey];\n        return getActionCreator(testProp)(action, props, vectorKeys);\n    };\n    return vectorAction;\n};\nvar getActionCreator = function (prop) {\n    if (typeof prop === 'number') {\n        return createAction;\n    } else if (Array.isArray(prop)) {\n        return createArrayAction;\n    } else if (isUnitProp(prop)) {\n        return createUnitAction;\n    } else if (color.test(prop)) {\n        return createColorAction;\n    } else if (complex.test(prop)) {\n        return createComplexAction;\n    } else if (typeof prop === 'object') {\n        return createObjectAction;\n    } else {\n        return createAction;\n    }\n};\n\nvar decay = function (props) {\n    if (props === void 0) {\n        props = {};\n    }\n    return action(function (_a) {\n        var complete = _a.complete,\n            update = _a.update;\n        var _b = props.velocity,\n            velocity = _b === void 0 ? 0 : _b,\n            _c = props.from,\n            from = _c === void 0 ? 0 : _c,\n            _d = props.power,\n            power = _d === void 0 ? 0.8 : _d,\n            _e = props.timeConstant,\n            timeConstant = _e === void 0 ? 350 : _e,\n            _f = props.restDelta,\n            restDelta = _f === void 0 ? 0.5 : _f,\n            modifyTarget = props.modifyTarget;\n        var elapsed = 0;\n        var amplitude = power * velocity;\n        var idealTarget = from + amplitude;\n        var target = typeof modifyTarget === 'undefined' ? idealTarget : modifyTarget(idealTarget);\n        if (target !== idealTarget) amplitude = target - from;\n        var process = sync.update(function (_a) {\n            var frameDelta = _a.delta;\n            elapsed += frameDelta;\n            var delta = -amplitude * Math.exp(-elapsed / timeConstant);\n            var isMoving = delta > restDelta || delta < -restDelta;\n            var current = isMoving ? target + delta : target;\n            update(current);\n            if (!isMoving) {\n                cancelSync.update(process);\n                complete();\n            }\n        }, true);\n        return {\n            stop: function () {\n                return cancelSync.update(process);\n            }\n        };\n    });\n};\nvar vectorDecay = /*#__PURE__*/createVectorAction(decay, {\n    from: number.test,\n    modifyTarget: function (func) {\n        return typeof func === 'function';\n    },\n    velocity: number.test\n});\n\nvar spring = function (props) {\n    if (props === void 0) {\n        props = {};\n    }\n    return action(function (_a) {\n        var update = _a.update,\n            complete = _a.complete;\n        var _b = props.velocity,\n            velocity = _b === void 0 ? 0.0 : _b;\n        var _c = props.from,\n            from = _c === void 0 ? 0.0 : _c,\n            _d = props.to,\n            to = _d === void 0 ? 0.0 : _d,\n            _e = props.stiffness,\n            stiffness = _e === void 0 ? 100 : _e,\n            _f = props.damping,\n            damping = _f === void 0 ? 10 : _f,\n            _g = props.mass,\n            mass = _g === void 0 ? 1.0 : _g,\n            _h = props.restSpeed,\n            restSpeed = _h === void 0 ? 0.01 : _h,\n            _j = props.restDelta,\n            restDelta = _j === void 0 ? 0.01 : _j;\n        var initialVelocity = velocity ? -(velocity / 1000) : 0.0;\n        var t = 0;\n        var delta = to - from;\n        var position = from;\n        var prevPosition = position;\n        var process = sync.update(function (_a) {\n            var timeDelta = _a.delta;\n            t += timeDelta;\n            var dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n            var angularFreq = Math.sqrt(stiffness / mass) / 1000;\n            prevPosition = position;\n            if (dampingRatio < 1) {\n                var envelope = Math.exp(-dampingRatio * angularFreq * t);\n                var expoDecay = angularFreq * Math.sqrt(1.0 - dampingRatio * dampingRatio);\n                position = to - envelope * ((initialVelocity + dampingRatio * angularFreq * delta) / expoDecay * Math.sin(expoDecay * t) + delta * Math.cos(expoDecay * t));\n            } else {\n                var envelope = Math.exp(-angularFreq * t);\n                position = to - envelope * (delta + (initialVelocity + angularFreq * delta) * t);\n            }\n            velocity = velocityPerSecond(position - prevPosition, timeDelta);\n            var isBelowVelocityThreshold = Math.abs(velocity) <= restSpeed;\n            var isBelowDisplacementThreshold = Math.abs(to - position) <= restDelta;\n            if (isBelowVelocityThreshold && isBelowDisplacementThreshold) {\n                position = to;\n                update(position);\n                cancelSync.update(process);\n                complete();\n            } else {\n                update(position);\n            }\n        }, true);\n        return {\n            stop: function () {\n                return cancelSync.update(process);\n            }\n        };\n    });\n};\nvar vectorSpring = /*#__PURE__*/createVectorAction(spring, {\n    from: number.test,\n    to: number.test,\n    stiffness: number.test,\n    damping: number.test,\n    mass: number.test,\n    velocity: number.test\n});\n\nvar inertia = function (_a) {\n    var _b = _a.from,\n        from = _b === void 0 ? 0 : _b,\n        _c = _a.velocity,\n        velocity = _c === void 0 ? 0 : _c,\n        min = _a.min,\n        max = _a.max,\n        _d = _a.power,\n        power = _d === void 0 ? 0.8 : _d,\n        _e = _a.timeConstant,\n        timeConstant = _e === void 0 ? 700 : _e,\n        _f = _a.bounceStiffness,\n        bounceStiffness = _f === void 0 ? 500 : _f,\n        _g = _a.bounceDamping,\n        bounceDamping = _g === void 0 ? 10 : _g,\n        _h = _a.restDelta,\n        restDelta = _h === void 0 ? 1 : _h,\n        modifyTarget = _a.modifyTarget;\n    return action(function (_a) {\n        var update = _a.update,\n            complete = _a.complete;\n        var prev = from;\n        var current = from;\n        var activeAnimation;\n        var isOutOfBounds = function (v) {\n            return min !== undefined && v < min || max !== undefined && v > max;\n        };\n        var boundaryNearest = function (v) {\n            return Math.abs(min - v) < Math.abs(max - v) ? min : max;\n        };\n        var startAnimation = function (animation, next) {\n            activeAnimation && activeAnimation.stop();\n            activeAnimation = animation.start({\n                update: update,\n                complete: function () {\n                    if (next) {\n                        next();\n                        return;\n                    }\n                    complete();\n                }\n            });\n        };\n        var startSpring = function (props) {\n            startAnimation(spring(__assign(__assign({}, props), { stiffness: bounceStiffness, damping: bounceDamping, restDelta: restDelta })));\n        };\n        if (isOutOfBounds(from)) {\n            startSpring({ from: from, velocity: velocity, to: boundaryNearest(from) });\n        } else {\n            var to = power * velocity + from;\n            if (typeof modifyTarget !== 'undefined') {\n                to = modifyTarget(to);\n                modifyTarget = void 0;\n                velocity = (to - from) / power;\n            }\n            var animation = decay({\n                from: from,\n                velocity: velocity,\n                timeConstant: timeConstant,\n                power: power,\n                restDelta: restDelta,\n                modifyTarget: modifyTarget\n            });\n            var next = void 0;\n            if (isOutOfBounds(to)) {\n                var boundary_1 = boundaryNearest(to);\n                var heading_1 = boundary_1 == min ? -1 : 1;\n                animation = animation.while(function (v) {\n                    prev = current;\n                    velocity = velocityPerSecond(v - prev, getFrameData().delta);\n                    current = v;\n                    return boundary_1 - v * heading_1 > 0;\n                });\n                next = function () {\n                    return startSpring({ from: current, to: boundary_1, velocity: velocity });\n                };\n            }\n            startAnimation(animation, next);\n        }\n        return {\n            stop: function () {\n                return activeAnimation && activeAnimation.stop();\n            }\n        };\n    });\n};\nvar index = /*#__PURE__*/createVectorAction(inertia, {\n    from: number.test,\n    velocity: number.test,\n    min: number.test,\n    max: number.test,\n    damping: number.test,\n    stiffness: number.test,\n    modifyTarget: function (func) {\n        return typeof func === 'function';\n    }\n});\n\nvar frame = function () {\n    return action(function (_a) {\n        var update = _a.update;\n        var initialTime = 0;\n        var process = sync.update(function (_a) {\n            var timestamp = _a.timestamp;\n            if (!initialTime) initialTime = timestamp;\n            update(timestamp - initialTime);\n        }, true, true);\n        return {\n            stop: function () {\n                return cancelSync.update(process);\n            }\n        };\n    });\n};\n\nvar scrubber = function (_a) {\n    var _b = _a.from,\n        from = _b === void 0 ? 0 : _b,\n        _c = _a.to,\n        to = _c === void 0 ? 1 : _c,\n        _d = _a.ease,\n        ease = _d === void 0 ? linear : _d,\n        _e = _a.reverseEase,\n        reverseEase = _e === void 0 ? false : _e;\n    if (reverseEase) {\n        ease = createReversedEasing(ease);\n    }\n    return action(function (_a) {\n        var update = _a.update;\n        return {\n            seek: function (progress) {\n                return update(progress);\n            }\n        };\n    }).pipe(ease, function (v) {\n        return mix(from, to, v);\n    });\n};\nvar vectorScrubber = /*#__PURE__*/createVectorAction(scrubber, {\n    ease: function (func) {\n        return typeof func === 'function';\n    },\n    from: number.test,\n    to: number.test\n});\n\nvar clampProgress = /*#__PURE__*/clamp(0, 1);\nvar tween = function (props) {\n    if (props === void 0) {\n        props = {};\n    }\n    return action(function (_a) {\n        var update = _a.update,\n            complete = _a.complete;\n        var _b = props.duration,\n            duration = _b === void 0 ? 300 : _b,\n            _c = props.ease,\n            ease = _c === void 0 ? easeOut : _c,\n            _d = props.flip,\n            flip = _d === void 0 ? 0 : _d,\n            _e = props.loop,\n            loop = _e === void 0 ? 0 : _e,\n            _f = props.yoyo,\n            yoyo = _f === void 0 ? 0 : _f,\n            _g = props.repeatDelay,\n            repeatDelay = _g === void 0 ? 0 : _g;\n        var _h = props.from,\n            from = _h === void 0 ? 0 : _h,\n            _j = props.to,\n            to = _j === void 0 ? 1 : _j,\n            _k = props.elapsed,\n            elapsed = _k === void 0 ? 0 : _k,\n            _l = props.flipCount,\n            flipCount = _l === void 0 ? 0 : _l,\n            _m = props.yoyoCount,\n            yoyoCount = _m === void 0 ? 0 : _m,\n            _o = props.loopCount,\n            loopCount = _o === void 0 ? 0 : _o;\n        var playhead = vectorScrubber({ from: from, to: to, ease: ease }).start(update);\n        var currentProgress = 0;\n        var process;\n        var isActive = false;\n        var reverseAnimation = function (reverseEase) {\n            var _a;\n            if (reverseEase === void 0) {\n                reverseEase = false;\n            }\n            _a = [to, from], from = _a[0], to = _a[1];\n            playhead = vectorScrubber({ from: from, to: to, ease: ease, reverseEase: reverseEase }).start(update);\n        };\n        var isTweenComplete = function () {\n            var isComplete = isActive && elapsed > duration + repeatDelay;\n            if (!isComplete) return false;\n            if (isComplete && !loop && !flip && !yoyo) return true;\n            elapsed = duration - (elapsed - repeatDelay);\n            if (loop && loopCount < loop) {\n                loopCount++;\n                return false;\n            } else if (flip && flipCount < flip) {\n                flipCount++;\n                reverseAnimation();\n                return false;\n            } else if (yoyo && yoyoCount < yoyo) {\n                yoyoCount++;\n                reverseAnimation(yoyoCount % 2 !== 0);\n                return false;\n            }\n            return true;\n        };\n        var updateTween = function () {\n            currentProgress = clampProgress(progress(0, duration, elapsed));\n            playhead.seek(currentProgress);\n        };\n        var startTimer = function () {\n            isActive = true;\n            process = sync.update(function (_a) {\n                var delta = _a.delta;\n                elapsed += delta;\n                updateTween();\n                if (isTweenComplete()) {\n                    cancelSync.update(process);\n                    complete && sync.update(complete, false, true);\n                }\n            }, true);\n        };\n        var stopTimer = function () {\n            isActive = false;\n            if (process) cancelSync.update(process);\n        };\n        startTimer();\n        return {\n            isActive: function () {\n                return isActive;\n            },\n            getElapsed: function () {\n                return clamp(0, duration, elapsed);\n            },\n            getProgress: function () {\n                return currentProgress;\n            },\n            stop: function () {\n                stopTimer();\n            },\n            pause: function () {\n                stopTimer();\n                return this;\n            },\n            resume: function () {\n                if (!isActive) startTimer();\n                return this;\n            },\n            seek: function (newProgress) {\n                elapsed = mix(0, duration, newProgress);\n                sync.update(updateTween, false, true);\n                return this;\n            },\n            reverse: function () {\n                reverseAnimation();\n                return this;\n            }\n        };\n    });\n};\n\nvar clampProgress$1 = /*#__PURE__*/clamp(0, 1);\nvar defaultEasings = function (values, easing) {\n    return values.map(function () {\n        return easing || easeOut;\n    }).splice(0, values.length - 1);\n};\nvar defaultTimings = function (values) {\n    var numValues = values.length;\n    return values.map(function (value, i) {\n        return i !== 0 ? i / (numValues - 1) : 0;\n    });\n};\nvar interpolateScrubbers = function (input, scrubbers, update) {\n    var rangeLength = input.length;\n    var finalInputIndex = rangeLength - 1;\n    var finalScrubberIndex = finalInputIndex - 1;\n    var subs = scrubbers.map(function (scrub) {\n        return scrub.start(update);\n    });\n    return function (v) {\n        if (v <= input[0]) {\n            subs[0].seek(0);\n        }\n        if (v >= input[finalInputIndex]) {\n            subs[finalScrubberIndex].seek(1);\n        }\n        var i = 1;\n        for (; i < rangeLength; i++) {\n            if (input[i] > v || i === finalInputIndex) break;\n        }\n        var progressInRange = progress(input[i - 1], input[i], v);\n        subs[i - 1].seek(clampProgress$1(progressInRange));\n    };\n};\nvar keyframes = function (_a) {\n    var easings = _a.easings,\n        _b = _a.ease,\n        ease = _b === void 0 ? linear : _b,\n        times = _a.times,\n        values = _a.values,\n        tweenProps = __rest(_a, [\"easings\", \"ease\", \"times\", \"values\"]);\n    easings = Array.isArray(easings) ? easings : defaultEasings(values, easings);\n    times = times || defaultTimings(values);\n    var scrubbers = easings.map(function (easing, i) {\n        return vectorScrubber({\n            from: values[i],\n            to: values[i + 1],\n            ease: easing\n        });\n    });\n    return tween(__assign(__assign({}, tweenProps), { ease: ease })).applyMiddleware(function (update) {\n        return interpolateScrubbers(times, scrubbers, update);\n    });\n};\n\nvar physics = function (props) {\n    if (props === void 0) {\n        props = {};\n    }\n    return action(function (_a) {\n        var complete = _a.complete,\n            update = _a.update;\n        var _b = props.acceleration,\n            acceleration = _b === void 0 ? 0 : _b,\n            _c = props.friction,\n            friction = _c === void 0 ? 0 : _c,\n            _d = props.velocity,\n            velocity = _d === void 0 ? 0 : _d,\n            springStrength = props.springStrength,\n            to = props.to;\n        var _e = props.restSpeed,\n            restSpeed = _e === void 0 ? 0.001 : _e,\n            _f = props.from,\n            from = _f === void 0 ? 0 : _f;\n        var current = from;\n        var process = sync.update(function (_a) {\n            var delta = _a.delta;\n            var elapsed = Math.max(delta, 16);\n            if (acceleration) velocity += velocityPerFrame(acceleration, elapsed);\n            if (friction) velocity *= Math.pow(1 - friction, elapsed / 100);\n            if (springStrength !== undefined && to !== undefined) {\n                var distanceToTarget = to - current;\n                velocity += distanceToTarget * velocityPerFrame(springStrength, elapsed);\n            }\n            current += velocityPerFrame(velocity, elapsed);\n            update(current);\n            var isComplete = restSpeed !== false && (!velocity || Math.abs(velocity) <= restSpeed);\n            if (isComplete) {\n                cancelSync.update(process);\n                complete();\n            }\n        }, true);\n        return {\n            set: function (v) {\n                current = v;\n                return this;\n            },\n            setAcceleration: function (v) {\n                acceleration = v;\n                return this;\n            },\n            setFriction: function (v) {\n                friction = v;\n                return this;\n            },\n            setSpringStrength: function (v) {\n                springStrength = v;\n                return this;\n            },\n            setSpringTarget: function (v) {\n                to = v;\n                return this;\n            },\n            setVelocity: function (v) {\n                velocity = v;\n                return this;\n            },\n            stop: function () {\n                return cancelSync.update(process);\n            }\n        };\n    });\n};\nvar vectorPhysics = /*#__PURE__*/createVectorAction(physics, {\n    acceleration: number.test,\n    friction: number.test,\n    velocity: number.test,\n    from: number.test,\n    to: number.test,\n    springStrength: number.test\n});\n\nvar DEFAULT_DURATION = 300;\nvar flattenTimings = function (instructions) {\n    var flatInstructions = [];\n    var lastArg = instructions[instructions.length - 1];\n    var isStaggered = typeof lastArg === 'number';\n    var staggerDelay = isStaggered ? lastArg : 0;\n    var segments = isStaggered ? instructions.slice(0, -1) : instructions;\n    var numSegments = segments.length;\n    var offset = 0;\n    segments.forEach(function (item, i) {\n        flatInstructions.push(item);\n        if (i !== numSegments - 1) {\n            var duration = item.duration || DEFAULT_DURATION;\n            offset = staggerDelay;\n            flatInstructions.push(\"\" + (offset - duration));\n        }\n    });\n    return flatInstructions;\n};\nvar flattenArrayInstructions = function (instructions, instruction) {\n    Array.isArray(instruction) ? instructions.push.apply(instructions, flattenTimings(instruction)) : instructions.push(instruction);\n    return instructions;\n};\nvar convertDefToProps = function (props, def, i) {\n    var duration = props.duration,\n        easings = props.easings,\n        times = props.times,\n        values = props.values;\n    var numValues = values.length;\n    var prevTimeTo = times[numValues - 1];\n    var timeFrom = def.at === 0 ? 0 : def.at / duration;\n    var timeTo = (def.at + def.duration) / duration;\n    if (i === 0) {\n        values.push(def.from);\n        times.push(timeFrom);\n    } else {\n        if (prevTimeTo !== timeFrom) {\n            if (def.from !== undefined) {\n                values.push(values[numValues - 1]);\n                times.push(timeFrom);\n                easings.push(linear);\n            }\n            var from = def.from !== undefined ? def.from : values[numValues - 1];\n            values.push(from);\n            times.push(timeFrom);\n            easings.push(linear);\n        } else if (def.from !== undefined) {\n            values.push(def.from);\n            times.push(timeFrom);\n            easings.push(linear);\n        }\n    }\n    values.push(def.to);\n    times.push(timeTo);\n    easings.push(def.ease || easeInOut);\n    return props;\n};\nvar timeline = function (instructions, _a) {\n    var _b = _a === void 0 ? {} : _a,\n        duration = _b.duration,\n        elapsed = _b.elapsed,\n        ease = _b.ease,\n        loop = _b.loop,\n        flip = _b.flip,\n        yoyo = _b.yoyo;\n    var playhead = 0;\n    var calculatedDuration = 0;\n    var flatInstructions = instructions.reduce(flattenArrayInstructions, []);\n    var animationDefs = [];\n    flatInstructions.forEach(function (instruction) {\n        if (typeof instruction === 'string') {\n            playhead += parseFloat(instruction);\n        } else if (typeof instruction === 'number') {\n            playhead = instruction;\n        } else {\n            var def = __assign(__assign({}, instruction), { at: playhead });\n            def.duration = def.duration === undefined ? DEFAULT_DURATION : def.duration;\n            animationDefs.push(def);\n            playhead += def.duration;\n            calculatedDuration = Math.max(calculatedDuration, def.at + def.duration);\n        }\n    });\n    var tracks = {};\n    var numDefs = animationDefs.length;\n    for (var i = 0; i < numDefs; i++) {\n        var def = animationDefs[i];\n        var track = def.track;\n        if (track === undefined) {\n            throw new Error('No track defined');\n        }\n        if (!tracks.hasOwnProperty(track)) tracks[track] = [];\n        tracks[track].push(def);\n    }\n    var trackKeyframes = {};\n    for (var key in tracks) {\n        if (tracks.hasOwnProperty(key)) {\n            var keyframeProps = tracks[key].reduce(convertDefToProps, {\n                duration: calculatedDuration,\n                easings: [],\n                times: [],\n                values: []\n            });\n            trackKeyframes[key] = keyframes(__assign(__assign({}, keyframeProps), { duration: duration || calculatedDuration, ease: ease,\n                elapsed: elapsed,\n                loop: loop,\n                yoyo: yoyo,\n                flip: flip }));\n        }\n    }\n    return composite(trackKeyframes);\n};\n\nvar listen = function (element, events, options) {\n    return action(function (_a) {\n        var update = _a.update;\n        var eventNames = events.split(' ').map(function (eventName) {\n            element.addEventListener(eventName, update, options);\n            return eventName;\n        });\n        return {\n            stop: function () {\n                return eventNames.forEach(function (eventName) {\n                    return element.removeEventListener(eventName, update, options);\n                });\n            }\n        };\n    });\n};\n\nvar defaultPointerPos = function () {\n    return {\n        clientX: 0,\n        clientY: 0,\n        pageX: 0,\n        pageY: 0,\n        x: 0,\n        y: 0\n    };\n};\nvar eventToPoint = function (e, point) {\n    if (point === void 0) {\n        point = defaultPointerPos();\n    }\n    point.clientX = point.x = e.clientX;\n    point.clientY = point.y = e.clientY;\n    point.pageX = e.pageX;\n    point.pageY = e.pageY;\n    return point;\n};\n\nvar points = [/*#__PURE__*/defaultPointerPos()];\nvar isTouchDevice = false;\nif (typeof document !== 'undefined') {\n    var updatePointsLocation = function (_a) {\n        var touches = _a.touches;\n        isTouchDevice = true;\n        var numTouches = touches.length;\n        points.length = 0;\n        for (var i = 0; i < numTouches; i++) {\n            var thisTouch = touches[i];\n            points.push(eventToPoint(thisTouch));\n        }\n    };\n    listen(document, 'touchstart touchmove', {\n        passive: true,\n        capture: true\n    }).start(updatePointsLocation);\n}\nvar multitouch = function (_a) {\n    var _b = _a === void 0 ? {} : _a,\n        _c = _b.preventDefault,\n        preventDefault = _c === void 0 ? true : _c,\n        _d = _b.scale,\n        scale = _d === void 0 ? 1.0 : _d,\n        _e = _b.rotate,\n        rotate = _e === void 0 ? 0.0 : _e;\n    return action(function (_a) {\n        var update = _a.update;\n        var output = {\n            touches: points,\n            scale: scale,\n            rotate: rotate\n        };\n        var initialDistance = 0.0;\n        var initialRotation = 0.0;\n        var isGesture = points.length > 1;\n        if (isGesture) {\n            var firstTouch = points[0],\n                secondTouch = points[1];\n            initialDistance = distance(firstTouch, secondTouch);\n            initialRotation = angle(firstTouch, secondTouch);\n        }\n        var updatePoint = function () {\n            if (isGesture) {\n                var firstTouch = points[0],\n                    secondTouch = points[1];\n                var newDistance = distance(firstTouch, secondTouch);\n                var newRotation = angle(firstTouch, secondTouch);\n                output.scale = scale * (newDistance / initialDistance);\n                output.rotate = rotate + (newRotation - initialRotation);\n            }\n            update(output);\n        };\n        var onMove = function (e) {\n            if (preventDefault || e.touches.length > 1) e.preventDefault();\n            sync.update(updatePoint);\n        };\n        var updateOnMove = listen(document, 'touchmove', {\n            passive: !preventDefault\n        }).start(onMove);\n        if (isTouchDevice) sync.update(updatePoint);\n        return {\n            stop: function () {\n                cancelSync.update(updatePoint);\n                updateOnMove.stop();\n            }\n        };\n    });\n};\nvar getIsTouchDevice = function () {\n    return isTouchDevice;\n};\n\nvar point = /*#__PURE__*/defaultPointerPos();\nvar isMouseDevice = false;\nif (typeof document !== 'undefined') {\n    var updatePointLocation = function (e) {\n        isMouseDevice = true;\n        eventToPoint(e, point);\n    };\n    listen(document, 'mousedown mousemove', true).start(updatePointLocation);\n}\nvar mouse = function (_a) {\n    var _b = (_a === void 0 ? {} : _a).preventDefault,\n        preventDefault = _b === void 0 ? true : _b;\n    return action(function (_a) {\n        var update = _a.update;\n        var updatePoint = function () {\n            return update(point);\n        };\n        var onMove = function (e) {\n            if (preventDefault) e.preventDefault();\n            sync.update(updatePoint);\n        };\n        var updateOnMove = listen(document, 'mousemove').start(onMove);\n        if (isMouseDevice) sync.update(updatePoint);\n        return {\n            stop: function () {\n                cancelSync.update(updatePoint);\n                updateOnMove.stop();\n            }\n        };\n    });\n};\n\nvar getFirstTouch = function (_a) {\n    var firstTouch = _a[0];\n    return firstTouch;\n};\nvar pointer = function (props) {\n    if (props === void 0) {\n        props = {};\n    }\n    return getIsTouchDevice() ? multitouch(props).pipe(function (_a) {\n        var touches = _a.touches;\n        return touches;\n    }, getFirstTouch) : mouse(props);\n};\nvar index$1 = function (_a) {\n    if (_a === void 0) {\n        _a = {};\n    }\n    var x = _a.x,\n        y = _a.y,\n        props = __rest(_a, [\"x\", \"y\"]);\n    if (x !== undefined || y !== undefined) {\n        var applyXOffset_1 = applyOffset(x || 0);\n        var applyYOffset_1 = applyOffset(y || 0);\n        var delta_1 = { x: 0, y: 0 };\n        return pointer(props).pipe(function (point) {\n            delta_1.x = applyXOffset_1(point.x);\n            delta_1.y = applyYOffset_1(point.y);\n            return delta_1;\n        });\n    } else {\n        return pointer(props);\n    }\n};\n\nvar chain = function () {\n    var actions = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        actions[_i] = arguments[_i];\n    }\n    return action(function (_a) {\n        var update = _a.update,\n            complete = _a.complete;\n        var i = 0;\n        var current;\n        var playCurrent = function () {\n            current = actions[i].start({\n                complete: function () {\n                    i++;\n                    i >= actions.length ? complete() : playCurrent();\n                },\n                update: update\n            });\n        };\n        playCurrent();\n        return {\n            stop: function () {\n                return current && current.stop();\n            }\n        };\n    });\n};\n\nvar crossfade = function (a, b) {\n    return action(function (observer) {\n        var balance = 0;\n        var fadable = parallel$1(a, b).start(__assign(__assign({}, observer), { update: function (_a) {\n                var va = _a[0],\n                    vb = _a[1];\n                observer.update(mix(va, vb, balance));\n            } }));\n        return {\n            setBalance: function (v) {\n                return balance = v;\n            },\n            stop: function () {\n                return fadable.stop();\n            }\n        };\n    });\n};\n\nvar delay = function (timeToDelay) {\n    return action(function (_a) {\n        var complete = _a.complete;\n        var timeout = setTimeout(complete, timeToDelay);\n        return {\n            stop: function () {\n                return clearTimeout(timeout);\n            }\n        };\n    });\n};\n\nvar merge = function () {\n    var actions = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        actions[_i] = arguments[_i];\n    }\n    return action(function (observer) {\n        var subs = actions.map(function (thisAction) {\n            return thisAction.start(observer);\n        });\n        return {\n            stop: function () {\n                return subs.forEach(function (sub) {\n                    return sub.stop();\n                });\n            }\n        };\n    });\n};\n\nvar schedule = function (scheduler, schedulee) {\n    return action(function (_a) {\n        var update = _a.update,\n            complete = _a.complete;\n        var latest;\n        var schedulerSub = scheduler.start({\n            update: function () {\n                return latest !== undefined && update(latest);\n            },\n            complete: complete\n        });\n        var scheduleeSub = schedulee.start({\n            update: function (v) {\n                return latest = v;\n            },\n            complete: complete\n        });\n        return {\n            stop: function () {\n                schedulerSub.stop();\n                scheduleeSub.stop();\n            }\n        };\n    });\n};\n\nvar stagger = function (actions, interval) {\n    var intervalIsNumber = typeof interval === 'number';\n    var actionsWithDelay = actions.map(function (a, i) {\n        var timeToDelay = intervalIsNumber ? interval * i : interval(i);\n        return chain(delay(timeToDelay), a);\n    });\n    return parallel$1.apply(void 0, actionsWithDelay);\n};\n\nvar appendUnit = function (unit) {\n    return function (v) {\n        return \"\" + v + unit;\n    };\n};\nvar steps = function (st, min, max) {\n    if (min === void 0) {\n        min = 0;\n    }\n    if (max === void 0) {\n        max = 1;\n    }\n    return function (v) {\n        var current = progress(min, max, v);\n        return mix(min, max, stepProgress(st, current));\n    };\n};\nvar transformMap = function (childTransformers) {\n    return function (v) {\n        var output = __assign({}, v);\n        for (var key in childTransformers) {\n            if (childTransformers.hasOwnProperty(key)) {\n                var childTransformer = childTransformers[key];\n                output[key] = childTransformer(v[key]);\n            }\n        }\n        return output;\n    };\n};\n\nvar transformers = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    applyOffset: applyOffset,\n    clamp: clamp,\n    conditional: conditional,\n    interpolate: interpolate,\n    blendArray: mixArray,\n    blendColor: mixColor,\n    pipe: pipe,\n    smooth: smooth,\n    snap: snap,\n    generateStaticSpring: springForce,\n    nonlinearSpring: springForceExpo,\n    linearSpring: springForceLinear,\n    wrap: wrap,\n    appendUnit: appendUnit,\n    steps: steps,\n    transformMap: transformMap\n});\n\nvar css = function (element, props) {\n    warning(false, 'css() is deprecated, use styler instead');\n    return styler(element, props);\n};\nvar svg = function (element, props) {\n    warning(false, 'svg() is deprecated, use styler instead');\n    return styler(element, props);\n};\n\nexport { Action, ValueReaction, action, calc, chain, composite, crossfade, css, vectorDecay as decay, delay, frame as everyFrame, index as inertia, keyframes, listen, merge, mouse, multicast, multitouch, parallel$1 as parallel, vectorPhysics as physics, index$1 as pointer, schedule, vectorSpring as spring, stagger, svg, timeline, transformers as transform, tween, value };\n","import { easing, tween, styler } from \"popmotion\";\n\nexport function toggleAccordion (target: HTMLElement, opened: boolean, padding = 0) {\n  if (target) {\n    const divStyler = styler(target);\n    if (opened) {\n      divStyler.set({ display: \"block\" });\n      divStyler.render(true);\n      tween({\n        from: { height: 0, padding: 0 },\n        to: { height: target.scrollHeight + 2 * padding, padding: padding },\n        duration: 300,\n        ease: easing.anticipate,\n      }).start({\n        update: divStyler.set,\n        complete: () => divStyler.set({ height: \"auto\" }),\n      });\n    } else {\n      tween({\n        from: { height: target.scrollHeight, padding: padding },\n        to: { height: 0, padding: 0 },\n        duration: 300,\n        ease: easing.anticipate,\n      }).start({\n        update: divStyler.set,\n        complete: () => divStyler.set({ height: 0, display: \"none\" }),\n      });\n    }\n  }\n}\n","module.exports = function(md, options) {\n  options = options || {};\n  options.listUnicodeChar = options.hasOwnProperty('listUnicodeChar') ? options.listUnicodeChar : false;\n  options.stripListLeaders = options.hasOwnProperty('stripListLeaders') ? options.stripListLeaders : true;\n  options.gfm = options.hasOwnProperty('gfm') ? options.gfm : true;\n  options.useImgAltText = options.hasOwnProperty('useImgAltText') ? options.useImgAltText : true;\n  options.abbr = options.hasOwnProperty('abbr') ? options.abbr : false;\n  options.replaceLinksWithURL = options.hasOwnProperty('replaceLinksWithURL') ? options.replaceLinksWithURL : false;\n  options.htmlTagsToSkip = options.hasOwnProperty('htmlTagsToSkip') ? options.htmlTagsToSkip : [];\n\n  var output = md || '';\n\n  // Remove horizontal rules (stripListHeaders conflict with this rule, which is why it has been moved to the top)\n  output = output.replace(/^(-\\s*?|\\*\\s*?|_\\s*?){3,}\\s*/gm, '');\n\n  try {\n    if (options.stripListLeaders) {\n      if (options.listUnicodeChar)\n        output = output.replace(/^([\\s\\t]*)([\\*\\-\\+]|\\d+\\.)\\s+/gm, options.listUnicodeChar + ' $1');\n      else\n        output = output.replace(/^([\\s\\t]*)([\\*\\-\\+]|\\d+\\.)\\s+/gm, '$1');\n    }\n    if (options.gfm) {\n      output = output\n      // Header\n        .replace(/\\n={2,}/g, '\\n')\n        // Fenced codeblocks\n        .replace(/~{3}.*\\n/g, '')\n        // Strikethrough\n        .replace(/~~/g, '')\n        // Fenced codeblocks\n        .replace(/`{3}.*\\n/g, '');\n    }\n    if (options.abbr) {\n      // Remove abbreviations\n      output = output.replace(/\\*\\[.*\\]:.*\\n/, '');\n    }\n    output = output\n    // Remove HTML tags\n      .replace(/<[^>]*>/g, '')\n\n    var htmlReplaceRegex = new RegExp('<[^>]*>', 'g');\n    if (options.htmlTagsToSkip.length > 0) {\n      // Using negative lookahead. Eg. (?!sup|sub) will not match 'sup' and 'sub' tags.\n      var joinedHtmlTagsToSkip = '(?!' + options.htmlTagsToSkip.join(\"|\") + ')';\n\n      // Adding the lookahead literal with the default regex for html. Eg./<(?!sup|sub)[^>]*>/ig\n      htmlReplaceRegex = new RegExp(\n          '<' +\n          joinedHtmlTagsToSkip +\n          '[^>]*>', \n          'ig'\n      );\n    }\n\n    output = output\n      // Remove HTML tags\n      .replace(htmlReplaceRegex, '')\n      // Remove setext-style headers\n      .replace(/^[=\\-]{2,}\\s*$/g, '')\n      // Remove footnotes?\n      .replace(/\\[\\^.+?\\](\\: .*?$)?/g, '')\n      .replace(/\\s{0,2}\\[.*?\\]: .*?$/g, '')\n      // Remove images\n      .replace(/\\!\\[(.*?)\\][\\[\\(].*?[\\]\\)]/g, options.useImgAltText ? '$1' : '')\n      // Remove inline links\n      .replace(/\\[([^\\]]*?)\\][\\[\\(].*?[\\]\\)]/g, options.replaceLinksWithURL ? '$2' : '$1')\n      // Remove blockquotes\n      .replace(/^\\s{0,3}>\\s?/gm, '')\n      // .replace(/(^|\\n)\\s{0,3}>\\s?/g, '\\n\\n')\n      // Remove reference-style links?\n      .replace(/^\\s{1,2}\\[(.*?)\\]: (\\S+)( \".*?\")?\\s*$/g, '')\n      // Remove atx-style headers\n      .replace(/^(\\n)?\\s{0,}#{1,6}\\s+| {0,}(\\n)?\\s{0,}#{0,} #{0,}(\\n)?\\s{0,}$/gm, '$1$2$3')\n      // Remove * emphasis\n      .replace(/([\\*]+)(\\S)(.*?\\S)??\\1/g, '$2$3')\n      // Remove _ emphasis. Unlike *, _ emphasis gets rendered only if \n      //   1. Either there is a whitespace character before opening _ and after closing _.\n      //   2. Or _ is at the start/end of the string.\n      .replace(/(^|\\W)([_]+)(\\S)(.*?\\S)??\\2($|\\W)/g, '$1$3$4$5')\n      // Remove code blocks\n      .replace(/(`{3,})(.*?)\\1/gm, '$2')\n      // Remove inline code\n      .replace(/`(.+?)`/g, '$1')\n      // // Replace two or more newlines with exactly two? Not entirely sure this belongs here...\n      // .replace(/\\n{2,}/g, '\\n\\n')\n      // // Remove newlines in a paragraph\n      // .replace(/(\\S+)\\n\\s*(\\S+)/g, '$1 $2')\n      // Replace strike through\n      .replace(/~(.*?)~/g, '$1');\n  } catch(e) {\n    console.error(e);\n    return md;\n  }\n  return output;\n};\n","// HTML5 entities map: { name -> utf16string }\n//\n'use strict';\n\n/*eslint quotes:0*/\nmodule.exports = require('entities/lib/maps/entities.json');\n","module.exports=/[!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4E\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDF55-\\uDF59]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/","\n'use strict';\n\n\nvar encodeCache = {};\n\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache(exclude) {\n  var i, ch, cache = encodeCache[exclude];\n  if (cache) { return cache; }\n\n  cache = encodeCache[exclude] = [];\n\n  for (i = 0; i < 128; i++) {\n    ch = String.fromCharCode(i);\n\n    if (/^[0-9a-z]$/i.test(ch)) {\n      // always allow unencoded alphanumeric characters\n      cache.push(ch);\n    } else {\n      cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n    }\n  }\n\n  for (i = 0; i < exclude.length; i++) {\n    cache[exclude.charCodeAt(i)] = exclude[i];\n  }\n\n  return cache;\n}\n\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n//  - string       - string to encode\n//  - exclude      - list of characters to ignore (in addition to a-zA-Z0-9)\n//  - keepEscaped  - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode(string, exclude, keepEscaped) {\n  var i, l, code, nextCode, cache,\n      result = '';\n\n  if (typeof exclude !== 'string') {\n    // encode(string, keepEscaped)\n    keepEscaped  = exclude;\n    exclude = encode.defaultChars;\n  }\n\n  if (typeof keepEscaped === 'undefined') {\n    keepEscaped = true;\n  }\n\n  cache = getEncodeCache(exclude);\n\n  for (i = 0, l = string.length; i < l; i++) {\n    code = string.charCodeAt(i);\n\n    if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n      if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n        result += string.slice(i, i + 3);\n        i += 2;\n        continue;\n      }\n    }\n\n    if (code < 128) {\n      result += cache[code];\n      continue;\n    }\n\n    if (code >= 0xD800 && code <= 0xDFFF) {\n      if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n        nextCode = string.charCodeAt(i + 1);\n        if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n          result += encodeURIComponent(string[i] + string[i + 1]);\n          i++;\n          continue;\n        }\n      }\n      result += '%EF%BF%BD';\n      continue;\n    }\n\n    result += encodeURIComponent(string[i]);\n  }\n\n  return result;\n}\n\nencode.defaultChars   = \";/?:@&=+$,-_.!~*'()#\";\nencode.componentChars = \"-_.!~*'()\";\n\n\nmodule.exports = encode;\n","\n'use strict';\n\n\n/* eslint-disable no-bitwise */\n\nvar decodeCache = {};\n\nfunction getDecodeCache(exclude) {\n  var i, ch, cache = decodeCache[exclude];\n  if (cache) { return cache; }\n\n  cache = decodeCache[exclude] = [];\n\n  for (i = 0; i < 128; i++) {\n    ch = String.fromCharCode(i);\n    cache.push(ch);\n  }\n\n  for (i = 0; i < exclude.length; i++) {\n    ch = exclude.charCodeAt(i);\n    cache[ch] = '%' + ('0' + ch.toString(16).toUpperCase()).slice(-2);\n  }\n\n  return cache;\n}\n\n\n// Decode percent-encoded string.\n//\nfunction decode(string, exclude) {\n  var cache;\n\n  if (typeof exclude !== 'string') {\n    exclude = decode.defaultChars;\n  }\n\n  cache = getDecodeCache(exclude);\n\n  return string.replace(/(%[a-f0-9]{2})+/gi, function(seq) {\n    var i, l, b1, b2, b3, b4, chr,\n        result = '';\n\n    for (i = 0, l = seq.length; i < l; i += 3) {\n      b1 = parseInt(seq.slice(i + 1, i + 3), 16);\n\n      if (b1 < 0x80) {\n        result += cache[b1];\n        continue;\n      }\n\n      if ((b1 & 0xE0) === 0xC0 && (i + 3 < l)) {\n        // 110xxxxx 10xxxxxx\n        b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n\n        if ((b2 & 0xC0) === 0x80) {\n          chr = ((b1 << 6) & 0x7C0) | (b2 & 0x3F);\n\n          if (chr < 0x80) {\n            result += '\\ufffd\\ufffd';\n          } else {\n            result += String.fromCharCode(chr);\n          }\n\n          i += 3;\n          continue;\n        }\n      }\n\n      if ((b1 & 0xF0) === 0xE0 && (i + 6 < l)) {\n        // 1110xxxx 10xxxxxx 10xxxxxx\n        b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n        b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n\n        if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n          chr = ((b1 << 12) & 0xF000) | ((b2 << 6) & 0xFC0) | (b3 & 0x3F);\n\n          if (chr < 0x800 || (chr >= 0xD800 && chr <= 0xDFFF)) {\n            result += '\\ufffd\\ufffd\\ufffd';\n          } else {\n            result += String.fromCharCode(chr);\n          }\n\n          i += 6;\n          continue;\n        }\n      }\n\n      if ((b1 & 0xF8) === 0xF0 && (i + 9 < l)) {\n        // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx\n        b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n        b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n        b4 = parseInt(seq.slice(i + 10, i + 12), 16);\n\n        if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80 && (b4 & 0xC0) === 0x80) {\n          chr = ((b1 << 18) & 0x1C0000) | ((b2 << 12) & 0x3F000) | ((b3 << 6) & 0xFC0) | (b4 & 0x3F);\n\n          if (chr < 0x10000 || chr > 0x10FFFF) {\n            result += '\\ufffd\\ufffd\\ufffd\\ufffd';\n          } else {\n            chr -= 0x10000;\n            result += String.fromCharCode(0xD800 + (chr >> 10), 0xDC00 + (chr & 0x3FF));\n          }\n\n          i += 9;\n          continue;\n        }\n      }\n\n      result += '\\ufffd';\n    }\n\n    return result;\n  });\n}\n\n\ndecode.defaultChars   = ';/?:@&=+$,#';\ndecode.componentChars = '';\n\n\nmodule.exports = decode;\n","\n'use strict';\n\n\nmodule.exports = function format(url) {\n  var result = '';\n\n  result += url.protocol || '';\n  result += url.slashes ? '//' : '';\n  result += url.auth ? url.auth + '@' : '';\n\n  if (url.hostname && url.hostname.indexOf(':') !== -1) {\n    // ipv6 address\n    result += '[' + url.hostname + ']';\n  } else {\n    result += url.hostname || '';\n  }\n\n  result += url.port ? ':' + url.port : '';\n  result += url.pathname || '';\n  result += url.search || '';\n  result += url.hash || '';\n\n  return result;\n};\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\n'use strict';\n\n//\n// Changes from joyent/node:\n//\n// 1. No leading slash in paths,\n//    e.g. in `url.parse('http://foo?bar')` pathname is ``, not `/`\n//\n// 2. Backslashes are not replaced with slashes,\n//    so `http:\\\\example.org\\` is treated like a relative path\n//\n// 3. Trailing colon is treated like a part of the path,\n//    i.e. in `http://example.org:foo` pathname is `:foo`\n//\n// 4. Nothing is URL-encoded in the resulting object,\n//    (in joyent/node some chars in auth and paths are encoded)\n//\n// 5. `url.parse()` does not have `parseQueryString` argument\n//\n// 6. Removed extraneous result properties: `host`, `path`, `query`, etc.,\n//    which can be constructed using other parts of the url.\n//\n\n\nfunction Url() {\n  this.protocol = null;\n  this.slashes = null;\n  this.auth = null;\n  this.port = null;\n  this.hostname = null;\n  this.hash = null;\n  this.search = null;\n  this.pathname = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n    portPattern = /:[0-9]*$/,\n\n    // Special case for a simple path URL\n    simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n    // RFC 2396: characters reserved for delimiting URLs.\n    // We actually just auto-escape these.\n    delims = [ '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t' ],\n\n    // RFC 2396: characters not allowed for various reasons.\n    unwise = [ '{', '}', '|', '\\\\', '^', '`' ].concat(delims),\n\n    // Allowed by RFCs, but cause of XSS attacks.  Always escape these.\n    autoEscape = [ '\\'' ].concat(unwise),\n    // Characters that are never ever allowed in a hostname.\n    // Note that any invalid chars are also handled, but these\n    // are the ones that are *expected* to be seen, so we fast-path\n    // them.\n    nonHostChars = [ '%', '/', '?', ';', '#' ].concat(autoEscape),\n    hostEndingChars = [ '/', '?', '#' ],\n    hostnameMaxLen = 255,\n    hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n    hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n    // protocols that can allow \"unsafe\" and \"unwise\" chars.\n    /* eslint-disable no-script-url */\n    // protocols that never have a hostname.\n    hostlessProtocol = {\n      'javascript': true,\n      'javascript:': true\n    },\n    // protocols that always contain a // bit.\n    slashedProtocol = {\n      'http': true,\n      'https': true,\n      'ftp': true,\n      'gopher': true,\n      'file': true,\n      'http:': true,\n      'https:': true,\n      'ftp:': true,\n      'gopher:': true,\n      'file:': true\n    };\n    /* eslint-enable no-script-url */\n\nfunction urlParse(url, slashesDenoteHost) {\n  if (url && url instanceof Url) { return url; }\n\n  var u = new Url();\n  u.parse(url, slashesDenoteHost);\n  return u;\n}\n\nUrl.prototype.parse = function(url, slashesDenoteHost) {\n  var i, l, lowerProto, hec, slashes,\n      rest = url;\n\n  // trim before proceeding.\n  // This is to support parse stuff like \"  http://foo.com  \\n\"\n  rest = rest.trim();\n\n  if (!slashesDenoteHost && url.split('#').length === 1) {\n    // Try fast path regexp\n    var simplePath = simplePathPattern.exec(rest);\n    if (simplePath) {\n      this.pathname = simplePath[1];\n      if (simplePath[2]) {\n        this.search = simplePath[2];\n      }\n      return this;\n    }\n  }\n\n  var proto = protocolPattern.exec(rest);\n  if (proto) {\n    proto = proto[0];\n    lowerProto = proto.toLowerCase();\n    this.protocol = proto;\n    rest = rest.substr(proto.length);\n  }\n\n  // figure out if it's got a host\n  // user@server is *always* interpreted as a hostname, and url\n  // resolution will treat //foo/bar as host=foo,path=bar because that's\n  // how the browser resolves relative URLs.\n  if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n    slashes = rest.substr(0, 2) === '//';\n    if (slashes && !(proto && hostlessProtocol[proto])) {\n      rest = rest.substr(2);\n      this.slashes = true;\n    }\n  }\n\n  if (!hostlessProtocol[proto] &&\n      (slashes || (proto && !slashedProtocol[proto]))) {\n\n    // there's a hostname.\n    // the first instance of /, ?, ;, or # ends the host.\n    //\n    // If there is an @ in the hostname, then non-host chars *are* allowed\n    // to the left of the last @ sign, unless some host-ending character\n    // comes *before* the @-sign.\n    // URLs are obnoxious.\n    //\n    // ex:\n    // http://a@b@c/ => user:a@b host:c\n    // http://a@b?@c => user:a host:c path:/?@c\n\n    // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n    // Review our test case against browsers more comprehensively.\n\n    // find the first instance of any hostEndingChars\n    var hostEnd = -1;\n    for (i = 0; i < hostEndingChars.length; i++) {\n      hec = rest.indexOf(hostEndingChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n        hostEnd = hec;\n      }\n    }\n\n    // at this point, either we have an explicit point where the\n    // auth portion cannot go past, or the last @ char is the decider.\n    var auth, atSign;\n    if (hostEnd === -1) {\n      // atSign can be anywhere.\n      atSign = rest.lastIndexOf('@');\n    } else {\n      // atSign must be in auth portion.\n      // http://a@b/c@d => host:b auth:a path:/c@d\n      atSign = rest.lastIndexOf('@', hostEnd);\n    }\n\n    // Now we have a portion which is definitely the auth.\n    // Pull that off.\n    if (atSign !== -1) {\n      auth = rest.slice(0, atSign);\n      rest = rest.slice(atSign + 1);\n      this.auth = auth;\n    }\n\n    // the host is the remaining to the left of the first non-host char\n    hostEnd = -1;\n    for (i = 0; i < nonHostChars.length; i++) {\n      hec = rest.indexOf(nonHostChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n        hostEnd = hec;\n      }\n    }\n    // if we still have not hit it, then the entire thing is a host.\n    if (hostEnd === -1) {\n      hostEnd = rest.length;\n    }\n\n    if (rest[hostEnd - 1] === ':') { hostEnd--; }\n    var host = rest.slice(0, hostEnd);\n    rest = rest.slice(hostEnd);\n\n    // pull out port.\n    this.parseHost(host);\n\n    // we've indicated that there is a hostname,\n    // so even if it's empty, it has to be present.\n    this.hostname = this.hostname || '';\n\n    // if hostname begins with [ and ends with ]\n    // assume that it's an IPv6 address.\n    var ipv6Hostname = this.hostname[0] === '[' &&\n        this.hostname[this.hostname.length - 1] === ']';\n\n    // validate a little.\n    if (!ipv6Hostname) {\n      var hostparts = this.hostname.split(/\\./);\n      for (i = 0, l = hostparts.length; i < l; i++) {\n        var part = hostparts[i];\n        if (!part) { continue; }\n        if (!part.match(hostnamePartPattern)) {\n          var newpart = '';\n          for (var j = 0, k = part.length; j < k; j++) {\n            if (part.charCodeAt(j) > 127) {\n              // we replace non-ASCII char with a temporary placeholder\n              // we need this to make sure size of hostname is not\n              // broken by replacing non-ASCII by nothing\n              newpart += 'x';\n            } else {\n              newpart += part[j];\n            }\n          }\n          // we test again with ASCII char only\n          if (!newpart.match(hostnamePartPattern)) {\n            var validParts = hostparts.slice(0, i);\n            var notHost = hostparts.slice(i + 1);\n            var bit = part.match(hostnamePartStart);\n            if (bit) {\n              validParts.push(bit[1]);\n              notHost.unshift(bit[2]);\n            }\n            if (notHost.length) {\n              rest = notHost.join('.') + rest;\n            }\n            this.hostname = validParts.join('.');\n            break;\n          }\n        }\n      }\n    }\n\n    if (this.hostname.length > hostnameMaxLen) {\n      this.hostname = '';\n    }\n\n    // strip [ and ] from the hostname\n    // the host field still retains them, though\n    if (ipv6Hostname) {\n      this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n    }\n  }\n\n  // chop off from the tail first.\n  var hash = rest.indexOf('#');\n  if (hash !== -1) {\n    // got a fragment string.\n    this.hash = rest.substr(hash);\n    rest = rest.slice(0, hash);\n  }\n  var qm = rest.indexOf('?');\n  if (qm !== -1) {\n    this.search = rest.substr(qm);\n    rest = rest.slice(0, qm);\n  }\n  if (rest) { this.pathname = rest; }\n  if (slashedProtocol[lowerProto] &&\n      this.hostname && !this.pathname) {\n    this.pathname = '';\n  }\n\n  return this;\n};\n\nUrl.prototype.parseHost = function(host) {\n  var port = portPattern.exec(host);\n  if (port) {\n    port = port[0];\n    if (port !== ':') {\n      this.port = port.substr(1);\n    }\n    host = host.substr(0, host.length - port.length);\n  }\n  if (host) { this.hostname = host; }\n};\n\nmodule.exports = urlParse;\n","'use strict';\n\n\nmodule.exports.encode = require('./encode');\nmodule.exports.decode = require('./decode');\nmodule.exports.format = require('./format');\nmodule.exports.parse  = require('./parse');\n","module.exports=/[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/","module.exports=/[\\0-\\x1F\\x7F-\\x9F]/","module.exports=/[\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB]|\\uD804[\\uDCBD\\uDCCD]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]/","module.exports=/[ \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/","'use strict';\n\nexports.Any = require('./properties/Any/regex');\nexports.Cc  = require('./categories/Cc/regex');\nexports.Cf  = require('./categories/Cf/regex');\nexports.P   = require('./categories/P/regex');\nexports.Z   = require('./categories/Z/regex');\n","// Utilities\n//\n'use strict';\n\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction isString(obj) { return _class(obj) === '[object String]'; }\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction has(object, key) {\n  return _hasOwnProperty.call(object, key);\n}\n\n// Merge objects\n//\nfunction assign(obj /*from1, from2, from3, ...*/) {\n  var sources = Array.prototype.slice.call(arguments, 1);\n\n  sources.forEach(function (source) {\n    if (!source) { return; }\n\n    if (typeof source !== 'object') {\n      throw new TypeError(source + 'must be object');\n    }\n\n    Object.keys(source).forEach(function (key) {\n      obj[key] = source[key];\n    });\n  });\n\n  return obj;\n}\n\n// Remove element from array and put another array at those position.\n// Useful for some operations with tokens\nfunction arrayReplaceAt(src, pos, newElements) {\n  return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1));\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nfunction isValidEntityCode(c) {\n  /*eslint no-bitwise:0*/\n  // broken sequence\n  if (c >= 0xD800 && c <= 0xDFFF) { return false; }\n  // never used\n  if (c >= 0xFDD0 && c <= 0xFDEF) { return false; }\n  if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) { return false; }\n  // control codes\n  if (c >= 0x00 && c <= 0x08) { return false; }\n  if (c === 0x0B) { return false; }\n  if (c >= 0x0E && c <= 0x1F) { return false; }\n  if (c >= 0x7F && c <= 0x9F) { return false; }\n  // out of range\n  if (c > 0x10FFFF) { return false; }\n  return true;\n}\n\nfunction fromCodePoint(c) {\n  /*eslint no-bitwise:0*/\n  if (c > 0xffff) {\n    c -= 0x10000;\n    var surrogate1 = 0xd800 + (c >> 10),\n        surrogate2 = 0xdc00 + (c & 0x3ff);\n\n    return String.fromCharCode(surrogate1, surrogate2);\n  }\n  return String.fromCharCode(c);\n}\n\n\nvar UNESCAPE_MD_RE  = /\\\\([!\"#$%&'()*+,\\-.\\/:;<=>?@[\\\\\\]^_`{|}~])/g;\nvar ENTITY_RE       = /&([a-z#][a-z0-9]{1,31});/gi;\nvar UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + '|' + ENTITY_RE.source, 'gi');\n\nvar DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i;\n\nvar entities = require('./entities');\n\nfunction replaceEntityPattern(match, name) {\n  var code;\n\n  if (has(entities, name)) {\n    return entities[name];\n  }\n\n  if (name.charCodeAt(0) === 0x23/* # */ && DIGITAL_ENTITY_TEST_RE.test(name)) {\n    code = name[1].toLowerCase() === 'x' ?\n      parseInt(name.slice(2), 16) : parseInt(name.slice(1), 10);\n\n    if (isValidEntityCode(code)) {\n      return fromCodePoint(code);\n    }\n  }\n\n  return match;\n}\n\n/*function replaceEntities(str) {\n  if (str.indexOf('&') < 0) { return str; }\n\n  return str.replace(ENTITY_RE, replaceEntityPattern);\n}*/\n\nfunction unescapeMd(str) {\n  if (str.indexOf('\\\\') < 0) { return str; }\n  return str.replace(UNESCAPE_MD_RE, '$1');\n}\n\nfunction unescapeAll(str) {\n  if (str.indexOf('\\\\') < 0 && str.indexOf('&') < 0) { return str; }\n\n  return str.replace(UNESCAPE_ALL_RE, function (match, escaped, entity) {\n    if (escaped) { return escaped; }\n    return replaceEntityPattern(match, entity);\n  });\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar HTML_ESCAPE_TEST_RE = /[&<>\"]/;\nvar HTML_ESCAPE_REPLACE_RE = /[&<>\"]/g;\nvar HTML_REPLACEMENTS = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;'\n};\n\nfunction replaceUnsafeChar(ch) {\n  return HTML_REPLACEMENTS[ch];\n}\n\nfunction escapeHtml(str) {\n  if (HTML_ESCAPE_TEST_RE.test(str)) {\n    return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar);\n  }\n  return str;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar REGEXP_ESCAPE_RE = /[.?*+^$[\\]\\\\(){}|-]/g;\n\nfunction escapeRE(str) {\n  return str.replace(REGEXP_ESCAPE_RE, '\\\\$&');\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nfunction isSpace(code) {\n  switch (code) {\n    case 0x09:\n    case 0x20:\n      return true;\n  }\n  return false;\n}\n\n// Zs (unicode class) || [\\t\\f\\v\\r\\n]\nfunction isWhiteSpace(code) {\n  if (code >= 0x2000 && code <= 0x200A) { return true; }\n  switch (code) {\n    case 0x09: // \\t\n    case 0x0A: // \\n\n    case 0x0B: // \\v\n    case 0x0C: // \\f\n    case 0x0D: // \\r\n    case 0x20:\n    case 0xA0:\n    case 0x1680:\n    case 0x202F:\n    case 0x205F:\n    case 0x3000:\n      return true;\n  }\n  return false;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\n/*eslint-disable max-len*/\nvar UNICODE_PUNCT_RE = require('uc.micro/categories/P/regex');\n\n// Currently without astral characters support.\nfunction isPunctChar(ch) {\n  return UNICODE_PUNCT_RE.test(ch);\n}\n\n\n// Markdown ASCII punctuation characters.\n//\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\n//\n// Don't confuse with unicode punctuation !!! It lacks some chars in ascii range.\n//\nfunction isMdAsciiPunct(ch) {\n  switch (ch) {\n    case 0x21/* ! */:\n    case 0x22/* \" */:\n    case 0x23/* # */:\n    case 0x24/* $ */:\n    case 0x25/* % */:\n    case 0x26/* & */:\n    case 0x27/* ' */:\n    case 0x28/* ( */:\n    case 0x29/* ) */:\n    case 0x2A/* * */:\n    case 0x2B/* + */:\n    case 0x2C/* , */:\n    case 0x2D/* - */:\n    case 0x2E/* . */:\n    case 0x2F/* / */:\n    case 0x3A/* : */:\n    case 0x3B/* ; */:\n    case 0x3C/* < */:\n    case 0x3D/* = */:\n    case 0x3E/* > */:\n    case 0x3F/* ? */:\n    case 0x40/* @ */:\n    case 0x5B/* [ */:\n    case 0x5C/* \\ */:\n    case 0x5D/* ] */:\n    case 0x5E/* ^ */:\n    case 0x5F/* _ */:\n    case 0x60/* ` */:\n    case 0x7B/* { */:\n    case 0x7C/* | */:\n    case 0x7D/* } */:\n    case 0x7E/* ~ */:\n      return true;\n    default:\n      return false;\n  }\n}\n\n// Hepler to unify [reference labels].\n//\nfunction normalizeReference(str) {\n  // Trim and collapse whitespace\n  //\n  str = str.trim().replace(/\\s+/g, ' ');\n\n  // In node v10 'ẞ'.toLowerCase() === 'Ṿ', which is presumed to be a bug\n  // fixed in v12 (couldn't find any details).\n  //\n  // So treat this one as a special case\n  // (remove this when node v10 is no longer supported).\n  //\n  if ('ẞ'.toLowerCase() === 'Ṿ') {\n    str = str.replace(/ẞ/g, 'ß');\n  }\n\n  // .toLowerCase().toUpperCase() should get rid of all differences\n  // between letter variants.\n  //\n  // Simple .toLowerCase() doesn't normalize 125 code points correctly,\n  // and .toUpperCase doesn't normalize 6 of them (list of exceptions:\n  // İ, ϴ, ẞ, Ω, K, Å - those are already uppercased, but have differently\n  // uppercased versions).\n  //\n  // Here's an example showing how it happens. Lets take greek letter omega:\n  // uppercase U+0398 (Θ), U+03f4 (ϴ) and lowercase U+03b8 (θ), U+03d1 (ϑ)\n  //\n  // Unicode entries:\n  // 0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;\n  // 03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398\n  // 03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398\n  // 03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L;<compat> 0398;;;;N;;;;03B8;\n  //\n  // Case-insensitive comparison should treat all of them as equivalent.\n  //\n  // But .toLowerCase() doesn't change ϑ (it's already lowercase),\n  // and .toUpperCase() doesn't change ϴ (already uppercase).\n  //\n  // Applying first lower then upper case normalizes any character:\n  // '\\u0398\\u03f4\\u03b8\\u03d1'.toLowerCase().toUpperCase() === '\\u0398\\u0398\\u0398\\u0398'\n  //\n  // Note: this is equivalent to unicode case folding; unicode normalization\n  // is a different step that is not required here.\n  //\n  // Final result should be uppercased, because it's later stored in an object\n  // (this avoid a conflict with Object.prototype members,\n  // most notably, `__proto__`)\n  //\n  return str.toLowerCase().toUpperCase();\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\n// Re-export libraries commonly used in both markdown-it and its plugins,\n// so plugins won't have to depend on them explicitly, which reduces their\n// bundled size (e.g. a browser build).\n//\nexports.lib                 = {};\nexports.lib.mdurl           = require('mdurl');\nexports.lib.ucmicro         = require('uc.micro');\n\nexports.assign              = assign;\nexports.isString            = isString;\nexports.has                 = has;\nexports.unescapeMd          = unescapeMd;\nexports.unescapeAll         = unescapeAll;\nexports.isValidEntityCode   = isValidEntityCode;\nexports.fromCodePoint       = fromCodePoint;\n// exports.replaceEntities     = replaceEntities;\nexports.escapeHtml          = escapeHtml;\nexports.arrayReplaceAt      = arrayReplaceAt;\nexports.isSpace             = isSpace;\nexports.isWhiteSpace        = isWhiteSpace;\nexports.isMdAsciiPunct      = isMdAsciiPunct;\nexports.isPunctChar         = isPunctChar;\nexports.escapeRE            = escapeRE;\nexports.normalizeReference  = normalizeReference;\n","// Parse link label\n//\n// this function assumes that first character (\"[\") already matches;\n// returns the end of the label\n//\n'use strict';\n\nmodule.exports = function parseLinkLabel(state, start, disableNested) {\n  var level, found, marker, prevPos,\n      labelEnd = -1,\n      max = state.posMax,\n      oldPos = state.pos;\n\n  state.pos = start + 1;\n  level = 1;\n\n  while (state.pos < max) {\n    marker = state.src.charCodeAt(state.pos);\n    if (marker === 0x5D /* ] */) {\n      level--;\n      if (level === 0) {\n        found = true;\n        break;\n      }\n    }\n\n    prevPos = state.pos;\n    state.md.inline.skipToken(state);\n    if (marker === 0x5B /* [ */) {\n      if (prevPos === state.pos - 1) {\n        // increase level if we find text `[`, which is not a part of any token\n        level++;\n      } else if (disableNested) {\n        state.pos = oldPos;\n        return -1;\n      }\n    }\n  }\n\n  if (found) {\n    labelEnd = state.pos;\n  }\n\n  // restore old state\n  state.pos = oldPos;\n\n  return labelEnd;\n};\n","// Parse link destination\n//\n'use strict';\n\n\nvar unescapeAll = require('../common/utils').unescapeAll;\n\n\nmodule.exports = function parseLinkDestination(str, start, max) {\n  var code, level,\n      pos = start,\n      result = {\n        ok: false,\n        pos: 0,\n        lines: 0,\n        str: ''\n      };\n\n  if (str.charCodeAt(pos) === 0x3C /* < */) {\n    pos++;\n    while (pos < max) {\n      code = str.charCodeAt(pos);\n      if (code === 0x0A /* \\n */) { return result; }\n      if (code === 0x3C /* < */) { return result; }\n      if (code === 0x3E /* > */) {\n        result.pos = pos + 1;\n        result.str = unescapeAll(str.slice(start + 1, pos));\n        result.ok = true;\n        return result;\n      }\n      if (code === 0x5C /* \\ */ && pos + 1 < max) {\n        pos += 2;\n        continue;\n      }\n\n      pos++;\n    }\n\n    // no closing '>'\n    return result;\n  }\n\n  // this should be ... } else { ... branch\n\n  level = 0;\n  while (pos < max) {\n    code = str.charCodeAt(pos);\n\n    if (code === 0x20) { break; }\n\n    // ascii control characters\n    if (code < 0x20 || code === 0x7F) { break; }\n\n    if (code === 0x5C /* \\ */ && pos + 1 < max) {\n      if (str.charCodeAt(pos + 1) === 0x20) { break; }\n      pos += 2;\n      continue;\n    }\n\n    if (code === 0x28 /* ( */) {\n      level++;\n      if (level > 32) { return result; }\n    }\n\n    if (code === 0x29 /* ) */) {\n      if (level === 0) { break; }\n      level--;\n    }\n\n    pos++;\n  }\n\n  if (start === pos) { return result; }\n  if (level !== 0) { return result; }\n\n  result.str = unescapeAll(str.slice(start, pos));\n  result.pos = pos;\n  result.ok = true;\n  return result;\n};\n","// Parse link title\n//\n'use strict';\n\n\nvar unescapeAll = require('../common/utils').unescapeAll;\n\n\nmodule.exports = function parseLinkTitle(str, start, max) {\n  var code,\n      marker,\n      lines = 0,\n      pos = start,\n      result = {\n        ok: false,\n        pos: 0,\n        lines: 0,\n        str: ''\n      };\n\n  if (pos >= max) { return result; }\n\n  marker = str.charCodeAt(pos);\n\n  if (marker !== 0x22 /* \" */ && marker !== 0x27 /* ' */ && marker !== 0x28 /* ( */) { return result; }\n\n  pos++;\n\n  // if opening marker is \"(\", switch it to closing marker \")\"\n  if (marker === 0x28) { marker = 0x29; }\n\n  while (pos < max) {\n    code = str.charCodeAt(pos);\n    if (code === marker) {\n      result.pos = pos + 1;\n      result.lines = lines;\n      result.str = unescapeAll(str.slice(start + 1, pos));\n      result.ok = true;\n      return result;\n    } else if (code === 0x28 /* ( */ && marker === 0x29 /* ) */) {\n      return result;\n    } else if (code === 0x0A) {\n      lines++;\n    } else if (code === 0x5C /* \\ */ && pos + 1 < max) {\n      pos++;\n      if (str.charCodeAt(pos) === 0x0A) {\n        lines++;\n      }\n    }\n\n    pos++;\n  }\n\n  return result;\n};\n","// Just a shortcut for bulk export\n'use strict';\n\n\nexports.parseLinkLabel       = require('./parse_link_label');\nexports.parseLinkDestination = require('./parse_link_destination');\nexports.parseLinkTitle       = require('./parse_link_title');\n","/**\n * class Renderer\n *\n * Generates HTML from parsed token stream. Each instance has independent\n * copy of rules. Those can be rewritten with ease. Also, you can add new\n * rules if you create plugin and adds new token types.\n **/\n'use strict';\n\n\nvar assign          = require('./common/utils').assign;\nvar unescapeAll     = require('./common/utils').unescapeAll;\nvar escapeHtml      = require('./common/utils').escapeHtml;\n\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar default_rules = {};\n\n\ndefault_rules.code_inline = function (tokens, idx, options, env, slf) {\n  var token = tokens[idx];\n\n  return  '<code' + slf.renderAttrs(token) + '>' +\n          escapeHtml(token.content) +\n          '</code>';\n};\n\n\ndefault_rules.code_block = function (tokens, idx, options, env, slf) {\n  var token = tokens[idx];\n\n  return  '<pre' + slf.renderAttrs(token) + '><code>' +\n          escapeHtml(tokens[idx].content) +\n          '</code></pre>\\n';\n};\n\n\ndefault_rules.fence = function (tokens, idx, options, env, slf) {\n  var token = tokens[idx],\n      info = token.info ? unescapeAll(token.info).trim() : '',\n      langName = '',\n      langAttrs = '',\n      highlighted, i, arr, tmpAttrs, tmpToken;\n\n  if (info) {\n    arr = info.split(/(\\s+)/g);\n    langName = arr[0];\n    langAttrs = arr.slice(2).join('');\n  }\n\n  if (options.highlight) {\n    highlighted = options.highlight(token.content, langName, langAttrs) || escapeHtml(token.content);\n  } else {\n    highlighted = escapeHtml(token.content);\n  }\n\n  if (highlighted.indexOf('<pre') === 0) {\n    return highlighted + '\\n';\n  }\n\n  // If language exists, inject class gently, without modifying original token.\n  // May be, one day we will add .deepClone() for token and simplify this part, but\n  // now we prefer to keep things local.\n  if (info) {\n    i        = token.attrIndex('class');\n    tmpAttrs = token.attrs ? token.attrs.slice() : [];\n\n    if (i < 0) {\n      tmpAttrs.push([ 'class', options.langPrefix + langName ]);\n    } else {\n      tmpAttrs[i] = tmpAttrs[i].slice();\n      tmpAttrs[i][1] += ' ' + options.langPrefix + langName;\n    }\n\n    // Fake token just to render attributes\n    tmpToken = {\n      attrs: tmpAttrs\n    };\n\n    return  '<pre><code' + slf.renderAttrs(tmpToken) + '>'\n          + highlighted\n          + '</code></pre>\\n';\n  }\n\n\n  return  '<pre><code' + slf.renderAttrs(token) + '>'\n        + highlighted\n        + '</code></pre>\\n';\n};\n\n\ndefault_rules.image = function (tokens, idx, options, env, slf) {\n  var token = tokens[idx];\n\n  // \"alt\" attr MUST be set, even if empty. Because it's mandatory and\n  // should be placed on proper position for tests.\n  //\n  // Replace content with actual value\n\n  token.attrs[token.attrIndex('alt')][1] =\n    slf.renderInlineAsText(token.children, options, env);\n\n  return slf.renderToken(tokens, idx, options);\n};\n\n\ndefault_rules.hardbreak = function (tokens, idx, options /*, env */) {\n  return options.xhtmlOut ? '<br />\\n' : '<br>\\n';\n};\ndefault_rules.softbreak = function (tokens, idx, options /*, env */) {\n  return options.breaks ? (options.xhtmlOut ? '<br />\\n' : '<br>\\n') : '\\n';\n};\n\n\ndefault_rules.text = function (tokens, idx /*, options, env */) {\n  return escapeHtml(tokens[idx].content);\n};\n\n\ndefault_rules.html_block = function (tokens, idx /*, options, env */) {\n  return tokens[idx].content;\n};\ndefault_rules.html_inline = function (tokens, idx /*, options, env */) {\n  return tokens[idx].content;\n};\n\n\n/**\n * new Renderer()\n *\n * Creates new [[Renderer]] instance and fill [[Renderer#rules]] with defaults.\n **/\nfunction Renderer() {\n\n  /**\n   * Renderer#rules -> Object\n   *\n   * Contains render rules for tokens. Can be updated and extended.\n   *\n   * ##### Example\n   *\n   * ```javascript\n   * var md = require('markdown-it')();\n   *\n   * md.renderer.rules.strong_open  = function () { return '<b>'; };\n   * md.renderer.rules.strong_close = function () { return '</b>'; };\n   *\n   * var result = md.renderInline(...);\n   * ```\n   *\n   * Each rule is called as independent static function with fixed signature:\n   *\n   * ```javascript\n   * function my_token_render(tokens, idx, options, env, renderer) {\n   *   // ...\n   *   return renderedHTML;\n   * }\n   * ```\n   *\n   * See [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js)\n   * for more details and examples.\n   **/\n  this.rules = assign({}, default_rules);\n}\n\n\n/**\n * Renderer.renderAttrs(token) -> String\n *\n * Render token attributes to string.\n **/\nRenderer.prototype.renderAttrs = function renderAttrs(token) {\n  var i, l, result;\n\n  if (!token.attrs) { return ''; }\n\n  result = '';\n\n  for (i = 0, l = token.attrs.length; i < l; i++) {\n    result += ' ' + escapeHtml(token.attrs[i][0]) + '=\"' + escapeHtml(token.attrs[i][1]) + '\"';\n  }\n\n  return result;\n};\n\n\n/**\n * Renderer.renderToken(tokens, idx, options) -> String\n * - tokens (Array): list of tokens\n * - idx (Numbed): token index to render\n * - options (Object): params of parser instance\n *\n * Default token renderer. Can be overriden by custom function\n * in [[Renderer#rules]].\n **/\nRenderer.prototype.renderToken = function renderToken(tokens, idx, options) {\n  var nextToken,\n      result = '',\n      needLf = false,\n      token = tokens[idx];\n\n  // Tight list paragraphs\n  if (token.hidden) {\n    return '';\n  }\n\n  // Insert a newline between hidden paragraph and subsequent opening\n  // block-level tag.\n  //\n  // For example, here we should insert a newline before blockquote:\n  //  - a\n  //    >\n  //\n  if (token.block && token.nesting !== -1 && idx && tokens[idx - 1].hidden) {\n    result += '\\n';\n  }\n\n  // Add token name, e.g. `<img`\n  result += (token.nesting === -1 ? '</' : '<') + token.tag;\n\n  // Encode attributes, e.g. `<img src=\"foo\"`\n  result += this.renderAttrs(token);\n\n  // Add a slash for self-closing tags, e.g. `<img src=\"foo\" /`\n  if (token.nesting === 0 && options.xhtmlOut) {\n    result += ' /';\n  }\n\n  // Check if we need to add a newline after this tag\n  if (token.block) {\n    needLf = true;\n\n    if (token.nesting === 1) {\n      if (idx + 1 < tokens.length) {\n        nextToken = tokens[idx + 1];\n\n        if (nextToken.type === 'inline' || nextToken.hidden) {\n          // Block-level tag containing an inline tag.\n          //\n          needLf = false;\n\n        } else if (nextToken.nesting === -1 && nextToken.tag === token.tag) {\n          // Opening tag + closing tag of the same type. E.g. `<li></li>`.\n          //\n          needLf = false;\n        }\n      }\n    }\n  }\n\n  result += needLf ? '>\\n' : '>';\n\n  return result;\n};\n\n\n/**\n * Renderer.renderInline(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * The same as [[Renderer.render]], but for single token of `inline` type.\n **/\nRenderer.prototype.renderInline = function (tokens, options, env) {\n  var type,\n      result = '',\n      rules = this.rules;\n\n  for (var i = 0, len = tokens.length; i < len; i++) {\n    type = tokens[i].type;\n\n    if (typeof rules[type] !== 'undefined') {\n      result += rules[type](tokens, i, options, env, this);\n    } else {\n      result += this.renderToken(tokens, i, options);\n    }\n  }\n\n  return result;\n};\n\n\n/** internal\n * Renderer.renderInlineAsText(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Special kludge for image `alt` attributes to conform CommonMark spec.\n * Don't try to use it! Spec requires to show `alt` content with stripped markup,\n * instead of simple escaping.\n **/\nRenderer.prototype.renderInlineAsText = function (tokens, options, env) {\n  var result = '';\n\n  for (var i = 0, len = tokens.length; i < len; i++) {\n    if (tokens[i].type === 'text') {\n      result += tokens[i].content;\n    } else if (tokens[i].type === 'image') {\n      result += this.renderInlineAsText(tokens[i].children, options, env);\n    } else if (tokens[i].type === 'softbreak') {\n      result += '\\n';\n    }\n  }\n\n  return result;\n};\n\n\n/**\n * Renderer.render(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Takes token stream and generates HTML. Probably, you will never need to call\n * this method directly.\n **/\nRenderer.prototype.render = function (tokens, options, env) {\n  var i, len, type,\n      result = '',\n      rules = this.rules;\n\n  for (i = 0, len = tokens.length; i < len; i++) {\n    type = tokens[i].type;\n\n    if (type === 'inline') {\n      result += this.renderInline(tokens[i].children, options, env);\n    } else if (typeof rules[type] !== 'undefined') {\n      result += rules[type](tokens, i, options, env, this);\n    } else {\n      result += this.renderToken(tokens, i, options, env);\n    }\n  }\n\n  return result;\n};\n\nmodule.exports = Renderer;\n","/**\n * class Ruler\n *\n * Helper class, used by [[MarkdownIt#core]], [[MarkdownIt#block]] and\n * [[MarkdownIt#inline]] to manage sequences of functions (rules):\n *\n * - keep rules in defined order\n * - assign the name to each rule\n * - enable/disable rules\n * - add/replace rules\n * - allow assign rules to additional named chains (in the same)\n * - cacheing lists of active rules\n *\n * You will not need use this class directly until write plugins. For simple\n * rules control use [[MarkdownIt.disable]], [[MarkdownIt.enable]] and\n * [[MarkdownIt.use]].\n **/\n'use strict';\n\n\n/**\n * new Ruler()\n **/\nfunction Ruler() {\n  // List of added rules. Each element is:\n  //\n  // {\n  //   name: XXX,\n  //   enabled: Boolean,\n  //   fn: Function(),\n  //   alt: [ name2, name3 ]\n  // }\n  //\n  this.__rules__ = [];\n\n  // Cached rule chains.\n  //\n  // First level - chain name, '' for default.\n  // Second level - diginal anchor for fast filtering by charcodes.\n  //\n  this.__cache__ = null;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Helper methods, should not be used directly\n\n\n// Find rule index by name\n//\nRuler.prototype.__find__ = function (name) {\n  for (var i = 0; i < this.__rules__.length; i++) {\n    if (this.__rules__[i].name === name) {\n      return i;\n    }\n  }\n  return -1;\n};\n\n\n// Build rules lookup cache\n//\nRuler.prototype.__compile__ = function () {\n  var self = this;\n  var chains = [ '' ];\n\n  // collect unique names\n  self.__rules__.forEach(function (rule) {\n    if (!rule.enabled) { return; }\n\n    rule.alt.forEach(function (altName) {\n      if (chains.indexOf(altName) < 0) {\n        chains.push(altName);\n      }\n    });\n  });\n\n  self.__cache__ = {};\n\n  chains.forEach(function (chain) {\n    self.__cache__[chain] = [];\n    self.__rules__.forEach(function (rule) {\n      if (!rule.enabled) { return; }\n\n      if (chain && rule.alt.indexOf(chain) < 0) { return; }\n\n      self.__cache__[chain].push(rule.fn);\n    });\n  });\n};\n\n\n/**\n * Ruler.at(name, fn [, options])\n * - name (String): rule name to replace.\n * - fn (Function): new rule function.\n * - options (Object): new rule options (not mandatory).\n *\n * Replace rule by name with new function & options. Throws error if name not\n * found.\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * Replace existing typographer replacement rule with new one:\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.at('replacements', function replace(state) {\n *   //...\n * });\n * ```\n **/\nRuler.prototype.at = function (name, fn, options) {\n  var index = this.__find__(name);\n  var opt = options || {};\n\n  if (index === -1) { throw new Error('Parser rule not found: ' + name); }\n\n  this.__rules__[index].fn = fn;\n  this.__rules__[index].alt = opt.alt || [];\n  this.__cache__ = null;\n};\n\n\n/**\n * Ruler.before(beforeName, ruleName, fn [, options])\n * - beforeName (String): new rule will be added before this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain before one with given name. See also\n * [[Ruler.after]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.block.ruler.before('paragraph', 'my_rule', function replace(state) {\n *   //...\n * });\n * ```\n **/\nRuler.prototype.before = function (beforeName, ruleName, fn, options) {\n  var index = this.__find__(beforeName);\n  var opt = options || {};\n\n  if (index === -1) { throw new Error('Parser rule not found: ' + beforeName); }\n\n  this.__rules__.splice(index, 0, {\n    name: ruleName,\n    enabled: true,\n    fn: fn,\n    alt: opt.alt || []\n  });\n\n  this.__cache__ = null;\n};\n\n\n/**\n * Ruler.after(afterName, ruleName, fn [, options])\n * - afterName (String): new rule will be added after this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain after one with given name. See also\n * [[Ruler.before]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.inline.ruler.after('text', 'my_rule', function replace(state) {\n *   //...\n * });\n * ```\n **/\nRuler.prototype.after = function (afterName, ruleName, fn, options) {\n  var index = this.__find__(afterName);\n  var opt = options || {};\n\n  if (index === -1) { throw new Error('Parser rule not found: ' + afterName); }\n\n  this.__rules__.splice(index + 1, 0, {\n    name: ruleName,\n    enabled: true,\n    fn: fn,\n    alt: opt.alt || []\n  });\n\n  this.__cache__ = null;\n};\n\n/**\n * Ruler.push(ruleName, fn [, options])\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Push new rule to the end of chain. See also\n * [[Ruler.before]], [[Ruler.after]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.push('my_rule', function replace(state) {\n *   //...\n * });\n * ```\n **/\nRuler.prototype.push = function (ruleName, fn, options) {\n  var opt = options || {};\n\n  this.__rules__.push({\n    name: ruleName,\n    enabled: true,\n    fn: fn,\n    alt: opt.alt || []\n  });\n\n  this.__cache__ = null;\n};\n\n\n/**\n * Ruler.enable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to enable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.disable]], [[Ruler.enableOnly]].\n **/\nRuler.prototype.enable = function (list, ignoreInvalid) {\n  if (!Array.isArray(list)) { list = [ list ]; }\n\n  var result = [];\n\n  // Search by name and enable\n  list.forEach(function (name) {\n    var idx = this.__find__(name);\n\n    if (idx < 0) {\n      if (ignoreInvalid) { return; }\n      throw new Error('Rules manager: invalid rule name ' + name);\n    }\n    this.__rules__[idx].enabled = true;\n    result.push(name);\n  }, this);\n\n  this.__cache__ = null;\n  return result;\n};\n\n\n/**\n * Ruler.enableOnly(list [, ignoreInvalid])\n * - list (String|Array): list of rule names to enable (whitelist).\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names, and disable everything else. If any rule name\n * not found - throw Error. Errors can be disabled by second param.\n *\n * See also [[Ruler.disable]], [[Ruler.enable]].\n **/\nRuler.prototype.enableOnly = function (list, ignoreInvalid) {\n  if (!Array.isArray(list)) { list = [ list ]; }\n\n  this.__rules__.forEach(function (rule) { rule.enabled = false; });\n\n  this.enable(list, ignoreInvalid);\n};\n\n\n/**\n * Ruler.disable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Disable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.enable]], [[Ruler.enableOnly]].\n **/\nRuler.prototype.disable = function (list, ignoreInvalid) {\n  if (!Array.isArray(list)) { list = [ list ]; }\n\n  var result = [];\n\n  // Search by name and disable\n  list.forEach(function (name) {\n    var idx = this.__find__(name);\n\n    if (idx < 0) {\n      if (ignoreInvalid) { return; }\n      throw new Error('Rules manager: invalid rule name ' + name);\n    }\n    this.__rules__[idx].enabled = false;\n    result.push(name);\n  }, this);\n\n  this.__cache__ = null;\n  return result;\n};\n\n\n/**\n * Ruler.getRules(chainName) -> Array\n *\n * Return array of active functions (rules) for given chain name. It analyzes\n * rules configuration, compiles caches if not exists and returns result.\n *\n * Default chain name is `''` (empty string). It can't be skipped. That's\n * done intentionally, to keep signature monomorphic for high speed.\n **/\nRuler.prototype.getRules = function (chainName) {\n  if (this.__cache__ === null) {\n    this.__compile__();\n  }\n\n  // Chain can be empty, if rules disabled. But we still have to return Array.\n  return this.__cache__[chainName] || [];\n};\n\nmodule.exports = Ruler;\n","// Normalize input string\n\n'use strict';\n\n\n// https://spec.commonmark.org/0.29/#line-ending\nvar NEWLINES_RE  = /\\r\\n?|\\n/g;\nvar NULL_RE      = /\\0/g;\n\n\nmodule.exports = function normalize(state) {\n  var str;\n\n  // Normalize newlines\n  str = state.src.replace(NEWLINES_RE, '\\n');\n\n  // Replace NULL characters\n  str = str.replace(NULL_RE, '\\uFFFD');\n\n  state.src = str;\n};\n","'use strict';\n\n\nmodule.exports = function block(state) {\n  var token;\n\n  if (state.inlineMode) {\n    token          = new state.Token('inline', '', 0);\n    token.content  = state.src;\n    token.map      = [ 0, 1 ];\n    token.children = [];\n    state.tokens.push(token);\n  } else {\n    state.md.block.parse(state.src, state.md, state.env, state.tokens);\n  }\n};\n","'use strict';\n\nmodule.exports = function inline(state) {\n  var tokens = state.tokens, tok, i, l;\n\n  // Parse inlines\n  for (i = 0, l = tokens.length; i < l; i++) {\n    tok = tokens[i];\n    if (tok.type === 'inline') {\n      state.md.inline.parse(tok.content, state.md, state.env, tok.children);\n    }\n  }\n};\n","// Replace link-like texts with link nodes.\n//\n// Currently restricted by `md.validateLink()` to http/https/ftp\n//\n'use strict';\n\n\nvar arrayReplaceAt = require('../common/utils').arrayReplaceAt;\n\n\nfunction isLinkOpen(str) {\n  return /^<a[>\\s]/i.test(str);\n}\nfunction isLinkClose(str) {\n  return /^<\\/a\\s*>/i.test(str);\n}\n\n\nmodule.exports = function linkify(state) {\n  var i, j, l, tokens, token, currentToken, nodes, ln, text, pos, lastPos,\n      level, htmlLinkLevel, url, fullUrl, urlText,\n      blockTokens = state.tokens,\n      links;\n\n  if (!state.md.options.linkify) { return; }\n\n  for (j = 0, l = blockTokens.length; j < l; j++) {\n    if (blockTokens[j].type !== 'inline' ||\n        !state.md.linkify.pretest(blockTokens[j].content)) {\n      continue;\n    }\n\n    tokens = blockTokens[j].children;\n\n    htmlLinkLevel = 0;\n\n    // We scan from the end, to keep position when new tags added.\n    // Use reversed logic in links start/end match\n    for (i = tokens.length - 1; i >= 0; i--) {\n      currentToken = tokens[i];\n\n      // Skip content of markdown links\n      if (currentToken.type === 'link_close') {\n        i--;\n        while (tokens[i].level !== currentToken.level && tokens[i].type !== 'link_open') {\n          i--;\n        }\n        continue;\n      }\n\n      // Skip content of html tag links\n      if (currentToken.type === 'html_inline') {\n        if (isLinkOpen(currentToken.content) && htmlLinkLevel > 0) {\n          htmlLinkLevel--;\n        }\n        if (isLinkClose(currentToken.content)) {\n          htmlLinkLevel++;\n        }\n      }\n      if (htmlLinkLevel > 0) { continue; }\n\n      if (currentToken.type === 'text' && state.md.linkify.test(currentToken.content)) {\n\n        text = currentToken.content;\n        links = state.md.linkify.match(text);\n\n        // Now split string to nodes\n        nodes = [];\n        level = currentToken.level;\n        lastPos = 0;\n\n        // forbid escape sequence at the start of the string,\n        // this avoids http\\://example.com/ from being linkified as\n        // http:<a href=\"//example.com/\">//example.com/</a>\n        if (links.length > 0 &&\n            links[0].index === 0 &&\n            i > 0 &&\n            tokens[i - 1].type === 'text_special') {\n          links = links.slice(1);\n        }\n\n        for (ln = 0; ln < links.length; ln++) {\n          url = links[ln].url;\n          fullUrl = state.md.normalizeLink(url);\n          if (!state.md.validateLink(fullUrl)) { continue; }\n\n          urlText = links[ln].text;\n\n          // Linkifier might send raw hostnames like \"example.com\", where url\n          // starts with domain name. So we prepend http:// in those cases,\n          // and remove it afterwards.\n          //\n          if (!links[ln].schema) {\n            urlText = state.md.normalizeLinkText('http://' + urlText).replace(/^http:\\/\\//, '');\n          } else if (links[ln].schema === 'mailto:' && !/^mailto:/i.test(urlText)) {\n            urlText = state.md.normalizeLinkText('mailto:' + urlText).replace(/^mailto:/, '');\n          } else {\n            urlText = state.md.normalizeLinkText(urlText);\n          }\n\n          pos = links[ln].index;\n\n          if (pos > lastPos) {\n            token         = new state.Token('text', '', 0);\n            token.content = text.slice(lastPos, pos);\n            token.level   = level;\n            nodes.push(token);\n          }\n\n          token         = new state.Token('link_open', 'a', 1);\n          token.attrs   = [ [ 'href', fullUrl ] ];\n          token.level   = level++;\n          token.markup  = 'linkify';\n          token.info    = 'auto';\n          nodes.push(token);\n\n          token         = new state.Token('text', '', 0);\n          token.content = urlText;\n          token.level   = level;\n          nodes.push(token);\n\n          token         = new state.Token('link_close', 'a', -1);\n          token.level   = --level;\n          token.markup  = 'linkify';\n          token.info    = 'auto';\n          nodes.push(token);\n\n          lastPos = links[ln].lastIndex;\n        }\n        if (lastPos < text.length) {\n          token         = new state.Token('text', '', 0);\n          token.content = text.slice(lastPos);\n          token.level   = level;\n          nodes.push(token);\n        }\n\n        // replace current node\n        blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, nodes);\n      }\n    }\n  }\n};\n","// Simple typographic replacements\n//\n// (c) (C) → ©\n// (tm) (TM) → ™\n// (r) (R) → ®\n// +- → ±\n// ... → … (also ?.... → ?.., !.... → !..)\n// ???????? → ???, !!!!! → !!!, `,,` → `,`\n// -- → &ndash;, --- → &mdash;\n//\n'use strict';\n\n// TODO:\n// - fractionals 1/2, 1/4, 3/4 -> ½, ¼, ¾\n// - multiplications 2 x 4 -> 2 × 4\n\nvar RARE_RE = /\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/;\n\n// Workaround for phantomjs - need regex without /g flag,\n// or root check will fail every second time\nvar SCOPED_ABBR_TEST_RE = /\\((c|tm|r)\\)/i;\n\nvar SCOPED_ABBR_RE = /\\((c|tm|r)\\)/ig;\nvar SCOPED_ABBR = {\n  c: '©',\n  r: '®',\n  tm: '™'\n};\n\nfunction replaceFn(match, name) {\n  return SCOPED_ABBR[name.toLowerCase()];\n}\n\nfunction replace_scoped(inlineTokens) {\n  var i, token, inside_autolink = 0;\n\n  for (i = inlineTokens.length - 1; i >= 0; i--) {\n    token = inlineTokens[i];\n\n    if (token.type === 'text' && !inside_autolink) {\n      token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn);\n    }\n\n    if (token.type === 'link_open' && token.info === 'auto') {\n      inside_autolink--;\n    }\n\n    if (token.type === 'link_close' && token.info === 'auto') {\n      inside_autolink++;\n    }\n  }\n}\n\nfunction replace_rare(inlineTokens) {\n  var i, token, inside_autolink = 0;\n\n  for (i = inlineTokens.length - 1; i >= 0; i--) {\n    token = inlineTokens[i];\n\n    if (token.type === 'text' && !inside_autolink) {\n      if (RARE_RE.test(token.content)) {\n        token.content = token.content\n          .replace(/\\+-/g, '±')\n          // .., ..., ....... -> …\n          // but ?..... & !..... -> ?.. & !..\n          .replace(/\\.{2,}/g, '…').replace(/([?!])…/g, '$1..')\n          .replace(/([?!]){4,}/g, '$1$1$1').replace(/,{2,}/g, ',')\n          // em-dash\n          .replace(/(^|[^-])---(?=[^-]|$)/mg, '$1\\u2014')\n          // en-dash\n          .replace(/(^|\\s)--(?=\\s|$)/mg, '$1\\u2013')\n          .replace(/(^|[^-\\s])--(?=[^-\\s]|$)/mg, '$1\\u2013');\n      }\n    }\n\n    if (token.type === 'link_open' && token.info === 'auto') {\n      inside_autolink--;\n    }\n\n    if (token.type === 'link_close' && token.info === 'auto') {\n      inside_autolink++;\n    }\n  }\n}\n\n\nmodule.exports = function replace(state) {\n  var blkIdx;\n\n  if (!state.md.options.typographer) { return; }\n\n  for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n\n    if (state.tokens[blkIdx].type !== 'inline') { continue; }\n\n    if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) {\n      replace_scoped(state.tokens[blkIdx].children);\n    }\n\n    if (RARE_RE.test(state.tokens[blkIdx].content)) {\n      replace_rare(state.tokens[blkIdx].children);\n    }\n\n  }\n};\n","// Convert straight quotation marks to typographic ones\n//\n'use strict';\n\n\nvar isWhiteSpace   = require('../common/utils').isWhiteSpace;\nvar isPunctChar    = require('../common/utils').isPunctChar;\nvar isMdAsciiPunct = require('../common/utils').isMdAsciiPunct;\n\nvar QUOTE_TEST_RE = /['\"]/;\nvar QUOTE_RE = /['\"]/g;\nvar APOSTROPHE = '\\u2019'; /* ’ */\n\n\nfunction replaceAt(str, index, ch) {\n  return str.slice(0, index) + ch + str.slice(index + 1);\n}\n\nfunction process_inlines(tokens, state) {\n  var i, token, text, t, pos, max, thisLevel, item, lastChar, nextChar,\n      isLastPunctChar, isNextPunctChar, isLastWhiteSpace, isNextWhiteSpace,\n      canOpen, canClose, j, isSingle, stack, openQuote, closeQuote;\n\n  stack = [];\n\n  for (i = 0; i < tokens.length; i++) {\n    token = tokens[i];\n\n    thisLevel = tokens[i].level;\n\n    for (j = stack.length - 1; j >= 0; j--) {\n      if (stack[j].level <= thisLevel) { break; }\n    }\n    stack.length = j + 1;\n\n    if (token.type !== 'text') { continue; }\n\n    text = token.content;\n    pos = 0;\n    max = text.length;\n\n    /*eslint no-labels:0,block-scoped-var:0*/\n    OUTER:\n    while (pos < max) {\n      QUOTE_RE.lastIndex = pos;\n      t = QUOTE_RE.exec(text);\n      if (!t) { break; }\n\n      canOpen = canClose = true;\n      pos = t.index + 1;\n      isSingle = (t[0] === \"'\");\n\n      // Find previous character,\n      // default to space if it's the beginning of the line\n      //\n      lastChar = 0x20;\n\n      if (t.index - 1 >= 0) {\n        lastChar = text.charCodeAt(t.index - 1);\n      } else {\n        for (j = i - 1; j >= 0; j--) {\n          if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break; // lastChar defaults to 0x20\n          if (!tokens[j].content) continue; // should skip all tokens except 'text', 'html_inline' or 'code_inline'\n\n          lastChar = tokens[j].content.charCodeAt(tokens[j].content.length - 1);\n          break;\n        }\n      }\n\n      // Find next character,\n      // default to space if it's the end of the line\n      //\n      nextChar = 0x20;\n\n      if (pos < max) {\n        nextChar = text.charCodeAt(pos);\n      } else {\n        for (j = i + 1; j < tokens.length; j++) {\n          if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break; // nextChar defaults to 0x20\n          if (!tokens[j].content) continue; // should skip all tokens except 'text', 'html_inline' or 'code_inline'\n\n          nextChar = tokens[j].content.charCodeAt(0);\n          break;\n        }\n      }\n\n      isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));\n      isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));\n\n      isLastWhiteSpace = isWhiteSpace(lastChar);\n      isNextWhiteSpace = isWhiteSpace(nextChar);\n\n      if (isNextWhiteSpace) {\n        canOpen = false;\n      } else if (isNextPunctChar) {\n        if (!(isLastWhiteSpace || isLastPunctChar)) {\n          canOpen = false;\n        }\n      }\n\n      if (isLastWhiteSpace) {\n        canClose = false;\n      } else if (isLastPunctChar) {\n        if (!(isNextWhiteSpace || isNextPunctChar)) {\n          canClose = false;\n        }\n      }\n\n      if (nextChar === 0x22 /* \" */ && t[0] === '\"') {\n        if (lastChar >= 0x30 /* 0 */ && lastChar <= 0x39 /* 9 */) {\n          // special case: 1\"\" - count first quote as an inch\n          canClose = canOpen = false;\n        }\n      }\n\n      if (canOpen && canClose) {\n        // Replace quotes in the middle of punctuation sequence, but not\n        // in the middle of the words, i.e.:\n        //\n        // 1. foo \" bar \" baz - not replaced\n        // 2. foo-\"-bar-\"-baz - replaced\n        // 3. foo\"bar\"baz     - not replaced\n        //\n        canOpen = isLastPunctChar;\n        canClose = isNextPunctChar;\n      }\n\n      if (!canOpen && !canClose) {\n        // middle of word\n        if (isSingle) {\n          token.content = replaceAt(token.content, t.index, APOSTROPHE);\n        }\n        continue;\n      }\n\n      if (canClose) {\n        // this could be a closing quote, rewind the stack to get a match\n        for (j = stack.length - 1; j >= 0; j--) {\n          item = stack[j];\n          if (stack[j].level < thisLevel) { break; }\n          if (item.single === isSingle && stack[j].level === thisLevel) {\n            item = stack[j];\n\n            if (isSingle) {\n              openQuote = state.md.options.quotes[2];\n              closeQuote = state.md.options.quotes[3];\n            } else {\n              openQuote = state.md.options.quotes[0];\n              closeQuote = state.md.options.quotes[1];\n            }\n\n            // replace token.content *before* tokens[item.token].content,\n            // because, if they are pointing at the same token, replaceAt\n            // could mess up indices when quote length != 1\n            token.content = replaceAt(token.content, t.index, closeQuote);\n            tokens[item.token].content = replaceAt(\n              tokens[item.token].content, item.pos, openQuote);\n\n            pos += closeQuote.length - 1;\n            if (item.token === i) { pos += openQuote.length - 1; }\n\n            text = token.content;\n            max = text.length;\n\n            stack.length = j;\n            continue OUTER;\n          }\n        }\n      }\n\n      if (canOpen) {\n        stack.push({\n          token: i,\n          pos: t.index,\n          single: isSingle,\n          level: thisLevel\n        });\n      } else if (canClose && isSingle) {\n        token.content = replaceAt(token.content, t.index, APOSTROPHE);\n      }\n    }\n  }\n}\n\n\nmodule.exports = function smartquotes(state) {\n  /*eslint max-depth:0*/\n  var blkIdx;\n\n  if (!state.md.options.typographer) { return; }\n\n  for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n\n    if (state.tokens[blkIdx].type !== 'inline' ||\n        !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) {\n      continue;\n    }\n\n    process_inlines(state.tokens[blkIdx].children, state);\n  }\n};\n","// Join raw text tokens with the rest of the text\n//\n// This is set as a separate rule to provide an opportunity for plugins\n// to run text replacements after text join, but before escape join.\n//\n// For example, `\\:)` shouldn't be replaced with an emoji.\n//\n'use strict';\n\n\nmodule.exports = function text_join(state) {\n  var j, l, tokens, curr, max, last,\n      blockTokens = state.tokens;\n\n  for (j = 0, l = blockTokens.length; j < l; j++) {\n    if (blockTokens[j].type !== 'inline') continue;\n\n    tokens = blockTokens[j].children;\n    max = tokens.length;\n\n    for (curr = 0; curr < max; curr++) {\n      if (tokens[curr].type === 'text_special') {\n        tokens[curr].type = 'text';\n      }\n    }\n\n    for (curr = last = 0; curr < max; curr++) {\n      if (tokens[curr].type === 'text' &&\n          curr + 1 < max &&\n          tokens[curr + 1].type === 'text') {\n\n        // collapse two adjacent text nodes\n        tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;\n      } else {\n        if (curr !== last) { tokens[last] = tokens[curr]; }\n\n        last++;\n      }\n    }\n\n    if (curr !== last) {\n      tokens.length = last;\n    }\n  }\n};\n","// Token class\n\n'use strict';\n\n\n/**\n * class Token\n **/\n\n/**\n * new Token(type, tag, nesting)\n *\n * Create new token and fill passed properties.\n **/\nfunction Token(type, tag, nesting) {\n  /**\n   * Token#type -> String\n   *\n   * Type of the token (string, e.g. \"paragraph_open\")\n   **/\n  this.type     = type;\n\n  /**\n   * Token#tag -> String\n   *\n   * html tag name, e.g. \"p\"\n   **/\n  this.tag      = tag;\n\n  /**\n   * Token#attrs -> Array\n   *\n   * Html attributes. Format: `[ [ name1, value1 ], [ name2, value2 ] ]`\n   **/\n  this.attrs    = null;\n\n  /**\n   * Token#map -> Array\n   *\n   * Source map info. Format: `[ line_begin, line_end ]`\n   **/\n  this.map      = null;\n\n  /**\n   * Token#nesting -> Number\n   *\n   * Level change (number in {-1, 0, 1} set), where:\n   *\n   * -  `1` means the tag is opening\n   * -  `0` means the tag is self-closing\n   * - `-1` means the tag is closing\n   **/\n  this.nesting  = nesting;\n\n  /**\n   * Token#level -> Number\n   *\n   * nesting level, the same as `state.level`\n   **/\n  this.level    = 0;\n\n  /**\n   * Token#children -> Array\n   *\n   * An array of child nodes (inline and img tokens)\n   **/\n  this.children = null;\n\n  /**\n   * Token#content -> String\n   *\n   * In a case of self-closing tag (code, html, fence, etc.),\n   * it has contents of this tag.\n   **/\n  this.content  = '';\n\n  /**\n   * Token#markup -> String\n   *\n   * '*' or '_' for emphasis, fence string for fence, etc.\n   **/\n  this.markup   = '';\n\n  /**\n   * Token#info -> String\n   *\n   * Additional information:\n   *\n   * - Info string for \"fence\" tokens\n   * - The value \"auto\" for autolink \"link_open\" and \"link_close\" tokens\n   * - The string value of the item marker for ordered-list \"list_item_open\" tokens\n   **/\n  this.info     = '';\n\n  /**\n   * Token#meta -> Object\n   *\n   * A place for plugins to store an arbitrary data\n   **/\n  this.meta     = null;\n\n  /**\n   * Token#block -> Boolean\n   *\n   * True for block-level tokens, false for inline tokens.\n   * Used in renderer to calculate line breaks\n   **/\n  this.block    = false;\n\n  /**\n   * Token#hidden -> Boolean\n   *\n   * If it's true, ignore this element when rendering. Used for tight lists\n   * to hide paragraphs.\n   **/\n  this.hidden   = false;\n}\n\n\n/**\n * Token.attrIndex(name) -> Number\n *\n * Search attribute index by name.\n **/\nToken.prototype.attrIndex = function attrIndex(name) {\n  var attrs, i, len;\n\n  if (!this.attrs) { return -1; }\n\n  attrs = this.attrs;\n\n  for (i = 0, len = attrs.length; i < len; i++) {\n    if (attrs[i][0] === name) { return i; }\n  }\n  return -1;\n};\n\n\n/**\n * Token.attrPush(attrData)\n *\n * Add `[ name, value ]` attribute to list. Init attrs if necessary\n **/\nToken.prototype.attrPush = function attrPush(attrData) {\n  if (this.attrs) {\n    this.attrs.push(attrData);\n  } else {\n    this.attrs = [ attrData ];\n  }\n};\n\n\n/**\n * Token.attrSet(name, value)\n *\n * Set `name` attribute to `value`. Override old value if exists.\n **/\nToken.prototype.attrSet = function attrSet(name, value) {\n  var idx = this.attrIndex(name),\n      attrData = [ name, value ];\n\n  if (idx < 0) {\n    this.attrPush(attrData);\n  } else {\n    this.attrs[idx] = attrData;\n  }\n};\n\n\n/**\n * Token.attrGet(name)\n *\n * Get the value of attribute `name`, or null if it does not exist.\n **/\nToken.prototype.attrGet = function attrGet(name) {\n  var idx = this.attrIndex(name), value = null;\n  if (idx >= 0) {\n    value = this.attrs[idx][1];\n  }\n  return value;\n};\n\n\n/**\n * Token.attrJoin(name, value)\n *\n * Join value to existing attribute via space. Or create new attribute if not\n * exists. Useful to operate with token classes.\n **/\nToken.prototype.attrJoin = function attrJoin(name, value) {\n  var idx = this.attrIndex(name);\n\n  if (idx < 0) {\n    this.attrPush([ name, value ]);\n  } else {\n    this.attrs[idx][1] = this.attrs[idx][1] + ' ' + value;\n  }\n};\n\n\nmodule.exports = Token;\n","// Core state object\n//\n'use strict';\n\nvar Token = require('../token');\n\n\nfunction StateCore(src, md, env) {\n  this.src = src;\n  this.env = env;\n  this.tokens = [];\n  this.inlineMode = false;\n  this.md = md; // link to parser instance\n}\n\n// re-export Token class to use in core rules\nStateCore.prototype.Token = Token;\n\n\nmodule.exports = StateCore;\n","/** internal\n * class Core\n *\n * Top-level rules executor. Glues block/inline parsers and does intermediate\n * transformations.\n **/\n'use strict';\n\n\nvar Ruler  = require('./ruler');\n\n\nvar _rules = [\n  [ 'normalize',      require('./rules_core/normalize')      ],\n  [ 'block',          require('./rules_core/block')          ],\n  [ 'inline',         require('./rules_core/inline')         ],\n  [ 'linkify',        require('./rules_core/linkify')        ],\n  [ 'replacements',   require('./rules_core/replacements')   ],\n  [ 'smartquotes',    require('./rules_core/smartquotes')    ],\n  // `text_join` finds `text_special` tokens (for escape sequences)\n  // and joins them with the rest of the text\n  [ 'text_join',      require('./rules_core/text_join')      ]\n];\n\n\n/**\n * new Core()\n **/\nfunction Core() {\n  /**\n   * Core#ruler -> Ruler\n   *\n   * [[Ruler]] instance. Keep configuration of core rules.\n   **/\n  this.ruler = new Ruler();\n\n  for (var i = 0; i < _rules.length; i++) {\n    this.ruler.push(_rules[i][0], _rules[i][1]);\n  }\n}\n\n\n/**\n * Core.process(state)\n *\n * Executes core chain rules.\n **/\nCore.prototype.process = function (state) {\n  var i, l, rules;\n\n  rules = this.ruler.getRules('');\n\n  for (i = 0, l = rules.length; i < l; i++) {\n    rules[i](state);\n  }\n};\n\nCore.prototype.State = require('./rules_core/state_core');\n\n\nmodule.exports = Core;\n","// GFM table, https://github.github.com/gfm/#tables-extension-\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\nfunction getLine(state, line) {\n  var pos = state.bMarks[line] + state.tShift[line],\n      max = state.eMarks[line];\n\n  return state.src.slice(pos, max);\n}\n\nfunction escapedSplit(str) {\n  var result = [],\n      pos = 0,\n      max = str.length,\n      ch,\n      isEscaped = false,\n      lastPos = 0,\n      current = '';\n\n  ch  = str.charCodeAt(pos);\n\n  while (pos < max) {\n    if (ch === 0x7c/* | */) {\n      if (!isEscaped) {\n        // pipe separating cells, '|'\n        result.push(current + str.substring(lastPos, pos));\n        current = '';\n        lastPos = pos + 1;\n      } else {\n        // escaped pipe, '\\|'\n        current += str.substring(lastPos, pos - 1);\n        lastPos = pos;\n      }\n    }\n\n    isEscaped = (ch === 0x5c/* \\ */);\n    pos++;\n\n    ch = str.charCodeAt(pos);\n  }\n\n  result.push(current + str.substring(lastPos));\n\n  return result;\n}\n\n\nmodule.exports = function table(state, startLine, endLine, silent) {\n  var ch, lineText, pos, i, l, nextLine, columns, columnCount, token,\n      aligns, t, tableLines, tbodyLines, oldParentType, terminate,\n      terminatorRules, firstCh, secondCh;\n\n  // should have at least two lines\n  if (startLine + 2 > endLine) { return false; }\n\n  nextLine = startLine + 1;\n\n  if (state.sCount[nextLine] < state.blkIndent) { return false; }\n\n  // if it's indented more than 3 spaces, it should be a code block\n  if (state.sCount[nextLine] - state.blkIndent >= 4) { return false; }\n\n  // first character of the second line should be '|', '-', ':',\n  // and no other characters are allowed but spaces;\n  // basically, this is the equivalent of /^[-:|][-:|\\s]*$/ regexp\n\n  pos = state.bMarks[nextLine] + state.tShift[nextLine];\n  if (pos >= state.eMarks[nextLine]) { return false; }\n\n  firstCh = state.src.charCodeAt(pos++);\n  if (firstCh !== 0x7C/* | */ && firstCh !== 0x2D/* - */ && firstCh !== 0x3A/* : */) { return false; }\n\n  if (pos >= state.eMarks[nextLine]) { return false; }\n\n  secondCh = state.src.charCodeAt(pos++);\n  if (secondCh !== 0x7C/* | */ && secondCh !== 0x2D/* - */ && secondCh !== 0x3A/* : */ && !isSpace(secondCh)) {\n    return false;\n  }\n\n  // if first character is '-', then second character must not be a space\n  // (due to parsing ambiguity with list)\n  if (firstCh === 0x2D/* - */ && isSpace(secondCh)) { return false; }\n\n  while (pos < state.eMarks[nextLine]) {\n    ch = state.src.charCodeAt(pos);\n\n    if (ch !== 0x7C/* | */ && ch !== 0x2D/* - */ && ch !== 0x3A/* : */ && !isSpace(ch)) { return false; }\n\n    pos++;\n  }\n\n  lineText = getLine(state, startLine + 1);\n\n  columns = lineText.split('|');\n  aligns = [];\n  for (i = 0; i < columns.length; i++) {\n    t = columns[i].trim();\n    if (!t) {\n      // allow empty columns before and after table, but not in between columns;\n      // e.g. allow ` |---| `, disallow ` ---||--- `\n      if (i === 0 || i === columns.length - 1) {\n        continue;\n      } else {\n        return false;\n      }\n    }\n\n    if (!/^:?-+:?$/.test(t)) { return false; }\n    if (t.charCodeAt(t.length - 1) === 0x3A/* : */) {\n      aligns.push(t.charCodeAt(0) === 0x3A/* : */ ? 'center' : 'right');\n    } else if (t.charCodeAt(0) === 0x3A/* : */) {\n      aligns.push('left');\n    } else {\n      aligns.push('');\n    }\n  }\n\n  lineText = getLine(state, startLine).trim();\n  if (lineText.indexOf('|') === -1) { return false; }\n  if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n  columns = escapedSplit(lineText);\n  if (columns.length && columns[0] === '') columns.shift();\n  if (columns.length && columns[columns.length - 1] === '') columns.pop();\n\n  // header row will define an amount of columns in the entire table,\n  // and align row should be exactly the same (the rest of the rows can differ)\n  columnCount = columns.length;\n  if (columnCount === 0 || columnCount !== aligns.length) { return false; }\n\n  if (silent) { return true; }\n\n  oldParentType = state.parentType;\n  state.parentType = 'table';\n\n  // use 'blockquote' lists for termination because it's\n  // the most similar to tables\n  terminatorRules = state.md.block.ruler.getRules('blockquote');\n\n  token     = state.push('table_open', 'table', 1);\n  token.map = tableLines = [ startLine, 0 ];\n\n  token     = state.push('thead_open', 'thead', 1);\n  token.map = [ startLine, startLine + 1 ];\n\n  token     = state.push('tr_open', 'tr', 1);\n  token.map = [ startLine, startLine + 1 ];\n\n  for (i = 0; i < columns.length; i++) {\n    token          = state.push('th_open', 'th', 1);\n    if (aligns[i]) {\n      token.attrs  = [ [ 'style', 'text-align:' + aligns[i] ] ];\n    }\n\n    token          = state.push('inline', '', 0);\n    token.content  = columns[i].trim();\n    token.children = [];\n\n    token          = state.push('th_close', 'th', -1);\n  }\n\n  token     = state.push('tr_close', 'tr', -1);\n  token     = state.push('thead_close', 'thead', -1);\n\n  for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {\n    if (state.sCount[nextLine] < state.blkIndent) { break; }\n\n    terminate = false;\n    for (i = 0, l = terminatorRules.length; i < l; i++) {\n      if (terminatorRules[i](state, nextLine, endLine, true)) {\n        terminate = true;\n        break;\n      }\n    }\n\n    if (terminate) { break; }\n    lineText = getLine(state, nextLine).trim();\n    if (!lineText) { break; }\n    if (state.sCount[nextLine] - state.blkIndent >= 4) { break; }\n    columns = escapedSplit(lineText);\n    if (columns.length && columns[0] === '') columns.shift();\n    if (columns.length && columns[columns.length - 1] === '') columns.pop();\n\n    if (nextLine === startLine + 2) {\n      token     = state.push('tbody_open', 'tbody', 1);\n      token.map = tbodyLines = [ startLine + 2, 0 ];\n    }\n\n    token     = state.push('tr_open', 'tr', 1);\n    token.map = [ nextLine, nextLine + 1 ];\n\n    for (i = 0; i < columnCount; i++) {\n      token          = state.push('td_open', 'td', 1);\n      if (aligns[i]) {\n        token.attrs  = [ [ 'style', 'text-align:' + aligns[i] ] ];\n      }\n\n      token          = state.push('inline', '', 0);\n      token.content  = columns[i] ? columns[i].trim() : '';\n      token.children = [];\n\n      token          = state.push('td_close', 'td', -1);\n    }\n    token = state.push('tr_close', 'tr', -1);\n  }\n\n  if (tbodyLines) {\n    token = state.push('tbody_close', 'tbody', -1);\n    tbodyLines[1] = nextLine;\n  }\n\n  token = state.push('table_close', 'table', -1);\n  tableLines[1] = nextLine;\n\n  state.parentType = oldParentType;\n  state.line = nextLine;\n  return true;\n};\n","// Code block (4 spaces padded)\n\n'use strict';\n\n\nmodule.exports = function code(state, startLine, endLine/*, silent*/) {\n  var nextLine, last, token;\n\n  if (state.sCount[startLine] - state.blkIndent < 4) { return false; }\n\n  last = nextLine = startLine + 1;\n\n  while (nextLine < endLine) {\n    if (state.isEmpty(nextLine)) {\n      nextLine++;\n      continue;\n    }\n\n    if (state.sCount[nextLine] - state.blkIndent >= 4) {\n      nextLine++;\n      last = nextLine;\n      continue;\n    }\n    break;\n  }\n\n  state.line = last;\n\n  token         = state.push('code_block', 'code', 0);\n  token.content = state.getLines(startLine, last, 4 + state.blkIndent, false) + '\\n';\n  token.map     = [ startLine, state.line ];\n\n  return true;\n};\n","// fences (``` lang, ~~~ lang)\n\n'use strict';\n\n\nmodule.exports = function fence(state, startLine, endLine, silent) {\n  var marker, len, params, nextLine, mem, token, markup,\n      haveEndMarker = false,\n      pos = state.bMarks[startLine] + state.tShift[startLine],\n      max = state.eMarks[startLine];\n\n  // if it's indented more than 3 spaces, it should be a code block\n  if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n  if (pos + 3 > max) { return false; }\n\n  marker = state.src.charCodeAt(pos);\n\n  if (marker !== 0x7E/* ~ */ && marker !== 0x60 /* ` */) {\n    return false;\n  }\n\n  // scan marker length\n  mem = pos;\n  pos = state.skipChars(pos, marker);\n\n  len = pos - mem;\n\n  if (len < 3) { return false; }\n\n  markup = state.src.slice(mem, pos);\n  params = state.src.slice(pos, max);\n\n  if (marker === 0x60 /* ` */) {\n    if (params.indexOf(String.fromCharCode(marker)) >= 0) {\n      return false;\n    }\n  }\n\n  // Since start is found, we can report success here in validation mode\n  if (silent) { return true; }\n\n  // search end of block\n  nextLine = startLine;\n\n  for (;;) {\n    nextLine++;\n    if (nextLine >= endLine) {\n      // unclosed block should be autoclosed by end of document.\n      // also block seems to be autoclosed by end of parent\n      break;\n    }\n\n    pos = mem = state.bMarks[nextLine] + state.tShift[nextLine];\n    max = state.eMarks[nextLine];\n\n    if (pos < max && state.sCount[nextLine] < state.blkIndent) {\n      // non-empty line with negative indent should stop the list:\n      // - ```\n      //  test\n      break;\n    }\n\n    if (state.src.charCodeAt(pos) !== marker) { continue; }\n\n    if (state.sCount[nextLine] - state.blkIndent >= 4) {\n      // closing fence should be indented less than 4 spaces\n      continue;\n    }\n\n    pos = state.skipChars(pos, marker);\n\n    // closing code fence must be at least as long as the opening one\n    if (pos - mem < len) { continue; }\n\n    // make sure tail has spaces only\n    pos = state.skipSpaces(pos);\n\n    if (pos < max) { continue; }\n\n    haveEndMarker = true;\n    // found!\n    break;\n  }\n\n  // If a fence has heading spaces, they should be removed from its inner block\n  len = state.sCount[startLine];\n\n  state.line = nextLine + (haveEndMarker ? 1 : 0);\n\n  token         = state.push('fence', 'code', 0);\n  token.info    = params;\n  token.content = state.getLines(startLine + 1, nextLine, len, true);\n  token.markup  = markup;\n  token.map     = [ startLine, state.line ];\n\n  return true;\n};\n","// Block quotes\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function blockquote(state, startLine, endLine, silent) {\n  var adjustTab,\n      ch,\n      i,\n      initial,\n      l,\n      lastLineEmpty,\n      lines,\n      nextLine,\n      offset,\n      oldBMarks,\n      oldBSCount,\n      oldIndent,\n      oldParentType,\n      oldSCount,\n      oldTShift,\n      spaceAfterMarker,\n      terminate,\n      terminatorRules,\n      token,\n      isOutdented,\n      oldLineMax = state.lineMax,\n      pos = state.bMarks[startLine] + state.tShift[startLine],\n      max = state.eMarks[startLine];\n\n  // if it's indented more than 3 spaces, it should be a code block\n  if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n  // check the block quote marker\n  if (state.src.charCodeAt(pos) !== 0x3E/* > */) { return false; }\n\n  // we know that it's going to be a valid blockquote,\n  // so no point trying to find the end of it in silent mode\n  if (silent) { return true; }\n\n  oldBMarks  = [];\n  oldBSCount = [];\n  oldSCount  = [];\n  oldTShift  = [];\n\n  terminatorRules = state.md.block.ruler.getRules('blockquote');\n\n  oldParentType = state.parentType;\n  state.parentType = 'blockquote';\n\n  // Search the end of the block\n  //\n  // Block ends with either:\n  //  1. an empty line outside:\n  //     ```\n  //     > test\n  //\n  //     ```\n  //  2. an empty line inside:\n  //     ```\n  //     >\n  //     test\n  //     ```\n  //  3. another tag:\n  //     ```\n  //     > test\n  //      - - -\n  //     ```\n  for (nextLine = startLine; nextLine < endLine; nextLine++) {\n    // check if it's outdented, i.e. it's inside list item and indented\n    // less than said list item:\n    //\n    // ```\n    // 1. anything\n    //    > current blockquote\n    // 2. checking this line\n    // ```\n    isOutdented = state.sCount[nextLine] < state.blkIndent;\n\n    pos = state.bMarks[nextLine] + state.tShift[nextLine];\n    max = state.eMarks[nextLine];\n\n    if (pos >= max) {\n      // Case 1: line is not inside the blockquote, and this line is empty.\n      break;\n    }\n\n    if (state.src.charCodeAt(pos++) === 0x3E/* > */ && !isOutdented) {\n      // This line is inside the blockquote.\n\n      // set offset past spaces and \">\"\n      initial = state.sCount[nextLine] + 1;\n\n      // skip one optional space after '>'\n      if (state.src.charCodeAt(pos) === 0x20 /* space */) {\n        // ' >   test '\n        //     ^ -- position start of line here:\n        pos++;\n        initial++;\n        adjustTab = false;\n        spaceAfterMarker = true;\n      } else if (state.src.charCodeAt(pos) === 0x09 /* tab */) {\n        spaceAfterMarker = true;\n\n        if ((state.bsCount[nextLine] + initial) % 4 === 3) {\n          // '  >\\t  test '\n          //       ^ -- position start of line here (tab has width===1)\n          pos++;\n          initial++;\n          adjustTab = false;\n        } else {\n          // ' >\\t  test '\n          //    ^ -- position start of line here + shift bsCount slightly\n          //         to make extra space appear\n          adjustTab = true;\n        }\n      } else {\n        spaceAfterMarker = false;\n      }\n\n      offset = initial;\n      oldBMarks.push(state.bMarks[nextLine]);\n      state.bMarks[nextLine] = pos;\n\n      while (pos < max) {\n        ch = state.src.charCodeAt(pos);\n\n        if (isSpace(ch)) {\n          if (ch === 0x09) {\n            offset += 4 - (offset + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4;\n          } else {\n            offset++;\n          }\n        } else {\n          break;\n        }\n\n        pos++;\n      }\n\n      lastLineEmpty = pos >= max;\n\n      oldBSCount.push(state.bsCount[nextLine]);\n      state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0);\n\n      oldSCount.push(state.sCount[nextLine]);\n      state.sCount[nextLine] = offset - initial;\n\n      oldTShift.push(state.tShift[nextLine]);\n      state.tShift[nextLine] = pos - state.bMarks[nextLine];\n      continue;\n    }\n\n    // Case 2: line is not inside the blockquote, and the last line was empty.\n    if (lastLineEmpty) { break; }\n\n    // Case 3: another tag found.\n    terminate = false;\n    for (i = 0, l = terminatorRules.length; i < l; i++) {\n      if (terminatorRules[i](state, nextLine, endLine, true)) {\n        terminate = true;\n        break;\n      }\n    }\n\n    if (terminate) {\n      // Quirk to enforce \"hard termination mode\" for paragraphs;\n      // normally if you call `tokenize(state, startLine, nextLine)`,\n      // paragraphs will look below nextLine for paragraph continuation,\n      // but if blockquote is terminated by another tag, they shouldn't\n      state.lineMax = nextLine;\n\n      if (state.blkIndent !== 0) {\n        // state.blkIndent was non-zero, we now set it to zero,\n        // so we need to re-calculate all offsets to appear as\n        // if indent wasn't changed\n        oldBMarks.push(state.bMarks[nextLine]);\n        oldBSCount.push(state.bsCount[nextLine]);\n        oldTShift.push(state.tShift[nextLine]);\n        oldSCount.push(state.sCount[nextLine]);\n        state.sCount[nextLine] -= state.blkIndent;\n      }\n\n      break;\n    }\n\n    oldBMarks.push(state.bMarks[nextLine]);\n    oldBSCount.push(state.bsCount[nextLine]);\n    oldTShift.push(state.tShift[nextLine]);\n    oldSCount.push(state.sCount[nextLine]);\n\n    // A negative indentation means that this is a paragraph continuation\n    //\n    state.sCount[nextLine] = -1;\n  }\n\n  oldIndent = state.blkIndent;\n  state.blkIndent = 0;\n\n  token        = state.push('blockquote_open', 'blockquote', 1);\n  token.markup = '>';\n  token.map    = lines = [ startLine, 0 ];\n\n  state.md.block.tokenize(state, startLine, nextLine);\n\n  token        = state.push('blockquote_close', 'blockquote', -1);\n  token.markup = '>';\n\n  state.lineMax = oldLineMax;\n  state.parentType = oldParentType;\n  lines[1] = state.line;\n\n  // Restore original tShift; this might not be necessary since the parser\n  // has already been here, but just to make sure we can do that.\n  for (i = 0; i < oldTShift.length; i++) {\n    state.bMarks[i + startLine] = oldBMarks[i];\n    state.tShift[i + startLine] = oldTShift[i];\n    state.sCount[i + startLine] = oldSCount[i];\n    state.bsCount[i + startLine] = oldBSCount[i];\n  }\n  state.blkIndent = oldIndent;\n\n  return true;\n};\n","// Horizontal rule\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function hr(state, startLine, endLine, silent) {\n  var marker, cnt, ch, token,\n      pos = state.bMarks[startLine] + state.tShift[startLine],\n      max = state.eMarks[startLine];\n\n  // if it's indented more than 3 spaces, it should be a code block\n  if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n  marker = state.src.charCodeAt(pos++);\n\n  // Check hr marker\n  if (marker !== 0x2A/* * */ &&\n      marker !== 0x2D/* - */ &&\n      marker !== 0x5F/* _ */) {\n    return false;\n  }\n\n  // markers can be mixed with spaces, but there should be at least 3 of them\n\n  cnt = 1;\n  while (pos < max) {\n    ch = state.src.charCodeAt(pos++);\n    if (ch !== marker && !isSpace(ch)) { return false; }\n    if (ch === marker) { cnt++; }\n  }\n\n  if (cnt < 3) { return false; }\n\n  if (silent) { return true; }\n\n  state.line = startLine + 1;\n\n  token        = state.push('hr', 'hr', 0);\n  token.map    = [ startLine, state.line ];\n  token.markup = Array(cnt + 1).join(String.fromCharCode(marker));\n\n  return true;\n};\n","// Lists\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\n// Search `[-+*][\\n ]`, returns next pos after marker on success\n// or -1 on fail.\nfunction skipBulletListMarker(state, startLine) {\n  var marker, pos, max, ch;\n\n  pos = state.bMarks[startLine] + state.tShift[startLine];\n  max = state.eMarks[startLine];\n\n  marker = state.src.charCodeAt(pos++);\n  // Check bullet\n  if (marker !== 0x2A/* * */ &&\n      marker !== 0x2D/* - */ &&\n      marker !== 0x2B/* + */) {\n    return -1;\n  }\n\n  if (pos < max) {\n    ch = state.src.charCodeAt(pos);\n\n    if (!isSpace(ch)) {\n      // \" -test \" - is not a list item\n      return -1;\n    }\n  }\n\n  return pos;\n}\n\n// Search `\\d+[.)][\\n ]`, returns next pos after marker on success\n// or -1 on fail.\nfunction skipOrderedListMarker(state, startLine) {\n  var ch,\n      start = state.bMarks[startLine] + state.tShift[startLine],\n      pos = start,\n      max = state.eMarks[startLine];\n\n  // List marker should have at least 2 chars (digit + dot)\n  if (pos + 1 >= max) { return -1; }\n\n  ch = state.src.charCodeAt(pos++);\n\n  if (ch < 0x30/* 0 */ || ch > 0x39/* 9 */) { return -1; }\n\n  for (;;) {\n    // EOL -> fail\n    if (pos >= max) { return -1; }\n\n    ch = state.src.charCodeAt(pos++);\n\n    if (ch >= 0x30/* 0 */ && ch <= 0x39/* 9 */) {\n\n      // List marker should have no more than 9 digits\n      // (prevents integer overflow in browsers)\n      if (pos - start >= 10) { return -1; }\n\n      continue;\n    }\n\n    // found valid marker\n    if (ch === 0x29/* ) */ || ch === 0x2e/* . */) {\n      break;\n    }\n\n    return -1;\n  }\n\n\n  if (pos < max) {\n    ch = state.src.charCodeAt(pos);\n\n    if (!isSpace(ch)) {\n      // \" 1.test \" - is not a list item\n      return -1;\n    }\n  }\n  return pos;\n}\n\nfunction markTightParagraphs(state, idx) {\n  var i, l,\n      level = state.level + 2;\n\n  for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) {\n    if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') {\n      state.tokens[i + 2].hidden = true;\n      state.tokens[i].hidden = true;\n      i += 2;\n    }\n  }\n}\n\n\nmodule.exports = function list(state, startLine, endLine, silent) {\n  var ch,\n      contentStart,\n      i,\n      indent,\n      indentAfterMarker,\n      initial,\n      isOrdered,\n      itemLines,\n      l,\n      listLines,\n      listTokIdx,\n      markerCharCode,\n      markerValue,\n      max,\n      offset,\n      oldListIndent,\n      oldParentType,\n      oldSCount,\n      oldTShift,\n      oldTight,\n      pos,\n      posAfterMarker,\n      prevEmptyEnd,\n      start,\n      terminate,\n      terminatorRules,\n      token,\n      nextLine = startLine,\n      isTerminatingParagraph = false,\n      tight = true;\n\n  // if it's indented more than 3 spaces, it should be a code block\n  if (state.sCount[nextLine] - state.blkIndent >= 4) { return false; }\n\n  // Special case:\n  //  - item 1\n  //   - item 2\n  //    - item 3\n  //     - item 4\n  //      - this one is a paragraph continuation\n  if (state.listIndent >= 0 &&\n      state.sCount[nextLine] - state.listIndent >= 4 &&\n      state.sCount[nextLine] < state.blkIndent) {\n    return false;\n  }\n\n  // limit conditions when list can interrupt\n  // a paragraph (validation mode only)\n  if (silent && state.parentType === 'paragraph') {\n    // Next list item should still terminate previous list item;\n    //\n    // This code can fail if plugins use blkIndent as well as lists,\n    // but I hope the spec gets fixed long before that happens.\n    //\n    if (state.sCount[nextLine] >= state.blkIndent) {\n      isTerminatingParagraph = true;\n    }\n  }\n\n  // Detect list type and position after marker\n  if ((posAfterMarker = skipOrderedListMarker(state, nextLine)) >= 0) {\n    isOrdered = true;\n    start = state.bMarks[nextLine] + state.tShift[nextLine];\n    markerValue = Number(state.src.slice(start, posAfterMarker - 1));\n\n    // If we're starting a new ordered list right after\n    // a paragraph, it should start with 1.\n    if (isTerminatingParagraph && markerValue !== 1) return false;\n\n  } else if ((posAfterMarker = skipBulletListMarker(state, nextLine)) >= 0) {\n    isOrdered = false;\n\n  } else {\n    return false;\n  }\n\n  // If we're starting a new unordered list right after\n  // a paragraph, first line should not be empty.\n  if (isTerminatingParagraph) {\n    if (state.skipSpaces(posAfterMarker) >= state.eMarks[nextLine]) return false;\n  }\n\n  // For validation mode we can terminate immediately\n  if (silent) { return true; }\n\n  // We should terminate list on style change. Remember first one to compare.\n  markerCharCode = state.src.charCodeAt(posAfterMarker - 1);\n\n  // Start list\n  listTokIdx = state.tokens.length;\n\n  if (isOrdered) {\n    token       = state.push('ordered_list_open', 'ol', 1);\n    if (markerValue !== 1) {\n      token.attrs = [ [ 'start', markerValue ] ];\n    }\n\n  } else {\n    token       = state.push('bullet_list_open', 'ul', 1);\n  }\n\n  token.map    = listLines = [ nextLine, 0 ];\n  token.markup = String.fromCharCode(markerCharCode);\n\n  //\n  // Iterate list items\n  //\n\n  prevEmptyEnd = false;\n  terminatorRules = state.md.block.ruler.getRules('list');\n\n  oldParentType = state.parentType;\n  state.parentType = 'list';\n\n  while (nextLine < endLine) {\n    pos = posAfterMarker;\n    max = state.eMarks[nextLine];\n\n    initial = offset = state.sCount[nextLine] + posAfterMarker - (state.bMarks[nextLine] + state.tShift[nextLine]);\n\n    while (pos < max) {\n      ch = state.src.charCodeAt(pos);\n\n      if (ch === 0x09) {\n        offset += 4 - (offset + state.bsCount[nextLine]) % 4;\n      } else if (ch === 0x20) {\n        offset++;\n      } else {\n        break;\n      }\n\n      pos++;\n    }\n\n    contentStart = pos;\n\n    if (contentStart >= max) {\n      // trimming space in \"-    \\n  3\" case, indent is 1 here\n      indentAfterMarker = 1;\n    } else {\n      indentAfterMarker = offset - initial;\n    }\n\n    // If we have more than 4 spaces, the indent is 1\n    // (the rest is just indented code block)\n    if (indentAfterMarker > 4) { indentAfterMarker = 1; }\n\n    // \"  -  test\"\n    //  ^^^^^ - calculating total length of this thing\n    indent = initial + indentAfterMarker;\n\n    // Run subparser & write tokens\n    token        = state.push('list_item_open', 'li', 1);\n    token.markup = String.fromCharCode(markerCharCode);\n    token.map    = itemLines = [ nextLine, 0 ];\n    if (isOrdered) {\n      token.info = state.src.slice(start, posAfterMarker - 1);\n    }\n\n    // change current state, then restore it after parser subcall\n    oldTight = state.tight;\n    oldTShift = state.tShift[nextLine];\n    oldSCount = state.sCount[nextLine];\n\n    //  - example list\n    // ^ listIndent position will be here\n    //   ^ blkIndent position will be here\n    //\n    oldListIndent = state.listIndent;\n    state.listIndent = state.blkIndent;\n    state.blkIndent = indent;\n\n    state.tight = true;\n    state.tShift[nextLine] = contentStart - state.bMarks[nextLine];\n    state.sCount[nextLine] = offset;\n\n    if (contentStart >= max && state.isEmpty(nextLine + 1)) {\n      // workaround for this case\n      // (list item is empty, list terminates before \"foo\"):\n      // ~~~~~~~~\n      //   -\n      //\n      //     foo\n      // ~~~~~~~~\n      state.line = Math.min(state.line + 2, endLine);\n    } else {\n      state.md.block.tokenize(state, nextLine, endLine, true);\n    }\n\n    // If any of list item is tight, mark list as tight\n    if (!state.tight || prevEmptyEnd) {\n      tight = false;\n    }\n    // Item become loose if finish with empty line,\n    // but we should filter last element, because it means list finish\n    prevEmptyEnd = (state.line - nextLine) > 1 && state.isEmpty(state.line - 1);\n\n    state.blkIndent = state.listIndent;\n    state.listIndent = oldListIndent;\n    state.tShift[nextLine] = oldTShift;\n    state.sCount[nextLine] = oldSCount;\n    state.tight = oldTight;\n\n    token        = state.push('list_item_close', 'li', -1);\n    token.markup = String.fromCharCode(markerCharCode);\n\n    nextLine = state.line;\n    itemLines[1] = nextLine;\n\n    if (nextLine >= endLine) { break; }\n\n    //\n    // Try to check if list is terminated or continued.\n    //\n    if (state.sCount[nextLine] < state.blkIndent) { break; }\n\n    // if it's indented more than 3 spaces, it should be a code block\n    if (state.sCount[nextLine] - state.blkIndent >= 4) { break; }\n\n    // fail if terminating block found\n    terminate = false;\n    for (i = 0, l = terminatorRules.length; i < l; i++) {\n      if (terminatorRules[i](state, nextLine, endLine, true)) {\n        terminate = true;\n        break;\n      }\n    }\n    if (terminate) { break; }\n\n    // fail if list has another type\n    if (isOrdered) {\n      posAfterMarker = skipOrderedListMarker(state, nextLine);\n      if (posAfterMarker < 0) { break; }\n      start = state.bMarks[nextLine] + state.tShift[nextLine];\n    } else {\n      posAfterMarker = skipBulletListMarker(state, nextLine);\n      if (posAfterMarker < 0) { break; }\n    }\n\n    if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) { break; }\n  }\n\n  // Finalize list\n  if (isOrdered) {\n    token = state.push('ordered_list_close', 'ol', -1);\n  } else {\n    token = state.push('bullet_list_close', 'ul', -1);\n  }\n  token.markup = String.fromCharCode(markerCharCode);\n\n  listLines[1] = nextLine;\n  state.line = nextLine;\n\n  state.parentType = oldParentType;\n\n  // mark paragraphs tight if needed\n  if (tight) {\n    markTightParagraphs(state, listTokIdx);\n  }\n\n  return true;\n};\n","'use strict';\n\n\nvar normalizeReference   = require('../common/utils').normalizeReference;\nvar isSpace              = require('../common/utils').isSpace;\n\n\nmodule.exports = function reference(state, startLine, _endLine, silent) {\n  var ch,\n      destEndPos,\n      destEndLineNo,\n      endLine,\n      href,\n      i,\n      l,\n      label,\n      labelEnd,\n      oldParentType,\n      res,\n      start,\n      str,\n      terminate,\n      terminatorRules,\n      title,\n      lines = 0,\n      pos = state.bMarks[startLine] + state.tShift[startLine],\n      max = state.eMarks[startLine],\n      nextLine = startLine + 1;\n\n  // if it's indented more than 3 spaces, it should be a code block\n  if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n  if (state.src.charCodeAt(pos) !== 0x5B/* [ */) { return false; }\n\n  // Simple check to quickly interrupt scan on [link](url) at the start of line.\n  // Can be useful on practice: https://github.com/markdown-it/markdown-it/issues/54\n  while (++pos < max) {\n    if (state.src.charCodeAt(pos) === 0x5D /* ] */ &&\n        state.src.charCodeAt(pos - 1) !== 0x5C/* \\ */) {\n      if (pos + 1 === max) { return false; }\n      if (state.src.charCodeAt(pos + 1) !== 0x3A/* : */) { return false; }\n      break;\n    }\n  }\n\n  endLine = state.lineMax;\n\n  // jump line-by-line until empty one or EOF\n  terminatorRules = state.md.block.ruler.getRules('reference');\n\n  oldParentType = state.parentType;\n  state.parentType = 'reference';\n\n  for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n    // this would be a code block normally, but after paragraph\n    // it's considered a lazy continuation regardless of what's there\n    if (state.sCount[nextLine] - state.blkIndent > 3) { continue; }\n\n    // quirk for blockquotes, this line should already be checked by that rule\n    if (state.sCount[nextLine] < 0) { continue; }\n\n    // Some tags can terminate paragraph without empty line.\n    terminate = false;\n    for (i = 0, l = terminatorRules.length; i < l; i++) {\n      if (terminatorRules[i](state, nextLine, endLine, true)) {\n        terminate = true;\n        break;\n      }\n    }\n    if (terminate) { break; }\n  }\n\n  str = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n  max = str.length;\n\n  for (pos = 1; pos < max; pos++) {\n    ch = str.charCodeAt(pos);\n    if (ch === 0x5B /* [ */) {\n      return false;\n    } else if (ch === 0x5D /* ] */) {\n      labelEnd = pos;\n      break;\n    } else if (ch === 0x0A /* \\n */) {\n      lines++;\n    } else if (ch === 0x5C /* \\ */) {\n      pos++;\n      if (pos < max && str.charCodeAt(pos) === 0x0A) {\n        lines++;\n      }\n    }\n  }\n\n  if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A/* : */) { return false; }\n\n  // [label]:   destination   'title'\n  //         ^^^ skip optional whitespace here\n  for (pos = labelEnd + 2; pos < max; pos++) {\n    ch = str.charCodeAt(pos);\n    if (ch === 0x0A) {\n      lines++;\n    } else if (isSpace(ch)) {\n      /*eslint no-empty:0*/\n    } else {\n      break;\n    }\n  }\n\n  // [label]:   destination   'title'\n  //            ^^^^^^^^^^^ parse this\n  res = state.md.helpers.parseLinkDestination(str, pos, max);\n  if (!res.ok) { return false; }\n\n  href = state.md.normalizeLink(res.str);\n  if (!state.md.validateLink(href)) { return false; }\n\n  pos = res.pos;\n  lines += res.lines;\n\n  // save cursor state, we could require to rollback later\n  destEndPos = pos;\n  destEndLineNo = lines;\n\n  // [label]:   destination   'title'\n  //                       ^^^ skipping those spaces\n  start = pos;\n  for (; pos < max; pos++) {\n    ch = str.charCodeAt(pos);\n    if (ch === 0x0A) {\n      lines++;\n    } else if (isSpace(ch)) {\n      /*eslint no-empty:0*/\n    } else {\n      break;\n    }\n  }\n\n  // [label]:   destination   'title'\n  //                          ^^^^^^^ parse this\n  res = state.md.helpers.parseLinkTitle(str, pos, max);\n  if (pos < max && start !== pos && res.ok) {\n    title = res.str;\n    pos = res.pos;\n    lines += res.lines;\n  } else {\n    title = '';\n    pos = destEndPos;\n    lines = destEndLineNo;\n  }\n\n  // skip trailing spaces until the rest of the line\n  while (pos < max) {\n    ch = str.charCodeAt(pos);\n    if (!isSpace(ch)) { break; }\n    pos++;\n  }\n\n  if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n    if (title) {\n      // garbage at the end of the line after title,\n      // but it could still be a valid reference if we roll back\n      title = '';\n      pos = destEndPos;\n      lines = destEndLineNo;\n      while (pos < max) {\n        ch = str.charCodeAt(pos);\n        if (!isSpace(ch)) { break; }\n        pos++;\n      }\n    }\n  }\n\n  if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n    // garbage at the end of the line\n    return false;\n  }\n\n  label = normalizeReference(str.slice(1, labelEnd));\n  if (!label) {\n    // CommonMark 0.20 disallows empty labels\n    return false;\n  }\n\n  // Reference can not terminate anything. This check is for safety only.\n  /*istanbul ignore if*/\n  if (silent) { return true; }\n\n  if (typeof state.env.references === 'undefined') {\n    state.env.references = {};\n  }\n  if (typeof state.env.references[label] === 'undefined') {\n    state.env.references[label] = { title: title, href: href };\n  }\n\n  state.parentType = oldParentType;\n\n  state.line = startLine + lines + 1;\n  return true;\n};\n","// List of valid html blocks names, accorting to commonmark spec\n// http://jgm.github.io/CommonMark/spec.html#html-blocks\n\n'use strict';\n\n\nmodule.exports = [\n  'address',\n  'article',\n  'aside',\n  'base',\n  'basefont',\n  'blockquote',\n  'body',\n  'caption',\n  'center',\n  'col',\n  'colgroup',\n  'dd',\n  'details',\n  'dialog',\n  'dir',\n  'div',\n  'dl',\n  'dt',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'footer',\n  'form',\n  'frame',\n  'frameset',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'head',\n  'header',\n  'hr',\n  'html',\n  'iframe',\n  'legend',\n  'li',\n  'link',\n  'main',\n  'menu',\n  'menuitem',\n  'nav',\n  'noframes',\n  'ol',\n  'optgroup',\n  'option',\n  'p',\n  'param',\n  'section',\n  'source',\n  'summary',\n  'table',\n  'tbody',\n  'td',\n  'tfoot',\n  'th',\n  'thead',\n  'title',\n  'tr',\n  'track',\n  'ul'\n];\n","// Regexps to match html elements\n\n'use strict';\n\nvar attr_name     = '[a-zA-Z_:][a-zA-Z0-9:._-]*';\n\nvar unquoted      = '[^\"\\'=<>`\\\\x00-\\\\x20]+';\nvar single_quoted = \"'[^']*'\";\nvar double_quoted = '\"[^\"]*\"';\n\nvar attr_value  = '(?:' + unquoted + '|' + single_quoted + '|' + double_quoted + ')';\n\nvar attribute   = '(?:\\\\s+' + attr_name + '(?:\\\\s*=\\\\s*' + attr_value + ')?)';\n\nvar open_tag    = '<[A-Za-z][A-Za-z0-9\\\\-]*' + attribute + '*\\\\s*\\\\/?>';\n\nvar close_tag   = '<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>';\nvar comment     = '<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->';\nvar processing  = '<[?][\\\\s\\\\S]*?[?]>';\nvar declaration = '<![A-Z]+\\\\s+[^>]*>';\nvar cdata       = '<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>';\n\nvar HTML_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + '|' + comment +\n                        '|' + processing + '|' + declaration + '|' + cdata + ')');\nvar HTML_OPEN_CLOSE_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + ')');\n\nmodule.exports.HTML_TAG_RE = HTML_TAG_RE;\nmodule.exports.HTML_OPEN_CLOSE_TAG_RE = HTML_OPEN_CLOSE_TAG_RE;\n","// HTML block\n\n'use strict';\n\n\nvar block_names = require('../common/html_blocks');\nvar HTML_OPEN_CLOSE_TAG_RE = require('../common/html_re').HTML_OPEN_CLOSE_TAG_RE;\n\n// An array of opening and corresponding closing sequences for html tags,\n// last argument defines whether it can terminate a paragraph or not\n//\nvar HTML_SEQUENCES = [\n  [ /^<(script|pre|style|textarea)(?=(\\s|>|$))/i, /<\\/(script|pre|style|textarea)>/i, true ],\n  [ /^<!--/,        /-->/,   true ],\n  [ /^<\\?/,         /\\?>/,   true ],\n  [ /^<![A-Z]/,     />/,     true ],\n  [ /^<!\\[CDATA\\[/, /\\]\\]>/, true ],\n  [ new RegExp('^</?(' + block_names.join('|') + ')(?=(\\\\s|/?>|$))', 'i'), /^$/, true ],\n  [ new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + '\\\\s*$'),  /^$/, false ]\n];\n\n\nmodule.exports = function html_block(state, startLine, endLine, silent) {\n  var i, nextLine, token, lineText,\n      pos = state.bMarks[startLine] + state.tShift[startLine],\n      max = state.eMarks[startLine];\n\n  // if it's indented more than 3 spaces, it should be a code block\n  if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n  if (!state.md.options.html) { return false; }\n\n  if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; }\n\n  lineText = state.src.slice(pos, max);\n\n  for (i = 0; i < HTML_SEQUENCES.length; i++) {\n    if (HTML_SEQUENCES[i][0].test(lineText)) { break; }\n  }\n\n  if (i === HTML_SEQUENCES.length) { return false; }\n\n  if (silent) {\n    // true if this sequence can be a terminator, false otherwise\n    return HTML_SEQUENCES[i][2];\n  }\n\n  nextLine = startLine + 1;\n\n  // If we are here - we detected HTML block.\n  // Let's roll down till block end.\n  if (!HTML_SEQUENCES[i][1].test(lineText)) {\n    for (; nextLine < endLine; nextLine++) {\n      if (state.sCount[nextLine] < state.blkIndent) { break; }\n\n      pos = state.bMarks[nextLine] + state.tShift[nextLine];\n      max = state.eMarks[nextLine];\n      lineText = state.src.slice(pos, max);\n\n      if (HTML_SEQUENCES[i][1].test(lineText)) {\n        if (lineText.length !== 0) { nextLine++; }\n        break;\n      }\n    }\n  }\n\n  state.line = nextLine;\n\n  token         = state.push('html_block', '', 0);\n  token.map     = [ startLine, nextLine ];\n  token.content = state.getLines(startLine, nextLine, state.blkIndent, true);\n\n  return true;\n};\n","// heading (#, ##, ...)\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function heading(state, startLine, endLine, silent) {\n  var ch, level, tmp, token,\n      pos = state.bMarks[startLine] + state.tShift[startLine],\n      max = state.eMarks[startLine];\n\n  // if it's indented more than 3 spaces, it should be a code block\n  if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n  ch  = state.src.charCodeAt(pos);\n\n  if (ch !== 0x23/* # */ || pos >= max) { return false; }\n\n  // count heading level\n  level = 1;\n  ch = state.src.charCodeAt(++pos);\n  while (ch === 0x23/* # */ && pos < max && level <= 6) {\n    level++;\n    ch = state.src.charCodeAt(++pos);\n  }\n\n  if (level > 6 || (pos < max && !isSpace(ch))) { return false; }\n\n  if (silent) { return true; }\n\n  // Let's cut tails like '    ###  ' from the end of string\n\n  max = state.skipSpacesBack(max, pos);\n  tmp = state.skipCharsBack(max, 0x23, pos); // #\n  if (tmp > pos && isSpace(state.src.charCodeAt(tmp - 1))) {\n    max = tmp;\n  }\n\n  state.line = startLine + 1;\n\n  token        = state.push('heading_open', 'h' + String(level), 1);\n  token.markup = '########'.slice(0, level);\n  token.map    = [ startLine, state.line ];\n\n  token          = state.push('inline', '', 0);\n  token.content  = state.src.slice(pos, max).trim();\n  token.map      = [ startLine, state.line ];\n  token.children = [];\n\n  token        = state.push('heading_close', 'h' + String(level), -1);\n  token.markup = '########'.slice(0, level);\n\n  return true;\n};\n","// lheading (---, ===)\n\n'use strict';\n\n\nmodule.exports = function lheading(state, startLine, endLine/*, silent*/) {\n  var content, terminate, i, l, token, pos, max, level, marker,\n      nextLine = startLine + 1, oldParentType,\n      terminatorRules = state.md.block.ruler.getRules('paragraph');\n\n  // if it's indented more than 3 spaces, it should be a code block\n  if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n  oldParentType = state.parentType;\n  state.parentType = 'paragraph'; // use paragraph to match terminatorRules\n\n  // jump line-by-line until empty one or EOF\n  for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n    // this would be a code block normally, but after paragraph\n    // it's considered a lazy continuation regardless of what's there\n    if (state.sCount[nextLine] - state.blkIndent > 3) { continue; }\n\n    //\n    // Check for underline in setext header\n    //\n    if (state.sCount[nextLine] >= state.blkIndent) {\n      pos = state.bMarks[nextLine] + state.tShift[nextLine];\n      max = state.eMarks[nextLine];\n\n      if (pos < max) {\n        marker = state.src.charCodeAt(pos);\n\n        if (marker === 0x2D/* - */ || marker === 0x3D/* = */) {\n          pos = state.skipChars(pos, marker);\n          pos = state.skipSpaces(pos);\n\n          if (pos >= max) {\n            level = (marker === 0x3D/* = */ ? 1 : 2);\n            break;\n          }\n        }\n      }\n    }\n\n    // quirk for blockquotes, this line should already be checked by that rule\n    if (state.sCount[nextLine] < 0) { continue; }\n\n    // Some tags can terminate paragraph without empty line.\n    terminate = false;\n    for (i = 0, l = terminatorRules.length; i < l; i++) {\n      if (terminatorRules[i](state, nextLine, endLine, true)) {\n        terminate = true;\n        break;\n      }\n    }\n    if (terminate) { break; }\n  }\n\n  if (!level) {\n    // Didn't find valid underline\n    return false;\n  }\n\n  content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n\n  state.line = nextLine + 1;\n\n  token          = state.push('heading_open', 'h' + String(level), 1);\n  token.markup   = String.fromCharCode(marker);\n  token.map      = [ startLine, state.line ];\n\n  token          = state.push('inline', '', 0);\n  token.content  = content;\n  token.map      = [ startLine, state.line - 1 ];\n  token.children = [];\n\n  token          = state.push('heading_close', 'h' + String(level), -1);\n  token.markup   = String.fromCharCode(marker);\n\n  state.parentType = oldParentType;\n\n  return true;\n};\n","// Paragraph\n\n'use strict';\n\n\nmodule.exports = function paragraph(state, startLine, endLine) {\n  var content, terminate, i, l, token, oldParentType,\n      nextLine = startLine + 1,\n      terminatorRules = state.md.block.ruler.getRules('paragraph');\n\n  oldParentType = state.parentType;\n  state.parentType = 'paragraph';\n\n  // jump line-by-line until empty one or EOF\n  for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n    // this would be a code block normally, but after paragraph\n    // it's considered a lazy continuation regardless of what's there\n    if (state.sCount[nextLine] - state.blkIndent > 3) { continue; }\n\n    // quirk for blockquotes, this line should already be checked by that rule\n    if (state.sCount[nextLine] < 0) { continue; }\n\n    // Some tags can terminate paragraph without empty line.\n    terminate = false;\n    for (i = 0, l = terminatorRules.length; i < l; i++) {\n      if (terminatorRules[i](state, nextLine, endLine, true)) {\n        terminate = true;\n        break;\n      }\n    }\n    if (terminate) { break; }\n  }\n\n  content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n\n  state.line = nextLine;\n\n  token          = state.push('paragraph_open', 'p', 1);\n  token.map      = [ startLine, state.line ];\n\n  token          = state.push('inline', '', 0);\n  token.content  = content;\n  token.map      = [ startLine, state.line ];\n  token.children = [];\n\n  token          = state.push('paragraph_close', 'p', -1);\n\n  state.parentType = oldParentType;\n\n  return true;\n};\n","// Parser state class\n\n'use strict';\n\nvar Token = require('../token');\nvar isSpace = require('../common/utils').isSpace;\n\n\nfunction StateBlock(src, md, env, tokens) {\n  var ch, s, start, pos, len, indent, offset, indent_found;\n\n  this.src = src;\n\n  // link to parser instance\n  this.md     = md;\n\n  this.env = env;\n\n  //\n  // Internal state vartiables\n  //\n\n  this.tokens = tokens;\n\n  this.bMarks = [];  // line begin offsets for fast jumps\n  this.eMarks = [];  // line end offsets for fast jumps\n  this.tShift = [];  // offsets of the first non-space characters (tabs not expanded)\n  this.sCount = [];  // indents for each line (tabs expanded)\n\n  // An amount of virtual spaces (tabs expanded) between beginning\n  // of each line (bMarks) and real beginning of that line.\n  //\n  // It exists only as a hack because blockquotes override bMarks\n  // losing information in the process.\n  //\n  // It's used only when expanding tabs, you can think about it as\n  // an initial tab length, e.g. bsCount=21 applied to string `\\t123`\n  // means first tab should be expanded to 4-21%4 === 3 spaces.\n  //\n  this.bsCount = [];\n\n  // block parser variables\n  this.blkIndent  = 0; // required block content indent (for example, if we are\n                       // inside a list, it would be positioned after list marker)\n  this.line       = 0; // line index in src\n  this.lineMax    = 0; // lines count\n  this.tight      = false;  // loose/tight mode for lists\n  this.ddIndent   = -1; // indent of the current dd block (-1 if there isn't any)\n  this.listIndent = -1; // indent of the current list block (-1 if there isn't any)\n\n  // can be 'blockquote', 'list', 'root', 'paragraph' or 'reference'\n  // used in lists to determine if they interrupt a paragraph\n  this.parentType = 'root';\n\n  this.level = 0;\n\n  // renderer\n  this.result = '';\n\n  // Create caches\n  // Generate markers.\n  s = this.src;\n  indent_found = false;\n\n  for (start = pos = indent = offset = 0, len = s.length; pos < len; pos++) {\n    ch = s.charCodeAt(pos);\n\n    if (!indent_found) {\n      if (isSpace(ch)) {\n        indent++;\n\n        if (ch === 0x09) {\n          offset += 4 - offset % 4;\n        } else {\n          offset++;\n        }\n        continue;\n      } else {\n        indent_found = true;\n      }\n    }\n\n    if (ch === 0x0A || pos === len - 1) {\n      if (ch !== 0x0A) { pos++; }\n      this.bMarks.push(start);\n      this.eMarks.push(pos);\n      this.tShift.push(indent);\n      this.sCount.push(offset);\n      this.bsCount.push(0);\n\n      indent_found = false;\n      indent = 0;\n      offset = 0;\n      start = pos + 1;\n    }\n  }\n\n  // Push fake entry to simplify cache bounds checks\n  this.bMarks.push(s.length);\n  this.eMarks.push(s.length);\n  this.tShift.push(0);\n  this.sCount.push(0);\n  this.bsCount.push(0);\n\n  this.lineMax = this.bMarks.length - 1; // don't count last fake line\n}\n\n// Push new token to \"stream\".\n//\nStateBlock.prototype.push = function (type, tag, nesting) {\n  var token = new Token(type, tag, nesting);\n  token.block = true;\n\n  if (nesting < 0) this.level--; // closing tag\n  token.level = this.level;\n  if (nesting > 0) this.level++; // opening tag\n\n  this.tokens.push(token);\n  return token;\n};\n\nStateBlock.prototype.isEmpty = function isEmpty(line) {\n  return this.bMarks[line] + this.tShift[line] >= this.eMarks[line];\n};\n\nStateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) {\n  for (var max = this.lineMax; from < max; from++) {\n    if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) {\n      break;\n    }\n  }\n  return from;\n};\n\n// Skip spaces from given position.\nStateBlock.prototype.skipSpaces = function skipSpaces(pos) {\n  var ch;\n\n  for (var max = this.src.length; pos < max; pos++) {\n    ch = this.src.charCodeAt(pos);\n    if (!isSpace(ch)) { break; }\n  }\n  return pos;\n};\n\n// Skip spaces from given position in reverse.\nStateBlock.prototype.skipSpacesBack = function skipSpacesBack(pos, min) {\n  if (pos <= min) { return pos; }\n\n  while (pos > min) {\n    if (!isSpace(this.src.charCodeAt(--pos))) { return pos + 1; }\n  }\n  return pos;\n};\n\n// Skip char codes from given position\nStateBlock.prototype.skipChars = function skipChars(pos, code) {\n  for (var max = this.src.length; pos < max; pos++) {\n    if (this.src.charCodeAt(pos) !== code) { break; }\n  }\n  return pos;\n};\n\n// Skip char codes reverse from given position - 1\nStateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code, min) {\n  if (pos <= min) { return pos; }\n\n  while (pos > min) {\n    if (code !== this.src.charCodeAt(--pos)) { return pos + 1; }\n  }\n  return pos;\n};\n\n// cut lines range from source.\nStateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) {\n  var i, lineIndent, ch, first, last, queue, lineStart,\n      line = begin;\n\n  if (begin >= end) {\n    return '';\n  }\n\n  queue = new Array(end - begin);\n\n  for (i = 0; line < end; line++, i++) {\n    lineIndent = 0;\n    lineStart = first = this.bMarks[line];\n\n    if (line + 1 < end || keepLastLF) {\n      // No need for bounds check because we have fake entry on tail.\n      last = this.eMarks[line] + 1;\n    } else {\n      last = this.eMarks[line];\n    }\n\n    while (first < last && lineIndent < indent) {\n      ch = this.src.charCodeAt(first);\n\n      if (isSpace(ch)) {\n        if (ch === 0x09) {\n          lineIndent += 4 - (lineIndent + this.bsCount[line]) % 4;\n        } else {\n          lineIndent++;\n        }\n      } else if (first - lineStart < this.tShift[line]) {\n        // patched tShift masked characters to look like spaces (blockquotes, list markers)\n        lineIndent++;\n      } else {\n        break;\n      }\n\n      first++;\n    }\n\n    if (lineIndent > indent) {\n      // partially expanding tabs in code blocks, e.g '\\t\\tfoobar'\n      // with indent=2 becomes '  \\tfoobar'\n      queue[i] = new Array(lineIndent - indent + 1).join(' ') + this.src.slice(first, last);\n    } else {\n      queue[i] = this.src.slice(first, last);\n    }\n  }\n\n  return queue.join('');\n};\n\n// re-export Token class to use in block rules\nStateBlock.prototype.Token = Token;\n\n\nmodule.exports = StateBlock;\n","/** internal\n * class ParserBlock\n *\n * Block-level tokenizer.\n **/\n'use strict';\n\n\nvar Ruler           = require('./ruler');\n\n\nvar _rules = [\n  // First 2 params - rule name & source. Secondary array - list of rules,\n  // which can be terminated by this one.\n  [ 'table',      require('./rules_block/table'),      [ 'paragraph', 'reference' ] ],\n  [ 'code',       require('./rules_block/code') ],\n  [ 'fence',      require('./rules_block/fence'),      [ 'paragraph', 'reference', 'blockquote', 'list' ] ],\n  [ 'blockquote', require('./rules_block/blockquote'), [ 'paragraph', 'reference', 'blockquote', 'list' ] ],\n  [ 'hr',         require('./rules_block/hr'),         [ 'paragraph', 'reference', 'blockquote', 'list' ] ],\n  [ 'list',       require('./rules_block/list'),       [ 'paragraph', 'reference', 'blockquote' ] ],\n  [ 'reference',  require('./rules_block/reference') ],\n  [ 'html_block', require('./rules_block/html_block'), [ 'paragraph', 'reference', 'blockquote' ] ],\n  [ 'heading',    require('./rules_block/heading'),    [ 'paragraph', 'reference', 'blockquote' ] ],\n  [ 'lheading',   require('./rules_block/lheading') ],\n  [ 'paragraph',  require('./rules_block/paragraph') ]\n];\n\n\n/**\n * new ParserBlock()\n **/\nfunction ParserBlock() {\n  /**\n   * ParserBlock#ruler -> Ruler\n   *\n   * [[Ruler]] instance. Keep configuration of block rules.\n   **/\n  this.ruler = new Ruler();\n\n  for (var i = 0; i < _rules.length; i++) {\n    this.ruler.push(_rules[i][0], _rules[i][1], { alt: (_rules[i][2] || []).slice() });\n  }\n}\n\n\n// Generate tokens for input range\n//\nParserBlock.prototype.tokenize = function (state, startLine, endLine) {\n  var ok, i, prevLine,\n      rules = this.ruler.getRules(''),\n      len = rules.length,\n      line = startLine,\n      hasEmptyLines = false,\n      maxNesting = state.md.options.maxNesting;\n\n  while (line < endLine) {\n    state.line = line = state.skipEmptyLines(line);\n    if (line >= endLine) { break; }\n\n    // Termination condition for nested calls.\n    // Nested calls currently used for blockquotes & lists\n    if (state.sCount[line] < state.blkIndent) { break; }\n\n    // If nesting level exceeded - skip tail to the end. That's not ordinary\n    // situation and we should not care about content.\n    if (state.level >= maxNesting) {\n      state.line = endLine;\n      break;\n    }\n\n    // Try all possible rules.\n    // On success, rule should:\n    //\n    // - update `state.line`\n    // - update `state.tokens`\n    // - return true\n    prevLine = state.line;\n\n    for (i = 0; i < len; i++) {\n      ok = rules[i](state, line, endLine, false);\n      if (ok) {\n        if (prevLine >= state.line) {\n          throw new Error(\"block rule didn't increment state.line\");\n        }\n        break;\n      }\n    }\n\n    // this can only happen if user disables paragraph rule\n    if (!ok) throw new Error('none of the block rules matched');\n\n    // set state.tight if we had an empty line before current tag\n    // i.e. latest empty line should not count\n    state.tight = !hasEmptyLines;\n\n    // paragraph might \"eat\" one newline after it in nested lists\n    if (state.isEmpty(state.line - 1)) {\n      hasEmptyLines = true;\n    }\n\n    line = state.line;\n\n    if (line < endLine && state.isEmpty(line)) {\n      hasEmptyLines = true;\n      line++;\n      state.line = line;\n    }\n  }\n};\n\n\n/**\n * ParserBlock.parse(str, md, env, outTokens)\n *\n * Process input string and push block tokens into `outTokens`\n **/\nParserBlock.prototype.parse = function (src, md, env, outTokens) {\n  var state;\n\n  if (!src) { return; }\n\n  state = new this.State(src, md, env, outTokens);\n\n  this.tokenize(state, state.line, state.lineMax);\n};\n\n\nParserBlock.prototype.State = require('./rules_block/state_block');\n\n\nmodule.exports = ParserBlock;\n","// Skip text characters for text token, place those to pending buffer\n// and increment current pos\n\n'use strict';\n\n\n// Rule to skip pure text\n// '{}$%@~+=:' reserved for extentions\n\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n\n// !!!! Don't confuse with \"Markdown ASCII Punctuation\" chars\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\nfunction isTerminatorChar(ch) {\n  switch (ch) {\n    case 0x0A/* \\n */:\n    case 0x21/* ! */:\n    case 0x23/* # */:\n    case 0x24/* $ */:\n    case 0x25/* % */:\n    case 0x26/* & */:\n    case 0x2A/* * */:\n    case 0x2B/* + */:\n    case 0x2D/* - */:\n    case 0x3A/* : */:\n    case 0x3C/* < */:\n    case 0x3D/* = */:\n    case 0x3E/* > */:\n    case 0x40/* @ */:\n    case 0x5B/* [ */:\n    case 0x5C/* \\ */:\n    case 0x5D/* ] */:\n    case 0x5E/* ^ */:\n    case 0x5F/* _ */:\n    case 0x60/* ` */:\n    case 0x7B/* { */:\n    case 0x7D/* } */:\n    case 0x7E/* ~ */:\n      return true;\n    default:\n      return false;\n  }\n}\n\nmodule.exports = function text(state, silent) {\n  var pos = state.pos;\n\n  while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) {\n    pos++;\n  }\n\n  if (pos === state.pos) { return false; }\n\n  if (!silent) { state.pending += state.src.slice(state.pos, pos); }\n\n  state.pos = pos;\n\n  return true;\n};\n\n// Alternative implementation, for memory.\n//\n// It costs 10% of performance, but allows extend terminators list, if place it\n// to `ParcerInline` property. Probably, will switch to it sometime, such\n// flexibility required.\n\n/*\nvar TERMINATOR_RE = /[\\n!#$%&*+\\-:<=>@[\\\\\\]^_`{}~]/;\n\nmodule.exports = function text(state, silent) {\n  var pos = state.pos,\n      idx = state.src.slice(pos).search(TERMINATOR_RE);\n\n  // first char is terminator -> empty text\n  if (idx === 0) { return false; }\n\n  // no terminator -> text till end of string\n  if (idx < 0) {\n    if (!silent) { state.pending += state.src.slice(pos); }\n    state.pos = state.src.length;\n    return true;\n  }\n\n  if (!silent) { state.pending += state.src.slice(pos, pos + idx); }\n\n  state.pos += idx;\n\n  return true;\n};*/\n","// Process escaped chars and hardbreaks\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\nvar ESCAPED = [];\n\nfor (var i = 0; i < 256; i++) { ESCAPED.push(0); }\n\n'\\\\!\"#$%&\\'()*+,./:;<=>?@[]^_`{|}~-'\n  .split('').forEach(function (ch) { ESCAPED[ch.charCodeAt(0)] = 1; });\n\n\nmodule.exports = function escape(state, silent) {\n  var ch1, ch2, origStr, escapedStr, token, pos = state.pos, max = state.posMax;\n\n  if (state.src.charCodeAt(pos) !== 0x5C/* \\ */) return false;\n  pos++;\n\n  // '\\' at the end of the inline block\n  if (pos >= max) return false;\n\n  ch1 = state.src.charCodeAt(pos);\n\n  if (ch1 === 0x0A) {\n    if (!silent) {\n      state.push('hardbreak', 'br', 0);\n    }\n\n    pos++;\n    // skip leading whitespaces from next line\n    while (pos < max) {\n      ch1 = state.src.charCodeAt(pos);\n      if (!isSpace(ch1)) break;\n      pos++;\n    }\n\n    state.pos = pos;\n    return true;\n  }\n\n  escapedStr = state.src[pos];\n\n  if (ch1 >= 0xD800 && ch1 <= 0xDBFF && pos + 1 < max) {\n    ch2 = state.src.charCodeAt(pos + 1);\n\n    if (ch2 >= 0xDC00 && ch2 <= 0xDFFF) {\n      escapedStr += state.src[pos + 1];\n      pos++;\n    }\n  }\n\n  origStr = '\\\\' + escapedStr;\n\n  if (!silent) {\n    token = state.push('text_special', '', 0);\n\n    if (ch1 < 256 && ESCAPED[ch1] !== 0) {\n      token.content = escapedStr;\n    } else {\n      token.content = origStr;\n    }\n\n    token.markup = origStr;\n    token.info   = 'escape';\n  }\n\n  state.pos = pos + 1;\n  return true;\n};\n","// Process links like https://example.org/\n\n'use strict';\n\n\n// RFC3986: scheme = ALPHA *( ALPHA / DIGIT / \"+\" / \"-\" / \".\" )\nvar SCHEME_RE = /(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i;\n\n\nmodule.exports = function linkify(state, silent) {\n  var pos, max, match, proto, link, url, fullUrl, token;\n\n  if (!state.md.options.linkify) return false;\n  if (state.linkLevel > 0) return false;\n\n  pos = state.pos;\n  max = state.posMax;\n\n  if (pos + 3 > max) return false;\n  if (state.src.charCodeAt(pos) !== 0x3A/* : */) return false;\n  if (state.src.charCodeAt(pos + 1) !== 0x2F/* / */) return false;\n  if (state.src.charCodeAt(pos + 2) !== 0x2F/* / */) return false;\n\n  match = state.pending.match(SCHEME_RE);\n  if (!match) return false;\n\n  proto = match[1];\n\n  link = state.md.linkify.matchAtStart(state.src.slice(pos - proto.length));\n  if (!link) return false;\n\n  url = link.url;\n\n  // invalid link, but still detected by linkify somehow;\n  // need to check to prevent infinite loop below\n  if (url.length <= proto.length) return false;\n\n  // disallow '*' at the end of the link (conflicts with emphasis)\n  url = url.replace(/\\*+$/, '');\n\n  fullUrl = state.md.normalizeLink(url);\n  if (!state.md.validateLink(fullUrl)) return false;\n\n  if (!silent) {\n    state.pending = state.pending.slice(0, -proto.length);\n\n    token         = state.push('link_open', 'a', 1);\n    token.attrs   = [ [ 'href', fullUrl ] ];\n    token.markup  = 'linkify';\n    token.info    = 'auto';\n\n    token         = state.push('text', '', 0);\n    token.content = state.md.normalizeLinkText(url);\n\n    token         = state.push('link_close', 'a', -1);\n    token.markup  = 'linkify';\n    token.info    = 'auto';\n  }\n\n  state.pos += url.length - proto.length;\n  return true;\n};\n","// Proceess '\\n'\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function newline(state, silent) {\n  var pmax, max, ws, pos = state.pos;\n\n  if (state.src.charCodeAt(pos) !== 0x0A/* \\n */) { return false; }\n\n  pmax = state.pending.length - 1;\n  max = state.posMax;\n\n  // '  \\n' -> hardbreak\n  // Lookup in pending chars is bad practice! Don't copy to other rules!\n  // Pending string is stored in concat mode, indexed lookups will cause\n  // convertion to flat mode.\n  if (!silent) {\n    if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) {\n      if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) {\n        // Find whitespaces tail of pending chars.\n        ws = pmax - 1;\n        while (ws >= 1 && state.pending.charCodeAt(ws - 1) === 0x20) ws--;\n\n        state.pending = state.pending.slice(0, ws);\n        state.push('hardbreak', 'br', 0);\n      } else {\n        state.pending = state.pending.slice(0, -1);\n        state.push('softbreak', 'br', 0);\n      }\n\n    } else {\n      state.push('softbreak', 'br', 0);\n    }\n  }\n\n  pos++;\n\n  // skip heading spaces for next line\n  while (pos < max && isSpace(state.src.charCodeAt(pos))) { pos++; }\n\n  state.pos = pos;\n  return true;\n};\n","// Parse backticks\n\n'use strict';\n\n\nmodule.exports = function backtick(state, silent) {\n  var start, max, marker, token, matchStart, matchEnd, openerLength, closerLength,\n      pos = state.pos,\n      ch = state.src.charCodeAt(pos);\n\n  if (ch !== 0x60/* ` */) { return false; }\n\n  start = pos;\n  pos++;\n  max = state.posMax;\n\n  // scan marker length\n  while (pos < max && state.src.charCodeAt(pos) === 0x60/* ` */) { pos++; }\n\n  marker = state.src.slice(start, pos);\n  openerLength = marker.length;\n\n  if (state.backticksScanned && (state.backticks[openerLength] || 0) <= start) {\n    if (!silent) state.pending += marker;\n    state.pos += openerLength;\n    return true;\n  }\n\n  matchEnd = pos;\n\n  // Nothing found in the cache, scan until the end of the line (or until marker is found)\n  while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) {\n    matchEnd = matchStart + 1;\n\n    // scan marker length\n    while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60/* ` */) { matchEnd++; }\n\n    closerLength = matchEnd - matchStart;\n\n    if (closerLength === openerLength) {\n      // Found matching closer length.\n      if (!silent) {\n        token     = state.push('code_inline', 'code', 0);\n        token.markup  = marker;\n        token.content = state.src.slice(pos, matchStart)\n          .replace(/\\n/g, ' ')\n          .replace(/^ (.+) $/, '$1');\n      }\n      state.pos = matchEnd;\n      return true;\n    }\n\n    // Some different length found, put it in cache as upper limit of where closer can be found\n    state.backticks[closerLength] = matchStart;\n  }\n\n  // Scanned through the end, didn't find anything\n  state.backticksScanned = true;\n\n  if (!silent) state.pending += marker;\n  state.pos += openerLength;\n  return true;\n};\n","// ~~strike through~~\n//\n'use strict';\n\n\n// Insert each marker as a separate text token, and add it to delimiter list\n//\nmodule.exports.tokenize = function strikethrough(state, silent) {\n  var i, scanned, token, len, ch,\n      start = state.pos,\n      marker = state.src.charCodeAt(start);\n\n  if (silent) { return false; }\n\n  if (marker !== 0x7E/* ~ */) { return false; }\n\n  scanned = state.scanDelims(state.pos, true);\n  len = scanned.length;\n  ch = String.fromCharCode(marker);\n\n  if (len < 2) { return false; }\n\n  if (len % 2) {\n    token         = state.push('text', '', 0);\n    token.content = ch;\n    len--;\n  }\n\n  for (i = 0; i < len; i += 2) {\n    token         = state.push('text', '', 0);\n    token.content = ch + ch;\n\n    state.delimiters.push({\n      marker: marker,\n      length: 0,     // disable \"rule of 3\" length checks meant for emphasis\n      token:  state.tokens.length - 1,\n      end:    -1,\n      open:   scanned.can_open,\n      close:  scanned.can_close\n    });\n  }\n\n  state.pos += scanned.length;\n\n  return true;\n};\n\n\nfunction postProcess(state, delimiters) {\n  var i, j,\n      startDelim,\n      endDelim,\n      token,\n      loneMarkers = [],\n      max = delimiters.length;\n\n  for (i = 0; i < max; i++) {\n    startDelim = delimiters[i];\n\n    if (startDelim.marker !== 0x7E/* ~ */) {\n      continue;\n    }\n\n    if (startDelim.end === -1) {\n      continue;\n    }\n\n    endDelim = delimiters[startDelim.end];\n\n    token         = state.tokens[startDelim.token];\n    token.type    = 's_open';\n    token.tag     = 's';\n    token.nesting = 1;\n    token.markup  = '~~';\n    token.content = '';\n\n    token         = state.tokens[endDelim.token];\n    token.type    = 's_close';\n    token.tag     = 's';\n    token.nesting = -1;\n    token.markup  = '~~';\n    token.content = '';\n\n    if (state.tokens[endDelim.token - 1].type === 'text' &&\n        state.tokens[endDelim.token - 1].content === '~') {\n\n      loneMarkers.push(endDelim.token - 1);\n    }\n  }\n\n  // If a marker sequence has an odd number of characters, it's splitted\n  // like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the\n  // start of the sequence.\n  //\n  // So, we have to move all those markers after subsequent s_close tags.\n  //\n  while (loneMarkers.length) {\n    i = loneMarkers.pop();\n    j = i + 1;\n\n    while (j < state.tokens.length && state.tokens[j].type === 's_close') {\n      j++;\n    }\n\n    j--;\n\n    if (i !== j) {\n      token = state.tokens[j];\n      state.tokens[j] = state.tokens[i];\n      state.tokens[i] = token;\n    }\n  }\n}\n\n\n// Walk through delimiter list and replace text tokens with tags\n//\nmodule.exports.postProcess = function strikethrough(state) {\n  var curr,\n      tokens_meta = state.tokens_meta,\n      max = state.tokens_meta.length;\n\n  postProcess(state, state.delimiters);\n\n  for (curr = 0; curr < max; curr++) {\n    if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n      postProcess(state, tokens_meta[curr].delimiters);\n    }\n  }\n};\n","// Process *this* and _that_\n//\n'use strict';\n\n\n// Insert each marker as a separate text token, and add it to delimiter list\n//\nmodule.exports.tokenize = function emphasis(state, silent) {\n  var i, scanned, token,\n      start = state.pos,\n      marker = state.src.charCodeAt(start);\n\n  if (silent) { return false; }\n\n  if (marker !== 0x5F /* _ */ && marker !== 0x2A /* * */) { return false; }\n\n  scanned = state.scanDelims(state.pos, marker === 0x2A);\n\n  for (i = 0; i < scanned.length; i++) {\n    token         = state.push('text', '', 0);\n    token.content = String.fromCharCode(marker);\n\n    state.delimiters.push({\n      // Char code of the starting marker (number).\n      //\n      marker: marker,\n\n      // Total length of these series of delimiters.\n      //\n      length: scanned.length,\n\n      // A position of the token this delimiter corresponds to.\n      //\n      token:  state.tokens.length - 1,\n\n      // If this delimiter is matched as a valid opener, `end` will be\n      // equal to its position, otherwise it's `-1`.\n      //\n      end:    -1,\n\n      // Boolean flags that determine if this delimiter could open or close\n      // an emphasis.\n      //\n      open:   scanned.can_open,\n      close:  scanned.can_close\n    });\n  }\n\n  state.pos += scanned.length;\n\n  return true;\n};\n\n\nfunction postProcess(state, delimiters) {\n  var i,\n      startDelim,\n      endDelim,\n      token,\n      ch,\n      isStrong,\n      max = delimiters.length;\n\n  for (i = max - 1; i >= 0; i--) {\n    startDelim = delimiters[i];\n\n    if (startDelim.marker !== 0x5F/* _ */ && startDelim.marker !== 0x2A/* * */) {\n      continue;\n    }\n\n    // Process only opening markers\n    if (startDelim.end === -1) {\n      continue;\n    }\n\n    endDelim = delimiters[startDelim.end];\n\n    // If the previous delimiter has the same marker and is adjacent to this one,\n    // merge those into one strong delimiter.\n    //\n    // `<em><em>whatever</em></em>` -> `<strong>whatever</strong>`\n    //\n    isStrong = i > 0 &&\n               delimiters[i - 1].end === startDelim.end + 1 &&\n               // check that first two markers match and adjacent\n               delimiters[i - 1].marker === startDelim.marker &&\n               delimiters[i - 1].token === startDelim.token - 1 &&\n               // check that last two markers are adjacent (we can safely assume they match)\n               delimiters[startDelim.end + 1].token === endDelim.token + 1;\n\n    ch = String.fromCharCode(startDelim.marker);\n\n    token         = state.tokens[startDelim.token];\n    token.type    = isStrong ? 'strong_open' : 'em_open';\n    token.tag     = isStrong ? 'strong' : 'em';\n    token.nesting = 1;\n    token.markup  = isStrong ? ch + ch : ch;\n    token.content = '';\n\n    token         = state.tokens[endDelim.token];\n    token.type    = isStrong ? 'strong_close' : 'em_close';\n    token.tag     = isStrong ? 'strong' : 'em';\n    token.nesting = -1;\n    token.markup  = isStrong ? ch + ch : ch;\n    token.content = '';\n\n    if (isStrong) {\n      state.tokens[delimiters[i - 1].token].content = '';\n      state.tokens[delimiters[startDelim.end + 1].token].content = '';\n      i--;\n    }\n  }\n}\n\n\n// Walk through delimiter list and replace text tokens with tags\n//\nmodule.exports.postProcess = function emphasis(state) {\n  var curr,\n      tokens_meta = state.tokens_meta,\n      max = state.tokens_meta.length;\n\n  postProcess(state, state.delimiters);\n\n  for (curr = 0; curr < max; curr++) {\n    if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n      postProcess(state, tokens_meta[curr].delimiters);\n    }\n  }\n};\n","// Process [link](<to> \"stuff\")\n\n'use strict';\n\nvar normalizeReference   = require('../common/utils').normalizeReference;\nvar isSpace              = require('../common/utils').isSpace;\n\n\nmodule.exports = function link(state, silent) {\n  var attrs,\n      code,\n      label,\n      labelEnd,\n      labelStart,\n      pos,\n      res,\n      ref,\n      token,\n      href = '',\n      title = '',\n      oldPos = state.pos,\n      max = state.posMax,\n      start = state.pos,\n      parseReference = true;\n\n  if (state.src.charCodeAt(state.pos) !== 0x5B/* [ */) { return false; }\n\n  labelStart = state.pos + 1;\n  labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true);\n\n  // parser failed to find ']', so it's not a valid link\n  if (labelEnd < 0) { return false; }\n\n  pos = labelEnd + 1;\n  if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) {\n    //\n    // Inline link\n    //\n\n    // might have found a valid shortcut link, disable reference parsing\n    parseReference = false;\n\n    // [link](  <href>  \"title\"  )\n    //        ^^ skipping these spaces\n    pos++;\n    for (; pos < max; pos++) {\n      code = state.src.charCodeAt(pos);\n      if (!isSpace(code) && code !== 0x0A) { break; }\n    }\n    if (pos >= max) { return false; }\n\n    // [link](  <href>  \"title\"  )\n    //          ^^^^^^ parsing link destination\n    start = pos;\n    res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n    if (res.ok) {\n      href = state.md.normalizeLink(res.str);\n      if (state.md.validateLink(href)) {\n        pos = res.pos;\n      } else {\n        href = '';\n      }\n\n      // [link](  <href>  \"title\"  )\n      //                ^^ skipping these spaces\n      start = pos;\n      for (; pos < max; pos++) {\n        code = state.src.charCodeAt(pos);\n        if (!isSpace(code) && code !== 0x0A) { break; }\n      }\n\n      // [link](  <href>  \"title\"  )\n      //                  ^^^^^^^ parsing link title\n      res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n      if (pos < max && start !== pos && res.ok) {\n        title = res.str;\n        pos = res.pos;\n\n        // [link](  <href>  \"title\"  )\n        //                         ^^ skipping these spaces\n        for (; pos < max; pos++) {\n          code = state.src.charCodeAt(pos);\n          if (!isSpace(code) && code !== 0x0A) { break; }\n        }\n      }\n    }\n\n    if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) {\n      // parsing a valid shortcut link failed, fallback to reference\n      parseReference = true;\n    }\n    pos++;\n  }\n\n  if (parseReference) {\n    //\n    // Link reference\n    //\n    if (typeof state.env.references === 'undefined') { return false; }\n\n    if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {\n      start = pos + 1;\n      pos = state.md.helpers.parseLinkLabel(state, pos);\n      if (pos >= 0) {\n        label = state.src.slice(start, pos++);\n      } else {\n        pos = labelEnd + 1;\n      }\n    } else {\n      pos = labelEnd + 1;\n    }\n\n    // covers label === '' and label === undefined\n    // (collapsed reference link and shortcut reference link respectively)\n    if (!label) { label = state.src.slice(labelStart, labelEnd); }\n\n    ref = state.env.references[normalizeReference(label)];\n    if (!ref) {\n      state.pos = oldPos;\n      return false;\n    }\n    href = ref.href;\n    title = ref.title;\n  }\n\n  //\n  // We found the end of the link, and know for a fact it's a valid link;\n  // so all that's left to do is to call tokenizer.\n  //\n  if (!silent) {\n    state.pos = labelStart;\n    state.posMax = labelEnd;\n\n    token        = state.push('link_open', 'a', 1);\n    token.attrs  = attrs = [ [ 'href', href ] ];\n    if (title) {\n      attrs.push([ 'title', title ]);\n    }\n\n    state.linkLevel++;\n    state.md.inline.tokenize(state);\n    state.linkLevel--;\n\n    token        = state.push('link_close', 'a', -1);\n  }\n\n  state.pos = pos;\n  state.posMax = max;\n  return true;\n};\n","// Process ![image](<src> \"title\")\n\n'use strict';\n\nvar normalizeReference   = require('../common/utils').normalizeReference;\nvar isSpace              = require('../common/utils').isSpace;\n\n\nmodule.exports = function image(state, silent) {\n  var attrs,\n      code,\n      content,\n      label,\n      labelEnd,\n      labelStart,\n      pos,\n      ref,\n      res,\n      title,\n      token,\n      tokens,\n      start,\n      href = '',\n      oldPos = state.pos,\n      max = state.posMax;\n\n  if (state.src.charCodeAt(state.pos) !== 0x21/* ! */) { return false; }\n  if (state.src.charCodeAt(state.pos + 1) !== 0x5B/* [ */) { return false; }\n\n  labelStart = state.pos + 2;\n  labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false);\n\n  // parser failed to find ']', so it's not a valid link\n  if (labelEnd < 0) { return false; }\n\n  pos = labelEnd + 1;\n  if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) {\n    //\n    // Inline link\n    //\n\n    // [link](  <href>  \"title\"  )\n    //        ^^ skipping these spaces\n    pos++;\n    for (; pos < max; pos++) {\n      code = state.src.charCodeAt(pos);\n      if (!isSpace(code) && code !== 0x0A) { break; }\n    }\n    if (pos >= max) { return false; }\n\n    // [link](  <href>  \"title\"  )\n    //          ^^^^^^ parsing link destination\n    start = pos;\n    res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n    if (res.ok) {\n      href = state.md.normalizeLink(res.str);\n      if (state.md.validateLink(href)) {\n        pos = res.pos;\n      } else {\n        href = '';\n      }\n    }\n\n    // [link](  <href>  \"title\"  )\n    //                ^^ skipping these spaces\n    start = pos;\n    for (; pos < max; pos++) {\n      code = state.src.charCodeAt(pos);\n      if (!isSpace(code) && code !== 0x0A) { break; }\n    }\n\n    // [link](  <href>  \"title\"  )\n    //                  ^^^^^^^ parsing link title\n    res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n    if (pos < max && start !== pos && res.ok) {\n      title = res.str;\n      pos = res.pos;\n\n      // [link](  <href>  \"title\"  )\n      //                         ^^ skipping these spaces\n      for (; pos < max; pos++) {\n        code = state.src.charCodeAt(pos);\n        if (!isSpace(code) && code !== 0x0A) { break; }\n      }\n    } else {\n      title = '';\n    }\n\n    if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) {\n      state.pos = oldPos;\n      return false;\n    }\n    pos++;\n  } else {\n    //\n    // Link reference\n    //\n    if (typeof state.env.references === 'undefined') { return false; }\n\n    if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {\n      start = pos + 1;\n      pos = state.md.helpers.parseLinkLabel(state, pos);\n      if (pos >= 0) {\n        label = state.src.slice(start, pos++);\n      } else {\n        pos = labelEnd + 1;\n      }\n    } else {\n      pos = labelEnd + 1;\n    }\n\n    // covers label === '' and label === undefined\n    // (collapsed reference link and shortcut reference link respectively)\n    if (!label) { label = state.src.slice(labelStart, labelEnd); }\n\n    ref = state.env.references[normalizeReference(label)];\n    if (!ref) {\n      state.pos = oldPos;\n      return false;\n    }\n    href = ref.href;\n    title = ref.title;\n  }\n\n  //\n  // We found the end of the link, and know for a fact it's a valid link;\n  // so all that's left to do is to call tokenizer.\n  //\n  if (!silent) {\n    content = state.src.slice(labelStart, labelEnd);\n\n    state.md.inline.parse(\n      content,\n      state.md,\n      state.env,\n      tokens = []\n    );\n\n    token          = state.push('image', 'img', 0);\n    token.attrs    = attrs = [ [ 'src', href ], [ 'alt', '' ] ];\n    token.children = tokens;\n    token.content  = content;\n\n    if (title) {\n      attrs.push([ 'title', title ]);\n    }\n  }\n\n  state.pos = pos;\n  state.posMax = max;\n  return true;\n};\n","// Process autolinks '<protocol:...>'\n\n'use strict';\n\n\n/*eslint max-len:0*/\nvar EMAIL_RE    = /^([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/;\nvar AUTOLINK_RE = /^([a-zA-Z][a-zA-Z0-9+.\\-]{1,31}):([^<>\\x00-\\x20]*)$/;\n\n\nmodule.exports = function autolink(state, silent) {\n  var url, fullUrl, token, ch, start, max,\n      pos = state.pos;\n\n  if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; }\n\n  start = state.pos;\n  max = state.posMax;\n\n  for (;;) {\n    if (++pos >= max) return false;\n\n    ch = state.src.charCodeAt(pos);\n\n    if (ch === 0x3C /* < */) return false;\n    if (ch === 0x3E /* > */) break;\n  }\n\n  url = state.src.slice(start + 1, pos);\n\n  if (AUTOLINK_RE.test(url)) {\n    fullUrl = state.md.normalizeLink(url);\n    if (!state.md.validateLink(fullUrl)) { return false; }\n\n    if (!silent) {\n      token         = state.push('link_open', 'a', 1);\n      token.attrs   = [ [ 'href', fullUrl ] ];\n      token.markup  = 'autolink';\n      token.info    = 'auto';\n\n      token         = state.push('text', '', 0);\n      token.content = state.md.normalizeLinkText(url);\n\n      token         = state.push('link_close', 'a', -1);\n      token.markup  = 'autolink';\n      token.info    = 'auto';\n    }\n\n    state.pos += url.length + 2;\n    return true;\n  }\n\n  if (EMAIL_RE.test(url)) {\n    fullUrl = state.md.normalizeLink('mailto:' + url);\n    if (!state.md.validateLink(fullUrl)) { return false; }\n\n    if (!silent) {\n      token         = state.push('link_open', 'a', 1);\n      token.attrs   = [ [ 'href', fullUrl ] ];\n      token.markup  = 'autolink';\n      token.info    = 'auto';\n\n      token         = state.push('text', '', 0);\n      token.content = state.md.normalizeLinkText(url);\n\n      token         = state.push('link_close', 'a', -1);\n      token.markup  = 'autolink';\n      token.info    = 'auto';\n    }\n\n    state.pos += url.length + 2;\n    return true;\n  }\n\n  return false;\n};\n","// Process html tags\n\n'use strict';\n\n\nvar HTML_TAG_RE = require('../common/html_re').HTML_TAG_RE;\n\n\nfunction isLinkOpen(str) {\n  return /^<a[>\\s]/i.test(str);\n}\nfunction isLinkClose(str) {\n  return /^<\\/a\\s*>/i.test(str);\n}\n\n\nfunction isLetter(ch) {\n  /*eslint no-bitwise:0*/\n  var lc = ch | 0x20; // to lower case\n  return (lc >= 0x61/* a */) && (lc <= 0x7a/* z */);\n}\n\n\nmodule.exports = function html_inline(state, silent) {\n  var ch, match, max, token,\n      pos = state.pos;\n\n  if (!state.md.options.html) { return false; }\n\n  // Check start\n  max = state.posMax;\n  if (state.src.charCodeAt(pos) !== 0x3C/* < */ ||\n      pos + 2 >= max) {\n    return false;\n  }\n\n  // Quick fail on second char\n  ch = state.src.charCodeAt(pos + 1);\n  if (ch !== 0x21/* ! */ &&\n      ch !== 0x3F/* ? */ &&\n      ch !== 0x2F/* / */ &&\n      !isLetter(ch)) {\n    return false;\n  }\n\n  match = state.src.slice(pos).match(HTML_TAG_RE);\n  if (!match) { return false; }\n\n  if (!silent) {\n    token         = state.push('html_inline', '', 0);\n    token.content = match[0];\n\n    if (isLinkOpen(token.content))  state.linkLevel++;\n    if (isLinkClose(token.content)) state.linkLevel--;\n  }\n  state.pos += match[0].length;\n  return true;\n};\n","// Process html entity - &#123;, &#xAF;, &quot;, ...\n\n'use strict';\n\nvar entities          = require('../common/entities');\nvar has               = require('../common/utils').has;\nvar isValidEntityCode = require('../common/utils').isValidEntityCode;\nvar fromCodePoint     = require('../common/utils').fromCodePoint;\n\n\nvar DIGITAL_RE = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i;\nvar NAMED_RE   = /^&([a-z][a-z0-9]{1,31});/i;\n\n\nmodule.exports = function entity(state, silent) {\n  var ch, code, match, token, pos = state.pos, max = state.posMax;\n\n  if (state.src.charCodeAt(pos) !== 0x26/* & */) return false;\n\n  if (pos + 1 >= max) return false;\n\n  ch = state.src.charCodeAt(pos + 1);\n\n  if (ch === 0x23 /* # */) {\n    match = state.src.slice(pos).match(DIGITAL_RE);\n    if (match) {\n      if (!silent) {\n        code = match[1][0].toLowerCase() === 'x' ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10);\n\n        token         = state.push('text_special', '', 0);\n        token.content = isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(0xFFFD);\n        token.markup  = match[0];\n        token.info    = 'entity';\n      }\n      state.pos += match[0].length;\n      return true;\n    }\n  } else {\n    match = state.src.slice(pos).match(NAMED_RE);\n    if (match) {\n      if (has(entities, match[1])) {\n        if (!silent) {\n          token         = state.push('text_special', '', 0);\n          token.content = entities[match[1]];\n          token.markup  = match[0];\n          token.info    = 'entity';\n        }\n        state.pos += match[0].length;\n        return true;\n      }\n    }\n  }\n\n  return false;\n};\n","// For each opening emphasis-like marker find a matching closing one\n//\n'use strict';\n\n\nfunction processDelimiters(delimiters) {\n  var closerIdx, openerIdx, closer, opener, minOpenerIdx, newMinOpenerIdx,\n      isOddMatch, lastJump,\n      openersBottom = {},\n      max = delimiters.length;\n\n  if (!max) return;\n\n  // headerIdx is the first delimiter of the current (where closer is) delimiter run\n  var headerIdx = 0;\n  var lastTokenIdx = -2; // needs any value lower than -1\n  var jumps = [];\n\n  for (closerIdx = 0; closerIdx < max; closerIdx++) {\n    closer = delimiters[closerIdx];\n\n    jumps.push(0);\n\n    // markers belong to same delimiter run if:\n    //  - they have adjacent tokens\n    //  - AND markers are the same\n    //\n    if (delimiters[headerIdx].marker !== closer.marker || lastTokenIdx !== closer.token - 1) {\n      headerIdx = closerIdx;\n    }\n\n    lastTokenIdx = closer.token;\n\n    // Length is only used for emphasis-specific \"rule of 3\",\n    // if it's not defined (in strikethrough or 3rd party plugins),\n    // we can default it to 0 to disable those checks.\n    //\n    closer.length = closer.length || 0;\n\n    if (!closer.close) continue;\n\n    // Previously calculated lower bounds (previous fails)\n    // for each marker, each delimiter length modulo 3,\n    // and for whether this closer can be an opener;\n    // https://github.com/commonmark/cmark/commit/34250e12ccebdc6372b8b49c44fab57c72443460\n    if (!openersBottom.hasOwnProperty(closer.marker)) {\n      openersBottom[closer.marker] = [ -1, -1, -1, -1, -1, -1 ];\n    }\n\n    minOpenerIdx = openersBottom[closer.marker][(closer.open ? 3 : 0) + (closer.length % 3)];\n\n    openerIdx = headerIdx - jumps[headerIdx] - 1;\n\n    newMinOpenerIdx = openerIdx;\n\n    for (; openerIdx > minOpenerIdx; openerIdx -= jumps[openerIdx] + 1) {\n      opener = delimiters[openerIdx];\n\n      if (opener.marker !== closer.marker) continue;\n\n      if (opener.open && opener.end < 0) {\n\n        isOddMatch = false;\n\n        // from spec:\n        //\n        // If one of the delimiters can both open and close emphasis, then the\n        // sum of the lengths of the delimiter runs containing the opening and\n        // closing delimiters must not be a multiple of 3 unless both lengths\n        // are multiples of 3.\n        //\n        if (opener.close || closer.open) {\n          if ((opener.length + closer.length) % 3 === 0) {\n            if (opener.length % 3 !== 0 || closer.length % 3 !== 0) {\n              isOddMatch = true;\n            }\n          }\n        }\n\n        if (!isOddMatch) {\n          // If previous delimiter cannot be an opener, we can safely skip\n          // the entire sequence in future checks. This is required to make\n          // sure algorithm has linear complexity (see *_*_*_*_*_... case).\n          //\n          lastJump = openerIdx > 0 && !delimiters[openerIdx - 1].open ?\n            jumps[openerIdx - 1] + 1 :\n            0;\n\n          jumps[closerIdx] = closerIdx - openerIdx + lastJump;\n          jumps[openerIdx] = lastJump;\n\n          closer.open  = false;\n          opener.end   = closerIdx;\n          opener.close = false;\n          newMinOpenerIdx = -1;\n          // treat next token as start of run,\n          // it optimizes skips in **<...>**a**<...>** pathological case\n          lastTokenIdx = -2;\n          break;\n        }\n      }\n    }\n\n    if (newMinOpenerIdx !== -1) {\n      // If match for this delimiter run failed, we want to set lower bound for\n      // future lookups. This is required to make sure algorithm has linear\n      // complexity.\n      //\n      // See details here:\n      // https://github.com/commonmark/cmark/issues/178#issuecomment-270417442\n      //\n      openersBottom[closer.marker][(closer.open ? 3 : 0) + ((closer.length || 0) % 3)] = newMinOpenerIdx;\n    }\n  }\n}\n\n\nmodule.exports = function link_pairs(state) {\n  var curr,\n      tokens_meta = state.tokens_meta,\n      max = state.tokens_meta.length;\n\n  processDelimiters(state.delimiters);\n\n  for (curr = 0; curr < max; curr++) {\n    if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n      processDelimiters(tokens_meta[curr].delimiters);\n    }\n  }\n};\n","// Clean up tokens after emphasis and strikethrough postprocessing:\n// merge adjacent text nodes into one and re-calculate all token levels\n//\n// This is necessary because initially emphasis delimiter markers (*, _, ~)\n// are treated as their own separate text tokens. Then emphasis rule either\n// leaves them as text (needed to merge with adjacent text) or turns them\n// into opening/closing tags (which messes up levels inside).\n//\n'use strict';\n\n\nmodule.exports = function fragments_join(state) {\n  var curr, last,\n      level = 0,\n      tokens = state.tokens,\n      max = state.tokens.length;\n\n  for (curr = last = 0; curr < max; curr++) {\n    // re-calculate levels after emphasis/strikethrough turns some text nodes\n    // into opening/closing tags\n    if (tokens[curr].nesting < 0) level--; // closing tag\n    tokens[curr].level = level;\n    if (tokens[curr].nesting > 0) level++; // opening tag\n\n    if (tokens[curr].type === 'text' &&\n        curr + 1 < max &&\n        tokens[curr + 1].type === 'text') {\n\n      // collapse two adjacent text nodes\n      tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;\n    } else {\n      if (curr !== last) { tokens[last] = tokens[curr]; }\n\n      last++;\n    }\n  }\n\n  if (curr !== last) {\n    tokens.length = last;\n  }\n};\n","// Inline parser state\n\n'use strict';\n\n\nvar Token          = require('../token');\nvar isWhiteSpace   = require('../common/utils').isWhiteSpace;\nvar isPunctChar    = require('../common/utils').isPunctChar;\nvar isMdAsciiPunct = require('../common/utils').isMdAsciiPunct;\n\n\nfunction StateInline(src, md, env, outTokens) {\n  this.src = src;\n  this.env = env;\n  this.md = md;\n  this.tokens = outTokens;\n  this.tokens_meta = Array(outTokens.length);\n\n  this.pos = 0;\n  this.posMax = this.src.length;\n  this.level = 0;\n  this.pending = '';\n  this.pendingLevel = 0;\n\n  // Stores { start: end } pairs. Useful for backtrack\n  // optimization of pairs parse (emphasis, strikes).\n  this.cache = {};\n\n  // List of emphasis-like delimiters for current tag\n  this.delimiters = [];\n\n  // Stack of delimiter lists for upper level tags\n  this._prev_delimiters = [];\n\n  // backtick length => last seen position\n  this.backticks = {};\n  this.backticksScanned = false;\n\n  // Counter used to disable inline linkify-it execution\n  // inside <a> and markdown links\n  this.linkLevel = 0;\n}\n\n\n// Flush pending text\n//\nStateInline.prototype.pushPending = function () {\n  var token = new Token('text', '', 0);\n  token.content = this.pending;\n  token.level = this.pendingLevel;\n  this.tokens.push(token);\n  this.pending = '';\n  return token;\n};\n\n\n// Push new token to \"stream\".\n// If pending text exists - flush it as text token\n//\nStateInline.prototype.push = function (type, tag, nesting) {\n  if (this.pending) {\n    this.pushPending();\n  }\n\n  var token = new Token(type, tag, nesting);\n  var token_meta = null;\n\n  if (nesting < 0) {\n    // closing tag\n    this.level--;\n    this.delimiters = this._prev_delimiters.pop();\n  }\n\n  token.level = this.level;\n\n  if (nesting > 0) {\n    // opening tag\n    this.level++;\n    this._prev_delimiters.push(this.delimiters);\n    this.delimiters = [];\n    token_meta = { delimiters: this.delimiters };\n  }\n\n  this.pendingLevel = this.level;\n  this.tokens.push(token);\n  this.tokens_meta.push(token_meta);\n  return token;\n};\n\n\n// Scan a sequence of emphasis-like markers, and determine whether\n// it can start an emphasis sequence or end an emphasis sequence.\n//\n//  - start - position to scan from (it should point at a valid marker);\n//  - canSplitWord - determine if these markers can be found inside a word\n//\nStateInline.prototype.scanDelims = function (start, canSplitWord) {\n  var pos = start, lastChar, nextChar, count, can_open, can_close,\n      isLastWhiteSpace, isLastPunctChar,\n      isNextWhiteSpace, isNextPunctChar,\n      left_flanking = true,\n      right_flanking = true,\n      max = this.posMax,\n      marker = this.src.charCodeAt(start);\n\n  // treat beginning of the line as a whitespace\n  lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 0x20;\n\n  while (pos < max && this.src.charCodeAt(pos) === marker) { pos++; }\n\n  count = pos - start;\n\n  // treat end of the line as a whitespace\n  nextChar = pos < max ? this.src.charCodeAt(pos) : 0x20;\n\n  isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));\n  isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));\n\n  isLastWhiteSpace = isWhiteSpace(lastChar);\n  isNextWhiteSpace = isWhiteSpace(nextChar);\n\n  if (isNextWhiteSpace) {\n    left_flanking = false;\n  } else if (isNextPunctChar) {\n    if (!(isLastWhiteSpace || isLastPunctChar)) {\n      left_flanking = false;\n    }\n  }\n\n  if (isLastWhiteSpace) {\n    right_flanking = false;\n  } else if (isLastPunctChar) {\n    if (!(isNextWhiteSpace || isNextPunctChar)) {\n      right_flanking = false;\n    }\n  }\n\n  if (!canSplitWord) {\n    can_open  = left_flanking  && (!right_flanking || isLastPunctChar);\n    can_close = right_flanking && (!left_flanking  || isNextPunctChar);\n  } else {\n    can_open  = left_flanking;\n    can_close = right_flanking;\n  }\n\n  return {\n    can_open:  can_open,\n    can_close: can_close,\n    length:    count\n  };\n};\n\n\n// re-export Token class to use in block rules\nStateInline.prototype.Token = Token;\n\n\nmodule.exports = StateInline;\n","/** internal\n * class ParserInline\n *\n * Tokenizes paragraph content.\n **/\n'use strict';\n\n\nvar Ruler           = require('./ruler');\n\n\n////////////////////////////////////////////////////////////////////////////////\n// Parser rules\n\nvar _rules = [\n  [ 'text',            require('./rules_inline/text') ],\n  [ 'linkify',         require('./rules_inline/linkify') ],\n  [ 'newline',         require('./rules_inline/newline') ],\n  [ 'escape',          require('./rules_inline/escape') ],\n  [ 'backticks',       require('./rules_inline/backticks') ],\n  [ 'strikethrough',   require('./rules_inline/strikethrough').tokenize ],\n  [ 'emphasis',        require('./rules_inline/emphasis').tokenize ],\n  [ 'link',            require('./rules_inline/link') ],\n  [ 'image',           require('./rules_inline/image') ],\n  [ 'autolink',        require('./rules_inline/autolink') ],\n  [ 'html_inline',     require('./rules_inline/html_inline') ],\n  [ 'entity',          require('./rules_inline/entity') ]\n];\n\n// `rule2` ruleset was created specifically for emphasis/strikethrough\n// post-processing and may be changed in the future.\n//\n// Don't use this for anything except pairs (plugins working with `balance_pairs`).\n//\nvar _rules2 = [\n  [ 'balance_pairs',   require('./rules_inline/balance_pairs') ],\n  [ 'strikethrough',   require('./rules_inline/strikethrough').postProcess ],\n  [ 'emphasis',        require('./rules_inline/emphasis').postProcess ],\n  // rules for pairs separate '**' into its own text tokens, which may be left unused,\n  // rule below merges unused segments back with the rest of the text\n  [ 'fragments_join',  require('./rules_inline/fragments_join') ]\n];\n\n\n/**\n * new ParserInline()\n **/\nfunction ParserInline() {\n  var i;\n\n  /**\n   * ParserInline#ruler -> Ruler\n   *\n   * [[Ruler]] instance. Keep configuration of inline rules.\n   **/\n  this.ruler = new Ruler();\n\n  for (i = 0; i < _rules.length; i++) {\n    this.ruler.push(_rules[i][0], _rules[i][1]);\n  }\n\n  /**\n   * ParserInline#ruler2 -> Ruler\n   *\n   * [[Ruler]] instance. Second ruler used for post-processing\n   * (e.g. in emphasis-like rules).\n   **/\n  this.ruler2 = new Ruler();\n\n  for (i = 0; i < _rules2.length; i++) {\n    this.ruler2.push(_rules2[i][0], _rules2[i][1]);\n  }\n}\n\n\n// Skip single token by running all rules in validation mode;\n// returns `true` if any rule reported success\n//\nParserInline.prototype.skipToken = function (state) {\n  var ok, i, pos = state.pos,\n      rules = this.ruler.getRules(''),\n      len = rules.length,\n      maxNesting = state.md.options.maxNesting,\n      cache = state.cache;\n\n\n  if (typeof cache[pos] !== 'undefined') {\n    state.pos = cache[pos];\n    return;\n  }\n\n  if (state.level < maxNesting) {\n    for (i = 0; i < len; i++) {\n      // Increment state.level and decrement it later to limit recursion.\n      // It's harmless to do here, because no tokens are created. But ideally,\n      // we'd need a separate private state variable for this purpose.\n      //\n      state.level++;\n      ok = rules[i](state, true);\n      state.level--;\n\n      if (ok) {\n        if (pos >= state.pos) { throw new Error(\"inline rule didn't increment state.pos\"); }\n        break;\n      }\n    }\n  } else {\n    // Too much nesting, just skip until the end of the paragraph.\n    //\n    // NOTE: this will cause links to behave incorrectly in the following case,\n    //       when an amount of `[` is exactly equal to `maxNesting + 1`:\n    //\n    //       [[[[[[[[[[[[[[[[[[[[[foo]()\n    //\n    // TODO: remove this workaround when CM standard will allow nested links\n    //       (we can replace it by preventing links from being parsed in\n    //       validation mode)\n    //\n    state.pos = state.posMax;\n  }\n\n  if (!ok) { state.pos++; }\n  cache[pos] = state.pos;\n};\n\n\n// Generate tokens for input range\n//\nParserInline.prototype.tokenize = function (state) {\n  var ok, i, prevPos,\n      rules = this.ruler.getRules(''),\n      len = rules.length,\n      end = state.posMax,\n      maxNesting = state.md.options.maxNesting;\n\n  while (state.pos < end) {\n    // Try all possible rules.\n    // On success, rule should:\n    //\n    // - update `state.pos`\n    // - update `state.tokens`\n    // - return true\n    prevPos = state.pos;\n\n    if (state.level < maxNesting) {\n      for (i = 0; i < len; i++) {\n        ok = rules[i](state, false);\n        if (ok) {\n          if (prevPos >= state.pos) { throw new Error(\"inline rule didn't increment state.pos\"); }\n          break;\n        }\n      }\n    }\n\n    if (ok) {\n      if (state.pos >= end) { break; }\n      continue;\n    }\n\n    state.pending += state.src[state.pos++];\n  }\n\n  if (state.pending) {\n    state.pushPending();\n  }\n};\n\n\n/**\n * ParserInline.parse(str, md, env, outTokens)\n *\n * Process input string and push inline tokens into `outTokens`\n **/\nParserInline.prototype.parse = function (str, md, env, outTokens) {\n  var i, rules, len;\n  var state = new this.State(str, md, env, outTokens);\n\n  this.tokenize(state);\n\n  rules = this.ruler2.getRules('');\n  len = rules.length;\n\n  for (i = 0; i < len; i++) {\n    rules[i](state);\n  }\n};\n\n\nParserInline.prototype.State = require('./rules_inline/state_inline');\n\n\nmodule.exports = ParserInline;\n","'use strict';\n\n\nmodule.exports = function (opts) {\n  var re = {};\n  opts = opts || {};\n\n  // Use direct extract instead of `regenerate` to reduse browserified size\n  re.src_Any = require('uc.micro/properties/Any/regex').source;\n  re.src_Cc  = require('uc.micro/categories/Cc/regex').source;\n  re.src_Z   = require('uc.micro/categories/Z/regex').source;\n  re.src_P   = require('uc.micro/categories/P/regex').source;\n\n  // \\p{\\Z\\P\\Cc\\CF} (white spaces + control + format + punctuation)\n  re.src_ZPCc = [ re.src_Z, re.src_P, re.src_Cc ].join('|');\n\n  // \\p{\\Z\\Cc} (white spaces + control)\n  re.src_ZCc = [ re.src_Z, re.src_Cc ].join('|');\n\n  // Experimental. List of chars, completely prohibited in links\n  // because can separate it from other part of text\n  var text_separators = '[><\\uff5c]';\n\n  // All possible word characters (everything without punctuation, spaces & controls)\n  // Defined via punctuation & spaces to save space\n  // Should be something like \\p{\\L\\N\\S\\M} (\\w but without `_`)\n  re.src_pseudo_letter       = '(?:(?!' + text_separators + '|' + re.src_ZPCc + ')' + re.src_Any + ')';\n  // The same as abothe but without [0-9]\n  // var src_pseudo_letter_non_d = '(?:(?![0-9]|' + src_ZPCc + ')' + src_Any + ')';\n\n  ////////////////////////////////////////////////////////////////////////////////\n\n  re.src_ip4 =\n\n    '(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)';\n\n  // Prohibit any of \"@/[]()\" in user/pass to avoid wrong domain fetch.\n  re.src_auth    = '(?:(?:(?!' + re.src_ZCc + '|[@/\\\\[\\\\]()]).)+@)?';\n\n  re.src_port =\n\n    '(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?';\n\n  re.src_host_terminator =\n\n    '(?=$|' + text_separators + '|' + re.src_ZPCc + ')' +\n    '(?!' + (opts['---'] ? '-(?!--)|' : '-|') + '_|:\\\\d|\\\\.-|\\\\.(?!$|' + re.src_ZPCc + '))';\n\n  re.src_path =\n\n    '(?:' +\n      '[/?#]' +\n        '(?:' +\n          '(?!' + re.src_ZCc + '|' + text_separators + '|[()[\\\\]{}.,\"\\'?!\\\\-;]).|' +\n          '\\\\[(?:(?!' + re.src_ZCc + '|\\\\]).)*\\\\]|' +\n          '\\\\((?:(?!' + re.src_ZCc + '|[)]).)*\\\\)|' +\n          '\\\\{(?:(?!' + re.src_ZCc + '|[}]).)*\\\\}|' +\n          '\\\\\"(?:(?!' + re.src_ZCc + '|[\"]).)+\\\\\"|' +\n          \"\\\\'(?:(?!\" + re.src_ZCc + \"|[']).)+\\\\'|\" +\n          \"\\\\'(?=\" + re.src_pseudo_letter + '|[-])|' +  // allow `I'm_king` if no pair found\n          '\\\\.{2,}[a-zA-Z0-9%/&]|' + // google has many dots in \"google search\" links (#66, #81).\n                                     // github has ... in commit range links,\n                                     // Restrict to\n                                     // - english\n                                     // - percent-encoded\n                                     // - parts of file path\n                                     // - params separator\n                                     // until more examples found.\n          '\\\\.(?!' + re.src_ZCc + '|[.]|$)|' +\n          (opts['---'] ?\n            '\\\\-(?!--(?:[^-]|$))(?:-*)|' // `---` => long dash, terminate\n            :\n            '\\\\-+|'\n          ) +\n          ',(?!' + re.src_ZCc + '|$)|' +       // allow `,,,` in paths\n          ';(?!' + re.src_ZCc + '|$)|' +       // allow `;` if not followed by space-like char\n          '\\\\!+(?!' + re.src_ZCc + '|[!]|$)|' +  // allow `!!!` in paths, but not at the end\n          '\\\\?(?!' + re.src_ZCc + '|[?]|$)' +\n        ')+' +\n      '|\\\\/' +\n    ')?';\n\n  // Allow anything in markdown spec, forbid quote (\") at the first position\n  // because emails enclosed in quotes are far more common\n  re.src_email_name =\n\n    '[\\\\-;:&=\\\\+\\\\$,\\\\.a-zA-Z0-9_][\\\\-;:&=\\\\+\\\\$,\\\\\"\\\\.a-zA-Z0-9_]*';\n\n  re.src_xn =\n\n    'xn--[a-z0-9\\\\-]{1,59}';\n\n  // More to read about domain names\n  // http://serverfault.com/questions/638260/\n\n  re.src_domain_root =\n\n    // Allow letters & digits (http://test1)\n    '(?:' +\n      re.src_xn +\n      '|' +\n      re.src_pseudo_letter + '{1,63}' +\n    ')';\n\n  re.src_domain =\n\n    '(?:' +\n      re.src_xn +\n      '|' +\n      '(?:' + re.src_pseudo_letter + ')' +\n      '|' +\n      '(?:' + re.src_pseudo_letter + '(?:-|' + re.src_pseudo_letter + '){0,61}' + re.src_pseudo_letter + ')' +\n    ')';\n\n  re.src_host =\n\n    '(?:' +\n    // Don't need IP check, because digits are already allowed in normal domain names\n    //   src_ip4 +\n    // '|' +\n      '(?:(?:(?:' + re.src_domain + ')\\\\.)*' + re.src_domain/*_root*/ + ')' +\n    ')';\n\n  re.tpl_host_fuzzy =\n\n    '(?:' +\n      re.src_ip4 +\n    '|' +\n      '(?:(?:(?:' + re.src_domain + ')\\\\.)+(?:%TLDS%))' +\n    ')';\n\n  re.tpl_host_no_ip_fuzzy =\n\n    '(?:(?:(?:' + re.src_domain + ')\\\\.)+(?:%TLDS%))';\n\n  re.src_host_strict =\n\n    re.src_host + re.src_host_terminator;\n\n  re.tpl_host_fuzzy_strict =\n\n    re.tpl_host_fuzzy + re.src_host_terminator;\n\n  re.src_host_port_strict =\n\n    re.src_host + re.src_port + re.src_host_terminator;\n\n  re.tpl_host_port_fuzzy_strict =\n\n    re.tpl_host_fuzzy + re.src_port + re.src_host_terminator;\n\n  re.tpl_host_port_no_ip_fuzzy_strict =\n\n    re.tpl_host_no_ip_fuzzy + re.src_port + re.src_host_terminator;\n\n\n  ////////////////////////////////////////////////////////////////////////////////\n  // Main rules\n\n  // Rude test fuzzy links by host, for quick deny\n  re.tpl_host_fuzzy_test =\n\n    'localhost|www\\\\.|\\\\.\\\\d{1,3}\\\\.|(?:\\\\.(?:%TLDS%)(?:' + re.src_ZPCc + '|>|$))';\n\n  re.tpl_email_fuzzy =\n\n      '(^|' + text_separators + '|\"|\\\\(|' + re.src_ZCc + ')' +\n      '(' + re.src_email_name + '@' + re.tpl_host_fuzzy_strict + ')';\n\n  re.tpl_link_fuzzy =\n      // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n      // but can start with > (markdown blockquote)\n      '(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uff5c]|' + re.src_ZPCc + '))' +\n      '((?![$+<=>^`|\\uff5c])' + re.tpl_host_port_fuzzy_strict + re.src_path + ')';\n\n  re.tpl_link_no_ip_fuzzy =\n      // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n      // but can start with > (markdown blockquote)\n      '(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uff5c]|' + re.src_ZPCc + '))' +\n      '((?![$+<=>^`|\\uff5c])' + re.tpl_host_port_no_ip_fuzzy_strict + re.src_path + ')';\n\n  return re;\n};\n","'use strict';\n\n\n////////////////////////////////////////////////////////////////////////////////\n// Helpers\n\n// Merge objects\n//\nfunction assign(obj /*from1, from2, from3, ...*/) {\n  var sources = Array.prototype.slice.call(arguments, 1);\n\n  sources.forEach(function (source) {\n    if (!source) { return; }\n\n    Object.keys(source).forEach(function (key) {\n      obj[key] = source[key];\n    });\n  });\n\n  return obj;\n}\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\nfunction isString(obj) { return _class(obj) === '[object String]'; }\nfunction isObject(obj) { return _class(obj) === '[object Object]'; }\nfunction isRegExp(obj) { return _class(obj) === '[object RegExp]'; }\nfunction isFunction(obj) { return _class(obj) === '[object Function]'; }\n\n\nfunction escapeRE(str) { return str.replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&'); }\n\n////////////////////////////////////////////////////////////////////////////////\n\n\nvar defaultOptions = {\n  fuzzyLink: true,\n  fuzzyEmail: true,\n  fuzzyIP: false\n};\n\n\nfunction isOptionsObj(obj) {\n  return Object.keys(obj || {}).reduce(function (acc, k) {\n    return acc || defaultOptions.hasOwnProperty(k);\n  }, false);\n}\n\n\nvar defaultSchemas = {\n  'http:': {\n    validate: function (text, pos, self) {\n      var tail = text.slice(pos);\n\n      if (!self.re.http) {\n        // compile lazily, because \"host\"-containing variables can change on tlds update.\n        self.re.http =  new RegExp(\n          '^\\\\/\\\\/' + self.re.src_auth + self.re.src_host_port_strict + self.re.src_path, 'i'\n        );\n      }\n      if (self.re.http.test(tail)) {\n        return tail.match(self.re.http)[0].length;\n      }\n      return 0;\n    }\n  },\n  'https:':  'http:',\n  'ftp:':    'http:',\n  '//':      {\n    validate: function (text, pos, self) {\n      var tail = text.slice(pos);\n\n      if (!self.re.no_http) {\n      // compile lazily, because \"host\"-containing variables can change on tlds update.\n        self.re.no_http =  new RegExp(\n          '^' +\n          self.re.src_auth +\n          // Don't allow single-level domains, because of false positives like '//test'\n          // with code comments\n          '(?:localhost|(?:(?:' + self.re.src_domain + ')\\\\.)+' + self.re.src_domain_root + ')' +\n          self.re.src_port +\n          self.re.src_host_terminator +\n          self.re.src_path,\n\n          'i'\n        );\n      }\n\n      if (self.re.no_http.test(tail)) {\n        // should not be `://` & `///`, that protects from errors in protocol name\n        if (pos >= 3 && text[pos - 3] === ':') { return 0; }\n        if (pos >= 3 && text[pos - 3] === '/') { return 0; }\n        return tail.match(self.re.no_http)[0].length;\n      }\n      return 0;\n    }\n  },\n  'mailto:': {\n    validate: function (text, pos, self) {\n      var tail = text.slice(pos);\n\n      if (!self.re.mailto) {\n        self.re.mailto =  new RegExp(\n          '^' + self.re.src_email_name + '@' + self.re.src_host_strict, 'i'\n        );\n      }\n      if (self.re.mailto.test(tail)) {\n        return tail.match(self.re.mailto)[0].length;\n      }\n      return 0;\n    }\n  }\n};\n\n/*eslint-disable max-len*/\n\n// RE pattern for 2-character tlds (autogenerated by ./support/tlds_2char_gen.js)\nvar tlds_2ch_src_re = 'a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]';\n\n// DON'T try to make PRs with changes. Extend TLDs with LinkifyIt.tlds() instead\nvar tlds_default = 'biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф'.split('|');\n\n/*eslint-enable max-len*/\n\n////////////////////////////////////////////////////////////////////////////////\n\nfunction resetScanCache(self) {\n  self.__index__ = -1;\n  self.__text_cache__   = '';\n}\n\nfunction createValidator(re) {\n  return function (text, pos) {\n    var tail = text.slice(pos);\n\n    if (re.test(tail)) {\n      return tail.match(re)[0].length;\n    }\n    return 0;\n  };\n}\n\nfunction createNormalizer() {\n  return function (match, self) {\n    self.normalize(match);\n  };\n}\n\n// Schemas compiler. Build regexps.\n//\nfunction compile(self) {\n\n  // Load & clone RE patterns.\n  var re = self.re = require('./lib/re')(self.__opts__);\n\n  // Define dynamic patterns\n  var tlds = self.__tlds__.slice();\n\n  self.onCompile();\n\n  if (!self.__tlds_replaced__) {\n    tlds.push(tlds_2ch_src_re);\n  }\n  tlds.push(re.src_xn);\n\n  re.src_tlds = tlds.join('|');\n\n  function untpl(tpl) { return tpl.replace('%TLDS%', re.src_tlds); }\n\n  re.email_fuzzy      = RegExp(untpl(re.tpl_email_fuzzy), 'i');\n  re.link_fuzzy       = RegExp(untpl(re.tpl_link_fuzzy), 'i');\n  re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'i');\n  re.host_fuzzy_test  = RegExp(untpl(re.tpl_host_fuzzy_test), 'i');\n\n  //\n  // Compile each schema\n  //\n\n  var aliases = [];\n\n  self.__compiled__ = {}; // Reset compiled data\n\n  function schemaError(name, val) {\n    throw new Error('(LinkifyIt) Invalid schema \"' + name + '\": ' + val);\n  }\n\n  Object.keys(self.__schemas__).forEach(function (name) {\n    var val = self.__schemas__[name];\n\n    // skip disabled methods\n    if (val === null) { return; }\n\n    var compiled = { validate: null, link: null };\n\n    self.__compiled__[name] = compiled;\n\n    if (isObject(val)) {\n      if (isRegExp(val.validate)) {\n        compiled.validate = createValidator(val.validate);\n      } else if (isFunction(val.validate)) {\n        compiled.validate = val.validate;\n      } else {\n        schemaError(name, val);\n      }\n\n      if (isFunction(val.normalize)) {\n        compiled.normalize = val.normalize;\n      } else if (!val.normalize) {\n        compiled.normalize = createNormalizer();\n      } else {\n        schemaError(name, val);\n      }\n\n      return;\n    }\n\n    if (isString(val)) {\n      aliases.push(name);\n      return;\n    }\n\n    schemaError(name, val);\n  });\n\n  //\n  // Compile postponed aliases\n  //\n\n  aliases.forEach(function (alias) {\n    if (!self.__compiled__[self.__schemas__[alias]]) {\n      // Silently fail on missed schemas to avoid errons on disable.\n      // schemaError(alias, self.__schemas__[alias]);\n      return;\n    }\n\n    self.__compiled__[alias].validate =\n      self.__compiled__[self.__schemas__[alias]].validate;\n    self.__compiled__[alias].normalize =\n      self.__compiled__[self.__schemas__[alias]].normalize;\n  });\n\n  //\n  // Fake record for guessed links\n  //\n  self.__compiled__[''] = { validate: null, normalize: createNormalizer() };\n\n  //\n  // Build schema condition\n  //\n  var slist = Object.keys(self.__compiled__)\n                      .filter(function (name) {\n                        // Filter disabled & fake schemas\n                        return name.length > 0 && self.__compiled__[name];\n                      })\n                      .map(escapeRE)\n                      .join('|');\n  // (?!_) cause 1.5x slowdown\n  self.re.schema_test     = RegExp('(^|(?!_)(?:[><\\uff5c]|' + re.src_ZPCc + '))(' + slist + ')', 'i');\n  self.re.schema_search   = RegExp('(^|(?!_)(?:[><\\uff5c]|' + re.src_ZPCc + '))(' + slist + ')', 'ig');\n  self.re.schema_at_start = RegExp('^' + self.re.schema_search.source, 'i');\n\n  self.re.pretest = RegExp(\n    '(' + self.re.schema_test.source + ')|(' + self.re.host_fuzzy_test.source + ')|@',\n    'i'\n  );\n\n  //\n  // Cleanup\n  //\n\n  resetScanCache(self);\n}\n\n/**\n * class Match\n *\n * Match result. Single element of array, returned by [[LinkifyIt#match]]\n **/\nfunction Match(self, shift) {\n  var start = self.__index__,\n      end   = self.__last_index__,\n      text  = self.__text_cache__.slice(start, end);\n\n  /**\n   * Match#schema -> String\n   *\n   * Prefix (protocol) for matched string.\n   **/\n  this.schema    = self.__schema__.toLowerCase();\n  /**\n   * Match#index -> Number\n   *\n   * First position of matched string.\n   **/\n  this.index     = start + shift;\n  /**\n   * Match#lastIndex -> Number\n   *\n   * Next position after matched string.\n   **/\n  this.lastIndex = end + shift;\n  /**\n   * Match#raw -> String\n   *\n   * Matched string.\n   **/\n  this.raw       = text;\n  /**\n   * Match#text -> String\n   *\n   * Notmalized text of matched string.\n   **/\n  this.text      = text;\n  /**\n   * Match#url -> String\n   *\n   * Normalized url of matched string.\n   **/\n  this.url       = text;\n}\n\nfunction createMatch(self, shift) {\n  var match = new Match(self, shift);\n\n  self.__compiled__[match.schema].normalize(match, self);\n\n  return match;\n}\n\n\n/**\n * class LinkifyIt\n **/\n\n/**\n * new LinkifyIt(schemas, options)\n * - schemas (Object): Optional. Additional schemas to validate (prefix/validator)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Creates new linkifier instance with optional additional schemas.\n * Can be called without `new` keyword for convenience.\n *\n * By default understands:\n *\n * - `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links\n * - \"fuzzy\" links and emails (example.com, foo@bar.com).\n *\n * `schemas` is an object, where each key/value describes protocol/rule:\n *\n * - __key__ - link prefix (usually, protocol name with `:` at the end, `skype:`\n *   for example). `linkify-it` makes shure that prefix is not preceeded with\n *   alphanumeric char and symbols. Only whitespaces and punctuation allowed.\n * - __value__ - rule to check tail after link prefix\n *   - _String_ - just alias to existing rule\n *   - _Object_\n *     - _validate_ - validator function (should return matched length on success),\n *       or `RegExp`.\n *     - _normalize_ - optional function to normalize text & url of matched result\n *       (for example, for @twitter mentions).\n *\n * `options`:\n *\n * - __fuzzyLink__ - recognige URL-s without `http(s):` prefix. Default `true`.\n * - __fuzzyIP__ - allow IPs in fuzzy links above. Can conflict with some texts\n *   like version numbers. Default `false`.\n * - __fuzzyEmail__ - recognize emails without `mailto:` prefix.\n *\n **/\nfunction LinkifyIt(schemas, options) {\n  if (!(this instanceof LinkifyIt)) {\n    return new LinkifyIt(schemas, options);\n  }\n\n  if (!options) {\n    if (isOptionsObj(schemas)) {\n      options = schemas;\n      schemas = {};\n    }\n  }\n\n  this.__opts__           = assign({}, defaultOptions, options);\n\n  // Cache last tested result. Used to skip repeating steps on next `match` call.\n  this.__index__          = -1;\n  this.__last_index__     = -1; // Next scan position\n  this.__schema__         = '';\n  this.__text_cache__     = '';\n\n  this.__schemas__        = assign({}, defaultSchemas, schemas);\n  this.__compiled__       = {};\n\n  this.__tlds__           = tlds_default;\n  this.__tlds_replaced__  = false;\n\n  this.re = {};\n\n  compile(this);\n}\n\n\n/** chainable\n * LinkifyIt#add(schema, definition)\n * - schema (String): rule name (fixed pattern prefix)\n * - definition (String|RegExp|Object): schema definition\n *\n * Add new rule definition. See constructor description for details.\n **/\nLinkifyIt.prototype.add = function add(schema, definition) {\n  this.__schemas__[schema] = definition;\n  compile(this);\n  return this;\n};\n\n\n/** chainable\n * LinkifyIt#set(options)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Set recognition options for links without schema.\n **/\nLinkifyIt.prototype.set = function set(options) {\n  this.__opts__ = assign(this.__opts__, options);\n  return this;\n};\n\n\n/**\n * LinkifyIt#test(text) -> Boolean\n *\n * Searches linkifiable pattern and returns `true` on success or `false` on fail.\n **/\nLinkifyIt.prototype.test = function test(text) {\n  // Reset scan cache\n  this.__text_cache__ = text;\n  this.__index__      = -1;\n\n  if (!text.length) { return false; }\n\n  var m, ml, me, len, shift, next, re, tld_pos, at_pos;\n\n  // try to scan for link with schema - that's the most simple rule\n  if (this.re.schema_test.test(text)) {\n    re = this.re.schema_search;\n    re.lastIndex = 0;\n    while ((m = re.exec(text)) !== null) {\n      len = this.testSchemaAt(text, m[2], re.lastIndex);\n      if (len) {\n        this.__schema__     = m[2];\n        this.__index__      = m.index + m[1].length;\n        this.__last_index__ = m.index + m[0].length + len;\n        break;\n      }\n    }\n  }\n\n  if (this.__opts__.fuzzyLink && this.__compiled__['http:']) {\n    // guess schemaless links\n    tld_pos = text.search(this.re.host_fuzzy_test);\n    if (tld_pos >= 0) {\n      // if tld is located after found link - no need to check fuzzy pattern\n      if (this.__index__ < 0 || tld_pos < this.__index__) {\n        if ((ml = text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) {\n\n          shift = ml.index + ml[1].length;\n\n          if (this.__index__ < 0 || shift < this.__index__) {\n            this.__schema__     = '';\n            this.__index__      = shift;\n            this.__last_index__ = ml.index + ml[0].length;\n          }\n        }\n      }\n    }\n  }\n\n  if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) {\n    // guess schemaless emails\n    at_pos = text.indexOf('@');\n    if (at_pos >= 0) {\n      // We can't skip this check, because this cases are possible:\n      // 192.168.1.1@gmail.com, my.in@example.com\n      if ((me = text.match(this.re.email_fuzzy)) !== null) {\n\n        shift = me.index + me[1].length;\n        next  = me.index + me[0].length;\n\n        if (this.__index__ < 0 || shift < this.__index__ ||\n            (shift === this.__index__ && next > this.__last_index__)) {\n          this.__schema__     = 'mailto:';\n          this.__index__      = shift;\n          this.__last_index__ = next;\n        }\n      }\n    }\n  }\n\n  return this.__index__ >= 0;\n};\n\n\n/**\n * LinkifyIt#pretest(text) -> Boolean\n *\n * Very quick check, that can give false positives. Returns true if link MAY BE\n * can exists. Can be used for speed optimization, when you need to check that\n * link NOT exists.\n **/\nLinkifyIt.prototype.pretest = function pretest(text) {\n  return this.re.pretest.test(text);\n};\n\n\n/**\n * LinkifyIt#testSchemaAt(text, name, position) -> Number\n * - text (String): text to scan\n * - name (String): rule (schema) name\n * - position (Number): text offset to check from\n *\n * Similar to [[LinkifyIt#test]] but checks only specific protocol tail exactly\n * at given position. Returns length of found pattern (0 on fail).\n **/\nLinkifyIt.prototype.testSchemaAt = function testSchemaAt(text, schema, pos) {\n  // If not supported schema check requested - terminate\n  if (!this.__compiled__[schema.toLowerCase()]) {\n    return 0;\n  }\n  return this.__compiled__[schema.toLowerCase()].validate(text, pos, this);\n};\n\n\n/**\n * LinkifyIt#match(text) -> Array|null\n *\n * Returns array of found link descriptions or `null` on fail. We strongly\n * recommend to use [[LinkifyIt#test]] first, for best speed.\n *\n * ##### Result match description\n *\n * - __schema__ - link schema, can be empty for fuzzy links, or `//` for\n *   protocol-neutral  links.\n * - __index__ - offset of matched text\n * - __lastIndex__ - index of next char after mathch end\n * - __raw__ - matched text\n * - __text__ - normalized text\n * - __url__ - link, generated from matched text\n **/\nLinkifyIt.prototype.match = function match(text) {\n  var shift = 0, result = [];\n\n  // Try to take previous element from cache, if .test() called before\n  if (this.__index__ >= 0 && this.__text_cache__ === text) {\n    result.push(createMatch(this, shift));\n    shift = this.__last_index__;\n  }\n\n  // Cut head if cache was used\n  var tail = shift ? text.slice(shift) : text;\n\n  // Scan string until end reached\n  while (this.test(tail)) {\n    result.push(createMatch(this, shift));\n\n    tail = tail.slice(this.__last_index__);\n    shift += this.__last_index__;\n  }\n\n  if (result.length) {\n    return result;\n  }\n\n  return null;\n};\n\n\n/**\n * LinkifyIt#matchAtStart(text) -> Match|null\n *\n * Returns fully-formed (not fuzzy) link if it starts at the beginning\n * of the string, and null otherwise.\n **/\nLinkifyIt.prototype.matchAtStart = function matchAtStart(text) {\n  // Reset scan cache\n  this.__text_cache__ = text;\n  this.__index__      = -1;\n\n  if (!text.length) return null;\n\n  var m = this.re.schema_at_start.exec(text);\n  if (!m) return null;\n\n  var len = this.testSchemaAt(text, m[2], m[0].length);\n  if (!len) return null;\n\n  this.__schema__     = m[2];\n  this.__index__      = m.index + m[1].length;\n  this.__last_index__ = m.index + m[0].length + len;\n\n  return createMatch(this, 0);\n};\n\n\n/** chainable\n * LinkifyIt#tlds(list [, keepOld]) -> this\n * - list (Array): list of tlds\n * - keepOld (Boolean): merge with current list if `true` (`false` by default)\n *\n * Load (or merge) new tlds list. Those are user for fuzzy links (without prefix)\n * to avoid false positives. By default this algorythm used:\n *\n * - hostname with any 2-letter root zones are ok.\n * - biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф\n *   are ok.\n * - encoded (`xn--...`) root zones are ok.\n *\n * If list is replaced, then exact match for 2-chars root zones will be checked.\n **/\nLinkifyIt.prototype.tlds = function tlds(list, keepOld) {\n  list = Array.isArray(list) ? list : [ list ];\n\n  if (!keepOld) {\n    this.__tlds__ = list.slice();\n    this.__tlds_replaced__ = true;\n    compile(this);\n    return this;\n  }\n\n  this.__tlds__ = this.__tlds__.concat(list)\n                                  .sort()\n                                  .filter(function (el, idx, arr) {\n                                    return el !== arr[idx - 1];\n                                  })\n                                  .reverse();\n\n  compile(this);\n  return this;\n};\n\n/**\n * LinkifyIt#normalize(match)\n *\n * Default normalizer (if schema does not define it's own).\n **/\nLinkifyIt.prototype.normalize = function normalize(match) {\n\n  // Do minimal possible changes by default. Need to collect feedback prior\n  // to move forward https://github.com/markdown-it/linkify-it/issues/1\n\n  if (!match.schema) { match.url = 'http://' + match.url; }\n\n  if (match.schema === 'mailto:' && !/^mailto:/i.test(match.url)) {\n    match.url = 'mailto:' + match.url;\n  }\n};\n\n\n/**\n * LinkifyIt#onCompile()\n *\n * Override to modify basic RegExp-s.\n **/\nLinkifyIt.prototype.onCompile = function onCompile() {\n};\n\n\nmodule.exports = LinkifyIt;\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7F]/; // Note: U+007F DEL is excluded too.\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, callback) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = callback(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {String} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(domain, callback) {\n\tconst parts = domain.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tdomain = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tdomain = domain.replace(regexSeparators, '\\x2E');\n\tconst labels = domain.split('.');\n\tconst encoded = map(labels, callback).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = codePoints => String.fromCodePoint(...codePoints);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint >= 0x30 && codePoint < 0x3A) {\n\t\treturn 26 + (codePoint - 0x30);\n\t}\n\tif (codePoint >= 0x41 && codePoint < 0x5B) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint >= 0x61 && codePoint < 0x7B) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t//  0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tconst oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\t\t\tif (digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tconst inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tconst basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue === n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.3.1',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };\nexport default punycode;\n","// markdown-it default options\n\n'use strict';\n\n\nmodule.exports = {\n  options: {\n    html:         false,        // Enable HTML tags in source\n    xhtmlOut:     false,        // Use '/' to close single tags (<br />)\n    breaks:       false,        // Convert '\\n' in paragraphs into <br>\n    langPrefix:   'language-',  // CSS language prefix for fenced blocks\n    linkify:      false,        // autoconvert URL-like texts to links\n\n    // Enable some language-neutral replacements + quotes beautification\n    typographer:  false,\n\n    // Double + single quotes replacement pairs, when typographer enabled,\n    // and smartquotes on. Could be either a String or an Array.\n    //\n    // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n    // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n    quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n    // Highlighter function. Should return escaped HTML,\n    // or '' if the source string is not changed and should be escaped externaly.\n    // If result starts with <pre... internal wrapper is skipped.\n    //\n    // function (/*str, lang*/) { return ''; }\n    //\n    highlight: null,\n\n    maxNesting:   100            // Internal protection, recursion limit\n  },\n\n  components: {\n\n    core: {},\n    block: {},\n    inline: {}\n  }\n};\n","// \"Zero\" preset, with nothing enabled. Useful for manual configuring of simple\n// modes. For example, to parse bold/italic only.\n\n'use strict';\n\n\nmodule.exports = {\n  options: {\n    html:         false,        // Enable HTML tags in source\n    xhtmlOut:     false,        // Use '/' to close single tags (<br />)\n    breaks:       false,        // Convert '\\n' in paragraphs into <br>\n    langPrefix:   'language-',  // CSS language prefix for fenced blocks\n    linkify:      false,        // autoconvert URL-like texts to links\n\n    // Enable some language-neutral replacements + quotes beautification\n    typographer:  false,\n\n    // Double + single quotes replacement pairs, when typographer enabled,\n    // and smartquotes on. Could be either a String or an Array.\n    //\n    // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n    // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n    quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n    // Highlighter function. Should return escaped HTML,\n    // or '' if the source string is not changed and should be escaped externaly.\n    // If result starts with <pre... internal wrapper is skipped.\n    //\n    // function (/*str, lang*/) { return ''; }\n    //\n    highlight: null,\n\n    maxNesting:   20            // Internal protection, recursion limit\n  },\n\n  components: {\n\n    core: {\n      rules: [\n        'normalize',\n        'block',\n        'inline',\n        'text_join'\n      ]\n    },\n\n    block: {\n      rules: [\n        'paragraph'\n      ]\n    },\n\n    inline: {\n      rules: [\n        'text'\n      ],\n      rules2: [\n        'balance_pairs',\n        'fragments_join'\n      ]\n    }\n  }\n};\n","// Commonmark default options\n\n'use strict';\n\n\nmodule.exports = {\n  options: {\n    html:         true,         // Enable HTML tags in source\n    xhtmlOut:     true,         // Use '/' to close single tags (<br />)\n    breaks:       false,        // Convert '\\n' in paragraphs into <br>\n    langPrefix:   'language-',  // CSS language prefix for fenced blocks\n    linkify:      false,        // autoconvert URL-like texts to links\n\n    // Enable some language-neutral replacements + quotes beautification\n    typographer:  false,\n\n    // Double + single quotes replacement pairs, when typographer enabled,\n    // and smartquotes on. Could be either a String or an Array.\n    //\n    // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n    // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n    quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n    // Highlighter function. Should return escaped HTML,\n    // or '' if the source string is not changed and should be escaped externaly.\n    // If result starts with <pre... internal wrapper is skipped.\n    //\n    // function (/*str, lang*/) { return ''; }\n    //\n    highlight: null,\n\n    maxNesting:   20            // Internal protection, recursion limit\n  },\n\n  components: {\n\n    core: {\n      rules: [\n        'normalize',\n        'block',\n        'inline',\n        'text_join'\n      ]\n    },\n\n    block: {\n      rules: [\n        'blockquote',\n        'code',\n        'fence',\n        'heading',\n        'hr',\n        'html_block',\n        'lheading',\n        'list',\n        'reference',\n        'paragraph'\n      ]\n    },\n\n    inline: {\n      rules: [\n        'autolink',\n        'backticks',\n        'emphasis',\n        'entity',\n        'escape',\n        'html_inline',\n        'image',\n        'link',\n        'newline',\n        'text'\n      ],\n      rules2: [\n        'balance_pairs',\n        'emphasis',\n        'fragments_join'\n      ]\n    }\n  }\n};\n","// Main parser class\n\n'use strict';\n\n\nvar utils        = require('./common/utils');\nvar helpers      = require('./helpers');\nvar Renderer     = require('./renderer');\nvar ParserCore   = require('./parser_core');\nvar ParserBlock  = require('./parser_block');\nvar ParserInline = require('./parser_inline');\nvar LinkifyIt    = require('linkify-it');\nvar mdurl        = require('mdurl');\nvar punycode     = require('punycode');\n\n\nvar config = {\n  default: require('./presets/default'),\n  zero: require('./presets/zero'),\n  commonmark: require('./presets/commonmark')\n};\n\n////////////////////////////////////////////////////////////////////////////////\n//\n// This validator can prohibit more than really needed to prevent XSS. It's a\n// tradeoff to keep code simple and to be secure by default.\n//\n// If you need different setup - override validator method as you wish. Or\n// replace it with dummy function and use external sanitizer.\n//\n\nvar BAD_PROTO_RE = /^(vbscript|javascript|file|data):/;\nvar GOOD_DATA_RE = /^data:image\\/(gif|png|jpeg|webp);/;\n\nfunction validateLink(url) {\n  // url should be normalized at this point, and existing entities are decoded\n  var str = url.trim().toLowerCase();\n\n  return BAD_PROTO_RE.test(str) ? (GOOD_DATA_RE.test(str) ? true : false) : true;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\n\nvar RECODE_HOSTNAME_FOR = [ 'http:', 'https:', 'mailto:' ];\n\nfunction normalizeLink(url) {\n  var parsed = mdurl.parse(url, true);\n\n  if (parsed.hostname) {\n    // Encode hostnames in urls like:\n    // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n    //\n    // We don't encode unknown schemas, because it's likely that we encode\n    // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n    //\n    if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n      try {\n        parsed.hostname = punycode.toASCII(parsed.hostname);\n      } catch (er) { /**/ }\n    }\n  }\n\n  return mdurl.encode(mdurl.format(parsed));\n}\n\nfunction normalizeLinkText(url) {\n  var parsed = mdurl.parse(url, true);\n\n  if (parsed.hostname) {\n    // Encode hostnames in urls like:\n    // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n    //\n    // We don't encode unknown schemas, because it's likely that we encode\n    // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n    //\n    if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n      try {\n        parsed.hostname = punycode.toUnicode(parsed.hostname);\n      } catch (er) { /**/ }\n    }\n  }\n\n  // add '%' to exclude list because of https://github.com/markdown-it/markdown-it/issues/720\n  return mdurl.decode(mdurl.format(parsed), mdurl.decode.defaultChars + '%');\n}\n\n\n/**\n * class MarkdownIt\n *\n * Main parser/renderer class.\n *\n * ##### Usage\n *\n * ```javascript\n * // node.js, \"classic\" way:\n * var MarkdownIt = require('markdown-it'),\n *     md = new MarkdownIt();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // node.js, the same, but with sugar:\n * var md = require('markdown-it')();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // browser without AMD, added to \"window\" on script load\n * // Note, there are no dash.\n * var md = window.markdownit();\n * var result = md.render('# markdown-it rulezz!');\n * ```\n *\n * Single line rendering, without paragraph wrap:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * var result = md.renderInline('__markdown-it__ rulezz!');\n * ```\n **/\n\n/**\n * new MarkdownIt([presetName, options])\n * - presetName (String): optional, `commonmark` / `zero`\n * - options (Object)\n *\n * Creates parser instanse with given config. Can be called without `new`.\n *\n * ##### presetName\n *\n * MarkdownIt provides named presets as a convenience to quickly\n * enable/disable active syntax rules and options for common use cases.\n *\n * - [\"commonmark\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/commonmark.js) -\n *   configures parser to strict [CommonMark](http://commonmark.org/) mode.\n * - [default](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/default.js) -\n *   similar to GFM, used when no preset name given. Enables all available rules,\n *   but still without html, typographer & autolinker.\n * - [\"zero\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/zero.js) -\n *   all rules disabled. Useful to quickly setup your config via `.enable()`.\n *   For example, when you need only `bold` and `italic` markup and nothing else.\n *\n * ##### options:\n *\n * - __html__ - `false`. Set `true` to enable HTML tags in source. Be careful!\n *   That's not safe! You may need external sanitizer to protect output from XSS.\n *   It's better to extend features via plugins, instead of enabling HTML.\n * - __xhtmlOut__ - `false`. Set `true` to add '/' when closing single tags\n *   (`<br />`). This is needed only for full CommonMark compatibility. In real\n *   world you will need HTML output.\n * - __breaks__ - `false`. Set `true` to convert `\\n` in paragraphs into `<br>`.\n * - __langPrefix__ - `language-`. CSS language class prefix for fenced blocks.\n *   Can be useful for external highlighters.\n * - __linkify__ - `false`. Set `true` to autoconvert URL-like text to links.\n * - __typographer__  - `false`. Set `true` to enable [some language-neutral\n *   replacement](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.js) +\n *   quotes beautification (smartquotes).\n * - __quotes__ - `“”‘’`, String or Array. Double + single quotes replacement\n *   pairs, when typographer enabled and smartquotes on. For example, you can\n *   use `'«»„“'` for Russian, `'„“‚‘'` for German, and\n *   `['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›']` for French (including nbsp).\n * - __highlight__ - `null`. Highlighter function for fenced code blocks.\n *   Highlighter `function (str, lang)` should return escaped HTML. It can also\n *   return empty string if the source was not changed and should be escaped\n *   externaly. If result starts with <pre... internal wrapper is skipped.\n *\n * ##### Example\n *\n * ```javascript\n * // commonmark mode\n * var md = require('markdown-it')('commonmark');\n *\n * // default mode\n * var md = require('markdown-it')();\n *\n * // enable everything\n * var md = require('markdown-it')({\n *   html: true,\n *   linkify: true,\n *   typographer: true\n * });\n * ```\n *\n * ##### Syntax highlighting\n *\n * ```js\n * var hljs = require('highlight.js') // https://highlightjs.org/\n *\n * var md = require('markdown-it')({\n *   highlight: function (str, lang) {\n *     if (lang && hljs.getLanguage(lang)) {\n *       try {\n *         return hljs.highlight(str, { language: lang, ignoreIllegals: true }).value;\n *       } catch (__) {}\n *     }\n *\n *     return ''; // use external default escaping\n *   }\n * });\n * ```\n *\n * Or with full wrapper override (if you need assign class to `<pre>`):\n *\n * ```javascript\n * var hljs = require('highlight.js') // https://highlightjs.org/\n *\n * // Actual default values\n * var md = require('markdown-it')({\n *   highlight: function (str, lang) {\n *     if (lang && hljs.getLanguage(lang)) {\n *       try {\n *         return '<pre class=\"hljs\"><code>' +\n *                hljs.highlight(str, { language: lang, ignoreIllegals: true }).value +\n *                '</code></pre>';\n *       } catch (__) {}\n *     }\n *\n *     return '<pre class=\"hljs\"><code>' + md.utils.escapeHtml(str) + '</code></pre>';\n *   }\n * });\n * ```\n *\n **/\nfunction MarkdownIt(presetName, options) {\n  if (!(this instanceof MarkdownIt)) {\n    return new MarkdownIt(presetName, options);\n  }\n\n  if (!options) {\n    if (!utils.isString(presetName)) {\n      options = presetName || {};\n      presetName = 'default';\n    }\n  }\n\n  /**\n   * MarkdownIt#inline -> ParserInline\n   *\n   * Instance of [[ParserInline]]. You may need it to add new rules when\n   * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n   * [[MarkdownIt.enable]].\n   **/\n  this.inline = new ParserInline();\n\n  /**\n   * MarkdownIt#block -> ParserBlock\n   *\n   * Instance of [[ParserBlock]]. You may need it to add new rules when\n   * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n   * [[MarkdownIt.enable]].\n   **/\n  this.block = new ParserBlock();\n\n  /**\n   * MarkdownIt#core -> Core\n   *\n   * Instance of [[Core]] chain executor. You may need it to add new rules when\n   * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n   * [[MarkdownIt.enable]].\n   **/\n  this.core = new ParserCore();\n\n  /**\n   * MarkdownIt#renderer -> Renderer\n   *\n   * Instance of [[Renderer]]. Use it to modify output look. Or to add rendering\n   * rules for new token types, generated by plugins.\n   *\n   * ##### Example\n   *\n   * ```javascript\n   * var md = require('markdown-it')();\n   *\n   * function myToken(tokens, idx, options, env, self) {\n   *   //...\n   *   return result;\n   * };\n   *\n   * md.renderer.rules['my_token'] = myToken\n   * ```\n   *\n   * See [[Renderer]] docs and [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js).\n   **/\n  this.renderer = new Renderer();\n\n  /**\n   * MarkdownIt#linkify -> LinkifyIt\n   *\n   * [linkify-it](https://github.com/markdown-it/linkify-it) instance.\n   * Used by [linkify](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/linkify.js)\n   * rule.\n   **/\n  this.linkify = new LinkifyIt();\n\n  /**\n   * MarkdownIt#validateLink(url) -> Boolean\n   *\n   * Link validation function. CommonMark allows too much in links. By default\n   * we disable `javascript:`, `vbscript:`, `file:` schemas, and almost all `data:...` schemas\n   * except some embedded image types.\n   *\n   * You can change this behaviour:\n   *\n   * ```javascript\n   * var md = require('markdown-it')();\n   * // enable everything\n   * md.validateLink = function () { return true; }\n   * ```\n   **/\n  this.validateLink = validateLink;\n\n  /**\n   * MarkdownIt#normalizeLink(url) -> String\n   *\n   * Function used to encode link url to a machine-readable format,\n   * which includes url-encoding, punycode, etc.\n   **/\n  this.normalizeLink = normalizeLink;\n\n  /**\n   * MarkdownIt#normalizeLinkText(url) -> String\n   *\n   * Function used to decode link url to a human-readable format`\n   **/\n  this.normalizeLinkText = normalizeLinkText;\n\n\n  // Expose utils & helpers for easy acces from plugins\n\n  /**\n   * MarkdownIt#utils -> utils\n   *\n   * Assorted utility functions, useful to write plugins. See details\n   * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/common/utils.js).\n   **/\n  this.utils = utils;\n\n  /**\n   * MarkdownIt#helpers -> helpers\n   *\n   * Link components parser functions, useful to write plugins. See details\n   * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/helpers).\n   **/\n  this.helpers = utils.assign({}, helpers);\n\n\n  this.options = {};\n  this.configure(presetName);\n\n  if (options) { this.set(options); }\n}\n\n\n/** chainable\n * MarkdownIt.set(options)\n *\n * Set parser options (in the same format as in constructor). Probably, you\n * will never need it, but you can change options after constructor call.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n *             .set({ html: true, breaks: true })\n *             .set({ typographer, true });\n * ```\n *\n * __Note:__ To achieve the best possible performance, don't modify a\n * `markdown-it` instance options on the fly. If you need multiple configurations\n * it's best to create multiple instances and initialize each with separate\n * config.\n **/\nMarkdownIt.prototype.set = function (options) {\n  utils.assign(this.options, options);\n  return this;\n};\n\n\n/** chainable, internal\n * MarkdownIt.configure(presets)\n *\n * Batch load of all options and compenent settings. This is internal method,\n * and you probably will not need it. But if you will - see available presets\n * and data structure [here](https://github.com/markdown-it/markdown-it/tree/master/lib/presets)\n *\n * We strongly recommend to use presets instead of direct config loads. That\n * will give better compatibility with next versions.\n **/\nMarkdownIt.prototype.configure = function (presets) {\n  var self = this, presetName;\n\n  if (utils.isString(presets)) {\n    presetName = presets;\n    presets = config[presetName];\n    if (!presets) { throw new Error('Wrong `markdown-it` preset \"' + presetName + '\", check name'); }\n  }\n\n  if (!presets) { throw new Error('Wrong `markdown-it` preset, can\\'t be empty'); }\n\n  if (presets.options) { self.set(presets.options); }\n\n  if (presets.components) {\n    Object.keys(presets.components).forEach(function (name) {\n      if (presets.components[name].rules) {\n        self[name].ruler.enableOnly(presets.components[name].rules);\n      }\n      if (presets.components[name].rules2) {\n        self[name].ruler2.enableOnly(presets.components[name].rules2);\n      }\n    });\n  }\n  return this;\n};\n\n\n/** chainable\n * MarkdownIt.enable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to enable\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable list or rules. It will automatically find appropriate components,\n * containing rules with given names. If rule not found, and `ignoreInvalid`\n * not set - throws exception.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n *             .enable(['sub', 'sup'])\n *             .disable('smartquotes');\n * ```\n **/\nMarkdownIt.prototype.enable = function (list, ignoreInvalid) {\n  var result = [];\n\n  if (!Array.isArray(list)) { list = [ list ]; }\n\n  [ 'core', 'block', 'inline' ].forEach(function (chain) {\n    result = result.concat(this[chain].ruler.enable(list, true));\n  }, this);\n\n  result = result.concat(this.inline.ruler2.enable(list, true));\n\n  var missed = list.filter(function (name) { return result.indexOf(name) < 0; });\n\n  if (missed.length && !ignoreInvalid) {\n    throw new Error('MarkdownIt. Failed to enable unknown rule(s): ' + missed);\n  }\n\n  return this;\n};\n\n\n/** chainable\n * MarkdownIt.disable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * The same as [[MarkdownIt.enable]], but turn specified rules off.\n **/\nMarkdownIt.prototype.disable = function (list, ignoreInvalid) {\n  var result = [];\n\n  if (!Array.isArray(list)) { list = [ list ]; }\n\n  [ 'core', 'block', 'inline' ].forEach(function (chain) {\n    result = result.concat(this[chain].ruler.disable(list, true));\n  }, this);\n\n  result = result.concat(this.inline.ruler2.disable(list, true));\n\n  var missed = list.filter(function (name) { return result.indexOf(name) < 0; });\n\n  if (missed.length && !ignoreInvalid) {\n    throw new Error('MarkdownIt. Failed to disable unknown rule(s): ' + missed);\n  }\n  return this;\n};\n\n\n/** chainable\n * MarkdownIt.use(plugin, params)\n *\n * Load specified plugin with given params into current parser instance.\n * It's just a sugar to call `plugin(md, params)` with curring.\n *\n * ##### Example\n *\n * ```javascript\n * var iterator = require('markdown-it-for-inline');\n * var md = require('markdown-it')()\n *             .use(iterator, 'foo_replace', 'text', function (tokens, idx) {\n *               tokens[idx].content = tokens[idx].content.replace(/foo/g, 'bar');\n *             });\n * ```\n **/\nMarkdownIt.prototype.use = function (plugin /*, params, ... */) {\n  var args = [ this ].concat(Array.prototype.slice.call(arguments, 1));\n  plugin.apply(plugin, args);\n  return this;\n};\n\n\n/** internal\n * MarkdownIt.parse(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Parse input string and return list of block tokens (special token type\n * \"inline\" will contain list of inline tokens). You should not call this\n * method directly, until you write custom renderer (for example, to produce\n * AST).\n *\n * `env` is used to pass data between \"distributed\" rules and return additional\n * metadata like reference info, needed for the renderer. It also can be used to\n * inject data in specific cases. Usually, you will be ok to pass `{}`,\n * and then pass updated object to renderer.\n **/\nMarkdownIt.prototype.parse = function (src, env) {\n  if (typeof src !== 'string') {\n    throw new Error('Input data should be a String');\n  }\n\n  var state = new this.core.State(src, this, env);\n\n  this.core.process(state);\n\n  return state.tokens;\n};\n\n\n/**\n * MarkdownIt.render(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Render markdown string into html. It does all magic for you :).\n *\n * `env` can be used to inject additional metadata (`{}` by default).\n * But you will not need it with high probability. See also comment\n * in [[MarkdownIt.parse]].\n **/\nMarkdownIt.prototype.render = function (src, env) {\n  env = env || {};\n\n  return this.renderer.render(this.parse(src, env), this.options, env);\n};\n\n\n/** internal\n * MarkdownIt.parseInline(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * The same as [[MarkdownIt.parse]] but skip all block rules. It returns the\n * block tokens list with the single `inline` element, containing parsed inline\n * tokens in `children` property. Also updates `env` object.\n **/\nMarkdownIt.prototype.parseInline = function (src, env) {\n  var state = new this.core.State(src, this, env);\n\n  state.inlineMode = true;\n  this.core.process(state);\n\n  return state.tokens;\n};\n\n\n/**\n * MarkdownIt.renderInline(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Similar to [[MarkdownIt.render]] but for single paragraph content. Result\n * will NOT be wrapped into `<p>` tags.\n **/\nMarkdownIt.prototype.renderInline = function (src, env) {\n  env = env || {};\n\n  return this.renderer.render(this.parseInline(src, env), this.options, env);\n};\n\n\nmodule.exports = MarkdownIt;\n","'use strict';\n\n\nmodule.exports = require('./lib/');\n","import markdownit from 'markdown-it';\n\nconst markdown = markdownit({\n    html: false,\n    linkify: true,\n    typographer: true,\n    breaks: true,\n});\n\n// Disable mail linkification\nmarkdown.linkify.add('mailto:', null)\n\nmarkdown.use(function(md) {\n  md.renderer.rules.link_open = function(tokens, idx, options, _env, self) {\n    const link_open = tokens[idx];\n    link_open.attrs?.push(['rel','ugc nofollow']);\n    return self.renderToken(tokens, idx, options);\n  };\n  // Render ~~<text>~~ as del tag\n  md.renderer.rules.s_open = function(tokens, idx, options, _env, self) {\n    const s_open = tokens[idx];\n    s_open.type = 'del_open';\n    s_open.tag = 'del';\n    return self.renderToken(tokens, idx, options);\n  };\n  md.renderer.rules.s_close = function(tokens, idx, options, _env, self) {\n    const s_close = tokens[idx];\n    s_close.type = 'del_close';\n    s_close.tag = 'del';\n    return self.renderToken(tokens, idx, options);\n  };\n});\n\nexport default function renderMarkdown(text: string): string {\n  return markdown.render(text).trim();\n}\n","import RemoveMarkdown from \"remove-markdown\";\nimport { useI18n } from \"vue-i18n\";\nimport { dayjs } from \"./i18n\";\nimport markdown from \"./markdown\";\nimport { toggleAccordion } from \"./toggleAccordion\";\n\nexport const filesize = (val: number) => {\n  const { t } = useI18n();\n  const suffix = t('B')\n  const units = ['', 'K', 'M', 'G', 'T', 'P', 'E', 'Z']\n  for (let unit of units) {\n      if (Math.abs(val) < 1024.0) {\n        return `${val.toFixed(1)}${unit}${suffix}`\n      }\n      val /= 1024.0\n  }\n  return `${val.toFixed(1)}Y${suffix}`\n}\n\n/**\n * Format date based on locale.\n */\nexport const formatDate = (date: Date | string, format = 'LL') => {\n  return dayjs(date).format(format);\n}\n\n/**\n * Format date as relative from now.\n * It displays \"today\" or dayjs.fromNow content, based on date.\n */\nexport const formatFromNow = (date: Date | string) => {\n  const { t } = useI18n();\n  const today = dayjs().startOf(\"date\");\n  const dateWithoutTime = dayjs(date).startOf(\"date\");\n  if(today.isSame(dateWithoutTime)) {\n    return t(\"today\");\n  }\n  return dayjs(date).fromNow();\n}\n\n/**\n * Format date relative form now if date is less than a month ago.\n * Otherwise, show a formatted date.\n */\nexport const formatRelativeIfRecentDate = (date: Date | string) => {\n  const { t } = useI18n();\n  const today = dayjs().startOf(\"date\");\n  const dateWithoutTime = dayjs(date).startOf(\"date\");\n  const DONT_ROUND_DIFF = true;\n  if(today.diff(dateWithoutTime, 'month', DONT_ROUND_DIFF) > 1) {\n    return t(\"on {date}\", {date: formatDate(date)});\n  }\n  return formatFromNow(date);\n}\n\nexport const truncate = (val: string, length = 300) => {\n  if (typeof val !== \"string\") return;\n  return val.length > length ? val.slice(0, length) + \"…\" : val; //TODO, maybe® : properly truncate words\n};\n\nexport const excerpt = (val: string, length = 300) => {\n  if (typeof val !== \"string\") return;\n  return truncate(RemoveMarkdown(val), length);\n};\n\nexport { markdown, toggleAccordion };\n","import { config } from \"..\";\n\nfunction constructUrl(baseUrl: string, path: string): string {\n  const url = new URL(baseUrl);\n  url.pathname = `${url.pathname}${path}`\n  return url.toString();\n}\n\nexport default function useOEmbed(type: string, id: string): string {\n  const staticUrl = constructUrl(config.static_root, 'oembed.js');\n  return `<div data-udata-${type}=\"${id}\"></div>` + '<' + `script data-udata=\"${config.site_root}\" src=\"${staticUrl}\" async defer><` + '/script>';\n}\n","<template>\n    <div class=\"fr-py-3w fr-mb-3w border-bottom border-default-grey\">\n        <h2 class=\"subtitle subtitle--uppercase\">{{ $t('Informations') }}</h2>\n        <div class=\"fr-text--sm fr-m-0\">\n            <div class=\"fr-grid-row fr-grid-row--gutters\">\n                <div class=\"fr-col-12 fr-col-sm-6 fr-col-md-4\">\n                    <h3 class=\"subtitle fr-mb-1v\">{{ $t('License') }}</h3>\n                    <p class=\"fr-text--sm fr-m-0 text-mention-grey \">\n                        <code class=\"bg-alt-grey fr-px-1v text-grey-380\">\n                            <a :href=\"props.license.url\">\n                            {{ props.license.title }}\n                            </a>\n                        </code>\n                    </p>\n                </div>\n                <div class=\"fr-col-12 fr-col-sm-6 fr-col-md-4\">\n                    <h3 class=\"subtitle fr-mb-1v\">ID</h3>\n                    <p class=\"fr-text--sm fr-m-0 text-mention-grey \">{{ props.dataset.id }}</p>\n                </div>\n            </div>\n        </div>\n    </div>\n    <div class=\"fr-pb-3w fr-mb-3w border-bottom border-default-grey\">\n        <h2 class=\"subtitle subtitle--uppercase\">{{ $t('Temporality') }}</h2>\n        <div class=\"fr-text--sm fr-m-0\">\n            <div class=\"fr-grid-row fr-grid-row--gutters\">\n                <div class=\"fr-col-12 fr-col-sm-6 fr-col-md-4\">\n                    <h3 class=\"subtitle fr-mb-1v\">{{ $t('Creation') }}</h3>\n                    <p class=\"fr-text--sm fr-m-0 text-mention-grey \">{{ formatDate(props.dataset.created_at) }}</p>\n                </div>\n                <div class=\"fr-col-12 fr-col-sm-6 fr-col-md-4\">\n                    <h3 class=\"subtitle fr-mb-1v\">{{ $t('Frequency') }}</h3>\n                    <p class=\"fr-text--sm fr-m-0 text-mention-grey \">{{ getFrequencies(frequencies, props.dataset.frequency) }}</p>\n                </div>\n            </div>\n            <div class=\"fr-grid-row fr-grid-row--gutters\">\n                <div class=\"fr-col-12 fr-col-sm-6 fr-col-md-4\">\n                    <h3 class=\"subtitle fr-mb-1v\">{{ $t('Last update') }}</h3>\n                    <p class=\"fr-text--sm fr-m-0 text-mention-grey \">{{ formatDate(props.dataset.last_update) }}</p>\n                </div>\n            </div>\n        </div>\n    </div>\n    <div class=\"fr-pb-3w fr-mb-3w border-bottom border-default-grey\">\n        <h2 class=\"subtitle subtitle--uppercase\">{{ $t('Spatial coverage') }}</h2>\n        <div class=\"fr-text--sm fr-m-0\">\n            <div class=\"fr-grid-row fr-grid-row--gutters\">\n                <div class=\"fr-col-12 fr-col-sm-6 fr-col-md-4\">\n                    <h3 class=\"subtitle fr-mb-1v\">{{ $t('Territorial coverage') }}</h3>\n                    <p class=\"fr-text--sm fr-m-0 text-mention-grey \">France</p>\n                </div>\n                <div v-if=\"props.dataset.spatial?.granularity\" class=\"fr-col-12 fr-col-sm-6 fr-col-md-4\">\n                    <h3 class=\"subtitle fr-mb-1v\">{{ $t('Granularity of territorial coverage') }}</h3>\n                    <p class=\"fr-text--sm fr-m-0 text-mention-grey \">{{ getGranularity(granularities, props.dataset.spatial?.granularity) }}</p>\n                </div>\n            </div>\n        </div>\n    </div>\n    <div class=\"fr-pb-3w fr-mb-3w border-bottom border-default-grey\">\n        <h2 class=\"subtitle subtitle--uppercase\">{{ $t('Actions') }}</h2>\n        <div class=\"fr-text--sm fr-m-0\">\n            <h3 class=\"subtitle fr-mb-1v\">{{ $t('Integrate on your website') }}</h3>\n            <div class=\"embed-wrapper\">\n                <textarea ref=\"textAreaRef\" readonly=\"true\" rows=\"1\" v-model=\"embedText\" @click=\"selectContent\"></textarea>\n                <CopyButton class=\"fr-my-1w fr-mr-1w\" :text=\"embedText\"/>\n            </div>\n        </div>\n    </div>\n    <article v-if=\"hasExtras()\">\n        <header\n            class=\"fr-grid-row fr-grid-row--middle fr-pb-3w fr-mb-3w border-bottom border-default-grey\"\n            :class=\"{'border-bottom': !extrasExpanded}\"\n        >\n            <div class=\"fr-col\">\n                <h2 class=\"subtitle subtitle--uppercase fr-m-0\">{{ $t('Extras') }}</h2>\n            </div>\n            <div class=\"fr-col-auto\">\n                <button\n                    @click=\"extrasExpand\"\n                    role=\"button\"\n                    :aria-expanded=\"extrasExpanded\"\n                    class=\"fr-btn fr-btn--tertiary-no-outline fr-btn--icon-left fr-btn--secondary-grey-500\"\n                    :class=\"{'fr-icon-arrow-up-s-line': extrasExpanded, 'fr-icon-arrow-down-s-line': !extrasExpanded}\"\n                >\n                    <template v-if=\"extrasExpanded\">\n                        {{ $t('Close details') }}\n                    </template>\n                    <template v-else>\n                        {{ $t('See extras') }}\n                    </template>\n                </button>\n            </div>\n        </header>\n        <div\n            class=\"accordion-content\"\n            ref=\"extrasRef\"\n        >\n            <div class=\"fr-pb-3w fr-mb-3w border-bottom border-default-grey\">\n                <div class=\"fr-grid-row fr-grid-row--gutters fr-text--sm fr-m-0\">\n                    <div v-for=\"(value, key) in props.dataset?.extras\" :key=\"key\" class=\"fr-col-12 fr-col-sm-6 fr-col-md-4\">\n                        <h3 class=\"subtitle fr-mb-1v\">{{ key }}</h3>\n                        <p class=\"fr-text--sm fr-m-0 text-mention-grey \">{{ value }}</p>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </article>\n    <article v-if=\"props.dataset?.harvest\">\n        <header\n            class=\"fr-grid-row fr-grid-row--middle fr-pb-3w fr-mb-3w border-bottom border-default-grey\"\n            :class=\"{'border-bottom': !harvestExpanded}\"\n        >\n            <div class=\"fr-col\">\n                <h2 class=\"subtitle subtitle--uppercase fr-m-0\">{{ $t('Harvest') }}</h2>\n            </div>\n            <div class=\"fr-col-auto\">\n                <button\n                    @click=\"expand\"\n                    role=\"button\"\n                    :aria-expanded=\"harvestExpanded\"\n                    class=\"fr-btn fr-btn--tertiary-no-outline fr-btn--icon-left fr-btn--secondary-grey-500\"\n                    :class=\"{'fr-icon-arrow-up-s-line': harvestExpanded, 'fr-icon-arrow-down-s-line': !harvestExpanded}\"\n                >\n                    <template v-if=\"harvestExpanded\">\n                        {{ $t('Close details') }}\n                    </template>\n                    <template v-else>\n                        {{ $t('See harvest') }}\n                    </template>\n                </button>\n            </div>\n        </header>\n        <div\n            class=\"accordion-content\"\n            ref=\"harvestRef\"\n        >\n            <div class=\"fr-pb-3w fr-mb-3w border-bottom border-default-grey\">\n                <div class=\"fr-grid-row fr-grid-row--gutters fr-text--sm fr-m-0\">\n                    <div v-for=\"(value, key) in props.dataset?.harvest\" :key=\"key\" class=\"fr-col-12 fr-col-sm-6 fr-col-md-4\">\n                        <h3 class=\"subtitle fr-mb-1v\">{{ key }}</h3>\n                        <p class=\"fr-text--sm fr-m-0 text-mention-grey \">{{ value }}</p>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </article>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, onMounted } from 'vue';\nimport type { Dataset, DatasetV2 } from \"../../types/datasets\";\nimport CopyButton from \"../CopyButton/CopyButton.vue\";\nimport { toggleAccordion } from \"../../helpers/toggleAccordion\";\nimport { formatDate } from '../../helpers/index';\nimport { getGranularity, fetchGranularities } from '../../api/granularity';\nimport { getFrequencies, fetchFrequencies } from '../../api/frequency';\nimport useOEmbed from '../../composables/useEmbed'\nimport type { Frequencies } from '../../types/frequency';\nimport type { Granularities } from '../../types/granularity';\nimport type { License } from '../../types/licenses';\n\nconst props = defineProps<{\n    dataset: DatasetV2 | Dataset,\n    license: License\n}>();\nconst embedText = useOEmbed('dataset', props.dataset.id);\nconst extrasExpanded = ref(false);\nconst extrasRef = ref(null);\nconst granularities = ref<Granularities>([]);\nconst frequencies = ref<Frequencies>([]);\nconst harvestExpanded = ref(false);\nconst harvestRef = ref(null);\nconst textAreaRef = ref<HTMLTextAreaElement | null>(null);\n\nconst selectContent = () => {\n  if (textAreaRef.value) {\n    textAreaRef.value.select();\n  }\n};\n\nconst expand = () => {\n  harvestExpanded.value = !harvestExpanded.value;\n  if(harvestRef.value) {\n    toggleAccordion(harvestRef.value, harvestExpanded.value);\n  }\n}\n\nconst extrasExpand = () => {\n  extrasExpanded.value = !extrasExpanded.value;\n  if(extrasRef.value) {\n    toggleAccordion(extrasRef.value, extrasExpanded.value);\n  }\n}\n\nconst hasExtras = () => {\n    return Object.keys(props.dataset.extras).length > 0;\n}\n\nonMounted(() => {\n  fetchGranularities().then(foundGranularities => granularities.value = foundGranularities);\n  fetchFrequencies().then(foundFrequencies => frequencies.value = foundFrequencies);\n });\n</script>\n","import { ref, onMounted, toValue, type MaybeRefOrGetter } from 'vue';\nimport { Organization } from '../../types/organizations';\n\nexport const PUBLIC_SERVICE = \"public-service\";\n\nexport const CERTIFIED = \"certified\";\n\nexport default function useOrganizationCertified(organizationRef: MaybeRefOrGetter<Organization>) {\n  const organizationCertified = ref(false);\n  const isOrganizationCertified = () => {\n    const organization = toValue(organizationRef);\n    if(!organization) {\n      organizationCertified.value = false;\n      return;\n    }\n    organizationCertified.value = organization.badges.some(badge => badge.kind === PUBLIC_SERVICE) &&\n      organization.badges.some(badge => badge.kind === CERTIFIED);\n  };\n  onMounted(isOrganizationCertified);\n\n  return {\n    organizationCertified,\n  }\n}\n","<template>\n  {{ organization.name }}\n  <span\n    v-if=\"organizationCertified\"\n    class=\"fr-icon-success-line fr-icon--sm text-blue-400\"\n    :title=\"t('The identity of this public service is certified by {certifier}', { certifier: config.title })\"\n    aria-hidden=\"true\"\n  >\n  </span>\n</template>\n\n<script setup lang=\"ts\">\nimport { useI18n } from \"vue-i18n\";\nimport { config } from \"../../config\";\nimport useOrganizationCertified from \"../../composables/organizations/useOrganizationCertified\";\nimport { Organization } from \"../../types/organizations\";\n\nconst { t } = useI18n();\nconst props = defineProps<{organization: Organization}>();\n\nconst { organizationCertified } = useOrganizationCertified(props.organization);\n</script>\n","import { type MaybeRefOrGetter, ref, toValue } from 'vue';\nimport type { Owned } from \"../../types/owned\";\n\nexport default function useOwnerName(owned: MaybeRefOrGetter<Owned>) {\n  owned = toValue(owned);\n  const owner = ref('');\n  if(!owned) {\n    return owner;\n  }\n  if(owned.organization) {\n    owner.value = owned.organization.name;\n  } else if(owned.owner) {\n    owner.value = owned.owner.first_name + \" \" + owned.owner.last_name;\n  }\n  return owner;\n}\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB2aWV3Qm94PSIwIDAgMTEgMTQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoyOyI+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwLjUiIGhlaWdodD0iMTQiIHN0eWxlPSJmaWxsOm5vbmU7Ii8+PHBhdGggZD0iTTQuMDc0LDkuNTdsMCwtMC4wMjdsLTAuOTAyLC0wLjc5M2wwLjkwMiwtMC43NjZjMC4xMSwtMC4xMDkgMC4xMSwtMC4yNDYgMC4wMjgsLTAuMzU1bC0wLjQ5MywtMC41MmMtMC4wODIsLTAuMDgyIC0wLjI0NiwtMC4wODIgLTAuMzI4LDBsLTEuNTg2LDEuNDc3Yy0wLjA4MiwwLjEwOSAtMC4wODIsMC4yNDYgMCwwLjM1NWwxLjU4NiwxLjQ3N2MwLjA1NSwwLjAyNyAwLjExLDAuMDU1IDAuMTY0LDAuMDU1YzAuMDU1LC0wIDAuMTM3LC0wLjAyOCAwLjE2NCwtMC4wNTVsMC40OTMsLTAuNTJjMC4wODIsLTAuMTA5IDAuMDgyLC0wLjI0NiAtMC4wMjgsLTAuMzI4Wm02LjAxNiwtNi44OWwtMi4yNywtMi4yOTdjLTAuMjQ2LC0wLjI0NiAtMC42MDEsLTAuMzgzIC0wLjkyOSwtMC4zODNsLTUuNTc5LC0wYy0wLjczOCwtMCAtMS4zMTIsMC42MDIgLTEuMzEyLDEuMzEybC0wLDExLjM3NWMtMCwwLjczOSAwLjU3NCwxLjMxMyAxLjMxMiwxLjMxM2w3Ljg3NiwtMGMwLjcxLC0wIDEuMzEyLC0wLjU3NCAxLjMxMiwtMS4zMTNsMCwtOS4wNzhjMCwtMC4zMjggLTAuMTY0LC0wLjY4MyAtMC40MSwtMC45MjlabS0zLjA5LC0xLjI1OGwyLjA3OCwyLjA3OGwtMi4wNzgsLTBsMCwtMi4wNzhabTIuMTg4LDExLjI2NWwtNy44NzYsMGwwLC0xMS4zNzVsNC4zNzYsMGwtMC4wMDEsMi44NDRjMCwwLjM4MyAwLjI3NCwwLjY1NiAwLjY1NywwLjY1NmwyLjg0MywwbDAsNy44NzVabS0zLjQ3MiwtNi44MzVjLTAuMTM3LC0wLjAyOCAtMC4yNDYsMC4wNTQgLTAuMzAxLDAuMTY0bC0xLjQ3Nyw1LjE2OGMtMC4wNTQsMC4xMDkgMC4wMjgsMC4yNDYgMC4xNjUsMC4yNzNsMC42NTYsMC4yMTljMC4xMzYsMC4wMjcgMC4yNzMsLTAuMDU1IDAuMzAxLC0wLjE2NGwxLjUwMywtNS4xNjhjMC4wMjgsLTAuMTEgLTAuMDU0LC0wLjI0NiAtMC4xNjQsLTAuMzAxbC0wLjY4MywtMC4xOTFabTAuNjgzLDIuMTA1bDAsMC4wMjdsMC45MDMsMC43NjZsLTAuOTAzLDAuNzkzYy0wLjEwOSwwLjEwOSAtMC4xMDksMC4yNDYgLTAuMDI3LDAuMzU1bDAuNDkyLDAuNTJjMC4wODIsMC4wODIgMC4yNDYsMC4wODIgMC4zMjgsLTBsMS41ODYsLTEuNDc3YzAuMDgyLC0wLjEwOSAwLjA4MiwtMC4yNzMgMCwtMC4zNTVsLTEuNTg2LC0xLjQ3N2MtMC4wODIsLTAuMDgyIC0wLjI0NiwtMC4wODIgLTAuMzI4LDBsLTAuNDkyLDAuNTJjLTAuMDgyLDAuMDgyIC0wLjA4MiwwLjI0NiAwLjAyNywwLjMyOFoiIHN0eWxlPSJmaWxsOiMzYTNhM2E7ZmlsbC1ydWxlOm5vbnplcm87Ii8+PC9zdmc+\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB2aWV3Qm94PSIwIDAgMTQgMTMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoyOyI+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjE0IiBoZWlnaHQ9IjEyLjI1IiBzdHlsZT0iZmlsbDpub25lOyIvPjxwYXRoIGQ9Ik0xMi42ODgsMGwtMTEuMzc2LDBjLTAuNzM4LDAgLTEuMzEyLDAuNjAyIC0xLjMxMiwxLjMxM2wtMCwyLjE4N2MtMCwwLjI0NiAwLjE5MSwwLjQzOCAwLjQzNywwLjQzOGwwLjQzOCwtMC4wMDFsLTAsNy40MzhjLTAsMC40OTIgMC4zODMsMC44NzUgMC44NzUsMC44NzVsMTAuNSwwYzAuNDY1LDAgMC44NzUsLTAuMzgzIDAuODc1LC0wLjg3NWwtMCwtNy40MzhsMC40MzcsMGMwLjIxOSwwIDAuNDM4LC0wLjE5MSAwLjQzOCwtMC40MzdsLTAsLTIuMTg4Yy0wLC0wLjcxIC0wLjYwMiwtMS4zMTIgLTEuMzEzLC0xLjMxMlptLTAuODc1LDEwLjkzOGwtOS42MjUsLTAuMDAxbDAsLTdsOS42MjUsMGwwLDdabTAuODc1LC04LjMxMmwtMTEuMzc1LC0wbDAsLTEuMzEzbDExLjM3NSwwbDAsMS4zMTNabS03LjEwOSwzLjkzN2wyLjg0NCwwYzAuMTY0LDAgMC4zMjgsLTAuMTM2IDAuMzI4LC0wLjMyOGwwLC0wLjY1NmMwLC0wLjE2NCAtMC4xNjQsLTAuMzI4IC0wLjMyOCwtMC4zMjhsLTIuODQ0LC0wYy0wLjE5MSwtMCAtMC4zMjgsMC4xNjQgLTAuMzI4LDAuMzI4bC0wLDAuNjU2Yy0wLDAuMTkyIDAuMTM3LDAuMzI4IDAuMzI4LDAuMzI4WiIgc3R5bGU9ImZpbGw6IzNhM2EzYTtmaWxsLXJ1bGU6bm9uemVybzsiLz48L3N2Zz4=\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB2aWV3Qm94PSIwIDAgMTMgMTQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoyOyI+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEyLjI1IiBoZWlnaHQ9IjE0IiBzdHlsZT0iZmlsbDpub25lOyIvPjxwYXRoIGQ9Ik0zLjUsNC4xNTZjMCwwLjEzNyAwLjA4MiwwLjIxOSAwLjIxOSwwLjIxOWw1LjY4NywwYzAuMTEsMCAwLjIxOSwtMC4wODIgMC4yMTksLTAuMjE5bDAsLTAuODc1YzAsLTAuMTA5IC0wLjEwOSwtMC4yMTggLTAuMjE5LC0wLjIxOGwtNS42ODcsLTBjLTAuMTM3LC0wIC0wLjIxOSwwLjEwOSAtMC4yMTksMC4yMThsLTAsMC44NzVabTAuMjE5LDIuNDA3bDUuNjg3LC0wYzAuMTEsLTAgMC4yMTksLTAuMDgzIDAuMjE5LC0wLjIxOWwwLC0wLjg3NWMwLC0wLjExIC0wLjEwOSwtMC4yMTkgLTAuMjE5LC0wLjIxOWwtNS42ODcsMGMtMC4xMzcsMCAtMC4yMTksMC4xMDkgLTAuMjE5LDAuMjE5bC0wLDAuODc1Yy0wLDAuMTM2IDAuMDgyLDAuMjE5IDAuMjE5LDAuMjE5Wm04LjE3NSw0LjM3NWMwLjE5MiwtMC4wMjggMC4zNTYsLTAuMjE5IDAuMzU2LC0wLjQzOGwtMCwtMTAuMDYyYy0wLC0wLjIxOSAtMC4yMTksLTAuNDM4IC0wLjQzOCwtMC40MzhsLTkuNjI1LDBjLTEuMjMsMCAtMi4xODcsMC45ODQgLTIuMTg3LDIuMTg4bC0wLDkuNjI1Yy0wLDEuMjMgMC45NTcsMi4xODcgMi4xODcsMi4xODdsOS42MjUsMGMwLjIxOSwwIDAuNDM4LC0wLjE5MSAwLjQzOCwtMC40MzdsLTAsLTAuNDM4Yy0wLC0wLjE5MSAtMC4xNjQsLTAuMzgzIC0wLjM1NiwtMC40MWMtMC4xMzYsLTAuMzU2IC0wLjEzNiwtMS40MjIgMCwtMS43NzdabS0xLjEyMSwtMGMtMC4wODIsMC40OTIgLTAuMDgyLDEuMjg1IDAsMS43NWwtOC41ODYsLTBjLTAuNDkyLC0wIC0wLjg3NSwtMC4zODMgLTAuODc1LC0wLjg3NWMwLC0wLjQ2NSAwLjM4MywtMC44NzUgMC44NzUsLTAuODc1bDguNTg2LC0wWm0wLjE2NCwtOS42MjVsMCw4LjMxMmwtOC43NSwwYy0wLjMyOCwwIC0wLjYyOCwwLjA4MiAtMC44NzUsMC4xOTFsMCwtNy42MjhjMCwtMC40NjUgMC4zODMsLTAuODc1IDAuODc1LC0wLjg3NWw4Ljc1LC0wWiIgc3R5bGU9ImZpbGw6IzNhM2EzYTtmaWxsLXJ1bGU6bm9uemVybzsiLz48L3N2Zz4=\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB2aWV3Qm94PSIwIDAgMTEgMTQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoyOyI+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwLjUiIGhlaWdodD0iMTQiIHN0eWxlPSJmaWxsOm5vbmU7Ii8+PHBhdGggZD0iTTEwLjA5LDIuNjhsLTIuMjcsLTIuMjk3Yy0wLjI0NiwtMC4yNDYgLTAuNjAxLC0wLjM4MyAtMC45MjksLTAuMzgzbC01LjU3OSwwYy0wLjczOCwwIC0xLjMxMiwwLjYwMiAtMS4zMTIsMS4zMTNsLTAsMTEuMzc1Yy0wLDAuNzM4IDAuNTc0LDEuMzEyIDEuMzEyLDEuMzEybDcuODc2LDBjMC43MSwwIDEuMzEyLC0wLjU3NCAxLjMxMiwtMS4zMTNsMCwtOS4wNzhjMCwtMC4zMjggLTAuMTY0LC0wLjY4MyAtMC40MSwtMC45MjlabS0xLjAxMiwwLjgybC0yLjA3OCwwbDAsLTIuMDc4bDIuMDc4LDIuMDc4Wm0tNy43NjUsOS4xODhsLTAsLTExLjM3Nmw0LjM3NSwwbC0wLDIuODQ0Yy0wLDAuMzgzIDAuMjczLDAuNjU2IDAuNjU2LDAuNjU2bDIuODQ0LDBsLTAsNy44NzZsLTcuODc1LC0wLjAwMVoiIHN0eWxlPSJmaWxsOiMzYTNhM2E7ZmlsbC1ydWxlOm5vbnplcm87Ii8+PC9zdmc+\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB2aWV3Qm94PSIwIDAgMTQgMTQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoyOyI+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEzLjk4NiIgaGVpZ2h0PSIxMy45ODYiIHN0eWxlPSJmaWxsOm5vbmU7Ii8+PHBhdGggZD0iTTguNTkzLDUuMzk0Yy0wLjMwMSwtMC4zMDEgLTAuNjI5LC0wLjUyIC0wLjk4NSwtMC43MTFjLTAuMTM2LC0wLjA1NSAtMC4yNzMsLTAuMDI4IC0wLjM4MiwwLjA4MmwtMC4xMSwwLjEwOWMtMC4yNDYsMC4yMTkgLTAuMzgzLDAuNTIgLTAuNDEsMC44MmMtMC4wMjcsMC4xMzcgMC4wNTUsMC4yNzQgMC4xNjQsMC4zNTZjMC4xOTIsMC4wODIgMC40OTIsMC4yNzMgMC42MjksMC40MzdjMC45MDIsMC45MDMgMC45MDIsMi4zNTIgMCwzLjI1NGwtMi4wNTEsMi4wNTFjLTAuOTAyLDAuOTAyIC0yLjM1MSwwLjkwMiAtMy4yNTQsMGMtMC45MDIsLTAuOTAyIC0wLjkwMiwtMi4zNTIgMCwtMy4yNTRsMS4yNTgsLTEuMjU4YzAuMDgyLC0wLjA4MiAwLjExLC0wLjE5MSAwLjA4MiwtMC4zYy0wLjA1NCwtMC4yNzQgLTAuMTA5LC0wLjczOSAtMC4xMzcsLTEuMDRjMCwtMC4yNzMgLTAuMzU1LC0wLjQxIC0wLjU0NiwtMC4yMThjLTAuMzI5LDAuMzI4IC0wLjg0OCwwLjg0NyAtMS43MjMsMS43MjJjLTEuNTA0LDEuNTA0IC0xLjUwNCwzLjkzOCAtMCw1LjQxNGMxLjQ3NywxLjUwNCAzLjkxLDEuNTA0IDUuNDE0LDBjMi4yNDIsLTIuMjQyIDIuMTMzLC0yLjEzMiAyLjI5NywtMi4zNTFjMS4yMywtMS40NzcgMS4xNDgsLTMuNzE5IC0wLjI0NiwtNS4xMTNabTQuMjY1LC00LjI2NmMtMS40NzYsLTEuNTA0IC0zLjkxLC0xLjUwNCAtNS40MTQsLTBjLTIuMjQyLDIuMjQyIC0yLjEzMiwyLjEzMyAtMi4yOTcsMi4zNTJjLTEuMjMsMS40NzYgLTEuMTQ4LDMuNzE4IDAuMjQ3LDUuMTEzYzAuMywwLjMwMSAwLjYyOCwwLjUxOSAwLjk4NCwwLjcxMWMwLjEzNywwLjA1NCAwLjI3MywwLjAyNyAwLjM4MywtMC4wODJsMC4xMDksLTAuMTFjMC4yNDYsLTAuMjE4IDAuMzgzLC0wLjUxOSAwLjQxLC0wLjgyYzAuMDI4LC0wLjEzNyAtMC4wNTQsLTAuMjczIC0wLjE2NCwtMC4zNTVjLTAuMTkxLC0wLjA4MiAtMC40OTIsLTAuMjc0IC0wLjYyOSwtMC40MzhjLTAuOTAyLC0wLjkwMiAtMC45MDIsLTIuMzUxIDAsLTMuMjU0bDIuMDUxLC0yLjA1MWMwLjkwMiwtMC45MDIgMi4zNTIsLTAuOTAyIDMuMjU0LDBjMC45MDIsMC45MDMgMC45MDIsMi4zNTIgMCwzLjI1NGwtMS4yNTgsMS4yNThjLTAuMDgyLDAuMDgyIC0wLjEwOSwwLjE5MiAtMC4wODIsMC4zMDFjMC4wNTUsMC4yNzMgMC4xMSwwLjczOCAwLjEzNywxLjAzOWMtMCwwLjI3MyAwLjM1NSwwLjQxIDAuNTQ3LDAuMjE5YzAuMzI4LC0wLjMyOCAwLjg0NywtMC44NDggMS43MjIsLTEuNzIzYzEuNTA0LC0xLjUwNCAxLjUwNCwtMy45MzcgMCwtNS40MTRaIiBzdHlsZT0iZmlsbDojM2EzYTNhO2ZpbGwtcnVsZTpub256ZXJvOyIvPjwvc3ZnPg==\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB2aWV3Qm94PSIwIDAgMTQgMTMiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoyOyI+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjE0IiBoZWlnaHQ9IjEyLjI1IiBzdHlsZT0iZmlsbDpub25lOyIvPjxwYXRoIGQ9Ik0xMi42ODgsMGwtMTEuMzc2LDBjLTAuNzM4LDAgLTEuMzEyLDAuNjAyIC0xLjMxMiwxLjMxM2wtMCw5LjYyNWMtMCwwLjczOCAwLjU3NCwxLjMxMiAxLjMxMiwxLjMxMmwxMS4zNzUsMGMwLjcxMSwwIDEuMzEzLC0wLjU3NCAxLjMxMywtMS4zMTNsLTAsLTkuNjI1Yy0wLC0wLjcxIC0wLjYwMiwtMS4zMTIgLTEuMzEzLC0xLjMxMlptLTYuMzQzLDEwLjkzOGwtNC44NjcsLTAuMDAxYy0wLjExLDAgLTAuMTY1LC0wLjA1NCAtMC4xNjUsLTAuMTY0bDAsLTMuNTU0bDUuMDMyLC0wbC0wLDMuNzE4Wm0tMCwtNS4wMzFsLTUuMDMyLDBsMCwtMy43MTlsNS4wMzIsMGwtMCwzLjcxOVptNi4xNzksNS4wMzFsLTQuODY3LDBsMCwtMy43MThsNS4wMzEsLTBsMCwzLjU1NGMwLDAuMTEgLTAuMDgyLDAuMTY0IC0wLjE2NCwwLjE2NFptMC4xNjQsLTUuMDMxbC01LjAzMSwwbDAsLTMuNzE5bDUuMDMxLDBsMCwzLjcxOVoiIHN0eWxlPSJmaWxsOiMzYTNhM2E7ZmlsbC1ydWxlOm5vbnplcm87Ii8+PC9zdmc+\"","import code from '../../../../templates/svg/resources/code.svg';\nimport archive from '../../../../templates/svg/resources/archive.svg';\nimport documentation from '../../../../templates/svg/resources/documentation.svg';\nimport file from '../../../../templates/svg/resources/file.svg';\nimport link from '../../../../templates/svg/resources/link.svg';\nimport table from '../../../../templates/svg/resources/table.svg';\nimport { type MaybeRefOrGetter, computed, toValue } from 'vue';\nimport type { Resource } from '../../types/resources';\n\nexport default function useResourceImage(resource: MaybeRefOrGetter<Resource>) {\n  const url = computed(() => {\n    const resourcValue = toValue(resource);\n    switch (resourcValue.format?.trim()?.toLowerCase()) {\n      case 'txt':\n      case 'pdf':\n      case 'rtf':\n      case 'odt':\n      case 'doc':\n      case 'docx':\n      case 'epub':\n        return documentation;\n      case 'json':\n      case 'sql':\n      case 'xml':\n      case 'xsd':\n      case 'shp':\n      case 'kml':\n      case 'kmz':\n      case 'gpx':\n      case 'shx':\n      case 'ovr':\n      case 'geojson':\n      case 'gpkg':\n      case 'grib2':\n      case 'dbf':\n      case 'prj':\n      case 'sqlite':\n      case 'db':\n      case 'sbn':\n      case 'sbx':\n      case 'cpg':\n      case 'lyr':\n      case 'owl':\n      case 'dxf':\n      case 'ics':\n      case 'rdf':\n      case 'ttl':\n      case 'n3':\n        return code;\n      case 'tar':\n      case 'gz':\n      case 'tgz':\n      case 'rar':\n      case 'zip':\n       case '7z':\n       case 'xz':\n       case 'bz2':\n        return archive;\n      case 'url':\n        return link;\n      case 'csv':\n      case 'ods':\n      case 'xls':\n      case 'xlsx':\n        return table;\n      default:\n        return file;\n    }\n  });\n  return {\n    url,\n  }\n}\n","var x = Object.defineProperty;\nvar A = (n, t, e) => t in n ? x(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e;\nvar u = (n, t, e) => (A(n, typeof t != \"symbol\" ? t + \"\" : t, e), e);\nimport { defineComponent as F, ref as h, onBeforeMount as L, onMounted as S, computed as y, onBeforeUnmount as q, openBlock as O, createBlock as C, Transition as G, withCtx as g, withDirectives as H, resolveDynamicComponent as R, normalizeClass as $, createTextVNode as U, toDisplayString as j, vShow as z, h as Q, render as w } from \"vue\";\nconst l = {\n  TOP_RIGHT: \"top-right\",\n  TOP: \"top\",\n  TOP_LEFT: \"top-left\",\n  BOTTOM_RIGHT: \"bottom-right\",\n  BOTTOM: \"bottom\",\n  BOTTOM_LEFT: \"bottom-left\"\n};\nfunction B(n, t, e) {\n  let o = t;\n  switch (n) {\n    case l.TOP:\n    case l.TOP_RIGHT:\n    case l.TOP_LEFT:\n      o = t;\n      break;\n    case l.BOTTOM:\n    case l.BOTTOM_RIGHT:\n    case l.BOTTOM_LEFT:\n      o = e;\n      break;\n  }\n  return o;\n}\nconst V = (n) => {\n  typeof n.remove < \"u\" ? n.remove() : n.parentNode && n.parentNode.removeChild(n);\n};\nclass J {\n  constructor(t, e) {\n    u(this, \"startedAt\");\n    u(this, \"callback\");\n    u(this, \"delay\");\n    u(this, \"timer\");\n    this.startedAt = Date.now(), this.callback = t, this.delay = e, this.timer = setTimeout(t, e);\n  }\n  pause() {\n    this.stop(), this.delay -= Date.now() - this.startedAt;\n  }\n  resume() {\n    this.stop(), this.startedAt = Date.now(), this.timer = setTimeout(this.callback, this.delay);\n  }\n  stop() {\n    clearTimeout(this.timer);\n  }\n}\nfunction K(n) {\n  return { all: n = n || /* @__PURE__ */ new Map(), on: function(t, e) {\n    var o = n.get(t);\n    o ? o.push(e) : n.set(t, [e]);\n  }, off: function(t, e) {\n    var o = n.get(t);\n    o && (e ? o.splice(o.indexOf(e) >>> 0, 1) : n.set(t, []));\n  }, emit: function(t, e) {\n    var o = n.get(t);\n    o && o.slice().map(function(a) {\n      a(e);\n    }), (o = n.get(\"*\")) && o.slice().map(function(a) {\n      a(t, e);\n    });\n  } };\n}\nconst m = K(), W = /* @__PURE__ */ F({\n  __name: \"Toaster\",\n  props: {\n    message: {},\n    type: { default: \"default\" },\n    position: { default: l.BOTTOM_RIGHT },\n    maxToasts: { type: [Number, Boolean], default: !1 },\n    duration: { type: [Number, Boolean], default: 4e3 },\n    dismissible: { type: Boolean, default: !0 },\n    queue: { type: Boolean, default: !1 },\n    props: { type: Boolean, default: !0 },\n    useDefaultCss: { type: Boolean, default: !0 },\n    onClose: { type: Function, default: () => {\n    } },\n    onClick: { type: Function, default: () => {\n    } }\n  },\n  setup(n) {\n    const t = n;\n    let e = null, o = null, a = null, d;\n    const r = h(null), f = h(!1);\n    L(() => {\n      b(), E(), M();\n    }), S(() => {\n      p(), m.on(\"toast-clear\", c);\n    });\n    function b() {\n      e = document.querySelector(\".c-toast-container--top\"), o = document.querySelector(\".c-toast-container--bottom\"), !(e && o) && (e || (e = document.createElement(\"div\"), e.className = \"c-toast-container c-toast-container--top\"), o || (o = document.createElement(\"div\"), o.className = \"c-toast-container c-toast-container--bottom\"));\n    }\n    function E() {\n      const s = t.useDefaultCss ? \"add\" : \"remove\";\n      e && e.classList[s](\"v--default-css\"), o && o.classList[s](\"v--default-css\");\n    }\n    function M() {\n      const s = document.body;\n      e && s.appendChild(e), o && s.appendChild(o);\n    }\n    function P() {\n      if (!t.queue && t.maxToasts === !1)\n        return !1;\n      let s = 0;\n      e && (s = e.childElementCount);\n      let i = 0;\n      return o && (i = o.childElementCount), t.maxToasts !== !1 ? t.maxToasts <= s + i : s > 0 || i > 0;\n    }\n    function p() {\n      if (P()) {\n        d = window.setTimeout(p, 250);\n        return;\n      }\n      const s = D();\n      s && r.value && (s.insertAdjacentElement(\"afterbegin\", r.value), f.value = !0, a = t.duration !== !1 ? new J(c, t.duration) : null);\n    }\n    function k() {\n      t.onClick.apply(null, arguments), t.dismissible && c();\n    }\n    function T(s) {\n      a && (s ? a.pause() : a.resume());\n    }\n    function _() {\n      a && a.stop(), clearTimeout(d);\n    }\n    function c() {\n      _(), f.value = !1, setTimeout(() => {\n        t.onClose.apply(null, arguments), r.value && V(r.value);\n      }, 150);\n    }\n    function D() {\n      return !e || !o ? null : B(t.position, e, o);\n    }\n    const v = y(() => B(\n      t.position,\n      {\n        enter: \"fadeInDown\",\n        leave: \"fadeOut\"\n      },\n      {\n        enter: \"fadeInUp\",\n        leave: \"fadeOut\"\n      }\n    )), N = y(() => t.dismissible ? \"button\" : \"div\");\n    return q(() => {\n      m.off(\"toast-clear\", c);\n    }), (s, i) => (O(), C(G, {\n      \"enter-active-class\": v.value.enter,\n      \"leave-active-class\": v.value.leave,\n      ref_key: \"el\",\n      ref: r\n    }, {\n      default: g(() => [\n        H((O(), C(R(N.value), {\n          class: $([\"c-toast\", `c-toast--${s.type}`, `c-toast--${s.position}`]),\n          onMouseover: i[0] || (i[0] = (I) => T(!0)),\n          onMouseleave: i[1] || (i[1] = (I) => T(!1)),\n          onClick: k,\n          role: \"alert\"\n        }, {\n          default: g(() => [\n            U(j(s.message), 1)\n          ]),\n          _: 1\n        }, 40, [\"class\"])), [\n          [z, f.value]\n        ])\n      ]),\n      _: 1\n    }, 8, [\"enter-active-class\", \"leave-active-class\"]));\n  }\n}), X = () => typeof document < \"u\" ? document.createElement(\"div\") : null;\nfunction Y(n, { props: t } = {}) {\n  let e = X(), o = Q(n, t);\n  return e && w(o, e), { vNode: o, destroy: () => {\n    e && w(null, e), e = null, o = null;\n  }, el: e };\n}\nfunction Z(n = {}) {\n  return {\n    show(t, e = {}) {\n      let o = { message: t, ...e };\n      return Y(W, {\n        props: { ...n, ...o }\n      });\n    },\n    clear() {\n      m.emit(\"toast-clear\");\n    },\n    success(t, e = {}) {\n      return e.type = \"success\", this.show(t, e);\n    },\n    error(t, e = {}) {\n      return e.type = \"error\", this.show(t, e);\n    },\n    info(t, e = {}) {\n      return e.type = \"info\", this.show(t, e);\n    },\n    warning(t, e = {}) {\n      return e.type = \"warning\", this.show(t, e);\n    }\n  };\n}\nconst oe = {\n  install: (n, t = {}) => {\n    let e = Z(t);\n    n.config.globalProperties.$toast = e, n.provide(\"toast\", e);\n  }\n};\nexport {\n  l as Positions,\n  W as Toaster,\n  Z as createToaster,\n  oe as default,\n  oe as plugin\n};\n//# sourceMappingURL=vue-toaster.js.map\n","import { createToaster } from \"@conciergerie.dev/vue-toaster\";\n\nconst toast = createToaster({\n  duration: false,\n  dismissible: true,\n});\n\nexport function useToast() {\n  return { toast };\n}\n","import { useI18n } from 'vue-i18n';\nimport { ref, computed } from \"vue\";\nimport { getCatalog } from \"../../api/schemas\";\nimport { config } from \"../../config\";\nimport { useToast } from \"../useToast\";\nimport type { Resource } from \"../../types/resources\";\n\ntype ReportMap = Map<string, { name: string; count: number; }>;\n\ntype SchemaPath = {'schema_name': string } | {\"schema_url\": string};\n\nexport default function useSchema(resource: Resource) {\n  const { t } = useI18n();\n  const { toast } = useToast();\n  const loading = ref(true);\n\n  const schemas = ref<Array<import(\"../../api/schemas\").RegisteredSchema>>([]);\n  getCatalog()\n    .then(catalog => schemas.value = catalog)\n    .catch(() => {\n      toast.error(\n        t(\"An error occurred while fetching schemas\"),\n      );\n    }).finally(() => loading.value = false);\n\n  const schemaName = computed(() => {\n    if(resource.schema && resource.schema.name) {\n      return resource.schema.name;\n    }\n    if(resource.schema && resource.schema.url) {\n      return resource.schema.url;\n    }\n    return \"\";\n  });\n\n  const schema = computed(() => schemas.value.find(schema => schemaName.value === schema.name));\n\n  const authorizeValidation = computed(() => !!schema.value && schema.value.schema_type === 'tableschema');\n\n  const documentationUrl = computed(() => `${config.schema_documentation_url}${schemaName.value}/`);\n\n  const validationUrl = computed(() => {\n    if(!authorizeValidation || !(resource.schema && resource.schema.name)) {\n      return undefined;\n    }\n    let schemaPath: SchemaPath = {'schema_name': `schema-datagouvfr.${resource.schema.name}`};\n    if(resource.schema && resource.schema.version) {\n      const schemaVersion = resource.schema.version;\n      const versionUrl = schema.value?.versions.find(version => version.version_name === schemaVersion)?.schema_url;\n      if(versionUrl) {\n        schemaPath = {\"schema_url\": versionUrl};\n      }\n    }\n    const query = new URLSearchParams({\n      'input': 'url',\n      'url': resource.url,\n      'header-case': 'on',\n      ...schemaPath,\n    }).toString();\n    return `${config.schema_validata_url}/table-schema?${query}`;\n  });\n\n  const schemaReport = computed(() => {\n    const report: ReportMap = new Map();\n    if(!resource.extras || !resource.extras[\"validation-report:errors\"]) {\n      return report;\n    }\n\n    for (const error of (resource.extras[\"validation-report:errors\"] as Array<import(\"../../api/schemas\").ValidataError>)) {\n      let reportedError = report.get(error.code);\n      if(!reportedError) {\n        reportedError = {\n          name: error.name,\n          count: 0,\n        }\n      }\n      reportedError.count++;\n      report.set(error.code, reportedError);\n    }\n    return report;\n  });\n\n  return {\n    authorizeValidation,\n    documentationUrl,\n    loading,\n    validationUrl,\n    schemaName,\n    schemaReport,\n  }\n}\n","import { config } from \"../config\";\n\n/**\n *\n * @param {import(\"@etalab/data.gouv.fr-components\").User} user\n * @param {number} size\n */\nexport default function useUserAvatar(user, size) {\n  /**\n   *\n   * @param {string} id\n   * @param {number} size\n   */\n  const getIdenticon = (id, size) => `${config.api_root}avatars/${id}/${size}`;\n  return user.avatar_thumbnail || getIdenticon(user.id, size);\n}\n","<template>\n  <div class=\"avatar\">\n    <img\n      :src=\"avatarUrl\"\n      :width=\"size\"\n      :height=\"size\"\n      loading=\"lazy\"\n      alt=\"\"\n    />\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport useUserAvatar from \"../../composables/useUserAvatar\";\n\ntype Props = {\n    user: Object,\n    size: number\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n  size: 40,\n});\n\nconst avatarUrl = useUserAvatar(props.user, props.size);\n</script>\n","import { shallowRef, watchEffect, readonly, ref, watch, customRef, getCurrentScope, onScopeDispose, effectScope, getCurrentInstance, provide, inject, isVue3, version, isRef, unref, computed, reactive, toRefs as toRefs$1, toRef as toRef$1, isVue2, set as set$1, onBeforeMount, nextTick, onBeforeUnmount, onMounted, onUnmounted, isReactive } from 'vue-demi';\n\nfunction computedEager(fn, options) {\n  var _a;\n  const result = shallowRef();\n  watchEffect(() => {\n    result.value = fn();\n  }, {\n    ...options,\n    flush: (_a = options == null ? void 0 : options.flush) != null ? _a : \"sync\"\n  });\n  return readonly(result);\n}\n\nfunction computedWithControl(source, fn) {\n  let v = void 0;\n  let track;\n  let trigger;\n  const dirty = ref(true);\n  const update = () => {\n    dirty.value = true;\n    trigger();\n  };\n  watch(source, update, { flush: \"sync\" });\n  const get = typeof fn === \"function\" ? fn : fn.get;\n  const set = typeof fn === \"function\" ? void 0 : fn.set;\n  const result = customRef((_track, _trigger) => {\n    track = _track;\n    trigger = _trigger;\n    return {\n      get() {\n        if (dirty.value) {\n          v = get();\n          dirty.value = false;\n        }\n        track();\n        return v;\n      },\n      set(v2) {\n        set == null ? void 0 : set(v2);\n      }\n    };\n  });\n  if (Object.isExtensible(result))\n    result.trigger = update;\n  return result;\n}\n\nfunction tryOnScopeDispose(fn) {\n  if (getCurrentScope()) {\n    onScopeDispose(fn);\n    return true;\n  }\n  return false;\n}\n\nfunction createEventHook() {\n  const fns = /* @__PURE__ */ new Set();\n  const off = (fn) => {\n    fns.delete(fn);\n  };\n  const on = (fn) => {\n    fns.add(fn);\n    const offFn = () => off(fn);\n    tryOnScopeDispose(offFn);\n    return {\n      off: offFn\n    };\n  };\n  const trigger = (param) => {\n    return Promise.all(Array.from(fns).map((fn) => param ? fn(param) : fn()));\n  };\n  return {\n    on,\n    off,\n    trigger\n  };\n}\n\nfunction createGlobalState(stateFactory) {\n  let initialized = false;\n  let state;\n  const scope = effectScope(true);\n  return (...args) => {\n    if (!initialized) {\n      state = scope.run(() => stateFactory(...args));\n      initialized = true;\n    }\n    return state;\n  };\n}\n\nconst localProvidedStateMap = /* @__PURE__ */ new WeakMap();\n\nconst provideLocal = (key, value) => {\n  var _a;\n  const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n  if (instance == null)\n    throw new Error(\"provideLocal must be called in setup\");\n  if (!localProvidedStateMap.has(instance))\n    localProvidedStateMap.set(instance, /* @__PURE__ */ Object.create(null));\n  const localProvidedState = localProvidedStateMap.get(instance);\n  localProvidedState[key] = value;\n  provide(key, value);\n};\n\nconst injectLocal = (...args) => {\n  var _a;\n  const key = args[0];\n  const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n  if (instance == null)\n    throw new Error(\"injectLocal must be called in setup\");\n  if (localProvidedStateMap.has(instance) && key in localProvidedStateMap.get(instance))\n    return localProvidedStateMap.get(instance)[key];\n  return inject(...args);\n};\n\nfunction createInjectionState(composable, options) {\n  const key = (options == null ? void 0 : options.injectionKey) || Symbol(\"InjectionState\");\n  const useProvidingState = (...args) => {\n    const state = composable(...args);\n    provideLocal(key, state);\n    return state;\n  };\n  const useInjectedState = () => injectLocal(key);\n  return [useProvidingState, useInjectedState];\n}\n\nfunction createSharedComposable(composable) {\n  let subscribers = 0;\n  let state;\n  let scope;\n  const dispose = () => {\n    subscribers -= 1;\n    if (scope && subscribers <= 0) {\n      scope.stop();\n      state = void 0;\n      scope = void 0;\n    }\n  };\n  return (...args) => {\n    subscribers += 1;\n    if (!state) {\n      scope = effectScope(true);\n      state = scope.run(() => composable(...args));\n    }\n    tryOnScopeDispose(dispose);\n    return state;\n  };\n}\n\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n  if (!isVue3 && !version.startsWith(\"2.7.\")) {\n    if (process.env.NODE_ENV !== \"production\")\n      throw new Error(\"[VueUse] extendRef only works in Vue 2.7 or above.\");\n    return;\n  }\n  for (const [key, value] of Object.entries(extend)) {\n    if (key === \"value\")\n      continue;\n    if (isRef(value) && unwrap) {\n      Object.defineProperty(ref, key, {\n        get() {\n          return value.value;\n        },\n        set(v) {\n          value.value = v;\n        },\n        enumerable\n      });\n    } else {\n      Object.defineProperty(ref, key, { value, enumerable });\n    }\n  }\n  return ref;\n}\n\nfunction get(obj, key) {\n  if (key == null)\n    return unref(obj);\n  return unref(obj)[key];\n}\n\nfunction isDefined(v) {\n  return unref(v) != null;\n}\n\nfunction makeDestructurable(obj, arr) {\n  if (typeof Symbol !== \"undefined\") {\n    const clone = { ...obj };\n    Object.defineProperty(clone, Symbol.iterator, {\n      enumerable: false,\n      value() {\n        let index = 0;\n        return {\n          next: () => ({\n            value: arr[index++],\n            done: index > arr.length\n          })\n        };\n      }\n    });\n    return clone;\n  } else {\n    return Object.assign([...arr], obj);\n  }\n}\n\nfunction toValue(r) {\n  return typeof r === \"function\" ? r() : unref(r);\n}\nconst resolveUnref = toValue;\n\nfunction reactify(fn, options) {\n  const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : toValue;\n  return function(...args) {\n    return computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n  };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n  let keys = [];\n  let options;\n  if (Array.isArray(optionsOrKeys)) {\n    keys = optionsOrKeys;\n  } else {\n    options = optionsOrKeys;\n    const { includeOwnProperties = true } = optionsOrKeys;\n    keys.push(...Object.keys(obj));\n    if (includeOwnProperties)\n      keys.push(...Object.getOwnPropertyNames(obj));\n  }\n  return Object.fromEntries(\n    keys.map((key) => {\n      const value = obj[key];\n      return [\n        key,\n        typeof value === \"function\" ? reactify(value.bind(obj), options) : value\n      ];\n    })\n  );\n}\n\nfunction toReactive(objectRef) {\n  if (!isRef(objectRef))\n    return reactive(objectRef);\n  const proxy = new Proxy({}, {\n    get(_, p, receiver) {\n      return unref(Reflect.get(objectRef.value, p, receiver));\n    },\n    set(_, p, value) {\n      if (isRef(objectRef.value[p]) && !isRef(value))\n        objectRef.value[p].value = value;\n      else\n        objectRef.value[p] = value;\n      return true;\n    },\n    deleteProperty(_, p) {\n      return Reflect.deleteProperty(objectRef.value, p);\n    },\n    has(_, p) {\n      return Reflect.has(objectRef.value, p);\n    },\n    ownKeys() {\n      return Object.keys(objectRef.value);\n    },\n    getOwnPropertyDescriptor() {\n      return {\n        enumerable: true,\n        configurable: true\n      };\n    }\n  });\n  return reactive(proxy);\n}\n\nfunction reactiveComputed(fn) {\n  return toReactive(computed(fn));\n}\n\nfunction reactiveOmit(obj, ...keys) {\n  const flatKeys = keys.flat();\n  const predicate = flatKeys[0];\n  return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => !predicate(toValue(v), k))) : Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0]))));\n}\n\nconst isClient = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst isWorker = typeof WorkerGlobalScope !== \"undefined\" && globalThis instanceof WorkerGlobalScope;\nconst isDef = (val) => typeof val !== \"undefined\";\nconst notNullish = (val) => val != null;\nconst assert = (condition, ...infos) => {\n  if (!condition)\n    console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {\n};\nconst rand = (min, max) => {\n  min = Math.ceil(min);\n  max = Math.floor(max);\n  return Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key);\nconst isIOS = /* @__PURE__ */ getIsIOS();\nfunction getIsIOS() {\n  var _a;\n  return isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /* @__PURE__ */ /iP(ad|hone|od)/.test(window.navigator.userAgent);\n}\n\nfunction createFilterWrapper(filter, fn) {\n  function wrapper(...args) {\n    return new Promise((resolve, reject) => {\n      Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n    });\n  }\n  return wrapper;\n}\nconst bypassFilter = (invoke) => {\n  return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n  let timer;\n  let maxTimer;\n  let lastRejector = noop;\n  const _clearTimeout = (timer2) => {\n    clearTimeout(timer2);\n    lastRejector();\n    lastRejector = noop;\n  };\n  const filter = (invoke) => {\n    const duration = toValue(ms);\n    const maxDuration = toValue(options.maxWait);\n    if (timer)\n      _clearTimeout(timer);\n    if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n      if (maxTimer) {\n        _clearTimeout(maxTimer);\n        maxTimer = null;\n      }\n      return Promise.resolve(invoke());\n    }\n    return new Promise((resolve, reject) => {\n      lastRejector = options.rejectOnCancel ? reject : resolve;\n      if (maxDuration && !maxTimer) {\n        maxTimer = setTimeout(() => {\n          if (timer)\n            _clearTimeout(timer);\n          maxTimer = null;\n          resolve(invoke());\n        }, maxDuration);\n      }\n      timer = setTimeout(() => {\n        if (maxTimer)\n          _clearTimeout(maxTimer);\n        maxTimer = null;\n        resolve(invoke());\n      }, duration);\n    });\n  };\n  return filter;\n}\nfunction throttleFilter(ms, trailing = true, leading = true, rejectOnCancel = false) {\n  let lastExec = 0;\n  let timer;\n  let isLeading = true;\n  let lastRejector = noop;\n  let lastValue;\n  const clear = () => {\n    if (timer) {\n      clearTimeout(timer);\n      timer = void 0;\n      lastRejector();\n      lastRejector = noop;\n    }\n  };\n  const filter = (_invoke) => {\n    const duration = toValue(ms);\n    const elapsed = Date.now() - lastExec;\n    const invoke = () => {\n      return lastValue = _invoke();\n    };\n    clear();\n    if (duration <= 0) {\n      lastExec = Date.now();\n      return invoke();\n    }\n    if (elapsed > duration && (leading || !isLeading)) {\n      lastExec = Date.now();\n      invoke();\n    } else if (trailing) {\n      lastValue = new Promise((resolve, reject) => {\n        lastRejector = rejectOnCancel ? reject : resolve;\n        timer = setTimeout(() => {\n          lastExec = Date.now();\n          isLeading = true;\n          resolve(invoke());\n          clear();\n        }, Math.max(0, duration - elapsed));\n      });\n    }\n    if (!leading && !timer)\n      timer = setTimeout(() => isLeading = true, duration);\n    isLeading = false;\n    return lastValue;\n  };\n  return filter;\n}\nfunction pausableFilter(extendFilter = bypassFilter) {\n  const isActive = ref(true);\n  function pause() {\n    isActive.value = false;\n  }\n  function resume() {\n    isActive.value = true;\n  }\n  const eventFilter = (...args) => {\n    if (isActive.value)\n      extendFilter(...args);\n  };\n  return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\n\nconst directiveHooks = {\n  mounted: isVue3 ? \"mounted\" : \"inserted\",\n  updated: isVue3 ? \"updated\" : \"componentUpdated\",\n  unmounted: isVue3 ? \"unmounted\" : \"unbind\"\n};\n\nfunction cacheStringFunction(fn) {\n  const cache = /* @__PURE__ */ Object.create(null);\n  return (str) => {\n    const hit = cache[str];\n    return hit || (cache[str] = fn(str));\n  };\n}\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n  return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\n\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n  return new Promise((resolve, reject) => {\n    if (throwOnTimeout)\n      setTimeout(() => reject(reason), ms);\n    else\n      setTimeout(resolve, ms);\n  });\n}\nfunction identity(arg) {\n  return arg;\n}\nfunction createSingletonPromise(fn) {\n  let _promise;\n  function wrapper() {\n    if (!_promise)\n      _promise = fn();\n    return _promise;\n  }\n  wrapper.reset = async () => {\n    const _prev = _promise;\n    _promise = void 0;\n    if (_prev)\n      await _prev;\n  };\n  return wrapper;\n}\nfunction invoke(fn) {\n  return fn();\n}\nfunction containsProp(obj, ...props) {\n  return props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n  var _a;\n  if (typeof target === \"number\")\n    return target + delta;\n  const value = ((_a = target.match(/^-?[0-9]+\\.?[0-9]*/)) == null ? void 0 : _a[0]) || \"\";\n  const unit = target.slice(value.length);\n  const result = Number.parseFloat(value) + delta;\n  if (Number.isNaN(result))\n    return target;\n  return result + unit;\n}\nfunction objectPick(obj, keys, omitUndefined = false) {\n  return keys.reduce((n, k) => {\n    if (k in obj) {\n      if (!omitUndefined || obj[k] !== void 0)\n        n[k] = obj[k];\n    }\n    return n;\n  }, {});\n}\nfunction objectOmit(obj, keys, omitUndefined = false) {\n  return Object.fromEntries(Object.entries(obj).filter(([key, value]) => {\n    return (!omitUndefined || value !== void 0) && !keys.includes(key);\n  }));\n}\nfunction objectEntries(obj) {\n  return Object.entries(obj);\n}\n\nfunction toRef(...args) {\n  if (args.length !== 1)\n    return toRef$1(...args);\n  const r = args[0];\n  return typeof r === \"function\" ? readonly(customRef(() => ({ get: r, set: noop }))) : ref(r);\n}\nconst resolveRef = toRef;\n\nfunction reactivePick(obj, ...keys) {\n  const flatKeys = keys.flat();\n  const predicate = flatKeys[0];\n  return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => predicate(toValue(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n  return customRef((track, trigger) => {\n    let value = toValue(defaultValue);\n    let timer;\n    const resetAfter = () => setTimeout(() => {\n      value = toValue(defaultValue);\n      trigger();\n    }, toValue(afterMs));\n    tryOnScopeDispose(() => {\n      clearTimeout(timer);\n    });\n    return {\n      get() {\n        track();\n        return value;\n      },\n      set(newValue) {\n        value = newValue;\n        trigger();\n        clearTimeout(timer);\n        timer = resetAfter();\n      }\n    };\n  });\n}\n\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n  return createFilterWrapper(\n    debounceFilter(ms, options),\n    fn\n  );\n}\n\nfunction refDebounced(value, ms = 200, options = {}) {\n  const debounced = ref(value.value);\n  const updater = useDebounceFn(() => {\n    debounced.value = value.value;\n  }, ms, options);\n  watch(value, () => updater());\n  return debounced;\n}\n\nfunction refDefault(source, defaultValue) {\n  return computed({\n    get() {\n      var _a;\n      return (_a = source.value) != null ? _a : defaultValue;\n    },\n    set(value) {\n      source.value = value;\n    }\n  });\n}\n\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n  return createFilterWrapper(\n    throttleFilter(ms, trailing, leading, rejectOnCancel),\n    fn\n  );\n}\n\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n  if (delay <= 0)\n    return value;\n  const throttled = ref(value.value);\n  const updater = useThrottleFn(() => {\n    throttled.value = value.value;\n  }, delay, trailing, leading);\n  watch(value, () => updater());\n  return throttled;\n}\n\nfunction refWithControl(initial, options = {}) {\n  let source = initial;\n  let track;\n  let trigger;\n  const ref = customRef((_track, _trigger) => {\n    track = _track;\n    trigger = _trigger;\n    return {\n      get() {\n        return get();\n      },\n      set(v) {\n        set(v);\n      }\n    };\n  });\n  function get(tracking = true) {\n    if (tracking)\n      track();\n    return source;\n  }\n  function set(value, triggering = true) {\n    var _a, _b;\n    if (value === source)\n      return;\n    const old = source;\n    if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false)\n      return;\n    source = value;\n    (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old);\n    if (triggering)\n      trigger();\n  }\n  const untrackedGet = () => get(false);\n  const silentSet = (v) => set(v, false);\n  const peek = () => get(false);\n  const lay = (v) => set(v, false);\n  return extendRef(\n    ref,\n    {\n      get,\n      set,\n      untrackedGet,\n      silentSet,\n      peek,\n      lay\n    },\n    { enumerable: true }\n  );\n}\nconst controlledRef = refWithControl;\n\nfunction set(...args) {\n  if (args.length === 2) {\n    const [ref, value] = args;\n    ref.value = value;\n  }\n  if (args.length === 3) {\n    if (isVue2) {\n      set$1(...args);\n    } else {\n      const [target, key, value] = args;\n      target[key] = value;\n    }\n  }\n}\n\nfunction watchWithFilter(source, cb, options = {}) {\n  const {\n    eventFilter = bypassFilter,\n    ...watchOptions\n  } = options;\n  return watch(\n    source,\n    createFilterWrapper(\n      eventFilter,\n      cb\n    ),\n    watchOptions\n  );\n}\n\nfunction watchPausable(source, cb, options = {}) {\n  const {\n    eventFilter: filter,\n    ...watchOptions\n  } = options;\n  const { eventFilter, pause, resume, isActive } = pausableFilter(filter);\n  const stop = watchWithFilter(\n    source,\n    cb,\n    {\n      ...watchOptions,\n      eventFilter\n    }\n  );\n  return { stop, pause, resume, isActive };\n}\n\nfunction syncRef(left, right, ...[options]) {\n  const {\n    flush = \"sync\",\n    deep = false,\n    immediate = true,\n    direction = \"both\",\n    transform = {}\n  } = options || {};\n  const watchers = [];\n  const transformLTR = \"ltr\" in transform && transform.ltr || ((v) => v);\n  const transformRTL = \"rtl\" in transform && transform.rtl || ((v) => v);\n  if (direction === \"both\" || direction === \"ltr\") {\n    watchers.push(watchPausable(\n      left,\n      (newValue) => {\n        watchers.forEach((w) => w.pause());\n        right.value = transformLTR(newValue);\n        watchers.forEach((w) => w.resume());\n      },\n      { flush, deep, immediate }\n    ));\n  }\n  if (direction === \"both\" || direction === \"rtl\") {\n    watchers.push(watchPausable(\n      right,\n      (newValue) => {\n        watchers.forEach((w) => w.pause());\n        left.value = transformRTL(newValue);\n        watchers.forEach((w) => w.resume());\n      },\n      { flush, deep, immediate }\n    ));\n  }\n  const stop = () => {\n    watchers.forEach((w) => w.stop());\n  };\n  return stop;\n}\n\nfunction syncRefs(source, targets, options = {}) {\n  const {\n    flush = \"sync\",\n    deep = false,\n    immediate = true\n  } = options;\n  if (!Array.isArray(targets))\n    targets = [targets];\n  return watch(\n    source,\n    (newValue) => targets.forEach((target) => target.value = newValue),\n    { flush, deep, immediate }\n  );\n}\n\nfunction toRefs(objectRef, options = {}) {\n  if (!isRef(objectRef))\n    return toRefs$1(objectRef);\n  const result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {};\n  for (const key in objectRef.value) {\n    result[key] = customRef(() => ({\n      get() {\n        return objectRef.value[key];\n      },\n      set(v) {\n        var _a;\n        const replaceRef = (_a = toValue(options.replaceRef)) != null ? _a : true;\n        if (replaceRef) {\n          if (Array.isArray(objectRef.value)) {\n            const copy = [...objectRef.value];\n            copy[key] = v;\n            objectRef.value = copy;\n          } else {\n            const newObject = { ...objectRef.value, [key]: v };\n            Object.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value));\n            objectRef.value = newObject;\n          }\n        } else {\n          objectRef.value[key] = v;\n        }\n      }\n    }));\n  }\n  return result;\n}\n\nfunction tryOnBeforeMount(fn, sync = true) {\n  if (getCurrentInstance())\n    onBeforeMount(fn);\n  else if (sync)\n    fn();\n  else\n    nextTick(fn);\n}\n\nfunction tryOnBeforeUnmount(fn) {\n  if (getCurrentInstance())\n    onBeforeUnmount(fn);\n}\n\nfunction tryOnMounted(fn, sync = true) {\n  if (getCurrentInstance())\n    onMounted(fn);\n  else if (sync)\n    fn();\n  else\n    nextTick(fn);\n}\n\nfunction tryOnUnmounted(fn) {\n  if (getCurrentInstance())\n    onUnmounted(fn);\n}\n\nfunction createUntil(r, isNot = false) {\n  function toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n    let stop = null;\n    const watcher = new Promise((resolve) => {\n      stop = watch(\n        r,\n        (v) => {\n          if (condition(v) !== isNot) {\n            stop == null ? void 0 : stop();\n            resolve(v);\n          }\n        },\n        {\n          flush,\n          deep,\n          immediate: true\n        }\n      );\n    });\n    const promises = [watcher];\n    if (timeout != null) {\n      promises.push(\n        promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => stop == null ? void 0 : stop())\n      );\n    }\n    return Promise.race(promises);\n  }\n  function toBe(value, options) {\n    if (!isRef(value))\n      return toMatch((v) => v === value, options);\n    const { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options != null ? options : {};\n    let stop = null;\n    const watcher = new Promise((resolve) => {\n      stop = watch(\n        [r, value],\n        ([v1, v2]) => {\n          if (isNot !== (v1 === v2)) {\n            stop == null ? void 0 : stop();\n            resolve(v1);\n          }\n        },\n        {\n          flush,\n          deep,\n          immediate: true\n        }\n      );\n    });\n    const promises = [watcher];\n    if (timeout != null) {\n      promises.push(\n        promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => {\n          stop == null ? void 0 : stop();\n          return toValue(r);\n        })\n      );\n    }\n    return Promise.race(promises);\n  }\n  function toBeTruthy(options) {\n    return toMatch((v) => Boolean(v), options);\n  }\n  function toBeNull(options) {\n    return toBe(null, options);\n  }\n  function toBeUndefined(options) {\n    return toBe(void 0, options);\n  }\n  function toBeNaN(options) {\n    return toMatch(Number.isNaN, options);\n  }\n  function toContains(value, options) {\n    return toMatch((v) => {\n      const array = Array.from(v);\n      return array.includes(value) || array.includes(toValue(value));\n    }, options);\n  }\n  function changed(options) {\n    return changedTimes(1, options);\n  }\n  function changedTimes(n = 1, options) {\n    let count = -1;\n    return toMatch(() => {\n      count += 1;\n      return count >= n;\n    }, options);\n  }\n  if (Array.isArray(toValue(r))) {\n    const instance = {\n      toMatch,\n      toContains,\n      changed,\n      changedTimes,\n      get not() {\n        return createUntil(r, !isNot);\n      }\n    };\n    return instance;\n  } else {\n    const instance = {\n      toMatch,\n      toBe,\n      toBeTruthy,\n      toBeNull,\n      toBeNaN,\n      toBeUndefined,\n      changed,\n      changedTimes,\n      get not() {\n        return createUntil(r, !isNot);\n      }\n    };\n    return instance;\n  }\n}\nfunction until(r) {\n  return createUntil(r);\n}\n\nfunction defaultComparator(value, othVal) {\n  return value === othVal;\n}\nfunction useArrayDifference(...args) {\n  var _a;\n  const list = args[0];\n  const values = args[1];\n  let compareFn = (_a = args[2]) != null ? _a : defaultComparator;\n  if (typeof compareFn === \"string\") {\n    const key = compareFn;\n    compareFn = (value, othVal) => value[key] === othVal[key];\n  }\n  return computed(() => toValue(list).filter((x) => toValue(values).findIndex((y) => compareFn(x, y)) === -1));\n}\n\nfunction useArrayEvery(list, fn) {\n  return computed(() => toValue(list).every((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction useArrayFilter(list, fn) {\n  return computed(() => toValue(list).map((i) => toValue(i)).filter(fn));\n}\n\nfunction useArrayFind(list, fn) {\n  return computed(() => toValue(\n    toValue(list).find((element, index, array) => fn(toValue(element), index, array))\n  ));\n}\n\nfunction useArrayFindIndex(list, fn) {\n  return computed(() => toValue(list).findIndex((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction findLast(arr, cb) {\n  let index = arr.length;\n  while (index-- > 0) {\n    if (cb(arr[index], index, arr))\n      return arr[index];\n  }\n  return void 0;\n}\nfunction useArrayFindLast(list, fn) {\n  return computed(() => toValue(\n    !Array.prototype.findLast ? findLast(toValue(list), (element, index, array) => fn(toValue(element), index, array)) : toValue(list).findLast((element, index, array) => fn(toValue(element), index, array))\n  ));\n}\n\nfunction isArrayIncludesOptions(obj) {\n  return isObject(obj) && containsProp(obj, \"formIndex\", \"comparator\");\n}\nfunction useArrayIncludes(...args) {\n  var _a;\n  const list = args[0];\n  const value = args[1];\n  let comparator = args[2];\n  let formIndex = 0;\n  if (isArrayIncludesOptions(comparator)) {\n    formIndex = (_a = comparator.fromIndex) != null ? _a : 0;\n    comparator = comparator.comparator;\n  }\n  if (typeof comparator === \"string\") {\n    const key = comparator;\n    comparator = (element, value2) => element[key] === toValue(value2);\n  }\n  comparator = comparator != null ? comparator : (element, value2) => element === toValue(value2);\n  return computed(() => toValue(list).slice(formIndex).some((element, index, array) => comparator(\n    toValue(element),\n    toValue(value),\n    index,\n    toValue(array)\n  )));\n}\n\nfunction useArrayJoin(list, separator) {\n  return computed(() => toValue(list).map((i) => toValue(i)).join(toValue(separator)));\n}\n\nfunction useArrayMap(list, fn) {\n  return computed(() => toValue(list).map((i) => toValue(i)).map(fn));\n}\n\nfunction useArrayReduce(list, reducer, ...args) {\n  const reduceCallback = (sum, value, index) => reducer(toValue(sum), toValue(value), index);\n  return computed(() => {\n    const resolved = toValue(list);\n    return args.length ? resolved.reduce(reduceCallback, toValue(args[0])) : resolved.reduce(reduceCallback);\n  });\n}\n\nfunction useArraySome(list, fn) {\n  return computed(() => toValue(list).some((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction uniq(array) {\n  return Array.from(new Set(array));\n}\nfunction uniqueElementsBy(array, fn) {\n  return array.reduce((acc, v) => {\n    if (!acc.some((x) => fn(v, x, array)))\n      acc.push(v);\n    return acc;\n  }, []);\n}\nfunction useArrayUnique(list, compareFn) {\n  return computed(() => {\n    const resolvedList = toValue(list).map((element) => toValue(element));\n    return compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList);\n  });\n}\n\nfunction useCounter(initialValue = 0, options = {}) {\n  let _initialValue = unref(initialValue);\n  const count = ref(initialValue);\n  const {\n    max = Number.POSITIVE_INFINITY,\n    min = Number.NEGATIVE_INFINITY\n  } = options;\n  const inc = (delta = 1) => count.value = Math.min(max, count.value + delta);\n  const dec = (delta = 1) => count.value = Math.max(min, count.value - delta);\n  const get = () => count.value;\n  const set = (val) => count.value = Math.max(min, Math.min(max, val));\n  const reset = (val = _initialValue) => {\n    _initialValue = val;\n    return set(val);\n  };\n  return { count, inc, dec, get, set, reset };\n}\n\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/;\nconst REGEX_FORMAT = /[YMDHhms]o|\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|SSS/g;\nfunction defaultMeridiem(hours, minutes, isLowercase, hasPeriod) {\n  let m = hours < 12 ? \"AM\" : \"PM\";\n  if (hasPeriod)\n    m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n  return isLowercase ? m.toLowerCase() : m;\n}\nfunction formatOrdinal(num) {\n  const suffixes = [\"th\", \"st\", \"nd\", \"rd\"];\n  const v = num % 100;\n  return num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);\n}\nfunction formatDate(date, formatStr, options = {}) {\n  var _a;\n  const years = date.getFullYear();\n  const month = date.getMonth();\n  const days = date.getDate();\n  const hours = date.getHours();\n  const minutes = date.getMinutes();\n  const seconds = date.getSeconds();\n  const milliseconds = date.getMilliseconds();\n  const day = date.getDay();\n  const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem;\n  const matches = {\n    Yo: () => formatOrdinal(years),\n    YY: () => String(years).slice(-2),\n    YYYY: () => years,\n    M: () => month + 1,\n    Mo: () => formatOrdinal(month + 1),\n    MM: () => `${month + 1}`.padStart(2, \"0\"),\n    MMM: () => date.toLocaleDateString(options.locales, { month: \"short\" }),\n    MMMM: () => date.toLocaleDateString(options.locales, { month: \"long\" }),\n    D: () => String(days),\n    Do: () => formatOrdinal(days),\n    DD: () => `${days}`.padStart(2, \"0\"),\n    H: () => String(hours),\n    Ho: () => formatOrdinal(hours),\n    HH: () => `${hours}`.padStart(2, \"0\"),\n    h: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n    ho: () => formatOrdinal(hours % 12 || 12),\n    hh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n    m: () => String(minutes),\n    mo: () => formatOrdinal(minutes),\n    mm: () => `${minutes}`.padStart(2, \"0\"),\n    s: () => String(seconds),\n    so: () => formatOrdinal(seconds),\n    ss: () => `${seconds}`.padStart(2, \"0\"),\n    SSS: () => `${milliseconds}`.padStart(3, \"0\"),\n    d: () => day,\n    dd: () => date.toLocaleDateString(options.locales, { weekday: \"narrow\" }),\n    ddd: () => date.toLocaleDateString(options.locales, { weekday: \"short\" }),\n    dddd: () => date.toLocaleDateString(options.locales, { weekday: \"long\" }),\n    A: () => meridiem(hours, minutes),\n    AA: () => meridiem(hours, minutes, false, true),\n    a: () => meridiem(hours, minutes, true),\n    aa: () => meridiem(hours, minutes, true, true)\n  };\n  return formatStr.replace(REGEX_FORMAT, (match, $1) => {\n    var _a2, _b;\n    return (_b = $1 != null ? $1 : (_a2 = matches[match]) == null ? void 0 : _a2.call(matches)) != null ? _b : match;\n  });\n}\nfunction normalizeDate(date) {\n  if (date === null)\n    return new Date(Number.NaN);\n  if (date === void 0)\n    return /* @__PURE__ */ new Date();\n  if (date instanceof Date)\n    return new Date(date);\n  if (typeof date === \"string\" && !/Z$/i.test(date)) {\n    const d = date.match(REGEX_PARSE);\n    if (d) {\n      const m = d[2] - 1 || 0;\n      const ms = (d[7] || \"0\").substring(0, 3);\n      return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n    }\n  }\n  return new Date(date);\n}\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n  return computed(() => formatDate(normalizeDate(toValue(date)), toValue(formatStr), options));\n}\n\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n  const {\n    immediate = true,\n    immediateCallback = false\n  } = options;\n  let timer = null;\n  const isActive = ref(false);\n  function clean() {\n    if (timer) {\n      clearInterval(timer);\n      timer = null;\n    }\n  }\n  function pause() {\n    isActive.value = false;\n    clean();\n  }\n  function resume() {\n    const intervalValue = toValue(interval);\n    if (intervalValue <= 0)\n      return;\n    isActive.value = true;\n    if (immediateCallback)\n      cb();\n    clean();\n    timer = setInterval(cb, intervalValue);\n  }\n  if (immediate && isClient)\n    resume();\n  if (isRef(interval) || typeof interval === \"function\") {\n    const stopWatch = watch(interval, () => {\n      if (isActive.value && isClient)\n        resume();\n    });\n    tryOnScopeDispose(stopWatch);\n  }\n  tryOnScopeDispose(pause);\n  return {\n    isActive,\n    pause,\n    resume\n  };\n}\n\nfunction useInterval(interval = 1e3, options = {}) {\n  const {\n    controls: exposeControls = false,\n    immediate = true,\n    callback\n  } = options;\n  const counter = ref(0);\n  const update = () => counter.value += 1;\n  const reset = () => {\n    counter.value = 0;\n  };\n  const controls = useIntervalFn(\n    callback ? () => {\n      update();\n      callback(counter.value);\n    } : update,\n    interval,\n    { immediate }\n  );\n  if (exposeControls) {\n    return {\n      counter,\n      reset,\n      ...controls\n    };\n  } else {\n    return counter;\n  }\n}\n\nfunction useLastChanged(source, options = {}) {\n  var _a;\n  const ms = ref((_a = options.initialValue) != null ? _a : null);\n  watch(\n    source,\n    () => ms.value = timestamp(),\n    options\n  );\n  return ms;\n}\n\nfunction useTimeoutFn(cb, interval, options = {}) {\n  const {\n    immediate = true\n  } = options;\n  const isPending = ref(false);\n  let timer = null;\n  function clear() {\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n  }\n  function stop() {\n    isPending.value = false;\n    clear();\n  }\n  function start(...args) {\n    clear();\n    isPending.value = true;\n    timer = setTimeout(() => {\n      isPending.value = false;\n      timer = null;\n      cb(...args);\n    }, toValue(interval));\n  }\n  if (immediate) {\n    isPending.value = true;\n    if (isClient)\n      start();\n  }\n  tryOnScopeDispose(stop);\n  return {\n    isPending: readonly(isPending),\n    start,\n    stop\n  };\n}\n\nfunction useTimeout(interval = 1e3, options = {}) {\n  const {\n    controls: exposeControls = false,\n    callback\n  } = options;\n  const controls = useTimeoutFn(\n    callback != null ? callback : noop,\n    interval,\n    options\n  );\n  const ready = computed(() => !controls.isPending.value);\n  if (exposeControls) {\n    return {\n      ready,\n      ...controls\n    };\n  } else {\n    return ready;\n  }\n}\n\nfunction useToNumber(value, options = {}) {\n  const {\n    method = \"parseFloat\",\n    radix,\n    nanToZero\n  } = options;\n  return computed(() => {\n    let resolved = toValue(value);\n    if (typeof resolved === \"string\")\n      resolved = Number[method](resolved, radix);\n    if (nanToZero && Number.isNaN(resolved))\n      resolved = 0;\n    return resolved;\n  });\n}\n\nfunction useToString(value) {\n  return computed(() => `${toValue(value)}`);\n}\n\nfunction useToggle(initialValue = false, options = {}) {\n  const {\n    truthyValue = true,\n    falsyValue = false\n  } = options;\n  const valueIsRef = isRef(initialValue);\n  const _value = ref(initialValue);\n  function toggle(value) {\n    if (arguments.length) {\n      _value.value = value;\n      return _value.value;\n    } else {\n      const truthy = toValue(truthyValue);\n      _value.value = _value.value === truthy ? toValue(falsyValue) : truthy;\n      return _value.value;\n    }\n  }\n  if (valueIsRef)\n    return toggle;\n  else\n    return [_value, toggle];\n}\n\nfunction watchArray(source, cb, options) {\n  let oldList = (options == null ? void 0 : options.immediate) ? [] : [...source instanceof Function ? source() : Array.isArray(source) ? source : toValue(source)];\n  return watch(source, (newList, _, onCleanup) => {\n    const oldListRemains = Array.from({ length: oldList.length });\n    const added = [];\n    for (const obj of newList) {\n      let found = false;\n      for (let i = 0; i < oldList.length; i++) {\n        if (!oldListRemains[i] && obj === oldList[i]) {\n          oldListRemains[i] = true;\n          found = true;\n          break;\n        }\n      }\n      if (!found)\n        added.push(obj);\n    }\n    const removed = oldList.filter((_2, i) => !oldListRemains[i]);\n    cb(newList, oldList, added, removed, onCleanup);\n    oldList = [...newList];\n  }, options);\n}\n\nfunction watchAtMost(source, cb, options) {\n  const {\n    count,\n    ...watchOptions\n  } = options;\n  const current = ref(0);\n  const stop = watchWithFilter(\n    source,\n    (...args) => {\n      current.value += 1;\n      if (current.value >= toValue(count))\n        nextTick(() => stop());\n      cb(...args);\n    },\n    watchOptions\n  );\n  return { count: current, stop };\n}\n\nfunction watchDebounced(source, cb, options = {}) {\n  const {\n    debounce = 0,\n    maxWait = void 0,\n    ...watchOptions\n  } = options;\n  return watchWithFilter(\n    source,\n    cb,\n    {\n      ...watchOptions,\n      eventFilter: debounceFilter(debounce, { maxWait })\n    }\n  );\n}\n\nfunction watchDeep(source, cb, options) {\n  return watch(\n    source,\n    cb,\n    {\n      ...options,\n      deep: true\n    }\n  );\n}\n\nfunction watchIgnorable(source, cb, options = {}) {\n  const {\n    eventFilter = bypassFilter,\n    ...watchOptions\n  } = options;\n  const filteredCb = createFilterWrapper(\n    eventFilter,\n    cb\n  );\n  let ignoreUpdates;\n  let ignorePrevAsyncUpdates;\n  let stop;\n  if (watchOptions.flush === \"sync\") {\n    const ignore = ref(false);\n    ignorePrevAsyncUpdates = () => {\n    };\n    ignoreUpdates = (updater) => {\n      ignore.value = true;\n      updater();\n      ignore.value = false;\n    };\n    stop = watch(\n      source,\n      (...args) => {\n        if (!ignore.value)\n          filteredCb(...args);\n      },\n      watchOptions\n    );\n  } else {\n    const disposables = [];\n    const ignoreCounter = ref(0);\n    const syncCounter = ref(0);\n    ignorePrevAsyncUpdates = () => {\n      ignoreCounter.value = syncCounter.value;\n    };\n    disposables.push(\n      watch(\n        source,\n        () => {\n          syncCounter.value++;\n        },\n        { ...watchOptions, flush: \"sync\" }\n      )\n    );\n    ignoreUpdates = (updater) => {\n      const syncCounterPrev = syncCounter.value;\n      updater();\n      ignoreCounter.value += syncCounter.value - syncCounterPrev;\n    };\n    disposables.push(\n      watch(\n        source,\n        (...args) => {\n          const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value;\n          ignoreCounter.value = 0;\n          syncCounter.value = 0;\n          if (ignore)\n            return;\n          filteredCb(...args);\n        },\n        watchOptions\n      )\n    );\n    stop = () => {\n      disposables.forEach((fn) => fn());\n    };\n  }\n  return { stop, ignoreUpdates, ignorePrevAsyncUpdates };\n}\n\nfunction watchImmediate(source, cb, options) {\n  return watch(\n    source,\n    cb,\n    {\n      ...options,\n      immediate: true\n    }\n  );\n}\n\nfunction watchOnce(source, cb, options) {\n  const stop = watch(source, (...args) => {\n    nextTick(() => stop());\n    return cb(...args);\n  }, options);\n  return stop;\n}\n\nfunction watchThrottled(source, cb, options = {}) {\n  const {\n    throttle = 0,\n    trailing = true,\n    leading = true,\n    ...watchOptions\n  } = options;\n  return watchWithFilter(\n    source,\n    cb,\n    {\n      ...watchOptions,\n      eventFilter: throttleFilter(throttle, trailing, leading)\n    }\n  );\n}\n\nfunction watchTriggerable(source, cb, options = {}) {\n  let cleanupFn;\n  function onEffect() {\n    if (!cleanupFn)\n      return;\n    const fn = cleanupFn;\n    cleanupFn = void 0;\n    fn();\n  }\n  function onCleanup(callback) {\n    cleanupFn = callback;\n  }\n  const _cb = (value, oldValue) => {\n    onEffect();\n    return cb(value, oldValue, onCleanup);\n  };\n  const res = watchIgnorable(source, _cb, options);\n  const { ignoreUpdates } = res;\n  const trigger = () => {\n    let res2;\n    ignoreUpdates(() => {\n      res2 = _cb(getWatchSources(source), getOldValue(source));\n    });\n    return res2;\n  };\n  return {\n    ...res,\n    trigger\n  };\n}\nfunction getWatchSources(sources) {\n  if (isReactive(sources))\n    return sources;\n  if (Array.isArray(sources))\n    return sources.map((item) => toValue(item));\n  return toValue(sources);\n}\nfunction getOldValue(source) {\n  return Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\nfunction whenever(source, cb, options) {\n  return watch(\n    source,\n    (v, ov, onInvalidate) => {\n      if (v)\n        cb(v, ov, onInvalidate);\n    },\n    options\n  );\n}\n\nexport { assert, refAutoReset as autoResetRef, bypassFilter, camelize, clamp, computedEager, computedWithControl, containsProp, computedWithControl as controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, reactify as createReactiveFn, createSharedComposable, createSingletonPromise, debounceFilter, refDebounced as debouncedRef, watchDebounced as debouncedWatch, directiveHooks, computedEager as eagerComputed, extendRef, formatDate, get, hasOwn, hyphenate, identity, watchIgnorable as ignorableWatch, increaseWithUnit, injectLocal, invoke, isClient, isDef, isDefined, isIOS, isObject, isWorker, makeDestructurable, noop, normalizeDate, notNullish, now, objectEntries, objectOmit, objectPick, pausableFilter, watchPausable as pausableWatch, promiseTimeout, provideLocal, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refThrottled, refWithControl, resolveRef, resolveUnref, set, syncRef, syncRefs, throttleFilter, refThrottled as throttledRef, watchThrottled as throttledWatch, timestamp, toReactive, toRef, toRefs, toValue, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayDifference, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayIncludes, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, refDebounced as useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, refThrottled as useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchDeep, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };\n","import { noop, makeDestructurable, camelize, toValue, isClient, isObject, tryOnScopeDispose, isIOS, tryOnMounted, computedWithControl, objectOmit, promiseTimeout, until, increaseWithUnit, objectEntries, createSingletonPromise, useTimeoutFn, pausableWatch, toRef, createEventHook, timestamp, pausableFilter, watchIgnorable, debounceFilter, createFilterWrapper, bypassFilter, toRefs, useIntervalFn, notNullish, containsProp, hasOwn, throttleFilter, useDebounceFn, useThrottleFn, clamp, syncRef, objectPick, tryOnUnmounted, watchWithFilter, identity, isDef, isWorker } from '@vueuse/shared';\nexport * from '@vueuse/shared';\nimport { isRef, ref, shallowRef, watchEffect, computed, inject, isVue3, version, defineComponent, h, TransitionGroup, shallowReactive, Fragment, watch, getCurrentInstance, customRef, onUpdated, onMounted, readonly, nextTick, reactive, markRaw, unref, getCurrentScope, isVue2, set, del, isReadonly, onBeforeUpdate } from 'vue-demi';\nimport { useEventListener as useEventListener$1 } from '@vueuse/core';\n\nfunction computedAsync(evaluationCallback, initialState, optionsOrRef) {\n  let options;\n  if (isRef(optionsOrRef)) {\n    options = {\n      evaluating: optionsOrRef\n    };\n  } else {\n    options = optionsOrRef || {};\n  }\n  const {\n    lazy = false,\n    evaluating = void 0,\n    shallow = true,\n    onError = noop\n  } = options;\n  const started = ref(!lazy);\n  const current = shallow ? shallowRef(initialState) : ref(initialState);\n  let counter = 0;\n  watchEffect(async (onInvalidate) => {\n    if (!started.value)\n      return;\n    counter++;\n    const counterAtBeginning = counter;\n    let hasFinished = false;\n    if (evaluating) {\n      Promise.resolve().then(() => {\n        evaluating.value = true;\n      });\n    }\n    try {\n      const result = await evaluationCallback((cancelCallback) => {\n        onInvalidate(() => {\n          if (evaluating)\n            evaluating.value = false;\n          if (!hasFinished)\n            cancelCallback();\n        });\n      });\n      if (counterAtBeginning === counter)\n        current.value = result;\n    } catch (e) {\n      onError(e);\n    } finally {\n      if (evaluating && counterAtBeginning === counter)\n        evaluating.value = false;\n      hasFinished = true;\n    }\n  });\n  if (lazy) {\n    return computed(() => {\n      started.value = true;\n      return current.value;\n    });\n  } else {\n    return current;\n  }\n}\n\nfunction computedInject(key, options, defaultSource, treatDefaultAsFactory) {\n  let source = inject(key);\n  if (defaultSource)\n    source = inject(key, defaultSource);\n  if (treatDefaultAsFactory)\n    source = inject(key, defaultSource, treatDefaultAsFactory);\n  if (typeof options === \"function\") {\n    return computed((ctx) => options(source, ctx));\n  } else {\n    return computed({\n      get: (ctx) => options.get(source, ctx),\n      set: options.set\n    });\n  }\n}\n\nfunction createReusableTemplate(options = {}) {\n  if (!isVue3 && !version.startsWith(\"2.7.\")) {\n    if (process.env.NODE_ENV !== \"production\")\n      throw new Error(\"[VueUse] createReusableTemplate only works in Vue 2.7 or above.\");\n    return;\n  }\n  const {\n    inheritAttrs = true\n  } = options;\n  const render = shallowRef();\n  const define = /* #__PURE__ */ defineComponent({\n    setup(_, { slots }) {\n      return () => {\n        render.value = slots.default;\n      };\n    }\n  });\n  const reuse = /* #__PURE__ */ defineComponent({\n    inheritAttrs,\n    setup(_, { attrs, slots }) {\n      return () => {\n        var _a;\n        if (!render.value && process.env.NODE_ENV !== \"production\")\n          throw new Error(\"[VueUse] Failed to find the definition of reusable template\");\n        const vnode = (_a = render.value) == null ? void 0 : _a.call(render, { ...keysToCamelKebabCase(attrs), $slots: slots });\n        return inheritAttrs && (vnode == null ? void 0 : vnode.length) === 1 ? vnode[0] : vnode;\n      };\n    }\n  });\n  return makeDestructurable(\n    { define, reuse },\n    [define, reuse]\n  );\n}\nfunction keysToCamelKebabCase(obj) {\n  const newObj = {};\n  for (const key in obj)\n    newObj[camelize(key)] = obj[key];\n  return newObj;\n}\n\nfunction createTemplatePromise(options = {}) {\n  if (!isVue3) {\n    if (process.env.NODE_ENV !== \"production\")\n      throw new Error(\"[VueUse] createTemplatePromise only works in Vue 3 or above.\");\n    return;\n  }\n  let index = 0;\n  const instances = ref([]);\n  function create(...args) {\n    const props = shallowReactive({\n      key: index++,\n      args,\n      promise: void 0,\n      resolve: () => {\n      },\n      reject: () => {\n      },\n      isResolving: false,\n      options\n    });\n    instances.value.push(props);\n    props.promise = new Promise((_resolve, _reject) => {\n      props.resolve = (v) => {\n        props.isResolving = true;\n        return _resolve(v);\n      };\n      props.reject = _reject;\n    }).finally(() => {\n      props.promise = void 0;\n      const index2 = instances.value.indexOf(props);\n      if (index2 !== -1)\n        instances.value.splice(index2, 1);\n    });\n    return props.promise;\n  }\n  function start(...args) {\n    if (options.singleton && instances.value.length > 0)\n      return instances.value[0].promise;\n    return create(...args);\n  }\n  const component = /* #__PURE__ */ defineComponent((_, { slots }) => {\n    const renderList = () => instances.value.map((props) => {\n      var _a;\n      return h(Fragment, { key: props.key }, (_a = slots.default) == null ? void 0 : _a.call(slots, props));\n    });\n    if (options.transition)\n      return () => h(TransitionGroup, options.transition, renderList);\n    return renderList;\n  });\n  component.start = start;\n  return component;\n}\n\nfunction createUnrefFn(fn) {\n  return function(...args) {\n    return fn.apply(this, args.map((i) => toValue(i)));\n  };\n}\n\nfunction unrefElement(elRef) {\n  var _a;\n  const plain = toValue(elRef);\n  return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nconst defaultWindow = isClient ? window : void 0;\nconst defaultDocument = isClient ? window.document : void 0;\nconst defaultNavigator = isClient ? window.navigator : void 0;\nconst defaultLocation = isClient ? window.location : void 0;\n\nfunction useEventListener(...args) {\n  let target;\n  let events;\n  let listeners;\n  let options;\n  if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n    [events, listeners, options] = args;\n    target = defaultWindow;\n  } else {\n    [target, events, listeners, options] = args;\n  }\n  if (!target)\n    return noop;\n  if (!Array.isArray(events))\n    events = [events];\n  if (!Array.isArray(listeners))\n    listeners = [listeners];\n  const cleanups = [];\n  const cleanup = () => {\n    cleanups.forEach((fn) => fn());\n    cleanups.length = 0;\n  };\n  const register = (el, event, listener, options2) => {\n    el.addEventListener(event, listener, options2);\n    return () => el.removeEventListener(event, listener, options2);\n  };\n  const stopWatch = watch(\n    () => [unrefElement(target), toValue(options)],\n    ([el, options2]) => {\n      cleanup();\n      if (!el)\n        return;\n      const optionsClone = isObject(options2) ? { ...options2 } : options2;\n      cleanups.push(\n        ...events.flatMap((event) => {\n          return listeners.map((listener) => register(el, event, listener, optionsClone));\n        })\n      );\n    },\n    { immediate: true, flush: \"post\" }\n  );\n  const stop = () => {\n    stopWatch();\n    cleanup();\n  };\n  tryOnScopeDispose(stop);\n  return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n  const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n  if (!window)\n    return;\n  if (isIOS && !_iOSWorkaround) {\n    _iOSWorkaround = true;\n    Array.from(window.document.body.children).forEach((el) => el.addEventListener(\"click\", noop));\n    window.document.documentElement.addEventListener(\"click\", noop);\n  }\n  let shouldListen = true;\n  const shouldIgnore = (event) => {\n    return ignore.some((target2) => {\n      if (typeof target2 === \"string\") {\n        return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n      } else {\n        const el = unrefElement(target2);\n        return el && (event.target === el || event.composedPath().includes(el));\n      }\n    });\n  };\n  const listener = (event) => {\n    const el = unrefElement(target);\n    if (!el || el === event.target || event.composedPath().includes(el))\n      return;\n    if (event.detail === 0)\n      shouldListen = !shouldIgnore(event);\n    if (!shouldListen) {\n      shouldListen = true;\n      return;\n    }\n    handler(event);\n  };\n  const cleanup = [\n    useEventListener(window, \"click\", listener, { passive: true, capture }),\n    useEventListener(window, \"pointerdown\", (e) => {\n      const el = unrefElement(target);\n      shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el));\n    }, { passive: true }),\n    detectIframe && useEventListener(window, \"blur\", (event) => {\n      setTimeout(() => {\n        var _a;\n        const el = unrefElement(target);\n        if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement)))\n          handler(event);\n      }, 0);\n    })\n  ].filter(Boolean);\n  const stop = () => cleanup.forEach((fn) => fn());\n  return stop;\n}\n\nfunction createKeyPredicate(keyFilter) {\n  if (typeof keyFilter === \"function\")\n    return keyFilter;\n  else if (typeof keyFilter === \"string\")\n    return (event) => event.key === keyFilter;\n  else if (Array.isArray(keyFilter))\n    return (event) => keyFilter.includes(event.key);\n  return () => true;\n}\nfunction onKeyStroke(...args) {\n  let key;\n  let handler;\n  let options = {};\n  if (args.length === 3) {\n    key = args[0];\n    handler = args[1];\n    options = args[2];\n  } else if (args.length === 2) {\n    if (typeof args[1] === \"object\") {\n      key = true;\n      handler = args[0];\n      options = args[1];\n    } else {\n      key = args[0];\n      handler = args[1];\n    }\n  } else {\n    key = true;\n    handler = args[0];\n  }\n  const {\n    target = defaultWindow,\n    eventName = \"keydown\",\n    passive = false,\n    dedupe = false\n  } = options;\n  const predicate = createKeyPredicate(key);\n  const listener = (e) => {\n    if (e.repeat && toValue(dedupe))\n      return;\n    if (predicate(e))\n      handler(e);\n  };\n  return useEventListener(target, eventName, listener, passive);\n}\nfunction onKeyDown(key, handler, options = {}) {\n  return onKeyStroke(key, handler, { ...options, eventName: \"keydown\" });\n}\nfunction onKeyPressed(key, handler, options = {}) {\n  return onKeyStroke(key, handler, { ...options, eventName: \"keypress\" });\n}\nfunction onKeyUp(key, handler, options = {}) {\n  return onKeyStroke(key, handler, { ...options, eventName: \"keyup\" });\n}\n\nconst DEFAULT_DELAY = 500;\nfunction onLongPress(target, handler, options) {\n  var _a, _b;\n  const elementRef = computed(() => unrefElement(target));\n  let timeout;\n  function clear() {\n    if (timeout) {\n      clearTimeout(timeout);\n      timeout = void 0;\n    }\n  }\n  function onDown(ev) {\n    var _a2, _b2, _c, _d;\n    if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n      return;\n    clear();\n    if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n      ev.preventDefault();\n    if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n      ev.stopPropagation();\n    timeout = setTimeout(\n      () => handler(ev),\n      (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY\n    );\n  }\n  const listenerOptions = {\n    capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n    once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n  };\n  const cleanup = [\n    useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions),\n    useEventListener(elementRef, [\"pointerup\", \"pointerleave\"], clear, listenerOptions)\n  ].filter(Boolean);\n  const stop = () => cleanup.forEach((fn) => fn());\n  return stop;\n}\n\nfunction isFocusedElementEditable() {\n  const { activeElement, body } = document;\n  if (!activeElement)\n    return false;\n  if (activeElement === body)\n    return false;\n  switch (activeElement.tagName) {\n    case \"INPUT\":\n    case \"TEXTAREA\":\n      return true;\n  }\n  return activeElement.hasAttribute(\"contenteditable\");\n}\nfunction isTypedCharValid({\n  keyCode,\n  metaKey,\n  ctrlKey,\n  altKey\n}) {\n  if (metaKey || ctrlKey || altKey)\n    return false;\n  if (keyCode >= 48 && keyCode <= 57)\n    return true;\n  if (keyCode >= 65 && keyCode <= 90)\n    return true;\n  if (keyCode >= 97 && keyCode <= 122)\n    return true;\n  return false;\n}\nfunction onStartTyping(callback, options = {}) {\n  const { document: document2 = defaultDocument } = options;\n  const keydown = (event) => {\n    !isFocusedElementEditable() && isTypedCharValid(event) && callback(event);\n  };\n  if (document2)\n    useEventListener(document2, \"keydown\", keydown, { passive: true });\n}\n\nfunction templateRef(key, initialValue = null) {\n  const instance = getCurrentInstance();\n  let _trigger = () => {\n  };\n  const element = customRef((track, trigger) => {\n    _trigger = trigger;\n    return {\n      get() {\n        var _a, _b;\n        track();\n        return (_b = (_a = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a.$refs[key]) != null ? _b : initialValue;\n      },\n      set() {\n      }\n    };\n  });\n  tryOnMounted(_trigger);\n  onUpdated(_trigger);\n  return element;\n}\n\nfunction useActiveElement(options = {}) {\n  var _a;\n  const {\n    window = defaultWindow,\n    deep = true\n  } = options;\n  const document = (_a = options.document) != null ? _a : window == null ? void 0 : window.document;\n  const getDeepActiveElement = () => {\n    var _a2;\n    let element = document == null ? void 0 : document.activeElement;\n    if (deep) {\n      while (element == null ? void 0 : element.shadowRoot)\n        element = (_a2 = element == null ? void 0 : element.shadowRoot) == null ? void 0 : _a2.activeElement;\n    }\n    return element;\n  };\n  const activeElement = computedWithControl(\n    () => null,\n    () => getDeepActiveElement()\n  );\n  if (window) {\n    useEventListener(window, \"blur\", (event) => {\n      if (event.relatedTarget !== null)\n        return;\n      activeElement.trigger();\n    }, true);\n    useEventListener(window, \"focus\", activeElement.trigger, true);\n  }\n  return activeElement;\n}\n\nfunction useMounted() {\n  const isMounted = ref(false);\n  if (getCurrentInstance()) {\n    onMounted(() => {\n      isMounted.value = true;\n    });\n  }\n  return isMounted;\n}\n\nfunction useSupported(callback) {\n  const isMounted = useMounted();\n  return computed(() => {\n    isMounted.value;\n    return Boolean(callback());\n  });\n}\n\nfunction useRafFn(fn, options = {}) {\n  const {\n    immediate = true,\n    fpsLimit = void 0,\n    window = defaultWindow\n  } = options;\n  const isActive = ref(false);\n  const intervalLimit = fpsLimit ? 1e3 / fpsLimit : null;\n  let previousFrameTimestamp = 0;\n  let rafId = null;\n  function loop(timestamp) {\n    if (!isActive.value || !window)\n      return;\n    const delta = timestamp - (previousFrameTimestamp || timestamp);\n    if (intervalLimit && delta < intervalLimit) {\n      rafId = window.requestAnimationFrame(loop);\n      return;\n    }\n    fn({ delta, timestamp });\n    previousFrameTimestamp = timestamp;\n    rafId = window.requestAnimationFrame(loop);\n  }\n  function resume() {\n    if (!isActive.value && window) {\n      isActive.value = true;\n      rafId = window.requestAnimationFrame(loop);\n    }\n  }\n  function pause() {\n    isActive.value = false;\n    if (rafId != null && window) {\n      window.cancelAnimationFrame(rafId);\n      rafId = null;\n    }\n  }\n  if (immediate)\n    resume();\n  tryOnScopeDispose(pause);\n  return {\n    isActive: readonly(isActive),\n    pause,\n    resume\n  };\n}\n\nfunction useAnimate(target, keyframes, options) {\n  let config;\n  let animateOptions;\n  if (isObject(options)) {\n    config = options;\n    animateOptions = objectOmit(options, [\"window\", \"immediate\", \"commitStyles\", \"persist\", \"onReady\", \"onError\"]);\n  } else {\n    config = { duration: options };\n    animateOptions = options;\n  }\n  const {\n    window = defaultWindow,\n    immediate = true,\n    commitStyles,\n    persist,\n    playbackRate: _playbackRate = 1,\n    onReady,\n    onError = (e) => {\n      console.error(e);\n    }\n  } = config;\n  const isSupported = useSupported(() => window && HTMLElement && \"animate\" in HTMLElement.prototype);\n  const animate = shallowRef(void 0);\n  const store = shallowReactive({\n    startTime: null,\n    currentTime: null,\n    timeline: null,\n    playbackRate: _playbackRate,\n    pending: false,\n    playState: immediate ? \"idle\" : \"paused\",\n    replaceState: \"active\"\n  });\n  const pending = computed(() => store.pending);\n  const playState = computed(() => store.playState);\n  const replaceState = computed(() => store.replaceState);\n  const startTime = computed({\n    get() {\n      return store.startTime;\n    },\n    set(value) {\n      store.startTime = value;\n      if (animate.value)\n        animate.value.startTime = value;\n    }\n  });\n  const currentTime = computed({\n    get() {\n      return store.currentTime;\n    },\n    set(value) {\n      store.currentTime = value;\n      if (animate.value) {\n        animate.value.currentTime = value;\n        syncResume();\n      }\n    }\n  });\n  const timeline = computed({\n    get() {\n      return store.timeline;\n    },\n    set(value) {\n      store.timeline = value;\n      if (animate.value)\n        animate.value.timeline = value;\n    }\n  });\n  const playbackRate = computed({\n    get() {\n      return store.playbackRate;\n    },\n    set(value) {\n      store.playbackRate = value;\n      if (animate.value)\n        animate.value.playbackRate = value;\n    }\n  });\n  const play = () => {\n    if (animate.value) {\n      try {\n        animate.value.play();\n        syncResume();\n      } catch (e) {\n        syncPause();\n        onError(e);\n      }\n    } else {\n      update();\n    }\n  };\n  const pause = () => {\n    var _a;\n    try {\n      (_a = animate.value) == null ? void 0 : _a.pause();\n      syncPause();\n    } catch (e) {\n      onError(e);\n    }\n  };\n  const reverse = () => {\n    var _a;\n    !animate.value && update();\n    try {\n      (_a = animate.value) == null ? void 0 : _a.reverse();\n      syncResume();\n    } catch (e) {\n      syncPause();\n      onError(e);\n    }\n  };\n  const finish = () => {\n    var _a;\n    try {\n      (_a = animate.value) == null ? void 0 : _a.finish();\n      syncPause();\n    } catch (e) {\n      onError(e);\n    }\n  };\n  const cancel = () => {\n    var _a;\n    try {\n      (_a = animate.value) == null ? void 0 : _a.cancel();\n      syncPause();\n    } catch (e) {\n      onError(e);\n    }\n  };\n  watch(() => unrefElement(target), (el) => {\n    el && update();\n  });\n  watch(() => keyframes, (value) => {\n    !animate.value && update();\n    if (!unrefElement(target) && animate.value) {\n      animate.value.effect = new KeyframeEffect(\n        unrefElement(target),\n        toValue(value),\n        animateOptions\n      );\n    }\n  }, { deep: true });\n  tryOnMounted(() => {\n    nextTick(() => update(true));\n  });\n  tryOnScopeDispose(cancel);\n  function update(init) {\n    const el = unrefElement(target);\n    if (!isSupported.value || !el)\n      return;\n    animate.value = el.animate(toValue(keyframes), animateOptions);\n    if (commitStyles)\n      animate.value.commitStyles();\n    if (persist)\n      animate.value.persist();\n    if (_playbackRate !== 1)\n      animate.value.playbackRate = _playbackRate;\n    if (init && !immediate)\n      animate.value.pause();\n    else\n      syncResume();\n    onReady == null ? void 0 : onReady(animate.value);\n  }\n  useEventListener(animate, [\"cancel\", \"finish\", \"remove\"], syncPause);\n  const { resume: resumeRef, pause: pauseRef } = useRafFn(() => {\n    if (!animate.value)\n      return;\n    store.pending = animate.value.pending;\n    store.playState = animate.value.playState;\n    store.replaceState = animate.value.replaceState;\n    store.startTime = animate.value.startTime;\n    store.currentTime = animate.value.currentTime;\n    store.timeline = animate.value.timeline;\n    store.playbackRate = animate.value.playbackRate;\n  }, { immediate: false });\n  function syncResume() {\n    if (isSupported.value)\n      resumeRef();\n  }\n  function syncPause() {\n    if (isSupported.value && window)\n      window.requestAnimationFrame(pauseRef);\n  }\n  return {\n    isSupported,\n    animate,\n    // actions\n    play,\n    pause,\n    reverse,\n    finish,\n    cancel,\n    // state\n    pending,\n    playState,\n    replaceState,\n    startTime,\n    currentTime,\n    timeline,\n    playbackRate\n  };\n}\n\nfunction useAsyncQueue(tasks, options) {\n  const {\n    interrupt = true,\n    onError = noop,\n    onFinished = noop,\n    signal\n  } = options || {};\n  const promiseState = {\n    aborted: \"aborted\",\n    fulfilled: \"fulfilled\",\n    pending: \"pending\",\n    rejected: \"rejected\"\n  };\n  const initialResult = Array.from(Array.from({ length: tasks.length }), () => ({ state: promiseState.pending, data: null }));\n  const result = reactive(initialResult);\n  const activeIndex = ref(-1);\n  if (!tasks || tasks.length === 0) {\n    onFinished();\n    return {\n      activeIndex,\n      result\n    };\n  }\n  function updateResult(state, res) {\n    activeIndex.value++;\n    result[activeIndex.value].data = res;\n    result[activeIndex.value].state = state;\n  }\n  tasks.reduce((prev, curr) => {\n    return prev.then((prevRes) => {\n      var _a;\n      if (signal == null ? void 0 : signal.aborted) {\n        updateResult(promiseState.aborted, new Error(\"aborted\"));\n        return;\n      }\n      if (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) {\n        onFinished();\n        return;\n      }\n      const done = curr(prevRes).then((currentRes) => {\n        updateResult(promiseState.fulfilled, currentRes);\n        activeIndex.value === tasks.length - 1 && onFinished();\n        return currentRes;\n      });\n      if (!signal)\n        return done;\n      return Promise.race([done, whenAborted(signal)]);\n    }).catch((e) => {\n      if (signal == null ? void 0 : signal.aborted) {\n        updateResult(promiseState.aborted, e);\n        return e;\n      }\n      updateResult(promiseState.rejected, e);\n      onError();\n      return e;\n    });\n  }, Promise.resolve());\n  return {\n    activeIndex,\n    result\n  };\n}\nfunction whenAborted(signal) {\n  return new Promise((resolve, reject) => {\n    const error = new Error(\"aborted\");\n    if (signal.aborted)\n      reject(error);\n    else\n      signal.addEventListener(\"abort\", () => reject(error), { once: true });\n  });\n}\n\nfunction useAsyncState(promise, initialState, options) {\n  const {\n    immediate = true,\n    delay = 0,\n    onError = noop,\n    onSuccess = noop,\n    resetOnExecute = true,\n    shallow = true,\n    throwError\n  } = options != null ? options : {};\n  const state = shallow ? shallowRef(initialState) : ref(initialState);\n  const isReady = ref(false);\n  const isLoading = ref(false);\n  const error = shallowRef(void 0);\n  async function execute(delay2 = 0, ...args) {\n    if (resetOnExecute)\n      state.value = initialState;\n    error.value = void 0;\n    isReady.value = false;\n    isLoading.value = true;\n    if (delay2 > 0)\n      await promiseTimeout(delay2);\n    const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n    try {\n      const data = await _promise;\n      state.value = data;\n      isReady.value = true;\n      onSuccess(data);\n    } catch (e) {\n      error.value = e;\n      onError(e);\n      if (throwError)\n        throw e;\n    } finally {\n      isLoading.value = false;\n    }\n    return state.value;\n  }\n  if (immediate)\n    execute(delay);\n  const shell = {\n    state,\n    isReady,\n    isLoading,\n    error,\n    execute\n  };\n  function waitUntilIsLoaded() {\n    return new Promise((resolve, reject) => {\n      until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n    });\n  }\n  return {\n    ...shell,\n    then(onFulfilled, onRejected) {\n      return waitUntilIsLoaded().then(onFulfilled, onRejected);\n    }\n  };\n}\n\nconst defaults = {\n  array: (v) => JSON.stringify(v),\n  object: (v) => JSON.stringify(v),\n  set: (v) => JSON.stringify(Array.from(v)),\n  map: (v) => JSON.stringify(Object.fromEntries(v)),\n  null: () => \"\"\n};\nfunction getDefaultSerialization(target) {\n  if (!target)\n    return defaults.null;\n  if (target instanceof Map)\n    return defaults.map;\n  else if (target instanceof Set)\n    return defaults.set;\n  else if (Array.isArray(target))\n    return defaults.array;\n  else\n    return defaults.object;\n}\n\nfunction useBase64(target, options) {\n  const base64 = ref(\"\");\n  const promise = ref();\n  function execute() {\n    if (!isClient)\n      return;\n    promise.value = new Promise((resolve, reject) => {\n      try {\n        const _target = toValue(target);\n        if (_target == null) {\n          resolve(\"\");\n        } else if (typeof _target === \"string\") {\n          resolve(blobToBase64(new Blob([_target], { type: \"text/plain\" })));\n        } else if (_target instanceof Blob) {\n          resolve(blobToBase64(_target));\n        } else if (_target instanceof ArrayBuffer) {\n          resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target))));\n        } else if (_target instanceof HTMLCanvasElement) {\n          resolve(_target.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n        } else if (_target instanceof HTMLImageElement) {\n          const img = _target.cloneNode(false);\n          img.crossOrigin = \"Anonymous\";\n          imgLoaded(img).then(() => {\n            const canvas = document.createElement(\"canvas\");\n            const ctx = canvas.getContext(\"2d\");\n            canvas.width = img.width;\n            canvas.height = img.height;\n            ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n            resolve(canvas.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n          }).catch(reject);\n        } else if (typeof _target === \"object\") {\n          const _serializeFn = (options == null ? void 0 : options.serializer) || getDefaultSerialization(_target);\n          const serialized = _serializeFn(_target);\n          return resolve(blobToBase64(new Blob([serialized], { type: \"application/json\" })));\n        } else {\n          reject(new Error(\"target is unsupported types\"));\n        }\n      } catch (error) {\n        reject(error);\n      }\n    });\n    promise.value.then((res) => base64.value = res);\n    return promise.value;\n  }\n  if (isRef(target) || typeof target === \"function\")\n    watch(target, execute, { immediate: true });\n  else\n    execute();\n  return {\n    base64,\n    promise,\n    execute\n  };\n}\nfunction imgLoaded(img) {\n  return new Promise((resolve, reject) => {\n    if (!img.complete) {\n      img.onload = () => {\n        resolve();\n      };\n      img.onerror = reject;\n    } else {\n      resolve();\n    }\n  });\n}\nfunction blobToBase64(blob) {\n  return new Promise((resolve, reject) => {\n    const fr = new FileReader();\n    fr.onload = (e) => {\n      resolve(e.target.result);\n    };\n    fr.onerror = reject;\n    fr.readAsDataURL(blob);\n  });\n}\n\nfunction useBattery(options = {}) {\n  const { navigator = defaultNavigator } = options;\n  const events = [\"chargingchange\", \"chargingtimechange\", \"dischargingtimechange\", \"levelchange\"];\n  const isSupported = useSupported(() => navigator && \"getBattery\" in navigator);\n  const charging = ref(false);\n  const chargingTime = ref(0);\n  const dischargingTime = ref(0);\n  const level = ref(1);\n  let battery;\n  function updateBatteryInfo() {\n    charging.value = this.charging;\n    chargingTime.value = this.chargingTime || 0;\n    dischargingTime.value = this.dischargingTime || 0;\n    level.value = this.level;\n  }\n  if (isSupported.value) {\n    navigator.getBattery().then((_battery) => {\n      battery = _battery;\n      updateBatteryInfo.call(battery);\n      useEventListener(battery, events, updateBatteryInfo, { passive: true });\n    });\n  }\n  return {\n    isSupported,\n    charging,\n    chargingTime,\n    dischargingTime,\n    level\n  };\n}\n\nfunction useBluetooth(options) {\n  let {\n    acceptAllDevices = false\n  } = options || {};\n  const {\n    filters = void 0,\n    optionalServices = void 0,\n    navigator = defaultNavigator\n  } = options || {};\n  const isSupported = useSupported(() => navigator && \"bluetooth\" in navigator);\n  const device = shallowRef(void 0);\n  const error = shallowRef(null);\n  watch(device, () => {\n    connectToBluetoothGATTServer();\n  });\n  async function requestDevice() {\n    if (!isSupported.value)\n      return;\n    error.value = null;\n    if (filters && filters.length > 0)\n      acceptAllDevices = false;\n    try {\n      device.value = await (navigator == null ? void 0 : navigator.bluetooth.requestDevice({\n        acceptAllDevices,\n        filters,\n        optionalServices\n      }));\n    } catch (err) {\n      error.value = err;\n    }\n  }\n  const server = ref();\n  const isConnected = computed(() => {\n    var _a;\n    return ((_a = server.value) == null ? void 0 : _a.connected) || false;\n  });\n  async function connectToBluetoothGATTServer() {\n    error.value = null;\n    if (device.value && device.value.gatt) {\n      device.value.addEventListener(\"gattserverdisconnected\", () => {\n      });\n      try {\n        server.value = await device.value.gatt.connect();\n      } catch (err) {\n        error.value = err;\n      }\n    }\n  }\n  tryOnMounted(() => {\n    var _a;\n    if (device.value)\n      (_a = device.value.gatt) == null ? void 0 : _a.connect();\n  });\n  tryOnScopeDispose(() => {\n    var _a;\n    if (device.value)\n      (_a = device.value.gatt) == null ? void 0 : _a.disconnect();\n  });\n  return {\n    isSupported,\n    isConnected,\n    // Device:\n    device,\n    requestDevice,\n    // Server:\n    server,\n    // Errors:\n    error\n  };\n}\n\nfunction useMediaQuery(query, options = {}) {\n  const { window = defaultWindow } = options;\n  const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n  let mediaQuery;\n  const matches = ref(false);\n  const handler = (event) => {\n    matches.value = event.matches;\n  };\n  const cleanup = () => {\n    if (!mediaQuery)\n      return;\n    if (\"removeEventListener\" in mediaQuery)\n      mediaQuery.removeEventListener(\"change\", handler);\n    else\n      mediaQuery.removeListener(handler);\n  };\n  const stopWatch = watchEffect(() => {\n    if (!isSupported.value)\n      return;\n    cleanup();\n    mediaQuery = window.matchMedia(toValue(query));\n    if (\"addEventListener\" in mediaQuery)\n      mediaQuery.addEventListener(\"change\", handler);\n    else\n      mediaQuery.addListener(handler);\n    matches.value = mediaQuery.matches;\n  });\n  tryOnScopeDispose(() => {\n    stopWatch();\n    cleanup();\n    mediaQuery = void 0;\n  });\n  return matches;\n}\n\nconst breakpointsTailwind = {\n  \"sm\": 640,\n  \"md\": 768,\n  \"lg\": 1024,\n  \"xl\": 1280,\n  \"2xl\": 1536\n};\nconst breakpointsBootstrapV5 = {\n  xs: 0,\n  sm: 576,\n  md: 768,\n  lg: 992,\n  xl: 1200,\n  xxl: 1400\n};\nconst breakpointsVuetify = {\n  xs: 600,\n  sm: 960,\n  md: 1264,\n  lg: 1904\n};\nconst breakpointsAntDesign = {\n  xs: 480,\n  sm: 576,\n  md: 768,\n  lg: 992,\n  xl: 1200,\n  xxl: 1600\n};\nconst breakpointsQuasar = {\n  xs: 600,\n  sm: 1024,\n  md: 1440,\n  lg: 1920\n};\nconst breakpointsSematic = {\n  mobileS: 320,\n  mobileM: 375,\n  mobileL: 425,\n  tablet: 768,\n  laptop: 1024,\n  laptopL: 1440,\n  desktop4K: 2560\n};\nconst breakpointsMasterCss = {\n  \"3xs\": 360,\n  \"2xs\": 480,\n  \"xs\": 600,\n  \"sm\": 768,\n  \"md\": 1024,\n  \"lg\": 1280,\n  \"xl\": 1440,\n  \"2xl\": 1600,\n  \"3xl\": 1920,\n  \"4xl\": 2560\n};\nconst breakpointsPrimeFlex = {\n  sm: 576,\n  md: 768,\n  lg: 992,\n  xl: 1200\n};\n\nfunction useBreakpoints(breakpoints, options = {}) {\n  function getValue(k, delta) {\n    let v = breakpoints[k];\n    if (delta != null)\n      v = increaseWithUnit(v, delta);\n    if (typeof v === \"number\")\n      v = `${v}px`;\n    return v;\n  }\n  const { window = defaultWindow } = options;\n  function match(query) {\n    if (!window)\n      return false;\n    return window.matchMedia(query).matches;\n  }\n  const greaterOrEqual = (k) => {\n    return useMediaQuery(`(min-width: ${getValue(k)})`, options);\n  };\n  const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {\n    Object.defineProperty(shortcuts, k, {\n      get: () => greaterOrEqual(k),\n      enumerable: true,\n      configurable: true\n    });\n    return shortcuts;\n  }, {});\n  return Object.assign(shortcutMethods, {\n    greater(k) {\n      return useMediaQuery(`(min-width: ${getValue(k, 0.1)})`, options);\n    },\n    greaterOrEqual,\n    smaller(k) {\n      return useMediaQuery(`(max-width: ${getValue(k, -0.1)})`, options);\n    },\n    smallerOrEqual(k) {\n      return useMediaQuery(`(max-width: ${getValue(k)})`, options);\n    },\n    between(a, b) {\n      return useMediaQuery(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`, options);\n    },\n    isGreater(k) {\n      return match(`(min-width: ${getValue(k, 0.1)})`);\n    },\n    isGreaterOrEqual(k) {\n      return match(`(min-width: ${getValue(k)})`);\n    },\n    isSmaller(k) {\n      return match(`(max-width: ${getValue(k, -0.1)})`);\n    },\n    isSmallerOrEqual(k) {\n      return match(`(max-width: ${getValue(k)})`);\n    },\n    isInBetween(a, b) {\n      return match(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`);\n    },\n    current() {\n      const points = Object.keys(breakpoints).map((i) => [i, greaterOrEqual(i)]);\n      return computed(() => points.filter(([, v]) => v.value).map(([k]) => k));\n    }\n  });\n}\n\nfunction useBroadcastChannel(options) {\n  const {\n    name,\n    window = defaultWindow\n  } = options;\n  const isSupported = useSupported(() => window && \"BroadcastChannel\" in window);\n  const isClosed = ref(false);\n  const channel = ref();\n  const data = ref();\n  const error = shallowRef(null);\n  const post = (data2) => {\n    if (channel.value)\n      channel.value.postMessage(data2);\n  };\n  const close = () => {\n    if (channel.value)\n      channel.value.close();\n    isClosed.value = true;\n  };\n  if (isSupported.value) {\n    tryOnMounted(() => {\n      error.value = null;\n      channel.value = new BroadcastChannel(name);\n      channel.value.addEventListener(\"message\", (e) => {\n        data.value = e.data;\n      }, { passive: true });\n      channel.value.addEventListener(\"messageerror\", (e) => {\n        error.value = e;\n      }, { passive: true });\n      channel.value.addEventListener(\"close\", () => {\n        isClosed.value = true;\n      });\n    });\n  }\n  tryOnScopeDispose(() => {\n    close();\n  });\n  return {\n    isSupported,\n    channel,\n    data,\n    post,\n    close,\n    error,\n    isClosed\n  };\n}\n\nconst WRITABLE_PROPERTIES = [\n  \"hash\",\n  \"host\",\n  \"hostname\",\n  \"href\",\n  \"pathname\",\n  \"port\",\n  \"protocol\",\n  \"search\"\n];\nfunction useBrowserLocation(options = {}) {\n  const { window = defaultWindow } = options;\n  const refs = Object.fromEntries(\n    WRITABLE_PROPERTIES.map((key) => [key, ref()])\n  );\n  for (const [key, ref2] of objectEntries(refs)) {\n    watch(ref2, (value) => {\n      if (!(window == null ? void 0 : window.location) || window.location[key] === value)\n        return;\n      window.location[key] = value;\n    });\n  }\n  const buildState = (trigger) => {\n    var _a;\n    const { state: state2, length } = (window == null ? void 0 : window.history) || {};\n    const { origin } = (window == null ? void 0 : window.location) || {};\n    for (const key of WRITABLE_PROPERTIES)\n      refs[key].value = (_a = window == null ? void 0 : window.location) == null ? void 0 : _a[key];\n    return reactive({\n      trigger,\n      state: state2,\n      length,\n      origin,\n      ...refs\n    });\n  };\n  const state = ref(buildState(\"load\"));\n  if (window) {\n    useEventListener(window, \"popstate\", () => state.value = buildState(\"popstate\"), { passive: true });\n    useEventListener(window, \"hashchange\", () => state.value = buildState(\"hashchange\"), { passive: true });\n  }\n  return state;\n}\n\nfunction useCached(refValue, comparator = (a, b) => a === b, watchOptions) {\n  const cachedValue = ref(refValue.value);\n  watch(() => refValue.value, (value) => {\n    if (!comparator(value, cachedValue.value))\n      cachedValue.value = value;\n  }, watchOptions);\n  return cachedValue;\n}\n\nfunction usePermission(permissionDesc, options = {}) {\n  const {\n    controls = false,\n    navigator = defaultNavigator\n  } = options;\n  const isSupported = useSupported(() => navigator && \"permissions\" in navigator);\n  let permissionStatus;\n  const desc = typeof permissionDesc === \"string\" ? { name: permissionDesc } : permissionDesc;\n  const state = ref();\n  const onChange = () => {\n    if (permissionStatus)\n      state.value = permissionStatus.state;\n  };\n  const query = createSingletonPromise(async () => {\n    if (!isSupported.value)\n      return;\n    if (!permissionStatus) {\n      try {\n        permissionStatus = await navigator.permissions.query(desc);\n        useEventListener(permissionStatus, \"change\", onChange);\n        onChange();\n      } catch (e) {\n        state.value = \"prompt\";\n      }\n    }\n    return permissionStatus;\n  });\n  query();\n  if (controls) {\n    return {\n      state,\n      isSupported,\n      query\n    };\n  } else {\n    return state;\n  }\n}\n\nfunction useClipboard(options = {}) {\n  const {\n    navigator = defaultNavigator,\n    read = false,\n    source,\n    copiedDuring = 1500,\n    legacy = false\n  } = options;\n  const isClipboardApiSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n  const permissionRead = usePermission(\"clipboard-read\");\n  const permissionWrite = usePermission(\"clipboard-write\");\n  const isSupported = computed(() => isClipboardApiSupported.value || legacy);\n  const text = ref(\"\");\n  const copied = ref(false);\n  const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n  function updateText() {\n    if (isClipboardApiSupported.value && permissionRead.value !== \"denied\") {\n      navigator.clipboard.readText().then((value) => {\n        text.value = value;\n      });\n    } else {\n      text.value = legacyRead();\n    }\n  }\n  if (isSupported.value && read)\n    useEventListener([\"copy\", \"cut\"], updateText);\n  async function copy(value = toValue(source)) {\n    if (isSupported.value && value != null) {\n      if (isClipboardApiSupported.value && permissionWrite.value !== \"denied\")\n        await navigator.clipboard.writeText(value);\n      else\n        legacyCopy(value);\n      text.value = value;\n      copied.value = true;\n      timeout.start();\n    }\n  }\n  function legacyCopy(value) {\n    const ta = document.createElement(\"textarea\");\n    ta.value = value != null ? value : \"\";\n    ta.style.position = \"absolute\";\n    ta.style.opacity = \"0\";\n    document.body.appendChild(ta);\n    ta.select();\n    document.execCommand(\"copy\");\n    ta.remove();\n  }\n  function legacyRead() {\n    var _a, _b, _c;\n    return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : \"\";\n  }\n  return {\n    isSupported,\n    text,\n    copied,\n    copy\n  };\n}\n\nfunction useClipboardItems(options = {}) {\n  const {\n    navigator = defaultNavigator,\n    read = false,\n    source,\n    copiedDuring = 1500\n  } = options;\n  const isSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n  const content = ref([]);\n  const copied = ref(false);\n  const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n  function updateContent() {\n    if (isSupported.value) {\n      navigator.clipboard.read().then((items) => {\n        content.value = items;\n      });\n    }\n  }\n  if (isSupported.value && read)\n    useEventListener([\"copy\", \"cut\"], updateContent);\n  async function copy(value = toValue(source)) {\n    if (isSupported.value && value != null) {\n      await navigator.clipboard.write(value);\n      content.value = value;\n      copied.value = true;\n      timeout.start();\n    }\n  }\n  return {\n    isSupported,\n    content,\n    copied,\n    copy\n  };\n}\n\nfunction cloneFnJSON(source) {\n  return JSON.parse(JSON.stringify(source));\n}\nfunction useCloned(source, options = {}) {\n  const cloned = ref({});\n  const {\n    manual,\n    clone = cloneFnJSON,\n    // watch options\n    deep = true,\n    immediate = true\n  } = options;\n  function sync() {\n    cloned.value = clone(toValue(source));\n  }\n  if (!manual && (isRef(source) || typeof source === \"function\")) {\n    watch(source, sync, {\n      ...options,\n      deep,\n      immediate\n    });\n  } else {\n    sync();\n  }\n  return { cloned, sync };\n}\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n  if (!(globalKey in _global))\n    _global[globalKey] = _global[globalKey] || {};\n  return _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n  return handlers[key] || fallback;\n}\nfunction setSSRHandler(key, fn) {\n  handlers[key] = fn;\n}\n\nfunction guessSerializerType(rawInit) {\n  return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nconst StorageSerializers = {\n  boolean: {\n    read: (v) => v === \"true\",\n    write: (v) => String(v)\n  },\n  object: {\n    read: (v) => JSON.parse(v),\n    write: (v) => JSON.stringify(v)\n  },\n  number: {\n    read: (v) => Number.parseFloat(v),\n    write: (v) => String(v)\n  },\n  any: {\n    read: (v) => v,\n    write: (v) => String(v)\n  },\n  string: {\n    read: (v) => v,\n    write: (v) => String(v)\n  },\n  map: {\n    read: (v) => new Map(JSON.parse(v)),\n    write: (v) => JSON.stringify(Array.from(v.entries()))\n  },\n  set: {\n    read: (v) => new Set(JSON.parse(v)),\n    write: (v) => JSON.stringify(Array.from(v))\n  },\n  date: {\n    read: (v) => new Date(v),\n    write: (v) => v.toISOString()\n  }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n  var _a;\n  const {\n    flush = \"pre\",\n    deep = true,\n    listenToStorageChanges = true,\n    writeDefaults = true,\n    mergeDefaults = false,\n    shallow,\n    window = defaultWindow,\n    eventFilter,\n    onError = (e) => {\n      console.error(e);\n    },\n    initOnMounted\n  } = options;\n  const data = (shallow ? shallowRef : ref)(typeof defaults === \"function\" ? defaults() : defaults);\n  if (!storage) {\n    try {\n      storage = getSSRHandler(\"getDefaultStorage\", () => {\n        var _a2;\n        return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n      })();\n    } catch (e) {\n      onError(e);\n    }\n  }\n  if (!storage)\n    return data;\n  const rawInit = toValue(defaults);\n  const type = guessSerializerType(rawInit);\n  const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n  const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(\n    data,\n    () => write(data.value),\n    { flush, deep, eventFilter }\n  );\n  if (window && listenToStorageChanges) {\n    tryOnMounted(() => {\n      useEventListener(window, \"storage\", update);\n      useEventListener(window, customStorageEventName, updateFromCustomEvent);\n      if (initOnMounted)\n        update();\n    });\n  }\n  if (!initOnMounted)\n    update();\n  return data;\n  function write(v) {\n    try {\n      if (v == null) {\n        storage.removeItem(key);\n      } else {\n        const serialized = serializer.write(v);\n        const oldValue = storage.getItem(key);\n        if (oldValue !== serialized) {\n          storage.setItem(key, serialized);\n          if (window) {\n            window.dispatchEvent(new CustomEvent(customStorageEventName, {\n              detail: {\n                key,\n                oldValue,\n                newValue: serialized,\n                storageArea: storage\n              }\n            }));\n          }\n        }\n      }\n    } catch (e) {\n      onError(e);\n    }\n  }\n  function read(event) {\n    const rawValue = event ? event.newValue : storage.getItem(key);\n    if (rawValue == null) {\n      if (writeDefaults && rawInit !== null)\n        storage.setItem(key, serializer.write(rawInit));\n      return rawInit;\n    } else if (!event && mergeDefaults) {\n      const value = serializer.read(rawValue);\n      if (typeof mergeDefaults === \"function\")\n        return mergeDefaults(value, rawInit);\n      else if (type === \"object\" && !Array.isArray(value))\n        return { ...rawInit, ...value };\n      return value;\n    } else if (typeof rawValue !== \"string\") {\n      return rawValue;\n    } else {\n      return serializer.read(rawValue);\n    }\n  }\n  function updateFromCustomEvent(event) {\n    update(event.detail);\n  }\n  function update(event) {\n    if (event && event.storageArea !== storage)\n      return;\n    if (event && event.key == null) {\n      data.value = rawInit;\n      return;\n    }\n    if (event && event.key !== key)\n      return;\n    pauseWatch();\n    try {\n      if ((event == null ? void 0 : event.newValue) !== serializer.write(data.value))\n        data.value = read(event);\n    } catch (e) {\n      onError(e);\n    } finally {\n      if (event)\n        nextTick(resumeWatch);\n      else\n        resumeWatch();\n    }\n  }\n}\n\nfunction usePreferredDark(options) {\n  return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nfunction useColorMode(options = {}) {\n  const {\n    selector = \"html\",\n    attribute = \"class\",\n    initialValue = \"auto\",\n    window = defaultWindow,\n    storage,\n    storageKey = \"vueuse-color-scheme\",\n    listenToStorageChanges = true,\n    storageRef,\n    emitAuto,\n    disableTransition = true\n  } = options;\n  const modes = {\n    auto: \"\",\n    light: \"light\",\n    dark: \"dark\",\n    ...options.modes || {}\n  };\n  const preferredDark = usePreferredDark({ window });\n  const system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n  const store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n  const state = computed(() => store.value === \"auto\" ? system.value : store.value);\n  const updateHTMLAttrs = getSSRHandler(\n    \"updateHTMLAttrs\",\n    (selector2, attribute2, value) => {\n      const el = typeof selector2 === \"string\" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);\n      if (!el)\n        return;\n      let style;\n      if (disableTransition) {\n        style = window.document.createElement(\"style\");\n        const styleString = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\n        style.appendChild(document.createTextNode(styleString));\n        window.document.head.appendChild(style);\n      }\n      if (attribute2 === \"class\") {\n        const current = value.split(/\\s/g);\n        Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n          if (current.includes(v))\n            el.classList.add(v);\n          else\n            el.classList.remove(v);\n        });\n      } else {\n        el.setAttribute(attribute2, value);\n      }\n      if (disableTransition) {\n        window.getComputedStyle(style).opacity;\n        document.head.removeChild(style);\n      }\n    }\n  );\n  function defaultOnChanged(mode) {\n    var _a;\n    updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);\n  }\n  function onChanged(mode) {\n    if (options.onChanged)\n      options.onChanged(mode, defaultOnChanged);\n    else\n      defaultOnChanged(mode);\n  }\n  watch(state, onChanged, { flush: \"post\", immediate: true });\n  tryOnMounted(() => onChanged(state.value));\n  const auto = computed({\n    get() {\n      return emitAuto ? store.value : state.value;\n    },\n    set(v) {\n      store.value = v;\n    }\n  });\n  try {\n    return Object.assign(auto, { store, system, state });\n  } catch (e) {\n    return auto;\n  }\n}\n\nfunction useConfirmDialog(revealed = ref(false)) {\n  const confirmHook = createEventHook();\n  const cancelHook = createEventHook();\n  const revealHook = createEventHook();\n  let _resolve = noop;\n  const reveal = (data) => {\n    revealHook.trigger(data);\n    revealed.value = true;\n    return new Promise((resolve) => {\n      _resolve = resolve;\n    });\n  };\n  const confirm = (data) => {\n    revealed.value = false;\n    confirmHook.trigger(data);\n    _resolve({ data, isCanceled: false });\n  };\n  const cancel = (data) => {\n    revealed.value = false;\n    cancelHook.trigger(data);\n    _resolve({ data, isCanceled: true });\n  };\n  return {\n    isRevealed: computed(() => revealed.value),\n    reveal,\n    confirm,\n    cancel,\n    onReveal: revealHook.on,\n    onConfirm: confirmHook.on,\n    onCancel: cancelHook.on\n  };\n}\n\nfunction useMutationObserver(target, callback, options = {}) {\n  const { window = defaultWindow, ...mutationOptions } = options;\n  let observer;\n  const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n  const cleanup = () => {\n    if (observer) {\n      observer.disconnect();\n      observer = void 0;\n    }\n  };\n  const stopWatch = watch(\n    () => unrefElement(target),\n    (el) => {\n      cleanup();\n      if (isSupported.value && window && el) {\n        observer = new MutationObserver(callback);\n        observer.observe(el, mutationOptions);\n      }\n    },\n    { immediate: true }\n  );\n  const takeRecords = () => {\n    return observer == null ? void 0 : observer.takeRecords();\n  };\n  const stop = () => {\n    cleanup();\n    stopWatch();\n  };\n  tryOnScopeDispose(stop);\n  return {\n    isSupported,\n    stop,\n    takeRecords\n  };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n  const { window = defaultWindow, initialValue = \"\", observe = false } = options;\n  const variable = ref(initialValue);\n  const elRef = computed(() => {\n    var _a;\n    return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n  });\n  function updateCssVar() {\n    var _a;\n    const key = toValue(prop);\n    const el = toValue(elRef);\n    if (el && window) {\n      const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n      variable.value = value || initialValue;\n    }\n  }\n  if (observe) {\n    useMutationObserver(elRef, updateCssVar, {\n      attributeFilter: [\"style\", \"class\"],\n      window\n    });\n  }\n  watch(\n    [elRef, () => toValue(prop)],\n    updateCssVar,\n    { immediate: true }\n  );\n  watch(\n    variable,\n    (val) => {\n      var _a;\n      if ((_a = elRef.value) == null ? void 0 : _a.style)\n        elRef.value.style.setProperty(toValue(prop), val);\n    }\n  );\n  return variable;\n}\n\nfunction useCurrentElement() {\n  const vm = getCurrentInstance();\n  const currentElement = computedWithControl(\n    () => null,\n    () => vm.proxy.$el\n  );\n  onUpdated(currentElement.trigger);\n  onMounted(currentElement.trigger);\n  return currentElement;\n}\n\nfunction useCycleList(list, options) {\n  const state = shallowRef(getInitialValue());\n  const listRef = toRef(list);\n  const index = computed({\n    get() {\n      var _a;\n      const targetList = listRef.value;\n      let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, targetList) : targetList.indexOf(state.value);\n      if (index2 < 0)\n        index2 = (_a = options == null ? void 0 : options.fallbackIndex) != null ? _a : 0;\n      return index2;\n    },\n    set(v) {\n      set(v);\n    }\n  });\n  function set(i) {\n    const targetList = listRef.value;\n    const length = targetList.length;\n    const index2 = (i % length + length) % length;\n    const value = targetList[index2];\n    state.value = value;\n    return value;\n  }\n  function shift(delta = 1) {\n    return set(index.value + delta);\n  }\n  function next(n = 1) {\n    return shift(n);\n  }\n  function prev(n = 1) {\n    return shift(-n);\n  }\n  function getInitialValue() {\n    var _a, _b;\n    return (_b = toValue((_a = options == null ? void 0 : options.initialValue) != null ? _a : toValue(list)[0])) != null ? _b : void 0;\n  }\n  watch(listRef, () => set(index.value));\n  return {\n    state,\n    index,\n    next,\n    prev\n  };\n}\n\nfunction useDark(options = {}) {\n  const {\n    valueDark = \"dark\",\n    valueLight = \"\"\n  } = options;\n  const mode = useColorMode({\n    ...options,\n    onChanged: (mode2, defaultHandler) => {\n      var _a;\n      if (options.onChanged)\n        (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === \"dark\", defaultHandler, mode2);\n      else\n        defaultHandler(mode2);\n    },\n    modes: {\n      dark: valueDark,\n      light: valueLight\n    }\n  });\n  const isDark = computed({\n    get() {\n      return mode.value === \"dark\";\n    },\n    set(v) {\n      const modeVal = v ? \"dark\" : \"light\";\n      if (mode.system.value === modeVal)\n        mode.value = \"auto\";\n      else\n        mode.value = modeVal;\n    }\n  });\n  return isDark;\n}\n\nfunction fnBypass(v) {\n  return v;\n}\nfunction fnSetSource(source, value) {\n  return source.value = value;\n}\nfunction defaultDump(clone) {\n  return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction defaultParse(clone) {\n  return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction useManualRefHistory(source, options = {}) {\n  const {\n    clone = false,\n    dump = defaultDump(clone),\n    parse = defaultParse(clone),\n    setSource = fnSetSource\n  } = options;\n  function _createHistoryRecord() {\n    return markRaw({\n      snapshot: dump(source.value),\n      timestamp: timestamp()\n    });\n  }\n  const last = ref(_createHistoryRecord());\n  const undoStack = ref([]);\n  const redoStack = ref([]);\n  const _setSource = (record) => {\n    setSource(source, parse(record.snapshot));\n    last.value = record;\n  };\n  const commit = () => {\n    undoStack.value.unshift(last.value);\n    last.value = _createHistoryRecord();\n    if (options.capacity && undoStack.value.length > options.capacity)\n      undoStack.value.splice(options.capacity, Number.POSITIVE_INFINITY);\n    if (redoStack.value.length)\n      redoStack.value.splice(0, redoStack.value.length);\n  };\n  const clear = () => {\n    undoStack.value.splice(0, undoStack.value.length);\n    redoStack.value.splice(0, redoStack.value.length);\n  };\n  const undo = () => {\n    const state = undoStack.value.shift();\n    if (state) {\n      redoStack.value.unshift(last.value);\n      _setSource(state);\n    }\n  };\n  const redo = () => {\n    const state = redoStack.value.shift();\n    if (state) {\n      undoStack.value.unshift(last.value);\n      _setSource(state);\n    }\n  };\n  const reset = () => {\n    _setSource(last.value);\n  };\n  const history = computed(() => [last.value, ...undoStack.value]);\n  const canUndo = computed(() => undoStack.value.length > 0);\n  const canRedo = computed(() => redoStack.value.length > 0);\n  return {\n    source,\n    undoStack,\n    redoStack,\n    last,\n    history,\n    canUndo,\n    canRedo,\n    clear,\n    commit,\n    reset,\n    undo,\n    redo\n  };\n}\n\nfunction useRefHistory(source, options = {}) {\n  const {\n    deep = false,\n    flush = \"pre\",\n    eventFilter\n  } = options;\n  const {\n    eventFilter: composedFilter,\n    pause,\n    resume: resumeTracking,\n    isActive: isTracking\n  } = pausableFilter(eventFilter);\n  const {\n    ignoreUpdates,\n    ignorePrevAsyncUpdates,\n    stop\n  } = watchIgnorable(\n    source,\n    commit,\n    { deep, flush, eventFilter: composedFilter }\n  );\n  function setSource(source2, value) {\n    ignorePrevAsyncUpdates();\n    ignoreUpdates(() => {\n      source2.value = value;\n    });\n  }\n  const manualHistory = useManualRefHistory(source, { ...options, clone: options.clone || deep, setSource });\n  const { clear, commit: manualCommit } = manualHistory;\n  function commit() {\n    ignorePrevAsyncUpdates();\n    manualCommit();\n  }\n  function resume(commitNow) {\n    resumeTracking();\n    if (commitNow)\n      commit();\n  }\n  function batch(fn) {\n    let canceled = false;\n    const cancel = () => canceled = true;\n    ignoreUpdates(() => {\n      fn(cancel);\n    });\n    if (!canceled)\n      commit();\n  }\n  function dispose() {\n    stop();\n    clear();\n  }\n  return {\n    ...manualHistory,\n    isTracking,\n    pause,\n    resume,\n    commit,\n    batch,\n    dispose\n  };\n}\n\nfunction useDebouncedRefHistory(source, options = {}) {\n  const filter = options.debounce ? debounceFilter(options.debounce) : void 0;\n  const history = useRefHistory(source, { ...options, eventFilter: filter });\n  return {\n    ...history\n  };\n}\n\nfunction useDeviceMotion(options = {}) {\n  const {\n    window = defaultWindow,\n    eventFilter = bypassFilter\n  } = options;\n  const acceleration = ref({ x: null, y: null, z: null });\n  const rotationRate = ref({ alpha: null, beta: null, gamma: null });\n  const interval = ref(0);\n  const accelerationIncludingGravity = ref({\n    x: null,\n    y: null,\n    z: null\n  });\n  if (window) {\n    const onDeviceMotion = createFilterWrapper(\n      eventFilter,\n      (event) => {\n        acceleration.value = event.acceleration;\n        accelerationIncludingGravity.value = event.accelerationIncludingGravity;\n        rotationRate.value = event.rotationRate;\n        interval.value = event.interval;\n      }\n    );\n    useEventListener(window, \"devicemotion\", onDeviceMotion);\n  }\n  return {\n    acceleration,\n    accelerationIncludingGravity,\n    rotationRate,\n    interval\n  };\n}\n\nfunction useDeviceOrientation(options = {}) {\n  const { window = defaultWindow } = options;\n  const isSupported = useSupported(() => window && \"DeviceOrientationEvent\" in window);\n  const isAbsolute = ref(false);\n  const alpha = ref(null);\n  const beta = ref(null);\n  const gamma = ref(null);\n  if (window && isSupported.value) {\n    useEventListener(window, \"deviceorientation\", (event) => {\n      isAbsolute.value = event.absolute;\n      alpha.value = event.alpha;\n      beta.value = event.beta;\n      gamma.value = event.gamma;\n    });\n  }\n  return {\n    isSupported,\n    isAbsolute,\n    alpha,\n    beta,\n    gamma\n  };\n}\n\nfunction useDevicePixelRatio(options = {}) {\n  const {\n    window = defaultWindow\n  } = options;\n  const pixelRatio = ref(1);\n  if (window) {\n    let observe2 = function() {\n      pixelRatio.value = window.devicePixelRatio;\n      cleanup2();\n      media = window.matchMedia(`(resolution: ${pixelRatio.value}dppx)`);\n      media.addEventListener(\"change\", observe2, { once: true });\n    }, cleanup2 = function() {\n      media == null ? void 0 : media.removeEventListener(\"change\", observe2);\n    };\n    let media;\n    observe2();\n    tryOnScopeDispose(cleanup2);\n  }\n  return { pixelRatio };\n}\n\nfunction useDevicesList(options = {}) {\n  const {\n    navigator = defaultNavigator,\n    requestPermissions = false,\n    constraints = { audio: true, video: true },\n    onUpdated\n  } = options;\n  const devices = ref([]);\n  const videoInputs = computed(() => devices.value.filter((i) => i.kind === \"videoinput\"));\n  const audioInputs = computed(() => devices.value.filter((i) => i.kind === \"audioinput\"));\n  const audioOutputs = computed(() => devices.value.filter((i) => i.kind === \"audiooutput\"));\n  const isSupported = useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n  const permissionGranted = ref(false);\n  let stream;\n  async function update() {\n    if (!isSupported.value)\n      return;\n    devices.value = await navigator.mediaDevices.enumerateDevices();\n    onUpdated == null ? void 0 : onUpdated(devices.value);\n    if (stream) {\n      stream.getTracks().forEach((t) => t.stop());\n      stream = null;\n    }\n  }\n  async function ensurePermissions() {\n    if (!isSupported.value)\n      return false;\n    if (permissionGranted.value)\n      return true;\n    const { state, query } = usePermission(\"camera\", { controls: true });\n    await query();\n    if (state.value !== \"granted\") {\n      stream = await navigator.mediaDevices.getUserMedia(constraints);\n      update();\n      permissionGranted.value = true;\n    } else {\n      permissionGranted.value = true;\n    }\n    return permissionGranted.value;\n  }\n  if (isSupported.value) {\n    if (requestPermissions)\n      ensurePermissions();\n    useEventListener(navigator.mediaDevices, \"devicechange\", update);\n    update();\n  }\n  return {\n    devices,\n    ensurePermissions,\n    permissionGranted,\n    videoInputs,\n    audioInputs,\n    audioOutputs,\n    isSupported\n  };\n}\n\nfunction useDisplayMedia(options = {}) {\n  var _a;\n  const enabled = ref((_a = options.enabled) != null ? _a : false);\n  const video = options.video;\n  const audio = options.audio;\n  const { navigator = defaultNavigator } = options;\n  const isSupported = useSupported(() => {\n    var _a2;\n    return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getDisplayMedia;\n  });\n  const constraint = { audio, video };\n  const stream = shallowRef();\n  async function _start() {\n    if (!isSupported.value || stream.value)\n      return;\n    stream.value = await navigator.mediaDevices.getDisplayMedia(constraint);\n    return stream.value;\n  }\n  async function _stop() {\n    var _a2;\n    (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n    stream.value = void 0;\n  }\n  function stop() {\n    _stop();\n    enabled.value = false;\n  }\n  async function start() {\n    await _start();\n    if (stream.value)\n      enabled.value = true;\n    return stream.value;\n  }\n  watch(\n    enabled,\n    (v) => {\n      if (v)\n        _start();\n      else\n        _stop();\n    },\n    { immediate: true }\n  );\n  return {\n    isSupported,\n    stream,\n    start,\n    stop,\n    enabled\n  };\n}\n\nfunction useDocumentVisibility(options = {}) {\n  const { document = defaultDocument } = options;\n  if (!document)\n    return ref(\"visible\");\n  const visibility = ref(document.visibilityState);\n  useEventListener(document, \"visibilitychange\", () => {\n    visibility.value = document.visibilityState;\n  });\n  return visibility;\n}\n\nfunction useDraggable(target, options = {}) {\n  var _a, _b;\n  const {\n    pointerTypes,\n    preventDefault,\n    stopPropagation,\n    exact,\n    onMove,\n    onEnd,\n    onStart,\n    initialValue,\n    axis = \"both\",\n    draggingElement = defaultWindow,\n    containerElement,\n    handle: draggingHandle = target\n  } = options;\n  const position = ref(\n    (_a = toValue(initialValue)) != null ? _a : { x: 0, y: 0 }\n  );\n  const pressedDelta = ref();\n  const filterEvent = (e) => {\n    if (pointerTypes)\n      return pointerTypes.includes(e.pointerType);\n    return true;\n  };\n  const handleEvent = (e) => {\n    if (toValue(preventDefault))\n      e.preventDefault();\n    if (toValue(stopPropagation))\n      e.stopPropagation();\n  };\n  const start = (e) => {\n    var _a2;\n    if (!filterEvent(e))\n      return;\n    if (toValue(exact) && e.target !== toValue(target))\n      return;\n    const container = toValue(containerElement);\n    const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container);\n    const targetRect = toValue(target).getBoundingClientRect();\n    const pos = {\n      x: e.clientX - (container ? targetRect.left - containerRect.left : targetRect.left),\n      y: e.clientY - (container ? targetRect.top - containerRect.top : targetRect.top)\n    };\n    if ((onStart == null ? void 0 : onStart(pos, e)) === false)\n      return;\n    pressedDelta.value = pos;\n    handleEvent(e);\n  };\n  const move = (e) => {\n    var _a2;\n    if (!filterEvent(e))\n      return;\n    if (!pressedDelta.value)\n      return;\n    const container = toValue(containerElement);\n    const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container);\n    const targetRect = toValue(target).getBoundingClientRect();\n    let { x, y } = position.value;\n    if (axis === \"x\" || axis === \"both\") {\n      x = e.clientX - pressedDelta.value.x;\n      if (container)\n        x = Math.min(Math.max(0, x), containerRect.width - targetRect.width);\n    }\n    if (axis === \"y\" || axis === \"both\") {\n      y = e.clientY - pressedDelta.value.y;\n      if (container)\n        y = Math.min(Math.max(0, y), containerRect.height - targetRect.height);\n    }\n    position.value = {\n      x,\n      y\n    };\n    onMove == null ? void 0 : onMove(position.value, e);\n    handleEvent(e);\n  };\n  const end = (e) => {\n    if (!filterEvent(e))\n      return;\n    if (!pressedDelta.value)\n      return;\n    pressedDelta.value = void 0;\n    onEnd == null ? void 0 : onEnd(position.value, e);\n    handleEvent(e);\n  };\n  if (isClient) {\n    const config = { capture: (_b = options.capture) != null ? _b : true };\n    useEventListener(draggingHandle, \"pointerdown\", start, config);\n    useEventListener(draggingElement, \"pointermove\", move, config);\n    useEventListener(draggingElement, \"pointerup\", end, config);\n  }\n  return {\n    ...toRefs(position),\n    position,\n    isDragging: computed(() => !!pressedDelta.value),\n    style: computed(\n      () => `left:${position.value.x}px;top:${position.value.y}px;`\n    )\n  };\n}\n\nfunction useDropZone(target, options = {}) {\n  const isOverDropZone = ref(false);\n  const files = shallowRef(null);\n  let counter = 0;\n  let isDataTypeIncluded = true;\n  if (isClient) {\n    const _options = typeof options === \"function\" ? { onDrop: options } : options;\n    const getFiles = (event) => {\n      var _a, _b;\n      const list = Array.from((_b = (_a = event.dataTransfer) == null ? void 0 : _a.files) != null ? _b : []);\n      return files.value = list.length === 0 ? null : list;\n    };\n    useEventListener$1(target, \"dragenter\", (event) => {\n      var _a;\n      if (_options.dataTypes && event.dataTransfer) {\n        const dataTypes = unref(_options.dataTypes);\n        isDataTypeIncluded = typeof dataTypes === \"function\" ? dataTypes(event.dataTransfer.types) : dataTypes ? dataTypes.some((item) => event.dataTransfer.types.includes(item)) : true;\n        if (!isDataTypeIncluded)\n          return;\n      }\n      event.preventDefault();\n      counter += 1;\n      isOverDropZone.value = true;\n      (_a = _options.onEnter) == null ? void 0 : _a.call(_options, getFiles(event), event);\n    });\n    useEventListener$1(target, \"dragover\", (event) => {\n      var _a;\n      if (!isDataTypeIncluded)\n        return;\n      event.preventDefault();\n      (_a = _options.onOver) == null ? void 0 : _a.call(_options, getFiles(event), event);\n    });\n    useEventListener$1(target, \"dragleave\", (event) => {\n      var _a;\n      if (!isDataTypeIncluded)\n        return;\n      event.preventDefault();\n      counter -= 1;\n      if (counter === 0)\n        isOverDropZone.value = false;\n      (_a = _options.onLeave) == null ? void 0 : _a.call(_options, getFiles(event), event);\n    });\n    useEventListener$1(target, \"drop\", (event) => {\n      var _a;\n      event.preventDefault();\n      counter = 0;\n      isOverDropZone.value = false;\n      (_a = _options.onDrop) == null ? void 0 : _a.call(_options, getFiles(event), event);\n    });\n  }\n  return {\n    files,\n    isOverDropZone\n  };\n}\n\nfunction useResizeObserver(target, callback, options = {}) {\n  const { window = defaultWindow, ...observerOptions } = options;\n  let observer;\n  const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n  const cleanup = () => {\n    if (observer) {\n      observer.disconnect();\n      observer = void 0;\n    }\n  };\n  const targets = computed(() => Array.isArray(target) ? target.map((el) => unrefElement(el)) : [unrefElement(target)]);\n  const stopWatch = watch(\n    targets,\n    (els) => {\n      cleanup();\n      if (isSupported.value && window) {\n        observer = new ResizeObserver(callback);\n        for (const _el of els)\n          _el && observer.observe(_el, observerOptions);\n      }\n    },\n    { immediate: true, flush: \"post\", deep: true }\n  );\n  const stop = () => {\n    cleanup();\n    stopWatch();\n  };\n  tryOnScopeDispose(stop);\n  return {\n    isSupported,\n    stop\n  };\n}\n\nfunction useElementBounding(target, options = {}) {\n  const {\n    reset = true,\n    windowResize = true,\n    windowScroll = true,\n    immediate = true\n  } = options;\n  const height = ref(0);\n  const bottom = ref(0);\n  const left = ref(0);\n  const right = ref(0);\n  const top = ref(0);\n  const width = ref(0);\n  const x = ref(0);\n  const y = ref(0);\n  function update() {\n    const el = unrefElement(target);\n    if (!el) {\n      if (reset) {\n        height.value = 0;\n        bottom.value = 0;\n        left.value = 0;\n        right.value = 0;\n        top.value = 0;\n        width.value = 0;\n        x.value = 0;\n        y.value = 0;\n      }\n      return;\n    }\n    const rect = el.getBoundingClientRect();\n    height.value = rect.height;\n    bottom.value = rect.bottom;\n    left.value = rect.left;\n    right.value = rect.right;\n    top.value = rect.top;\n    width.value = rect.width;\n    x.value = rect.x;\n    y.value = rect.y;\n  }\n  useResizeObserver(target, update);\n  watch(() => unrefElement(target), (ele) => !ele && update());\n  if (windowScroll)\n    useEventListener(\"scroll\", update, { capture: true, passive: true });\n  if (windowResize)\n    useEventListener(\"resize\", update, { passive: true });\n  tryOnMounted(() => {\n    if (immediate)\n      update();\n  });\n  return {\n    height,\n    bottom,\n    left,\n    right,\n    top,\n    width,\n    x,\n    y,\n    update\n  };\n}\n\nfunction useElementByPoint(options) {\n  const {\n    x,\n    y,\n    document = defaultDocument,\n    multiple,\n    interval = \"requestAnimationFrame\",\n    immediate = true\n  } = options;\n  const isSupported = useSupported(() => {\n    if (toValue(multiple))\n      return document && \"elementsFromPoint\" in document;\n    return document && \"elementFromPoint\" in document;\n  });\n  const element = ref(null);\n  const cb = () => {\n    var _a, _b;\n    element.value = toValue(multiple) ? (_a = document == null ? void 0 : document.elementsFromPoint(toValue(x), toValue(y))) != null ? _a : [] : (_b = document == null ? void 0 : document.elementFromPoint(toValue(x), toValue(y))) != null ? _b : null;\n  };\n  const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n  return {\n    isSupported,\n    element,\n    ...controls\n  };\n}\n\nfunction useElementHover(el, options = {}) {\n  const {\n    delayEnter = 0,\n    delayLeave = 0,\n    window = defaultWindow\n  } = options;\n  const isHovered = ref(false);\n  let timer;\n  const toggle = (entering) => {\n    const delay = entering ? delayEnter : delayLeave;\n    if (timer) {\n      clearTimeout(timer);\n      timer = void 0;\n    }\n    if (delay)\n      timer = setTimeout(() => isHovered.value = entering, delay);\n    else\n      isHovered.value = entering;\n  };\n  if (!window)\n    return isHovered;\n  useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n  useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n  return isHovered;\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n  const { window = defaultWindow, box = \"content-box\" } = options;\n  const isSVG = computed(() => {\n    var _a, _b;\n    return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n  });\n  const width = ref(initialSize.width);\n  const height = ref(initialSize.height);\n  const { stop: stop1 } = useResizeObserver(\n    target,\n    ([entry]) => {\n      const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n      if (window && isSVG.value) {\n        const $elem = unrefElement(target);\n        if ($elem) {\n          const styles = window.getComputedStyle($elem);\n          width.value = Number.parseFloat(styles.width);\n          height.value = Number.parseFloat(styles.height);\n        }\n      } else {\n        if (boxSize) {\n          const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize];\n          width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n          height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n        } else {\n          width.value = entry.contentRect.width;\n          height.value = entry.contentRect.height;\n        }\n      }\n    },\n    options\n  );\n  tryOnMounted(() => {\n    const ele = unrefElement(target);\n    if (ele) {\n      width.value = \"offsetWidth\" in ele ? ele.offsetWidth : initialSize.width;\n      height.value = \"offsetHeight\" in ele ? ele.offsetHeight : initialSize.height;\n    }\n  });\n  const stop2 = watch(\n    () => unrefElement(target),\n    (ele) => {\n      width.value = ele ? initialSize.width : 0;\n      height.value = ele ? initialSize.height : 0;\n    }\n  );\n  function stop() {\n    stop1();\n    stop2();\n  }\n  return {\n    width,\n    height,\n    stop\n  };\n}\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n  const {\n    root,\n    rootMargin = \"0px\",\n    threshold = 0.1,\n    window = defaultWindow,\n    immediate = true\n  } = options;\n  const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n  const targets = computed(() => {\n    const _target = toValue(target);\n    return (Array.isArray(_target) ? _target : [_target]).map(unrefElement).filter(notNullish);\n  });\n  let cleanup = noop;\n  const isActive = ref(immediate);\n  const stopWatch = isSupported.value ? watch(\n    () => [targets.value, unrefElement(root), isActive.value],\n    ([targets2, root2]) => {\n      cleanup();\n      if (!isActive.value)\n        return;\n      if (!targets2.length)\n        return;\n      const observer = new IntersectionObserver(\n        callback,\n        {\n          root: unrefElement(root2),\n          rootMargin,\n          threshold\n        }\n      );\n      targets2.forEach((el) => el && observer.observe(el));\n      cleanup = () => {\n        observer.disconnect();\n        cleanup = noop;\n      };\n    },\n    { immediate, flush: \"post\" }\n  ) : noop;\n  const stop = () => {\n    cleanup();\n    stopWatch();\n    isActive.value = false;\n  };\n  tryOnScopeDispose(stop);\n  return {\n    isSupported,\n    isActive,\n    pause() {\n      cleanup();\n      isActive.value = false;\n    },\n    resume() {\n      isActive.value = true;\n    },\n    stop\n  };\n}\n\nfunction useElementVisibility(element, options = {}) {\n  const { window = defaultWindow, scrollTarget } = options;\n  const elementIsVisible = ref(false);\n  useIntersectionObserver(\n    element,\n    ([{ isIntersecting }]) => {\n      elementIsVisible.value = isIntersecting;\n    },\n    {\n      root: scrollTarget,\n      window,\n      threshold: 0\n    }\n  );\n  return elementIsVisible;\n}\n\nconst events = /* @__PURE__ */ new Map();\n\nfunction useEventBus(key) {\n  const scope = getCurrentScope();\n  function on(listener) {\n    var _a;\n    const listeners = events.get(key) || /* @__PURE__ */ new Set();\n    listeners.add(listener);\n    events.set(key, listeners);\n    const _off = () => off(listener);\n    (_a = scope == null ? void 0 : scope.cleanups) == null ? void 0 : _a.push(_off);\n    return _off;\n  }\n  function once(listener) {\n    function _listener(...args) {\n      off(_listener);\n      listener(...args);\n    }\n    return on(_listener);\n  }\n  function off(listener) {\n    const listeners = events.get(key);\n    if (!listeners)\n      return;\n    listeners.delete(listener);\n    if (!listeners.size)\n      reset();\n  }\n  function reset() {\n    events.delete(key);\n  }\n  function emit(event, payload) {\n    var _a;\n    (_a = events.get(key)) == null ? void 0 : _a.forEach((v) => v(event, payload));\n  }\n  return { on, once, off, emit, reset };\n}\n\nfunction useEventSource(url, events = [], options = {}) {\n  const event = ref(null);\n  const data = ref(null);\n  const status = ref(\"CONNECTING\");\n  const eventSource = ref(null);\n  const error = shallowRef(null);\n  const {\n    withCredentials = false\n  } = options;\n  const close = () => {\n    if (eventSource.value) {\n      eventSource.value.close();\n      eventSource.value = null;\n      status.value = \"CLOSED\";\n    }\n  };\n  const es = new EventSource(url, { withCredentials });\n  eventSource.value = es;\n  es.onopen = () => {\n    status.value = \"OPEN\";\n    error.value = null;\n  };\n  es.onerror = (e) => {\n    status.value = \"CLOSED\";\n    error.value = e;\n  };\n  es.onmessage = (e) => {\n    event.value = null;\n    data.value = e.data;\n  };\n  for (const event_name of events) {\n    useEventListener(es, event_name, (e) => {\n      event.value = event_name;\n      data.value = e.data || null;\n    });\n  }\n  tryOnScopeDispose(() => {\n    close();\n  });\n  return {\n    eventSource,\n    event,\n    data,\n    status,\n    error,\n    close\n  };\n}\n\nfunction useEyeDropper(options = {}) {\n  const { initialValue = \"\" } = options;\n  const isSupported = useSupported(() => typeof window !== \"undefined\" && \"EyeDropper\" in window);\n  const sRGBHex = ref(initialValue);\n  async function open(openOptions) {\n    if (!isSupported.value)\n      return;\n    const eyeDropper = new window.EyeDropper();\n    const result = await eyeDropper.open(openOptions);\n    sRGBHex.value = result.sRGBHex;\n    return result;\n  }\n  return { isSupported, sRGBHex, open };\n}\n\nfunction useFavicon(newIcon = null, options = {}) {\n  const {\n    baseUrl = \"\",\n    rel = \"icon\",\n    document = defaultDocument\n  } = options;\n  const favicon = toRef(newIcon);\n  const applyIcon = (icon) => {\n    const elements = document == null ? void 0 : document.head.querySelectorAll(`link[rel*=\"${rel}\"]`);\n    if (!elements || elements.length === 0) {\n      const link = document == null ? void 0 : document.createElement(\"link\");\n      if (link) {\n        link.rel = rel;\n        link.href = `${baseUrl}${icon}`;\n        link.type = `image/${icon.split(\".\").pop()}`;\n        document == null ? void 0 : document.head.append(link);\n      }\n      return;\n    }\n    elements == null ? void 0 : elements.forEach((el) => el.href = `${baseUrl}${icon}`);\n  };\n  watch(\n    favicon,\n    (i, o) => {\n      if (typeof i === \"string\" && i !== o)\n        applyIcon(i);\n    },\n    { immediate: true }\n  );\n  return favicon;\n}\n\nconst payloadMapping = {\n  json: \"application/json\",\n  text: \"text/plain\"\n};\nfunction isFetchOptions(obj) {\n  return obj && containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\", \"fetch\", \"updateDataOnError\");\n}\nfunction isAbsoluteURL(url) {\n  return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\nfunction headersToObject(headers) {\n  if (typeof Headers !== \"undefined\" && headers instanceof Headers)\n    return Object.fromEntries([...headers.entries()]);\n  return headers;\n}\nfunction combineCallbacks(combination, ...callbacks) {\n  if (combination === \"overwrite\") {\n    return async (ctx) => {\n      const callback = callbacks[callbacks.length - 1];\n      if (callback)\n        return { ...ctx, ...await callback(ctx) };\n      return ctx;\n    };\n  } else {\n    return async (ctx) => {\n      for (const callback of callbacks) {\n        if (callback)\n          ctx = { ...ctx, ...await callback(ctx) };\n      }\n      return ctx;\n    };\n  }\n}\nfunction createFetch(config = {}) {\n  const _combination = config.combination || \"chain\";\n  const _options = config.options || {};\n  const _fetchOptions = config.fetchOptions || {};\n  function useFactoryFetch(url, ...args) {\n    const computedUrl = computed(() => {\n      const baseUrl = toValue(config.baseUrl);\n      const targetUrl = toValue(url);\n      return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl;\n    });\n    let options = _options;\n    let fetchOptions = _fetchOptions;\n    if (args.length > 0) {\n      if (isFetchOptions(args[0])) {\n        options = {\n          ...options,\n          ...args[0],\n          beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch),\n          afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch),\n          onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError)\n        };\n      } else {\n        fetchOptions = {\n          ...fetchOptions,\n          ...args[0],\n          headers: {\n            ...headersToObject(fetchOptions.headers) || {},\n            ...headersToObject(args[0].headers) || {}\n          }\n        };\n      }\n    }\n    if (args.length > 1 && isFetchOptions(args[1])) {\n      options = {\n        ...options,\n        ...args[1],\n        beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch),\n        afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch),\n        onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError)\n      };\n    }\n    return useFetch(computedUrl, fetchOptions, options);\n  }\n  return useFactoryFetch;\n}\nfunction useFetch(url, ...args) {\n  var _a;\n  const supportsAbort = typeof AbortController === \"function\";\n  let fetchOptions = {};\n  let options = {\n    immediate: true,\n    refetch: false,\n    timeout: 0,\n    updateDataOnError: false\n  };\n  const config = {\n    method: \"GET\",\n    type: \"text\",\n    payload: void 0\n  };\n  if (args.length > 0) {\n    if (isFetchOptions(args[0]))\n      options = { ...options, ...args[0] };\n    else\n      fetchOptions = args[0];\n  }\n  if (args.length > 1) {\n    if (isFetchOptions(args[1]))\n      options = { ...options, ...args[1] };\n  }\n  const {\n    fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch,\n    initialData,\n    timeout\n  } = options;\n  const responseEvent = createEventHook();\n  const errorEvent = createEventHook();\n  const finallyEvent = createEventHook();\n  const isFinished = ref(false);\n  const isFetching = ref(false);\n  const aborted = ref(false);\n  const statusCode = ref(null);\n  const response = shallowRef(null);\n  const error = shallowRef(null);\n  const data = shallowRef(initialData || null);\n  const canAbort = computed(() => supportsAbort && isFetching.value);\n  let controller;\n  let timer;\n  const abort = () => {\n    if (supportsAbort) {\n      controller == null ? void 0 : controller.abort();\n      controller = new AbortController();\n      controller.signal.onabort = () => aborted.value = true;\n      fetchOptions = {\n        ...fetchOptions,\n        signal: controller.signal\n      };\n    }\n  };\n  const loading = (isLoading) => {\n    isFetching.value = isLoading;\n    isFinished.value = !isLoading;\n  };\n  if (timeout)\n    timer = useTimeoutFn(abort, timeout, { immediate: false });\n  let executeCounter = 0;\n  const execute = async (throwOnFailed = false) => {\n    var _a2;\n    abort();\n    loading(true);\n    error.value = null;\n    statusCode.value = null;\n    aborted.value = false;\n    executeCounter += 1;\n    const currentExecuteCounter = executeCounter;\n    const defaultFetchOptions = {\n      method: config.method,\n      headers: {}\n    };\n    if (config.payload) {\n      const headers = headersToObject(defaultFetchOptions.headers);\n      const payload = toValue(config.payload);\n      if (!config.payloadType && payload && Object.getPrototypeOf(payload) === Object.prototype && !(payload instanceof FormData))\n        config.payloadType = \"json\";\n      if (config.payloadType)\n        headers[\"Content-Type\"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType;\n      defaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(payload) : payload;\n    }\n    let isCanceled = false;\n    const context = {\n      url: toValue(url),\n      options: {\n        ...defaultFetchOptions,\n        ...fetchOptions\n      },\n      cancel: () => {\n        isCanceled = true;\n      }\n    };\n    if (options.beforeFetch)\n      Object.assign(context, await options.beforeFetch(context));\n    if (isCanceled || !fetch) {\n      loading(false);\n      return Promise.resolve(null);\n    }\n    let responseData = null;\n    if (timer)\n      timer.start();\n    return new Promise((resolve, reject) => {\n      var _a3;\n      fetch(\n        context.url,\n        {\n          ...defaultFetchOptions,\n          ...context.options,\n          headers: {\n            ...headersToObject(defaultFetchOptions.headers),\n            ...headersToObject((_a3 = context.options) == null ? void 0 : _a3.headers)\n          }\n        }\n      ).then(async (fetchResponse) => {\n        response.value = fetchResponse;\n        statusCode.value = fetchResponse.status;\n        responseData = await fetchResponse[config.type]();\n        if (!fetchResponse.ok) {\n          data.value = initialData || null;\n          throw new Error(fetchResponse.statusText);\n        }\n        if (options.afterFetch) {\n          ({ data: responseData } = await options.afterFetch({\n            data: responseData,\n            response: fetchResponse\n          }));\n        }\n        data.value = responseData;\n        responseEvent.trigger(fetchResponse);\n        return resolve(fetchResponse);\n      }).catch(async (fetchError) => {\n        let errorData = fetchError.message || fetchError.name;\n        if (options.onFetchError) {\n          ({ error: errorData, data: responseData } = await options.onFetchError({\n            data: responseData,\n            error: fetchError,\n            response: response.value\n          }));\n        }\n        error.value = errorData;\n        if (options.updateDataOnError)\n          data.value = responseData;\n        errorEvent.trigger(fetchError);\n        if (throwOnFailed)\n          return reject(fetchError);\n        return resolve(null);\n      }).finally(() => {\n        if (currentExecuteCounter === executeCounter)\n          loading(false);\n        if (timer)\n          timer.stop();\n        finallyEvent.trigger(null);\n      });\n    });\n  };\n  const refetch = toRef(options.refetch);\n  watch(\n    [\n      refetch,\n      toRef(url)\n    ],\n    ([refetch2]) => refetch2 && execute(),\n    { deep: true }\n  );\n  const shell = {\n    isFinished,\n    statusCode,\n    response,\n    error,\n    data,\n    isFetching,\n    canAbort,\n    aborted,\n    abort,\n    execute,\n    onFetchResponse: responseEvent.on,\n    onFetchError: errorEvent.on,\n    onFetchFinally: finallyEvent.on,\n    // method\n    get: setMethod(\"GET\"),\n    put: setMethod(\"PUT\"),\n    post: setMethod(\"POST\"),\n    delete: setMethod(\"DELETE\"),\n    patch: setMethod(\"PATCH\"),\n    head: setMethod(\"HEAD\"),\n    options: setMethod(\"OPTIONS\"),\n    // type\n    json: setType(\"json\"),\n    text: setType(\"text\"),\n    blob: setType(\"blob\"),\n    arrayBuffer: setType(\"arrayBuffer\"),\n    formData: setType(\"formData\")\n  };\n  function setMethod(method) {\n    return (payload, payloadType) => {\n      if (!isFetching.value) {\n        config.method = method;\n        config.payload = payload;\n        config.payloadType = payloadType;\n        if (isRef(config.payload)) {\n          watch(\n            [\n              refetch,\n              toRef(config.payload)\n            ],\n            ([refetch2]) => refetch2 && execute(),\n            { deep: true }\n          );\n        }\n        return {\n          ...shell,\n          then(onFulfilled, onRejected) {\n            return waitUntilFinished().then(onFulfilled, onRejected);\n          }\n        };\n      }\n      return void 0;\n    };\n  }\n  function waitUntilFinished() {\n    return new Promise((resolve, reject) => {\n      until(isFinished).toBe(true).then(() => resolve(shell)).catch((error2) => reject(error2));\n    });\n  }\n  function setType(type) {\n    return () => {\n      if (!isFetching.value) {\n        config.type = type;\n        return {\n          ...shell,\n          then(onFulfilled, onRejected) {\n            return waitUntilFinished().then(onFulfilled, onRejected);\n          }\n        };\n      }\n      return void 0;\n    };\n  }\n  if (options.immediate)\n    Promise.resolve().then(() => execute());\n  return {\n    ...shell,\n    then(onFulfilled, onRejected) {\n      return waitUntilFinished().then(onFulfilled, onRejected);\n    }\n  };\n}\nfunction joinPaths(start, end) {\n  if (!start.endsWith(\"/\") && !end.startsWith(\"/\"))\n    return `${start}/${end}`;\n  return `${start}${end}`;\n}\n\nconst DEFAULT_OPTIONS = {\n  multiple: true,\n  accept: \"*\",\n  reset: false,\n  directory: false\n};\nfunction useFileDialog(options = {}) {\n  const {\n    document = defaultDocument\n  } = options;\n  const files = ref(null);\n  const { on: onChange, trigger } = createEventHook();\n  let input;\n  if (document) {\n    input = document.createElement(\"input\");\n    input.type = \"file\";\n    input.onchange = (event) => {\n      const result = event.target;\n      files.value = result.files;\n      trigger(files.value);\n    };\n  }\n  const reset = () => {\n    files.value = null;\n    if (input)\n      input.value = \"\";\n  };\n  const open = (localOptions) => {\n    if (!input)\n      return;\n    const _options = {\n      ...DEFAULT_OPTIONS,\n      ...options,\n      ...localOptions\n    };\n    input.multiple = _options.multiple;\n    input.accept = _options.accept;\n    input.webkitdirectory = _options.directory;\n    if (hasOwn(_options, \"capture\"))\n      input.capture = _options.capture;\n    if (_options.reset)\n      reset();\n    input.click();\n  };\n  return {\n    files: readonly(files),\n    open,\n    reset,\n    onChange\n  };\n}\n\nfunction useFileSystemAccess(options = {}) {\n  const {\n    window: _window = defaultWindow,\n    dataType = \"Text\"\n  } = options;\n  const window = _window;\n  const isSupported = useSupported(() => window && \"showSaveFilePicker\" in window && \"showOpenFilePicker\" in window);\n  const fileHandle = ref();\n  const data = ref();\n  const file = ref();\n  const fileName = computed(() => {\n    var _a, _b;\n    return (_b = (_a = file.value) == null ? void 0 : _a.name) != null ? _b : \"\";\n  });\n  const fileMIME = computed(() => {\n    var _a, _b;\n    return (_b = (_a = file.value) == null ? void 0 : _a.type) != null ? _b : \"\";\n  });\n  const fileSize = computed(() => {\n    var _a, _b;\n    return (_b = (_a = file.value) == null ? void 0 : _a.size) != null ? _b : 0;\n  });\n  const fileLastModified = computed(() => {\n    var _a, _b;\n    return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null ? _b : 0;\n  });\n  async function open(_options = {}) {\n    if (!isSupported.value)\n      return;\n    const [handle] = await window.showOpenFilePicker({ ...toValue(options), ..._options });\n    fileHandle.value = handle;\n    await updateFile();\n    await updateData();\n  }\n  async function create(_options = {}) {\n    if (!isSupported.value)\n      return;\n    fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n    data.value = void 0;\n    await updateFile();\n    await updateData();\n  }\n  async function save(_options = {}) {\n    if (!isSupported.value)\n      return;\n    if (!fileHandle.value)\n      return saveAs(_options);\n    if (data.value) {\n      const writableStream = await fileHandle.value.createWritable();\n      await writableStream.write(data.value);\n      await writableStream.close();\n    }\n    await updateFile();\n  }\n  async function saveAs(_options = {}) {\n    if (!isSupported.value)\n      return;\n    fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n    if (data.value) {\n      const writableStream = await fileHandle.value.createWritable();\n      await writableStream.write(data.value);\n      await writableStream.close();\n    }\n    await updateFile();\n  }\n  async function updateFile() {\n    var _a;\n    file.value = await ((_a = fileHandle.value) == null ? void 0 : _a.getFile());\n  }\n  async function updateData() {\n    var _a, _b;\n    const type = toValue(dataType);\n    if (type === \"Text\")\n      data.value = await ((_a = file.value) == null ? void 0 : _a.text());\n    else if (type === \"ArrayBuffer\")\n      data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer());\n    else if (type === \"Blob\")\n      data.value = file.value;\n  }\n  watch(() => toValue(dataType), updateData);\n  return {\n    isSupported,\n    data,\n    file,\n    fileName,\n    fileMIME,\n    fileSize,\n    fileLastModified,\n    open,\n    create,\n    save,\n    saveAs,\n    updateData\n  };\n}\n\nfunction useFocus(target, options = {}) {\n  const { initialValue = false, focusVisible = false } = options;\n  const innerFocused = ref(false);\n  const targetElement = computed(() => unrefElement(target));\n  useEventListener(targetElement, \"focus\", (event) => {\n    var _a, _b;\n    if (!focusVisible || ((_b = (_a = event.target).matches) == null ? void 0 : _b.call(_a, \":focus-visible\")))\n      innerFocused.value = true;\n  });\n  useEventListener(targetElement, \"blur\", () => innerFocused.value = false);\n  const focused = computed({\n    get: () => innerFocused.value,\n    set(value) {\n      var _a, _b;\n      if (!value && innerFocused.value)\n        (_a = targetElement.value) == null ? void 0 : _a.blur();\n      else if (value && !innerFocused.value)\n        (_b = targetElement.value) == null ? void 0 : _b.focus();\n    }\n  });\n  watch(\n    targetElement,\n    () => {\n      focused.value = initialValue;\n    },\n    { immediate: true, flush: \"post\" }\n  );\n  return { focused };\n}\n\nfunction useFocusWithin(target, options = {}) {\n  const activeElement = useActiveElement(options);\n  const targetElement = computed(() => unrefElement(target));\n  const focused = computed(() => targetElement.value && activeElement.value ? targetElement.value.contains(activeElement.value) : false);\n  return { focused };\n}\n\nfunction useFps(options) {\n  var _a;\n  const fps = ref(0);\n  if (typeof performance === \"undefined\")\n    return fps;\n  const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10;\n  let last = performance.now();\n  let ticks = 0;\n  useRafFn(() => {\n    ticks += 1;\n    if (ticks >= every) {\n      const now = performance.now();\n      const diff = now - last;\n      fps.value = Math.round(1e3 / (diff / ticks));\n      last = now;\n      ticks = 0;\n    }\n  });\n  return fps;\n}\n\nconst eventHandlers = [\n  \"fullscreenchange\",\n  \"webkitfullscreenchange\",\n  \"webkitendfullscreen\",\n  \"mozfullscreenchange\",\n  \"MSFullscreenChange\"\n];\nfunction useFullscreen(target, options = {}) {\n  const {\n    document = defaultDocument,\n    autoExit = false\n  } = options;\n  const targetRef = computed(() => {\n    var _a;\n    return (_a = unrefElement(target)) != null ? _a : document == null ? void 0 : document.querySelector(\"html\");\n  });\n  const isFullscreen = ref(false);\n  const requestMethod = computed(() => {\n    return [\n      \"requestFullscreen\",\n      \"webkitRequestFullscreen\",\n      \"webkitEnterFullscreen\",\n      \"webkitEnterFullScreen\",\n      \"webkitRequestFullScreen\",\n      \"mozRequestFullScreen\",\n      \"msRequestFullscreen\"\n    ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n  });\n  const exitMethod = computed(() => {\n    return [\n      \"exitFullscreen\",\n      \"webkitExitFullscreen\",\n      \"webkitExitFullScreen\",\n      \"webkitCancelFullScreen\",\n      \"mozCancelFullScreen\",\n      \"msExitFullscreen\"\n    ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n  });\n  const fullscreenEnabled = computed(() => {\n    return [\n      \"fullScreen\",\n      \"webkitIsFullScreen\",\n      \"webkitDisplayingFullscreen\",\n      \"mozFullScreen\",\n      \"msFullscreenElement\"\n    ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n  });\n  const fullscreenElementMethod = [\n    \"fullscreenElement\",\n    \"webkitFullscreenElement\",\n    \"mozFullScreenElement\",\n    \"msFullscreenElement\"\n  ].find((m) => document && m in document);\n  const isSupported = useSupported(() => targetRef.value && document && requestMethod.value !== void 0 && exitMethod.value !== void 0 && fullscreenEnabled.value !== void 0);\n  const isCurrentElementFullScreen = () => {\n    if (fullscreenElementMethod)\n      return (document == null ? void 0 : document[fullscreenElementMethod]) === targetRef.value;\n    return false;\n  };\n  const isElementFullScreen = () => {\n    if (fullscreenEnabled.value) {\n      if (document && document[fullscreenEnabled.value] != null) {\n        return document[fullscreenEnabled.value];\n      } else {\n        const target2 = targetRef.value;\n        if ((target2 == null ? void 0 : target2[fullscreenEnabled.value]) != null) {\n          return Boolean(target2[fullscreenEnabled.value]);\n        }\n      }\n    }\n    return false;\n  };\n  async function exit() {\n    if (!isSupported.value || !isFullscreen.value)\n      return;\n    if (exitMethod.value) {\n      if ((document == null ? void 0 : document[exitMethod.value]) != null) {\n        await document[exitMethod.value]();\n      } else {\n        const target2 = targetRef.value;\n        if ((target2 == null ? void 0 : target2[exitMethod.value]) != null)\n          await target2[exitMethod.value]();\n      }\n    }\n    isFullscreen.value = false;\n  }\n  async function enter() {\n    if (!isSupported.value || isFullscreen.value)\n      return;\n    if (isElementFullScreen())\n      await exit();\n    const target2 = targetRef.value;\n    if (requestMethod.value && (target2 == null ? void 0 : target2[requestMethod.value]) != null) {\n      await target2[requestMethod.value]();\n      isFullscreen.value = true;\n    }\n  }\n  async function toggle() {\n    await (isFullscreen.value ? exit() : enter());\n  }\n  const handlerCallback = () => {\n    const isElementFullScreenValue = isElementFullScreen();\n    if (!isElementFullScreenValue || isElementFullScreenValue && isCurrentElementFullScreen())\n      isFullscreen.value = isElementFullScreenValue;\n  };\n  useEventListener(document, eventHandlers, handlerCallback, false);\n  useEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, false);\n  if (autoExit)\n    tryOnScopeDispose(exit);\n  return {\n    isSupported,\n    isFullscreen,\n    enter,\n    exit,\n    toggle\n  };\n}\n\nfunction mapGamepadToXbox360Controller(gamepad) {\n  return computed(() => {\n    if (gamepad.value) {\n      return {\n        buttons: {\n          a: gamepad.value.buttons[0],\n          b: gamepad.value.buttons[1],\n          x: gamepad.value.buttons[2],\n          y: gamepad.value.buttons[3]\n        },\n        bumper: {\n          left: gamepad.value.buttons[4],\n          right: gamepad.value.buttons[5]\n        },\n        triggers: {\n          left: gamepad.value.buttons[6],\n          right: gamepad.value.buttons[7]\n        },\n        stick: {\n          left: {\n            horizontal: gamepad.value.axes[0],\n            vertical: gamepad.value.axes[1],\n            button: gamepad.value.buttons[10]\n          },\n          right: {\n            horizontal: gamepad.value.axes[2],\n            vertical: gamepad.value.axes[3],\n            button: gamepad.value.buttons[11]\n          }\n        },\n        dpad: {\n          up: gamepad.value.buttons[12],\n          down: gamepad.value.buttons[13],\n          left: gamepad.value.buttons[14],\n          right: gamepad.value.buttons[15]\n        },\n        back: gamepad.value.buttons[8],\n        start: gamepad.value.buttons[9]\n      };\n    }\n    return null;\n  });\n}\nfunction useGamepad(options = {}) {\n  const {\n    navigator = defaultNavigator\n  } = options;\n  const isSupported = useSupported(() => navigator && \"getGamepads\" in navigator);\n  const gamepads = ref([]);\n  const onConnectedHook = createEventHook();\n  const onDisconnectedHook = createEventHook();\n  const stateFromGamepad = (gamepad) => {\n    const hapticActuators = [];\n    const vibrationActuator = \"vibrationActuator\" in gamepad ? gamepad.vibrationActuator : null;\n    if (vibrationActuator)\n      hapticActuators.push(vibrationActuator);\n    if (gamepad.hapticActuators)\n      hapticActuators.push(...gamepad.hapticActuators);\n    return {\n      ...gamepad,\n      id: gamepad.id,\n      hapticActuators,\n      axes: gamepad.axes.map((axes) => axes),\n      buttons: gamepad.buttons.map((button) => ({ pressed: button.pressed, touched: button.touched, value: button.value }))\n    };\n  };\n  const updateGamepadState = () => {\n    const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n    for (let i = 0; i < _gamepads.length; ++i) {\n      const gamepad = _gamepads[i];\n      if (gamepad) {\n        const index = gamepads.value.findIndex(({ index: index2 }) => index2 === gamepad.index);\n        if (index > -1)\n          gamepads.value[index] = stateFromGamepad(gamepad);\n      }\n    }\n  };\n  const { isActive, pause, resume } = useRafFn(updateGamepadState);\n  const onGamepadConnected = (gamepad) => {\n    if (!gamepads.value.some(({ index }) => index === gamepad.index)) {\n      gamepads.value.push(stateFromGamepad(gamepad));\n      onConnectedHook.trigger(gamepad.index);\n    }\n    resume();\n  };\n  const onGamepadDisconnected = (gamepad) => {\n    gamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index);\n    onDisconnectedHook.trigger(gamepad.index);\n  };\n  useEventListener(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad));\n  useEventListener(\"gamepaddisconnected\", (e) => onGamepadDisconnected(e.gamepad));\n  tryOnMounted(() => {\n    const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n    if (_gamepads) {\n      for (let i = 0; i < _gamepads.length; ++i) {\n        const gamepad = _gamepads[i];\n        if (gamepad)\n          onGamepadConnected(gamepad);\n      }\n    }\n  });\n  pause();\n  return {\n    isSupported,\n    onConnected: onConnectedHook.on,\n    onDisconnected: onDisconnectedHook.on,\n    gamepads,\n    pause,\n    resume,\n    isActive\n  };\n}\n\nfunction useGeolocation(options = {}) {\n  const {\n    enableHighAccuracy = true,\n    maximumAge = 3e4,\n    timeout = 27e3,\n    navigator = defaultNavigator,\n    immediate = true\n  } = options;\n  const isSupported = useSupported(() => navigator && \"geolocation\" in navigator);\n  const locatedAt = ref(null);\n  const error = shallowRef(null);\n  const coords = ref({\n    accuracy: 0,\n    latitude: Number.POSITIVE_INFINITY,\n    longitude: Number.POSITIVE_INFINITY,\n    altitude: null,\n    altitudeAccuracy: null,\n    heading: null,\n    speed: null\n  });\n  function updatePosition(position) {\n    locatedAt.value = position.timestamp;\n    coords.value = position.coords;\n    error.value = null;\n  }\n  let watcher;\n  function resume() {\n    if (isSupported.value) {\n      watcher = navigator.geolocation.watchPosition(\n        updatePosition,\n        (err) => error.value = err,\n        {\n          enableHighAccuracy,\n          maximumAge,\n          timeout\n        }\n      );\n    }\n  }\n  if (immediate)\n    resume();\n  function pause() {\n    if (watcher && navigator)\n      navigator.geolocation.clearWatch(watcher);\n  }\n  tryOnScopeDispose(() => {\n    pause();\n  });\n  return {\n    isSupported,\n    coords,\n    locatedAt,\n    error,\n    resume,\n    pause\n  };\n}\n\nconst defaultEvents$1 = [\"mousemove\", \"mousedown\", \"resize\", \"keydown\", \"touchstart\", \"wheel\"];\nconst oneMinute = 6e4;\nfunction useIdle(timeout = oneMinute, options = {}) {\n  const {\n    initialState = false,\n    listenForVisibilityChange = true,\n    events = defaultEvents$1,\n    window = defaultWindow,\n    eventFilter = throttleFilter(50)\n  } = options;\n  const idle = ref(initialState);\n  const lastActive = ref(timestamp());\n  let timer;\n  const reset = () => {\n    idle.value = false;\n    clearTimeout(timer);\n    timer = setTimeout(() => idle.value = true, timeout);\n  };\n  const onEvent = createFilterWrapper(\n    eventFilter,\n    () => {\n      lastActive.value = timestamp();\n      reset();\n    }\n  );\n  if (window) {\n    const document = window.document;\n    for (const event of events)\n      useEventListener(window, event, onEvent, { passive: true });\n    if (listenForVisibilityChange) {\n      useEventListener(document, \"visibilitychange\", () => {\n        if (!document.hidden)\n          onEvent();\n      });\n    }\n    reset();\n  }\n  return {\n    idle,\n    lastActive,\n    reset\n  };\n}\n\nasync function loadImage(options) {\n  return new Promise((resolve, reject) => {\n    const img = new Image();\n    const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy } = options;\n    img.src = src;\n    if (srcset)\n      img.srcset = srcset;\n    if (sizes)\n      img.sizes = sizes;\n    if (clazz)\n      img.className = clazz;\n    if (loading)\n      img.loading = loading;\n    if (crossorigin)\n      img.crossOrigin = crossorigin;\n    if (referrerPolicy)\n      img.referrerPolicy = referrerPolicy;\n    img.onload = () => resolve(img);\n    img.onerror = reject;\n  });\n}\nfunction useImage(options, asyncStateOptions = {}) {\n  const state = useAsyncState(\n    () => loadImage(toValue(options)),\n    void 0,\n    {\n      resetOnExecute: true,\n      ...asyncStateOptions\n    }\n  );\n  watch(\n    () => toValue(options),\n    () => state.execute(asyncStateOptions.delay),\n    { deep: true }\n  );\n  return state;\n}\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n  const {\n    throttle = 0,\n    idle = 200,\n    onStop = noop,\n    onScroll = noop,\n    offset = {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    },\n    eventListenerOptions = {\n      capture: false,\n      passive: true\n    },\n    behavior = \"auto\",\n    window = defaultWindow\n  } = options;\n  const internalX = ref(0);\n  const internalY = ref(0);\n  const x = computed({\n    get() {\n      return internalX.value;\n    },\n    set(x2) {\n      scrollTo(x2, void 0);\n    }\n  });\n  const y = computed({\n    get() {\n      return internalY.value;\n    },\n    set(y2) {\n      scrollTo(void 0, y2);\n    }\n  });\n  function scrollTo(_x, _y) {\n    var _a, _b, _c;\n    if (!window)\n      return;\n    const _element = toValue(element);\n    if (!_element)\n      return;\n    (_c = _element instanceof Document ? window.document.body : _element) == null ? void 0 : _c.scrollTo({\n      top: (_a = toValue(_y)) != null ? _a : y.value,\n      left: (_b = toValue(_x)) != null ? _b : x.value,\n      behavior: toValue(behavior)\n    });\n  }\n  const isScrolling = ref(false);\n  const arrivedState = reactive({\n    left: true,\n    right: false,\n    top: true,\n    bottom: false\n  });\n  const directions = reactive({\n    left: false,\n    right: false,\n    top: false,\n    bottom: false\n  });\n  const onScrollEnd = (e) => {\n    if (!isScrolling.value)\n      return;\n    isScrolling.value = false;\n    directions.left = false;\n    directions.right = false;\n    directions.top = false;\n    directions.bottom = false;\n    onStop(e);\n  };\n  const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n  const setArrivedState = (target) => {\n    var _a;\n    if (!window)\n      return;\n    const el = target.document ? target.document.documentElement : (_a = target.documentElement) != null ? _a : target;\n    const { display, flexDirection } = getComputedStyle(el);\n    const scrollLeft = el.scrollLeft;\n    directions.left = scrollLeft < internalX.value;\n    directions.right = scrollLeft > internalX.value;\n    const left = Math.abs(scrollLeft) <= 0 + (offset.left || 0);\n    const right = Math.abs(scrollLeft) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n    if (display === \"flex\" && flexDirection === \"row-reverse\") {\n      arrivedState.left = right;\n      arrivedState.right = left;\n    } else {\n      arrivedState.left = left;\n      arrivedState.right = right;\n    }\n    internalX.value = scrollLeft;\n    let scrollTop = el.scrollTop;\n    if (target === window.document && !scrollTop)\n      scrollTop = window.document.body.scrollTop;\n    directions.top = scrollTop < internalY.value;\n    directions.bottom = scrollTop > internalY.value;\n    const top = Math.abs(scrollTop) <= 0 + (offset.top || 0);\n    const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n    if (display === \"flex\" && flexDirection === \"column-reverse\") {\n      arrivedState.top = bottom;\n      arrivedState.bottom = top;\n    } else {\n      arrivedState.top = top;\n      arrivedState.bottom = bottom;\n    }\n    internalY.value = scrollTop;\n  };\n  const onScrollHandler = (e) => {\n    var _a;\n    if (!window)\n      return;\n    const eventTarget = (_a = e.target.documentElement) != null ? _a : e.target;\n    setArrivedState(eventTarget);\n    isScrolling.value = true;\n    onScrollEndDebounced(e);\n    onScroll(e);\n  };\n  useEventListener(\n    element,\n    \"scroll\",\n    throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler,\n    eventListenerOptions\n  );\n  tryOnMounted(() => {\n    const _element = toValue(element);\n    if (!_element)\n      return;\n    setArrivedState(_element);\n  });\n  useEventListener(\n    element,\n    \"scrollend\",\n    onScrollEnd,\n    eventListenerOptions\n  );\n  return {\n    x,\n    y,\n    isScrolling,\n    arrivedState,\n    directions,\n    measure() {\n      const _element = toValue(element);\n      if (window && _element)\n        setArrivedState(_element);\n    }\n  };\n}\n\nfunction resolveElement(el) {\n  if (typeof Window !== \"undefined\" && el instanceof Window)\n    return el.document.documentElement;\n  if (typeof Document !== \"undefined\" && el instanceof Document)\n    return el.documentElement;\n  return el;\n}\n\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n  var _a;\n  const {\n    direction = \"bottom\",\n    interval = 100\n  } = options;\n  const state = reactive(useScroll(\n    element,\n    {\n      ...options,\n      offset: {\n        [direction]: (_a = options.distance) != null ? _a : 0,\n        ...options.offset\n      }\n    }\n  ));\n  const promise = ref();\n  const isLoading = computed(() => !!promise.value);\n  const observedElement = computed(() => {\n    return resolveElement(toValue(element));\n  });\n  const isElementVisible = useElementVisibility(observedElement);\n  function checkAndLoad() {\n    state.measure();\n    if (!observedElement.value || !isElementVisible.value)\n      return;\n    const { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value;\n    const isNarrower = direction === \"bottom\" || direction === \"top\" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth;\n    if (state.arrivedState[direction] || isNarrower) {\n      if (!promise.value) {\n        promise.value = Promise.all([\n          onLoadMore(state),\n          new Promise((resolve) => setTimeout(resolve, interval))\n        ]).finally(() => {\n          promise.value = null;\n          nextTick(() => checkAndLoad());\n        });\n      }\n    }\n  }\n  watch(\n    () => [state.arrivedState[direction], isElementVisible.value],\n    checkAndLoad,\n    { immediate: true }\n  );\n  return {\n    isLoading\n  };\n}\n\nconst defaultEvents = [\"mousedown\", \"mouseup\", \"keydown\", \"keyup\"];\nfunction useKeyModifier(modifier, options = {}) {\n  const {\n    events = defaultEvents,\n    document = defaultDocument,\n    initial = null\n  } = options;\n  const state = ref(initial);\n  if (document) {\n    events.forEach((listenerEvent) => {\n      useEventListener(document, listenerEvent, (evt) => {\n        if (typeof evt.getModifierState === \"function\")\n          state.value = evt.getModifierState(modifier);\n      });\n    });\n  }\n  return state;\n}\n\nfunction useLocalStorage(key, initialValue, options = {}) {\n  const { window = defaultWindow } = options;\n  return useStorage(key, initialValue, window == null ? void 0 : window.localStorage, options);\n}\n\nconst DefaultMagicKeysAliasMap = {\n  ctrl: \"control\",\n  command: \"meta\",\n  cmd: \"meta\",\n  option: \"alt\",\n  up: \"arrowup\",\n  down: \"arrowdown\",\n  left: \"arrowleft\",\n  right: \"arrowright\"\n};\n\nfunction useMagicKeys(options = {}) {\n  const {\n    reactive: useReactive = false,\n    target = defaultWindow,\n    aliasMap = DefaultMagicKeysAliasMap,\n    passive = true,\n    onEventFired = noop\n  } = options;\n  const current = reactive(/* @__PURE__ */ new Set());\n  const obj = {\n    toJSON() {\n      return {};\n    },\n    current\n  };\n  const refs = useReactive ? reactive(obj) : obj;\n  const metaDeps = /* @__PURE__ */ new Set();\n  const usedKeys = /* @__PURE__ */ new Set();\n  function setRefs(key, value) {\n    if (key in refs) {\n      if (useReactive)\n        refs[key] = value;\n      else\n        refs[key].value = value;\n    }\n  }\n  function reset() {\n    current.clear();\n    for (const key of usedKeys)\n      setRefs(key, false);\n  }\n  function updateRefs(e, value) {\n    var _a, _b;\n    const key = (_a = e.key) == null ? void 0 : _a.toLowerCase();\n    const code = (_b = e.code) == null ? void 0 : _b.toLowerCase();\n    const values = [code, key].filter(Boolean);\n    if (key) {\n      if (value)\n        current.add(key);\n      else\n        current.delete(key);\n    }\n    for (const key2 of values) {\n      usedKeys.add(key2);\n      setRefs(key2, value);\n    }\n    if (key === \"meta\" && !value) {\n      metaDeps.forEach((key2) => {\n        current.delete(key2);\n        setRefs(key2, false);\n      });\n      metaDeps.clear();\n    } else if (typeof e.getModifierState === \"function\" && e.getModifierState(\"Meta\") && value) {\n      [...current, ...values].forEach((key2) => metaDeps.add(key2));\n    }\n  }\n  useEventListener(target, \"keydown\", (e) => {\n    updateRefs(e, true);\n    return onEventFired(e);\n  }, { passive });\n  useEventListener(target, \"keyup\", (e) => {\n    updateRefs(e, false);\n    return onEventFired(e);\n  }, { passive });\n  useEventListener(\"blur\", reset, { passive: true });\n  useEventListener(\"focus\", reset, { passive: true });\n  const proxy = new Proxy(\n    refs,\n    {\n      get(target2, prop, rec) {\n        if (typeof prop !== \"string\")\n          return Reflect.get(target2, prop, rec);\n        prop = prop.toLowerCase();\n        if (prop in aliasMap)\n          prop = aliasMap[prop];\n        if (!(prop in refs)) {\n          if (/[+_-]/.test(prop)) {\n            const keys = prop.split(/[+_-]/g).map((i) => i.trim());\n            refs[prop] = computed(() => keys.every((key) => toValue(proxy[key])));\n          } else {\n            refs[prop] = ref(false);\n          }\n        }\n        const r = Reflect.get(target2, prop, rec);\n        return useReactive ? toValue(r) : r;\n      }\n    }\n  );\n  return proxy;\n}\n\nfunction usingElRef(source, cb) {\n  if (toValue(source))\n    cb(toValue(source));\n}\nfunction timeRangeToArray(timeRanges) {\n  let ranges = [];\n  for (let i = 0; i < timeRanges.length; ++i)\n    ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]];\n  return ranges;\n}\nfunction tracksToArray(tracks) {\n  return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ id, label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }));\n}\nconst defaultOptions = {\n  src: \"\",\n  tracks: []\n};\nfunction useMediaControls(target, options = {}) {\n  options = {\n    ...defaultOptions,\n    ...options\n  };\n  const {\n    document = defaultDocument\n  } = options;\n  const currentTime = ref(0);\n  const duration = ref(0);\n  const seeking = ref(false);\n  const volume = ref(1);\n  const waiting = ref(false);\n  const ended = ref(false);\n  const playing = ref(false);\n  const rate = ref(1);\n  const stalled = ref(false);\n  const buffered = ref([]);\n  const tracks = ref([]);\n  const selectedTrack = ref(-1);\n  const isPictureInPicture = ref(false);\n  const muted = ref(false);\n  const supportsPictureInPicture = document && \"pictureInPictureEnabled\" in document;\n  const sourceErrorEvent = createEventHook();\n  const disableTrack = (track) => {\n    usingElRef(target, (el) => {\n      if (track) {\n        const id = typeof track === \"number\" ? track : track.id;\n        el.textTracks[id].mode = \"disabled\";\n      } else {\n        for (let i = 0; i < el.textTracks.length; ++i)\n          el.textTracks[i].mode = \"disabled\";\n      }\n      selectedTrack.value = -1;\n    });\n  };\n  const enableTrack = (track, disableTracks = true) => {\n    usingElRef(target, (el) => {\n      const id = typeof track === \"number\" ? track : track.id;\n      if (disableTracks)\n        disableTrack();\n      el.textTracks[id].mode = \"showing\";\n      selectedTrack.value = id;\n    });\n  };\n  const togglePictureInPicture = () => {\n    return new Promise((resolve, reject) => {\n      usingElRef(target, async (el) => {\n        if (supportsPictureInPicture) {\n          if (!isPictureInPicture.value) {\n            el.requestPictureInPicture().then(resolve).catch(reject);\n          } else {\n            document.exitPictureInPicture().then(resolve).catch(reject);\n          }\n        }\n      });\n    });\n  };\n  watchEffect(() => {\n    if (!document)\n      return;\n    const el = toValue(target);\n    if (!el)\n      return;\n    const src = toValue(options.src);\n    let sources = [];\n    if (!src)\n      return;\n    if (typeof src === \"string\")\n      sources = [{ src }];\n    else if (Array.isArray(src))\n      sources = src;\n    else if (isObject(src))\n      sources = [src];\n    el.querySelectorAll(\"source\").forEach((e) => {\n      e.removeEventListener(\"error\", sourceErrorEvent.trigger);\n      e.remove();\n    });\n    sources.forEach(({ src: src2, type }) => {\n      const source = document.createElement(\"source\");\n      source.setAttribute(\"src\", src2);\n      source.setAttribute(\"type\", type || \"\");\n      source.addEventListener(\"error\", sourceErrorEvent.trigger);\n      el.appendChild(source);\n    });\n    el.load();\n  });\n  tryOnScopeDispose(() => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.querySelectorAll(\"source\").forEach((e) => e.removeEventListener(\"error\", sourceErrorEvent.trigger));\n  });\n  watch([target, volume], () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.volume = volume.value;\n  });\n  watch([target, muted], () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.muted = muted.value;\n  });\n  watch([target, rate], () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.playbackRate = rate.value;\n  });\n  watchEffect(() => {\n    if (!document)\n      return;\n    const textTracks = toValue(options.tracks);\n    const el = toValue(target);\n    if (!textTracks || !textTracks.length || !el)\n      return;\n    el.querySelectorAll(\"track\").forEach((e) => e.remove());\n    textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => {\n      const track = document.createElement(\"track\");\n      track.default = isDefault || false;\n      track.kind = kind;\n      track.label = label;\n      track.src = src;\n      track.srclang = srcLang;\n      if (track.default)\n        selectedTrack.value = i;\n      el.appendChild(track);\n    });\n  });\n  const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.currentTime = time;\n  });\n  const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    isPlaying ? el.play() : el.pause();\n  });\n  useEventListener(target, \"timeupdate\", () => ignoreCurrentTimeUpdates(() => currentTime.value = toValue(target).currentTime));\n  useEventListener(target, \"durationchange\", () => duration.value = toValue(target).duration);\n  useEventListener(target, \"progress\", () => buffered.value = timeRangeToArray(toValue(target).buffered));\n  useEventListener(target, \"seeking\", () => seeking.value = true);\n  useEventListener(target, \"seeked\", () => seeking.value = false);\n  useEventListener(target, [\"waiting\", \"loadstart\"], () => {\n    waiting.value = true;\n    ignorePlayingUpdates(() => playing.value = false);\n  });\n  useEventListener(target, \"loadeddata\", () => waiting.value = false);\n  useEventListener(target, \"playing\", () => {\n    waiting.value = false;\n    ended.value = false;\n    ignorePlayingUpdates(() => playing.value = true);\n  });\n  useEventListener(target, \"ratechange\", () => rate.value = toValue(target).playbackRate);\n  useEventListener(target, \"stalled\", () => stalled.value = true);\n  useEventListener(target, \"ended\", () => ended.value = true);\n  useEventListener(target, \"pause\", () => ignorePlayingUpdates(() => playing.value = false));\n  useEventListener(target, \"play\", () => ignorePlayingUpdates(() => playing.value = true));\n  useEventListener(target, \"enterpictureinpicture\", () => isPictureInPicture.value = true);\n  useEventListener(target, \"leavepictureinpicture\", () => isPictureInPicture.value = false);\n  useEventListener(target, \"volumechange\", () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    volume.value = el.volume;\n    muted.value = el.muted;\n  });\n  const listeners = [];\n  const stop = watch([target], () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    stop();\n    listeners[0] = useEventListener(el.textTracks, \"addtrack\", () => tracks.value = tracksToArray(el.textTracks));\n    listeners[1] = useEventListener(el.textTracks, \"removetrack\", () => tracks.value = tracksToArray(el.textTracks));\n    listeners[2] = useEventListener(el.textTracks, \"change\", () => tracks.value = tracksToArray(el.textTracks));\n  });\n  tryOnScopeDispose(() => listeners.forEach((listener) => listener()));\n  return {\n    currentTime,\n    duration,\n    waiting,\n    seeking,\n    ended,\n    stalled,\n    buffered,\n    playing,\n    rate,\n    // Volume\n    volume,\n    muted,\n    // Tracks\n    tracks,\n    selectedTrack,\n    enableTrack,\n    disableTrack,\n    // Picture in Picture\n    supportsPictureInPicture,\n    togglePictureInPicture,\n    isPictureInPicture,\n    // Events\n    onSourceError: sourceErrorEvent.on\n  };\n}\n\nfunction getMapVue2Compat() {\n  const data = reactive({});\n  return {\n    get: (key) => data[key],\n    set: (key, value) => set(data, key, value),\n    has: (key) => hasOwn(data, key),\n    delete: (key) => del(data, key),\n    clear: () => {\n      Object.keys(data).forEach((key) => {\n        del(data, key);\n      });\n    }\n  };\n}\nfunction useMemoize(resolver, options) {\n  const initCache = () => {\n    if (options == null ? void 0 : options.cache)\n      return reactive(options.cache);\n    if (isVue2)\n      return getMapVue2Compat();\n    return reactive(/* @__PURE__ */ new Map());\n  };\n  const cache = initCache();\n  const generateKey = (...args) => (options == null ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args);\n  const _loadData = (key, ...args) => {\n    cache.set(key, resolver(...args));\n    return cache.get(key);\n  };\n  const loadData = (...args) => _loadData(generateKey(...args), ...args);\n  const deleteData = (...args) => {\n    cache.delete(generateKey(...args));\n  };\n  const clearData = () => {\n    cache.clear();\n  };\n  const memoized = (...args) => {\n    const key = generateKey(...args);\n    if (cache.has(key))\n      return cache.get(key);\n    return _loadData(key, ...args);\n  };\n  memoized.load = loadData;\n  memoized.delete = deleteData;\n  memoized.clear = clearData;\n  memoized.generateKey = generateKey;\n  memoized.cache = cache;\n  return memoized;\n}\n\nfunction useMemory(options = {}) {\n  const memory = ref();\n  const isSupported = useSupported(() => typeof performance !== \"undefined\" && \"memory\" in performance);\n  if (isSupported.value) {\n    const { interval = 1e3 } = options;\n    useIntervalFn(() => {\n      memory.value = performance.memory;\n    }, interval, { immediate: options.immediate, immediateCallback: options.immediateCallback });\n  }\n  return { isSupported, memory };\n}\n\nconst UseMouseBuiltinExtractors = {\n  page: (event) => [event.pageX, event.pageY],\n  client: (event) => [event.clientX, event.clientY],\n  screen: (event) => [event.screenX, event.screenY],\n  movement: (event) => event instanceof Touch ? null : [event.movementX, event.movementY]\n};\nfunction useMouse(options = {}) {\n  const {\n    type = \"page\",\n    touch = true,\n    resetOnTouchEnds = false,\n    initialValue = { x: 0, y: 0 },\n    window = defaultWindow,\n    target = window,\n    scroll = true,\n    eventFilter\n  } = options;\n  let _prevMouseEvent = null;\n  const x = ref(initialValue.x);\n  const y = ref(initialValue.y);\n  const sourceType = ref(null);\n  const extractor = typeof type === \"function\" ? type : UseMouseBuiltinExtractors[type];\n  const mouseHandler = (event) => {\n    const result = extractor(event);\n    _prevMouseEvent = event;\n    if (result) {\n      [x.value, y.value] = result;\n      sourceType.value = \"mouse\";\n    }\n  };\n  const touchHandler = (event) => {\n    if (event.touches.length > 0) {\n      const result = extractor(event.touches[0]);\n      if (result) {\n        [x.value, y.value] = result;\n        sourceType.value = \"touch\";\n      }\n    }\n  };\n  const scrollHandler = () => {\n    if (!_prevMouseEvent || !window)\n      return;\n    const pos = extractor(_prevMouseEvent);\n    if (_prevMouseEvent instanceof MouseEvent && pos) {\n      x.value = pos[0] + window.scrollX;\n      y.value = pos[1] + window.scrollY;\n    }\n  };\n  const reset = () => {\n    x.value = initialValue.x;\n    y.value = initialValue.y;\n  };\n  const mouseHandlerWrapper = eventFilter ? (event) => eventFilter(() => mouseHandler(event), {}) : (event) => mouseHandler(event);\n  const touchHandlerWrapper = eventFilter ? (event) => eventFilter(() => touchHandler(event), {}) : (event) => touchHandler(event);\n  const scrollHandlerWrapper = eventFilter ? () => eventFilter(() => scrollHandler(), {}) : () => scrollHandler();\n  if (target) {\n    const listenerOptions = { passive: true };\n    useEventListener(target, [\"mousemove\", \"dragover\"], mouseHandlerWrapper, listenerOptions);\n    if (touch && type !== \"movement\") {\n      useEventListener(target, [\"touchstart\", \"touchmove\"], touchHandlerWrapper, listenerOptions);\n      if (resetOnTouchEnds)\n        useEventListener(target, \"touchend\", reset, listenerOptions);\n    }\n    if (scroll && type === \"page\")\n      useEventListener(window, \"scroll\", scrollHandlerWrapper, { passive: true });\n  }\n  return {\n    x,\n    y,\n    sourceType\n  };\n}\n\nfunction useMouseInElement(target, options = {}) {\n  const {\n    handleOutside = true,\n    window = defaultWindow\n  } = options;\n  const type = options.type || \"page\";\n  const { x, y, sourceType } = useMouse(options);\n  const targetRef = ref(target != null ? target : window == null ? void 0 : window.document.body);\n  const elementX = ref(0);\n  const elementY = ref(0);\n  const elementPositionX = ref(0);\n  const elementPositionY = ref(0);\n  const elementHeight = ref(0);\n  const elementWidth = ref(0);\n  const isOutside = ref(true);\n  let stop = () => {\n  };\n  if (window) {\n    stop = watch(\n      [targetRef, x, y],\n      () => {\n        const el = unrefElement(targetRef);\n        if (!el)\n          return;\n        const {\n          left,\n          top,\n          width,\n          height\n        } = el.getBoundingClientRect();\n        elementPositionX.value = left + (type === \"page\" ? window.pageXOffset : 0);\n        elementPositionY.value = top + (type === \"page\" ? window.pageYOffset : 0);\n        elementHeight.value = height;\n        elementWidth.value = width;\n        const elX = x.value - elementPositionX.value;\n        const elY = y.value - elementPositionY.value;\n        isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height;\n        if (handleOutside || !isOutside.value) {\n          elementX.value = elX;\n          elementY.value = elY;\n        }\n      },\n      { immediate: true }\n    );\n    useEventListener(document, \"mouseleave\", () => {\n      isOutside.value = true;\n    });\n  }\n  return {\n    x,\n    y,\n    sourceType,\n    elementX,\n    elementY,\n    elementPositionX,\n    elementPositionY,\n    elementHeight,\n    elementWidth,\n    isOutside,\n    stop\n  };\n}\n\nfunction useMousePressed(options = {}) {\n  const {\n    touch = true,\n    drag = true,\n    capture = false,\n    initialValue = false,\n    window = defaultWindow\n  } = options;\n  const pressed = ref(initialValue);\n  const sourceType = ref(null);\n  if (!window) {\n    return {\n      pressed,\n      sourceType\n    };\n  }\n  const onPressed = (srcType) => () => {\n    pressed.value = true;\n    sourceType.value = srcType;\n  };\n  const onReleased = () => {\n    pressed.value = false;\n    sourceType.value = null;\n  };\n  const target = computed(() => unrefElement(options.target) || window);\n  useEventListener(target, \"mousedown\", onPressed(\"mouse\"), { passive: true, capture });\n  useEventListener(window, \"mouseleave\", onReleased, { passive: true, capture });\n  useEventListener(window, \"mouseup\", onReleased, { passive: true, capture });\n  if (drag) {\n    useEventListener(target, \"dragstart\", onPressed(\"mouse\"), { passive: true, capture });\n    useEventListener(window, \"drop\", onReleased, { passive: true, capture });\n    useEventListener(window, \"dragend\", onReleased, { passive: true, capture });\n  }\n  if (touch) {\n    useEventListener(target, \"touchstart\", onPressed(\"touch\"), { passive: true, capture });\n    useEventListener(window, \"touchend\", onReleased, { passive: true, capture });\n    useEventListener(window, \"touchcancel\", onReleased, { passive: true, capture });\n  }\n  return {\n    pressed,\n    sourceType\n  };\n}\n\nfunction useNavigatorLanguage(options = {}) {\n  const { window = defaultWindow } = options;\n  const navigator = window == null ? void 0 : window.navigator;\n  const isSupported = useSupported(() => navigator && \"language\" in navigator);\n  const language = ref(navigator == null ? void 0 : navigator.language);\n  useEventListener(window, \"languagechange\", () => {\n    if (navigator)\n      language.value = navigator.language;\n  });\n  return {\n    isSupported,\n    language\n  };\n}\n\nfunction useNetwork(options = {}) {\n  const { window = defaultWindow } = options;\n  const navigator = window == null ? void 0 : window.navigator;\n  const isSupported = useSupported(() => navigator && \"connection\" in navigator);\n  const isOnline = ref(true);\n  const saveData = ref(false);\n  const offlineAt = ref(void 0);\n  const onlineAt = ref(void 0);\n  const downlink = ref(void 0);\n  const downlinkMax = ref(void 0);\n  const rtt = ref(void 0);\n  const effectiveType = ref(void 0);\n  const type = ref(\"unknown\");\n  const connection = isSupported.value && navigator.connection;\n  function updateNetworkInformation() {\n    if (!navigator)\n      return;\n    isOnline.value = navigator.onLine;\n    offlineAt.value = isOnline.value ? void 0 : Date.now();\n    onlineAt.value = isOnline.value ? Date.now() : void 0;\n    if (connection) {\n      downlink.value = connection.downlink;\n      downlinkMax.value = connection.downlinkMax;\n      effectiveType.value = connection.effectiveType;\n      rtt.value = connection.rtt;\n      saveData.value = connection.saveData;\n      type.value = connection.type;\n    }\n  }\n  if (window) {\n    useEventListener(window, \"offline\", () => {\n      isOnline.value = false;\n      offlineAt.value = Date.now();\n    });\n    useEventListener(window, \"online\", () => {\n      isOnline.value = true;\n      onlineAt.value = Date.now();\n    });\n  }\n  if (connection)\n    useEventListener(connection, \"change\", updateNetworkInformation, false);\n  updateNetworkInformation();\n  return {\n    isSupported,\n    isOnline,\n    saveData,\n    offlineAt,\n    onlineAt,\n    downlink,\n    downlinkMax,\n    effectiveType,\n    rtt,\n    type\n  };\n}\n\nfunction useNow(options = {}) {\n  const {\n    controls: exposeControls = false,\n    interval = \"requestAnimationFrame\"\n  } = options;\n  const now = ref(/* @__PURE__ */ new Date());\n  const update = () => now.value = /* @__PURE__ */ new Date();\n  const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true });\n  if (exposeControls) {\n    return {\n      now,\n      ...controls\n    };\n  } else {\n    return now;\n  }\n}\n\nfunction useObjectUrl(object) {\n  const url = ref();\n  const release = () => {\n    if (url.value)\n      URL.revokeObjectURL(url.value);\n    url.value = void 0;\n  };\n  watch(\n    () => toValue(object),\n    (newObject) => {\n      release();\n      if (newObject)\n        url.value = URL.createObjectURL(newObject);\n    },\n    { immediate: true }\n  );\n  tryOnScopeDispose(release);\n  return readonly(url);\n}\n\nfunction useClamp(value, min, max) {\n  if (typeof value === \"function\" || isReadonly(value))\n    return computed(() => clamp(toValue(value), toValue(min), toValue(max)));\n  const _value = ref(value);\n  return computed({\n    get() {\n      return _value.value = clamp(_value.value, toValue(min), toValue(max));\n    },\n    set(value2) {\n      _value.value = clamp(value2, toValue(min), toValue(max));\n    }\n  });\n}\n\nfunction useOffsetPagination(options) {\n  const {\n    total = Number.POSITIVE_INFINITY,\n    pageSize = 10,\n    page = 1,\n    onPageChange = noop,\n    onPageSizeChange = noop,\n    onPageCountChange = noop\n  } = options;\n  const currentPageSize = useClamp(pageSize, 1, Number.POSITIVE_INFINITY);\n  const pageCount = computed(() => Math.max(\n    1,\n    Math.ceil(toValue(total) / toValue(currentPageSize))\n  ));\n  const currentPage = useClamp(page, 1, pageCount);\n  const isFirstPage = computed(() => currentPage.value === 1);\n  const isLastPage = computed(() => currentPage.value === pageCount.value);\n  if (isRef(page))\n    syncRef(page, currentPage);\n  if (isRef(pageSize))\n    syncRef(pageSize, currentPageSize);\n  function prev() {\n    currentPage.value--;\n  }\n  function next() {\n    currentPage.value++;\n  }\n  const returnValue = {\n    currentPage,\n    currentPageSize,\n    pageCount,\n    isFirstPage,\n    isLastPage,\n    prev,\n    next\n  };\n  watch(currentPage, () => {\n    onPageChange(reactive(returnValue));\n  });\n  watch(currentPageSize, () => {\n    onPageSizeChange(reactive(returnValue));\n  });\n  watch(pageCount, () => {\n    onPageCountChange(reactive(returnValue));\n  });\n  return returnValue;\n}\n\nfunction useOnline(options = {}) {\n  const { isOnline } = useNetwork(options);\n  return isOnline;\n}\n\nfunction usePageLeave(options = {}) {\n  const { window = defaultWindow } = options;\n  const isLeft = ref(false);\n  const handler = (event) => {\n    if (!window)\n      return;\n    event = event || window.event;\n    const from = event.relatedTarget || event.toElement;\n    isLeft.value = !from;\n  };\n  if (window) {\n    useEventListener(window, \"mouseout\", handler, { passive: true });\n    useEventListener(window.document, \"mouseleave\", handler, { passive: true });\n    useEventListener(window.document, \"mouseenter\", handler, { passive: true });\n  }\n  return isLeft;\n}\n\nfunction useParallax(target, options = {}) {\n  const {\n    deviceOrientationTiltAdjust = (i) => i,\n    deviceOrientationRollAdjust = (i) => i,\n    mouseTiltAdjust = (i) => i,\n    mouseRollAdjust = (i) => i,\n    window = defaultWindow\n  } = options;\n  const orientation = reactive(useDeviceOrientation({ window }));\n  const {\n    elementX: x,\n    elementY: y,\n    elementWidth: width,\n    elementHeight: height\n  } = useMouseInElement(target, { handleOutside: false, window });\n  const source = computed(() => {\n    if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0))\n      return \"deviceOrientation\";\n    return \"mouse\";\n  });\n  const roll = computed(() => {\n    if (source.value === \"deviceOrientation\") {\n      const value = -orientation.beta / 90;\n      return deviceOrientationRollAdjust(value);\n    } else {\n      const value = -(y.value - height.value / 2) / height.value;\n      return mouseRollAdjust(value);\n    }\n  });\n  const tilt = computed(() => {\n    if (source.value === \"deviceOrientation\") {\n      const value = orientation.gamma / 90;\n      return deviceOrientationTiltAdjust(value);\n    } else {\n      const value = (x.value - width.value / 2) / width.value;\n      return mouseTiltAdjust(value);\n    }\n  });\n  return { roll, tilt, source };\n}\n\nfunction useParentElement(element = useCurrentElement()) {\n  const parentElement = shallowRef();\n  const update = () => {\n    const el = unrefElement(element);\n    if (el)\n      parentElement.value = el.parentElement;\n  };\n  tryOnMounted(update);\n  watch(() => toValue(element), update);\n  return parentElement;\n}\n\nfunction usePerformanceObserver(options, callback) {\n  const {\n    window = defaultWindow,\n    immediate = true,\n    ...performanceOptions\n  } = options;\n  const isSupported = useSupported(() => window && \"PerformanceObserver\" in window);\n  let observer;\n  const stop = () => {\n    observer == null ? void 0 : observer.disconnect();\n  };\n  const start = () => {\n    if (isSupported.value) {\n      stop();\n      observer = new PerformanceObserver(callback);\n      observer.observe(performanceOptions);\n    }\n  };\n  tryOnScopeDispose(stop);\n  if (immediate)\n    start();\n  return {\n    isSupported,\n    start,\n    stop\n  };\n}\n\nconst defaultState = {\n  x: 0,\n  y: 0,\n  pointerId: 0,\n  pressure: 0,\n  tiltX: 0,\n  tiltY: 0,\n  width: 0,\n  height: 0,\n  twist: 0,\n  pointerType: null\n};\nconst keys = /* @__PURE__ */ Object.keys(defaultState);\nfunction usePointer(options = {}) {\n  const {\n    target = defaultWindow\n  } = options;\n  const isInside = ref(false);\n  const state = ref(options.initialValue || {});\n  Object.assign(state.value, defaultState, state.value);\n  const handler = (event) => {\n    isInside.value = true;\n    if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType))\n      return;\n    state.value = objectPick(event, keys, false);\n  };\n  if (target) {\n    const listenerOptions = { passive: true };\n    useEventListener(target, [\"pointerdown\", \"pointermove\", \"pointerup\"], handler, listenerOptions);\n    useEventListener(target, \"pointerleave\", () => isInside.value = false, listenerOptions);\n  }\n  return {\n    ...toRefs(state),\n    isInside\n  };\n}\n\nfunction usePointerLock(target, options = {}) {\n  const { document = defaultDocument, pointerLockOptions } = options;\n  const isSupported = useSupported(() => document && \"pointerLockElement\" in document);\n  const element = ref();\n  const triggerElement = ref();\n  let targetElement;\n  if (isSupported.value) {\n    useEventListener(document, \"pointerlockchange\", () => {\n      var _a;\n      const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n      if (targetElement && currentElement === targetElement) {\n        element.value = document.pointerLockElement;\n        if (!element.value)\n          targetElement = triggerElement.value = null;\n      }\n    });\n    useEventListener(document, \"pointerlockerror\", () => {\n      var _a;\n      const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n      if (targetElement && currentElement === targetElement) {\n        const action = document.pointerLockElement ? \"release\" : \"acquire\";\n        throw new Error(`Failed to ${action} pointer lock.`);\n      }\n    });\n  }\n  async function lock(e, options2) {\n    var _a;\n    if (!isSupported.value)\n      throw new Error(\"Pointer Lock API is not supported by your browser.\");\n    triggerElement.value = e instanceof Event ? e.currentTarget : null;\n    targetElement = e instanceof Event ? (_a = unrefElement(target)) != null ? _a : triggerElement.value : unrefElement(e);\n    if (!targetElement)\n      throw new Error(\"Target element undefined.\");\n    targetElement.requestPointerLock(options2 != null ? options2 : pointerLockOptions);\n    return await until(element).toBe(targetElement);\n  }\n  async function unlock() {\n    if (!element.value)\n      return false;\n    document.exitPointerLock();\n    await until(element).toBeNull();\n    return true;\n  }\n  return {\n    isSupported,\n    element,\n    triggerElement,\n    lock,\n    unlock\n  };\n}\n\nfunction usePointerSwipe(target, options = {}) {\n  const targetRef = toRef(target);\n  const {\n    threshold = 50,\n    onSwipe,\n    onSwipeEnd,\n    onSwipeStart\n  } = options;\n  const posStart = reactive({ x: 0, y: 0 });\n  const updatePosStart = (x, y) => {\n    posStart.x = x;\n    posStart.y = y;\n  };\n  const posEnd = reactive({ x: 0, y: 0 });\n  const updatePosEnd = (x, y) => {\n    posEnd.x = x;\n    posEnd.y = y;\n  };\n  const distanceX = computed(() => posStart.x - posEnd.x);\n  const distanceY = computed(() => posStart.y - posEnd.y);\n  const { max, abs } = Math;\n  const isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold);\n  const isSwiping = ref(false);\n  const isPointerDown = ref(false);\n  const direction = computed(() => {\n    if (!isThresholdExceeded.value)\n      return \"none\";\n    if (abs(distanceX.value) > abs(distanceY.value)) {\n      return distanceX.value > 0 ? \"left\" : \"right\";\n    } else {\n      return distanceY.value > 0 ? \"up\" : \"down\";\n    }\n  });\n  const eventIsAllowed = (e) => {\n    var _a, _b, _c;\n    const isReleasingButton = e.buttons === 0;\n    const isPrimaryButton = e.buttons === 1;\n    return (_c = (_b = (_a = options.pointerTypes) == null ? void 0 : _a.includes(e.pointerType)) != null ? _b : isReleasingButton || isPrimaryButton) != null ? _c : true;\n  };\n  const stops = [\n    useEventListener(target, \"pointerdown\", (e) => {\n      var _a, _b;\n      if (!eventIsAllowed(e))\n        return;\n      isPointerDown.value = true;\n      (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"none\");\n      const eventTarget = e.target;\n      eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId);\n      const { clientX: x, clientY: y } = e;\n      updatePosStart(x, y);\n      updatePosEnd(x, y);\n      onSwipeStart == null ? void 0 : onSwipeStart(e);\n    }),\n    useEventListener(target, \"pointermove\", (e) => {\n      if (!eventIsAllowed(e))\n        return;\n      if (!isPointerDown.value)\n        return;\n      const { clientX: x, clientY: y } = e;\n      updatePosEnd(x, y);\n      if (!isSwiping.value && isThresholdExceeded.value)\n        isSwiping.value = true;\n      if (isSwiping.value)\n        onSwipe == null ? void 0 : onSwipe(e);\n    }),\n    useEventListener(target, \"pointerup\", (e) => {\n      var _a, _b;\n      if (!eventIsAllowed(e))\n        return;\n      if (isSwiping.value)\n        onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n      isPointerDown.value = false;\n      isSwiping.value = false;\n      (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"initial\");\n    })\n  ];\n  const stop = () => stops.forEach((s) => s());\n  return {\n    isSwiping: readonly(isSwiping),\n    direction: readonly(direction),\n    posStart: readonly(posStart),\n    posEnd: readonly(posEnd),\n    distanceX,\n    distanceY,\n    stop\n  };\n}\n\nfunction usePreferredColorScheme(options) {\n  const isLight = useMediaQuery(\"(prefers-color-scheme: light)\", options);\n  const isDark = useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n  return computed(() => {\n    if (isDark.value)\n      return \"dark\";\n    if (isLight.value)\n      return \"light\";\n    return \"no-preference\";\n  });\n}\n\nfunction usePreferredContrast(options) {\n  const isMore = useMediaQuery(\"(prefers-contrast: more)\", options);\n  const isLess = useMediaQuery(\"(prefers-contrast: less)\", options);\n  const isCustom = useMediaQuery(\"(prefers-contrast: custom)\", options);\n  return computed(() => {\n    if (isMore.value)\n      return \"more\";\n    if (isLess.value)\n      return \"less\";\n    if (isCustom.value)\n      return \"custom\";\n    return \"no-preference\";\n  });\n}\n\nfunction usePreferredLanguages(options = {}) {\n  const { window = defaultWindow } = options;\n  if (!window)\n    return ref([\"en\"]);\n  const navigator = window.navigator;\n  const value = ref(navigator.languages);\n  useEventListener(window, \"languagechange\", () => {\n    value.value = navigator.languages;\n  });\n  return value;\n}\n\nfunction usePreferredReducedMotion(options) {\n  const isReduced = useMediaQuery(\"(prefers-reduced-motion: reduce)\", options);\n  return computed(() => {\n    if (isReduced.value)\n      return \"reduce\";\n    return \"no-preference\";\n  });\n}\n\nfunction usePrevious(value, initialValue) {\n  const previous = shallowRef(initialValue);\n  watch(\n    toRef(value),\n    (_, oldValue) => {\n      previous.value = oldValue;\n    },\n    { flush: \"sync\" }\n  );\n  return readonly(previous);\n}\n\nfunction useScreenOrientation(options = {}) {\n  const {\n    window = defaultWindow\n  } = options;\n  const isSupported = useSupported(() => window && \"screen\" in window && \"orientation\" in window.screen);\n  const screenOrientation = isSupported.value ? window.screen.orientation : {};\n  const orientation = ref(screenOrientation.type);\n  const angle = ref(screenOrientation.angle || 0);\n  if (isSupported.value) {\n    useEventListener(window, \"orientationchange\", () => {\n      orientation.value = screenOrientation.type;\n      angle.value = screenOrientation.angle;\n    });\n  }\n  const lockOrientation = (type) => {\n    if (!isSupported.value)\n      return Promise.reject(new Error(\"Not supported\"));\n    return screenOrientation.lock(type);\n  };\n  const unlockOrientation = () => {\n    if (isSupported.value)\n      screenOrientation.unlock();\n  };\n  return {\n    isSupported,\n    orientation,\n    angle,\n    lockOrientation,\n    unlockOrientation\n  };\n}\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n  const top = ref(\"\");\n  const right = ref(\"\");\n  const bottom = ref(\"\");\n  const left = ref(\"\");\n  if (isClient) {\n    const topCssVar = useCssVar(topVarName);\n    const rightCssVar = useCssVar(rightVarName);\n    const bottomCssVar = useCssVar(bottomVarName);\n    const leftCssVar = useCssVar(leftVarName);\n    topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n    rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n    bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n    leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n    update();\n    useEventListener(\"resize\", useDebounceFn(update));\n  }\n  function update() {\n    top.value = getValue(topVarName);\n    right.value = getValue(rightVarName);\n    bottom.value = getValue(bottomVarName);\n    left.value = getValue(leftVarName);\n  }\n  return {\n    top,\n    right,\n    bottom,\n    left,\n    update\n  };\n}\nfunction getValue(position) {\n  return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nfunction useScriptTag(src, onLoaded = noop, options = {}) {\n  const {\n    immediate = true,\n    manual = false,\n    type = \"text/javascript\",\n    async = true,\n    crossOrigin,\n    referrerPolicy,\n    noModule,\n    defer,\n    document = defaultDocument,\n    attrs = {}\n  } = options;\n  const scriptTag = ref(null);\n  let _promise = null;\n  const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => {\n    const resolveWithElement = (el2) => {\n      scriptTag.value = el2;\n      resolve(el2);\n      return el2;\n    };\n    if (!document) {\n      resolve(false);\n      return;\n    }\n    let shouldAppend = false;\n    let el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n    if (!el) {\n      el = document.createElement(\"script\");\n      el.type = type;\n      el.async = async;\n      el.src = toValue(src);\n      if (defer)\n        el.defer = defer;\n      if (crossOrigin)\n        el.crossOrigin = crossOrigin;\n      if (noModule)\n        el.noModule = noModule;\n      if (referrerPolicy)\n        el.referrerPolicy = referrerPolicy;\n      Object.entries(attrs).forEach(([name, value]) => el == null ? void 0 : el.setAttribute(name, value));\n      shouldAppend = true;\n    } else if (el.hasAttribute(\"data-loaded\")) {\n      resolveWithElement(el);\n    }\n    el.addEventListener(\"error\", (event) => reject(event));\n    el.addEventListener(\"abort\", (event) => reject(event));\n    el.addEventListener(\"load\", () => {\n      el.setAttribute(\"data-loaded\", \"true\");\n      onLoaded(el);\n      resolveWithElement(el);\n    });\n    if (shouldAppend)\n      el = document.head.appendChild(el);\n    if (!waitForScriptLoad)\n      resolveWithElement(el);\n  });\n  const load = (waitForScriptLoad = true) => {\n    if (!_promise)\n      _promise = loadScript(waitForScriptLoad);\n    return _promise;\n  };\n  const unload = () => {\n    if (!document)\n      return;\n    _promise = null;\n    if (scriptTag.value)\n      scriptTag.value = null;\n    const el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n    if (el)\n      document.head.removeChild(el);\n  };\n  if (immediate && !manual)\n    tryOnMounted(load);\n  if (!manual)\n    tryOnUnmounted(unload);\n  return { scriptTag, load, unload };\n}\n\nfunction checkOverflowScroll(ele) {\n  const style = window.getComputedStyle(ele);\n  if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n    return true;\n  } else {\n    const parent = ele.parentNode;\n    if (!parent || parent.tagName === \"BODY\")\n      return false;\n    return checkOverflowScroll(parent);\n  }\n}\nfunction preventDefault(rawEvent) {\n  const e = rawEvent || window.event;\n  const _target = e.target;\n  if (checkOverflowScroll(_target))\n    return false;\n  if (e.touches.length > 1)\n    return true;\n  if (e.preventDefault)\n    e.preventDefault();\n  return false;\n}\nconst elInitialOverflow = /* @__PURE__ */ new WeakMap();\nfunction useScrollLock(element, initialState = false) {\n  const isLocked = ref(initialState);\n  let stopTouchMoveListener = null;\n  let initialOverflow;\n  watch(toRef(element), (el) => {\n    const target = resolveElement(toValue(el));\n    if (target) {\n      const ele = target;\n      if (!elInitialOverflow.get(ele))\n        elInitialOverflow.set(ele, initialOverflow);\n      if (isLocked.value)\n        ele.style.overflow = \"hidden\";\n    }\n  }, {\n    immediate: true\n  });\n  const lock = () => {\n    const el = resolveElement(toValue(element));\n    if (!el || isLocked.value)\n      return;\n    if (isIOS) {\n      stopTouchMoveListener = useEventListener(\n        el,\n        \"touchmove\",\n        (e) => {\n          preventDefault(e);\n        },\n        { passive: false }\n      );\n    }\n    el.style.overflow = \"hidden\";\n    isLocked.value = true;\n  };\n  const unlock = () => {\n    var _a;\n    const el = resolveElement(toValue(element));\n    if (!el || !isLocked.value)\n      return;\n    isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener());\n    el.style.overflow = (_a = elInitialOverflow.get(el)) != null ? _a : \"\";\n    elInitialOverflow.delete(el);\n    isLocked.value = false;\n  };\n  tryOnScopeDispose(unlock);\n  return computed({\n    get() {\n      return isLocked.value;\n    },\n    set(v) {\n      if (v)\n        lock();\n      else\n        unlock();\n    }\n  });\n}\n\nfunction useSessionStorage(key, initialValue, options = {}) {\n  const { window = defaultWindow } = options;\n  return useStorage(key, initialValue, window == null ? void 0 : window.sessionStorage, options);\n}\n\nfunction useShare(shareOptions = {}, options = {}) {\n  const { navigator = defaultNavigator } = options;\n  const _navigator = navigator;\n  const isSupported = useSupported(() => _navigator && \"canShare\" in _navigator);\n  const share = async (overrideOptions = {}) => {\n    if (isSupported.value) {\n      const data = {\n        ...toValue(shareOptions),\n        ...toValue(overrideOptions)\n      };\n      let granted = true;\n      if (data.files && _navigator.canShare)\n        granted = _navigator.canShare({ files: data.files });\n      if (granted)\n        return _navigator.share(data);\n    }\n  };\n  return {\n    isSupported,\n    share\n  };\n}\n\nconst defaultSortFn = (source, compareFn) => source.sort(compareFn);\nconst defaultCompare = (a, b) => a - b;\nfunction useSorted(...args) {\n  var _a, _b, _c, _d;\n  const [source] = args;\n  let compareFn = defaultCompare;\n  let options = {};\n  if (args.length === 2) {\n    if (typeof args[1] === \"object\") {\n      options = args[1];\n      compareFn = (_a = options.compareFn) != null ? _a : defaultCompare;\n    } else {\n      compareFn = (_b = args[1]) != null ? _b : defaultCompare;\n    }\n  } else if (args.length > 2) {\n    compareFn = (_c = args[1]) != null ? _c : defaultCompare;\n    options = (_d = args[2]) != null ? _d : {};\n  }\n  const {\n    dirty = false,\n    sortFn = defaultSortFn\n  } = options;\n  if (!dirty)\n    return computed(() => sortFn([...toValue(source)], compareFn));\n  watchEffect(() => {\n    const result = sortFn(toValue(source), compareFn);\n    if (isRef(source))\n      source.value = result;\n    else\n      source.splice(0, source.length, ...result);\n  });\n  return source;\n}\n\nfunction useSpeechRecognition(options = {}) {\n  const {\n    interimResults = true,\n    continuous = true,\n    window = defaultWindow\n  } = options;\n  const lang = toRef(options.lang || \"en-US\");\n  const isListening = ref(false);\n  const isFinal = ref(false);\n  const result = ref(\"\");\n  const error = shallowRef(void 0);\n  const toggle = (value = !isListening.value) => {\n    isListening.value = value;\n  };\n  const start = () => {\n    isListening.value = true;\n  };\n  const stop = () => {\n    isListening.value = false;\n  };\n  const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition);\n  const isSupported = useSupported(() => SpeechRecognition);\n  let recognition;\n  if (isSupported.value) {\n    recognition = new SpeechRecognition();\n    recognition.continuous = continuous;\n    recognition.interimResults = interimResults;\n    recognition.lang = toValue(lang);\n    recognition.onstart = () => {\n      isFinal.value = false;\n    };\n    watch(lang, (lang2) => {\n      if (recognition && !isListening.value)\n        recognition.lang = lang2;\n    });\n    recognition.onresult = (event) => {\n      const transcript = Array.from(event.results).map((result2) => {\n        isFinal.value = result2.isFinal;\n        return result2[0];\n      }).map((result2) => result2.transcript).join(\"\");\n      result.value = transcript;\n      error.value = void 0;\n    };\n    recognition.onerror = (event) => {\n      error.value = event;\n    };\n    recognition.onend = () => {\n      isListening.value = false;\n      recognition.lang = toValue(lang);\n    };\n    watch(isListening, () => {\n      if (isListening.value)\n        recognition.start();\n      else\n        recognition.stop();\n    });\n  }\n  tryOnScopeDispose(() => {\n    isListening.value = false;\n  });\n  return {\n    isSupported,\n    isListening,\n    isFinal,\n    recognition,\n    result,\n    error,\n    toggle,\n    start,\n    stop\n  };\n}\n\nfunction useSpeechSynthesis(text, options = {}) {\n  const {\n    pitch = 1,\n    rate = 1,\n    volume = 1,\n    window = defaultWindow\n  } = options;\n  const synth = window && window.speechSynthesis;\n  const isSupported = useSupported(() => synth);\n  const isPlaying = ref(false);\n  const status = ref(\"init\");\n  const spokenText = toRef(text || \"\");\n  const lang = toRef(options.lang || \"en-US\");\n  const error = shallowRef(void 0);\n  const toggle = (value = !isPlaying.value) => {\n    isPlaying.value = value;\n  };\n  const bindEventsForUtterance = (utterance2) => {\n    utterance2.lang = toValue(lang);\n    utterance2.voice = toValue(options.voice) || null;\n    utterance2.pitch = toValue(pitch);\n    utterance2.rate = toValue(rate);\n    utterance2.volume = volume;\n    utterance2.onstart = () => {\n      isPlaying.value = true;\n      status.value = \"play\";\n    };\n    utterance2.onpause = () => {\n      isPlaying.value = false;\n      status.value = \"pause\";\n    };\n    utterance2.onresume = () => {\n      isPlaying.value = true;\n      status.value = \"play\";\n    };\n    utterance2.onend = () => {\n      isPlaying.value = false;\n      status.value = \"end\";\n    };\n    utterance2.onerror = (event) => {\n      error.value = event;\n    };\n  };\n  const utterance = computed(() => {\n    isPlaying.value = false;\n    status.value = \"init\";\n    const newUtterance = new SpeechSynthesisUtterance(spokenText.value);\n    bindEventsForUtterance(newUtterance);\n    return newUtterance;\n  });\n  const speak = () => {\n    synth.cancel();\n    utterance && synth.speak(utterance.value);\n  };\n  const stop = () => {\n    synth.cancel();\n    isPlaying.value = false;\n  };\n  if (isSupported.value) {\n    bindEventsForUtterance(utterance.value);\n    watch(lang, (lang2) => {\n      if (utterance.value && !isPlaying.value)\n        utterance.value.lang = lang2;\n    });\n    if (options.voice) {\n      watch(options.voice, () => {\n        synth.cancel();\n      });\n    }\n    watch(isPlaying, () => {\n      if (isPlaying.value)\n        synth.resume();\n      else\n        synth.pause();\n    });\n  }\n  tryOnScopeDispose(() => {\n    isPlaying.value = false;\n  });\n  return {\n    isSupported,\n    isPlaying,\n    status,\n    utterance,\n    error,\n    stop,\n    toggle,\n    speak\n  };\n}\n\nfunction useStepper(steps, initialStep) {\n  const stepsRef = ref(steps);\n  const stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value));\n  const index = ref(stepNames.value.indexOf(initialStep != null ? initialStep : stepNames.value[0]));\n  const current = computed(() => at(index.value));\n  const isFirst = computed(() => index.value === 0);\n  const isLast = computed(() => index.value === stepNames.value.length - 1);\n  const next = computed(() => stepNames.value[index.value + 1]);\n  const previous = computed(() => stepNames.value[index.value - 1]);\n  function at(index2) {\n    if (Array.isArray(stepsRef.value))\n      return stepsRef.value[index2];\n    return stepsRef.value[stepNames.value[index2]];\n  }\n  function get(step) {\n    if (!stepNames.value.includes(step))\n      return;\n    return at(stepNames.value.indexOf(step));\n  }\n  function goTo(step) {\n    if (stepNames.value.includes(step))\n      index.value = stepNames.value.indexOf(step);\n  }\n  function goToNext() {\n    if (isLast.value)\n      return;\n    index.value++;\n  }\n  function goToPrevious() {\n    if (isFirst.value)\n      return;\n    index.value--;\n  }\n  function goBackTo(step) {\n    if (isAfter(step))\n      goTo(step);\n  }\n  function isNext(step) {\n    return stepNames.value.indexOf(step) === index.value + 1;\n  }\n  function isPrevious(step) {\n    return stepNames.value.indexOf(step) === index.value - 1;\n  }\n  function isCurrent(step) {\n    return stepNames.value.indexOf(step) === index.value;\n  }\n  function isBefore(step) {\n    return index.value < stepNames.value.indexOf(step);\n  }\n  function isAfter(step) {\n    return index.value > stepNames.value.indexOf(step);\n  }\n  return {\n    steps: stepsRef,\n    stepNames,\n    index,\n    current,\n    next,\n    previous,\n    isFirst,\n    isLast,\n    at,\n    get,\n    goTo,\n    goToNext,\n    goToPrevious,\n    goBackTo,\n    isNext,\n    isPrevious,\n    isCurrent,\n    isBefore,\n    isAfter\n  };\n}\n\nfunction useStorageAsync(key, initialValue, storage, options = {}) {\n  var _a;\n  const {\n    flush = \"pre\",\n    deep = true,\n    listenToStorageChanges = true,\n    writeDefaults = true,\n    mergeDefaults = false,\n    shallow,\n    window = defaultWindow,\n    eventFilter,\n    onError = (e) => {\n      console.error(e);\n    }\n  } = options;\n  const rawInit = toValue(initialValue);\n  const type = guessSerializerType(rawInit);\n  const data = (shallow ? shallowRef : ref)(initialValue);\n  const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n  if (!storage) {\n    try {\n      storage = getSSRHandler(\"getDefaultStorage\", () => {\n        var _a2;\n        return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n      })();\n    } catch (e) {\n      onError(e);\n    }\n  }\n  async function read(event) {\n    if (!storage || event && event.key !== key)\n      return;\n    try {\n      const rawValue = event ? event.newValue : await storage.getItem(key);\n      if (rawValue == null) {\n        data.value = rawInit;\n        if (writeDefaults && rawInit !== null)\n          await storage.setItem(key, await serializer.write(rawInit));\n      } else if (mergeDefaults) {\n        const value = await serializer.read(rawValue);\n        if (typeof mergeDefaults === \"function\")\n          data.value = mergeDefaults(value, rawInit);\n        else if (type === \"object\" && !Array.isArray(value))\n          data.value = { ...rawInit, ...value };\n        else\n          data.value = value;\n      } else {\n        data.value = await serializer.read(rawValue);\n      }\n    } catch (e) {\n      onError(e);\n    }\n  }\n  read();\n  if (window && listenToStorageChanges)\n    useEventListener(window, \"storage\", (e) => Promise.resolve().then(() => read(e)));\n  if (storage) {\n    watchWithFilter(\n      data,\n      async () => {\n        try {\n          if (data.value == null)\n            await storage.removeItem(key);\n          else\n            await storage.setItem(key, await serializer.write(data.value));\n        } catch (e) {\n          onError(e);\n        }\n      },\n      {\n        flush,\n        deep,\n        eventFilter\n      }\n    );\n  }\n  return data;\n}\n\nlet _id = 0;\nfunction useStyleTag(css, options = {}) {\n  const isLoaded = ref(false);\n  const {\n    document = defaultDocument,\n    immediate = true,\n    manual = false,\n    id = `vueuse_styletag_${++_id}`\n  } = options;\n  const cssRef = ref(css);\n  let stop = () => {\n  };\n  const load = () => {\n    if (!document)\n      return;\n    const el = document.getElementById(id) || document.createElement(\"style\");\n    if (!el.isConnected) {\n      el.id = id;\n      if (options.media)\n        el.media = options.media;\n      document.head.appendChild(el);\n    }\n    if (isLoaded.value)\n      return;\n    stop = watch(\n      cssRef,\n      (value) => {\n        el.textContent = value;\n      },\n      { immediate: true }\n    );\n    isLoaded.value = true;\n  };\n  const unload = () => {\n    if (!document || !isLoaded.value)\n      return;\n    stop();\n    document.head.removeChild(document.getElementById(id));\n    isLoaded.value = false;\n  };\n  if (immediate && !manual)\n    tryOnMounted(load);\n  if (!manual)\n    tryOnScopeDispose(unload);\n  return {\n    id,\n    css: cssRef,\n    unload,\n    load,\n    isLoaded: readonly(isLoaded)\n  };\n}\n\nfunction useSwipe(target, options = {}) {\n  const {\n    threshold = 50,\n    onSwipe,\n    onSwipeEnd,\n    onSwipeStart,\n    passive = true,\n    window = defaultWindow\n  } = options;\n  const coordsStart = reactive({ x: 0, y: 0 });\n  const coordsEnd = reactive({ x: 0, y: 0 });\n  const diffX = computed(() => coordsStart.x - coordsEnd.x);\n  const diffY = computed(() => coordsStart.y - coordsEnd.y);\n  const { max, abs } = Math;\n  const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold);\n  const isSwiping = ref(false);\n  const direction = computed(() => {\n    if (!isThresholdExceeded.value)\n      return \"none\";\n    if (abs(diffX.value) > abs(diffY.value)) {\n      return diffX.value > 0 ? \"left\" : \"right\";\n    } else {\n      return diffY.value > 0 ? \"up\" : \"down\";\n    }\n  });\n  const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY];\n  const updateCoordsStart = (x, y) => {\n    coordsStart.x = x;\n    coordsStart.y = y;\n  };\n  const updateCoordsEnd = (x, y) => {\n    coordsEnd.x = x;\n    coordsEnd.y = y;\n  };\n  let listenerOptions;\n  const isPassiveEventSupported = checkPassiveEventSupport(window == null ? void 0 : window.document);\n  if (!passive)\n    listenerOptions = isPassiveEventSupported ? { passive: false, capture: true } : { capture: true };\n  else\n    listenerOptions = isPassiveEventSupported ? { passive: true } : { capture: false };\n  const onTouchEnd = (e) => {\n    if (isSwiping.value)\n      onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n    isSwiping.value = false;\n  };\n  const stops = [\n    useEventListener(target, \"touchstart\", (e) => {\n      if (e.touches.length !== 1)\n        return;\n      if (listenerOptions.capture && !listenerOptions.passive)\n        e.preventDefault();\n      const [x, y] = getTouchEventCoords(e);\n      updateCoordsStart(x, y);\n      updateCoordsEnd(x, y);\n      onSwipeStart == null ? void 0 : onSwipeStart(e);\n    }, listenerOptions),\n    useEventListener(target, \"touchmove\", (e) => {\n      if (e.touches.length !== 1)\n        return;\n      const [x, y] = getTouchEventCoords(e);\n      updateCoordsEnd(x, y);\n      if (!isSwiping.value && isThresholdExceeded.value)\n        isSwiping.value = true;\n      if (isSwiping.value)\n        onSwipe == null ? void 0 : onSwipe(e);\n    }, listenerOptions),\n    useEventListener(target, [\"touchend\", \"touchcancel\"], onTouchEnd, listenerOptions)\n  ];\n  const stop = () => stops.forEach((s) => s());\n  return {\n    isPassiveEventSupported,\n    isSwiping,\n    direction,\n    coordsStart,\n    coordsEnd,\n    lengthX: diffX,\n    lengthY: diffY,\n    stop\n  };\n}\nfunction checkPassiveEventSupport(document) {\n  if (!document)\n    return false;\n  let supportsPassive = false;\n  const optionsBlock = {\n    get passive() {\n      supportsPassive = true;\n      return false;\n    }\n  };\n  document.addEventListener(\"x\", noop, optionsBlock);\n  document.removeEventListener(\"x\", noop);\n  return supportsPassive;\n}\n\nfunction useTemplateRefsList() {\n  const refs = ref([]);\n  refs.value.set = (el) => {\n    if (el)\n      refs.value.push(el);\n  };\n  onBeforeUpdate(() => {\n    refs.value.length = 0;\n  });\n  return refs;\n}\n\nfunction useTextDirection(options = {}) {\n  const {\n    document = defaultDocument,\n    selector = \"html\",\n    observe = false,\n    initialValue = \"ltr\"\n  } = options;\n  function getValue() {\n    var _a, _b;\n    return (_b = (_a = document == null ? void 0 : document.querySelector(selector)) == null ? void 0 : _a.getAttribute(\"dir\")) != null ? _b : initialValue;\n  }\n  const dir = ref(getValue());\n  tryOnMounted(() => dir.value = getValue());\n  if (observe && document) {\n    useMutationObserver(\n      document.querySelector(selector),\n      () => dir.value = getValue(),\n      { attributes: true }\n    );\n  }\n  return computed({\n    get() {\n      return dir.value;\n    },\n    set(v) {\n      var _a, _b;\n      dir.value = v;\n      if (!document)\n        return;\n      if (dir.value)\n        (_a = document.querySelector(selector)) == null ? void 0 : _a.setAttribute(\"dir\", dir.value);\n      else\n        (_b = document.querySelector(selector)) == null ? void 0 : _b.removeAttribute(\"dir\");\n    }\n  });\n}\n\nfunction getRangesFromSelection(selection) {\n  var _a;\n  const rangeCount = (_a = selection.rangeCount) != null ? _a : 0;\n  return Array.from({ length: rangeCount }, (_, i) => selection.getRangeAt(i));\n}\nfunction useTextSelection(options = {}) {\n  const {\n    window = defaultWindow\n  } = options;\n  const selection = ref(null);\n  const text = computed(() => {\n    var _a, _b;\n    return (_b = (_a = selection.value) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n  });\n  const ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []);\n  const rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect()));\n  function onSelectionChange() {\n    selection.value = null;\n    if (window)\n      selection.value = window.getSelection();\n  }\n  if (window)\n    useEventListener(window.document, \"selectionchange\", onSelectionChange);\n  return {\n    text,\n    rects,\n    ranges,\n    selection\n  };\n}\n\nfunction useTextareaAutosize(options) {\n  const textarea = ref(options == null ? void 0 : options.element);\n  const input = ref(options == null ? void 0 : options.input);\n  const textareaScrollHeight = ref(1);\n  function triggerResize() {\n    var _a, _b;\n    if (!textarea.value)\n      return;\n    let height = \"\";\n    textarea.value.style.height = \"1px\";\n    textareaScrollHeight.value = (_a = textarea.value) == null ? void 0 : _a.scrollHeight;\n    if (options == null ? void 0 : options.styleTarget)\n      toValue(options.styleTarget).style.height = `${textareaScrollHeight.value}px`;\n    else\n      height = `${textareaScrollHeight.value}px`;\n    textarea.value.style.height = height;\n    (_b = options == null ? void 0 : options.onResize) == null ? void 0 : _b.call(options);\n  }\n  watch([input, textarea], () => nextTick(triggerResize), { immediate: true });\n  useResizeObserver(textarea, () => triggerResize());\n  if (options == null ? void 0 : options.watch)\n    watch(options.watch, triggerResize, { immediate: true, deep: true });\n  return {\n    textarea,\n    input,\n    triggerResize\n  };\n}\n\nfunction useThrottledRefHistory(source, options = {}) {\n  const { throttle = 200, trailing = true } = options;\n  const filter = throttleFilter(throttle, trailing);\n  const history = useRefHistory(source, { ...options, eventFilter: filter });\n  return {\n    ...history\n  };\n}\n\nconst DEFAULT_UNITS = [\n  { max: 6e4, value: 1e3, name: \"second\" },\n  { max: 276e4, value: 6e4, name: \"minute\" },\n  { max: 72e6, value: 36e5, name: \"hour\" },\n  { max: 5184e5, value: 864e5, name: \"day\" },\n  { max: 24192e5, value: 6048e5, name: \"week\" },\n  { max: 28512e6, value: 2592e6, name: \"month\" },\n  { max: Number.POSITIVE_INFINITY, value: 31536e6, name: \"year\" }\n];\nconst DEFAULT_MESSAGES = {\n  justNow: \"just now\",\n  past: (n) => n.match(/\\d/) ? `${n} ago` : n,\n  future: (n) => n.match(/\\d/) ? `in ${n}` : n,\n  month: (n, past) => n === 1 ? past ? \"last month\" : \"next month\" : `${n} month${n > 1 ? \"s\" : \"\"}`,\n  year: (n, past) => n === 1 ? past ? \"last year\" : \"next year\" : `${n} year${n > 1 ? \"s\" : \"\"}`,\n  day: (n, past) => n === 1 ? past ? \"yesterday\" : \"tomorrow\" : `${n} day${n > 1 ? \"s\" : \"\"}`,\n  week: (n, past) => n === 1 ? past ? \"last week\" : \"next week\" : `${n} week${n > 1 ? \"s\" : \"\"}`,\n  hour: (n) => `${n} hour${n > 1 ? \"s\" : \"\"}`,\n  minute: (n) => `${n} minute${n > 1 ? \"s\" : \"\"}`,\n  second: (n) => `${n} second${n > 1 ? \"s\" : \"\"}`,\n  invalid: \"\"\n};\nfunction DEFAULT_FORMATTER(date) {\n  return date.toISOString().slice(0, 10);\n}\nfunction useTimeAgo(time, options = {}) {\n  const {\n    controls: exposeControls = false,\n    updateInterval = 3e4\n  } = options;\n  const { now, ...controls } = useNow({ interval: updateInterval, controls: true });\n  const timeAgo = computed(() => formatTimeAgo(new Date(toValue(time)), options, toValue(now)));\n  if (exposeControls) {\n    return {\n      timeAgo,\n      ...controls\n    };\n  } else {\n    return timeAgo;\n  }\n}\nfunction formatTimeAgo(from, options = {}, now = Date.now()) {\n  var _a;\n  const {\n    max,\n    messages = DEFAULT_MESSAGES,\n    fullDateFormatter = DEFAULT_FORMATTER,\n    units = DEFAULT_UNITS,\n    showSecond = false,\n    rounding = \"round\"\n  } = options;\n  const roundFn = typeof rounding === \"number\" ? (n) => +n.toFixed(rounding) : Math[rounding];\n  const diff = +now - +from;\n  const absDiff = Math.abs(diff);\n  function getValue(diff2, unit) {\n    return roundFn(Math.abs(diff2) / unit.value);\n  }\n  function format(diff2, unit) {\n    const val = getValue(diff2, unit);\n    const past = diff2 > 0;\n    const str = applyFormat(unit.name, val, past);\n    return applyFormat(past ? \"past\" : \"future\", str, past);\n  }\n  function applyFormat(name, val, isPast) {\n    const formatter = messages[name];\n    if (typeof formatter === \"function\")\n      return formatter(val, isPast);\n    return formatter.replace(\"{0}\", val.toString());\n  }\n  if (absDiff < 6e4 && !showSecond)\n    return messages.justNow;\n  if (typeof max === \"number\" && absDiff > max)\n    return fullDateFormatter(new Date(from));\n  if (typeof max === \"string\") {\n    const unitMax = (_a = units.find((i) => i.name === max)) == null ? void 0 : _a.max;\n    if (unitMax && absDiff > unitMax)\n      return fullDateFormatter(new Date(from));\n  }\n  for (const [idx, unit] of units.entries()) {\n    const val = getValue(diff, unit);\n    if (val <= 0 && units[idx - 1])\n      return format(diff, units[idx - 1]);\n    if (absDiff < unit.max)\n      return format(diff, unit);\n  }\n  return messages.invalid;\n}\n\nfunction useTimeoutPoll(fn, interval, timeoutPollOptions) {\n  const { start } = useTimeoutFn(loop, interval, { immediate: false });\n  const isActive = ref(false);\n  async function loop() {\n    if (!isActive.value)\n      return;\n    await fn();\n    start();\n  }\n  function resume() {\n    if (!isActive.value) {\n      isActive.value = true;\n      loop();\n    }\n  }\n  function pause() {\n    isActive.value = false;\n  }\n  if (timeoutPollOptions == null ? void 0 : timeoutPollOptions.immediate)\n    resume();\n  tryOnScopeDispose(pause);\n  return {\n    isActive,\n    pause,\n    resume\n  };\n}\n\nfunction useTimestamp(options = {}) {\n  const {\n    controls: exposeControls = false,\n    offset = 0,\n    immediate = true,\n    interval = \"requestAnimationFrame\",\n    callback\n  } = options;\n  const ts = ref(timestamp() + offset);\n  const update = () => ts.value = timestamp() + offset;\n  const cb = callback ? () => {\n    update();\n    callback(ts.value);\n  } : update;\n  const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n  if (exposeControls) {\n    return {\n      timestamp: ts,\n      ...controls\n    };\n  } else {\n    return ts;\n  }\n}\n\nfunction useTitle(newTitle = null, options = {}) {\n  var _a, _b;\n  const {\n    document = defaultDocument\n  } = options;\n  const title = toRef((_a = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _a : null);\n  const isReadonly = newTitle && typeof newTitle === \"function\";\n  function format(t) {\n    if (!(\"titleTemplate\" in options))\n      return t;\n    const template = options.titleTemplate || \"%s\";\n    return typeof template === \"function\" ? template(t) : toValue(template).replace(/%s/g, t);\n  }\n  watch(\n    title,\n    (t, o) => {\n      if (t !== o && document)\n        document.title = format(typeof t === \"string\" ? t : \"\");\n    },\n    { immediate: true }\n  );\n  if (options.observe && !options.titleTemplate && document && !isReadonly) {\n    useMutationObserver(\n      (_b = document.head) == null ? void 0 : _b.querySelector(\"title\"),\n      () => {\n        if (document && document.title !== title.value)\n          title.value = format(document.title);\n      },\n      { childList: true }\n    );\n  }\n  return title;\n}\n\nconst _TransitionPresets = {\n  easeInSine: [0.12, 0, 0.39, 0],\n  easeOutSine: [0.61, 1, 0.88, 1],\n  easeInOutSine: [0.37, 0, 0.63, 1],\n  easeInQuad: [0.11, 0, 0.5, 0],\n  easeOutQuad: [0.5, 1, 0.89, 1],\n  easeInOutQuad: [0.45, 0, 0.55, 1],\n  easeInCubic: [0.32, 0, 0.67, 0],\n  easeOutCubic: [0.33, 1, 0.68, 1],\n  easeInOutCubic: [0.65, 0, 0.35, 1],\n  easeInQuart: [0.5, 0, 0.75, 0],\n  easeOutQuart: [0.25, 1, 0.5, 1],\n  easeInOutQuart: [0.76, 0, 0.24, 1],\n  easeInQuint: [0.64, 0, 0.78, 0],\n  easeOutQuint: [0.22, 1, 0.36, 1],\n  easeInOutQuint: [0.83, 0, 0.17, 1],\n  easeInExpo: [0.7, 0, 0.84, 0],\n  easeOutExpo: [0.16, 1, 0.3, 1],\n  easeInOutExpo: [0.87, 0, 0.13, 1],\n  easeInCirc: [0.55, 0, 1, 0.45],\n  easeOutCirc: [0, 0.55, 0.45, 1],\n  easeInOutCirc: [0.85, 0, 0.15, 1],\n  easeInBack: [0.36, 0, 0.66, -0.56],\n  easeOutBack: [0.34, 1.56, 0.64, 1],\n  easeInOutBack: [0.68, -0.6, 0.32, 1.6]\n};\nconst TransitionPresets = /* @__PURE__ */ Object.assign({}, { linear: identity }, _TransitionPresets);\nfunction createEasingFunction([p0, p1, p2, p3]) {\n  const a = (a1, a2) => 1 - 3 * a2 + 3 * a1;\n  const b = (a1, a2) => 3 * a2 - 6 * a1;\n  const c = (a1) => 3 * a1;\n  const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n  const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1);\n  const getTforX = (x) => {\n    let aGuessT = x;\n    for (let i = 0; i < 4; ++i) {\n      const currentSlope = getSlope(aGuessT, p0, p2);\n      if (currentSlope === 0)\n        return aGuessT;\n      const currentX = calcBezier(aGuessT, p0, p2) - x;\n      aGuessT -= currentX / currentSlope;\n    }\n    return aGuessT;\n  };\n  return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3);\n}\nfunction lerp(a, b, alpha) {\n  return a + alpha * (b - a);\n}\nfunction toVec(t) {\n  return (typeof t === \"number\" ? [t] : t) || [];\n}\nfunction executeTransition(source, from, to, options = {}) {\n  var _a, _b;\n  const fromVal = toValue(from);\n  const toVal = toValue(to);\n  const v1 = toVec(fromVal);\n  const v2 = toVec(toVal);\n  const duration = (_a = toValue(options.duration)) != null ? _a : 1e3;\n  const startedAt = Date.now();\n  const endAt = Date.now() + duration;\n  const trans = typeof options.transition === \"function\" ? options.transition : (_b = toValue(options.transition)) != null ? _b : identity;\n  const ease = typeof trans === \"function\" ? trans : createEasingFunction(trans);\n  return new Promise((resolve) => {\n    source.value = fromVal;\n    const tick = () => {\n      var _a2;\n      if ((_a2 = options.abort) == null ? void 0 : _a2.call(options)) {\n        resolve();\n        return;\n      }\n      const now = Date.now();\n      const alpha = ease((now - startedAt) / duration);\n      const arr = toVec(source.value).map((n, i) => lerp(v1[i], v2[i], alpha));\n      if (Array.isArray(source.value))\n        source.value = arr.map((n, i) => {\n          var _a3, _b2;\n          return lerp((_a3 = v1[i]) != null ? _a3 : 0, (_b2 = v2[i]) != null ? _b2 : 0, alpha);\n        });\n      else if (typeof source.value === \"number\")\n        source.value = arr[0];\n      if (now < endAt) {\n        requestAnimationFrame(tick);\n      } else {\n        source.value = toVal;\n        resolve();\n      }\n    };\n    tick();\n  });\n}\nfunction useTransition(source, options = {}) {\n  let currentId = 0;\n  const sourceVal = () => {\n    const v = toValue(source);\n    return typeof v === \"number\" ? v : v.map(toValue);\n  };\n  const outputRef = ref(sourceVal());\n  watch(sourceVal, async (to) => {\n    var _a, _b;\n    if (toValue(options.disabled))\n      return;\n    const id = ++currentId;\n    if (options.delay)\n      await promiseTimeout(toValue(options.delay));\n    if (id !== currentId)\n      return;\n    const toVal = Array.isArray(to) ? to.map(toValue) : toValue(to);\n    (_a = options.onStarted) == null ? void 0 : _a.call(options);\n    await executeTransition(outputRef, outputRef.value, toVal, {\n      ...options,\n      abort: () => {\n        var _a2;\n        return id !== currentId || ((_a2 = options.abort) == null ? void 0 : _a2.call(options));\n      }\n    });\n    (_b = options.onFinished) == null ? void 0 : _b.call(options);\n  }, { deep: true });\n  watch(() => toValue(options.disabled), (disabled) => {\n    if (disabled) {\n      currentId++;\n      outputRef.value = sourceVal();\n    }\n  });\n  tryOnScopeDispose(() => {\n    currentId++;\n  });\n  return computed(() => toValue(options.disabled) ? sourceVal() : outputRef.value);\n}\n\nfunction useUrlSearchParams(mode = \"history\", options = {}) {\n  const {\n    initialValue = {},\n    removeNullishValues = true,\n    removeFalsyValues = false,\n    write: enableWrite = true,\n    window = defaultWindow\n  } = options;\n  if (!window)\n    return reactive(initialValue);\n  const state = reactive({});\n  function getRawParams() {\n    if (mode === \"history\") {\n      return window.location.search || \"\";\n    } else if (mode === \"hash\") {\n      const hash = window.location.hash || \"\";\n      const index = hash.indexOf(\"?\");\n      return index > 0 ? hash.slice(index) : \"\";\n    } else {\n      return (window.location.hash || \"\").replace(/^#/, \"\");\n    }\n  }\n  function constructQuery(params) {\n    const stringified = params.toString();\n    if (mode === \"history\")\n      return `${stringified ? `?${stringified}` : \"\"}${window.location.hash || \"\"}`;\n    if (mode === \"hash-params\")\n      return `${window.location.search || \"\"}${stringified ? `#${stringified}` : \"\"}`;\n    const hash = window.location.hash || \"#\";\n    const index = hash.indexOf(\"?\");\n    if (index > 0)\n      return `${hash.slice(0, index)}${stringified ? `?${stringified}` : \"\"}`;\n    return `${hash}${stringified ? `?${stringified}` : \"\"}`;\n  }\n  function read() {\n    return new URLSearchParams(getRawParams());\n  }\n  function updateState(params) {\n    const unusedKeys = new Set(Object.keys(state));\n    for (const key of params.keys()) {\n      const paramsForKey = params.getAll(key);\n      state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || \"\";\n      unusedKeys.delete(key);\n    }\n    Array.from(unusedKeys).forEach((key) => delete state[key]);\n  }\n  const { pause, resume } = pausableWatch(\n    state,\n    () => {\n      const params = new URLSearchParams(\"\");\n      Object.keys(state).forEach((key) => {\n        const mapEntry = state[key];\n        if (Array.isArray(mapEntry))\n          mapEntry.forEach((value) => params.append(key, value));\n        else if (removeNullishValues && mapEntry == null)\n          params.delete(key);\n        else if (removeFalsyValues && !mapEntry)\n          params.delete(key);\n        else\n          params.set(key, mapEntry);\n      });\n      write(params);\n    },\n    { deep: true }\n  );\n  function write(params, shouldUpdate) {\n    pause();\n    if (shouldUpdate)\n      updateState(params);\n    window.history.replaceState(\n      window.history.state,\n      window.document.title,\n      window.location.pathname + constructQuery(params)\n    );\n    resume();\n  }\n  function onChanged() {\n    if (!enableWrite)\n      return;\n    write(read(), true);\n  }\n  useEventListener(window, \"popstate\", onChanged, false);\n  if (mode !== \"history\")\n    useEventListener(window, \"hashchange\", onChanged, false);\n  const initial = read();\n  if (initial.keys().next().value)\n    updateState(initial);\n  else\n    Object.assign(state, initialValue);\n  return state;\n}\n\nfunction useUserMedia(options = {}) {\n  var _a, _b;\n  const enabled = ref((_a = options.enabled) != null ? _a : false);\n  const autoSwitch = ref((_b = options.autoSwitch) != null ? _b : true);\n  const constraints = ref(options.constraints);\n  const { navigator = defaultNavigator } = options;\n  const isSupported = useSupported(() => {\n    var _a2;\n    return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getUserMedia;\n  });\n  const stream = shallowRef();\n  function getDeviceOptions(type) {\n    switch (type) {\n      case \"video\": {\n        if (constraints.value)\n          return constraints.value.video || false;\n        break;\n      }\n      case \"audio\": {\n        if (constraints.value)\n          return constraints.value.audio || false;\n        break;\n      }\n    }\n  }\n  async function _start() {\n    if (!isSupported.value || stream.value)\n      return;\n    stream.value = await navigator.mediaDevices.getUserMedia({\n      video: getDeviceOptions(\"video\"),\n      audio: getDeviceOptions(\"audio\")\n    });\n    return stream.value;\n  }\n  function _stop() {\n    var _a2;\n    (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n    stream.value = void 0;\n  }\n  function stop() {\n    _stop();\n    enabled.value = false;\n  }\n  async function start() {\n    await _start();\n    if (stream.value)\n      enabled.value = true;\n    return stream.value;\n  }\n  async function restart() {\n    _stop();\n    return await start();\n  }\n  watch(\n    enabled,\n    (v) => {\n      if (v)\n        _start();\n      else\n        _stop();\n    },\n    { immediate: true }\n  );\n  watch(\n    constraints,\n    () => {\n      if (autoSwitch.value && stream.value)\n        restart();\n    },\n    { immediate: true }\n  );\n  return {\n    isSupported,\n    stream,\n    start,\n    stop,\n    restart,\n    constraints,\n    enabled,\n    autoSwitch\n  };\n}\n\nfunction useVModel(props, key, emit, options = {}) {\n  var _a, _b, _c, _d, _e;\n  const {\n    clone = false,\n    passive = false,\n    eventName,\n    deep = false,\n    defaultValue,\n    shouldEmit\n  } = options;\n  const vm = getCurrentInstance();\n  const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));\n  let event = eventName;\n  if (!key) {\n    if (isVue2) {\n      const modelOptions = (_e = (_d = vm == null ? void 0 : vm.proxy) == null ? void 0 : _d.$options) == null ? void 0 : _e.model;\n      key = (modelOptions == null ? void 0 : modelOptions.value) || \"value\";\n      if (!eventName)\n        event = (modelOptions == null ? void 0 : modelOptions.event) || \"input\";\n    } else {\n      key = \"modelValue\";\n    }\n  }\n  event = event || `update:${key.toString()}`;\n  const cloneFn = (val) => !clone ? val : typeof clone === \"function\" ? clone(val) : cloneFnJSON(val);\n  const getValue = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue;\n  const triggerEmit = (value) => {\n    if (shouldEmit) {\n      if (shouldEmit(value))\n        _emit(event, value);\n    } else {\n      _emit(event, value);\n    }\n  };\n  if (passive) {\n    const initialValue = getValue();\n    const proxy = ref(initialValue);\n    let isUpdating = false;\n    watch(\n      () => props[key],\n      (v) => {\n        if (!isUpdating) {\n          isUpdating = true;\n          proxy.value = cloneFn(v);\n          nextTick(() => isUpdating = false);\n        }\n      }\n    );\n    watch(\n      proxy,\n      (v) => {\n        if (!isUpdating && (v !== props[key] || deep))\n          triggerEmit(v);\n      },\n      { deep }\n    );\n    return proxy;\n  } else {\n    return computed({\n      get() {\n        return getValue();\n      },\n      set(value) {\n        triggerEmit(value);\n      }\n    });\n  }\n}\n\nfunction useVModels(props, emit, options = {}) {\n  const ret = {};\n  for (const key in props) {\n    ret[key] = useVModel(\n      props,\n      key,\n      emit,\n      options\n    );\n  }\n  return ret;\n}\n\nfunction useVibrate(options) {\n  const {\n    pattern = [],\n    interval = 0,\n    navigator = defaultNavigator\n  } = options || {};\n  const isSupported = useSupported(() => typeof navigator !== \"undefined\" && \"vibrate\" in navigator);\n  const patternRef = toRef(pattern);\n  let intervalControls;\n  const vibrate = (pattern2 = patternRef.value) => {\n    if (isSupported.value)\n      navigator.vibrate(pattern2);\n  };\n  const stop = () => {\n    if (isSupported.value)\n      navigator.vibrate(0);\n    intervalControls == null ? void 0 : intervalControls.pause();\n  };\n  if (interval > 0) {\n    intervalControls = useIntervalFn(\n      vibrate,\n      interval,\n      {\n        immediate: false,\n        immediateCallback: false\n      }\n    );\n  }\n  return {\n    isSupported,\n    pattern,\n    intervalControls,\n    vibrate,\n    stop\n  };\n}\n\nfunction useVirtualList(list, options) {\n  const { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = \"itemHeight\" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list);\n  return {\n    list: currentList,\n    scrollTo,\n    containerProps: {\n      ref: containerRef,\n      onScroll: () => {\n        calculateRange();\n      },\n      style: containerStyle\n    },\n    wrapperProps\n  };\n}\nfunction useVirtualListResources(list) {\n  const containerRef = ref(null);\n  const size = useElementSize(containerRef);\n  const currentList = ref([]);\n  const source = shallowRef(list);\n  const state = ref({ start: 0, end: 10 });\n  return { state, source, currentList, size, containerRef };\n}\nfunction createGetViewCapacity(state, source, itemSize) {\n  return (containerSize) => {\n    if (typeof itemSize === \"number\")\n      return Math.ceil(containerSize / itemSize);\n    const { start = 0 } = state.value;\n    let sum = 0;\n    let capacity = 0;\n    for (let i = start; i < source.value.length; i++) {\n      const size = itemSize(i);\n      sum += size;\n      capacity = i;\n      if (sum > containerSize)\n        break;\n    }\n    return capacity - start;\n  };\n}\nfunction createGetOffset(source, itemSize) {\n  return (scrollDirection) => {\n    if (typeof itemSize === \"number\")\n      return Math.floor(scrollDirection / itemSize) + 1;\n    let sum = 0;\n    let offset = 0;\n    for (let i = 0; i < source.value.length; i++) {\n      const size = itemSize(i);\n      sum += size;\n      if (sum >= scrollDirection) {\n        offset = i;\n        break;\n      }\n    }\n    return offset + 1;\n  };\n}\nfunction createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) {\n  return () => {\n    const element = containerRef.value;\n    if (element) {\n      const offset = getOffset(type === \"vertical\" ? element.scrollTop : element.scrollLeft);\n      const viewCapacity = getViewCapacity(type === \"vertical\" ? element.clientHeight : element.clientWidth);\n      const from = offset - overscan;\n      const to = offset + viewCapacity + overscan;\n      state.value = {\n        start: from < 0 ? 0 : from,\n        end: to > source.value.length ? source.value.length : to\n      };\n      currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({\n        data: ele,\n        index: index + state.value.start\n      }));\n    }\n  };\n}\nfunction createGetDistance(itemSize, source) {\n  return (index) => {\n    if (typeof itemSize === \"number\") {\n      const size2 = index * itemSize;\n      return size2;\n    }\n    const size = source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0);\n    return size;\n  };\n}\nfunction useWatchForSizes(size, list, calculateRange) {\n  watch([size.width, size.height, list], () => {\n    calculateRange();\n  });\n}\nfunction createComputedTotalSize(itemSize, source) {\n  return computed(() => {\n    if (typeof itemSize === \"number\")\n      return source.value.length * itemSize;\n    return source.value.reduce((sum, _, index) => sum + itemSize(index), 0);\n  });\n}\nconst scrollToDictionaryForElementScrollKey = {\n  horizontal: \"scrollLeft\",\n  vertical: \"scrollTop\"\n};\nfunction createScrollTo(type, calculateRange, getDistance, containerRef) {\n  return (index) => {\n    if (containerRef.value) {\n      containerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index);\n      calculateRange();\n    }\n  };\n}\nfunction useHorizontalVirtualList(options, list) {\n  const resources = useVirtualListResources(list);\n  const { state, source, currentList, size, containerRef } = resources;\n  const containerStyle = { overflowX: \"auto\" };\n  const { itemWidth, overscan = 5 } = options;\n  const getViewCapacity = createGetViewCapacity(state, source, itemWidth);\n  const getOffset = createGetOffset(source, itemWidth);\n  const calculateRange = createCalculateRange(\"horizontal\", overscan, getOffset, getViewCapacity, resources);\n  const getDistanceLeft = createGetDistance(itemWidth, source);\n  const offsetLeft = computed(() => getDistanceLeft(state.value.start));\n  const totalWidth = createComputedTotalSize(itemWidth, source);\n  useWatchForSizes(size, list, calculateRange);\n  const scrollTo = createScrollTo(\"horizontal\", calculateRange, getDistanceLeft, containerRef);\n  const wrapperProps = computed(() => {\n    return {\n      style: {\n        height: \"100%\",\n        width: `${totalWidth.value - offsetLeft.value}px`,\n        marginLeft: `${offsetLeft.value}px`,\n        display: \"flex\"\n      }\n    };\n  });\n  return {\n    scrollTo,\n    calculateRange,\n    wrapperProps,\n    containerStyle,\n    currentList,\n    containerRef\n  };\n}\nfunction useVerticalVirtualList(options, list) {\n  const resources = useVirtualListResources(list);\n  const { state, source, currentList, size, containerRef } = resources;\n  const containerStyle = { overflowY: \"auto\" };\n  const { itemHeight, overscan = 5 } = options;\n  const getViewCapacity = createGetViewCapacity(state, source, itemHeight);\n  const getOffset = createGetOffset(source, itemHeight);\n  const calculateRange = createCalculateRange(\"vertical\", overscan, getOffset, getViewCapacity, resources);\n  const getDistanceTop = createGetDistance(itemHeight, source);\n  const offsetTop = computed(() => getDistanceTop(state.value.start));\n  const totalHeight = createComputedTotalSize(itemHeight, source);\n  useWatchForSizes(size, list, calculateRange);\n  const scrollTo = createScrollTo(\"vertical\", calculateRange, getDistanceTop, containerRef);\n  const wrapperProps = computed(() => {\n    return {\n      style: {\n        width: \"100%\",\n        height: `${totalHeight.value - offsetTop.value}px`,\n        marginTop: `${offsetTop.value}px`\n      }\n    };\n  });\n  return {\n    calculateRange,\n    scrollTo,\n    containerStyle,\n    wrapperProps,\n    currentList,\n    containerRef\n  };\n}\n\nfunction useWakeLock(options = {}) {\n  const {\n    navigator = defaultNavigator,\n    document = defaultDocument\n  } = options;\n  let wakeLock;\n  const isSupported = useSupported(() => navigator && \"wakeLock\" in navigator);\n  const isActive = ref(false);\n  async function onVisibilityChange() {\n    if (!isSupported.value || !wakeLock)\n      return;\n    if (document && document.visibilityState === \"visible\")\n      wakeLock = await navigator.wakeLock.request(\"screen\");\n    isActive.value = !wakeLock.released;\n  }\n  if (document)\n    useEventListener(document, \"visibilitychange\", onVisibilityChange, { passive: true });\n  async function request(type) {\n    if (!isSupported.value)\n      return;\n    wakeLock = await navigator.wakeLock.request(type);\n    isActive.value = !wakeLock.released;\n  }\n  async function release() {\n    if (!isSupported.value || !wakeLock)\n      return;\n    await wakeLock.release();\n    isActive.value = !wakeLock.released;\n    wakeLock = null;\n  }\n  return {\n    isSupported,\n    isActive,\n    request,\n    release\n  };\n}\n\nfunction useWebNotification(options = {}) {\n  const {\n    window = defaultWindow,\n    requestPermissions: _requestForPermissions = true\n  } = options;\n  const defaultWebNotificationOptions = options;\n  const isSupported = useSupported(() => !!window && \"Notification\" in window);\n  const permissionGranted = ref(isSupported.value && \"permission\" in Notification && Notification.permission === \"granted\");\n  const notification = ref(null);\n  const ensurePermissions = async () => {\n    if (!isSupported.value)\n      return;\n    if (!permissionGranted.value && Notification.permission !== \"denied\") {\n      const result = await Notification.requestPermission();\n      if (result === \"granted\")\n        permissionGranted.value = true;\n    }\n    return permissionGranted.value;\n  };\n  const { on: onClick, trigger: clickTrigger } = createEventHook();\n  const { on: onShow, trigger: showTrigger } = createEventHook();\n  const { on: onError, trigger: errorTrigger } = createEventHook();\n  const { on: onClose, trigger: closeTrigger } = createEventHook();\n  const show = async (overrides) => {\n    if (!isSupported.value || !permissionGranted.value)\n      return;\n    const options2 = Object.assign({}, defaultWebNotificationOptions, overrides);\n    notification.value = new Notification(options2.title || \"\", options2);\n    notification.value.onclick = clickTrigger;\n    notification.value.onshow = showTrigger;\n    notification.value.onerror = errorTrigger;\n    notification.value.onclose = closeTrigger;\n    return notification.value;\n  };\n  const close = () => {\n    if (notification.value)\n      notification.value.close();\n    notification.value = null;\n  };\n  if (_requestForPermissions)\n    tryOnMounted(ensurePermissions);\n  tryOnScopeDispose(close);\n  if (isSupported.value && window) {\n    const document = window.document;\n    useEventListener(document, \"visibilitychange\", (e) => {\n      e.preventDefault();\n      if (document.visibilityState === \"visible\") {\n        close();\n      }\n    });\n  }\n  return {\n    isSupported,\n    notification,\n    ensurePermissions,\n    permissionGranted,\n    show,\n    close,\n    onClick,\n    onShow,\n    onError,\n    onClose\n  };\n}\n\nconst DEFAULT_PING_MESSAGE = \"ping\";\nfunction resolveNestedOptions(options) {\n  if (options === true)\n    return {};\n  return options;\n}\nfunction useWebSocket(url, options = {}) {\n  const {\n    onConnected,\n    onDisconnected,\n    onError,\n    onMessage,\n    immediate = true,\n    autoClose = true,\n    protocols = []\n  } = options;\n  const data = ref(null);\n  const status = ref(\"CLOSED\");\n  const wsRef = ref();\n  const urlRef = toRef(url);\n  let heartbeatPause;\n  let heartbeatResume;\n  let explicitlyClosed = false;\n  let retried = 0;\n  let bufferedData = [];\n  let pongTimeoutWait;\n  const _sendBuffer = () => {\n    if (bufferedData.length && wsRef.value && status.value === \"OPEN\") {\n      for (const buffer of bufferedData)\n        wsRef.value.send(buffer);\n      bufferedData = [];\n    }\n  };\n  const resetHeartbeat = () => {\n    clearTimeout(pongTimeoutWait);\n    pongTimeoutWait = void 0;\n  };\n  const close = (code = 1e3, reason) => {\n    if (!isClient || !wsRef.value)\n      return;\n    explicitlyClosed = true;\n    resetHeartbeat();\n    heartbeatPause == null ? void 0 : heartbeatPause();\n    wsRef.value.close(code, reason);\n  };\n  const send = (data2, useBuffer = true) => {\n    if (!wsRef.value || status.value !== \"OPEN\") {\n      if (useBuffer)\n        bufferedData.push(data2);\n      return false;\n    }\n    _sendBuffer();\n    wsRef.value.send(data2);\n    return true;\n  };\n  const _init = () => {\n    if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n      return;\n    const ws = new WebSocket(urlRef.value, protocols);\n    wsRef.value = ws;\n    status.value = \"CONNECTING\";\n    ws.onopen = () => {\n      status.value = \"OPEN\";\n      onConnected == null ? void 0 : onConnected(ws);\n      heartbeatResume == null ? void 0 : heartbeatResume();\n      _sendBuffer();\n    };\n    ws.onclose = (ev) => {\n      status.value = \"CLOSED\";\n      wsRef.value = void 0;\n      onDisconnected == null ? void 0 : onDisconnected(ws, ev);\n      if (!explicitlyClosed && options.autoReconnect) {\n        const {\n          retries = -1,\n          delay = 1e3,\n          onFailed\n        } = resolveNestedOptions(options.autoReconnect);\n        retried += 1;\n        if (typeof retries === \"number\" && (retries < 0 || retried < retries))\n          setTimeout(_init, delay);\n        else if (typeof retries === \"function\" && retries())\n          setTimeout(_init, delay);\n        else\n          onFailed == null ? void 0 : onFailed();\n      }\n    };\n    ws.onerror = (e) => {\n      onError == null ? void 0 : onError(ws, e);\n    };\n    ws.onmessage = (e) => {\n      if (options.heartbeat) {\n        resetHeartbeat();\n        const {\n          message = DEFAULT_PING_MESSAGE\n        } = resolveNestedOptions(options.heartbeat);\n        if (e.data === message)\n          return;\n      }\n      data.value = e.data;\n      onMessage == null ? void 0 : onMessage(ws, e);\n    };\n  };\n  if (options.heartbeat) {\n    const {\n      message = DEFAULT_PING_MESSAGE,\n      interval = 1e3,\n      pongTimeout = 1e3\n    } = resolveNestedOptions(options.heartbeat);\n    const { pause, resume } = useIntervalFn(\n      () => {\n        send(message, false);\n        if (pongTimeoutWait != null)\n          return;\n        pongTimeoutWait = setTimeout(() => {\n          close();\n          explicitlyClosed = false;\n        }, pongTimeout);\n      },\n      interval,\n      { immediate: false }\n    );\n    heartbeatPause = pause;\n    heartbeatResume = resume;\n  }\n  if (autoClose) {\n    if (isClient)\n      useEventListener(\"beforeunload\", () => close());\n    tryOnScopeDispose(close);\n  }\n  const open = () => {\n    if (!isClient && !isWorker)\n      return;\n    close();\n    explicitlyClosed = false;\n    retried = 0;\n    _init();\n  };\n  if (immediate)\n    watch(urlRef, open, { immediate: true });\n  return {\n    data,\n    status,\n    close,\n    send,\n    open,\n    ws: wsRef\n  };\n}\n\nfunction useWebWorker(arg0, workerOptions, options) {\n  const {\n    window = defaultWindow\n  } = options != null ? options : {};\n  const data = ref(null);\n  const worker = shallowRef();\n  const post = (...args) => {\n    if (!worker.value)\n      return;\n    worker.value.postMessage(...args);\n  };\n  const terminate = function terminate2() {\n    if (!worker.value)\n      return;\n    worker.value.terminate();\n  };\n  if (window) {\n    if (typeof arg0 === \"string\")\n      worker.value = new Worker(arg0, workerOptions);\n    else if (typeof arg0 === \"function\")\n      worker.value = arg0();\n    else\n      worker.value = arg0;\n    worker.value.onmessage = (e) => {\n      data.value = e.data;\n    };\n    tryOnScopeDispose(() => {\n      if (worker.value)\n        worker.value.terminate();\n    });\n  }\n  return {\n    data,\n    post,\n    terminate,\n    worker\n  };\n}\n\nfunction jobRunner(userFunc) {\n  return (e) => {\n    const userFuncArgs = e.data[0];\n    return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => {\n      postMessage([\"SUCCESS\", result]);\n    }).catch((error) => {\n      postMessage([\"ERROR\", error]);\n    });\n  };\n}\n\nfunction depsParser(deps) {\n  if (deps.length === 0)\n    return \"\";\n  const depsString = deps.map((dep) => `'${dep}'`).toString();\n  return `importScripts(${depsString})`;\n}\n\nfunction createWorkerBlobUrl(fn, deps) {\n  const blobCode = `${depsParser(deps)}; onmessage=(${jobRunner})(${fn})`;\n  const blob = new Blob([blobCode], { type: \"text/javascript\" });\n  const url = URL.createObjectURL(blob);\n  return url;\n}\n\nfunction useWebWorkerFn(fn, options = {}) {\n  const {\n    dependencies = [],\n    timeout,\n    window = defaultWindow\n  } = options;\n  const worker = ref();\n  const workerStatus = ref(\"PENDING\");\n  const promise = ref({});\n  const timeoutId = ref();\n  const workerTerminate = (status = \"PENDING\") => {\n    if (worker.value && worker.value._url && window) {\n      worker.value.terminate();\n      URL.revokeObjectURL(worker.value._url);\n      promise.value = {};\n      worker.value = void 0;\n      window.clearTimeout(timeoutId.value);\n      workerStatus.value = status;\n    }\n  };\n  workerTerminate();\n  tryOnScopeDispose(workerTerminate);\n  const generateWorker = () => {\n    const blobUrl = createWorkerBlobUrl(fn, dependencies);\n    const newWorker = new Worker(blobUrl);\n    newWorker._url = blobUrl;\n    newWorker.onmessage = (e) => {\n      const { resolve = () => {\n      }, reject = () => {\n      } } = promise.value;\n      const [status, result] = e.data;\n      switch (status) {\n        case \"SUCCESS\":\n          resolve(result);\n          workerTerminate(status);\n          break;\n        default:\n          reject(result);\n          workerTerminate(\"ERROR\");\n          break;\n      }\n    };\n    newWorker.onerror = (e) => {\n      const { reject = () => {\n      } } = promise.value;\n      e.preventDefault();\n      reject(e);\n      workerTerminate(\"ERROR\");\n    };\n    if (timeout) {\n      timeoutId.value = setTimeout(\n        () => workerTerminate(\"TIMEOUT_EXPIRED\"),\n        timeout\n      );\n    }\n    return newWorker;\n  };\n  const callWorker = (...fnArgs) => new Promise((resolve, reject) => {\n    promise.value = {\n      resolve,\n      reject\n    };\n    worker.value && worker.value.postMessage([[...fnArgs]]);\n    workerStatus.value = \"RUNNING\";\n  });\n  const workerFn = (...fnArgs) => {\n    if (workerStatus.value === \"RUNNING\") {\n      console.error(\n        \"[useWebWorkerFn] You can only run one instance of the worker at a time.\"\n      );\n      return Promise.reject();\n    }\n    worker.value = generateWorker();\n    return callWorker(...fnArgs);\n  };\n  return {\n    workerFn,\n    workerStatus,\n    workerTerminate\n  };\n}\n\nfunction useWindowFocus(options = {}) {\n  const { window = defaultWindow } = options;\n  if (!window)\n    return ref(false);\n  const focused = ref(window.document.hasFocus());\n  useEventListener(window, \"blur\", () => {\n    focused.value = false;\n  });\n  useEventListener(window, \"focus\", () => {\n    focused.value = true;\n  });\n  return focused;\n}\n\nfunction useWindowScroll(options = {}) {\n  const { window = defaultWindow, behavior = \"auto\" } = options;\n  if (!window) {\n    return {\n      x: ref(0),\n      y: ref(0)\n    };\n  }\n  const internalX = ref(window.scrollX);\n  const internalY = ref(window.scrollY);\n  const x = computed({\n    get() {\n      return internalX.value;\n    },\n    set(x2) {\n      scrollTo({ left: x2, behavior });\n    }\n  });\n  const y = computed({\n    get() {\n      return internalY.value;\n    },\n    set(y2) {\n      scrollTo({ top: y2, behavior });\n    }\n  });\n  useEventListener(\n    window,\n    \"scroll\",\n    () => {\n      internalX.value = window.scrollX;\n      internalY.value = window.scrollY;\n    },\n    {\n      capture: false,\n      passive: true\n    }\n  );\n  return { x, y };\n}\n\nfunction useWindowSize(options = {}) {\n  const {\n    window = defaultWindow,\n    initialWidth = Number.POSITIVE_INFINITY,\n    initialHeight = Number.POSITIVE_INFINITY,\n    listenOrientation = true,\n    includeScrollbar = true\n  } = options;\n  const width = ref(initialWidth);\n  const height = ref(initialHeight);\n  const update = () => {\n    if (window) {\n      if (includeScrollbar) {\n        width.value = window.innerWidth;\n        height.value = window.innerHeight;\n      } else {\n        width.value = window.document.documentElement.clientWidth;\n        height.value = window.document.documentElement.clientHeight;\n      }\n    }\n  };\n  update();\n  tryOnMounted(update);\n  useEventListener(\"resize\", update, { passive: true });\n  if (listenOrientation) {\n    const matches = useMediaQuery(\"(orientation: portrait)\");\n    watch(matches, () => update());\n  }\n  return { width, height };\n}\n\nexport { DefaultMagicKeysAliasMap, StorageSerializers, TransitionPresets, computedAsync as asyncComputed, breakpointsAntDesign, breakpointsBootstrapV5, breakpointsMasterCss, breakpointsPrimeFlex, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, cloneFnJSON, computedAsync, computedInject, createFetch, createReusableTemplate, createTemplatePromise, createUnrefFn, customStorageEventName, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, executeTransition, formatTimeAgo, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, setSSRHandler, templateRef, unrefElement, useActiveElement, useAnimate, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClipboard, useClipboardItems, useCloned, useColorMode, useConfirmDialog, useCssVar, useCurrentElement, useCycleList, useDark, useDebouncedRefHistory, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDisplayMedia, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementByPoint, useElementHover, useElementSize, useElementVisibility, useEventBus, useEventListener, useEventSource, useEyeDropper, useFavicon, useFetch, useFileDialog, useFileSystemAccess, useFocus, useFocusWithin, useFps, useFullscreen, useGamepad, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useKeyModifier, useLocalStorage, useMagicKeys, useManualRefHistory, useMediaControls, useMediaQuery, useMemoize, useMemory, useMounted, useMouse, useMouseInElement, useMousePressed, useMutationObserver, useNavigatorLanguage, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, useParallax, useParentElement, usePerformanceObserver, usePermission, usePointer, usePointerLock, usePointerSwipe, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePrevious, useRafFn, useRefHistory, useResizeObserver, useScreenOrientation, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSorted, useSpeechRecognition, useSpeechSynthesis, useStepper, useStorage, useStorageAsync, useStyleTag, useSupported, useSwipe, useTemplateRefsList, useTextDirection, useTextSelection, useTextareaAutosize, useThrottledRefHistory, useTimeAgo, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize };\n","<!--\n---\nname: Placeholder\ncategory: 5 - Interactions\n---\n\n# Placeholder\n\nA very simple component that takes a `type` (dataset, reuse, post...) and an optional `src`. If `src` is defined, it simply displays the image (and all props passed are passed to the image).\nHowever, if `src` is undefined, it falls back to a placeholder. Don't forget to pass the `alt` prop !\n\n-->\n\n<template>\n    <img\n      loading=\"lazy\"\n      :src=\"path\"\n      :alt=\"alternativeTextForDefinedImageOnly\"\n      :width=\"size\"\n      :height=\"size\"\n      v-bind=\"$attrs\"\n    />\n  </template>\n\n  <script setup lang=\"ts\">\n  import { computed } from \"vue\";\n  import { computedAsync } from '@vueuse/core';\n\n  const props = defineProps<{\n    type: string,\n    src?: string,\n    alt?: string,\n    size: number\n  }>();\n\n  const placeholderUrl = async () => {\n    const module = await import(`../../assets/img/placeholders/${props.type}.png`);\n    return props.src ? props.src : module.default;\n  };\n\n  const alternativeTextForDefinedImageOnly = computed(() => props.src ? props.alt : '');\n  const path = computedAsync(() => placeholderUrl());\n  </script>\n","<template>\n    <meter class=\"quality-score\" :class=\"props.class\" min=\"0\" low=\"0\" :high=\"high\" :max=\"quality_max_score\" :optimum=\"quality_max_score\" :value=\"score\">\n        {{props.score}}/{{quality_max_score}}\n    </meter>\n</template>\n\n<script setup lang=\"ts\">\ntype Props = {\n    score: number,\n    class?: string\n};\n\nconst props = withDefaults(defineProps<Props>(), {\n  class: \"\",\n});\n\nconst quality_max_score = 1;\nconst high = quality_max_score*2/3;\n</script>\n","<template>\n<div\n    class=\"toggletip__wrapper text-grey-500\"\n    ref=\"wrapper\"\n    @focusout=\"hideIfOutside\"\n    @keydown.esc=\"hide\"\n>\n    <button\n        v-bind=\"$attrs\"\n        :aria-expanded=\"shown\"\n        :aria-controls=\"id\"\n        ref=\"button\"\n        role=\"button\"\n        @click.prevent=\"toggle\"\n    >\n        <slot></slot>\n    </button>\n    <div class=\"toggletip\" :id=\"id\" v-show=\"shown\" ref=\"toggletip\">\n        <slot name=\"toggletip\"></slot>\n    </div>\n    </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, ref } from \"vue\";\nimport { getRandomId } from \"@gouvminint/vue-dsfr\";\n\ndefineOptions({inheritAttrs: false})\n\nconst button = ref<HTMLButtonElement | null>(null);\nconst toggletip = ref<HTMLElement | null>(null);\nconst wrapper = ref<HTMLElement | null>(null);\nconst shown = ref(false);\nconst id = getRandomId(\"toggletip\");\n\nconst toggle = () => {\n    shown.value = !shown.value;\n}\n\nconst hide = () => {\n    shown.value = false;\n}\n\nconst hideIfOutside = (e: FocusEvent) => {\n    const target = (e.relatedTarget || e.target) as HTMLElement | null;\n    if(button.value !== target &&\n        !button.value?.contains(target) &&\n        !toggletip.value?.contains(target)\n    ) {\n        hide();\n    }\n};\n\nonMounted(() => {\n    document.addEventListener(\"click\", hideIfOutside);\n});\n</script>\n","<template>\n  <article class=\"fr-my-3w fr-p-3w border border-default-grey fr-enlarge-link\" :style=\"style\">\n    <div class=\"absolute top-0 fr-grid-row fr-grid-row--middle fr-mt-n3v\" v-if=\"dataset.private || dataset.archived\">\n      <p class=\"fr-badge fr-badge--mention-grey fr-mr-1w\" v-if=\"dataset.private\">\n        <span class=\"fr-icon-lock-line\" aria-hidden=\"true\"></span>\n        {{ t('Private') }}\n      </p>\n      <p class=\"fr-badge fr-badge--mention-grey\" v-if=\"dataset.archived\">\n        <span class=\"fr-icon-archive-line\" aria-hidden=\"true\"></span>\n        {{ t('Archived') }}\n      </p>\n    </div>\n    <div class=\"fr-grid-row fr-grid-row--gutters fr-grid-row--top\">\n      <div class=\"fr-col-auto\">\n        <div class=\"logo\">\n          <Placeholder\n            v-if=\"dataset.organization\"\n            type=\"dataset\"\n            :src=\"dataset.organization.logo_thumbnail\"\n            alt=\"\"\n            :size=\"60\"\n          />\n          <Avatar\n            v-else-if=\"dataset.owner\"\n            :user=\"dataset.owner\"\n            :size=\"60\"\n          />\n          <Placeholder\n            v-else\n            type=\"dataset\"\n            :size=\"60\"\n          />\n        </div>\n      </div>\n      <div class=\"fr-col\">\n        <h4 class=\"fr-mb-1v fr-grid-row\">\n          <slot name=\"datasetUrl\" :dataset=\"dataset\" :datasetUrl=\"datasetUrl\">\n            <AppLink :to=\"datasetUrl\" class=\"text-grey-500\">\n              {{ dataset.title }}\n              <small v-if=\"dataset.acronym\">{{ dataset.acronym }}</small>\n            </AppLink>\n          </slot>\n        </h4>\n        <p class=\"fr-m-0 fr-text--sm\" v-if=\"dataset.organization || dataset.owner\">\n          {{ $t('From') }}\n          <template v-if=\"dataset.organization\">\n            <span class=\"not-enlarged\" v-if=\"organizationUrl\">\n              <AppLink :to=\"organizationUrl\" class=\"fr-link\">\n                <OrganizationNameWithCertificate :organization=\"dataset.organization\" />\n              </AppLink>\n            </span>\n            <OrganizationNameWithCertificate v-else :organization=\"dataset.organization\" />\n          </template>\n          <template v-else>{{ownerName}}</template>\n        </p>\n        <p class=\"fr-mt-1w fr-mb-2w fr-hidden fr-unhidden-sm overflow-wrap-anywhere\">\n          {{ excerpt(dataset.description, 160) }}\n        </p>\n        <div class=\"fr-m-0 fr-grid-row fr-grid-row--middle\">\n          <QualityComponentInline :quality=\"dataset.quality\" :class=\"`fr-hidden flex-sm dash-after`\" />\n          <p class=fr-m-0>{{ $t('Updated {date}', {date: formatRelativeIfRecentDate(dataset.last_update)}) }}</p>\n        </div>\n      </div>\n      <ul v-if=\"showMetrics\" class=\"fr-hidden fr-unhidden-sm fr-hidden-md fr-unhidden-lg fr-col-auto fr-tags-group fr-grid-row--bottom self-center flex-direction-column\">\n        <li>\n          <p class=\"fr-tag\">\n            <i18n-t keypath=\"{n} reuses\" :plural=\"dataset.metrics.reuses || 0\" scope=\"global\">\n              <template #n>\n                <strong class=\"fr-mr-1v\">{{dataset.metrics.reuses || 0}}</strong>\n              </template>\n            </i18n-t>\n          </p>\n        </li>\n        <li>\n          <p class=\"fr-tag\">\n            <i18n-t keypath=\"{n} favorites\" :plural=\"dataset.metrics.followers || 0\" scope=\"global\">\n              <template #n>\n                <strong class=\"fr-mr-1v\">{{dataset.metrics.followers}}</strong>\n              </template>\n            </i18n-t>\n          </p>\n        </li>\n      </ul>\n    </div>\n  </article>\n</template>\n\n<script setup lang=\"ts\">\nimport type { StyleValue } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport type { RouteLocationRaw } from \"vue-router\";\nimport { formatRelativeIfRecentDate } from \"../../helpers\";\nimport { useOwnerName } from \"../../composables\"\nimport OrganizationNameWithCertificate from \"../Organization/OrganizationNameWithCertificate.vue\";\nimport { Avatar } from \"../Avatar\";\nimport { Placeholder } from \"../utils/\";\nimport { QualityComponentInline } from \"../QualityComponentInline\";\nimport { excerpt } from \"../../helpers\";\nimport type { Dataset, DatasetV2 } from \"../../types/datasets\";\nimport AppLink from \"../AppLink/AppLink.vue\";\n\n\ndefineOptions({inheritAttrs: false});\n\ntype Props = {\n  dataset: Dataset | DatasetV2,\n  datasetUrl: RouteLocationRaw,\n  organizationUrl?: RouteLocationRaw,\n  style?: StyleValue,\n  showMetrics?: boolean,\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n  organizationUrl: \"\",\n  style: () => ({}),\n  showMetrics: true,\n});\n\nconst { t } = useI18n();\nconst ownerName = useOwnerName(props.dataset);\n</script>\n","import { defineComponent, computed, createVNode, mergeProps } from 'vue';\n\nvar uid = (function () {\n  return Math.random().toString(36).substring(2);\n});\n\nvar ContentLoader = defineComponent({\n  name: 'ContentLoader',\n  props: {\n    width: {\n      type: [Number, String]\n    },\n    height: {\n      type: [Number, String]\n    },\n    viewBox: {\n      type: String\n    },\n    preserveAspectRatio: {\n      type: String,\n      \"default\": 'xMidYMid meet'\n    },\n    speed: {\n      type: Number,\n      \"default\": 2\n    },\n    baseUrl: {\n      type: String,\n      \"default\": ''\n    },\n    primaryColor: {\n      type: String,\n      \"default\": '#f9f9f9'\n    },\n    secondaryColor: {\n      type: String,\n      \"default\": '#ecebeb'\n    },\n    primaryOpacity: {\n      type: Number,\n      \"default\": 1\n    },\n    secondaryOpacity: {\n      type: Number,\n      \"default\": 1\n    },\n    uniqueKey: {\n      type: String\n    },\n    animate: {\n      type: Boolean,\n      \"default\": true\n    }\n  },\n  setup: function setup(props) {\n    var idClip = computed(function () {\n      return props.uniqueKey ? \"\".concat(props.uniqueKey, \"-idClip\") : uid();\n    });\n    var idGradient = computed(function () {\n      return props.uniqueKey ? \"\".concat(props.uniqueKey, \"-idGradient\") : uid();\n    });\n    var width = computed(function () {\n      var _a;\n\n      return (_a = props.width) !== null && _a !== void 0 ? _a : 400;\n    });\n    var height = computed(function () {\n      var _a;\n\n      return (_a = props.height) !== null && _a !== void 0 ? _a : 130;\n    });\n    var computedViewBox = computed(function () {\n      var _a;\n\n      return (_a = props.viewBox) !== null && _a !== void 0 ? _a : \"0 0 \".concat(width.value, \" \").concat(height.value);\n    });\n    return {\n      idClip: idClip,\n      idGradient: idGradient,\n      computedViewBox: computedViewBox\n    };\n  },\n  render: function render() {\n    return createVNode(\"svg\", {\n      \"width\": this.width,\n      \"height\": this.height,\n      \"viewBox\": this.computedViewBox,\n      \"version\": \"1.1\",\n      \"preserveAspectRatio\": this.preserveAspectRatio\n    }, [createVNode(\"rect\", {\n      \"style\": {\n        fill: \"url(\".concat(this.baseUrl, \"#\").concat(this.idGradient, \")\")\n      },\n      \"clip-path\": \"url(\".concat(this.baseUrl, \"#\").concat(this.idClip, \")\"),\n      \"x\": \"0\",\n      \"y\": \"0\",\n      \"width\": \"100%\",\n      \"height\": \"100%\"\n    }, null), createVNode(\"defs\", null, [createVNode(\"clipPath\", {\n      \"id\": this.idClip\n    }, [this.$slots[\"default\"] ? this.$slots[\"default\"]() : createVNode(\"rect\", {\n      \"x\": \"0\",\n      \"y\": \"0\",\n      \"rx\": \"5\",\n      \"ry\": \"5\",\n      \"width\": \"100%\",\n      \"height\": \"100%\"\n    }, null)]), createVNode(\"linearGradient\", {\n      \"id\": this.idGradient\n    }, [createVNode(\"stop\", {\n      \"offset\": \"0%\",\n      \"stop-color\": this.primaryColor,\n      \"stop-opacity\": this.primaryOpacity\n    }, [this.animate ? createVNode(\"animate\", {\n      \"attributeName\": \"offset\",\n      \"values\": \"-2; 1\",\n      \"dur\": \"\".concat(this.speed, \"s\"),\n      \"repeatCount\": \"indefinite\"\n    }, null) : null]), createVNode(\"stop\", {\n      \"offset\": \"50%\",\n      \"stop-color\": this.secondaryColor,\n      \"stop-opacity\": this.secondaryOpacity\n    }, [this.animate ? createVNode(\"animate\", {\n      \"attributeName\": \"offset\",\n      \"values\": \"-1.5; 1.5\",\n      \"dur\": \"\".concat(this.speed, \"s\"),\n      \"repeatCount\": \"indefinite\"\n    }, null) : null]), createVNode(\"stop\", {\n      \"offset\": \"100%\",\n      \"stop-color\": this.primaryColor,\n      \"stop-opacity\": this.primaryOpacity\n    }, [this.animate ? createVNode(\"animate\", {\n      \"attributeName\": \"offset\",\n      \"values\": \"-1; 2\",\n      \"dur\": \"\".concat(this.speed, \"s\"),\n      \"repeatCount\": \"indefinite\"\n    }, null) : null])])])]);\n  }\n});\n\nvar BulletListLoader = defineComponent(function (props, _a) {\n  var attrs = _a.attrs;\n  return function () {\n    return createVNode(ContentLoader, attrs, {\n      \"default\": function _default() {\n        return [createVNode(\"circle\", {\n          \"cx\": \"10\",\n          \"cy\": \"20\",\n          \"r\": \"8\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"25\",\n          \"y\": \"15\",\n          \"rx\": \"5\",\n          \"ry\": \"5\",\n          \"width\": \"220\",\n          \"height\": \"10\"\n        }, null), createVNode(\"circle\", {\n          \"cx\": \"10\",\n          \"cy\": \"50\",\n          \"r\": \"8\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"25\",\n          \"y\": \"45\",\n          \"rx\": \"5\",\n          \"ry\": \"5\",\n          \"width\": \"220\",\n          \"height\": \"10\"\n        }, null), createVNode(\"circle\", {\n          \"cx\": \"10\",\n          \"cy\": \"80\",\n          \"r\": \"8\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"25\",\n          \"y\": \"75\",\n          \"rx\": \"5\",\n          \"ry\": \"5\",\n          \"width\": \"220\",\n          \"height\": \"10\"\n        }, null), createVNode(\"circle\", {\n          \"cx\": \"10\",\n          \"cy\": \"110\",\n          \"r\": \"8\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"25\",\n          \"y\": \"105\",\n          \"rx\": \"5\",\n          \"ry\": \"5\",\n          \"width\": \"220\",\n          \"height\": \"10\"\n        }, null)];\n      }\n    });\n  };\n});\n\nvar CodeLoader = defineComponent(function (props, _a) {\n  var attrs = _a.attrs;\n  return function () {\n    return createVNode(ContentLoader, attrs, {\n      \"default\": function _default() {\n        return [createVNode(\"rect\", {\n          \"x\": \"0\",\n          \"y\": \"0\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"70\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"80\",\n          \"y\": \"0\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"100\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"190\",\n          \"y\": \"0\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"10\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"15\",\n          \"y\": \"20\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"130\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"155\",\n          \"y\": \"20\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"130\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"15\",\n          \"y\": \"40\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"90\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"115\",\n          \"y\": \"40\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"60\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"185\",\n          \"y\": \"40\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"60\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"0\",\n          \"y\": \"60\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"30\",\n          \"height\": \"10\"\n        }, null)];\n      }\n    });\n  };\n});\n\nvar FacebookLoader = defineComponent(function (props, _a) {\n  var attrs = _a.attrs;\n  return function () {\n    return createVNode(ContentLoader, attrs, {\n      \"default\": function _default() {\n        return [createVNode(\"rect\", {\n          \"x\": \"70\",\n          \"y\": \"15\",\n          \"rx\": \"4\",\n          \"ry\": \"4\",\n          \"width\": \"117\",\n          \"height\": \"6.4\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"70\",\n          \"y\": \"35\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"85\",\n          \"height\": \"6.4\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"0\",\n          \"y\": \"80\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"350\",\n          \"height\": \"6.4\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"0\",\n          \"y\": \"100\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"380\",\n          \"height\": \"6.4\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"0\",\n          \"y\": \"120\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"201\",\n          \"height\": \"6.4\"\n        }, null), createVNode(\"circle\", {\n          \"cx\": \"30\",\n          \"cy\": \"30\",\n          \"r\": \"30\"\n        }, null)];\n      }\n    });\n  };\n});\n\nvar ListLoader = defineComponent(function (props, _a) {\n  var attrs = _a.attrs;\n  return function () {\n    return createVNode(ContentLoader, attrs, {\n      \"default\": function _default() {\n        return [createVNode(\"rect\", {\n          \"x\": \"0\",\n          \"y\": \"0\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"250\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"20\",\n          \"y\": \"20\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"220\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"20\",\n          \"y\": \"40\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"170\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"0\",\n          \"y\": \"60\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"250\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"20\",\n          \"y\": \"80\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"200\",\n          \"height\": \"10\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"20\",\n          \"y\": \"100\",\n          \"rx\": \"3\",\n          \"ry\": \"3\",\n          \"width\": \"80\",\n          \"height\": \"10\"\n        }, null)];\n      }\n    });\n  };\n});\n\nvar InstagramLoader = defineComponent(function (props, _a) {\n  var attrs = _a.attrs;\n  return function () {\n    return createVNode(ContentLoader, mergeProps(attrs, {\n      \"viewBox\": \"0 0 400 480\"\n    }), {\n      \"default\": function _default() {\n        return [createVNode(\"circle\", {\n          \"cx\": \"30\",\n          \"cy\": \"30\",\n          \"r\": \"30\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"75\",\n          \"y\": \"13\",\n          \"rx\": \"4\",\n          \"ry\": \"4\",\n          \"width\": \"100\",\n          \"height\": \"13\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"75\",\n          \"y\": \"37\",\n          \"rx\": \"4\",\n          \"ry\": \"4\",\n          \"width\": \"50\",\n          \"height\": \"8\"\n        }, null), createVNode(\"rect\", {\n          \"x\": \"0\",\n          \"y\": \"70\",\n          \"rx\": \"5\",\n          \"ry\": \"5\",\n          \"width\": \"400\",\n          \"height\": \"400\"\n        }, null)];\n      }\n    });\n  };\n});\n\nexport { BulletListLoader, CodeLoader, ContentLoader, FacebookLoader, InstagramLoader, ListLoader };\n","<template>\n  <a\n    :href=\"adminUrl\"\n    class=\"fr-btn fr-btn--secondary fr-btn--secondary-warning-425 fr-icon-pencil-line fr-icon--sm\"\n  >\n    {{ t(\"Edit file\") }}\n  </a>\n</template>\n\n<script setup lang=\"ts\">\nimport { config } from \"../../config\";\nimport { useI18n } from \"vue-i18n\";\n\ntype Props = {\n  datasetId: string,\n  isCommunityResource?: boolean,\n  resourceId: string,\n};\n\nconst props = withDefaults(defineProps<Props>(), {\n  isCommunityResource: false,\n});\n\nconst { t } = useI18n();\nconst resourceType = props.isCommunityResource ? 'community-resource' : 'resource';\nconst adminUrl = `${config.admin_root}dataset/${props.datasetId}/${resourceType}/${props.resourceId}`;\n</script>\n","<template>\n  <dl class=\"fr-col-12 fr-col-sm-6 fr-col-md-4 fr-col-lg-3 fr-my-0\">\n    <slot></slot>\n  </dl>\n</template>\n\n<script setup lang=\"ts\">\n</script>\n","<template>\n  <dt class=\"fr-text--sm fr-my-0 fr-text--bold\">\n    <slot></slot>\n  </dt>\n</template>\n\n<script setup lang=\"ts\">\n</script>\n","import { getRegisteredComponentsForHook } from \"@etalab/udata-front-plugins-helper\";\nimport { reactive, watch } from \"vue\";\nimport { reloadLocale } from \"../helpers/i18n\";\n\nexport default function useComponentsForHook() {\n  const components = reactive<import(\"@etalab/udata-front-plugins-helper\").Components>({});\n  const getComponentsForHook = (name: string) => {\n    components[name] = getRegisteredComponentsForHook(name);\n    return components[name];\n  }\n  watch(components, reloadLocale);\n  return {\n    getComponentsForHook,\n  }\n}\n","import { type Ref, onMounted, onUnmounted, reactive, readonly, ref } from \"vue\";\nimport { getRandomId } from \"@gouvminint/vue-dsfr\";\n\nexport default function useTabs(tabsRef: Ref<HTMLElement | null>, tablistRef: Ref<HTMLUListElement | null>, tabCount: number, initialSelectedIndex = 0) {\n  const selectedIndex = ref(initialSelectedIndex);\n  const generatedIds: Record<string, string> = reactive({});\n  const asc = ref(true);\n  const resizeObserver: Ref<ResizeObserver | null> = ref(null);\n\n  const getTabPanels = () => tabsRef.value?.querySelectorAll('.fr-tabs__panel') || [];\n\n  onMounted(() => {\n    /*\n      * Need to use a resize-observer as tab-content height can\n      * change according to its inner components.\n      */\n    if (window.ResizeObserver) {\n      resizeObserver.value = new window.ResizeObserver(() => {\n        renderTabs();\n      });\n    }\n\n    getTabPanels().forEach((element) => {\n      if (element) {\n        resizeObserver.value?.observe(element);\n      }\n    });\n  });\n\n  onUnmounted(() => {\n    getTabPanels().forEach((element) => {\n      if (element) {\n        resizeObserver.value?.unobserve(element);\n      }\n    });\n  });\n\n  const isSelected = (idx: number) => {\n    return selectedIndex.value === idx;\n  };\n\n  /*\n  * Need to reimplement tab-height calc\n  * @see https://github.com/GouvernementFR/dsfr/blob/main/src/component/tab/script/tab/tabs-group.js#L117\n  */\n  const renderTabs = () => {\n    if (selectedIndex.value < 0) {\n      return;\n    }\n    if (!tablistRef.value || !tablistRef.value.offsetHeight) {\n      return;\n    }\n    const tablistHeight = tablistRef.value.offsetHeight;\n    // Need to manually select tabs-content in case of manual slot filling\n    const selectedTab = getTabPanels()[selectedIndex.value];\n    if (!selectedTab || !(selectedTab as HTMLElement).offsetHeight) {\n      return;\n    }\n    const selectedTabHeight = (selectedTab as HTMLElement).offsetHeight;\n    tabsRef.value?.style.setProperty('--tabs-height', (tablistHeight + selectedTabHeight) + 'px');\n  }\n\n  const getIdFromIndex = (idx: number) => {\n    if (generatedIds[idx]) {\n      return generatedIds[idx];\n    }\n    const id = getRandomId('tab');\n    generatedIds[idx] = id;\n    return id;\n  }\n\n  const selectIndex = async (idx: number) => {\n    asc.value = idx > selectedIndex.value;\n    selectedIndex.value = idx;\n  }\n\n  const selectPrevious = async () => {\n    const newIndex = selectedIndex.value === 0 ? tabCount - 1 : selectedIndex.value - 1;\n    await selectIndex(newIndex);\n  }\n\n  const selectNext = async () => {\n    const newIndex = selectedIndex.value === tabCount - 1 ? 0 : selectedIndex.value + 1;\n    await selectIndex(newIndex);\n  }\n\n  const selectFirst = async () => {\n    await selectIndex(0);\n  }\n\n  const selectLast = async () => {\n    await selectIndex(tabCount - 1);\n  }\n\n  return {\n    asc: readonly(asc),\n    getIdFromIndex,\n    isSelected,\n    selectFirst,\n    selectLast,\n    selectNext,\n    selectPrevious,\n    selectIndex,\n  };\n};\n","<template>\n  <article :class=\"{'drop-shadow': expanded}\">\n    <header\n      class=\"fr-p-5v fr-grid-row fr-grid-row--middle no-wrap wrap-md justify-between border-default-grey\"\n      :class=\"{'border-bottom': !expanded}\"\n      :id=\"resourceHeaderId\"\n    >\n      <div class=\"fr-col-auto fr-grid-row fr-grid-row--top no-wrap\">\n        <div class=\"fr-col-auto fr-mr-2w fr-icon-svg fr-icon--sm\">\n          <img :src=\"url\" alt=\"\" />\n        </div>\n        <div class=\"fr-col-auto\">\n          <h4\n            class=\"fr-mb-1v\"\n            :id=\"resourceTitleId\"\n          >\n            {{ resource.title || $t('Nameless file') }}\n          </h4>\n          <div class=\"fr-my-0 text-grey-380 fr-grid-row fr-grid-row--middle\">\n            <p v-if=\"hasSchema\" class=\"fr-tag fr-tag--sm z-2\">\n              <strong class=\"fr-mr-1v\">{{ $t(\"schema:\") }}</strong>{{schemaName ? schemaName : schemaUrl}}\n            </p>\n            <p\n              v-if=\"hasSchema && hasSchemaErrors\"\n              class=\"fr-tag fr-tag--error fr-tag--on-right fr-tag--sm fr-ml-n3v fr-pl-2w fr-icon-error-line fr-tag--icon-left\"\n            >\n              {{ $t(\"Invalid\") }}\n            </p>\n            <p :class=\"{'dash-before': hasSchema}\" class=\"fr-text--xs fr-m-0 dash-after\">{{ $t('Updated {date}', {date: formatRelativeIfRecentDate(lastUpdate)}) }}</p>\n            <p v-if=\"resource.format\" class=\"fr-text--xs fr-m-0 dash-after\">\n              {{ resource.format?.trim()?.toLowerCase() }}\n              <template v-if=\"resource.filesize\">({{ filesize(resource.filesize) }})</template>\n            </p>\n            <p class=\"fr-text--xs fr-m-0\">{{ $t('{n} downloads', resource.metrics.views || 0) }}</p>\n          </div>\n          <p class=\"fr-mb-0 fr-mt-1v fr-text--xs text-grey-380\" v-if=\"isCommunityResource && (resource.organization || resource.owner)\">\n            {{ $t('From') }}\n            <a class=\"fr-link\" :href=\"resource.organization.page\" v-if=\"resource.organization\">\n              <OrganizationNameWithCertificate :organization=\"resource.organization\" />\n            </a>\n            <template v-else-if=\"owner\">{{owner}}</template>\n          </p>\n        </div>\n      </div>\n      <div class=\"fr-col-auto fr-ml-auto\">\n        <div class=\"fr-grid-row fr-grid-row--middle no-wrap wrap-md\">\n          <p class=\"text-default-warning fr-m-0\" v-if=\"unavailable\">\n            {{$t('Unavailable')}}\n          </p>\n          <p class=\"fr-col-auto fr-ml-3v fr-m-0\">\n            <button\n              @click=\"expand\"\n              role=\"button\"\n              :aria-expanded=\"expanded\"\n              :aria-controls=\"resourceContentId\"\n              class=\"fr-btn fr-btn--tertiary-no-outline fr-btn--icon-left fr-btn--secondary-grey-500\"\n              :class=\"{'fr-icon-arrow-up-s-line': expanded, 'fr-icon-arrow-down-s-line': !expanded}\"\n            >\n              <template v-if=\"expanded\">\n                {{ $t('Close details') }}\n              </template>\n              <template v-else>\n                {{hasExplore ? $t('See data') : $t('See metadata')}}\n              </template>\n            </button>\n          </p>\n          <p class=\"fr-col-auto fr-ml-3v fr-m-0\" v-if=\"resource.format === 'url'\">\n            <a\n              :href=\"resource.latest\"\n              :title=\"$t('File link - opens a new window')\"\n              rel=\"nofollow noopener\"\n              target=\"_blank\"\n              class=\"fr-btn fr-btn--secondary fr-btn--secondary-grey-500 fr-icon-external-link-line fr-icon--sm\"\n            >\n            </a>\n          </p>\n          <p class=\"fr-col-auto fr-ml-3v fr-m-0\" v-else>\n            <a\n              :href=\"resource.latest\"\n              :title=\"$t('Download file')\"\n              download\n              class=\"fr-btn fr-btn--secondary fr-btn--secondary-grey-500 fr-icon-download-line fr-icon--sm matomo_download\"\n            >\n            </a>\n          </p>\n          <p class=\"fr-col-auto fr-ml-3v fr-m-0\" v-if=\"canEdit\">\n            <EditButton\n              :dataset-id=\"datasetId\"\n              :resource-id=\"resource.id\"\n              :is-community-resource=\"isCommunityResource\"\n            />\n          </p>\n        </div>\n      </div>\n    </header>\n    <section\n      class=\"accordion-content\"\n      :aria-labelledby=\"resourceTitleId\"\n      :id=\"resourceContentId\"\n      ref=\"contentRef\"\n    >\n      <div class=\"fr-tabs fr-tabs--no-border fr-mt-1v\" ref=\"tabsRef\">\n        <ul class=\"fr-tabs__list\" ref=\"tabListRef\" role=\"tablist\" :aria-label=\"$t('File menu')\">\n          <template v-if=\"hasExplore\">\n            <li role=\"presentation\">\n              <button\n                :id=\"resourcePreviewButtonId\"\n                class=\"fr-tabs__tab\"\n                :tabindex=\"resourcePreviewTabIndex\"\n                role=\"tab\"\n                :aria-selected=\"resourcePreviewSelected\"\n                :aria-controls=\"resourcePreviewTabId\"\n                @click=\"selectTab(resourcePreviewIndex)\"\n              >\n                {{$t('Preview')}}\n              </button>\n            </li>\n          </template>\n          <template v-if=\"hasSchema\">\n            <li role=\"presentation\">\n              <button\n                :id=\"resourceStructureButtonId\"\n                class=\"fr-tabs__tab\"\n                :tabindex=\"resourceStructureTabIndex\"\n                role=\"tab\"\n                :aria-selected=\"resourceStructureSelected\"\n                :aria-controls=\"resourceStructureTabId\"\n                @click=\"selectTab(resourceStructureIndex)\"\n              >\n                {{$t('Data structure')}}\n              </button>\n            </li>\n          </template>\n          <li role=\"presentation\">\n            <button\n              :id=\"resourceInformationButtonId\"\n              class=\"fr-tabs__tab\"\n              :tabindex=\"resourceInformationTabIndex\"\n              role=\"tab\"\n              :aria-selected=\"resourceInformationSelected\"\n              :aria-controls=\"resourceInformationTabId\"\n              @click=\"selectTab(resourceInformationIndex)\"\n            >\n              {{$t('Metadata')}}\n            </button>\n          </li>\n        </ul>\n        <transition\n          name=\"slide-fade\"\n          mode=\"in-out\"\n          v-if=\"hasExplore\"\n        >\n          <div\n            :id=\"resourcePreviewTabId\"\n            class=\"fr-tabs__panel fr-tabs__panel--no-padding fr-table--dense\"\n            :class=\"resourcePreviewClass\"\n            role=\"tabpanel\"\n            :aria-labelledby=\"resourcePreviewButtonId\"\n            :tabindex=\"resourcePreviewTabIndex\"\n            v-show=\"resourcePreviewSelected\"\n          >\n            <component v-if=\"expanded\" v-for=\"ex in explore\" :is=\"ex.component\" :resource=\"resource\"/>\n          </div>\n        </transition>\n        <transition\n          name=\"slide-fade\"\n          mode=\"in-out\"\n          v-if=\"hasExplore || hasSchema\"\n        >\n          <div\n            :id=\"resourceStructureTabId\"\n            class=\"fr-tabs__panel\"\n            :class=\"resourceStructureClass\"\n            role=\"tabpanel\"\n            :aria-labelledby=\"resourceStructureButtonId\"\n            :tabindex=\"resourceStructureTabIndex\"\n            v-show=\"resourceStructureSelected\"\n          >\n            <component v-if=\"expanded && hasExplore\" v-for=\"dataStructure in structure\" :is=\"dataStructure.component\" :resource=\"resource\"/>\n            <hr class=\"fr-my-5v fr-p-1v\" v-if=\"hasExplore && hasSchema\"/>\n            <template v-if=\"hasSchema\">\n              <div class=\"fr-grid-row fr-grid-row--gutters fr-grid-row--middle\">\n                <div class=\"fr-col-12 fr-col-lg\">\n                  <h5 class=\"fr-h6 fr-mb-5v\">{{$t('Data schema')}}</h5>\n                  <ul class=\"fr-tags-group\" v-if=\"hasSchemaErrors\">\n                    <li v-for=\"[_key, schemaError] in schemaReport\">\n                      <p class=\"fr-tag fr-tag--sm\">{{schemaError.name}}</p>\n                    </li>\n                  </ul>\n                  <template v-else>\n                    <div class=\"fr-grid-row fr-grid-row--middle fr-mb-1w\">\n                      <p class=\"fr-text--xs fr-m-0\">{{$t('This file is following a schema: ')}}</p>\n                      <p class=\"fr-tag fr-tag--sm fr-icon-checkbox-circle-line fr-tag--icon-left\">\n                        {{schemaName ? schemaName : schemaUrl}}\n                      </p>\n                    </div>\n                      <i18n-t keypath=\"Schemas allow to describe data models, discover how schemas improve your data quality and the available use cases on {address}\" class=\"fr-text--xs fr-m-0\" tag=\"p\" scope=\"global\">\n                        <template #address>\n                          <a :href=\"config.schema_documentation_url\">schema.data.gouv.fr</a>\n                        </template>\n                      </i18n-t>\n                  </template>\n                </div>\n                <div class=\"fr-col-auto\">\n                  <div v-if=\"loading\">\n                    <SchemaLoader/>\n                  </div>\n                  <div v-else>\n                    <a\n                      v-if=\"authorizeValidation\"\n                      class=\"fr-btn fr-btn--secondary fr-btn--secondary-grey-500 fr-mr-3v fr-btn--icon-left fr-icon-checkbox-line\"\n                      :href=\"validationUrl\"\n                    >\n                      {{ $t('See validation report') }}\n                    </a>\n                    <a\n                      v-if=\"schemaName\"\n                      class=\"fr-btn fr-btn--secondary fr-btn--secondary-grey-500 fr-btn--icon-left fr-icon-book-2-line\"\n                      :href=\"documentationUrl\"\n                    >\n                      {{ $t('See schema documentation') }}\n                    </a>\n                  </div>\n                </div>\n              </div>\n            </template>\n          </div>\n        </transition>\n        <transition\n          name=\"slide-fade\"\n          mode=\"in-out\"\n        >\n          <div\n            :id=\"resourceInformationTabId\"\n            class=\"fr-tabs__panel\"\n            :class=\"resourceInformationClass\"\n            role=\"tabpanel\"\n            :aria-labelledby=\"resourceInformationButtonId\"\n            :tabindex=\"resourceInformationTabIndex\"\n            v-show=\"resourceInformationSelected\"\n          >\n            <div class=\"fr-grid-row fr-grid-row--gutters\">\n              <DescriptionList>\n                <DescriptionTerm>{{ $t('URL') }}</DescriptionTerm>\n                <DescriptionDetails :withEllipsis=\"false\">\n                  <div class=\"fr-col text-overflow-ellipsis\">\n                    <a :href=\"resource.url\">{{resource.url}}</a>\n                  </div>\n                  <div class=\"fr-ml-1w fr-col-auto\">\n                    <CopyButton :text=\"resource.url\"/>\n                  </div>\n                </DescriptionDetails>\n                <DescriptionTerm>{{ $t('Permalink') }}</DescriptionTerm>\n                <DescriptionDetails :withEllipsis=\"false\">\n                  <div class=\"fr-col text-overflow-ellipsis\">\n                    <a :href=\"resource.latest\">{{resource.latest}}</a>\n                  </div>\n                  <div class=\"fr-ml-1w fr-col-auto\">\n                    <CopyButton :text=\"resource.latest\"/>\n                  </div>\n                </DescriptionDetails>\n                <DescriptionTerm>{{ $t('ID') }}</DescriptionTerm>\n                <DescriptionDetails :withEllipsis=\"false\">\n                  <div class=\"fr-col text-overflow-ellipsis\">\n                    {{ resource.id }}\n                  </div>\n                  <div class=\"fr-ml-1w fr-col-auto\">\n                    <CopyButton :text=\"resource.id\"/>\n                  </div>\n                </DescriptionDetails>\n                <template v-if=\"resource.mime\">\n                  <DescriptionTerm>{{ $t('MIME Type') }}</DescriptionTerm>\n                  <DescriptionDetails>\n                    {{resource.mime}}\n                  </DescriptionDetails>\n                </template>\n              </DescriptionList>\n              <DescriptionList>\n                <DescriptionTerm>{{ $t('Created on') }}</DescriptionTerm>\n                <DescriptionDetails>\n                  {{formatDate(resource.created_at)}}\n                </DescriptionDetails>\n                <DescriptionTerm>{{ $t('Modified on') }}</DescriptionTerm>\n                <DescriptionDetails>\n                  {{formatDate(resource.last_modified)}}\n                </DescriptionDetails>\n                <template v-if=\"resource.checksum\">\n                  <DescriptionTerm>{{resource.checksum.type}}</DescriptionTerm>\n                  <DescriptionDetails :withEllipsis=\"false\">\n                    <div class=\"fr-col text-overflow-ellipsis\">\n                      {{resource.checksum.value}}\n                    </div>\n                    <div class=\"fr-col-auto\">\n                      <CopyButton :text=\"resource.checksum.value\"/>\n                    </div>\n                  </DescriptionDetails>\n                </template>\n              </DescriptionList>\n              <DescriptionList>\n                <template v-if=\"resource.filesize\">\n                  <DescriptionTerm>{{ $t('Size') }}</DescriptionTerm>\n                  <DescriptionDetails>\n                    {{ filesize(resource.filesize) }}\n                  </DescriptionDetails>\n                </template>\n              </DescriptionList>\n              <div class=\"fr-col-auto fr-ml-auto\" v-if=\"config.show_copy_resource_permalink\">\n                <button\n                  :id=\"resourceCopyId\"\n                  ref=\"copyRef\"\n                  :data-clipboard-text=\"resourceExternalUrl\"\n                  class=\"fr-btn fr-btn--sm fr-btn--secondary fr-btn--secondary-grey-500 fr-btn--icon-right fr-icon-links-fill\"\n                >\n                  {{$t('Copy resource permalink')}}\n                </button>\n              </div>\n            </div>\n            <template v-if=\"resource.description\">\n              <h5 class=\"fr-text--sm fr-my-0 fr-text--bold\">\n                {{ $t(\"File description\") }}\n              </h5>\n              <div class=\"fr-mt-0 markdown fr-text--sm text-mention-grey\" v-html=\"markdown(resource.description)\">\n              </div>\n            </template>\n            <div class=\"text-align-right\" v-if=\"!hasExplore && resource.preview_url\">\n              <a\n                :href=\"resource.preview_url\"\n                class=\"fr-btn fr-btn--icon-left fr-icon-test-tube-line\"\n              >\n                {{ $t(\"Explore data\") }}\n              </a>\n            </div>\n          </div>\n        </transition>\n      </div>\n    </section>\n  </article>\n</template>\n\n<script setup lang=\"ts\">\nimport Clipboard from \"clipboard\";\nimport { ref, computed, unref, onMounted, type MaybeRefOrGetter, toValue } from \"vue\";\nimport SchemaLoader from \"./SchemaLoader.vue\";\nimport useOwnerName from \"../../composables/organizations/useOwnerName\";\nimport useResourceImage from \"../../composables/resources/useResourceImage\";\nimport CopyButton from \"../CopyButton/CopyButton.vue\";\nimport EditButton from \"./EditButton.vue\";\nimport { toggleAccordion } from \"../../helpers/toggleAccordion\";\nimport DescriptionDetails from \"../DescriptionList/DescriptionDetails.vue\";\nimport DescriptionList from \"../DescriptionList/DescriptionList.vue\";\nimport DescriptionTerm from \"../DescriptionList/DescriptionTerm.vue\";\nimport OrganizationNameWithCertificate from \"../Organization/OrganizationNameWithCertificate.vue\";\nimport useSchema from \"../../composables/resources/useSchema\";\nimport useComponentsForHook from \"../../composables/useComponentsForHook\";\nimport { config } from \"../../config\";\nimport { filesize, formatRelativeIfRecentDate, formatDate, markdown } from \"../../helpers\";\nimport { templateRef, unrefElement } from \"@vueuse/core\";\nimport useTabs from \"../../composables/useTabs\";\nimport type { Resource } from \"../../types/resources\";\n\ntype Props = {\n  datasetId: string,\n  expandedOnMount?: boolean,\n  isCommunityResource?: boolean,\n  resource: Resource,\n  canEdit?: boolean\n};\n\ndefineOptions({\n  inheritAttrs: false,\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n  expandedOnMount: false,\n  isCommunityResource: false,\n  canEdit: false,\n})\n\nconst owner = useOwnerName(props.resource);\nconst { url } = useResourceImage(props.resource);\nconst { getComponentsForHook } = useComponentsForHook();\n\nconst contentRef = templateRef<HTMLElement | null>(\"contentRef\");\nconst copyRef = templateRef<HTMLButtonElement | null>(\"copyRef\");\nconst tabsRef = templateRef<HTMLButtonElement | null>(\"tabsRef\");\nconst tabListRef = templateRef<HTMLUListElement | null>(\"tabListRef\");\nconst explore = getComponentsForHook(\"explore\");\nconst structure = getComponentsForHook(\"data-structure\");\n\nconst schemaName = computed(() => props.resource.schema ? props.resource.schema.name : \"\");\nconst schemaUrl = computed(() => props.resource.schema ? props.resource.schema.url : \"\");\n\nconst hasSchema = computed(() => schemaName.value || schemaUrl.value);\nconst hasExplore = computed(() => explore.length > 0 && config.explorable_resources && config.explorable_resources.includes(props.resource.id));\nconst resourcePreviewIndex = computed(() => {\n  return 0;\n});\nconst resourceStructureIndex = computed(() => {\n  if (hasExplore.value && hasSchema.value) {\n    return 1;\n  }\n  return 0;\n});\nconst resourceInformationIndex = computed(() => {\n  if (hasExplore.value && hasSchema.value) {\n    return 2;\n  }\n  if (hasSchema.value) {\n    return 1;\n  }\n  return 0;\n});\n\nconst { asc, getIdFromIndex, isSelected, selectIndex } = useTabs(tabsRef, tabListRef, resourceInformationIndex.value);\n\nconst expanded = ref(false);\nconst expand = () => {\n  if(expanded.value) {\n    globalThis._paq?.push(['trackEvent', 'Close resource', props.resource.id]);\n  } else {\n    globalThis._paq?.push(['trackEvent', 'Open resource', props.resource.id]);\n    if(hasExplore.value) {\n      registerEvent(resourcePreviewButtonId);\n    } else if (hasSchema.value) {\n      registerEvent(resourceStructureButtonId);\n    } else {\n      registerEvent(resourceInformationButtonId);\n    }\n  }\n  expanded.value = !expanded.value;\n  if(contentRef.value) {\n    toggleAccordion(contentRef.value, expanded.value);\n    const $elem = unrefElement(tabsRef);\n    if ($elem) {\n      if(expanded.value) {\n        //const { height } = window.getComputedStyle($elem);\n        //tabsHeight.value = height;\n      } else {\n        //tabsHeight.value = \"auto\";\n      }\n    }\n  }\n}\n\nconst registerEvent = (tab: MaybeRefOrGetter<string>) => {\n  const tabName = unref(tab);\n  globalThis._paq?.push(['trackEvent', 'View resource tab', props.resource.id, toValue(tab)]);\n  if(tabName === resourcePreviewButtonId.value) {\n    globalThis._paq?.push(['trackEvent', 'Show preview', props.resource.id]);\n  } else if (tabName === resourceStructureButtonId.value) {\n    globalThis._paq?.push(['trackEvent', 'Show data structure', props.resource.id]);\n  }\n}\n\nconst getTabPanelClass = (selected: boolean) => {\n  return {'fr-tabs__panel--selected': selected };\n};\n\nconst getTabPanelTabIndex = (selected: boolean) => {\n  return selected ? 0 : -1;\n};\n\nconst selectTab = (index: number) => {\n  selectIndex(index);\n  registerEvent(getIdFromIndex(index));\n}\n\nconst availabilityChecked = computed(() => props.resource.extras && props.resource.extras['check:available']);\nconst lastUpdate = computed(() => props.resource.last_modified);\nconst unavailable = computed(() => availabilityChecked.value === false);\nconst { authorizeValidation, documentationUrl, loading, validationUrl, schemaReport} = useSchema(props.resource);\nconst hasSchemaErrors = computed(() => !!schemaReport.value.size);\nconst resourceExternalUrl = computed(() => {\n  let hash = \"#/resources/\" + props.resource.id;\n  return window.location.origin + window.location.pathname + hash;\n});\n\nconst resourceContentId = computed(() => 'resource-' + props.resource.id);\nconst resourceHeaderId = computed(() => 'resource-' + props.resource.id + '-header');\nconst resourceTitleId = computed(() => 'resource-' + props.resource.id + '-title');\nconst resourceCopyId = computed(() => 'resource-' + props.resource.id + '-copy');\n\nconst resourcePreviewButtonId = computed(() => getIdFromIndex(resourcePreviewIndex.value));\nconst resourcePreviewTabId = computed(() => 'resource-' + props.resource.id + '-preview-tab');\nconst resourcePreviewSelected = computed(() => isSelected(resourcePreviewIndex.value));\nconst resourcePreviewTabIndex = computed(() => getTabPanelTabIndex(resourcePreviewSelected.value));\nconst resourcePreviewClass = computed(() => getTabPanelClass(resourcePreviewSelected.value));\n\nconst resourceStructureButtonId = computed(() => getIdFromIndex(resourceStructureIndex.value));\nconst resourceStructureTabId = computed(() => resourceStructureButtonId.value + '-structure-tab');\nconst resourceStructureSelected = computed(() => isSelected(resourceStructureIndex.value));\nconst resourceStructureTabIndex = computed(() => getTabPanelTabIndex(resourceStructureSelected.value));\nconst resourceStructureClass = computed(() => getTabPanelClass(resourceStructureSelected.value));\n\nconst resourceInformationButtonId = computed(() => getIdFromIndex(resourceInformationIndex.value));\nconst resourceInformationTabId = computed(() => resourceInformationButtonId.value + '-information-tab');\nconst resourceInformationSelected = computed(() => isSelected(resourceInformationIndex.value));\nconst resourceInformationTabIndex = computed(() => getTabPanelTabIndex(resourceInformationSelected.value));\nconst resourceInformationClass = computed(() => getTabPanelClass(resourceInformationSelected.value));\n\nonMounted(() => {\n  if(props.expandedOnMount) {\n    expand();\n  }\n  if(copyRef.value && config.show_copy_resource_permalink) {\n    new Clipboard(copyRef.value);\n  }\n});\n\nconst values = { true: '100%', false: '-100%' };\n// @ts-ignore this will be fine\nconst translateValueFrom = computed(() => values[String(asc.value)]);\n// @ts-ignore this will be fine\nconst translateValueTo = computed(() => values[String(!asc.value)]);\n</script>\n\n<style scoped>\n.slide-fade-enter-active,\n.slide-fade-leave-active {\n  transition: all 0.3s;\n}\n\n.slide-fade-enter-from {\n  transform: translateX(v-bind(translateValueFrom));\n  opacity: 0;\n}\n.slide-fade-leave-to {\n  transform: translateX(v-bind(translateValueTo));\n  opacity: 0;\n}\n</style>\n","<template>\n  <ContentLoader\n    :width=\"1200\"\n    :height=\"height\"\n    :speed=\"2\"\n    primaryColor=\"#f3f3f3\"\n    secondaryColor=\"#ecebeb\"\n  >\n      <rect x=\"20\" y=\"24\" rx=\"4\" ry=\"4\" width=\"16\" height=\"16\" />\n      <rect x=\"52\" y=\"20\" rx=\"4\" ry=\"4\" width=\"536\" height=\"22\" />\n      <rect x=\"52\" y=\"52\" rx=\"4\" ry=\"4\" width=\"374\" height=\"16\" />\n      <rect x=\"1052\" y=\"30\" rx=\"4\" ry=\"4\" width=\"80\" height=\"20\" />\n      <rect x=\"1154\" y=\"20\" rx=\"20\" ry=\"20\" width=\"40\" height=\"40\" />\n  </ContentLoader>\n</template>\n\n<script setup lang=\"ts\">\nimport { ContentLoader } from \"vue-content-loader\";\n\nconst height = 88;\n</script>\n","export const PAGES_AROUND = 3;\n\n/**\n *\n * @param {number} size\n * @param {number} startAt\n * @returns {Array<number>}\n */\nfunction range(size, startAt = 1) {\n  return [...Array(size).keys()].map((i) => i + startAt);\n}\n\n/**\n *\n * @param {number} pageCount\n * @returns {Array<number>}\n */\nfunction getPages(pageCount) {\n  return range(pageCount);\n}\n\n/**\n * Get the number of pages to show inside the pagination based on the total number of pages and the current one.\n * We want 3 pages around the current one with some exceptions :\n * - we want to show at most all pages except the first and last\n * - if we're close to the first page, we'll show less than 3 pages on the left\n * - if we're close to the last page, we'll show less than 3 pages on the right\n * @param {{length: number}} pages\n * @param {number} currentPage\n * @returns {number}\n */\nfunction getPagesShown(pages, currentPage) {\n  return Math.min(\n    PAGES_AROUND * 2 + 1,\n    pages.length - 2,\n    PAGES_AROUND + currentPage - 1,\n    PAGES_AROUND + pages.length - currentPage\n  );\n}\n\n/**\n * Get the first page to show\n * We want to start 3 pages before the current one but we don't want to start below page 2\n * @param {number} currentPage\n * @returns {number}\n */\nfunction getStartPage(currentPage) {\n  return Math.max(\n    currentPage - PAGES_AROUND, // we want to start 3 pages before the current one\n    2 // we don't want to start below page 2\n  )\n}\n\n/**\n * Return an array of page number to show in pagination\n * @param {number} currentPage - Current page\n * @param {number} pageCount - Number of pages\n * @returns {Array<number| null>}\n */\nexport default function getVisiblePages(currentPage, pageCount) {\n  const pages = getPages(pageCount);\n  const start = getStartPage(currentPage);\n  if (pageCount <= 2) {\n    return [];\n  }\n  /** @type {Array<number | null>} */\n  let pagination = range(getPagesShown(pages, currentPage), start);\n  if(!pagination.includes(2)) {\n    pagination.unshift(null);\n  }\n  if(!pagination.includes(pageCount - 1)) {\n    pagination.push(null);\n  }\n  return pagination;\n}\n","<!--\n---\nname: Pagination\ncategory: 5 - Interactions\n---\n\n# Pagination\n\nA simple pagination Vue component that allow you to paginate long collections.\n\n## Usage\n\nSimply provide necessary props :\n\n* page : current page\n* page_size : how many elements will be on each page\n* total_results : total collection length\n* changePage : a function that will be called on each button click. It will be passed a single argument : the new page number\n\nCheck the example below for more info :\n\n```pagination-ex.vue\n<template>\n    <pagination\n      v-if=\"totalResults > pageSize\"\n      :page=\"currentPage\"\n      :page-size=\"pageSize\"\n      :total-results=\"totalResults\"\n      @change=\"changePage\"\n    />\n</template>\n\n<script>\nimport Pagination from \"@etalab/data.gouv.fr-components\"\n\nexport default {\n  name: \"XXX\",\n  components: {\n      Pagination\n  },\n  methods: {\n    changePage(index) {\n      this.page = index; // Change current page\n      this.loadPage(); // Load corresponding new info\n      scrollToTop(); // Then scroll to the top\n    }\n  }\n};\n</script>\n```\n-->\n\n<template>\n  <nav role=\"navigation\" class=\"fr-pagination fr-pagination--centered\" :aria-label=\"t('Pagination')\">\n    <ul class=\"fr-pagination__list\">\n      <li>\n        <a\n          :href=\"page === 1 ? undefined :'#'\"\n          class=\"fr-pagination__link fr-pagination__link--first\"\n          @click.prevent=\"onClick(1)\"\n        >\n          {{ t('First page') }}\n        </a>\n      </li>\n      <li>\n        <a\n          :href=\"page === 1 ? undefined : '#'\"\n          class=\"fr-pagination__link fr-pagination__link--prev fr-pagination__link--lg-label\"\n          @click.prevent=\"previousPage\"\n        >\n          {{ t('Previous page') }}\n        </a>\n      </li>\n      <li>\n        <a\n          :aria-current=\"page === 1 ? 'page' : undefined\"\n          :href=\"page === 1 ? undefined : '#'\"\n          class=\"fr-pagination__link\"\n          :class=\"{'fr-hidden fr-unhidden-sm': page > 1}\"\n          :title=\"t('Page {nb}', {nb: 1})\"\n          @click.prevent=\"onClick(1)\"\n          :data-page=\"1\"\n        >\n          1\n        </a>\n      </li>\n      <li v-for=\"index in visiblePages\">\n        <a\n          class=\"fr-pagination__link\"\n          :class=\"{'fr-hidden fr-unhidden-lg': index < page - 1 || index > page + 1}\"\n          :aria-current=\"page === index ? 'page' : undefined\"\n          :href=\"page === index ? undefined : '#'\"\n          :title=\"t('Page {nb}', {nb: index})\"\n          @click.prevent=\"onClick(index)\"\n          :data-page=\"index\"\n          v-if=\"index\"\n          >\n          {{ index }}\n        </a>\n        <a class=\"fr-pagination__link fr-hidden fr-unhidden-lg\" v-else>\n          …\n        </a>\n      </li>\n      <li>\n        <a\n          class=\"fr-pagination__link\"\n          :aria-current=\"page === pageCount ? 'page' : undefined\"\n          :href=\"page === pageCount ? undefined : '#'\"\n          :title=\"t('Page {nb}', {nb: pageCount})\"\n          @click.prevent=\"onClick(pageCount)\"\n          :data-page=\"pageCount\"\n        >\n          {{ pageCount }}\n        </a>\n      </li>\n      <li>\n        <a\n          class=\"fr-pagination__link fr-pagination__link--next fr-pagination__link--lg-label\"\n          :href=\"page === pageCount ? undefined : '#'\"\n          @click.prevent=\"nextPage\"\n        >\n          {{ t('Next page') }}\n        </a>\n      </li>\n      <li>\n        <a\n          class=\"fr-pagination__link fr-pagination__link--last\"\n          :href=\"page === pageCount ? undefined : '#'\"\n          @click.prevent=\"onClick(pageCount)\"\n        >\n          {{ t('Last page') }}\n        </a>\n      </li>\n    </ul>\n  </nav>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport getVisiblePages from \"./paginate\";\n\ntype Props = {\n  page?: number,\n  pageSize?: number,\n  totalResults: number,\n};\n\nconst props = withDefaults(defineProps<Props>(), {\n  page: 1,\n  pageSize: 20,\n});\n\nconst emit = defineEmits<{\n  change: [page: number]\n}>();\n\nconst { t } = useI18n();\nconst pageCount = computed(() => Math.ceil(props.totalResults / props.pageSize));\nconst visiblePages = computed(() => getVisiblePages(props.page, pageCount.value));\n\nconst onClick = (index: number) => {\n  if (index !== props.page) {\n    return emit(\"change\", index);\n  }\n}\n\nconst nextPage = () => {\n  const index = props.page + 1;\n  if (index <= pageCount.value) {\n    return emit(\"change\", index);\n  }\n};\n\nconst previousPage = () => {\n  const index = props.page - 1;\n  if (index > 0) {\n    return emit(\"change\", index);\n  }\n}\n</script>\n","<template>\n  <div class=\"relative\">\n    <div class=\"read-more\" ref=\"readMoreRef\" :class=\"{expand: expanded}\" :style=\"{height: containerHeight + 'px'}\">\n      <div ref=\"containerRef\">\n        <slot></slot>\n      </div>\n    </div>\n    <div class=\"read-more__bottom\" @click.prevent=\"toggle\" v-if=\"readMoreRequired\">\n      <button role=\"button\" class=\"fr-btn fr-btn--tertiary-no-outline\" @click.prevent.stop=\"toggle\">\n        <template v-if=\"expanded\"> {{ $t(\"Read less\") }}</template>\n        <template v-else>{{ $t(\"Read more\") }}</template>\n      </button>\n    </div>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { templateRef, useElementSize } from \"@vueuse/core\";\nimport { ref, watch } from \"vue\";\nimport { easing, tween, styler } from \"popmotion\";\n\ntype Props = {\n  maxHeight?: string;\n};\n\nconst props = withDefaults(defineProps<Props>(), {\n  maxHeight: \"\",\n});\n\nconst DEFAULT_HEIGHT = 284;\nconst expanded = ref(false);\nconst readMoreRequired = ref(false);\nconst containerRef = templateRef<HTMLElement | null>(\"containerRef\");\nconst readMoreRef = templateRef<HTMLElement | null>(\"readMoreRef\");\nconst { height } = useElementSize(containerRef);\nconst containerHeight = ref(DEFAULT_HEIGHT);\n\nconst getHeight = (elt: Element) => {\n  const style = getComputedStyle(elt);\n  return parseFloat(style.getPropertyValue('height')) +\n    parseFloat(style.getPropertyValue('margin-top')) +\n    parseFloat(style.getPropertyValue('margin-bottom'));\n};\n\nconst getDefaultHeight = () => {\n  const elementMaxHeight = document.querySelector(`[data-read-more-max-height=\"${props.maxHeight}\"]`);\n  if(!elementMaxHeight) {\n    return DEFAULT_HEIGHT;\n  }\n  return Array.from(elementMaxHeight.children)\n    .map(getHeight)\n    .reduce((total, height) => total + height, 0);\n};\n\nconst updateReadMoreHeight = (height: number) => {\n  containerHeight.value = getDefaultHeight();\n  readMoreRequired.value = height > containerHeight.value;\n  if(!readMoreRequired.value) {\n    containerHeight.value = height;\n  }\n};\n\nconst toggle = () => {\n  if(!readMoreRef.value) {\n    return;\n  }\n  const divStyler = styler(readMoreRef.value);\n  if (expanded.value) {\n    tween({\n      from: { height: readMoreRef.value.scrollHeight },\n      to: { height: getDefaultHeight() },\n      duration: 300,\n      ease: easing.anticipate,\n    }).start({\n      update: divStyler.set,\n      complete: () => readMoreRef.value?.scrollIntoView({ behavior: \"smooth\" }),\n    });\n  } else {\n    tween({\n      from: { height: getDefaultHeight() },\n      to: { height: readMoreRef.value.scrollHeight },\n      duration: 300,\n      ease: easing.anticipate,\n    }).start({\n      update: divStyler.set,\n      complete: () => divStyler.set({ height: \"auto\" }),\n    });\n  }\n  expanded.value = !expanded.value;\n};\n\nwatch(height, updateReadMoreHeight);\n</script>\n","<template>\n  <div class=\"well\" :class=\"classes\">\n    <slot></slot>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { Weight, WellType } from \"../../types/ui\";\n\ntype Props = {\n  type?: WellType,\n  color?: string,\n  weight?: Weight,\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n  type: \"primary\",\n  color: \"grey-100\",\n  weight: \"semi-bold\",\n});\n\nconst wellClass = computed(() => `well${props.type === \"primary\" ? \"\" : \"-\" + props.type}-${props.color}`);\nconst weightClass = computed(() => `fr-text--${props.weight}`);\nconst classes = computed(() => weightClass.value + \" \" + wellClass.value);\n</script>\n","// Afrikaans [af]\nimport dayjs from '../index';\nvar locale = {\n  name: 'af',\n  weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),\n  months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n  monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n  weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'oor %s',\n    past: '%s gelede',\n    s: \"'n paar sekondes\",\n    m: \"'n minuut\",\n    mm: '%d minute',\n    h: \"'n uur\",\n    hh: '%d ure',\n    d: \"'n dag\",\n    dd: '%d dae',\n    M: \"'n maand\",\n    MM: '%d maande',\n    y: \"'n jaar\",\n    yy: '%d jaar'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Amharic [am]\nimport dayjs from '../index';\nvar locale = {\n  name: 'am',\n  weekdays: 'እሑድ_ሰኞ_ማክሰኞ_ረቡዕ_ሐሙስ_አርብ_ቅዳሜ'.split('_'),\n  weekdaysShort: 'እሑድ_ሰኞ_ማክሰ_ረቡዕ_ሐሙስ_አርብ_ቅዳሜ'.split('_'),\n  weekdaysMin: 'እሑ_ሰኞ_ማክ_ረቡ_ሐሙ_አር_ቅዳ'.split('_'),\n  months: 'ጃንዋሪ_ፌብሯሪ_ማርች_ኤፕሪል_ሜይ_ጁን_ጁላይ_ኦገስት_ሴፕቴምበር_ኦክቶበር_ኖቬምበር_ዲሴምበር'.split('_'),\n  monthsShort: 'ጃንዋ_ፌብሯ_ማርች_ኤፕሪ_ሜይ_ጁን_ጁላይ_ኦገስ_ሴፕቴ_ኦክቶ_ኖቬም_ዲሴም'.split('_'),\n  weekStart: 1,\n  yearStart: 4,\n  relativeTime: {\n    future: 'በ%s',\n    past: '%s በፊት',\n    s: 'ጥቂት ሰከንዶች',\n    m: 'አንድ ደቂቃ',\n    mm: '%d ደቂቃዎች',\n    h: 'አንድ ሰዓት',\n    hh: '%d ሰዓታት',\n    d: 'አንድ ቀን',\n    dd: '%d ቀናት',\n    M: 'አንድ ወር',\n    MM: '%d ወራት',\n    y: 'አንድ ዓመት',\n    yy: '%d ዓመታት'\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'MMMM D ፣ YYYY',\n    LLL: 'MMMM D ፣ YYYY HH:mm',\n    LLLL: 'dddd ፣ MMMM D ፣ YYYY HH:mm'\n  },\n  ordinal: function ordinal(n) {\n    return n + \"\\u129B\";\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Arabic (Algeria) [ar-dz]\nimport dayjs from '../index';\nvar locale = {\n  name: 'ar-dz',\n  weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n  months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n  weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n  monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n  weekdaysMin: 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd D MMMM YYYY HH:mm'\n  },\n  meridiem: function meridiem(hour) {\n    return hour > 12 ? 'م' : 'ص';\n  },\n  relativeTime: {\n    future: 'في %s',\n    past: 'منذ %s',\n    s: 'ثوان',\n    m: 'دقيقة',\n    mm: '%d دقائق',\n    h: 'ساعة',\n    hh: '%d ساعات',\n    d: 'يوم',\n    dd: '%d أيام',\n    M: 'شهر',\n    MM: '%d أشهر',\n    y: 'سنة',\n    yy: '%d سنوات'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","//  Arabic (Iraq) [ar-iq]\nimport dayjs from '../index';\nvar locale = {\n  name: 'ar-iq',\n  weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n  months: 'كانون الثاني_شباط_آذار_نيسان_أيار_حزيران_تموز_آب_أيلول_تشرين الأول_ تشرين الثاني_كانون الأول'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n  monthsShort: 'كانون الثاني_شباط_آذار_نيسان_أيار_حزيران_تموز_آب_أيلول_تشرين الأول_ تشرين الثاني_كانون الأول'.split('_'),\n  weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd D MMMM YYYY HH:mm'\n  },\n  meridiem: function meridiem(hour) {\n    return hour > 12 ? 'م' : 'ص';\n  },\n  relativeTime: {\n    future: 'في %s',\n    past: 'منذ %s',\n    s: 'ثوان',\n    m: 'دقيقة',\n    mm: '%d دقائق',\n    h: 'ساعة',\n    hh: '%d ساعات',\n    d: 'يوم',\n    dd: '%d أيام',\n    M: 'شهر',\n    MM: '%d أشهر',\n    y: 'سنة',\n    yy: '%d سنوات'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Arabic (Kuwait) [ar-kw]\nimport dayjs from '../index';\nvar locale = {\n  name: 'ar-kw',\n  weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n  months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n  weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n  monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n  weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd D MMMM YYYY HH:mm'\n  },\n  meridiem: function meridiem(hour) {\n    return hour > 12 ? 'م' : 'ص';\n  },\n  relativeTime: {\n    future: 'في %s',\n    past: 'منذ %s',\n    s: 'ثوان',\n    m: 'دقيقة',\n    mm: '%d دقائق',\n    h: 'ساعة',\n    hh: '%d ساعات',\n    d: 'يوم',\n    dd: '%d أيام',\n    M: 'شهر',\n    MM: '%d أشهر',\n    y: 'سنة',\n    yy: '%d سنوات'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Arabic (Lybia) [ar-ly]\nimport dayjs from '../index';\nvar locale = {\n  name: 'ar-ly',\n  weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n  months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n  weekStart: 6,\n  weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n  monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n  weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  meridiem: function meridiem(hour) {\n    return hour > 12 ? 'م' : 'ص';\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'D/‏M/‏YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd D MMMM YYYY HH:mm'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Arabic (Morocco) [ar-ma]\nimport dayjs from '../index';\nvar locale = {\n  name: 'ar-ma',\n  weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n  months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n  weekStart: 6,\n  weekdaysShort: 'احد_إثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n  monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n  weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd D MMMM YYYY HH:mm'\n  },\n  meridiem: function meridiem(hour) {\n    return hour > 12 ? 'م' : 'ص';\n  },\n  relativeTime: {\n    future: 'في %s',\n    past: 'منذ %s',\n    s: 'ثوان',\n    m: 'دقيقة',\n    mm: '%d دقائق',\n    h: 'ساعة',\n    hh: '%d ساعات',\n    d: 'يوم',\n    dd: '%d أيام',\n    M: 'شهر',\n    MM: '%d أشهر',\n    y: 'سنة',\n    yy: '%d سنوات'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Arabic (Saudi Arabia) [ar-sa]\nimport dayjs from '../index';\nvar locale = {\n  name: 'ar-sa',\n  weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n  months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n  weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n  monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n  weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd D MMMM YYYY HH:mm'\n  },\n  meridiem: function meridiem(hour) {\n    return hour > 12 ? 'م' : 'ص';\n  },\n  relativeTime: {\n    future: 'في %s',\n    past: 'منذ %s',\n    s: 'ثوان',\n    m: 'دقيقة',\n    mm: '%d دقائق',\n    h: 'ساعة',\n    hh: '%d ساعات',\n    d: 'يوم',\n    dd: '%d أيام',\n    M: 'شهر',\n    MM: '%d أشهر',\n    y: 'سنة',\n    yy: '%d سنوات'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","//  Arabic (Tunisia) [ar-tn]\nimport dayjs from '../index';\nvar locale = {\n  name: 'ar-tn',\n  weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n  months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n  monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n  weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd D MMMM YYYY HH:mm'\n  },\n  meridiem: function meridiem(hour) {\n    return hour > 12 ? 'م' : 'ص';\n  },\n  relativeTime: {\n    future: 'في %s',\n    past: 'منذ %s',\n    s: 'ثوان',\n    m: 'دقيقة',\n    mm: '%d دقائق',\n    h: 'ساعة',\n    hh: '%d ساعات',\n    d: 'يوم',\n    dd: '%d أيام',\n    M: 'شهر',\n    MM: '%d أشهر',\n    y: 'سنة',\n    yy: '%d سنوات'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Arabic [ar]\nimport dayjs from '../index';\nvar months = 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_');\nvar symbolMap = {\n  1: '١',\n  2: '٢',\n  3: '٣',\n  4: '٤',\n  5: '٥',\n  6: '٦',\n  7: '٧',\n  8: '٨',\n  9: '٩',\n  0: '٠'\n};\nvar numberMap = {\n  '١': '1',\n  '٢': '2',\n  '٣': '3',\n  '٤': '4',\n  '٥': '5',\n  '٦': '6',\n  '٧': '7',\n  '٨': '8',\n  '٩': '9',\n  '٠': '0'\n};\nvar locale = {\n  name: 'ar',\n  weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n  weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n  weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n  months: months,\n  monthsShort: months,\n  weekStart: 6,\n  meridiem: function meridiem(hour) {\n    return hour > 12 ? 'م' : 'ص';\n  },\n  relativeTime: {\n    future: 'بعد %s',\n    past: 'منذ %s',\n    s: 'ثانية واحدة',\n    m: 'دقيقة واحدة',\n    mm: '%d دقائق',\n    h: 'ساعة واحدة',\n    hh: '%d ساعات',\n    d: 'يوم واحد',\n    dd: '%d أيام',\n    M: 'شهر واحد',\n    MM: '%d أشهر',\n    y: 'عام واحد',\n    yy: '%d أعوام'\n  },\n  preparse: function preparse(string) {\n    return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n      return numberMap[match];\n    }).replace(/،/g, ',');\n  },\n  postformat: function postformat(string) {\n    return string.replace(/\\d/g, function (match) {\n      return symbolMap[match];\n    }).replace(/,/g, '،');\n  },\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'D/‏M/‏YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd D MMMM YYYY HH:mm'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Azerbaijani [az]\nimport dayjs from '../index';\nvar locale = {\n  name: 'az',\n  weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),\n  weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n  weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n  months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),\n  monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n  weekStart: 1,\n  formats: {\n    LT: 'H:mm',\n    LTS: 'H:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D MMMM YYYY г.',\n    LLL: 'D MMMM YYYY г., H:mm',\n    LLLL: 'dddd, D MMMM YYYY г., H:mm'\n  },\n  relativeTime: {\n    future: '%s sonra',\n    past: '%s əvvəl',\n    s: 'bir neçə saniyə',\n    m: 'bir dəqiqə',\n    mm: '%d dəqiqə',\n    h: 'bir saat',\n    hh: '%d saat',\n    d: 'bir gün',\n    dd: '%d gün',\n    M: 'bir ay',\n    MM: '%d ay',\n    y: 'bir il',\n    yy: '%d il'\n  },\n  ordinal: function ordinal(n) {\n    return n;\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Belarusian [be]\nimport dayjs from '../index';\nvar locale = {\n  name: 'be',\n  weekdays: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),\n  months: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n  monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n  weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D MMMM YYYY г.',\n    LLL: 'D MMMM YYYY г., HH:mm',\n    LLLL: 'dddd, D MMMM YYYY г., HH:mm'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Bulgarian [bg]\nimport dayjs from '../index';\nvar locale = {\n  name: 'bg',\n  weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),\n  weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n  weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n  months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),\n  monthsShort: 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n  weekStart: 1,\n  ordinal: function ordinal(n) {\n    var last2Digits = n % 100;\n\n    if (last2Digits > 10 && last2Digits < 20) {\n      return n + \"-\\u0442\\u0438\";\n    }\n\n    var lastDigit = n % 10;\n\n    if (lastDigit === 1) {\n      return n + \"-\\u0432\\u0438\";\n    } else if (lastDigit === 2) {\n      return n + \"-\\u0440\\u0438\";\n    } else if (lastDigit === 7 || lastDigit === 8) {\n      return n + \"-\\u043C\\u0438\";\n    }\n\n    return n + \"-\\u0442\\u0438\";\n  },\n  formats: {\n    LT: 'H:mm',\n    LTS: 'H:mm:ss',\n    L: 'D.MM.YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY H:mm',\n    LLLL: 'dddd, D MMMM YYYY H:mm'\n  },\n  relativeTime: {\n    future: 'след %s',\n    past: 'преди %s',\n    s: 'няколко секунди',\n    m: 'минута',\n    mm: '%d минути',\n    h: 'час',\n    hh: '%d часа',\n    d: 'ден',\n    dd: '%d дена',\n    M: 'месец',\n    MM: '%d месеца',\n    y: 'година',\n    yy: '%d години'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Bislama [bi]\nimport dayjs from '../index';\nvar locale = {\n  name: 'bi',\n  weekdays: 'Sande_Mande_Tusde_Wenesde_Tosde_Fraede_Sarade'.split('_'),\n  months: 'Januari_Februari_Maj_Eprel_Mei_Jun_Julae_Okis_Septemba_Oktoba_Novemba_Disemba'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'San_Man_Tus_Wen_Tos_Frae_Sar'.split('_'),\n  monthsShort: 'Jan_Feb_Maj_Epr_Mai_Jun_Jul_Oki_Sep_Okt_Nov_Dis'.split('_'),\n  weekdaysMin: 'San_Ma_Tu_We_To_Fr_Sar'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'h:mm A',\n    LTS: 'h:mm:ss A',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY h:mm A',\n    LLLL: 'dddd, D MMMM YYYY h:mm A'\n  },\n  relativeTime: {\n    future: 'lo %s',\n    past: '%s bifo',\n    s: 'sam seken',\n    m: 'wan minit',\n    mm: '%d minit',\n    h: 'wan haoa',\n    hh: '%d haoa',\n    d: 'wan dei',\n    dd: '%d dei',\n    M: 'wan manis',\n    MM: '%d manis',\n    y: 'wan yia',\n    yy: '%d yia'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Bambara [bm]\nimport dayjs from '../index';\nvar locale = {\n  name: 'bm',\n  weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n  months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n  monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n  weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'MMMM [tile] D [san] YYYY',\n    LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n    LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm'\n  },\n  relativeTime: {\n    future: '%s kɔnɔ',\n    past: 'a bɛ %s bɔ',\n    s: 'sanga dama dama',\n    m: 'miniti kelen',\n    mm: 'miniti %d',\n    h: 'lɛrɛ kelen',\n    hh: 'lɛrɛ %d',\n    d: 'tile kelen',\n    dd: 'tile %d',\n    M: 'kalo kelen',\n    MM: 'kalo %d',\n    y: 'san kelen',\n    yy: 'san %d'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Bengali (Bangladesh) [bn-bd]\nimport dayjs from '../index';\nvar symbolMap = {\n  1: '১',\n  2: '২',\n  3: '৩',\n  4: '৪',\n  5: '৫',\n  6: '৬',\n  7: '৭',\n  8: '৮',\n  9: '৯',\n  0: '০'\n};\nvar numberMap = {\n  '১': '1',\n  '২': '2',\n  '৩': '3',\n  '৪': '4',\n  '৫': '5',\n  '৬': '6',\n  '৭': '7',\n  '৮': '8',\n  '৯': '9',\n  '০': '0'\n};\nvar locale = {\n  name: 'bn-bd',\n  weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),\n  months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),\n  weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n  monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),\n  weekdaysMin: 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),\n  weekStart: 0,\n  preparse: function preparse(string) {\n    return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n      return numberMap[match];\n    });\n  },\n  postformat: function postformat(string) {\n    return string.replace(/\\d/g, function (match) {\n      return symbolMap[match];\n    });\n  },\n  ordinal: function ordinal(n) {\n    var s = ['ই', 'লা', 'রা', 'ঠা', 'শে'];\n    var v = n % 100;\n    return \"[\" + n + (s[(v - 20) % 10] || s[v] || s[0]) + \"]\";\n  },\n  formats: {\n    LT: 'A h:mm সময়',\n    LTS: 'A h:mm:ss সময়',\n    L: 'DD/MM/YYYY খ্রিস্টাব্দ',\n    LL: 'D MMMM YYYY খ্রিস্টাব্দ',\n    LLL: 'D MMMM YYYY খ্রিস্টাব্দ, A h:mm সময়',\n    LLLL: 'dddd, D MMMM YYYY খ্রিস্টাব্দ, A h:mm সময়'\n  },\n  meridiem: function meridiem(hour) {\n    return (\n      /* eslint-disable no-nested-ternary */\n      hour < 4 ? 'রাত' : hour < 6 ? 'ভোর' : hour < 12 ? 'সকাল' : hour < 15 ? 'দুপুর' : hour < 18 ? 'বিকাল' : hour < 20 ? 'সন্ধ্যা' : 'রাত'\n    );\n  },\n  relativeTime: {\n    future: '%s পরে',\n    past: '%s আগে',\n    s: 'কয়েক সেকেন্ড',\n    m: 'এক মিনিট',\n    mm: '%d মিনিট',\n    h: 'এক ঘন্টা',\n    hh: '%d ঘন্টা',\n    d: 'এক দিন',\n    dd: '%d দিন',\n    M: 'এক মাস',\n    MM: '%d মাস',\n    y: 'এক বছর',\n    yy: '%d বছর'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Bengali [bn]\nimport dayjs from '../index';\nvar symbolMap = {\n  1: '১',\n  2: '২',\n  3: '৩',\n  4: '৪',\n  5: '৫',\n  6: '৬',\n  7: '৭',\n  8: '৮',\n  9: '৯',\n  0: '০'\n};\nvar numberMap = {\n  '১': '1',\n  '২': '2',\n  '৩': '3',\n  '৪': '4',\n  '৫': '5',\n  '৬': '6',\n  '৭': '7',\n  '৮': '8',\n  '৯': '9',\n  '০': '0'\n};\nvar locale = {\n  name: 'bn',\n  weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),\n  months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),\n  weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n  monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),\n  weekdaysMin: 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),\n  preparse: function preparse(string) {\n    return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n      return numberMap[match];\n    });\n  },\n  postformat: function postformat(string) {\n    return string.replace(/\\d/g, function (match) {\n      return symbolMap[match];\n    });\n  },\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'A h:mm সময়',\n    LTS: 'A h:mm:ss সময়',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY, A h:mm সময়',\n    LLLL: 'dddd, D MMMM YYYY, A h:mm সময়'\n  },\n  relativeTime: {\n    future: '%s পরে',\n    past: '%s আগে',\n    s: 'কয়েক সেকেন্ড',\n    m: 'এক মিনিট',\n    mm: '%d মিনিট',\n    h: 'এক ঘন্টা',\n    hh: '%d ঘন্টা',\n    d: 'এক দিন',\n    dd: '%d দিন',\n    M: 'এক মাস',\n    MM: '%d মাস',\n    y: 'এক বছর',\n    yy: '%d বছর'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Tibetan [bo]\nimport dayjs from '../index';\nvar locale = {\n  name: 'bo',\n  weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),\n  weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n  weekdaysMin: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n  months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n  monthsShort: 'ཟླ་དང་པོ_ཟླ་གཉིས་པ_ཟླ་གསུམ་པ_ཟླ་བཞི་པ_ཟླ་ལྔ་པ_ཟླ་དྲུག་པ_ཟླ་བདུན་པ_ཟླ་བརྒྱད་པ_ཟླ་དགུ་པ_ཟླ་བཅུ་པ_ཟླ་བཅུ་གཅིག་པ_ཟླ་བཅུ་གཉིས་པ'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'A h:mm',\n    LTS: 'A h:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY, A h:mm',\n    LLLL: 'dddd, D MMMM YYYY, A h:mm'\n  },\n  relativeTime: {\n    future: '%s ལ་',\n    past: '%s སྔོན་ལ་',\n    s: 'ཏོག་ཙམ་',\n    m: 'སྐར་མ་གཅིག་',\n    mm: 'སྐར་མ་ %d',\n    h: 'ཆུ་ཚོད་གཅིག་',\n    hh: 'ཆུ་ཚོད་ %d',\n    d: 'ཉིན་གཅིག་',\n    dd: 'ཉིན་ %d',\n    M: 'ཟླ་བ་གཅིག་',\n    MM: 'ཟླ་བ་ %d',\n    y: 'ལོ་གཅིག་',\n    yy: 'ལོ་ %d'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Breton [br]\nimport dayjs from '../index';\n\nfunction lastNumber(number) {\n  if (number > 9) {\n    return lastNumber(number % 10);\n  }\n\n  return number;\n}\n\nfunction softMutation(text) {\n  var mutationTable = {\n    m: 'v',\n    b: 'v',\n    d: 'z'\n  };\n  return mutationTable[text.charAt(0)] + text.substring(1);\n}\n\nfunction mutation(text, number) {\n  if (number === 2) {\n    return softMutation(text);\n  }\n\n  return text;\n}\n\nfunction relativeTimeWithMutation(number, withoutSuffix, key) {\n  var format = {\n    mm: 'munutenn',\n    MM: 'miz',\n    dd: 'devezh'\n  };\n  return number + \" \" + mutation(format[key], number);\n}\n\nfunction specialMutationForYears(number) {\n  /* istanbul ignore next line */\n  switch (lastNumber(number)) {\n    case 1:\n    case 3:\n    case 4:\n    case 5:\n    case 9:\n      return number + \" bloaz\";\n\n    default:\n      return number + \" vloaz\";\n  }\n}\n\nvar locale = {\n  name: 'br',\n  weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n  months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n  monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n  weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'h[e]mm A',\n    LTS: 'h[e]mm:ss A',\n    L: 'DD/MM/YYYY',\n    LL: 'D [a viz] MMMM YYYY',\n    LLL: 'D [a viz] MMMM YYYY h[e]mm A',\n    LLLL: 'dddd, D [a viz] MMMM YYYY h[e]mm A'\n  },\n  relativeTime: {\n    future: 'a-benn %s',\n    past: '%s ʼzo',\n    s: 'un nebeud segondennoù',\n    m: 'ur vunutenn',\n    mm: relativeTimeWithMutation,\n    h: 'un eur',\n    hh: '%d eur',\n    d: 'un devezh',\n    dd: relativeTimeWithMutation,\n    M: 'ur miz',\n    MM: relativeTimeWithMutation,\n    y: 'ur bloaz',\n    yy: specialMutationForYears\n  },\n  meridiem: function meridiem(hour) {\n    return hour < 12 ? 'a.m.' : 'g.m.';\n  } // a-raok merenn | goude merenn\n\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Bosnian [bs]\nimport dayjs from '../index';\nvar locale = {\n  name: 'bs',\n  weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n  months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n  monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n  weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'H:mm',\n    LTS: 'H:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D. MMMM YYYY',\n    LLL: 'D. MMMM YYYY H:mm',\n    LLLL: 'dddd, D. MMMM YYYY H:mm'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Catalan [ca]\nimport dayjs from '../index';\nvar locale = {\n  name: 'ca',\n  weekdays: 'Diumenge_Dilluns_Dimarts_Dimecres_Dijous_Divendres_Dissabte'.split('_'),\n  weekdaysShort: 'Dg._Dl._Dt._Dc._Dj._Dv._Ds.'.split('_'),\n  weekdaysMin: 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'),\n  months: 'Gener_Febrer_Març_Abril_Maig_Juny_Juliol_Agost_Setembre_Octubre_Novembre_Desembre'.split('_'),\n  monthsShort: 'Gen._Febr._Març_Abr._Maig_Juny_Jul._Ag._Set._Oct._Nov._Des.'.split('_'),\n  weekStart: 1,\n  formats: {\n    LT: 'H:mm',\n    LTS: 'H:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM [de] YYYY',\n    LLL: 'D MMMM [de] YYYY [a les] H:mm',\n    LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n    ll: 'D MMM YYYY',\n    lll: 'D MMM YYYY, H:mm',\n    llll: 'ddd D MMM YYYY, H:mm'\n  },\n  relativeTime: {\n    future: 'd\\'aquí %s',\n    past: 'fa %s',\n    s: 'uns segons',\n    m: 'un minut',\n    mm: '%d minuts',\n    h: 'una hora',\n    hh: '%d hores',\n    d: 'un dia',\n    dd: '%d dies',\n    M: 'un mes',\n    MM: '%d mesos',\n    y: 'un any',\n    yy: '%d anys'\n  },\n  ordinal: function ordinal(n) {\n    var ord;\n    if (n === 1 || n === 3) ord = 'r';else if (n === 2) ord = 'n';else if (n === 4) ord = 't';else ord = 'è';\n    return \"\" + n + ord;\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Czech [cs]\nimport dayjs from '../index';\n\nfunction plural(n) {\n  return n > 1 && n < 5 && ~~(n / 10) !== 1; // eslint-disable-line\n}\n/* eslint-disable */\n\n\nfunction translate(number, withoutSuffix, key, isFuture) {\n  var result = number + \" \";\n\n  switch (key) {\n    case 's':\n      // a few seconds / in a few seconds / a few seconds ago\n      return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n\n    case 'm':\n      // a minute / in a minute / a minute ago\n      return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n\n    case 'mm':\n      // 9 minutes / in 9 minutes / 9 minutes ago\n      if (withoutSuffix || isFuture) {\n        return result + (plural(number) ? 'minuty' : 'minut');\n      }\n\n      return result + \"minutami\";\n\n    case 'h':\n      // an hour / in an hour / an hour ago\n      return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n\n    case 'hh':\n      // 9 hours / in 9 hours / 9 hours ago\n      if (withoutSuffix || isFuture) {\n        return result + (plural(number) ? 'hodiny' : 'hodin');\n      }\n\n      return result + \"hodinami\";\n\n    case 'd':\n      // a day / in a day / a day ago\n      return withoutSuffix || isFuture ? 'den' : 'dnem';\n\n    case 'dd':\n      // 9 days / in 9 days / 9 days ago\n      if (withoutSuffix || isFuture) {\n        return result + (plural(number) ? 'dny' : 'dní');\n      }\n\n      return result + \"dny\";\n\n    case 'M':\n      // a month / in a month / a month ago\n      return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n\n    case 'MM':\n      // 9 months / in 9 months / 9 months ago\n      if (withoutSuffix || isFuture) {\n        return result + (plural(number) ? 'měsíce' : 'měsíců');\n      }\n\n      return result + \"m\\u011Bs\\xEDci\";\n\n    case 'y':\n      // a year / in a year / a year ago\n      return withoutSuffix || isFuture ? 'rok' : 'rokem';\n\n    case 'yy':\n      // 9 years / in 9 years / 9 years ago\n      if (withoutSuffix || isFuture) {\n        return result + (plural(number) ? 'roky' : 'let');\n      }\n\n      return result + \"lety\";\n  }\n}\n/* eslint-enable */\n\n\nvar locale = {\n  name: 'cs',\n  weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n  weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n  weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n  months: 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'),\n  monthsShort: 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n  weekStart: 1,\n  yearStart: 4,\n  ordinal: function ordinal(n) {\n    return n + \".\";\n  },\n  formats: {\n    LT: 'H:mm',\n    LTS: 'H:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D. MMMM YYYY',\n    LLL: 'D. MMMM YYYY H:mm',\n    LLLL: 'dddd D. MMMM YYYY H:mm',\n    l: 'D. M. YYYY'\n  },\n  relativeTime: {\n    future: 'za %s',\n    past: 'před %s',\n    s: translate,\n    m: translate,\n    mm: translate,\n    h: translate,\n    hh: translate,\n    d: translate,\n    dd: translate,\n    M: translate,\n    MM: translate,\n    y: translate,\n    yy: translate\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Chuvash [cv]\nimport dayjs from '../index';\nvar locale = {\n  name: 'cv',\n  weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),\n  months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n  monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n  weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD-MM-YYYY',\n    LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n    LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n    LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Welsh [cy]\nimport dayjs from '../index';\nvar locale = {\n  name: 'cy',\n  weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),\n  months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n  monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),\n  weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'mewn %s',\n    past: '%s yn ôl',\n    s: 'ychydig eiliadau',\n    m: 'munud',\n    mm: '%d munud',\n    h: 'awr',\n    hh: '%d awr',\n    d: 'diwrnod',\n    dd: '%d diwrnod',\n    M: 'mis',\n    MM: '%d mis',\n    y: 'blwyddyn',\n    yy: '%d flynedd'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Danish [da]\nimport dayjs from '../index';\nvar locale = {\n  name: 'da',\n  weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n  weekdaysShort: 'søn._man._tirs._ons._tors._fre._lør.'.split('_'),\n  weekdaysMin: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n  months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),\n  monthsShort: 'jan._feb._mar._apr._maj_juni_juli_aug._sept._okt._nov._dec.'.split('_'),\n  weekStart: 1,\n  ordinal: function ordinal(n) {\n    return n + \".\";\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D. MMMM YYYY',\n    LLL: 'D. MMMM YYYY HH:mm',\n    LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'\n  },\n  relativeTime: {\n    future: 'om %s',\n    past: '%s siden',\n    s: 'få sekunder',\n    m: 'et minut',\n    mm: '%d minutter',\n    h: 'en time',\n    hh: '%d timer',\n    d: 'en dag',\n    dd: '%d dage',\n    M: 'en måned',\n    MM: '%d måneder',\n    y: 'et år',\n    yy: '%d år'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// German (Austria) [de-at]\nimport dayjs from '../index';\nvar texts = {\n  s: 'ein paar Sekunden',\n  m: ['eine Minute', 'einer Minute'],\n  mm: '%d Minuten',\n  h: ['eine Stunde', 'einer Stunde'],\n  hh: '%d Stunden',\n  d: ['ein Tag', 'einem Tag'],\n  dd: ['%d Tage', '%d Tagen'],\n  M: ['ein Monat', 'einem Monat'],\n  MM: ['%d Monate', '%d Monaten'],\n  y: ['ein Jahr', 'einem Jahr'],\n  yy: ['%d Jahre', '%d Jahren']\n};\n\nfunction relativeTimeFormatter(number, withoutSuffix, key) {\n  var l = texts[key];\n\n  if (Array.isArray(l)) {\n    l = l[withoutSuffix ? 0 : 1];\n  }\n\n  return l.replace('%d', number);\n}\n\nvar locale = {\n  name: 'de-at',\n  weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n  weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n  weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n  months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n  monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n  ordinal: function ordinal(n) {\n    return n + \".\";\n  },\n  weekStart: 1,\n  formats: {\n    LTS: 'HH:mm:ss',\n    LT: 'HH:mm',\n    L: 'DD.MM.YYYY',\n    LL: 'D. MMMM YYYY',\n    LLL: 'D. MMMM YYYY HH:mm',\n    LLLL: 'dddd, D. MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'in %s',\n    past: 'vor %s',\n    s: relativeTimeFormatter,\n    m: relativeTimeFormatter,\n    mm: relativeTimeFormatter,\n    h: relativeTimeFormatter,\n    hh: relativeTimeFormatter,\n    d: relativeTimeFormatter,\n    dd: relativeTimeFormatter,\n    M: relativeTimeFormatter,\n    MM: relativeTimeFormatter,\n    y: relativeTimeFormatter,\n    yy: relativeTimeFormatter\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// German (Switzerland) [de-ch]\nimport dayjs from '../index';\nvar texts = {\n  s: 'ein paar Sekunden',\n  m: ['eine Minute', 'einer Minute'],\n  mm: '%d Minuten',\n  h: ['eine Stunde', 'einer Stunde'],\n  hh: '%d Stunden',\n  d: ['ein Tag', 'einem Tag'],\n  dd: ['%d Tage', '%d Tagen'],\n  M: ['ein Monat', 'einem Monat'],\n  MM: ['%d Monate', '%d Monaten'],\n  y: ['ein Jahr', 'einem Jahr'],\n  yy: ['%d Jahre', '%d Jahren']\n};\n\nfunction relativeTimeFormatter(number, withoutSuffix, key) {\n  var l = texts[key];\n\n  if (Array.isArray(l)) {\n    l = l[withoutSuffix ? 0 : 1];\n  }\n\n  return l.replace('%d', number);\n}\n\nvar locale = {\n  name: 'de-ch',\n  weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n  weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n  weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n  months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n  monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n  ordinal: function ordinal(n) {\n    return n + \".\";\n  },\n  weekStart: 1,\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D. MMMM YYYY',\n    LLL: 'D. MMMM YYYY HH:mm',\n    LLLL: 'dddd, D. MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'in %s',\n    past: 'vor %s',\n    s: relativeTimeFormatter,\n    m: relativeTimeFormatter,\n    mm: relativeTimeFormatter,\n    h: relativeTimeFormatter,\n    hh: relativeTimeFormatter,\n    d: relativeTimeFormatter,\n    dd: relativeTimeFormatter,\n    M: relativeTimeFormatter,\n    MM: relativeTimeFormatter,\n    y: relativeTimeFormatter,\n    yy: relativeTimeFormatter\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// German [de]\nimport dayjs from '../index';\nvar texts = {\n  s: 'ein paar Sekunden',\n  m: ['eine Minute', 'einer Minute'],\n  mm: '%d Minuten',\n  h: ['eine Stunde', 'einer Stunde'],\n  hh: '%d Stunden',\n  d: ['ein Tag', 'einem Tag'],\n  dd: ['%d Tage', '%d Tagen'],\n  M: ['ein Monat', 'einem Monat'],\n  MM: ['%d Monate', '%d Monaten'],\n  y: ['ein Jahr', 'einem Jahr'],\n  yy: ['%d Jahre', '%d Jahren']\n};\n\nfunction relativeTimeFormatter(number, withoutSuffix, key) {\n  var l = texts[key];\n\n  if (Array.isArray(l)) {\n    l = l[withoutSuffix ? 0 : 1];\n  }\n\n  return l.replace('%d', number);\n}\n\nvar locale = {\n  name: 'de',\n  weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n  weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n  weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n  months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n  monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sept._Okt._Nov._Dez.'.split('_'),\n  ordinal: function ordinal(n) {\n    return n + \".\";\n  },\n  weekStart: 1,\n  yearStart: 4,\n  formats: {\n    LTS: 'HH:mm:ss',\n    LT: 'HH:mm',\n    L: 'DD.MM.YYYY',\n    LL: 'D. MMMM YYYY',\n    LLL: 'D. MMMM YYYY HH:mm',\n    LLLL: 'dddd, D. MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'in %s',\n    past: 'vor %s',\n    s: relativeTimeFormatter,\n    m: relativeTimeFormatter,\n    mm: relativeTimeFormatter,\n    h: relativeTimeFormatter,\n    hh: relativeTimeFormatter,\n    d: relativeTimeFormatter,\n    dd: relativeTimeFormatter,\n    M: relativeTimeFormatter,\n    MM: relativeTimeFormatter,\n    y: relativeTimeFormatter,\n    yy: relativeTimeFormatter\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Maldivian [dv]\nimport dayjs from '../index';\nvar locale = {\n  name: 'dv',\n  weekdays: 'އާދިއްތަ_ހޯމަ_އަންގާރަ_ބުދަ_ބުރާސްފަތި_ހުކުރު_ހޮނިހިރު'.split('_'),\n  months: 'ޖެނުއަރީ_ފެބްރުއަރީ_މާރިޗު_އޭޕްރީލު_މޭ_ޖޫން_ޖުލައި_އޯގަސްޓު_ސެޕްޓެމްބަރު_އޮކްޓޯބަރު_ނޮވެމްބަރު_ޑިސެމްބަރު'.split('_'),\n  weekStart: 7,\n  weekdaysShort: 'އާދިއްތަ_ހޯމަ_އަންގާރަ_ބުދަ_ބުރާސްފަތި_ހުކުރު_ހޮނިހިރު'.split('_'),\n  monthsShort: 'ޖެނުއަރީ_ފެބްރުއަރީ_މާރިޗު_އޭޕްރީލު_މޭ_ޖޫން_ޖުލައި_އޯގަސްޓު_ސެޕްޓެމްބަރު_އޮކްޓޯބަރު_ނޮވެމްބަރު_ޑިސެމްބަރު'.split('_'),\n  weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'D/M/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'ތެރޭގައި %s',\n    past: 'ކުރިން %s',\n    s: 'ސިކުންތުކޮޅެއް',\n    m: 'މިނިޓެއް',\n    mm: 'މިނިޓު %d',\n    h: 'ގަޑިއިރެއް',\n    hh: 'ގަޑިއިރު %d',\n    d: 'ދުވަހެއް',\n    dd: 'ދުވަސް %d',\n    M: 'މަހެއް',\n    MM: 'މަސް %d',\n    y: 'އަހަރެއް',\n    yy: 'އަހަރު %d'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Greek [el]\nimport dayjs from '../index';\nvar locale = {\n  name: 'el',\n  weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),\n  weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n  weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n  months: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),\n  monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαι_Ιουν_Ιουλ_Αυγ_Σεπτ_Οκτ_Νοε_Δεκ'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  weekStart: 1,\n  relativeTime: {\n    future: 'σε %s',\n    past: 'πριν %s',\n    s: 'μερικά δευτερόλεπτα',\n    m: 'ένα λεπτό',\n    mm: '%d λεπτά',\n    h: 'μία ώρα',\n    hh: '%d ώρες',\n    d: 'μία μέρα',\n    dd: '%d μέρες',\n    M: 'ένα μήνα',\n    MM: '%d μήνες',\n    y: 'ένα χρόνο',\n    yy: '%d χρόνια'\n  },\n  formats: {\n    LT: 'h:mm A',\n    LTS: 'h:mm:ss A',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY h:mm A',\n    LLLL: 'dddd, D MMMM YYYY h:mm A'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// English (Australia) [en-au]\nimport dayjs from '../index';\nvar locale = {\n  name: 'en-au',\n  weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n  months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n  monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n  weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'h:mm A',\n    LTS: 'h:mm:ss A',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY h:mm A',\n    LLLL: 'dddd, D MMMM YYYY h:mm A'\n  },\n  relativeTime: {\n    future: 'in %s',\n    past: '%s ago',\n    s: 'a few seconds',\n    m: 'a minute',\n    mm: '%d minutes',\n    h: 'an hour',\n    hh: '%d hours',\n    d: 'a day',\n    dd: '%d days',\n    M: 'a month',\n    MM: '%d months',\n    y: 'a year',\n    yy: '%d years'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// English (Canada) [en-ca]\nimport dayjs from '../index';\nvar locale = {\n  name: 'en-ca',\n  weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n  months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n  weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n  monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n  weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'h:mm A',\n    LTS: 'h:mm:ss A',\n    L: 'YYYY-MM-DD',\n    LL: 'MMMM D, YYYY',\n    LLL: 'MMMM D, YYYY h:mm A',\n    LLLL: 'dddd, MMMM D, YYYY h:mm A'\n  },\n  relativeTime: {\n    future: 'in %s',\n    past: '%s ago',\n    s: 'a few seconds',\n    m: 'a minute',\n    mm: '%d minutes',\n    h: 'an hour',\n    hh: '%d hours',\n    d: 'a day',\n    dd: '%d days',\n    M: 'a month',\n    MM: '%d months',\n    y: 'a year',\n    yy: '%d years'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// English (United Kingdom) [en-gb]\nimport dayjs from '../index';\nvar locale = {\n  name: 'en-gb',\n  weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n  weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n  weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n  months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n  monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n  weekStart: 1,\n  yearStart: 4,\n  relativeTime: {\n    future: 'in %s',\n    past: '%s ago',\n    s: 'a few seconds',\n    m: 'a minute',\n    mm: '%d minutes',\n    h: 'an hour',\n    hh: '%d hours',\n    d: 'a day',\n    dd: '%d days',\n    M: 'a month',\n    MM: '%d months',\n    y: 'a year',\n    yy: '%d years'\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  },\n  ordinal: function ordinal(n) {\n    var s = ['th', 'st', 'nd', 'rd'];\n    var v = n % 100;\n    return \"[\" + n + (s[(v - 20) % 10] || s[v] || s[0]) + \"]\";\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// English (Ireland) [en-ie]\nimport dayjs from '../index';\nvar locale = {\n  name: 'en-ie',\n  weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n  months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n  monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n  weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'in %s',\n    past: '%s ago',\n    s: 'a few seconds',\n    m: 'a minute',\n    mm: '%d minutes',\n    h: 'an hour',\n    hh: '%d hours',\n    d: 'a day',\n    dd: '%d days',\n    M: 'a month',\n    MM: '%d months',\n    y: 'a year',\n    yy: '%d years'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// English (Israel) [en-il]\nimport dayjs from '../index';\nvar locale = {\n  name: 'en-il',\n  weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n  months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n  weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n  monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n  weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'in %s',\n    past: '%s ago',\n    s: 'a few seconds',\n    m: 'a minute',\n    mm: '%d minutes',\n    h: 'an hour',\n    hh: '%d hours',\n    d: 'a day',\n    dd: '%d days',\n    M: 'a month',\n    MM: '%d months',\n    y: 'a year',\n    yy: '%d years'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// English (India) [en-in]\nimport dayjs from '../index';\nvar locale = {\n  name: 'en-in',\n  weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n  weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n  weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n  months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n  monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n  weekStart: 1,\n  yearStart: 4,\n  relativeTime: {\n    future: 'in %s',\n    past: '%s ago',\n    s: 'a few seconds',\n    m: 'a minute',\n    mm: '%d minutes',\n    h: 'an hour',\n    hh: '%d hours',\n    d: 'a day',\n    dd: '%d days',\n    M: 'a month',\n    MM: '%d months',\n    y: 'a year',\n    yy: '%d years'\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  },\n  ordinal: function ordinal(n) {\n    var s = ['th', 'st', 'nd', 'rd'];\n    var v = n % 100;\n    return \"[\" + n + (s[(v - 20) % 10] || s[v] || s[0]) + \"]\";\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// English (New Zealand) [en-nz]\nimport dayjs from '../index';\nvar locale = {\n  name: 'en-nz',\n  weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n  months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n  monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n  weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n  ordinal: function ordinal(n) {\n    var s = ['th', 'st', 'nd', 'rd'];\n    var v = n % 100;\n    return \"[\" + n + (s[(v - 20) % 10] || s[v] || s[0]) + \"]\";\n  },\n  formats: {\n    LT: 'h:mm A',\n    LTS: 'h:mm:ss A',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY h:mm A',\n    LLLL: 'dddd, D MMMM YYYY h:mm A'\n  },\n  relativeTime: {\n    future: 'in %s',\n    past: '%s ago',\n    s: 'a few seconds',\n    m: 'a minute',\n    mm: '%d minutes',\n    h: 'an hour',\n    hh: '%d hours',\n    d: 'a day',\n    dd: '%d days',\n    M: 'a month',\n    MM: '%d months',\n    y: 'a year',\n    yy: '%d years'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// English (Singapore) [en-sg]\nimport dayjs from '../index';\nvar locale = {\n  name: 'en-sg',\n  weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n  months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n  monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n  weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'in %s',\n    past: '%s ago',\n    s: 'a few seconds',\n    m: 'a minute',\n    mm: '%d minutes',\n    h: 'an hour',\n    hh: '%d hours',\n    d: 'a day',\n    dd: '%d days',\n    M: 'a month',\n    MM: '%d months',\n    y: 'a year',\n    yy: '%d years'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// English (Trinidad & Tobago) [en-tt]\nimport dayjs from '../index';\nvar locale = {\n  name: 'en-tt',\n  weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n  weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n  weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n  months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n  monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n  weekStart: 1,\n  yearStart: 4,\n  relativeTime: {\n    future: 'in %s',\n    past: '%s ago',\n    s: 'a few seconds',\n    m: 'a minute',\n    mm: '%d minutes',\n    h: 'an hour',\n    hh: '%d hours',\n    d: 'a day',\n    dd: '%d days',\n    M: 'a month',\n    MM: '%d months',\n    y: 'a year',\n    yy: '%d years'\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  },\n  ordinal: function ordinal(n) {\n    var s = ['th', 'st', 'nd', 'rd'];\n    var v = n % 100;\n    return \"[\" + n + (s[(v - 20) % 10] || s[v] || s[0]) + \"]\";\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Esperanto [eo]\nimport dayjs from '../index';\nvar locale = {\n  name: 'eo',\n  weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n  months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n  monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'),\n  weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'YYYY-MM-DD',\n    LL: 'D[-a de] MMMM, YYYY',\n    LLL: 'D[-a de] MMMM, YYYY HH:mm',\n    LLLL: 'dddd, [la] D[-a de] MMMM, YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'post %s',\n    past: 'antaŭ %s',\n    s: 'sekundoj',\n    m: 'minuto',\n    mm: '%d minutoj',\n    h: 'horo',\n    hh: '%d horoj',\n    d: 'tago',\n    dd: '%d tagoj',\n    M: 'monato',\n    MM: '%d monatoj',\n    y: 'jaro',\n    yy: '%d jaroj'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Spanish (Dominican Republic) [es-do]\nimport dayjs from '../index';\nvar locale = {\n  name: 'es-do',\n  weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n  weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n  weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n  months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n  monthsShort: 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n  weekStart: 1,\n  relativeTime: {\n    future: 'en %s',\n    past: 'hace %s',\n    s: 'unos segundos',\n    m: 'un minuto',\n    mm: '%d minutos',\n    h: 'una hora',\n    hh: '%d horas',\n    d: 'un día',\n    dd: '%d días',\n    M: 'un mes',\n    MM: '%d meses',\n    y: 'un año',\n    yy: '%d años'\n  },\n  ordinal: function ordinal(n) {\n    return n + \"\\xBA\";\n  },\n  formats: {\n    LT: 'h:mm A',\n    LTS: 'h:mm:ss A',\n    L: 'DD/MM/YYYY',\n    LL: 'D [de] MMMM [de] YYYY',\n    LLL: 'D [de] MMMM [de] YYYY h:mm A',\n    LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Spanish (Mexico) [es-mx]\nimport dayjs from '../index';\nvar locale = {\n  name: 'es-mx',\n  weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n  weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n  weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n  months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n  monthsShort: 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n  relativeTime: {\n    future: 'en %s',\n    past: 'hace %s',\n    s: 'unos segundos',\n    m: 'un minuto',\n    mm: '%d minutos',\n    h: 'una hora',\n    hh: '%d horas',\n    d: 'un día',\n    dd: '%d días',\n    M: 'un mes',\n    MM: '%d meses',\n    y: 'un año',\n    yy: '%d años'\n  },\n  ordinal: function ordinal(n) {\n    return n + \"\\xBA\";\n  },\n  formats: {\n    LT: 'H:mm',\n    LTS: 'H:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D [de] MMMM [de] YYYY',\n    LLL: 'D [de] MMMM [de] YYYY H:mm',\n    LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Spanish (Puerto Rico) [es-PR]\nimport dayjs from '../index';\nvar locale = {\n  name: 'es-pr',\n  monthsShort: 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n  weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n  weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n  weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n  months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n  weekStart: 1,\n  formats: {\n    LT: 'h:mm A',\n    LTS: 'h:mm:ss A',\n    L: 'MM/DD/YYYY',\n    LL: 'D [de] MMMM [de] YYYY',\n    LLL: 'D [de] MMMM [de] YYYY h:mm A',\n    LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'\n  },\n  relativeTime: {\n    future: 'en %s',\n    past: 'hace %s',\n    s: 'unos segundos',\n    m: 'un minuto',\n    mm: '%d minutos',\n    h: 'una hora',\n    hh: '%d horas',\n    d: 'un día',\n    dd: '%d días',\n    M: 'un mes',\n    MM: '%d meses',\n    y: 'un año',\n    yy: '%d años'\n  },\n  ordinal: function ordinal(n) {\n    return n + \"\\xBA\";\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Spanish (United States) [es-us]\nimport dayjs from '../index';\nvar locale = {\n  name: 'es-us',\n  weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n  weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n  weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n  months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n  monthsShort: 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n  relativeTime: {\n    future: 'en %s',\n    past: 'hace %s',\n    s: 'unos segundos',\n    m: 'un minuto',\n    mm: '%d minutos',\n    h: 'una hora',\n    hh: '%d horas',\n    d: 'un día',\n    dd: '%d días',\n    M: 'un mes',\n    MM: '%d meses',\n    y: 'un año',\n    yy: '%d años'\n  },\n  ordinal: function ordinal(n) {\n    return n + \"\\xBA\";\n  },\n  formats: {\n    LT: 'h:mm A',\n    LTS: 'h:mm:ss A',\n    L: 'MM/DD/YYYY',\n    LL: 'D [de] MMMM [de] YYYY',\n    LLL: 'D [de] MMMM [de] YYYY h:mm A',\n    LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Spanish [es]\nimport dayjs from '../index';\nvar locale = {\n  name: 'es',\n  monthsShort: 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n  weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n  weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n  weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n  months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n  weekStart: 1,\n  formats: {\n    LT: 'H:mm',\n    LTS: 'H:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D [de] MMMM [de] YYYY',\n    LLL: 'D [de] MMMM [de] YYYY H:mm',\n    LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n  },\n  relativeTime: {\n    future: 'en %s',\n    past: 'hace %s',\n    s: 'unos segundos',\n    m: 'un minuto',\n    mm: '%d minutos',\n    h: 'una hora',\n    hh: '%d horas',\n    d: 'un día',\n    dd: '%d días',\n    M: 'un mes',\n    MM: '%d meses',\n    y: 'un año',\n    yy: '%d años'\n  },\n  ordinal: function ordinal(n) {\n    return n + \"\\xBA\";\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Estonian [et]\nimport dayjs from '../index';\n\nfunction relativeTimeWithTense(number, withoutSuffix, key, isFuture) {\n  var format = {\n    s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n    m: ['ühe minuti', 'üks minut'],\n    mm: ['%d minuti', '%d minutit'],\n    h: ['ühe tunni', 'tund aega', 'üks tund'],\n    hh: ['%d tunni', '%d tundi'],\n    d: ['ühe päeva', 'üks päev'],\n    M: ['kuu aja', 'kuu aega', 'üks kuu'],\n    MM: ['%d kuu', '%d kuud'],\n    y: ['ühe aasta', 'aasta', 'üks aasta'],\n    yy: ['%d aasta', '%d aastat']\n  };\n\n  if (withoutSuffix) {\n    return (format[key][2] ? format[key][2] : format[key][1]).replace('%d', number);\n  }\n\n  return (isFuture ? format[key][0] : format[key][1]).replace('%d', number);\n}\n\nvar locale = {\n  name: 'et',\n  // Estonian\n  weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),\n  // Note weekdays are not capitalized in Estonian\n  weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n  // There is no short form of weekdays in Estonian except this 1 letter format so it is used for both 'weekdaysShort' and 'weekdaysMin'\n  weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n  months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),\n  // Note month names are not capitalized in Estonian\n  monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n  ordinal: function ordinal(n) {\n    return n + \".\";\n  },\n  weekStart: 1,\n  relativeTime: {\n    future: '%s pärast',\n    past: '%s tagasi',\n    s: relativeTimeWithTense,\n    m: relativeTimeWithTense,\n    mm: relativeTimeWithTense,\n    h: relativeTimeWithTense,\n    hh: relativeTimeWithTense,\n    d: relativeTimeWithTense,\n    dd: '%d päeva',\n    M: relativeTimeWithTense,\n    MM: relativeTimeWithTense,\n    y: relativeTimeWithTense,\n    yy: relativeTimeWithTense\n  },\n  formats: {\n    LT: 'H:mm',\n    LTS: 'H:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D. MMMM YYYY',\n    LLL: 'D. MMMM YYYY H:mm',\n    LLLL: 'dddd, D. MMMM YYYY H:mm'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Basque [eu]\nimport dayjs from '../index';\nvar locale = {\n  name: 'eu',\n  weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),\n  months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n  monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),\n  weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'YYYY-MM-DD',\n    LL: 'YYYY[ko] MMMM[ren] D[a]',\n    LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n    LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n    l: 'YYYY-M-D',\n    ll: 'YYYY[ko] MMM D[a]',\n    lll: 'YYYY[ko] MMM D[a] HH:mm',\n    llll: 'ddd, YYYY[ko] MMM D[a] HH:mm'\n  },\n  relativeTime: {\n    future: '%s barru',\n    past: 'duela %s',\n    s: 'segundo batzuk',\n    m: 'minutu bat',\n    mm: '%d minutu',\n    h: 'ordu bat',\n    hh: '%d ordu',\n    d: 'egun bat',\n    dd: '%d egun',\n    M: 'hilabete bat',\n    MM: '%d hilabete',\n    y: 'urte bat',\n    yy: '%d urte'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Persian [fa]\nimport dayjs from '../index';\nvar locale = {\n  name: 'fa',\n  weekdays: 'یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه'.split('_'),\n  weekdaysShort: \"\\u06CC\\u06A9\\u200C\\u0634\\u0646\\u0628\\u0647_\\u062F\\u0648\\u0634\\u0646\\u0628\\u0647_\\u0633\\u0647\\u200C\\u0634\\u0646\\u0628\\u0647_\\u0686\\u0647\\u0627\\u0631\\u0634\\u0646\\u0628\\u0647_\\u067E\\u0646\\u062C\\u200C\\u0634\\u0646\\u0628\\u0647_\\u062C\\u0645\\u0639\\u0647_\\u0634\\u0646\\u0628\\u0647\".split('_'),\n  weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n  weekStart: 6,\n  months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n  monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'در %s',\n    past: '%s پیش',\n    s: 'چند ثانیه',\n    m: 'یک دقیقه',\n    mm: '%d دقیقه',\n    h: 'یک ساعت',\n    hh: '%d ساعت',\n    d: 'یک روز',\n    dd: '%d روز',\n    M: 'یک ماه',\n    MM: '%d ماه',\n    y: 'یک سال',\n    yy: '%d سال'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Finnish [fi]\nimport dayjs from '../index';\n\nfunction relativeTimeFormatter(number, withoutSuffix, key, isFuture) {\n  var past = {\n    s: 'muutama sekunti',\n    m: 'minuutti',\n    mm: '%d minuuttia',\n    h: 'tunti',\n    hh: '%d tuntia',\n    d: 'päivä',\n    dd: '%d päivää',\n    M: 'kuukausi',\n    MM: '%d kuukautta',\n    y: 'vuosi',\n    yy: '%d vuotta',\n    numbers: 'nolla_yksi_kaksi_kolme_neljä_viisi_kuusi_seitsemän_kahdeksan_yhdeksän'.split('_')\n  };\n  var future = {\n    s: 'muutaman sekunnin',\n    m: 'minuutin',\n    mm: '%d minuutin',\n    h: 'tunnin',\n    hh: '%d tunnin',\n    d: 'päivän',\n    dd: '%d päivän',\n    M: 'kuukauden',\n    MM: '%d kuukauden',\n    y: 'vuoden',\n    yy: '%d vuoden',\n    numbers: 'nollan_yhden_kahden_kolmen_neljän_viiden_kuuden_seitsemän_kahdeksan_yhdeksän'.split('_')\n  };\n  var words = isFuture && !withoutSuffix ? future : past;\n  var result = words[key];\n\n  if (number < 10) {\n    return result.replace('%d', words.numbers[number]);\n  }\n\n  return result.replace('%d', number);\n}\n\nvar locale = {\n  name: 'fi',\n  // Finnish\n  weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),\n  // Note weekdays are not capitalized in Finnish\n  weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n  // There is no short form of weekdays in Finnish except this 2 letter format so it is used for both 'weekdaysShort' and 'weekdaysMin'\n  weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n  months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),\n  // Note month names are not capitalized in Finnish\n  monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\n  ordinal: function ordinal(n) {\n    return n + \".\";\n  },\n  weekStart: 1,\n  yearStart: 4,\n  relativeTime: {\n    future: '%s päästä',\n    past: '%s sitten',\n    s: relativeTimeFormatter,\n    m: relativeTimeFormatter,\n    mm: relativeTimeFormatter,\n    h: relativeTimeFormatter,\n    hh: relativeTimeFormatter,\n    d: relativeTimeFormatter,\n    dd: relativeTimeFormatter,\n    M: relativeTimeFormatter,\n    MM: relativeTimeFormatter,\n    y: relativeTimeFormatter,\n    yy: relativeTimeFormatter\n  },\n  formats: {\n    LT: 'HH.mm',\n    LTS: 'HH.mm.ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D. MMMM[ta] YYYY',\n    LLL: 'D. MMMM[ta] YYYY, [klo] HH.mm',\n    LLLL: 'dddd, D. MMMM[ta] YYYY, [klo] HH.mm',\n    l: 'D.M.YYYY',\n    ll: 'D. MMM YYYY',\n    lll: 'D. MMM YYYY, [klo] HH.mm',\n    llll: 'ddd, D. MMM YYYY, [klo] HH.mm'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Faroese [fo]\nimport dayjs from '../index';\nvar locale = {\n  name: 'fo',\n  weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),\n  months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n  monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n  weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd D. MMMM, YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'um %s',\n    past: '%s síðani',\n    s: 'fá sekund',\n    m: 'ein minuttur',\n    mm: '%d minuttir',\n    h: 'ein tími',\n    hh: '%d tímar',\n    d: 'ein dagur',\n    dd: '%d dagar',\n    M: 'ein mánaður',\n    MM: '%d mánaðir',\n    y: 'eitt ár',\n    yy: '%d ár'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// French (Canada) [fr-ca]\nimport dayjs from '../index';\nvar locale = {\n  name: 'fr-ca',\n  weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n  months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n  weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n  monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n  weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'YYYY-MM-DD',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'dans %s',\n    past: 'il y a %s',\n    s: 'quelques secondes',\n    m: 'une minute',\n    mm: '%d minutes',\n    h: 'une heure',\n    hh: '%d heures',\n    d: 'un jour',\n    dd: '%d jours',\n    M: 'un mois',\n    MM: '%d mois',\n    y: 'un an',\n    yy: '%d ans'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// French (Switzerland) [fr-ch]\nimport dayjs from '../index';\nvar locale = {\n  name: 'fr-ch',\n  weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n  months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n  monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n  weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'dans %s',\n    past: 'il y a %s',\n    s: 'quelques secondes',\n    m: 'une minute',\n    mm: '%d minutes',\n    h: 'une heure',\n    hh: '%d heures',\n    d: 'un jour',\n    dd: '%d jours',\n    M: 'un mois',\n    MM: '%d mois',\n    y: 'un an',\n    yy: '%d ans'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// French [fr]\nimport dayjs from '../index';\nvar locale = {\n  name: 'fr',\n  weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n  weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n  weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n  months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n  monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n  weekStart: 1,\n  yearStart: 4,\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'dans %s',\n    past: 'il y a %s',\n    s: 'quelques secondes',\n    m: 'une minute',\n    mm: '%d minutes',\n    h: 'une heure',\n    hh: '%d heures',\n    d: 'un jour',\n    dd: '%d jours',\n    M: 'un mois',\n    MM: '%d mois',\n    y: 'un an',\n    yy: '%d ans'\n  },\n  ordinal: function ordinal(n) {\n    var o = n === 1 ? 'er' : '';\n    return \"\" + n + o;\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Frisian [fy]\nimport dayjs from '../index';\nvar locale = {\n  name: 'fy',\n  weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),\n  months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),\n  monthsShort: 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n  weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD-MM-YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'oer %s',\n    past: '%s lyn',\n    s: 'in pear sekonden',\n    m: 'ien minút',\n    mm: '%d minuten',\n    h: 'ien oere',\n    hh: '%d oeren',\n    d: 'ien dei',\n    dd: '%d dagen',\n    M: 'ien moanne',\n    MM: '%d moannen',\n    y: 'ien jier',\n    yy: '%d jierren'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Irish or Irish Gaelic [ga]\nimport dayjs from '../index';\nvar locale = {\n  name: 'ga',\n  weekdays: 'Dé Domhnaigh_Dé Luain_Dé Máirt_Dé Céadaoin_Déardaoin_Dé hAoine_Dé Satharn'.split('_'),\n  months: 'Eanáir_Feabhra_Márta_Aibreán_Bealtaine_Méitheamh_Iúil_Lúnasa_Meán Fómhair_Deaireadh Fómhair_Samhain_Nollaig'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Dom_Lua_Mái_Céa_Déa_hAo_Sat'.split('_'),\n  monthsShort: 'Eaná_Feab_Márt_Aibr_Beal_Méit_Iúil_Lúna_Meán_Deai_Samh_Noll'.split('_'),\n  weekdaysMin: 'Do_Lu_Má_Ce_Dé_hA_Sa'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'i %s',\n    past: '%s ó shin',\n    s: 'cúpla soicind',\n    m: 'nóiméad',\n    mm: '%d nóiméad',\n    h: 'uair an chloig',\n    hh: '%d uair an chloig',\n    d: 'lá',\n    dd: '%d lá',\n    M: 'mí',\n    MM: '%d mí',\n    y: 'bliain',\n    yy: '%d bliain'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Scottish Gaelic [gd]\nimport dayjs from '../index';\nvar locale = {\n  name: 'gd',\n  weekdays: 'Didòmhnaich_Diluain_Dimàirt_Diciadain_Diardaoin_Dihaoine_Disathairne'.split('_'),\n  months: 'Am Faoilleach_An Gearran_Am Màrt_An Giblean_An Cèitean_An t-Ògmhios_An t-Iuchar_An Lùnastal_An t-Sultain_An Dàmhair_An t-Samhain_An Dùbhlachd'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Did_Dil_Dim_Dic_Dia_Dih_Dis'.split('_'),\n  monthsShort: 'Faoi_Gear_Màrt_Gibl_Cèit_Ògmh_Iuch_Lùn_Sult_Dàmh_Samh_Dùbh'.split('_'),\n  weekdaysMin: 'Dò_Lu_Mà_Ci_Ar_Ha_Sa'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'ann an %s',\n    past: 'bho chionn %s',\n    s: 'beagan diogan',\n    m: 'mionaid',\n    mm: '%d mionaidean',\n    h: 'uair',\n    hh: '%d uairean',\n    d: 'latha',\n    dd: '%d latha',\n    M: 'mìos',\n    MM: '%d mìosan',\n    y: 'bliadhna',\n    yy: '%d bliadhna'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Galician [gl]\nimport dayjs from '../index';\nvar locale = {\n  name: 'gl',\n  weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n  months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n  monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),\n  weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n  ordinal: function ordinal(n) {\n    return n + \"\\xBA\";\n  },\n  formats: {\n    LT: 'H:mm',\n    LTS: 'H:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D [de] MMMM [de] YYYY',\n    LLL: 'D [de] MMMM [de] YYYY H:mm',\n    LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n  },\n  relativeTime: {\n    future: 'en %s',\n    past: 'fai %s',\n    s: 'uns segundos',\n    m: 'un minuto',\n    mm: '%d minutos',\n    h: 'unha hora',\n    hh: '%d horas',\n    d: 'un día',\n    dd: '%d días',\n    M: 'un mes',\n    MM: '%d meses',\n    y: 'un ano',\n    yy: '%d anos'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Konkani Latin script [gom-latn]\nimport dayjs from '../index';\nvar locale = {\n  name: 'gom-latn',\n  weekdays: \"Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var\".split('_'),\n  months: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n  monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n  weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'A h:mm [vazta]',\n    LTS: 'A h:mm:ss [vazta]',\n    L: 'DD-MM-YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY A h:mm [vazta]',\n    LLLL: 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]',\n    llll: 'ddd, D MMM YYYY, A h:mm [vazta]'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Gujarati [gu]\nimport dayjs from '../index';\nvar locale = {\n  name: 'gu',\n  weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split('_'),\n  months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split('_'),\n  weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n  monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split('_'),\n  weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'A h:mm વાગ્યે',\n    LTS: 'A h:mm:ss વાગ્યે',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n    LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે'\n  },\n  relativeTime: {\n    future: '%s મા',\n    past: '%s પેહલા',\n    s: 'અમુક પળો',\n    m: 'એક મિનિટ',\n    mm: '%d મિનિટ',\n    h: 'એક કલાક',\n    hh: '%d કલાક',\n    d: 'એક દિવસ',\n    dd: '%d દિવસ',\n    M: 'એક મહિનો',\n    MM: '%d મહિનો',\n    y: 'એક વર્ષ',\n    yy: '%d વર્ષ'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Hebrew [he]\nimport dayjs from '../index';\nvar texts = {\n  s: 'מספר שניות',\n  ss: '%d שניות',\n  m: 'דקה',\n  mm: '%d דקות',\n  h: 'שעה',\n  hh: '%d שעות',\n  hh2: 'שעתיים',\n  d: 'יום',\n  dd: '%d ימים',\n  dd2: 'יומיים',\n  M: 'חודש',\n  MM: '%d חודשים',\n  MM2: 'חודשיים',\n  y: 'שנה',\n  yy: '%d שנים',\n  yy2: 'שנתיים'\n};\n\nfunction relativeTimeFormatter(number, withoutSuffix, key) {\n  var text = texts[key + (number === 2 ? '2' : '')] || texts[key];\n  return text.replace('%d', number);\n}\n\nvar locale = {\n  name: 'he',\n  weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n  weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n  weekdaysMin: 'א׳_ב׳_ג׳_ד׳_ה׳_ו_ש׳'.split('_'),\n  months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),\n  monthsShort: 'ינו_פבר_מרץ_אפר_מאי_יונ_יול_אוג_ספט_אוק_נוב_דצמ'.split('_'),\n  relativeTime: {\n    future: 'בעוד %s',\n    past: 'לפני %s',\n    s: relativeTimeFormatter,\n    m: relativeTimeFormatter,\n    mm: relativeTimeFormatter,\n    h: relativeTimeFormatter,\n    hh: relativeTimeFormatter,\n    d: relativeTimeFormatter,\n    dd: relativeTimeFormatter,\n    M: relativeTimeFormatter,\n    MM: relativeTimeFormatter,\n    y: relativeTimeFormatter,\n    yy: relativeTimeFormatter\n  },\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  format: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D [ב]MMMM YYYY',\n    LLL: 'D [ב]MMMM YYYY HH:mm',\n    LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n    l: 'D/M/YYYY',\n    ll: 'D MMM YYYY',\n    lll: 'D MMM YYYY HH:mm',\n    llll: 'ddd, D MMM YYYY HH:mm'\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D [ב]MMMM YYYY',\n    LLL: 'D [ב]MMMM YYYY HH:mm',\n    LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n    l: 'D/M/YYYY',\n    ll: 'D MMM YYYY',\n    lll: 'D MMM YYYY HH:mm',\n    llll: 'ddd, D MMM YYYY HH:mm'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Hindi [hi]\nimport dayjs from '../index';\nvar locale = {\n  name: 'hi',\n  weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n  months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),\n  weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n  monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n  weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'A h:mm बजे',\n    LTS: 'A h:mm:ss बजे',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY, A h:mm बजे',\n    LLLL: 'dddd, D MMMM YYYY, A h:mm बजे'\n  },\n  relativeTime: {\n    future: '%s में',\n    past: '%s पहले',\n    s: 'कुछ ही क्षण',\n    m: 'एक मिनट',\n    mm: '%d मिनट',\n    h: 'एक घंटा',\n    hh: '%d घंटे',\n    d: 'एक दिन',\n    dd: '%d दिन',\n    M: 'एक महीने',\n    MM: '%d महीने',\n    y: 'एक वर्ष',\n    yy: '%d वर्ष'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Croatian [hr]\nimport dayjs from '../index';\nvar monthFormat = 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_');\nvar monthStandalone = 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_');\nvar MONTHS_IN_FORMAT = /D[oD]?(\\[[^[\\]]*\\]|\\s)+MMMM?/;\n\nvar months = function months(dayjsInstance, format) {\n  if (MONTHS_IN_FORMAT.test(format)) {\n    return monthFormat[dayjsInstance.month()];\n  }\n\n  return monthStandalone[dayjsInstance.month()];\n};\n\nmonths.s = monthStandalone;\nmonths.f = monthFormat;\nvar locale = {\n  name: 'hr',\n  weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n  weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n  weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n  months: months,\n  monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),\n  weekStart: 1,\n  formats: {\n    LT: 'H:mm',\n    LTS: 'H:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D. MMMM YYYY',\n    LLL: 'D. MMMM YYYY H:mm',\n    LLLL: 'dddd, D. MMMM YYYY H:mm'\n  },\n  relativeTime: {\n    future: 'za %s',\n    past: 'prije %s',\n    s: 'sekunda',\n    m: 'minuta',\n    mm: '%d minuta',\n    h: 'sat',\n    hh: '%d sati',\n    d: 'dan',\n    dd: '%d dana',\n    M: 'mjesec',\n    MM: '%d mjeseci',\n    y: 'godina',\n    yy: '%d godine'\n  },\n  ordinal: function ordinal(n) {\n    return n + \".\";\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Haitian Creole (Haiti) [ht]\nimport dayjs from '../index';\nvar locale = {\n  name: 'ht',\n  weekdays: 'dimanch_lendi_madi_mèkredi_jedi_vandredi_samdi'.split('_'),\n  months: 'janvye_fevriye_mas_avril_me_jen_jiyè_out_septanm_oktòb_novanm_desanm'.split('_'),\n  weekdaysShort: 'dim._len._mad._mèk._jed._van._sam.'.split('_'),\n  monthsShort: 'jan._fev._mas_avr._me_jen_jiyè._out_sept._okt._nov._des.'.split('_'),\n  weekdaysMin: 'di_le_ma_mè_je_va_sa'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'nan %s',\n    past: 'sa gen %s',\n    s: 'kèk segond',\n    m: 'yon minit',\n    mm: '%d minit',\n    h: 'inèdtan',\n    hh: '%d zè',\n    d: 'yon jou',\n    dd: '%d jou',\n    M: 'yon mwa',\n    MM: '%d mwa',\n    y: 'yon ane',\n    yy: '%d ane'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Hungarian [hu]\nimport dayjs from '../index';\nvar locale = {\n  name: 'hu',\n  weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n  weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n  weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n  months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),\n  monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),\n  ordinal: function ordinal(n) {\n    return n + \".\";\n  },\n  weekStart: 1,\n  relativeTime: {\n    future: '%s múlva',\n    past: '%s',\n    s: function s(_, _s, ___, isFuture) {\n      return \"n\\xE9h\\xE1ny m\\xE1sodperc\" + (isFuture || _s ? '' : 'e');\n    },\n    m: function m(_, s, ___, isFuture) {\n      return \"egy perc\" + (isFuture || s ? '' : 'e');\n    },\n    mm: function mm(n, s, ___, isFuture) {\n      return n + \" perc\" + (isFuture || s ? '' : 'e');\n    },\n    h: function h(_, s, ___, isFuture) {\n      return \"egy \" + (isFuture || s ? 'óra' : 'órája');\n    },\n    hh: function hh(n, s, ___, isFuture) {\n      return n + \" \" + (isFuture || s ? 'óra' : 'órája');\n    },\n    d: function d(_, s, ___, isFuture) {\n      return \"egy \" + (isFuture || s ? 'nap' : 'napja');\n    },\n    dd: function dd(n, s, ___, isFuture) {\n      return n + \" \" + (isFuture || s ? 'nap' : 'napja');\n    },\n    M: function M(_, s, ___, isFuture) {\n      return \"egy \" + (isFuture || s ? 'hónap' : 'hónapja');\n    },\n    MM: function MM(n, s, ___, isFuture) {\n      return n + \" \" + (isFuture || s ? 'hónap' : 'hónapja');\n    },\n    y: function y(_, s, ___, isFuture) {\n      return \"egy \" + (isFuture || s ? 'év' : 'éve');\n    },\n    yy: function yy(n, s, ___, isFuture) {\n      return n + \" \" + (isFuture || s ? 'év' : 'éve');\n    }\n  },\n  formats: {\n    LT: 'H:mm',\n    LTS: 'H:mm:ss',\n    L: 'YYYY.MM.DD.',\n    LL: 'YYYY. MMMM D.',\n    LLL: 'YYYY. MMMM D. H:mm',\n    LLLL: 'YYYY. MMMM D., dddd H:mm'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Armenian [hy-am]\nimport dayjs from '../index';\nvar locale = {\n  name: 'hy-am',\n  weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),\n  months: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n  monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n  weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D MMMM YYYY թ.',\n    LLL: 'D MMMM YYYY թ., HH:mm',\n    LLLL: 'dddd, D MMMM YYYY թ., HH:mm'\n  },\n  relativeTime: {\n    future: '%s հետո',\n    past: '%s առաջ',\n    s: 'մի քանի վայրկյան',\n    m: 'րոպե',\n    mm: '%d րոպե',\n    h: 'ժամ',\n    hh: '%d ժամ',\n    d: 'օր',\n    dd: '%d օր',\n    M: 'ամիս',\n    MM: '%d ամիս',\n    y: 'տարի',\n    yy: '%d տարի'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Indonesian [id]\nimport dayjs from '../index';\nvar locale = {\n  name: 'id',\n  weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n  months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),\n  weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n  monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n  weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n  weekStart: 1,\n  formats: {\n    LT: 'HH.mm',\n    LTS: 'HH.mm.ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY [pukul] HH.mm',\n    LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n  },\n  relativeTime: {\n    future: 'dalam %s',\n    past: '%s yang lalu',\n    s: 'beberapa detik',\n    m: 'semenit',\n    mm: '%d menit',\n    h: 'sejam',\n    hh: '%d jam',\n    d: 'sehari',\n    dd: '%d hari',\n    M: 'sebulan',\n    MM: '%d bulan',\n    y: 'setahun',\n    yy: '%d tahun'\n  },\n  ordinal: function ordinal(n) {\n    return n + \".\";\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Icelandic [is]\nimport dayjs from '../index';\nvar texts = {\n  s: ['nokkrar sekúndur', 'nokkrar sekúndur', 'nokkrum sekúndum'],\n  m: ['mínúta', 'mínútu', 'mínútu'],\n  mm: ['mínútur', 'mínútur', 'mínútum'],\n  h: ['klukkustund', 'klukkustund', 'klukkustund'],\n  hh: ['klukkustundir', 'klukkustundir', 'klukkustundum'],\n  d: ['dagur', 'dag', 'degi'],\n  dd: ['dagar', 'daga', 'dögum'],\n  M: ['mánuður', 'mánuð', 'mánuði'],\n  MM: ['mánuðir', 'mánuði', 'mánuðum'],\n  y: ['ár', 'ár', 'ári'],\n  yy: ['ár', 'ár', 'árum']\n};\n\nfunction resolveTemplate(key, number, isFuture, withoutSuffix) {\n  var suffixIndex = isFuture ? 1 : 2;\n  var index = withoutSuffix ? 0 : suffixIndex;\n  var keyShouldBeSingular = key.length === 2 && number % 10 === 1;\n  var correctedKey = keyShouldBeSingular ? key[0] : key;\n  var unitText = texts[correctedKey];\n  var text = unitText[index];\n  return key.length === 1 ? text : \"%d \" + text;\n}\n\nfunction relativeTimeFormatter(number, withoutSuffix, key, isFuture) {\n  var template = resolveTemplate(key, number, isFuture, withoutSuffix);\n  return template.replace('%d', number);\n}\n\nvar locale = {\n  name: 'is',\n  weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),\n  months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n  monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n  weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'H:mm',\n    LTS: 'H:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D. MMMM YYYY',\n    LLL: 'D. MMMM YYYY [kl.] H:mm',\n    LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm'\n  },\n  relativeTime: {\n    future: 'eftir %s',\n    past: 'fyrir %s síðan',\n    s: relativeTimeFormatter,\n    m: relativeTimeFormatter,\n    mm: relativeTimeFormatter,\n    h: relativeTimeFormatter,\n    hh: relativeTimeFormatter,\n    d: relativeTimeFormatter,\n    dd: relativeTimeFormatter,\n    M: relativeTimeFormatter,\n    MM: relativeTimeFormatter,\n    y: relativeTimeFormatter,\n    yy: relativeTimeFormatter\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Italian (Switzerland) [it-ch]\nimport dayjs from '../index';\nvar locale = {\n  name: 'it-ch',\n  weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n  months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n  monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n  weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'tra %s',\n    past: '%s fa',\n    s: 'alcuni secondi',\n    m: 'un minuto',\n    mm: '%d minuti',\n    h: 'un\\'ora',\n    hh: '%d ore',\n    d: 'un giorno',\n    dd: '%d giorni',\n    M: 'un mese',\n    MM: '%d mesi',\n    y: 'un anno',\n    yy: '%d anni'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Italian [it]\nimport dayjs from '../index';\nvar locale = {\n  name: 'it',\n  weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n  weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n  weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n  months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n  weekStart: 1,\n  monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'tra %s',\n    past: '%s fa',\n    s: 'qualche secondo',\n    m: 'un minuto',\n    mm: '%d minuti',\n    h: 'un\\' ora',\n    hh: '%d ore',\n    d: 'un giorno',\n    dd: '%d giorni',\n    M: 'un mese',\n    MM: '%d mesi',\n    y: 'un anno',\n    yy: '%d anni'\n  },\n  ordinal: function ordinal(n) {\n    return n + \"\\xBA\";\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Japanese [ja]\nimport dayjs from '../index';\nvar locale = {\n  name: 'ja',\n  weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n  weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n  weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n  months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n  monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n  ordinal: function ordinal(n) {\n    return n + \"\\u65E5\";\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'YYYY/MM/DD',\n    LL: 'YYYY年M月D日',\n    LLL: 'YYYY年M月D日 HH:mm',\n    LLLL: 'YYYY年M月D日 dddd HH:mm',\n    l: 'YYYY/MM/DD',\n    ll: 'YYYY年M月D日',\n    lll: 'YYYY年M月D日 HH:mm',\n    llll: 'YYYY年M月D日(ddd) HH:mm'\n  },\n  meridiem: function meridiem(hour) {\n    return hour < 12 ? '午前' : '午後';\n  },\n  relativeTime: {\n    future: '%s後',\n    past: '%s前',\n    s: '数秒',\n    m: '1分',\n    mm: '%d分',\n    h: '1時間',\n    hh: '%d時間',\n    d: '1日',\n    dd: '%d日',\n    M: '1ヶ月',\n    MM: '%dヶ月',\n    y: '1年',\n    yy: '%d年'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Javanese [jv]\nimport dayjs from '../index';\nvar locale = {\n  name: 'jv',\n  weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n  months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n  monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n  weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH.mm',\n    LTS: 'HH.mm.ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY [pukul] HH.mm',\n    LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n  },\n  relativeTime: {\n    future: 'wonten ing %s',\n    past: '%s ingkang kepengker',\n    s: 'sawetawis detik',\n    m: 'setunggal menit',\n    mm: '%d menit',\n    h: 'setunggal jam',\n    hh: '%d jam',\n    d: 'sedinten',\n    dd: '%d dinten',\n    M: 'sewulan',\n    MM: '%d wulan',\n    y: 'setaun',\n    yy: '%d taun'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Georgian [ka]\nimport dayjs from '../index';\nvar locale = {\n  name: 'ka',\n  weekdays: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),\n  weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n  weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n  months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),\n  monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n  weekStart: 1,\n  formats: {\n    LT: 'h:mm A',\n    LTS: 'h:mm:ss A',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY h:mm A',\n    LLLL: 'dddd, D MMMM YYYY h:mm A'\n  },\n  relativeTime: {\n    future: '%s შემდეგ',\n    past: '%s წინ',\n    s: 'წამი',\n    m: 'წუთი',\n    mm: '%d წუთი',\n    h: 'საათი',\n    hh: '%d საათის',\n    d: 'დღეს',\n    dd: '%d დღის განმავლობაში',\n    M: 'თვის',\n    MM: '%d თვის',\n    y: 'წელი',\n    yy: '%d წლის'\n  },\n  ordinal: function ordinal(n) {\n    return n;\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Kazakh [kk]\nimport dayjs from '../index';\nvar locale = {\n  name: 'kk',\n  weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),\n  weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n  weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n  months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),\n  monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n  weekStart: 1,\n  relativeTime: {\n    future: '%s ішінде',\n    past: '%s бұрын',\n    s: 'бірнеше секунд',\n    m: 'бір минут',\n    mm: '%d минут',\n    h: 'бір сағат',\n    hh: '%d сағат',\n    d: 'бір күн',\n    dd: '%d күн',\n    M: 'бір ай',\n    MM: '%d ай',\n    y: 'бір жыл',\n    yy: '%d жыл'\n  },\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Cambodian [km]\nimport dayjs from '../index';\nvar locale = {\n  name: 'km',\n  weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n  months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n  monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),\n  weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: '%sទៀត',\n    past: '%sមុន',\n    s: 'ប៉ុន្មានវិនាទី',\n    m: 'មួយនាទី',\n    mm: '%d នាទី',\n    h: 'មួយម៉ោង',\n    hh: '%d ម៉ោង',\n    d: 'មួយថ្ងៃ',\n    dd: '%d ថ្ងៃ',\n    M: 'មួយខែ',\n    MM: '%d ខែ',\n    y: 'មួយឆ្នាំ',\n    yy: '%d ឆ្នាំ'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Kannada [kn]\nimport dayjs from '../index';\nvar locale = {\n  name: 'kn',\n  weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'),\n  months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'),\n  weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n  monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split('_'),\n  weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'A h:mm',\n    LTS: 'A h:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY, A h:mm',\n    LLLL: 'dddd, D MMMM YYYY, A h:mm'\n  },\n  relativeTime: {\n    future: '%s ನಂತರ',\n    past: '%s ಹಿಂದೆ',\n    s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n    m: 'ಒಂದು ನಿಮಿಷ',\n    mm: '%d ನಿಮಿಷ',\n    h: 'ಒಂದು ಗಂಟೆ',\n    hh: '%d ಗಂಟೆ',\n    d: 'ಒಂದು ದಿನ',\n    dd: '%d ದಿನ',\n    M: 'ಒಂದು ತಿಂಗಳು',\n    MM: '%d ತಿಂಗಳು',\n    y: 'ಒಂದು ವರ್ಷ',\n    yy: '%d ವರ್ಷ'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Korean [ko]\nimport dayjs from '../index';\nvar locale = {\n  name: 'ko',\n  weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n  weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n  weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n  months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n  monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n  ordinal: function ordinal(n) {\n    return n + \"\\uC77C\";\n  },\n  formats: {\n    LT: 'A h:mm',\n    LTS: 'A h:mm:ss',\n    L: 'YYYY.MM.DD.',\n    LL: 'YYYY년 MMMM D일',\n    LLL: 'YYYY년 MMMM D일 A h:mm',\n    LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n    l: 'YYYY.MM.DD.',\n    ll: 'YYYY년 MMMM D일',\n    lll: 'YYYY년 MMMM D일 A h:mm',\n    llll: 'YYYY년 MMMM D일 dddd A h:mm'\n  },\n  meridiem: function meridiem(hour) {\n    return hour < 12 ? '오전' : '오후';\n  },\n  relativeTime: {\n    future: '%s 후',\n    past: '%s 전',\n    s: '몇 초',\n    m: '1분',\n    mm: '%d분',\n    h: '한 시간',\n    hh: '%d시간',\n    d: '하루',\n    dd: '%d일',\n    M: '한 달',\n    MM: '%d달',\n    y: '일 년',\n    yy: '%d년'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Kurdish [ku]\nimport dayjs from '../index';\nexport var englishToArabicNumbersMap = {\n  1: '١',\n  2: '٢',\n  3: '٣',\n  4: '٤',\n  5: '٥',\n  6: '٦',\n  7: '٧',\n  8: '٨',\n  9: '٩',\n  0: '٠'\n};\nvar arabicToEnglishNumbersMap = {\n  '١': '1',\n  '٢': '2',\n  '٣': '3',\n  '٤': '4',\n  '٥': '5',\n  '٦': '6',\n  '٧': '7',\n  '٨': '8',\n  '٩': '9',\n  '٠': '0'\n};\nvar months = ['کانوونی دووەم', 'شوبات', 'ئادار', 'نیسان', 'ئایار', 'حوزەیران', 'تەممووز', 'ئاب', 'ئەیلوول', 'تشرینی یەکەم', 'تشرینی دووەم', 'کانوونی یەکەم'];\nvar locale = {\n  name: 'ku',\n  months: months,\n  monthsShort: months,\n  weekdays: 'یەکشەممە_دووشەممە_سێشەممە_چوارشەممە_پێنجشەممە_هەینی_شەممە'.split('_'),\n  weekdaysShort: 'یەکشەم_دووشەم_سێشەم_چوارشەم_پێنجشەم_هەینی_شەممە'.split('_'),\n  weekStart: 6,\n  weekdaysMin: 'ی_د_س_چ_پ_هـ_ش'.split('_'),\n  preparse: function preparse(string) {\n    return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n      return arabicToEnglishNumbersMap[match];\n    }).replace(/،/g, ',');\n  },\n  postformat: function postformat(string) {\n    return string.replace(/\\d/g, function (match) {\n      return englishToArabicNumbersMap[match];\n    }).replace(/,/g, '،');\n  },\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  },\n  meridiem: function meridiem(hour) {\n    return hour < 12 ? 'پ.ن' : 'د.ن';\n  },\n  relativeTime: {\n    future: 'لە %s',\n    past: 'لەمەوپێش %s',\n    s: 'چەند چرکەیەک',\n    m: 'یەک خولەک',\n    mm: '%d خولەک',\n    h: 'یەک کاتژمێر',\n    hh: '%d کاتژمێر',\n    d: 'یەک ڕۆژ',\n    dd: '%d ڕۆژ',\n    M: 'یەک مانگ',\n    MM: '%d مانگ',\n    y: 'یەک ساڵ',\n    yy: '%d ساڵ'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Kyrgyz [ky]\nimport dayjs from '../index';\nvar locale = {\n  name: 'ky',\n  weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),\n  months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n  monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),\n  weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: '%s ичинде',\n    past: '%s мурун',\n    s: 'бирнече секунд',\n    m: 'бир мүнөт',\n    mm: '%d мүнөт',\n    h: 'бир саат',\n    hh: '%d саат',\n    d: 'бир күн',\n    dd: '%d күн',\n    M: 'бир ай',\n    MM: '%d ай',\n    y: 'бир жыл',\n    yy: '%d жыл'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Luxembourgish [lb]\nimport dayjs from '../index';\nvar locale = {\n  name: 'lb',\n  weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),\n  months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n  monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n  weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'H:mm [Auer]',\n    LTS: 'H:mm:ss [Auer]',\n    L: 'DD.MM.YYYY',\n    LL: 'D. MMMM YYYY',\n    LLL: 'D. MMMM YYYY H:mm [Auer]',\n    LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Lao [lo]\nimport dayjs from '../index';\nvar locale = {\n  name: 'lo',\n  weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n  months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n  weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n  monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n  weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'ວັນdddd D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'ອີກ %s',\n    past: '%sຜ່ານມາ',\n    s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n    m: '1 ນາທີ',\n    mm: '%d ນາທີ',\n    h: '1 ຊົ່ວໂມງ',\n    hh: '%d ຊົ່ວໂມງ',\n    d: '1 ມື້',\n    dd: '%d ມື້',\n    M: '1 ເດືອນ',\n    MM: '%d ເດືອນ',\n    y: '1 ປີ',\n    yy: '%d ປີ'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Lithuanian [lt]\nimport dayjs from '../index';\nvar monthFormat = 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_');\nvar monthStandalone = 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'); // eslint-disable-next-line no-useless-escape\n\nvar MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/;\n\nvar months = function months(dayjsInstance, format) {\n  if (MONTHS_IN_FORMAT.test(format)) {\n    return monthFormat[dayjsInstance.month()];\n  }\n\n  return monthStandalone[dayjsInstance.month()];\n};\n\nmonths.s = monthStandalone;\nmonths.f = monthFormat;\nvar locale = {\n  name: 'lt',\n  weekdays: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),\n  weekdaysShort: 'sek_pir_ant_tre_ket_pen_šeš'.split('_'),\n  weekdaysMin: 's_p_a_t_k_pn_š'.split('_'),\n  months: months,\n  monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n  ordinal: function ordinal(n) {\n    return n + \".\";\n  },\n  weekStart: 1,\n  relativeTime: {\n    future: 'už %s',\n    past: 'prieš %s',\n    s: 'kelias sekundes',\n    m: 'minutę',\n    mm: '%d minutes',\n    h: 'valandą',\n    hh: '%d valandas',\n    d: 'dieną',\n    dd: '%d dienas',\n    M: 'mėnesį',\n    MM: '%d mėnesius',\n    y: 'metus',\n    yy: '%d metus'\n  },\n  format: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'YYYY-MM-DD',\n    LL: 'YYYY [m.] MMMM D [d.]',\n    LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n    LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n    l: 'YYYY-MM-DD',\n    ll: 'YYYY [m.] MMMM D [d.]',\n    lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n    llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'YYYY-MM-DD',\n    LL: 'YYYY [m.] MMMM D [d.]',\n    LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n    LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n    l: 'YYYY-MM-DD',\n    ll: 'YYYY [m.] MMMM D [d.]',\n    lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n    llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Latvian [lv]\nimport dayjs from '../index';\nvar locale = {\n  name: 'lv',\n  weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),\n  months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n  monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n  weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD.MM.YYYY.',\n    LL: 'YYYY. [gada] D. MMMM',\n    LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n    LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm'\n  },\n  relativeTime: {\n    future: 'pēc %s',\n    past: 'pirms %s',\n    s: 'dažām sekundēm',\n    m: 'minūtes',\n    mm: '%d minūtēm',\n    h: 'stundas',\n    hh: '%d stundām',\n    d: 'dienas',\n    dd: '%d dienām',\n    M: 'mēneša',\n    MM: '%d mēnešiem',\n    y: 'gada',\n    yy: '%d gadiem'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Montenegrin [me]\nimport dayjs from '../index';\nvar locale = {\n  name: 'me',\n  weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n  months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n  monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n  weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'H:mm',\n    LTS: 'H:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D. MMMM YYYY',\n    LLL: 'D. MMMM YYYY H:mm',\n    LLLL: 'dddd, D. MMMM YYYY H:mm'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Maori [mi]\nimport dayjs from '../index';\nvar locale = {\n  name: 'mi',\n  weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n  months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n  monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),\n  weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY [i] HH:mm',\n    LLLL: 'dddd, D MMMM YYYY [i] HH:mm'\n  },\n  relativeTime: {\n    future: 'i roto i %s',\n    past: '%s i mua',\n    s: 'te hēkona ruarua',\n    m: 'he meneti',\n    mm: '%d meneti',\n    h: 'te haora',\n    hh: '%d haora',\n    d: 'he ra',\n    dd: '%d ra',\n    M: 'he marama',\n    MM: '%d marama',\n    y: 'he tau',\n    yy: '%d tau'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Macedonian [mk]\nimport dayjs from '../index';\nvar locale = {\n  name: 'mk',\n  weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),\n  months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n  monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n  weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'H:mm',\n    LTS: 'H:mm:ss',\n    L: 'D.MM.YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY H:mm',\n    LLLL: 'dddd, D MMMM YYYY H:mm'\n  },\n  relativeTime: {\n    future: 'после %s',\n    past: 'пред %s',\n    s: 'неколку секунди',\n    m: 'минута',\n    mm: '%d минути',\n    h: 'час',\n    hh: '%d часа',\n    d: 'ден',\n    dd: '%d дена',\n    M: 'месец',\n    MM: '%d месеци',\n    y: 'година',\n    yy: '%d години'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Malayalam [ml]\nimport dayjs from '../index';\nvar locale = {\n  name: 'ml',\n  weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),\n  months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),\n  weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n  monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),\n  weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'A h:mm -നു',\n    LTS: 'A h:mm:ss -നു',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY, A h:mm -നു',\n    LLLL: 'dddd, D MMMM YYYY, A h:mm -നു'\n  },\n  relativeTime: {\n    future: '%s കഴിഞ്ഞ്',\n    past: '%s മുൻപ്',\n    s: 'അൽപ നിമിഷങ്ങൾ',\n    m: 'ഒരു മിനിറ്റ്',\n    mm: '%d മിനിറ്റ്',\n    h: 'ഒരു മണിക്കൂർ',\n    hh: '%d മണിക്കൂർ',\n    d: 'ഒരു ദിവസം',\n    dd: '%d ദിവസം',\n    M: 'ഒരു മാസം',\n    MM: '%d മാസം',\n    y: 'ഒരു വർഷം',\n    yy: '%d വർഷം'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Mongolian [mn]\nimport dayjs from '../index';\nvar locale = {\n  name: 'mn',\n  weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n  months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'),\n  weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n  monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'),\n  weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'YYYY-MM-DD',\n    LL: 'YYYY оны MMMMын D',\n    LLL: 'YYYY оны MMMMын D HH:mm',\n    LLLL: 'dddd, YYYY оны MMMMын D HH:mm'\n  },\n  relativeTime: {\n    future: '%s',\n    past: '%s',\n    s: 'саяхан',\n    m: 'м',\n    mm: '%dм',\n    h: '1ц',\n    hh: '%dц',\n    d: '1ө',\n    dd: '%dө',\n    M: '1с',\n    MM: '%dс',\n    y: '1ж',\n    yy: '%dж'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Marathi [mr]\nimport dayjs from '../index';\nvar locale = {\n  name: 'mr',\n  weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n  months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),\n  weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n  monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),\n  weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'A h:mm वाजता',\n    LTS: 'A h:mm:ss वाजता',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY, A h:mm वाजता',\n    LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Malay [ms-my]\nimport dayjs from '../index';\nvar locale = {\n  name: 'ms-my',\n  weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n  months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n  monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n  weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH.mm',\n    LTS: 'HH.mm.ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY [pukul] HH.mm',\n    LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n  },\n  relativeTime: {\n    future: 'dalam %s',\n    past: '%s yang lepas',\n    s: 'beberapa saat',\n    m: 'seminit',\n    mm: '%d minit',\n    h: 'sejam',\n    hh: '%d jam',\n    d: 'sehari',\n    dd: '%d hari',\n    M: 'sebulan',\n    MM: '%d bulan',\n    y: 'setahun',\n    yy: '%d tahun'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Malay [ms]\nimport dayjs from '../index';\nvar locale = {\n  name: 'ms',\n  weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n  weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n  weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n  months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n  monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n  weekStart: 1,\n  formats: {\n    LT: 'HH.mm',\n    LTS: 'HH.mm.ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH.mm',\n    LLLL: 'dddd, D MMMM YYYY HH.mm'\n  },\n  relativeTime: {\n    future: 'dalam %s',\n    past: '%s yang lepas',\n    s: 'beberapa saat',\n    m: 'seminit',\n    mm: '%d minit',\n    h: 'sejam',\n    hh: '%d jam',\n    d: 'sehari',\n    dd: '%d hari',\n    M: 'sebulan',\n    MM: '%d bulan',\n    y: 'setahun',\n    yy: '%d tahun'\n  },\n  ordinal: function ordinal(n) {\n    return n + \".\";\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Maltese (Malta) [mt]\nimport dayjs from '../index';\nvar locale = {\n  name: 'mt',\n  weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split('_'),\n  months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n  monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n  weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'f’ %s',\n    past: '%s ilu',\n    s: 'ftit sekondi',\n    m: 'minuta',\n    mm: '%d minuti',\n    h: 'siegħa',\n    hh: '%d siegħat',\n    d: 'ġurnata',\n    dd: '%d ġranet',\n    M: 'xahar',\n    MM: '%d xhur',\n    y: 'sena',\n    yy: '%d sni'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Burmese [my]\nimport dayjs from '../index';\nvar locale = {\n  name: 'my',\n  weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),\n  months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n  monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n  weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'လာမည့် %s မှာ',\n    past: 'လွန်ခဲ့သော %s က',\n    s: 'စက္ကန်.အနည်းငယ်',\n    m: 'တစ်မိနစ်',\n    mm: '%d မိနစ်',\n    h: 'တစ်နာရီ',\n    hh: '%d နာရီ',\n    d: 'တစ်ရက်',\n    dd: '%d ရက်',\n    M: 'တစ်လ',\n    MM: '%d လ',\n    y: 'တစ်နှစ်',\n    yy: '%d နှစ်'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Norwegian Bokmål [nb]\nimport dayjs from '../index';\nvar locale = {\n  name: 'nb',\n  weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n  weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n  weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n  months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n  monthsShort: 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n  ordinal: function ordinal(n) {\n    return n + \".\";\n  },\n  weekStart: 1,\n  yearStart: 4,\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D. MMMM YYYY',\n    LLL: 'D. MMMM YYYY [kl.] HH:mm',\n    LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm'\n  },\n  relativeTime: {\n    future: 'om %s',\n    past: '%s siden',\n    s: 'noen sekunder',\n    m: 'ett minutt',\n    mm: '%d minutter',\n    h: 'en time',\n    hh: '%d timer',\n    d: 'en dag',\n    dd: '%d dager',\n    M: 'en måned',\n    MM: '%d måneder',\n    y: 'ett år',\n    yy: '%d år'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Nepalese [ne]\nimport dayjs from '../index';\nvar locale = {\n  name: 'ne',\n  weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),\n  weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n  weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n  months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मे_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),\n  monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),\n  relativeTime: {\n    future: '%s पछि',\n    past: '%s अघि',\n    s: 'सेकेन्ड',\n    m: 'एक मिनेट',\n    mm: '%d मिनेट',\n    h: 'घन्टा',\n    hh: '%d घन्टा',\n    d: 'एक दिन',\n    dd: '%d दिन',\n    M: 'एक महिना',\n    MM: '%d महिना',\n    y: 'एक वर्ष',\n    yy: '%d वर्ष'\n  },\n  ordinal: function ordinal(n) {\n    return (\"\" + n).replace(/\\d/g, function (i) {\n      return '०१२३४५६७८९'[i];\n    });\n  },\n  formats: {\n    LT: 'Aको h:mm बजे',\n    LTS: 'Aको h:mm:ss बजे',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY, Aको h:mm बजे',\n    LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Dutch (Belgium) [nl-be]\nimport dayjs from '../index';\nvar locale = {\n  name: 'nl-be',\n  weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n  months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n  monthsShort: 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n  weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'over %s',\n    past: '%s geleden',\n    s: 'een paar seconden',\n    m: 'één minuut',\n    mm: '%d minuten',\n    h: 'één uur',\n    hh: '%d uur',\n    d: 'één dag',\n    dd: '%d dagen',\n    M: 'één maand',\n    MM: '%d maanden',\n    y: 'één jaar',\n    yy: '%d jaar'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Dutch [nl]\nimport dayjs from '../index';\nvar locale = {\n  name: 'nl',\n  weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n  weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n  weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n  months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n  monthsShort: 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n  ordinal: function ordinal(n) {\n    return \"[\" + n + (n === 1 || n === 8 || n >= 20 ? 'ste' : 'de') + \"]\";\n  },\n  weekStart: 1,\n  yearStart: 4,\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD-MM-YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'over %s',\n    past: '%s geleden',\n    s: 'een paar seconden',\n    m: 'een minuut',\n    mm: '%d minuten',\n    h: 'een uur',\n    hh: '%d uur',\n    d: 'een dag',\n    dd: '%d dagen',\n    M: 'een maand',\n    MM: '%d maanden',\n    y: 'een jaar',\n    yy: '%d jaar'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Nynorsk [nn]\nimport dayjs from '../index';\nvar locale = {\n  name: 'nn',\n  weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n  weekdaysShort: 'sun_mån_tys_ons_tor_fre_lau'.split('_'),\n  weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n  months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n  monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n  ordinal: function ordinal(n) {\n    return n + \".\";\n  },\n  weekStart: 1,\n  relativeTime: {\n    future: 'om %s',\n    past: 'for %s sidan',\n    s: 'nokre sekund',\n    m: 'eitt minutt',\n    mm: '%d minutt',\n    h: 'ein time',\n    hh: '%d timar',\n    d: 'ein dag',\n    dd: '%d dagar',\n    M: 'ein månad',\n    MM: '%d månadar',\n    y: 'eitt år',\n    yy: '%d år'\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D. MMMM YYYY',\n    LLL: 'D. MMMM YYYY [kl.] H:mm',\n    LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Occitan, lengadocian dialecte [oc-lnc]\nimport dayjs from '../index';\nvar locale = {\n  name: 'oc-lnc',\n  weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split('_'),\n  weekdaysShort: 'Dg_Dl_Dm_Dc_Dj_Dv_Ds'.split('_'),\n  weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n  months: 'genièr_febrièr_març_abrial_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split('_'),\n  monthsShort: 'gen_feb_març_abr_mai_junh_julh_ago_set_oct_nov_dec'.split('_'),\n  weekStart: 1,\n  formats: {\n    LT: 'H:mm',\n    LTS: 'H:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM [de] YYYY',\n    LLL: 'D MMMM [de] YYYY [a] H:mm',\n    LLLL: 'dddd D MMMM [de] YYYY [a] H:mm'\n  },\n  relativeTime: {\n    future: 'd\\'aquí %s',\n    past: 'fa %s',\n    s: 'unas segondas',\n    m: 'una minuta',\n    mm: '%d minutas',\n    h: 'una ora',\n    hh: '%d oras',\n    d: 'un jorn',\n    dd: '%d jorns',\n    M: 'un mes',\n    MM: '%d meses',\n    y: 'un an',\n    yy: '%d ans'\n  },\n  ordinal: function ordinal(n) {\n    return n + \"\\xBA\";\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Punjabi (India) [pa-in]\nimport dayjs from '../index';\nvar locale = {\n  name: 'pa-in',\n  weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),\n  months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n  weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n  monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n  weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'A h:mm ਵਜੇ',\n    LTS: 'A h:mm:ss ਵਜੇ',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n    LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'\n  },\n  relativeTime: {\n    future: '%s ਵਿੱਚ',\n    past: '%s ਪਿਛਲੇ',\n    s: 'ਕੁਝ ਸਕਿੰਟ',\n    m: 'ਇਕ ਮਿੰਟ',\n    mm: '%d ਮਿੰਟ',\n    h: 'ਇੱਕ ਘੰਟਾ',\n    hh: '%d ਘੰਟੇ',\n    d: 'ਇੱਕ ਦਿਨ',\n    dd: '%d ਦਿਨ',\n    M: 'ਇੱਕ ਮਹੀਨਾ',\n    MM: '%d ਮਹੀਨੇ',\n    y: 'ਇੱਕ ਸਾਲ',\n    yy: '%d ਸਾਲ'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Polish [pl]\nimport dayjs from '../index';\n\nfunction plural(n) {\n  return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1; // eslint-disable-line\n}\n/* eslint-disable */\n\n\nfunction translate(number, withoutSuffix, key) {\n  var result = number + \" \";\n\n  switch (key) {\n    case 'm':\n      return withoutSuffix ? 'minuta' : 'minutę';\n\n    case 'mm':\n      return result + (plural(number) ? 'minuty' : 'minut');\n\n    case 'h':\n      return withoutSuffix ? 'godzina' : 'godzinę';\n\n    case 'hh':\n      return result + (plural(number) ? 'godziny' : 'godzin');\n\n    case 'MM':\n      return result + (plural(number) ? 'miesiące' : 'miesięcy');\n\n    case 'yy':\n      return result + (plural(number) ? 'lata' : 'lat');\n  }\n}\n/* eslint-enable */\n\n\nvar monthFormat = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');\nvar monthStandalone = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_');\nvar MONTHS_IN_FORMAT = /D MMMM/;\n\nvar months = function months(dayjsInstance, format) {\n  if (MONTHS_IN_FORMAT.test(format)) {\n    return monthFormat[dayjsInstance.month()];\n  }\n\n  return monthStandalone[dayjsInstance.month()];\n};\n\nmonths.s = monthStandalone;\nmonths.f = monthFormat;\nvar locale = {\n  name: 'pl',\n  weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n  weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n  weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n  months: months,\n  monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n  ordinal: function ordinal(n) {\n    return n + \".\";\n  },\n  weekStart: 1,\n  yearStart: 4,\n  relativeTime: {\n    future: 'za %s',\n    past: '%s temu',\n    s: 'kilka sekund',\n    m: translate,\n    mm: translate,\n    h: translate,\n    hh: translate,\n    d: '1 dzień',\n    dd: '%d dni',\n    M: 'miesiąc',\n    MM: translate,\n    y: 'rok',\n    yy: translate\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Portuguese (Brazil) [pt-br]\nimport dayjs from '../index';\nvar locale = {\n  name: 'pt-br',\n  weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split('_'),\n  weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n  weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n  months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),\n  monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n  ordinal: function ordinal(n) {\n    return n + \"\\xBA\";\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D [de] MMMM [de] YYYY',\n    LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n    LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'\n  },\n  relativeTime: {\n    future: 'em %s',\n    past: 'há %s',\n    s: 'poucos segundos',\n    m: 'um minuto',\n    mm: '%d minutos',\n    h: 'uma hora',\n    hh: '%d horas',\n    d: 'um dia',\n    dd: '%d dias',\n    M: 'um mês',\n    MM: '%d meses',\n    y: 'um ano',\n    yy: '%d anos'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Portuguese [pt]\nimport dayjs from '../index';\nvar locale = {\n  name: 'pt',\n  weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split('_'),\n  weekdaysShort: 'dom_seg_ter_qua_qui_sex_sab'.split('_'),\n  weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sa'.split('_'),\n  months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),\n  monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n  ordinal: function ordinal(n) {\n    return n + \"\\xBA\";\n  },\n  weekStart: 1,\n  yearStart: 4,\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D [de] MMMM [de] YYYY',\n    LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n    LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'\n  },\n  relativeTime: {\n    future: 'em %s',\n    past: 'há %s',\n    s: 'alguns segundos',\n    m: 'um minuto',\n    mm: '%d minutos',\n    h: 'uma hora',\n    hh: '%d horas',\n    d: 'um dia',\n    dd: '%d dias',\n    M: 'um mês',\n    MM: '%d meses',\n    y: 'um ano',\n    yy: '%d anos'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Kirundi [rn]\nimport dayjs from '../index';\nvar locale = {\n  name: 'rn',\n  weekdays: 'Ku wa Mungu_Ku wa Mbere_Ku wa Kabiri_Ku wa Gatatu_Ku wa Kane_Ku wa Gatanu_Ku wa Gatandatu'.split('_'),\n  weekdaysShort: 'Kngu_Kmbr_Kbri_Ktat_Kkan_Ktan_Kdat'.split('_'),\n  weekdaysMin: 'K7_K1_K2_K3_K4_K5_K6'.split('_'),\n  months: 'Nzero_Ruhuhuma_Ntwarante_Ndamukiza_Rusama_Ruhenshi_Mukakaro_Myandagaro_Nyakanga_Gitugutu_Munyonyo_Kigarama'.split('_'),\n  monthsShort: 'Nzer_Ruhuh_Ntwar_Ndam_Rus_Ruhen_Muk_Myand_Nyak_Git_Muny_Kig'.split('_'),\n  weekStart: 1,\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  relativeTime: {\n    future: 'mu %s',\n    past: '%s',\n    s: 'amasegonda',\n    m: 'Umunota',\n    mm: '%d iminota',\n    h: 'isaha',\n    hh: '%d amasaha',\n    d: 'Umunsi',\n    dd: '%d iminsi',\n    M: 'ukwezi',\n    MM: '%d amezi',\n    y: 'umwaka',\n    yy: '%d imyaka'\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Romanian [ro]\nimport dayjs from '../index';\nvar locale = {\n  name: 'ro',\n  weekdays: 'Duminică_Luni_Marți_Miercuri_Joi_Vineri_Sâmbătă'.split('_'),\n  weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n  weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n  months: 'Ianuarie_Februarie_Martie_Aprilie_Mai_Iunie_Iulie_August_Septembrie_Octombrie_Noiembrie_Decembrie'.split('_'),\n  monthsShort: 'Ian._Febr._Mart._Apr._Mai_Iun._Iul._Aug._Sept._Oct._Nov._Dec.'.split('_'),\n  weekStart: 1,\n  formats: {\n    LT: 'H:mm',\n    LTS: 'H:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY H:mm',\n    LLLL: 'dddd, D MMMM YYYY H:mm'\n  },\n  relativeTime: {\n    future: 'peste %s',\n    past: 'acum %s',\n    s: 'câteva secunde',\n    m: 'un minut',\n    mm: '%d minute',\n    h: 'o oră',\n    hh: '%d ore',\n    d: 'o zi',\n    dd: '%d zile',\n    M: 'o lună',\n    MM: '%d luni',\n    y: 'un an',\n    yy: '%d ani'\n  },\n  ordinal: function ordinal(n) {\n    return n;\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Russian [ru]\nimport dayjs from '../index';\nvar monthFormat = 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_');\nvar monthStandalone = 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_');\nvar monthShortFormat = 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_');\nvar monthShortStandalone = 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_');\nvar MONTHS_IN_FORMAT = /D[oD]?(\\[[^[\\]]*\\]|\\s)+MMMM?/;\n\nfunction plural(word, num) {\n  var forms = word.split('_');\n  return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]; // eslint-disable-line\n}\n\nfunction relativeTimeWithPlural(number, withoutSuffix, key) {\n  var format = {\n    mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n    hh: 'час_часа_часов',\n    dd: 'день_дня_дней',\n    MM: 'месяц_месяца_месяцев',\n    yy: 'год_года_лет'\n  };\n\n  if (key === 'm') {\n    return withoutSuffix ? 'минута' : 'минуту';\n  }\n\n  return number + \" \" + plural(format[key], +number);\n}\n\nvar months = function months(dayjsInstance, format) {\n  if (MONTHS_IN_FORMAT.test(format)) {\n    return monthFormat[dayjsInstance.month()];\n  }\n\n  return monthStandalone[dayjsInstance.month()];\n};\n\nmonths.s = monthStandalone;\nmonths.f = monthFormat;\n\nvar monthsShort = function monthsShort(dayjsInstance, format) {\n  if (MONTHS_IN_FORMAT.test(format)) {\n    return monthShortFormat[dayjsInstance.month()];\n  }\n\n  return monthShortStandalone[dayjsInstance.month()];\n};\n\nmonthsShort.s = monthShortStandalone;\nmonthsShort.f = monthShortFormat;\nvar locale = {\n  name: 'ru',\n  weekdays: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),\n  weekdaysShort: 'вск_пнд_втр_срд_чтв_птн_сбт'.split('_'),\n  weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n  months: months,\n  monthsShort: monthsShort,\n  weekStart: 1,\n  yearStart: 4,\n  formats: {\n    LT: 'H:mm',\n    LTS: 'H:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D MMMM YYYY г.',\n    LLL: 'D MMMM YYYY г., H:mm',\n    LLLL: 'dddd, D MMMM YYYY г., H:mm'\n  },\n  relativeTime: {\n    future: 'через %s',\n    past: '%s назад',\n    s: 'несколько секунд',\n    m: relativeTimeWithPlural,\n    mm: relativeTimeWithPlural,\n    h: 'час',\n    hh: relativeTimeWithPlural,\n    d: 'день',\n    dd: relativeTimeWithPlural,\n    M: 'месяц',\n    MM: relativeTimeWithPlural,\n    y: 'год',\n    yy: relativeTimeWithPlural\n  },\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  meridiem: function meridiem(hour) {\n    if (hour < 4) {\n      return 'ночи';\n    } else if (hour < 12) {\n      return 'утра';\n    } else if (hour < 17) {\n      return 'дня';\n    }\n\n    return 'вечера';\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Kinyarwanda (Rwanda) [rw]\nimport dayjs from '../index';\nvar locale = {\n  name: 'rw',\n  weekdays: 'Ku Cyumweru_Kuwa Mbere_Kuwa Kabiri_Kuwa Gatatu_Kuwa Kane_Kuwa Gatanu_Kuwa Gatandatu'.split('_'),\n  months: 'Mutarama_Gashyantare_Werurwe_Mata_Gicurasi_Kamena_Nyakanga_Kanama_Nzeri_Ukwakira_Ugushyingo_Ukuboza'.split('_'),\n  relativeTime: {\n    future: 'mu %s',\n    past: '%s',\n    s: 'amasegonda',\n    m: 'Umunota',\n    mm: '%d iminota',\n    h: 'isaha',\n    hh: '%d amasaha',\n    d: 'Umunsi',\n    dd: '%d iminsi',\n    M: 'ukwezi',\n    MM: '%d amezi',\n    y: 'umwaka',\n    yy: '%d imyaka'\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  },\n  ordinal: function ordinal(n) {\n    return n;\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Sindhi [sd]\nimport dayjs from '../index';\nvar locale = {\n  name: 'sd',\n  weekdays: 'آچر_سومر_اڱارو_اربع_خميس_جمع_ڇنڇر'.split('_'),\n  months: 'جنوري_فيبروري_مارچ_اپريل_مئي_جون_جولاءِ_آگسٽ_سيپٽمبر_آڪٽوبر_نومبر_ڊسمبر'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'آچر_سومر_اڱارو_اربع_خميس_جمع_ڇنڇر'.split('_'),\n  monthsShort: 'جنوري_فيبروري_مارچ_اپريل_مئي_جون_جولاءِ_آگسٽ_سيپٽمبر_آڪٽوبر_نومبر_ڊسمبر'.split('_'),\n  weekdaysMin: 'آچر_سومر_اڱارو_اربع_خميس_جمع_ڇنڇر'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd، D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: '%s پوء',\n    past: '%s اڳ',\n    s: 'چند سيڪنڊ',\n    m: 'هڪ منٽ',\n    mm: '%d منٽ',\n    h: 'هڪ ڪلاڪ',\n    hh: '%d ڪلاڪ',\n    d: 'هڪ ڏينهن',\n    dd: '%d ڏينهن',\n    M: 'هڪ مهينو',\n    MM: '%d مهينا',\n    y: 'هڪ سال',\n    yy: '%d سال'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Northern Sami [se]\nimport dayjs from '../index';\nvar locale = {\n  name: 'se',\n  weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),\n  months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n  monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n  weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'MMMM D. [b.] YYYY',\n    LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n    LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'\n  },\n  relativeTime: {\n    future: '%s geažes',\n    past: 'maŋit %s',\n    s: 'moadde sekunddat',\n    m: 'okta minuhta',\n    mm: '%d minuhtat',\n    h: 'okta diimmu',\n    hh: '%d diimmut',\n    d: 'okta beaivi',\n    dd: '%d beaivvit',\n    M: 'okta mánnu',\n    MM: '%d mánut',\n    y: 'okta jahki',\n    yy: '%d jagit'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Sinhalese [si]\nimport dayjs from '../index';\nvar locale = {\n  name: 'si',\n  weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),\n  months: 'දුරුතු_නවම්_මැදින්_බක්_වෙසක්_පොසොන්_ඇසළ_නිකිණි_බිනර_වප්_ඉල්_උඳුවප්'.split('_'),\n  weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n  monthsShort: 'දුරු_නව_මැදි_බක්_වෙස_පොසො_ඇස_නිකි_බින_වප්_ඉල්_උඳු'.split('_'),\n  weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'a h:mm',\n    LTS: 'a h:mm:ss',\n    L: 'YYYY/MM/DD',\n    LL: 'YYYY MMMM D',\n    LLL: 'YYYY MMMM D, a h:mm',\n    LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'\n  },\n  relativeTime: {\n    future: '%sකින්',\n    past: '%sකට පෙර',\n    s: 'තත්පර කිහිපය',\n    m: 'විනාඩිය',\n    mm: 'විනාඩි %d',\n    h: 'පැය',\n    hh: 'පැය %d',\n    d: 'දිනය',\n    dd: 'දින %d',\n    M: 'මාසය',\n    MM: 'මාස %d',\n    y: 'වසර',\n    yy: 'වසර %d'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Slovak [sk]\nimport dayjs from '../index';\n\nfunction plural(n) {\n  return n > 1 && n < 5 && ~~(n / 10) !== 1; // eslint-disable-line\n}\n/* eslint-disable */\n\n\nfunction translate(number, withoutSuffix, key, isFuture) {\n  var result = number + \" \";\n\n  switch (key) {\n    case 's':\n      // a few seconds / in a few seconds / a few seconds ago\n      return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n\n    case 'm':\n      // a minute / in a minute / a minute ago\n      return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n\n    case 'mm':\n      // 9 minutes / in 9 minutes / 9 minutes ago\n      if (withoutSuffix || isFuture) {\n        return result + (plural(number) ? 'minúty' : 'minút');\n      }\n\n      return result + \"min\\xFAtami\";\n\n    case 'h':\n      // an hour / in an hour / an hour ago\n      return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n\n    case 'hh':\n      // 9 hours / in 9 hours / 9 hours ago\n      if (withoutSuffix || isFuture) {\n        return result + (plural(number) ? 'hodiny' : 'hodín');\n      }\n\n      return result + \"hodinami\";\n\n    case 'd':\n      // a day / in a day / a day ago\n      return withoutSuffix || isFuture ? 'deň' : 'dňom';\n\n    case 'dd':\n      // 9 days / in 9 days / 9 days ago\n      if (withoutSuffix || isFuture) {\n        return result + (plural(number) ? 'dni' : 'dní');\n      }\n\n      return result + \"d\\u0148ami\";\n\n    case 'M':\n      // a month / in a month / a month ago\n      return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n\n    case 'MM':\n      // 9 months / in 9 months / 9 months ago\n      if (withoutSuffix || isFuture) {\n        return result + (plural(number) ? 'mesiace' : 'mesiacov');\n      }\n\n      return result + \"mesiacmi\";\n\n    case 'y':\n      // a year / in a year / a year ago\n      return withoutSuffix || isFuture ? 'rok' : 'rokom';\n\n    case 'yy':\n      // 9 years / in 9 years / 9 years ago\n      if (withoutSuffix || isFuture) {\n        return result + (plural(number) ? 'roky' : 'rokov');\n      }\n\n      return result + \"rokmi\";\n  }\n}\n/* eslint-enable */\n\n\nvar locale = {\n  name: 'sk',\n  weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n  weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n  weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n  months: 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'),\n  monthsShort: 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'),\n  weekStart: 1,\n  yearStart: 4,\n  ordinal: function ordinal(n) {\n    return n + \".\";\n  },\n  formats: {\n    LT: 'H:mm',\n    LTS: 'H:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D. MMMM YYYY',\n    LLL: 'D. MMMM YYYY H:mm',\n    LLLL: 'dddd D. MMMM YYYY H:mm',\n    l: 'D. M. YYYY'\n  },\n  relativeTime: {\n    future: 'za %s',\n    // Should be `o %s` (change when moment/moment#5408 is fixed)\n    past: 'pred %s',\n    s: translate,\n    m: translate,\n    mm: translate,\n    h: translate,\n    hh: translate,\n    d: translate,\n    dd: translate,\n    M: translate,\n    MM: translate,\n    y: translate,\n    yy: translate\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Slovenian [sl]\nimport dayjs from '../index';\n\nfunction dual(n) {\n  return n % 100 == 2; // eslint-disable-line\n}\n\nfunction threeFour(n) {\n  return n % 100 == 3 || n % 100 == 4; // eslint-disable-line\n}\n/* eslint-disable */\n\n\nfunction translate(number, withoutSuffix, key, isFuture) {\n  var result = number + \" \";\n\n  switch (key) {\n    case 's':\n      // a few seconds / in a few seconds / a few seconds ago\n      return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';\n\n    case 'm':\n      // a minute / in a minute / a minute ago\n      return withoutSuffix ? 'ena minuta' : 'eno minuto';\n\n    case 'mm':\n      // 9 minutes / in 9 minutes / 9 minutes ago\n      if (dual(number)) {\n        return result + (withoutSuffix || isFuture ? 'minuti' : 'minutama');\n      }\n\n      if (threeFour(number)) {\n        return result + (withoutSuffix || isFuture ? 'minute' : 'minutami');\n      }\n\n      return result + (withoutSuffix || isFuture ? 'minut' : 'minutami');\n\n    case 'h':\n      // an hour / in an hour / an hour ago\n      return withoutSuffix ? 'ena ura' : isFuture ? 'eno uro' : 'eno uro';\n\n    case 'hh':\n      // 9 hours / in 9 hours / 9 hours ago\n      if (dual(number)) {\n        return result + (withoutSuffix || isFuture ? 'uri' : 'urama');\n      }\n\n      if (threeFour(number)) {\n        return result + (withoutSuffix || isFuture ? 'ure' : 'urami');\n      }\n\n      return result + (withoutSuffix || isFuture ? 'ur' : 'urami');\n\n    case 'd':\n      // a day / in a day / a day ago\n      return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n\n    case 'dd':\n      // 9 days / in 9 days / 9 days ago\n      if (dual(number)) {\n        return result + (withoutSuffix || isFuture ? 'dneva' : 'dnevoma');\n      }\n\n      return result + (withoutSuffix || isFuture ? 'dni' : 'dnevi');\n\n    case 'M':\n      // a month / in a month / a month ago\n      return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n\n    case 'MM':\n      // 9 months / in 9 months / 9 months ago\n      if (dual(number)) {\n        // 2 minutes / in 2 minutes\n        return result + (withoutSuffix || isFuture ? 'meseca' : 'mesecema');\n      }\n\n      if (threeFour(number)) {\n        return result + (withoutSuffix || isFuture ? 'mesece' : 'meseci');\n      }\n\n      return result + (withoutSuffix || isFuture ? 'mesecev' : 'meseci');\n\n    case 'y':\n      // a year / in a year / a year ago\n      return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n\n    case 'yy':\n      // 9 years / in 9 years / 9 years ago\n      if (dual(number)) {\n        // 2 minutes / in 2 minutes\n        return result + (withoutSuffix || isFuture ? 'leti' : 'letoma');\n      }\n\n      if (threeFour(number)) {\n        return result + (withoutSuffix || isFuture ? 'leta' : 'leti');\n      }\n\n      return result + (withoutSuffix || isFuture ? 'let' : 'leti');\n  }\n}\n/* eslint-enable */\n\n\nvar locale = {\n  name: 'sl',\n  weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n  months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n  monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),\n  weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n  ordinal: function ordinal(n) {\n    return n + \".\";\n  },\n  formats: {\n    LT: 'H:mm',\n    LTS: 'H:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D. MMMM YYYY',\n    LLL: 'D. MMMM YYYY H:mm',\n    LLLL: 'dddd, D. MMMM YYYY H:mm',\n    l: 'D. M. YYYY'\n  },\n  relativeTime: {\n    future: 'čez %s',\n    past: 'pred %s',\n    s: translate,\n    m: translate,\n    mm: translate,\n    h: translate,\n    hh: translate,\n    d: translate,\n    dd: translate,\n    M: translate,\n    MM: translate,\n    y: translate,\n    yy: translate\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Albanian [sq]\nimport dayjs from '../index';\nvar locale = {\n  name: 'sq',\n  weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),\n  months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n  monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n  weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'në %s',\n    past: '%s më parë',\n    s: 'disa sekonda',\n    m: 'një minutë',\n    mm: '%d minuta',\n    h: 'një orë',\n    hh: '%d orë',\n    d: 'një ditë',\n    dd: '%d ditë',\n    M: 'një muaj',\n    MM: '%d muaj',\n    y: 'një vit',\n    yy: '%d vite'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Serbian Cyrillic [sr-cyrl]\nimport dayjs from '../index';\nvar translator = {\n  words: {\n    m: ['један минут', 'једног минута'],\n    mm: ['%d минут', '%d минута', '%d минута'],\n    h: ['један сат', 'једног сата'],\n    hh: ['%d сат', '%d сата', '%d сати'],\n    d: ['један дан', 'једног дана'],\n    dd: ['%d дан', '%d дана', '%d дана'],\n    M: ['један месец', 'једног месеца'],\n    MM: ['%d месец', '%d месеца', '%d месеци'],\n    y: ['једну годину', 'једне године'],\n    yy: ['%d годину', '%d године', '%d година']\n  },\n  correctGrammarCase: function correctGrammarCase(number, wordKey) {\n    if (number % 10 >= 1 && number % 10 <= 4 && (number % 100 < 10 || number % 100 >= 20)) {\n      return number % 10 === 1 ? wordKey[0] : wordKey[1];\n    }\n\n    return wordKey[2];\n  },\n  relativeTimeFormatter: function relativeTimeFormatter(number, withoutSuffix, key, isFuture) {\n    var wordKey = translator.words[key];\n\n    if (key.length === 1) {\n      // Nominativ\n      if (key === 'y' && withoutSuffix) return 'једна година';\n      return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n    }\n\n    var word = translator.correctGrammarCase(number, wordKey); // Nominativ\n\n    if (key === 'yy' && withoutSuffix && word === '%d годину') return number + \" \\u0433\\u043E\\u0434\\u0438\\u043D\\u0430\";\n    return word.replace('%d', number);\n  }\n};\nvar locale = {\n  name: 'sr-cyrl',\n  weekdays: 'Недеља_Понедељак_Уторак_Среда_Четвртак_Петак_Субота'.split('_'),\n  weekdaysShort: 'Нед._Пон._Уто._Сре._Чет._Пет._Суб.'.split('_'),\n  weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n  months: 'Јануар_Фебруар_Март_Април_Мај_Јун_Јул_Август_Септембар_Октобар_Новембар_Децембар'.split('_'),\n  monthsShort: 'Јан._Феб._Мар._Апр._Мај_Јун_Јул_Авг._Сеп._Окт._Нов._Дец.'.split('_'),\n  weekStart: 1,\n  relativeTime: {\n    future: 'за %s',\n    past: 'пре %s',\n    s: 'неколико секунди',\n    m: translator.relativeTimeFormatter,\n    mm: translator.relativeTimeFormatter,\n    h: translator.relativeTimeFormatter,\n    hh: translator.relativeTimeFormatter,\n    d: translator.relativeTimeFormatter,\n    dd: translator.relativeTimeFormatter,\n    M: translator.relativeTimeFormatter,\n    MM: translator.relativeTimeFormatter,\n    y: translator.relativeTimeFormatter,\n    yy: translator.relativeTimeFormatter\n  },\n  ordinal: function ordinal(n) {\n    return n + \".\";\n  },\n  formats: {\n    LT: 'H:mm',\n    LTS: 'H:mm:ss',\n    L: 'D. M. YYYY.',\n    LL: 'D. MMMM YYYY.',\n    LLL: 'D. MMMM YYYY. H:mm',\n    LLLL: 'dddd, D. MMMM YYYY. H:mm'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Serbian [sr]\nimport dayjs from '../index';\nvar translator = {\n  words: {\n    m: ['jedan minut', 'jednog minuta'],\n    mm: ['%d minut', '%d minuta', '%d minuta'],\n    h: ['jedan sat', 'jednog sata'],\n    hh: ['%d sat', '%d sata', '%d sati'],\n    d: ['jedan dan', 'jednog dana'],\n    dd: ['%d dan', '%d dana', '%d dana'],\n    M: ['jedan mesec', 'jednog meseca'],\n    MM: ['%d mesec', '%d meseca', '%d meseci'],\n    y: ['jednu godinu', 'jedne godine'],\n    yy: ['%d godinu', '%d godine', '%d godina']\n  },\n  correctGrammarCase: function correctGrammarCase(number, wordKey) {\n    if (number % 10 >= 1 && number % 10 <= 4 && (number % 100 < 10 || number % 100 >= 20)) {\n      return number % 10 === 1 ? wordKey[0] : wordKey[1];\n    }\n\n    return wordKey[2];\n  },\n  relativeTimeFormatter: function relativeTimeFormatter(number, withoutSuffix, key, isFuture) {\n    var wordKey = translator.words[key];\n\n    if (key.length === 1) {\n      // Nominativ\n      if (key === 'y' && withoutSuffix) return 'jedna godina';\n      return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n    }\n\n    var word = translator.correctGrammarCase(number, wordKey); // Nominativ\n\n    if (key === 'yy' && withoutSuffix && word === '%d godinu') return number + \" godina\";\n    return word.replace('%d', number);\n  }\n};\nvar locale = {\n  name: 'sr',\n  weekdays: 'Nedelja_Ponedeljak_Utorak_Sreda_Četvrtak_Petak_Subota'.split('_'),\n  weekdaysShort: 'Ned._Pon._Uto._Sre._Čet._Pet._Sub.'.split('_'),\n  weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n  months: 'Januar_Februar_Mart_April_Maj_Jun_Jul_Avgust_Septembar_Oktobar_Novembar_Decembar'.split('_'),\n  monthsShort: 'Jan._Feb._Mar._Apr._Maj_Jun_Jul_Avg._Sep._Okt._Nov._Dec.'.split('_'),\n  weekStart: 1,\n  relativeTime: {\n    future: 'za %s',\n    past: 'pre %s',\n    s: 'nekoliko sekundi',\n    m: translator.relativeTimeFormatter,\n    mm: translator.relativeTimeFormatter,\n    h: translator.relativeTimeFormatter,\n    hh: translator.relativeTimeFormatter,\n    d: translator.relativeTimeFormatter,\n    dd: translator.relativeTimeFormatter,\n    M: translator.relativeTimeFormatter,\n    MM: translator.relativeTimeFormatter,\n    y: translator.relativeTimeFormatter,\n    yy: translator.relativeTimeFormatter\n  },\n  ordinal: function ordinal(n) {\n    return n + \".\";\n  },\n  formats: {\n    LT: 'H:mm',\n    LTS: 'H:mm:ss',\n    L: 'D. M. YYYY.',\n    LL: 'D. MMMM YYYY.',\n    LLL: 'D. MMMM YYYY. H:mm',\n    LLLL: 'dddd, D. MMMM YYYY. H:mm'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// siSwati [ss]\nimport dayjs from '../index';\nvar locale = {\n  name: 'ss',\n  weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),\n  months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n  monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n  weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'h:mm A',\n    LTS: 'h:mm:ss A',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY h:mm A',\n    LLLL: 'dddd, D MMMM YYYY h:mm A'\n  },\n  relativeTime: {\n    future: 'nga %s',\n    past: 'wenteka nga %s',\n    s: 'emizuzwana lomcane',\n    m: 'umzuzu',\n    mm: '%d emizuzu',\n    h: 'lihora',\n    hh: '%d emahora',\n    d: 'lilanga',\n    dd: '%d emalanga',\n    M: 'inyanga',\n    MM: '%d tinyanga',\n    y: 'umnyaka',\n    yy: '%d iminyaka'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Finland Swedish [sv-fi]\nimport dayjs from '../index';\nvar locale = {\n  name: 'sv-fi',\n  weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n  weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n  weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n  months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\n  monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n  weekStart: 1,\n  yearStart: 4,\n  ordinal: function ordinal(n) {\n    var b = n % 10;\n    var o = b === 1 || b === 2 ? 'a' : 'e';\n    return \"[\" + n + o + \"]\";\n  },\n  formats: {\n    LT: 'HH.mm',\n    LTS: 'HH.mm.ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D. MMMM YYYY',\n    LLL: 'D. MMMM YYYY, [kl.] HH.mm',\n    LLLL: 'dddd, D. MMMM YYYY, [kl.] HH.mm',\n    l: 'D.M.YYYY',\n    ll: 'D. MMM YYYY',\n    lll: 'D. MMM YYYY, [kl.] HH.mm',\n    llll: 'ddd, D. MMM YYYY, [kl.] HH.mm'\n  },\n  relativeTime: {\n    future: 'om %s',\n    past: 'för %s sedan',\n    s: 'några sekunder',\n    m: 'en minut',\n    mm: '%d minuter',\n    h: 'en timme',\n    hh: '%d timmar',\n    d: 'en dag',\n    dd: '%d dagar',\n    M: 'en månad',\n    MM: '%d månader',\n    y: 'ett år',\n    yy: '%d år'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Swedish [sv]\nimport dayjs from '../index';\nvar locale = {\n  name: 'sv',\n  weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n  weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n  weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n  months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\n  monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n  weekStart: 1,\n  yearStart: 4,\n  ordinal: function ordinal(n) {\n    var b = n % 10;\n    var o = b === 1 || b === 2 ? 'a' : 'e';\n    return \"[\" + n + o + \"]\";\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'YYYY-MM-DD',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY [kl.] HH:mm',\n    LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n    lll: 'D MMM YYYY HH:mm',\n    llll: 'ddd D MMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'om %s',\n    past: 'för %s sedan',\n    s: 'några sekunder',\n    m: 'en minut',\n    mm: '%d minuter',\n    h: 'en timme',\n    hh: '%d timmar',\n    d: 'en dag',\n    dd: '%d dagar',\n    M: 'en månad',\n    MM: '%d månader',\n    y: 'ett år',\n    yy: '%d år'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Swahili [sw]\nimport dayjs from '../index';\nvar locale = {\n  name: 'sw',\n  weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),\n  weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n  weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n  months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),\n  monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n  weekStart: 1,\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  relativeTime: {\n    future: '%s baadaye',\n    past: 'tokea %s',\n    s: 'hivi punde',\n    m: 'dakika moja',\n    mm: 'dakika %d',\n    h: 'saa limoja',\n    hh: 'masaa %d',\n    d: 'siku moja',\n    dd: 'masiku %d',\n    M: 'mwezi mmoja',\n    MM: 'miezi %d',\n    y: 'mwaka mmoja',\n    yy: 'miaka %d'\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Tamil [ta]\nimport dayjs from '../index';\nvar locale = {\n  name: 'ta',\n  weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),\n  months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n  weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),\n  monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n  weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY, HH:mm',\n    LLLL: 'dddd, D MMMM YYYY, HH:mm'\n  },\n  relativeTime: {\n    future: '%s இல்',\n    past: '%s முன்',\n    s: 'ஒரு சில விநாடிகள்',\n    m: 'ஒரு நிமிடம்',\n    mm: '%d நிமிடங்கள்',\n    h: 'ஒரு மணி நேரம்',\n    hh: '%d மணி நேரம்',\n    d: 'ஒரு நாள்',\n    dd: '%d நாட்கள்',\n    M: 'ஒரு மாதம்',\n    MM: '%d மாதங்கள்',\n    y: 'ஒரு வருடம்',\n    yy: '%d ஆண்டுகள்'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Telugu [te]\nimport dayjs from '../index';\nvar locale = {\n  name: 'te',\n  weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),\n  months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),\n  weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n  monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),\n  weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'A h:mm',\n    LTS: 'A h:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY, A h:mm',\n    LLLL: 'dddd, D MMMM YYYY, A h:mm'\n  },\n  relativeTime: {\n    future: '%s లో',\n    past: '%s క్రితం',\n    s: 'కొన్ని క్షణాలు',\n    m: 'ఒక నిమిషం',\n    mm: '%d నిమిషాలు',\n    h: 'ఒక గంట',\n    hh: '%d గంటలు',\n    d: 'ఒక రోజు',\n    dd: '%d రోజులు',\n    M: 'ఒక నెల',\n    MM: '%d నెలలు',\n    y: 'ఒక సంవత్సరం',\n    yy: '%d సంవత్సరాలు'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Tetun Dili (East Timor) [tet]\nimport dayjs from '../index';\nvar locale = {\n  name: 'tet',\n  weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n  months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n  monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n  weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'iha %s',\n    past: '%s liuba',\n    s: 'minutu balun',\n    m: 'minutu ida',\n    mm: 'minutu %d',\n    h: 'oras ida',\n    hh: 'oras %d',\n    d: 'loron ida',\n    dd: 'loron %d',\n    M: 'fulan ida',\n    MM: 'fulan %d',\n    y: 'tinan ida',\n    yy: 'tinan %d'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Tajik [tg]\nimport dayjs from '../index';\nvar locale = {\n  name: 'tg',\n  weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'),\n  months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n  monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n  weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'баъди %s',\n    past: '%s пеш',\n    s: 'якчанд сония',\n    m: 'як дақиқа',\n    mm: '%d дақиқа',\n    h: 'як соат',\n    hh: '%d соат',\n    d: 'як рӯз',\n    dd: '%d рӯз',\n    M: 'як моҳ',\n    MM: '%d моҳ',\n    y: 'як сол',\n    yy: '%d сол'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Thai [th]\nimport dayjs from '../index';\nvar locale = {\n  name: 'th',\n  weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n  weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'),\n  weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n  months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\n  monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n  formats: {\n    LT: 'H:mm',\n    LTS: 'H:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY เวลา H:mm',\n    LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm'\n  },\n  relativeTime: {\n    future: 'อีก %s',\n    past: '%sที่แล้ว',\n    s: 'ไม่กี่วินาที',\n    m: '1 นาที',\n    mm: '%d นาที',\n    h: '1 ชั่วโมง',\n    hh: '%d ชั่วโมง',\n    d: '1 วัน',\n    dd: '%d วัน',\n    M: '1 เดือน',\n    MM: '%d เดือน',\n    y: '1 ปี',\n    yy: '%d ปี'\n  },\n  ordinal: function ordinal(n) {\n    return n + \".\";\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Turkmen [tk]\nimport dayjs from '../index';\nvar locale = {\n  name: 'tk',\n  weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split('_'),\n  weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n  weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n  months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split('_'),\n  monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n  weekStart: 1,\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: '%s soň',\n    past: '%s öň',\n    s: 'birnäçe sekunt',\n    m: 'bir minut',\n    mm: '%d minut',\n    h: 'bir sagat',\n    hh: '%d sagat',\n    d: 'bir gün',\n    dd: '%d gün',\n    M: 'bir aý',\n    MM: '%d aý',\n    y: 'bir ýyl',\n    yy: '%d ýyl'\n  },\n  ordinal: function ordinal(n) {\n    return n + \".\";\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Tagalog (Philippines) [tl-ph]\nimport dayjs from '../index';\nvar locale = {\n  name: 'tl-ph',\n  weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),\n  months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n  monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n  weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'MM/D/YYYY',\n    LL: 'MMMM D, YYYY',\n    LLL: 'MMMM D, YYYY HH:mm',\n    LLLL: 'dddd, MMMM DD, YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'sa loob ng %s',\n    past: '%s ang nakalipas',\n    s: 'ilang segundo',\n    m: 'isang minuto',\n    mm: '%d minuto',\n    h: 'isang oras',\n    hh: '%d oras',\n    d: 'isang araw',\n    dd: '%d araw',\n    M: 'isang buwan',\n    MM: '%d buwan',\n    y: 'isang taon',\n    yy: '%d taon'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Klingon [tlh]\nimport dayjs from '../index';\nvar locale = {\n  name: 'tlh',\n  weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n  months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n  monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),\n  weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Turkish [tr]\nimport dayjs from '../index';\nvar locale = {\n  name: 'tr',\n  weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),\n  weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n  weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n  months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),\n  monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n  weekStart: 1,\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: '%s sonra',\n    past: '%s önce',\n    s: 'birkaç saniye',\n    m: 'bir dakika',\n    mm: '%d dakika',\n    h: 'bir saat',\n    hh: '%d saat',\n    d: 'bir gün',\n    dd: '%d gün',\n    M: 'bir ay',\n    MM: '%d ay',\n    y: 'bir yıl',\n    yy: '%d yıl'\n  },\n  ordinal: function ordinal(n) {\n    return n + \".\";\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Talossan [tzl]\nimport dayjs from '../index';\nvar locale = {\n  name: 'tzl',\n  weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n  months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n  monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n  weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH.mm',\n    LTS: 'HH.mm.ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D. MMMM [dallas] YYYY',\n    LLL: 'D. MMMM [dallas] YYYY HH.mm',\n    LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Central Atlas Tamazight Latin [tzm-latn]\nimport dayjs from '../index';\nvar locale = {\n  name: 'tzm-latn',\n  weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n  months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n  weekStart: 6,\n  weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n  monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n  weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'dadkh s yan %s',\n    past: 'yan %s',\n    s: 'imik',\n    m: 'minuḍ',\n    mm: '%d minuḍ',\n    h: 'saɛa',\n    hh: '%d tassaɛin',\n    d: 'ass',\n    dd: '%d ossan',\n    M: 'ayowr',\n    MM: '%d iyyirn',\n    y: 'asgas',\n    yy: '%d isgasn'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Central Atlas Tamazight [tzm]\nimport dayjs from '../index';\nvar locale = {\n  name: 'tzm',\n  weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n  months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n  weekStart: 6,\n  weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n  monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n  weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n    past: 'ⵢⴰⵏ %s',\n    s: 'ⵉⵎⵉⴽ',\n    m: 'ⵎⵉⵏⵓⴺ',\n    mm: '%d ⵎⵉⵏⵓⴺ',\n    h: 'ⵙⴰⵄⴰ',\n    hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n    d: 'ⴰⵙⵙ',\n    dd: '%d oⵙⵙⴰⵏ',\n    M: 'ⴰⵢoⵓⵔ',\n    MM: '%d ⵉⵢⵢⵉⵔⵏ',\n    y: 'ⴰⵙⴳⴰⵙ',\n    yy: '%d ⵉⵙⴳⴰⵙⵏ'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Uyghur (China) [ug-cn]\nimport dayjs from '../index';\nvar locale = {\n  name: 'ug-cn',\n  weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split('_'),\n  months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n  monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split('_'),\n  weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'YYYY-MM-DD',\n    LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n    LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n    LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm'\n  },\n  relativeTime: {\n    future: '%s كېيىن',\n    past: '%s بۇرۇن',\n    s: 'نەچچە سېكونت',\n    m: 'بىر مىنۇت',\n    mm: '%d مىنۇت',\n    h: 'بىر سائەت',\n    hh: '%d سائەت',\n    d: 'بىر كۈن',\n    dd: '%d كۈن',\n    M: 'بىر ئاي',\n    MM: '%d ئاي',\n    y: 'بىر يىل',\n    yy: '%d يىل'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Ukrainian [uk]\nimport dayjs from '../index';\nvar monthFormat = 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_');\nvar monthStandalone = 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_');\nvar MONTHS_IN_FORMAT = /D[oD]?(\\[[^[\\]]*\\]|\\s)+MMMM?/;\n\nfunction plural(word, num) {\n  var forms = word.split('_');\n  return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]; // eslint-disable-line\n}\n\nfunction relativeTimeWithPlural(number, withoutSuffix, key) {\n  var format = {\n    ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n    mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n    hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n    dd: 'день_дні_днів',\n    MM: 'місяць_місяці_місяців',\n    yy: 'рік_роки_років'\n  };\n\n  if (key === 'm') {\n    return withoutSuffix ? 'хвилина' : 'хвилину';\n  } else if (key === 'h') {\n    return withoutSuffix ? 'година' : 'годину';\n  }\n\n  return number + \" \" + plural(format[key], +number);\n}\n\nvar months = function months(dayjsInstance, format) {\n  if (MONTHS_IN_FORMAT.test(format)) {\n    return monthFormat[dayjsInstance.month()];\n  }\n\n  return monthStandalone[dayjsInstance.month()];\n};\n\nmonths.s = monthStandalone;\nmonths.f = monthFormat;\nvar locale = {\n  name: 'uk',\n  weekdays: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),\n  weekdaysShort: 'ндл_пнд_втр_срд_чтв_птн_сбт'.split('_'),\n  weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n  months: months,\n  monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),\n  weekStart: 1,\n  relativeTime: {\n    future: 'за %s',\n    past: '%s тому',\n    s: 'декілька секунд',\n    m: relativeTimeWithPlural,\n    mm: relativeTimeWithPlural,\n    h: relativeTimeWithPlural,\n    hh: relativeTimeWithPlural,\n    d: 'день',\n    dd: relativeTimeWithPlural,\n    M: 'місяць',\n    MM: relativeTimeWithPlural,\n    y: 'рік',\n    yy: relativeTimeWithPlural\n  },\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD.MM.YYYY',\n    LL: 'D MMMM YYYY р.',\n    LLL: 'D MMMM YYYY р., HH:mm',\n    LLLL: 'dddd, D MMMM YYYY р., HH:mm'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Urdu [ur]\nimport dayjs from '../index';\nvar locale = {\n  name: 'ur',\n  weekdays: 'اتوار_پیر_منگل_بدھ_جمعرات_جمعہ_ہفتہ'.split('_'),\n  months: 'جنوری_فروری_مارچ_اپریل_مئی_جون_جولائی_اگست_ستمبر_اکتوبر_نومبر_دسمبر'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'اتوار_پیر_منگل_بدھ_جمعرات_جمعہ_ہفتہ'.split('_'),\n  monthsShort: 'جنوری_فروری_مارچ_اپریل_مئی_جون_جولائی_اگست_ستمبر_اکتوبر_نومبر_دسمبر'.split('_'),\n  weekdaysMin: 'اتوار_پیر_منگل_بدھ_جمعرات_جمعہ_ہفتہ'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd، D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: '%s بعد',\n    past: '%s قبل',\n    s: 'چند سیکنڈ',\n    m: 'ایک منٹ',\n    mm: '%d منٹ',\n    h: 'ایک گھنٹہ',\n    hh: '%d گھنٹے',\n    d: 'ایک دن',\n    dd: '%d دن',\n    M: 'ایک ماہ',\n    MM: '%d ماہ',\n    y: 'ایک سال',\n    yy: '%d سال'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Uzbek Latin [uz-latn]\nimport dayjs from '../index';\nvar locale = {\n  name: 'uz-latn',\n  weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),\n  months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n  monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n  weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'D MMMM YYYY, dddd HH:mm'\n  },\n  relativeTime: {\n    future: 'Yaqin %s ichida',\n    past: '%s oldin',\n    s: 'soniya',\n    m: 'bir daqiqa',\n    mm: '%d daqiqa',\n    h: 'bir soat',\n    hh: '%d soat',\n    d: 'bir kun',\n    dd: '%d kun',\n    M: 'bir oy',\n    MM: '%d oy',\n    y: 'bir yil',\n    yy: '%d yil'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Uzbek [uz]\nimport dayjs from '../index';\nvar locale = {\n  name: 'uz',\n  weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n  months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n  monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n  weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'D MMMM YYYY, dddd HH:mm'\n  },\n  relativeTime: {\n    future: 'Якин %s ичида',\n    past: '%s олдин',\n    s: 'фурсат',\n    m: 'бир дакика',\n    mm: '%d дакика',\n    h: 'бир соат',\n    hh: '%d соат',\n    d: 'бир кун',\n    dd: '%d кун',\n    M: 'бир ой',\n    MM: '%d ой',\n    y: 'бир йил',\n    yy: '%d йил'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Vietnamese [vi]\nimport dayjs from '../index';\nvar locale = {\n  name: 'vi',\n  weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),\n  months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n  monthsShort: 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),\n  weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM [năm] YYYY',\n    LLL: 'D MMMM [năm] YYYY HH:mm',\n    LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n    l: 'DD/M/YYYY',\n    ll: 'D MMM YYYY',\n    lll: 'D MMM YYYY HH:mm',\n    llll: 'ddd, D MMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: '%s tới',\n    past: '%s trước',\n    s: 'vài giây',\n    m: 'một phút',\n    mm: '%d phút',\n    h: 'một giờ',\n    hh: '%d giờ',\n    d: 'một ngày',\n    dd: '%d ngày',\n    M: 'một tháng',\n    MM: '%d tháng',\n    y: 'một năm',\n    yy: '%d năm'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Pseudo [x-pseudo]\nimport dayjs from '../index';\nvar locale = {\n  name: 'x-pseudo',\n  weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),\n  months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n  monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),\n  weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY HH:mm',\n    LLLL: 'dddd, D MMMM YYYY HH:mm'\n  },\n  relativeTime: {\n    future: 'í~ñ %s',\n    past: '%s á~gó',\n    s: 'á ~féw ~sécó~ñds',\n    m: 'á ~míñ~úté',\n    mm: '%d m~íñú~tés',\n    h: 'á~ñ hó~úr',\n    hh: '%d h~óúrs',\n    d: 'á ~dáý',\n    dd: '%d d~áýs',\n    M: 'á ~móñ~th',\n    MM: '%d m~óñt~hs',\n    y: 'á ~ýéár',\n    yy: '%d ý~éárs'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Yoruba Nigeria [yo]\nimport dayjs from '../index';\nvar locale = {\n  name: 'yo',\n  weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n  months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'),\n  weekStart: 1,\n  weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n  monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n  weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n  ordinal: function ordinal(n) {\n    return n;\n  },\n  formats: {\n    LT: 'h:mm A',\n    LTS: 'h:mm:ss A',\n    L: 'DD/MM/YYYY',\n    LL: 'D MMMM YYYY',\n    LLL: 'D MMMM YYYY h:mm A',\n    LLLL: 'dddd, D MMMM YYYY h:mm A'\n  },\n  relativeTime: {\n    future: 'ní %s',\n    past: '%s kọjá',\n    s: 'ìsẹjú aayá die',\n    m: 'ìsẹjú kan',\n    mm: 'ìsẹjú %d',\n    h: 'wákati kan',\n    hh: 'wákati %d',\n    d: 'ọjọ́ kan',\n    dd: 'ọjọ́ %d',\n    M: 'osù kan',\n    MM: 'osù %d',\n    y: 'ọdún kan',\n    yy: 'ọdún %d'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Chinese (China) [zh-cn]\nimport dayjs from '../index';\nvar locale = {\n  name: 'zh-cn',\n  weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n  weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n  weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n  months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n  monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n  ordinal: function ordinal(number, period) {\n    switch (period) {\n      case 'W':\n        return number + \"\\u5468\";\n\n      default:\n        return number + \"\\u65E5\";\n    }\n  },\n  weekStart: 1,\n  yearStart: 4,\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'YYYY/MM/DD',\n    LL: 'YYYY年M月D日',\n    LLL: 'YYYY年M月D日Ah点mm分',\n    LLLL: 'YYYY年M月D日ddddAh点mm分',\n    l: 'YYYY/M/D',\n    ll: 'YYYY年M月D日',\n    lll: 'YYYY年M月D日 HH:mm',\n    llll: 'YYYY年M月D日dddd HH:mm'\n  },\n  relativeTime: {\n    future: '%s内',\n    past: '%s前',\n    s: '几秒',\n    m: '1 分钟',\n    mm: '%d 分钟',\n    h: '1 小时',\n    hh: '%d 小时',\n    d: '1 天',\n    dd: '%d 天',\n    M: '1 个月',\n    MM: '%d 个月',\n    y: '1 年',\n    yy: '%d 年'\n  },\n  meridiem: function meridiem(hour, minute) {\n    var hm = hour * 100 + minute;\n\n    if (hm < 600) {\n      return '凌晨';\n    } else if (hm < 900) {\n      return '早上';\n    } else if (hm < 1100) {\n      return '上午';\n    } else if (hm < 1300) {\n      return '中午';\n    } else if (hm < 1800) {\n      return '下午';\n    }\n\n    return '晚上';\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Chinese (Hong Kong) [zh-hk]\nimport dayjs from '../index';\nvar locale = {\n  name: 'zh-hk',\n  months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n  monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n  weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n  weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n  weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n  ordinal: function ordinal(number, period) {\n    switch (period) {\n      case 'W':\n        return number + \"\\u9031\";\n\n      default:\n        return number + \"\\u65E5\";\n    }\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'YYYY/MM/DD',\n    LL: 'YYYY年M月D日',\n    LLL: 'YYYY年M月D日 HH:mm',\n    LLLL: 'YYYY年M月D日dddd HH:mm'\n  },\n  relativeTime: {\n    future: '%s內',\n    past: '%s前',\n    s: '幾秒',\n    m: '一分鐘',\n    mm: '%d 分鐘',\n    h: '一小時',\n    hh: '%d 小時',\n    d: '一天',\n    dd: '%d 天',\n    M: '一個月',\n    MM: '%d 個月',\n    y: '一年',\n    yy: '%d 年'\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Chinese (Taiwan) [zh-tw]\nimport dayjs from '../index';\nvar locale = {\n  name: 'zh-tw',\n  weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n  weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n  weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n  months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n  monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n  ordinal: function ordinal(number, period) {\n    switch (period) {\n      case 'W':\n        return number + \"\\u9031\";\n\n      default:\n        return number + \"\\u65E5\";\n    }\n  },\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'YYYY/MM/DD',\n    LL: 'YYYY年M月D日',\n    LLL: 'YYYY年M月D日 HH:mm',\n    LLLL: 'YYYY年M月D日dddd HH:mm',\n    l: 'YYYY/M/D',\n    ll: 'YYYY年M月D日',\n    lll: 'YYYY年M月D日 HH:mm',\n    llll: 'YYYY年M月D日dddd HH:mm'\n  },\n  relativeTime: {\n    future: '%s內',\n    past: '%s前',\n    s: '幾秒',\n    m: '1 分鐘',\n    mm: '%d 分鐘',\n    h: '1 小時',\n    hh: '%d 小時',\n    d: '1 天',\n    dd: '%d 天',\n    M: '1 個月',\n    MM: '%d 個月',\n    y: '1 年',\n    yy: '%d 年'\n  },\n  meridiem: function meridiem(hour, minute) {\n    var hm = hour * 100 + minute;\n\n    if (hm < 600) {\n      return '凌晨';\n    } else if (hm < 900) {\n      return '早上';\n    } else if (hm < 1100) {\n      return '上午';\n    } else if (hm < 1300) {\n      return '中午';\n    } else if (hm < 1800) {\n      return '下午';\n    }\n\n    return '晚上';\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","// Chinese [zh]\nimport dayjs from '../index';\nvar locale = {\n  name: 'zh',\n  weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n  weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n  weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n  months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n  monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n  ordinal: function ordinal(number, period) {\n    switch (period) {\n      case 'W':\n        return number + \"\\u5468\";\n\n      default:\n        return number + \"\\u65E5\";\n    }\n  },\n  weekStart: 1,\n  yearStart: 4,\n  formats: {\n    LT: 'HH:mm',\n    LTS: 'HH:mm:ss',\n    L: 'YYYY/MM/DD',\n    LL: 'YYYY年M月D日',\n    LLL: 'YYYY年M月D日Ah点mm分',\n    LLLL: 'YYYY年M月D日ddddAh点mm分',\n    l: 'YYYY/M/D',\n    ll: 'YYYY年M月D日',\n    lll: 'YYYY年M月D日 HH:mm',\n    llll: 'YYYY年M月D日dddd HH:mm'\n  },\n  relativeTime: {\n    future: '%s后',\n    past: '%s前',\n    s: '几秒',\n    m: '1 分钟',\n    mm: '%d 分钟',\n    h: '1 小时',\n    hh: '%d 小时',\n    d: '1 天',\n    dd: '%d 天',\n    M: '1 个月',\n    MM: '%d 个月',\n    y: '1 年',\n    yy: '%d 年'\n  },\n  meridiem: function meridiem(hour, minute) {\n    var hm = hour * 100 + minute;\n\n    if (hm < 600) {\n      return '凌晨';\n    } else if (hm < 900) {\n      return '早上';\n    } else if (hm < 1100) {\n      return '上午';\n    } else if (hm < 1300) {\n      return '中午';\n    } else if (hm < 1800) {\n      return '下午';\n    }\n\n    return '晚上';\n  }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAU4SURBVHgB7d3LThRbGIbhJW4JBmOCGA8JAydG7/9qdOJEIkIazwaiEff+26hNg1+AWlvo6udJDEIcgOmXtarqr+prk8nkewNOtdKAPxIIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAj+aURHR0ftzZs37fDwsH358qVdNaurq219fb1tbGw0+rs2mUy+N06oMF6/ft329/fbIqhQ7t27J5TOrCCnqDhevHjRDg4O2qKo1W17e3v68f79+40+BHKKV69enYhjZWWlXb9+vV2mb9++TeP9qVaLt2/fHvs3e3t7048i6UMgcz5//nzsRVdhPHjwoG1ubrbLVivE7Pe2tbU13VZVFLNfF0k/Apkz/xv50aNH04Pgq6qOPSqU+ri7u/vr6yLpw2neOXW26qfbt29f6Thm1UoyH0NFMhsN5yeQObPHHmtra22RiKQ/gYyMSPoSyAiJpB+BjJRI+hDIiIlkOIGMnEiGEcgSEMnFCWRJiORiBLJERHJ+AlkyIjkfgSwhkZydQJbUnyKpaWZ+E8gSOy0Sq8hxAllyFcnsxHKtILMTzctOIEzH+md9+vSp8YMbphbY169fWw+3bt069nnd2ssPAllgz549a/y/bLEWyKLc3TgmAlkg9RSTu3fvNv4eW6wF8/Dhw+lBdc+nPNYxx87OTuMkgSyg2mr13G5VbAI5nS0WBAKBQCAQCAQCgUAgEAic5h2gZqHqfUSu4jtPzTptrJ2zsYIM8PLlyysfR6kboYywX4xAloQJ3Yuxxeqk3n1q/r6Ky1Qrm9tnhxNIJxVIvZHNVVFvBCSQ4WyxIBAIBAKBQCAQCAQCgUDgNG8ndSGuxk6uil6PBFp2AumkAnHdYXxssSCwgnR048aNNsTstmhlZWV6df6iakU7OjpqDCOQTlZXV9uTJ0/aRdXs1PPnz399Xs+/GjKiXqMm29vbjWFssSAQCAQCgUAgEAgEAoFAIBAIBAKBQCBwJb2TodO884/leffu3aDhR9O8fQikk97TvDV6sggPpRs7WywIrCAdmeYdH4F0Ypp3nGyxIBAIBAKBQCAQCAQCgUAgEAgEAoFAIHAlvZMa7Rhy5Xp+mvfjx4+DJnJN8/YhkE7qBV7jHb0cHBxM/3C5bLEGGDJMyGIQyAA1TDh0gvdvqO9zfX29cX62WAOsra21p0+fNsbLCgKBQCAQCAQCwa25gUDmzJ6VWpb3HHz//v2xz2/evNn4QSBzNjY2fv29Atnd3W1jdnh42Pb29o59zSnh35zmnVOB7O/v/xr9qBdPjW3MhjMG9fPVlfr6WWfVwyJcAP3t2mQy+d445r//k7azs9OWTW0vHz9+LJAZVpBT1G/ROnAd+/ZqVm2rtra2xDHHChLUs6pqJfnw4UMbq5oGuHPnTtvc3GycJJAzqP16HcyOTT3sbhFmyS6TLdYZ1LbDmZ3l5DQvBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAj+BRpcvwehwkHMAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAATCSURBVHgB7d1dS1RbHMfx1XSKoii8iqCrIIre/4vxQrwSvFARBVEU9fQ3hOmkv1HPbGf22p8PeNMDCPplr6dZ+8X+/v51A+40a8C9BAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBALBP22irq6u2tHRUTs/P2/8fy9fvmwfP35sr169aj15sb+/f90mpuLY3t5up6enjeX68uVL29jYaL2Y5BBrb29PHAPZ3d1tl5eXrReTDOTk5KQxjIrj4uKi9WKyc5Bbr1+/bl+/fm08Xc3l6slxq6cnyOQDKb1NLJ9bTdB71VUgvxYc2vHx8cKVqZqkw0N0E0jFMf+Yh2XoZpJ+cHDQYNm6eYLMD6tms1l7+/btvf/27Oysq4kkw+lykl47urVhdZ/aJLTUy0NYxXqAVT1xagnaCttqCWSBw8PDtrOz01bl58+fXS+jrjuneRdY9WHGenqxOgKBwBDrkT5//jzokKcWD2pYx3oQyCM9x2ceBLI+BDJydYJg6HnKhw8fbr6mSCAjVgsIz3G8ps631WraFJmks9CUTx0IZMRqseA5NhLfvXvXpsoQa8QqkB8/fjSG4wkCgUAgEAgEAoFAIBAIBALLvCNXhxuHOJL//v17H9ZqAhm12uGujw8PofZYpnq8ZJ4h1ogNeQTEpRa/CWTEhvxciuHVb4ZYI1aBfP/+fZDLot+8edMQyOjVzSf1xTAMsSAQCAQCgUAgEAgEAqtYI1cvA1rGpp59j7sJZMQqjK2traWcxarPnXtX498MsUasAlnWQUWvg7ibQCAwxBqx2kGvFwUt4ylSx9v5m0BGbmNjozEcQywIBAKBQCAQCAQCgcAq1iMN/VJPnwVfLwJ5pKFuEXmq+n6GjrZeO1fvZpwigYxYhfEcR0TqNW9TDcQcZIEhbw5h/XmCLFAvr1zVvKCOkqS3O9Xf1076cwyxpkogC9Qv4adPn9q6qrNYDMcQCwKBQCAQCLoJZH61adGkdf6qTp/FJukmkPm7ZGtv4L77ag8PD/8IyB20JN0EUsux82qH+b+RVDi7u7t//NmUlzBZrJtl3toPqB3f2yjqKbG5uXmzj1BLtfftOtf/qacKTzfE7fLr4sWvX5Dr1omzs7ObJ4cDf6v17du3boauXa1i1Q+l7nYy8V6d+hn0NK/r6gkyr4ZN9XV6enpz+yDDms1mNzej1M5+T+fXug0ElsFGIQQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgeBfbDQwu6pZifMAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAVZSURBVHgB7d1RTxNZGMfhI6wGgsGoGG7kxhv9/l+FxMQbE+OF0VQIRgKBgLtvN2VdpX+otAXOPE8y0aIinc6vc2bmTPpgNBr9aMClVhowlUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQPBX49YdHx+3g4ODdnh42B49etS2trba2tpa4/Y9GI1GPxpLd3p62vb29sZR1PKrCmVzc7M9ffpULLdIIEt0VRTTVCzPnz9vT548aQ8fPmwsj0AW7Pz8fBzFt2/froyiNv6KKKm9Se1VxLIcAlmAWaJYWVlpL168aBsbG+Pl5ORk/G/+eV3GxyaJWBZPIHMyaxTPnj0bH2NUFNNULPX99vf3r4ylvk/F8vjxY7HMkUBuYBFRTDOJpfYsVw3DxDI/ApnRMqOYpvYmtVepU8NiWSyBXMNdiGIasSyWQKaoKGqjm4z/z87Opv7diqIOlCfXLFZXV9ttqHjr5/3+/btY5kQgP7mPUUzzJ7HU86nnxX8GH0hFURvR5LTqVVGsr6+PN6YaQt21KKaZJZZ6XrWI5V+DDKSiODo6Gm80dVzRYxTTiGU2gwlklihKDTsmc6HuexTT1HqopYaVtX6SyRtELUPSfSCTd0xRZNeNpdbLJJQhxNJlIBXF5Aq0KGY3WXf1azKEWLoJpMbTdaAtivmp9TjZs1w3lu3t7a5OG3cTyLt378bTMaYRxc1MYqk3oHSxtNbt69evu1nH3dxReFkcFUVdCKsoXAy7mdrgaz3WMplxfFksFVKdLl/GLIJl6PKW23pxdnZ2RLEgdQNXLZNYvn79Oh7e9qjLk9v14oljOWpd93xLsEulEHQ5xKpx8Cz3fHMzV93MdZ91Gch1TkvCdRhiQdBNIL2cVrzv6uRITwftXU01uc58KxarhxnPP+vqGGRoM01ZPMcgEAgEAoFAIBAIBAKBQCAY/CdM7e7uXvy+pm+/fPmyzcPnz5/bly9fLh6/efNmbjOM7+PPfF/Zg0AgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCASCQX2Azvn5eTs5OWlnZ2eX/nl9/fDwsM3D6enp/x4fHR2N/+95W+bPvL6+3lZWhvWe+mA0Gv1onasX/uPHj3PbkIZsY2Oj7ezsDOaTp7oP5Pj4uL1//37qXoM/Ux/7Vh//1rvu95cfPnwQxwJ8+vTptyFZj7o+Bqkh1c9j6BoWbG1ttdXV1cZs6k3mn9HGRRT1eG9vr21vb7eedR3IrwfFNXauMTR/poZUb9++vXg8hD2I07xc2xD3vAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQdDMXa39//7ev/Xr/x8HBwUJuWhqqWpeXrffNzc1upqV0cz/I7u5u42549epVN5NCDbEgEAgE3RyD1G6du2Ftba31optA3AjFIhhiQSAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoHgb22GlqalqFBhAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,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\""],"names":["SECONDS_A_MINUTE","SECONDS_A_HOUR","SECONDS_A_DAY","SECONDS_A_WEEK","MILLISECONDS_A_SECOND","MILLISECONDS_A_MINUTE","MILLISECONDS_A_HOUR","MILLISECONDS_A_DAY","MILLISECONDS_A_WEEK","MS","S","MIN","H","D","W","M","Q","Y","DATE","FORMAT_DEFAULT","INVALID_DATE_STRING","REGEX_PARSE","REGEX_FORMAT","en","n","s","v","padStart","string","length","pad","padZoneStr","instance","negMinutes","minutes","hourOffset","minuteOffset","monthDiff","a","b","wholeMonthDiff","anchor","C.M","c","anchor2","absFloor","prettyUnit","u","special","C.Y","C.W","C.D","C.DATE","C.H","C.MIN","C.S","C.MS","C.Q","isUndefined","U","L","Ls","IS_DAYJS","isDayjs","d","Dayjs","parseLocale","preset","object","isLocal","l","presetLower","presetSplit","name","dayjs","date","cfg","wrapper","Utils","parseDate","utc","C.REGEX_PARSE","m","ms","_proto","$d","C.INVALID_DATE_STRING","that","units","other","input","get","set","_startOf","_this","isStartOf","unit","instanceFactory","ins","instanceFactorySet","method","slice","argumentStart","argumentEnd","$W","$M","$D","utcPad","weekStart","gap","arg","_int","_C$D$C$DATE$C$M$C$Y$C","_int2","number","_this2","_C$MIN$C$H$C$S$unit","step","C.MILLISECONDS_A_MINUTE","C.MILLISECONDS_A_HOUR","C.MILLISECONDS_A_SECOND","nextTimeStamp","formatStr","_this3","locale","str","C.FORMAT_DEFAULT","zoneStr","$H","$m","weekdays","months","meridiem","getShort","arr","index","full","get$H","num","meridiemFunc","hour","minute","isLowercase","matches","match","C.REGEX_FORMAT","$1","_float","_this4","zoneDelta","diff","getMonth","result","C.MILLISECONDS_A_WEEK","C.MILLISECONDS_A_DAY","nextLocaleName","proto","g","plugin","option","timestamp","t","format","_","englishFormats","formats","B","LocalizedFormat","o","oldFormat","_this$$locale","_this$$locale$formats","RelativeTime","relObj","withoutSuffix","isFrom","postFormat","loc","T","Tl","out","isFuture","i","abs","pastOrFuture","fromTo","makeNow","thisDay","inBrowser","mark","measure","perf","tag","startTag","endTag","RE_ARGS","message","args","isObject","identifier","makeSymbol","shareable","generateFormatCacheKey","key","source","friendlyJSONstringify","json","isNumber","val","isDate","toTypeString","isRegExp","isEmptyObject","isPlainObject","assign","_globalThis","getGlobalThis","escapeHtml","rawText","hasOwnProperty","hasOwn","obj","isArray","isFunction","isString","isBoolean","isPromise","objectToString","value","toDisplayString","join","items","separator","item","RANGE","generateCodeFrame","start","end","lines","count","res","j","line","lineLength","incrementer","code","current","warn","msg","err","hasWarned","warnOnce","createEmitter","events","event","handler","handlers","payload","isNotObjectOrIsArray","deepCopy","src","des","CompileErrorCodes","errorMessages","createCompileError","options","domain","messages","error","initFeatureFlags","pathStateMachine","literalValueRE","isLiteral","exp","stripQuotes","getPathCharType","ch","formatSubPath","path","trimmed","parse","keys","mode","subPathDepth","newChar","type","transition","action","typeMap","actions","maybeUnescapeQuote","nextChar","cache","resolveWithKeyValue","resolveValue","hit","len","last","DEFAULT_MODIFIER","DEFAULT_MESSAGE","ctx","DEFAULT_MESSAGE_DATA_TYPE","DEFAULT_NORMALIZE","values","DEFAULT_INTERPOLATE","pluralDefault","choice","choicesLength","getPluralIndex","normalizeNamed","pluralIndex","props","createMessageContext","pluralRule","orgPluralRule","plural","_list","list","_named","named","_modifier","normalize","interpolate","arg1","arg2","modifier","ret","devtools","setDevToolsHook","hook","initI18nDevTools","i18n","version","meta","translateDevTools","createDevToolsHook","payloads","CoreWarnCodes","warnMessages","getWarnMessage","format$1","inc","CoreErrorCodes","createCoreError","getLocale","context","resolveLocale","_resolveLocale","resolve","fallbackWithSimple","fallback","fallbackWithLocaleChain","startLocale","DEFAULT_LOCALE","chain","block","appendBlockToChain","defaults","blocks","follow","appendLocaleToChain","tokens","target","appendItemToChain","VERSION","NOT_REOSLVED","MISSING_RESOLVE_VALUE","capitalize","getDefaultLinkedModifiers","_compiler","_resolver","registerMessageResolver","resolver","_fallbacker","registerLocaleFallbacker","fallbacker","_additionalMeta","setAdditionalMeta","getAdditionalMeta","_fallbackContext","setFallbackContext","getFallbackContext","_cid","createCoreContext","onWarn","_locale","fallbackLocale","datetimeFormats","numberFormats","modifiers","pluralRules","missing","missingWarn","fallbackWarn","fallbackFormat","unresolving","postTranslation","processor","warnHtmlMessage","escapeParameter","messageCompiler","messageResolver","localeFallbacker","fallbackContext","internalOptions","__datetimeFormatters","__numberFormatters","__meta","isTranslateFallbackWarn","isTranslateMissingWarn","handleMissing","emitter","updateFallbackLocale","isMessageAST","NOOP_MESSAGE_FUNCTION","isMessageFunction","translate","parseTranslateArgs","resolvedMessage","defaultMsgOrKey","enableDefaultMsg","escapeParams","formatScope","targetLocale","resolveMessageFormat","cacheBaseKey","occurred","onError","compileMessageFormat","ctxOptions","getMessageContextOptions","msgContext","messaged","evaluateMessage","locales","from","to","missingRet","getCompileContext","msgCtx","arg3","_source","getSourceForCodeFrame","codeFrame","intlDefined","Availabilities","datetime","overrides","parseDateTimeArgs","part","datetimeFormat","id","formatter","DATETIME_FORMAT_OPTIONS_KEYS","arg4","dateTime","clearDateTimeFormat","parseNumberArgs","numberFormat","NUMBER_FORMAT_OPTIONS_KEYS","clearNumberFormat","getDevtoolsGlobalHook","getTarget","isProxyAvailable","HOOK_SETUP","HOOK_PLUGIN_SETTINGS_SET","supported","isPerformanceSupported","_a","now","ApiProxy","defaultSettings","localSettingsSaveId","currentSettings","raw","data","pluginId","_target","prop","setupDevtoolsPlugin","pluginDescriptor","setupFn","descriptor","enableProxy","proxy","code$1","inc$1","I18nWarnCodes","I18nErrorCodes","createI18nError","TranslateVNodeSymbol","DatetimePartsSymbol","NumberPartsSymbol","EnableEmitter","DisableEmitter","SetPluralRulesSymbol","InejctWithOptionSymbol","DisposeSymbol","handleFlatJson","subKeys","lastIndex","currentObj","hasStringValue","getLocaleMessages","__i18n","flatJson","custom","resource","getComponentOptions","adjustI18nResources","gl","componentOptions","createTextNode","createVNode","Text","DEVTOOLS_META","NOOP_RETURN_ARRAY","NOOP_RETURN_FALSE","composerID","defineCoreMissingHandler","getCurrentInstance","getMetaInfo","createComposer","VueI18nLegacy","__root","__injectWithOption","_isGlobal","_inheritLocale","ref","_fallbackLocale","_messages","_datetimeFormats","_numberFormats","_missingWarn","_fallbackWarn","_fallbackRoot","_fallbackFormat","_missing","_runtimeMissing","_postTranslation","_warnHtmlMessage","_escapeParameter","_modifiers","_pluralRules","_context","trackReactivityValues","computed","getPostTranslationHandler","setPostTranslationHandler","getMissingHandler","setMissingHandler","isResolvedTranslateMessage","wrapWithDeps","fn","argumentParser","warnType","fallbackSuccess","fallbackFail","successCondition","root","rt","translateVNode","numberParts","datetimeParts","setPluralRules","rules","te","getLocaleMessage","resolved","resolveMessages","targetLocaleMessages","messageValue","tm","setLocaleMessage","_message","mergeLocaleMessage","getDateTimeFormat","setDateTimeFormat","mergeDateTimeFormat","getNumberFormat","setNumberFormat","mergeNumberFormat","watch","composer","baseFormatProps","getInterpolateArg","slots","slot","Fragment","getFragmentableTag","Translation","defineComponent","attrs","useI18n","children","assignedAttrs","h","isVNode","renderFormatter","slotKeys","partFormatter","parts","node","NumberFormat","DatetimeFormat","getComposer$2","i18nInternal","vueI18n","vTDirective","_process","binding","parsedValue","parseValue","makeParams","el","textContent","apply","app","pluginOptions","useI18nComponentName","globalInstall","VueDevToolsLabels","VueDevToolsPlaceholders","VueDevToolsTimelineColors","VUE_I18N_COMPONENT_TYPES","devtoolsApi","enableDevTools","reject","api","componentInstance","treeNode","updateComponentTreeTags","instanceData","inspectComposer","registerScope","roots","inspectScope","getComponentInstance","editScope","e","getI18nScopeLable","global","getLocaleMessageValue","getMessageFunctionDetails","ESC","escape","escapeChar","func","keyInstance","nodeId","component","getComposer$1","makeScopeInspectState","state","localeType","localeStates","localeMessagesType","localeMessagesStates","datetimeFormatsType","datetimeFormatsStates","numberFormatsType","numberFormatsStates","addTimelineEvent","groupId","field","I18nInjectionKey","createI18n","__globalInjection","__allowComposition","__instances","globalScope","__global","createGlobal","symbol","__getInstance","__setInstance","__deleteInstance","opts","globalReleaseHandler","injectGlobalFields","unmountApp","_composer","getI18nInstance","getGlobalComposer","scope","getScope","getComposer","composerOptions","setupLifeCycle","legacyMode","effectScope","inject","useComponent","getParentComponentInstance","onMounted","onUnmounted","dispose","globalExportProps","globalExportMethods","desc","wrap","isRef","admin_root","api_root","api_2_root","show_copy_resource_permalink","schema_documentation_url","schema_catalog_url","schema_validata_url","site_root","static_root","title","explorable_resources","only_locales","default_lang","guides_quality_url","localConfig","reactive","config","readonly","setupComponents","mergedConfig","bind","thisArg","toString","getPrototypeOf","kindOf","thing","kindOfTest","typeOfTest","isBuffer","isArrayBuffer","isArrayBufferView","prototype","isFile","isBlob","isFileList","isStream","isFormData","kind","isURLSearchParams","trim","forEach","allOwnKeys","findKey","_key","_global","isContextDefined","merge","caseless","assignValue","targetKey","extend","stripBOM","content","inherits","constructor","superConstructor","descriptors","toFlatObject","sourceObj","destObj","filter","propFilter","merged","endsWith","searchString","position","toArray","isTypedArray","TypedArray","forEachEntry","iterator","pair","matchAll","regExp","isHTMLForm","toCamelCase","p1","p2","reduceDescriptors","reducer","reducedDescriptors","freezeMethods","toObjectSet","arrayOrString","delimiter","define","noop","toFiniteNumber","defaultValue","ALPHA","DIGIT","ALPHABET","generateString","size","alphabet","isSpecCompliantForm","toJSONObject","stack","visit","reducedValue","isAsyncFn","utils$3","AxiosError","request","response","utils","customProps","axiosError","httpAdapter","isVisitable","removeBrackets","renderKey","dots","token","isFlatArray","predicates","toFormData","formData","metaTokens","visitor","defaultVisitor","indexes","useBlob","convertValue","exposedHelpers","build","encode","charMap","AxiosURLSearchParams","params","encoder","_encode","buildURL","url","serializeFn","serializedParams","hashmarkIndex","InterceptorManager","fulfilled","rejected","InterceptorManager$1","transitionalDefaults","platform$1","hasBrowserEnv","hasStandardBrowserEnv","product","hasStandardBrowserWebWorkerEnv","platform","toURLEncodedForm","helpers","parsePropPath","arrayToObject","formDataToJSON","buildPath","isNumericKey","isLast","stringifySafely","rawValue","parser","headers","contentType","hasJSONContentType","isObjectPayload","_FormData","transitional","forcedJSONParsing","JSONRequested","strictJSONParsing","status","defaults$1","ignoreDuplicateOf","parseHeaders","rawHeaders","parsed","$internals","normalizeHeader","header","normalizeValue","parseTokens","tokensRE","isValidHeaderName","matchHeaderValue","isHeaderNameFilter","formatHeader","w","char","buildAccessors","accessorName","methodName","AxiosHeaders","valueOrRewrite","rewrite","self","setHeader","_value","_header","_rewrite","lHeader","setHeaders","matcher","deleted","deleteHeader","normalized","targets","asStrings","first","accessors","defineAccessor","mapped","headerValue","AxiosHeaders$1","transformData","fns","isCancel","CanceledError","settle","validateStatus","cookies","expires","secure","cookie","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","isURLSameOrigin","msie","urlParsingNode","originURL","resolveURL","href","requestURL","parseProtocol","speedometer","samplesCount","min","bytes","timestamps","head","tail","firstSampleTS","chunkLength","startedAt","bytesCount","passed","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","loaded","total","progressBytes","rate","inRange","knownAdapters","requestData","requestHeaders","responseType","withXSRFToken","onCanceled","done","username","password","fullPath","onloadend","responseHeaders","timeoutErrorMessage","xsrfValue","cancel","protocol","renderReason","reason","isResolvedHandle","adapter","adapters","nameOrAdapter","rejectedReasons","reasons","throwIfCancellationRequested","dispatchRequest","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","validators","deprecatedWarnings","validators$1","validator","formatMessage","opt","assertOptions","schema","allowUnknown","Axios","instanceConfig","configOrUrl","dummy","paramsSerializer","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","promise","newConfig","onFulfilled","onRejected","generateHTTPMethod","isForm","Axios$1","CancelToken$2","CancelToken","executor","resolvePromise","onfulfilled","_resolve","spread","callback","isAxiosError","HttpStatusCode","HttpStatusCode$1","createInstance","defaultConfig","axios","promises","axios$1","generateCancelToken","generateAbortcontroller","timeoutMs","abortController","apiRootAbsoluteRef","api2RootAbsoluteRef","api_root_absolute","apiv2","api_2_root_absolute","PAGES_AROUND","range","startAt","getPages","pageCount","getPagesShown","pages","currentPage","getStartPage","getVisiblePages","pagination","visiblePages","udata_front","getRegisteredComponentsForHook","getRegisteredTranslations","setupI18n","setupI18nWithExistingInstance","newI18n","modules","langPromises","isFulfilled","results","loadedLocales","loadedLocale","loadedModules","getLocalizedUrl","lang","reloadLocale","translations","translation","f","p","y","r","$","x","Ut","Ue","Wt","Zt","ht","Ce","vt","pe","$e","Le","Dl","mt","gt","bt","ce","Ml","zl","kt","Cl","$l","Ll","Il","Sl","El","Je","Al","Hl","Ie","je","Bl","Fl","Rl","Nl","ve","Vl","Ve","xe","et","Pl","Yl","Xl","tt","jl","Ol","_e","Ql","ql","at","nt","ke","De","Gl","Kl","V","P","K","Z","de","ge","ie","be","k","E","Re","Ne","Ge","I","q","G","we","he","se","Ul","R","le","ae","Ae","Pt","Xt","frequenciesRequest","getFrequencies","frequencies","frequency","getFrequenciesUrl","fetchFrequencies","resp","granularitiesRequest","getGranularity","granularities","granularity","getGranularitiesUrl","fetchGranularities","catalogRequest","getCatalog","router","routerKey","useAttrs","externalAttrs","isExternalLink","link","factory","module","this","__webpack_modules__","__unused_webpack_module","__webpack_exports__","__webpack_require__","clipboard","tiny_emitter","tiny_emitter_default","listen","listen_default","src_select","select_default","command","ClipboardActionCut","selectedText","actions_cut","createFakeElement","isRTL","fakeElement","yPosition","fakeCopyAction","ClipboardActionCopy","actions_copy","_typeof","ClipboardActionDefault","_options$action","container","text","actions_default","clipboard_typeof","_classCallCheck","Constructor","_defineProperties","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","call","_assertThisInitialized","getAttributeValue","suffix","element","attribute","Clipboard","_Emitter","_super","trigger","selector","support","DOCUMENT_NODE_TYPE","closest","__unused_webpack_exports","_delegate","useCapture","listenerFn","delegate","elements","exports","is","listenNode","listenNodeList","listenSelector","nodeList","select","isReadOnly","selection","evtArr","evts","liveEvents","__webpack_module_cache__","moduleId","getter","definition","buttonRef","extendStatics","__extends","__","__assign","__rest","__spreadArrays","il","clamp","max","sanitize","floatRegex","colorRegex","singleColorRegex","alpha","scale","createUnitType","degrees","percent","px","vh","vw","progressPercentage","getValueFromFunctionString","clampRgbUnit","isRgba","isHsla","getValuesAsArray","splitColorValues","terms","valuesArray","rgbaTemplate","red","green","blue","_b","hslaTemplate","hue","saturation","lightness","rgbUnit","isColorString","color","colorType","rgba","alpha$1","hsla","hex","COLOR_TOKEN","NUMBER_TOKEN","convertNumbersToZero","complex","numValues","foundNumbers","foundColors","template","numColors","numNumbers","output","parsedTarget","targetTransformer","invariant","check","prevTime","onNextFrame","timeToCall","createStep","setRunNextFrame","processToRun","processToRunNextFrame","numThisFrame","isProcessing","cancelled","toKeepAlive","renderStep","process","indexOfCallback","frame","process_1","keepAlive","immediate","addToCurrentBuffer","buffer","maxElapsed","defaultElapsed","useDefaultElapsed","willRunNextFrame","stepsOrder","setWillRunNextFrame","willRun","steps","acc","sync","startLoop","cancelSync","processStep","stepId","processFrame","getFrameData","DEFAULT_OVERSHOOT_STRENGTH","reversed","easing","createReversedEasing","createExpoIn","power","createBackIn","createAnticipateEasing","backEasing","linear","easeIn","easeOut","anticipate","isNum","curryRange","cv","clamp$1","progress","toFromDifference","mix","mixLinearColor","fromExpo","toExpo","colorTypes","getColorType","notAnimatable","color$$1","mixColor","fromColorType","toColorType","fromColor","toColor","blended","mixFunc","combineFunctions","pipe","transformers","_i","getMixer","origin","mixComplex","mixArray","blendValue","fromThis","analyse","numRGB","numHSL","originStats","targetStats","velocityPerFrame","xps","frameDuration","velocityPerSecond","velocity","createStyler","onRead","onRender","uncachedValues","_c","useCache","changedValues","hasChanged","setValue","currentValue","styler","forceRead","useCached","forceRender","CAMEL_CASE_PATTERN","REPLACE_TEMPLATE","camelToDash","camelCache","dashCache","prefixes","numPrefixes","isBrowser","testElement","setDashPrefix","prefixed","testPrefix","prefix","noPrefix","prefixedPropertyName","setServerProperty","prefixer","asDashCase","axes","order","transformProps","axesAcc","axesKey","transformPropDictionary","dict","isTransformProp","sortTransformProps","transformOriginProps","isTransformOriginProp","int","valueTypes","getValueType","getValueAsType","SCROLL_LEFT","SCROLL_TOP","scrollKeys","blacklist","translateAlias","isCustomTemplate","buildTransform","transform","transformKeys","transformIsDefault","enableHardwareAcceleration","allowTransformNone","transformString","transformHasZ","numTransformKeys","buildStyleProperty","styles","transformOrigin","isDashCase","hasTransform","hasTransformOrigin","valueType","valueAsType","createStyleBuilder","_d","preparseOutput","defaultValueType","domValue","buildStyles","hasCSSVariable","numChangedValues","cssStyler","createCssStyler","camelCaseAttributes","defaultOrigin","svgAttrsTemplate","progressToPixels","unmeasured","calcOrigin","offset","calculateSVGTransformOrigin","dimensions","originX","originY","svgStyleConfig","buildSVGAttrs","totalPathLength","cssBuilder","attrX","attrY","pathLength","pathSpacing","pathOffset","style","attrKey","createAttrBuilder","getDimensions","getSVGElementDimensions","isPath","svgStyler","buildAttrs","svg","viewport","scrollTop","scrollLeft","isHTMLElement","isSVGElement","createDOMStyler","getStyler","nodeOrSelector","Chainable","middleware","funcs","pipedUpdate","update","predicate","complete","Observer","observer","onComplete","createObserver","observerCandidate","Action","isComplete","subscription","init","observerProps","multi","getCount","getFirst","getOutput","mapApi","setProp","startActions","numActions","updateOutput","numCompletedActions","subs","hasCompleted","composite","propKey","starter","parallel","sub","parallel$1","createVectorTests","typeTests","testNames","isVectorProp","getVectorKeys","vectorKeys","testVectorProps","unitTypes","findUnitType","isUnitProp","createAction","reduceArrayValue","createArrayAction","firstVectorKey","actionList","childActionProps","getActionCreator","reduceObjectValue","createObjectAction","actionMap","map","createUnitAction","unitType","createMixerAction","mixer","createColorAction","createComplexAction","createVectorAction","vectorAction","isVector","testKey","testProp","decay","timeConstant","_f","restDelta","modifyTarget","elapsed","amplitude","idealTarget","frameDelta","delta","isMoving","spring","stiffness","damping","_g","mass","_h","restSpeed","_j","initialVelocity","prevPosition","timeDelta","dampingRatio","angularFreq","envelope","expoDecay","isBelowVelocityThreshold","isBelowDisplacementThreshold","inertia","bounceStiffness","bounceDamping","prev","activeAnimation","isOutOfBounds","boundaryNearest","startAnimation","animation","next","startSpring","boundary_1","heading_1","scrubber","ease","reverseEase","vectorScrubber","clampProgress","tween","duration","flip","loop","yoyo","repeatDelay","_k","_l","flipCount","_m","yoyoCount","_o","loopCount","playhead","currentProgress","isActive","reverseAnimation","isTweenComplete","updateTween","startTimer","stopTimer","newProgress","physics","acceleration","friction","springStrength","distanceToTarget","eventNames","eventName","defaultPointerPos","eventToPoint","point","points","updatePointsLocation","touches","numTouches","thisTouch","updatePointLocation","toggleAccordion","opened","padding","divStyler","easing.anticipate","removeMarkdown","md","htmlReplaceRegex","joinedHtmlTagsToSkip","entities","regex","encodeCache","getEncodeCache","exclude","keepEscaped","nextCode","encode_1","decodeCache","getDecodeCache","decode","seq","b1","b2","b3","b4","chr","decode_1","Url","protocolPattern","portPattern","simplePathPattern","delims","unwise","autoEscape","nonHostChars","hostEndingChars","hostnameMaxLen","hostnamePartPattern","hostnamePartStart","hostlessProtocol","slashedProtocol","urlParse","slashesDenoteHost","lowerProto","hec","slashes","rest","simplePath","hostEnd","auth","atSign","host","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","hash","qm","port","mdurl$1","require$$0","require$$1","require$$2","require$$3","uc_micro","require$$4","_class","_hasOwnProperty","has","sources","arrayReplaceAt","pos","newElements","isValidEntityCode","fromCodePoint","surrogate1","surrogate2","UNESCAPE_MD_RE","ENTITY_RE","UNESCAPE_ALL_RE","DIGITAL_ENTITY_TEST_RE","replaceEntityPattern","unescapeMd","unescapeAll","escaped","entity","HTML_ESCAPE_TEST_RE","HTML_ESCAPE_REPLACE_RE","HTML_REPLACEMENTS","replaceUnsafeChar","REGEXP_ESCAPE_RE","escapeRE","isSpace","isWhiteSpace","UNICODE_PUNCT_RE","isPunctChar","isMdAsciiPunct","normalizeReference","parse_link_label","disableNested","level","found","marker","prevPos","labelEnd","oldPos","parse_link_destination","parse_link_title","helpers$1","default_rules","idx","env","slf","info","langName","langAttrs","highlighted","tmpAttrs","tmpToken","Renderer","Renderer$1","nextToken","needLf","renderer","Ruler","chains","rule","altName","Ruler$3","beforeName","ruleName","afterName","ignoreInvalid","chainName","ruler","NEWLINES_RE","NULL_RE","inline","tok","isLinkOpen","isLinkClose","linkify","currentToken","nodes","ln","lastPos","htmlLinkLevel","fullUrl","urlText","blockTokens","links","RARE_RE","SCOPED_ABBR_TEST_RE","SCOPED_ABBR_RE","SCOPED_ABBR","replaceFn","replace_scoped","inlineTokens","inside_autolink","replace_rare","replacements","blkIdx","QUOTE_TEST_RE","QUOTE_RE","APOSTROPHE","replaceAt","process_inlines","thisLevel","lastChar","isLastPunctChar","isNextPunctChar","isLastWhiteSpace","isNextWhiteSpace","canOpen","canClose","isSingle","openQuote","closeQuote","OUTER","smartquotes","text_join","curr","Token","nesting","Token$3","attrData","StateCore","state_core","_rules","require$$5","require$$6","require$$7","Core","require$$8","parser_core","getLine","escapedSplit","isEscaped","table","startLine","endLine","silent","lineText","nextLine","columns","columnCount","aligns","tableLines","tbodyLines","oldParentType","terminate","terminatorRules","firstCh","secondCh","fence","mem","markup","haveEndMarker","blockquote","adjustTab","initial","lastLineEmpty","oldBMarks","oldBSCount","oldIndent","oldSCount","oldTShift","spaceAfterMarker","isOutdented","oldLineMax","hr","cnt","skipBulletListMarker","skipOrderedListMarker","markTightParagraphs","contentStart","indent","indentAfterMarker","isOrdered","itemLines","listLines","listTokIdx","markerCharCode","markerValue","oldListIndent","oldTight","posAfterMarker","prevEmptyEnd","isTerminatingParagraph","tight","reference","_endLine","destEndPos","destEndLineNo","label","html_blocks","attr_name","unquoted","single_quoted","double_quoted","attr_value","open_tag","close_tag","comment","processing","declaration","cdata","HTML_TAG_RE","HTML_OPEN_CLOSE_TAG_RE","html_re","block_names","HTML_SEQUENCES","html_block","heading","tmp","lheading","paragraph","StateBlock","indent_found","begin","keepLastLF","lineIndent","queue","lineStart","state_block","require$$9","require$$10","require$$11","ParserBlock","ParserBlock$1","ok","prevLine","hasEmptyLines","maxNesting","outTokens","require$$12","parser_block","isTerminatorChar","SCHEME_RE","newline","pmax","ws","ESCAPED","_escape","ch1","ch2","origStr","escapedStr","backticks","matchStart","matchEnd","openerLength","closerLength","strikethrough","scanned","postProcess","delimiters","startDelim","endDelim","loneMarkers","tokens_meta","emphasis","isStrong","labelStart","parseReference","image","EMAIL_RE","AUTOLINK_RE","autolink","isLetter","lc","html_inline","DIGITAL_RE","NAMED_RE","processDelimiters","closerIdx","openerIdx","closer","opener","minOpenerIdx","newMinOpenerIdx","isOddMatch","lastJump","openersBottom","headerIdx","lastTokenIdx","jumps","balance_pairs","fragments_join","StateInline","token_meta","canSplitWord","can_open","can_close","left_flanking","right_flanking","state_inline","_rules2","require$$13","require$$14","ParserInline","require$$15","parser_inline","re","text_separators","defaultOptions","isOptionsObj","defaultSchemas","tlds_2ch_src_re","tlds_default","resetScanCache","createValidator","createNormalizer","compile","tlds","untpl","tpl","aliases","schemaError","compiled","alias","slist","Match","shift","createMatch","LinkifyIt","schemas","LinkifyIt$1","ml","me","tld_pos","at_pos","keepOld","linkifyIt","maxInt","base","tMin","tMax","skew","damp","initialBias","initialN","regexPunycode","regexNonASCII","regexSeparators","errors","baseMinusTMin","floor","stringFromCharCode","array","mapDomain","labels","encoded","ucs2decode","counter","extra","ucs2encode","codePoints","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","numPoints","firstTime","inputLength","bias","basic","oldi","baseMinusT","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","toUnicode","toASCII","_default","zero","commonmark","ParserCore","mdurl","punycode","BAD_PROTO_RE","GOOD_DATA_RE","validateLink","RECODE_HOSTNAME_FOR","normalizeLink","normalizeLinkText","MarkdownIt","presetName","presets","missed","lib","markdownIt","markdown","_env","s_open","s_close","renderMarkdown","filesize","formatDate","formatFromNow","today","dateWithoutTime","formatRelativeIfRecentDate","DONT_ROUND_DIFF","truncate","excerpt","RemoveMarkdown","constructUrl","baseUrl","useOEmbed","staticUrl","__props","embedText","extrasExpanded","extrasRef","harvestExpanded","harvestRef","textAreaRef","selectContent","expand","extrasExpand","hasExtras","foundGranularities","foundFrequencies","PUBLIC_SERVICE","CERTIFIED","useOrganizationCertified","organizationRef","organizationCertified","isOrganizationCertified","organization","toValue","badge","useOwnerName","owned","owner","archive","documentation","file","useResourceImage","A","J","F","N","O","C","z","X","toast","createToaster","useToast","useSchema","loading","catalog","schemaName","authorizeValidation","documentationUrl","validationUrl","schemaPath","schemaVersion","versionUrl","query","schemaReport","report","reportedError","useUserAvatar","user","getIdenticon","avatarUrl","tryOnScopeDispose","getCurrentScope","onScopeDispose","unref","isClient","tryOnMounted","nextTick","computedAsync","evaluationCallback","initialState","optionsOrRef","lazy","evaluating","shallow","started","shallowRef","watchEffect","onInvalidate","counterAtBeginning","hasFinished","cancelCallback","unrefElement","elRef","plain","defaultWindow","templateRef","initialValue","_trigger","customRef","track","onUpdated","useMounted","isMounted","useSupported","useResizeObserver","window","observerOptions","isSupported","cleanup","stopWatch","els","_el","stop","useElementSize","initialSize","box","isSVG","width","height","stop1","entry","boxSize","$elem","formatBoxSize","inlineSize","blockSize","ele","stop2","placeholderUrl","__variableDynamicImportRuntimeHelper","alternativeTextForDefinedImageOnly","quality_max_score","high","button","toggletip","shown","getRandomId","toggle","hide","hideIfOutside","ownerName","uid","ContentLoader","idClip","idGradient","computedViewBox","mergeProps","resourceType","adminUrl","_sfc_render","_ctx","_cache","_openBlock","_createElementBlock","_hoisted_1","useComponentsForHook","components","getComponentsForHook","useTabs","tabsRef","tablistRef","tabCount","initialSelectedIndex","selectedIndex","generatedIds","asc","resizeObserver","getTabPanels","renderTabs","isSelected","tablistHeight","selectedTab","selectedTabHeight","getIdFromIndex","selectIndex","selectPrevious","newIndex","selectNext","selectFirst","selectLast","contentRef","copyRef","tabListRef","explore","structure","schemaUrl","hasSchema","hasExplore","resourcePreviewIndex","resourceStructureIndex","resourceInformationIndex","expanded","registerEvent","resourcePreviewButtonId","resourceStructureButtonId","resourceInformationButtonId","tab","tabName","getTabPanelClass","selected","getTabPanelTabIndex","selectTab","availabilityChecked","lastUpdate","unavailable","hasSchemaErrors","resourceExternalUrl","resourceContentId","resourceHeaderId","resourceTitleId","resourceCopyId","resourcePreviewTabId","resourcePreviewSelected","resourcePreviewTabIndex","resourcePreviewClass","resourceStructureTabId","resourceStructureSelected","resourceStructureTabIndex","resourceStructureClass","resourceInformationTabId","resourceInformationSelected","resourceInformationTabIndex","resourceInformationClass","translateValueFrom","translateValueTo","emit","__emit","onClick","nextPage","previousPage","DEFAULT_HEIGHT","readMoreRequired","containerRef","readMoreRef","containerHeight","getHeight","elt","getDefaultHeight","elementMaxHeight","updateReadMoreHeight","wellClass","weightClass","classes","symbolMap","numberMap","last2Digits","lastDigit","lastNumber","softMutation","mutationTable","mutation","relativeTimeWithMutation","specialMutationForYears","ord","texts","relativeTimeFormatter","relativeTimeWithTense","past","future","words","monthFormat","monthStandalone","MONTHS_IN_FORMAT","dayjsInstance","_s","___","resolveTemplate","suffixIndex","keyShouldBeSingular","correctedKey","unitText","englishToArabicNumbersMap","arabicToEnglishNumbersMap","monthShortFormat","monthShortStandalone","word","forms","relativeTimeWithPlural","monthsShort","dual","threeFour","translator","wordKey","period","hm"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,61,62,63,65,66,71,73,74,75,76,77,78,79,80,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,165,170,171,176,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329]}