{"version":3,"sources":["mod::vue/node_modules/@vue/shared/dist/shared.cjs.prod.js","mod::vue/node_modules/@vue/shared/index.js","/opt/whdata/generated/platform/ap/kiek.kiek/build/https:/raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/decode-data-html.ts","/opt/whdata/generated/platform/ap/kiek.kiek/build/https:/raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/decode-data-xml.ts","/opt/whdata/generated/platform/ap/kiek.kiek/build/https:/raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/decode_codepoint.ts","/opt/whdata/generated/platform/ap/kiek.kiek/build/https:/raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/decode.ts","mod::vue/node_modules/@babel/parser/src/util/location.ts","mod::vue/node_modules/@babel/parser/src/parse-error/module-errors.ts","mod::vue/node_modules/@babel/parser/src/parse-error/to-node-description.ts","mod::vue/node_modules/@babel/parser/src/parse-error/standard-errors.ts","mod::vue/node_modules/@babel/parser/src/parse-error/strict-mode-errors.ts","mod::vue/node_modules/@babel/parser/src/parse-error/parse-expression-errors.ts","mod::vue/node_modules/@babel/parser/src/parse-error/pipeline-operator-errors.ts","mod::vue/node_modules/@babel/parser/src/parse-error.ts","mod::vue/node_modules/@babel/parser/src/options.ts","mod::vue/node_modules/@babel/parser/src/plugins/estree.ts","mod::vue/node_modules/@babel/parser/src/tokenizer/context.ts","mod::vue/node_modules/@babel/parser/src/tokenizer/types.ts","mod::vue/node_modules/@babel/babel-helper-validator-identifier/src/identifier.ts","mod::vue/node_modules/@babel/babel-helper-validator-identifier/src/keyword.ts","mod::vue/node_modules/@babel/parser/src/util/identifier.ts","mod::vue/node_modules/@babel/parser/src/util/scope.ts","mod::vue/node_modules/@babel/parser/src/plugins/flow/scope.ts","mod::vue/node_modules/@babel/parser/src/plugins/flow/index.ts","mod::vue/node_modules/@babel/parser/src/plugins/jsx/xhtml.ts","mod::vue/node_modules/@babel/parser/src/util/whitespace.ts","mod::vue/node_modules/@babel/parser/src/plugins/jsx/index.ts","mod::vue/node_modules/@babel/parser/src/plugins/typescript/scope.ts","mod::vue/node_modules/@babel/parser/src/util/production-parameter.ts","mod::vue/node_modules/@babel/parser/src/parser/base.ts","mod::vue/node_modules/@babel/parser/src/parser/comments.ts","mod::vue/node_modules/@babel/parser/src/tokenizer/state.ts","mod::vue/node_modules/@babel/babel-helper-string-parser/src/index.ts","mod::vue/node_modules/@babel/parser/src/tokenizer/index.ts","mod::vue/node_modules/@babel/parser/src/util/class-scope.ts","mod::vue/node_modules/@babel/parser/src/util/expression-scope.ts","mod::vue/node_modules/@babel/parser/src/parser/util.ts","mod::vue/node_modules/@babel/parser/src/parser/node.ts","mod::vue/node_modules/@babel/parser/src/parser/lval.ts","mod::vue/node_modules/@babel/parser/src/plugins/typescript/index.ts","mod::vue/node_modules/@babel/parser/src/plugins/placeholders.ts","mod::vue/node_modules/@babel/parser/src/plugins/v8intrinsic.ts","mod::vue/node_modules/@babel/parser/src/plugin-utils.ts","mod::vue/node_modules/@babel/parser/src/parser/expression.ts","mod::vue/node_modules/@babel/parser/src/parser/statement.ts","mod::vue/node_modules/@babel/parser/src/parser/index.ts","mod::vue/node_modules/@babel/parser/src/index.ts","mod::vue/node_modules/estree-walker/dist/umd/estree-walker.js","mod::vue/node_modules/source-map-js/lib/base64.js","mod::vue/node_modules/source-map-js/lib/base64-vlq.js","mod::vue/node_modules/source-map-js/lib/util.js","mod::vue/node_modules/source-map-js/lib/array-set.js","mod::vue/node_modules/source-map-js/lib/mapping-list.js","mod::vue/node_modules/source-map-js/lib/source-map-generator.js","mod::vue/node_modules/source-map-js/lib/binary-search.js","mod::vue/node_modules/source-map-js/lib/quick-sort.js","mod::vue/node_modules/source-map-js/lib/source-map-consumer.js","mod::vue/node_modules/source-map-js/lib/source-node.js","mod::vue/node_modules/source-map-js/source-map.js","mod::vue/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js","mod::vue/node_modules/@vue/compiler-core/index.js","mod::vue/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js","mod::vue/node_modules/@vue/compiler-dom/index.js","mod::vue/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js","mod::vue/node_modules/@vue/reactivity/index.js","mod::vue/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js","mod::vue/node_modules/@vue/runtime-core/index.js","mod::vue/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js","mod::vue/node_modules/@vue/runtime-dom/index.js","mod::vue/node_modules/vue/dist/vue.cjs.prod.js","mod::vue/node_modules/vue/index.js","@webhare/env/src/envbackend.ts","@webhare/env/src/init-browser.ts","@webhare/dompack/src/tree.ts","@webhare/std/src/collections.ts","@webhare/std/src/localmutex.ts","@webhare/frontend/src/init.ts","@webhare/tsrun/src/polyfills.ts","mod::publisher/js/internal/polyfills/iterator-helpers.ts","@webhare/env/src/whglobal.ts","mod::system/js/dompack/src/events.ts","@webhare/dompack/src/browser.ts","mod::publisher/js/internal/polyfills/publisher-integration.ts","mod::kiek/webdesigns/kiek/frontend/frontend.ts","mod::kiek/webdesigns/kiek/frontend/lib/dialog.ts","mod::kiek/webdesigns/kiek/frontend/lib/site.ts","mod::kiek/webdesigns/kiek/frontend/lib/dc.ts","mod::kiek/webdesigns/kiek/frontend/lib/helmet.ts","mod::kiek/webdesigns/kiek/frontend/views/App.logic.js","mod::kiek/webdesigns/kiek/frontend/views/App.helmet.ts","mod::kiek/webdesigns/kiek/frontend/views/Beheer.logic.js","mod::kiek/webdesigns/kiek/frontend/views/Beheer.helmet.ts","/opt/whdata/generated/platform/ap/kiek.kiek/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Beheer.vue","/opt/whdata/generated/platform/ap/kiek.kiek/build/sfc-template:/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Beheer.vue?type=template","mod::kiek/webdesigns/kiek/frontend/views/Beheer.vue","/opt/whdata/generated/platform/ap/kiek.kiek/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/App.vue","/opt/whdata/generated/platform/ap/kiek.kiek/build/sfc-template:/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/App.vue?type=template","mod::kiek/webdesigns/kiek/frontend/views/App.vue","mod::kiek/webdesigns/kiek/frontend/views/Aanmelden.logic.js","mod::kiek/webdesigns/kiek/frontend/views/Aanmelden.helmet.ts","/opt/whdata/generated/platform/ap/kiek.kiek/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Aanmelden.vue","/opt/whdata/generated/platform/ap/kiek.kiek/build/sfc-template:/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Aanmelden.vue?type=template","mod::kiek/webdesigns/kiek/frontend/views/Aanmelden.vue","mod::kiek/webdesigns/kiek/frontend/views/Homepage.logic.js","mod::kiek/webdesigns/kiek/frontend/views/Homepage.helmet.ts","mod::kiek/webdesigns/kiek/frontend/lib/research.ts","/opt/whdata/generated/platform/ap/kiek.kiek/build/sfc-template:/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/components/ResearchCards.vue?type=template","mod::kiek/webdesigns/kiek/frontend/components/ResearchCards.vue","/opt/whdata/generated/platform/ap/kiek.kiek/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Homepage.vue","/opt/whdata/generated/platform/ap/kiek.kiek/build/sfc-template:/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Homepage.vue?type=template","mod::kiek/webdesigns/kiek/frontend/views/Homepage.vue","mod::kiek/webdesigns/kiek/frontend/views/Login.logic.js","mod::kiek/webdesigns/kiek/frontend/views/Login.helmet.ts","/opt/whdata/generated/platform/ap/kiek.kiek/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Login.vue","/opt/whdata/generated/platform/ap/kiek.kiek/build/sfc-template:/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Login.vue?type=template","mod::kiek/webdesigns/kiek/frontend/views/Login.vue","mod::kiek/webdesigns/kiek/frontend/views/Overzicht.logic.js","mod::kiek/webdesigns/kiek/frontend/views/Overzicht.helmet.ts","/opt/whdata/generated/platform/ap/kiek.kiek/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Overzicht.vue","/opt/whdata/generated/platform/ap/kiek.kiek/build/sfc-template:/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Overzicht.vue?type=template","mod::kiek/webdesigns/kiek/frontend/views/Overzicht.vue","/entrypoint.js"],"sourcesContent":["/**\n* @vue/shared v3.5.18\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction makeMap(str) {\n  const map = /* @__PURE__ */ Object.create(null);\n  for (const key of str.split(\",\")) map[key] = 1;\n  return (val) => val in map;\n}\n\nconst EMPTY_OBJ = {};\nconst EMPTY_ARR = [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n  const i = arr.indexOf(el);\n  if (i > -1) {\n    arr.splice(i, 1);\n  }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n  return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n  return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n  // the leading comma is intentional so empty string \"\" is also included\n  \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n  \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst 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 camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction(\n  (str) => {\n    return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n  }\n);\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n  (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n  return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction(\n  (str) => {\n    const s = str ? `on${capitalize(str)}` : ``;\n    return s;\n  }\n);\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, ...arg) => {\n  for (let i = 0; i < fns.length; i++) {\n    fns[i](...arg);\n  }\n};\nconst def = (obj, key, value, writable = false) => {\n  Object.defineProperty(obj, key, {\n    configurable: true,\n    enumerable: false,\n    writable,\n    value\n  });\n};\nconst looseToNumber = (val) => {\n  const n = parseFloat(val);\n  return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n  const n = isString(val) ? Number(val) : NaN;\n  return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n  return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n  return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\nfunction genCacheKey(source, options) {\n  return source + JSON.stringify(\n    options,\n    (_, val) => typeof val === \"function\" ? val.toString() : val\n  );\n}\n\nconst PatchFlags = {\n  \"TEXT\": 1,\n  \"1\": \"TEXT\",\n  \"CLASS\": 2,\n  \"2\": \"CLASS\",\n  \"STYLE\": 4,\n  \"4\": \"STYLE\",\n  \"PROPS\": 8,\n  \"8\": \"PROPS\",\n  \"FULL_PROPS\": 16,\n  \"16\": \"FULL_PROPS\",\n  \"NEED_HYDRATION\": 32,\n  \"32\": \"NEED_HYDRATION\",\n  \"STABLE_FRAGMENT\": 64,\n  \"64\": \"STABLE_FRAGMENT\",\n  \"KEYED_FRAGMENT\": 128,\n  \"128\": \"KEYED_FRAGMENT\",\n  \"UNKEYED_FRAGMENT\": 256,\n  \"256\": \"UNKEYED_FRAGMENT\",\n  \"NEED_PATCH\": 512,\n  \"512\": \"NEED_PATCH\",\n  \"DYNAMIC_SLOTS\": 1024,\n  \"1024\": \"DYNAMIC_SLOTS\",\n  \"DEV_ROOT_FRAGMENT\": 2048,\n  \"2048\": \"DEV_ROOT_FRAGMENT\",\n  \"CACHED\": -1,\n  \"-1\": \"CACHED\",\n  \"BAIL\": -2,\n  \"-2\": \"BAIL\"\n};\nconst PatchFlagNames = {\n  [1]: `TEXT`,\n  [2]: `CLASS`,\n  [4]: `STYLE`,\n  [8]: `PROPS`,\n  [16]: `FULL_PROPS`,\n  [32]: `NEED_HYDRATION`,\n  [64]: `STABLE_FRAGMENT`,\n  [128]: `KEYED_FRAGMENT`,\n  [256]: `UNKEYED_FRAGMENT`,\n  [512]: `NEED_PATCH`,\n  [1024]: `DYNAMIC_SLOTS`,\n  [2048]: `DEV_ROOT_FRAGMENT`,\n  [-1]: `CACHED`,\n  [-2]: `BAIL`\n};\n\nconst ShapeFlags = {\n  \"ELEMENT\": 1,\n  \"1\": \"ELEMENT\",\n  \"FUNCTIONAL_COMPONENT\": 2,\n  \"2\": \"FUNCTIONAL_COMPONENT\",\n  \"STATEFUL_COMPONENT\": 4,\n  \"4\": \"STATEFUL_COMPONENT\",\n  \"TEXT_CHILDREN\": 8,\n  \"8\": \"TEXT_CHILDREN\",\n  \"ARRAY_CHILDREN\": 16,\n  \"16\": \"ARRAY_CHILDREN\",\n  \"SLOTS_CHILDREN\": 32,\n  \"32\": \"SLOTS_CHILDREN\",\n  \"TELEPORT\": 64,\n  \"64\": \"TELEPORT\",\n  \"SUSPENSE\": 128,\n  \"128\": \"SUSPENSE\",\n  \"COMPONENT_SHOULD_KEEP_ALIVE\": 256,\n  \"256\": \"COMPONENT_SHOULD_KEEP_ALIVE\",\n  \"COMPONENT_KEPT_ALIVE\": 512,\n  \"512\": \"COMPONENT_KEPT_ALIVE\",\n  \"COMPONENT\": 6,\n  \"6\": \"COMPONENT\"\n};\n\nconst SlotFlags = {\n  \"STABLE\": 1,\n  \"1\": \"STABLE\",\n  \"DYNAMIC\": 2,\n  \"2\": \"DYNAMIC\",\n  \"FORWARDED\": 3,\n  \"3\": \"FORWARDED\"\n};\nconst slotFlagsText = {\n  [1]: \"STABLE\",\n  [2]: \"DYNAMIC\",\n  [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\nconst isGloballyWhitelisted = isGloballyAllowed;\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n  start = Math.max(0, Math.min(start, source.length));\n  end = Math.max(0, Math.min(end, source.length));\n  if (start > end) return \"\";\n  let lines = source.split(/(\\r?\\n)/);\n  const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n  lines = lines.filter((_, idx) => idx % 2 === 0);\n  let count = 0;\n  const res = [];\n  for (let i = 0; i < lines.length; i++) {\n    count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n    if (count >= start) {\n      for (let j = i - range; j <= i + range || end > count; j++) {\n        if (j < 0 || j >= lines.length) continue;\n        const line = j + 1;\n        res.push(\n          `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}|  ${lines[j]}`\n        );\n        const lineLength = lines[j].length;\n        const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n        if (j === i) {\n          const pad = start - (count - (lineLength + newLineSeqLength));\n          const length = Math.max(\n            1,\n            end > count ? lineLength - pad : end - start\n          );\n          res.push(`   |  ` + \" \".repeat(pad) + \"^\".repeat(length));\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 + newLineSeqLength;\n        }\n      }\n      break;\n    }\n  }\n  return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n  if (isArray(value)) {\n    const res = {};\n    for (let i = 0; i < value.length; i++) {\n      const item = value[i];\n      const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n      if (normalized) {\n        for (const key in normalized) {\n          res[key] = normalized[key];\n        }\n      }\n    }\n    return res;\n  } else if (isString(value) || isObject(value)) {\n    return value;\n  }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n  const ret = {};\n  cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n    if (item) {\n      const tmp = item.split(propertyDelimiterRE);\n      tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n    }\n  });\n  return ret;\n}\nfunction stringifyStyle(styles) {\n  if (!styles) return \"\";\n  if (isString(styles)) return styles;\n  let ret = \"\";\n  for (const key in styles) {\n    const value = styles[key];\n    if (isString(value) || typeof value === \"number\") {\n      const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n      ret += `${normalizedKey}:${value};`;\n    }\n  }\n  return ret;\n}\nfunction normalizeClass(value) {\n  let res = \"\";\n  if (isString(value)) {\n    res = value;\n  } else if (isArray(value)) {\n    for (let i = 0; i < value.length; i++) {\n      const normalized = normalizeClass(value[i]);\n      if (normalized) {\n        res += normalized + \" \";\n      }\n    }\n  } else if (isObject(value)) {\n    for (const name in value) {\n      if (value[name]) {\n        res += name + \" \";\n      }\n    }\n  }\n  return res.trim();\n}\nfunction normalizeProps(props) {\n  if (!props) return null;\n  let { class: klass, style } = props;\n  if (klass && !isString(klass)) {\n    props.class = normalizeClass(klass);\n  }\n  if (style) {\n    props.style = normalizeStyle(style);\n  }\n  return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n  specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n  return !!value || value === \"\";\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n  if (attrValidationCache.hasOwnProperty(name)) {\n    return attrValidationCache[name];\n  }\n  const isUnsafe = unsafeAttrCharRE.test(name);\n  if (isUnsafe) {\n    console.error(`unsafe attribute name: ${name}`);\n  }\n  return attrValidationCache[name] = !isUnsafe;\n}\nconst propsToAttrMap = {\n  acceptCharset: \"accept-charset\",\n  className: \"class\",\n  htmlFor: \"for\",\n  httpEquiv: \"http-equiv\"\n};\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n  `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n  `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\nconst isKnownMathMLAttr = /* @__PURE__ */ makeMap(\n  `accent,accentunder,actiontype,align,alignmentscope,altimg,altimg-height,altimg-valign,altimg-width,alttext,bevelled,close,columnsalign,columnlines,columnspan,denomalign,depth,dir,display,displaystyle,encoding,equalcolumns,equalrows,fence,fontstyle,fontweight,form,frame,framespacing,groupalign,height,href,id,indentalign,indentalignfirst,indentalignlast,indentshift,indentshiftfirst,indentshiftlast,indextype,justify,largetop,largeop,lquote,lspace,mathbackground,mathcolor,mathsize,mathvariant,maxsize,minlabelspacing,mode,other,overflow,position,rowalign,rowlines,rowspan,rquote,rspace,scriptlevel,scriptminsize,scriptsizemultiplier,selection,separator,separators,shift,side,src,stackalign,stretchy,subscriptshift,superscriptshift,symmetric,voffset,width,widths,xlink:href,xlink:show,xlink:type,xmlns`\n);\nfunction isRenderableAttrValue(value) {\n  if (value == null) {\n    return false;\n  }\n  const type = typeof value;\n  return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n  const str = \"\" + string;\n  const match = escapeRE.exec(str);\n  if (!match) {\n    return str;\n  }\n  let html = \"\";\n  let escaped;\n  let index;\n  let lastIndex = 0;\n  for (index = match.index; index < str.length; index++) {\n    switch (str.charCodeAt(index)) {\n      case 34:\n        escaped = \"&quot;\";\n        break;\n      case 38:\n        escaped = \"&amp;\";\n        break;\n      case 39:\n        escaped = \"&#39;\";\n        break;\n      case 60:\n        escaped = \"&lt;\";\n        break;\n      case 62:\n        escaped = \"&gt;\";\n        break;\n      default:\n        continue;\n    }\n    if (lastIndex !== index) {\n      html += str.slice(lastIndex, index);\n    }\n    lastIndex = index + 1;\n    html += escaped;\n  }\n  return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\nconst commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;\nfunction escapeHtmlComment(src) {\n  return src.replace(commentStripRE, \"\");\n}\nconst cssVarNameEscapeSymbolsRE = /[ !\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~]/g;\nfunction getEscapedCssVarName(key, doubleEscape) {\n  return key.replace(\n    cssVarNameEscapeSymbolsRE,\n    (s) => doubleEscape ? s === '\"' ? '\\\\\\\\\\\\\"' : `\\\\\\\\${s}` : `\\\\${s}`\n  );\n}\n\nfunction looseCompareArrays(a, b) {\n  if (a.length !== b.length) return false;\n  let equal = true;\n  for (let i = 0; equal && i < a.length; i++) {\n    equal = looseEqual(a[i], b[i]);\n  }\n  return equal;\n}\nfunction looseEqual(a, b) {\n  if (a === b) return true;\n  let aValidType = isDate(a);\n  let bValidType = isDate(b);\n  if (aValidType || bValidType) {\n    return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n  }\n  aValidType = isSymbol(a);\n  bValidType = isSymbol(b);\n  if (aValidType || bValidType) {\n    return a === b;\n  }\n  aValidType = isArray(a);\n  bValidType = isArray(b);\n  if (aValidType || bValidType) {\n    return aValidType && bValidType ? looseCompareArrays(a, b) : false;\n  }\n  aValidType = isObject(a);\n  bValidType = isObject(b);\n  if (aValidType || bValidType) {\n    if (!aValidType || !bValidType) {\n      return false;\n    }\n    const aKeysCount = Object.keys(a).length;\n    const bKeysCount = Object.keys(b).length;\n    if (aKeysCount !== bKeysCount) {\n      return false;\n    }\n    for (const key in a) {\n      const aHasKey = a.hasOwnProperty(key);\n      const bHasKey = b.hasOwnProperty(key);\n      if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {\n        return false;\n      }\n    }\n  }\n  return String(a) === String(b);\n}\nfunction looseIndexOf(arr, val) {\n  return arr.findIndex((item) => looseEqual(item, val));\n}\n\nconst isRef = (val) => {\n  return !!(val && val[\"__v_isRef\"] === true);\n};\nconst toDisplayString = (val) => {\n  return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n  if (isRef(val)) {\n    return replacer(_key, val.value);\n  } else if (isMap(val)) {\n    return {\n      [`Map(${val.size})`]: [...val.entries()].reduce(\n        (entries, [key, val2], i) => {\n          entries[stringifySymbol(key, i) + \" =>\"] = val2;\n          return entries;\n        },\n        {}\n      )\n    };\n  } else if (isSet(val)) {\n    return {\n      [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n    };\n  } else if (isSymbol(val)) {\n    return stringifySymbol(val);\n  } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n    return String(val);\n  }\n  return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n  var _a;\n  return (\n    // Symbol.description in es2019+ so we need to cast here to pass\n    // the lib: es2016 check\n    isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v\n  );\n};\n\nfunction normalizeCssVarValue(value) {\n  if (value == null) {\n    return \"initial\";\n  }\n  if (typeof value === \"string\") {\n    return value === \"\" ? \" \" : value;\n  }\n  return String(value);\n}\n\nexports.EMPTY_ARR = EMPTY_ARR;\nexports.EMPTY_OBJ = EMPTY_OBJ;\nexports.NO = NO;\nexports.NOOP = NOOP;\nexports.PatchFlagNames = PatchFlagNames;\nexports.PatchFlags = PatchFlags;\nexports.ShapeFlags = ShapeFlags;\nexports.SlotFlags = SlotFlags;\nexports.camelize = camelize;\nexports.capitalize = capitalize;\nexports.cssVarNameEscapeSymbolsRE = cssVarNameEscapeSymbolsRE;\nexports.def = def;\nexports.escapeHtml = escapeHtml;\nexports.escapeHtmlComment = escapeHtmlComment;\nexports.extend = extend;\nexports.genCacheKey = genCacheKey;\nexports.genPropsAccessExp = genPropsAccessExp;\nexports.generateCodeFrame = generateCodeFrame;\nexports.getEscapedCssVarName = getEscapedCssVarName;\nexports.getGlobalThis = getGlobalThis;\nexports.hasChanged = hasChanged;\nexports.hasOwn = hasOwn;\nexports.hyphenate = hyphenate;\nexports.includeBooleanAttr = includeBooleanAttr;\nexports.invokeArrayFns = invokeArrayFns;\nexports.isArray = isArray;\nexports.isBooleanAttr = isBooleanAttr;\nexports.isBuiltInDirective = isBuiltInDirective;\nexports.isDate = isDate;\nexports.isFunction = isFunction;\nexports.isGloballyAllowed = isGloballyAllowed;\nexports.isGloballyWhitelisted = isGloballyWhitelisted;\nexports.isHTMLTag = isHTMLTag;\nexports.isIntegerKey = isIntegerKey;\nexports.isKnownHtmlAttr = isKnownHtmlAttr;\nexports.isKnownMathMLAttr = isKnownMathMLAttr;\nexports.isKnownSvgAttr = isKnownSvgAttr;\nexports.isMap = isMap;\nexports.isMathMLTag = isMathMLTag;\nexports.isModelListener = isModelListener;\nexports.isObject = isObject;\nexports.isOn = isOn;\nexports.isPlainObject = isPlainObject;\nexports.isPromise = isPromise;\nexports.isRegExp = isRegExp;\nexports.isRenderableAttrValue = isRenderableAttrValue;\nexports.isReservedProp = isReservedProp;\nexports.isSSRSafeAttrName = isSSRSafeAttrName;\nexports.isSVGTag = isSVGTag;\nexports.isSet = isSet;\nexports.isSpecialBooleanAttr = isSpecialBooleanAttr;\nexports.isString = isString;\nexports.isSymbol = isSymbol;\nexports.isVoidTag = isVoidTag;\nexports.looseEqual = looseEqual;\nexports.looseIndexOf = looseIndexOf;\nexports.looseToNumber = looseToNumber;\nexports.makeMap = makeMap;\nexports.normalizeClass = normalizeClass;\nexports.normalizeCssVarValue = normalizeCssVarValue;\nexports.normalizeProps = normalizeProps;\nexports.normalizeStyle = normalizeStyle;\nexports.objectToString = objectToString;\nexports.parseStringStyle = parseStringStyle;\nexports.propsToAttrMap = propsToAttrMap;\nexports.remove = remove;\nexports.slotFlagsText = slotFlagsText;\nexports.stringifyStyle = stringifyStyle;\nexports.toDisplayString = toDisplayString;\nexports.toHandlerKey = toHandlerKey;\nexports.toNumber = toNumber;\nexports.toRawType = toRawType;\nexports.toTypeString = toTypeString;\n","'use strict'\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./dist/shared.cjs.prod.js')\n} else {\n  module.exports = require('./dist/shared.cjs.js')\n}\n",null,null,null,null,"export type Pos = {\n  start: number;\n};\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nexport class Position {\n  line: number;\n  column: number;\n  index: number;\n\n  constructor(line: number, col: number, index: number) {\n    this.line = line;\n    this.column = col;\n    this.index = index;\n  }\n}\n\nexport class SourceLocation {\n  start: Position;\n  end: Position;\n  filename: string;\n  identifierName: string | undefined | null;\n\n  constructor(start: Position, end?: Position) {\n    this.start = start;\n    // (may start as null, but initialized later)\n    this.end = end;\n  }\n}\n\n/**\n * creates a new position with a non-zero column offset from the given position.\n * This function should be only be used when we create AST node out of the token\n * boundaries, such as TemplateElement ends before tt.templateNonTail. This\n * function does not skip whitespaces.\n */\nexport function createPositionWithColumnOffset(\n  position: Position,\n  columnOffset: number,\n) {\n  const { line, column, index } = position;\n  return new Position(line, column + columnOffset, index + columnOffset);\n}\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\n\nconst code = \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\";\n\nexport default {\n  ImportMetaOutsideModule: {\n    message: `import.meta may appear only with 'sourceType: \"module\"'`,\n    code,\n  },\n  ImportOutsideModule: {\n    message: `'import' and 'export' may appear only with 'sourceType: \"module\"'`,\n    code,\n  },\n} satisfies ParseErrorTemplates;\n","const NodeDescriptions = {\n  ArrayPattern: \"array destructuring pattern\",\n  AssignmentExpression: \"assignment expression\",\n  AssignmentPattern: \"assignment expression\",\n  ArrowFunctionExpression: \"arrow function expression\",\n  ConditionalExpression: \"conditional expression\",\n  CatchClause: \"catch clause\",\n  ForOfStatement: \"for-of statement\",\n  ForInStatement: \"for-in statement\",\n  ForStatement: \"for-loop\",\n  FormalParameters: \"function parameter list\",\n  Identifier: \"identifier\",\n  ImportSpecifier: \"import specifier\",\n  ImportDefaultSpecifier: \"import default specifier\",\n  ImportNamespaceSpecifier: \"import namespace specifier\",\n  ObjectPattern: \"object destructuring pattern\",\n  ParenthesizedExpression: \"parenthesized expression\",\n  RestElement: \"rest element\",\n  UpdateExpression: {\n    true: \"prefix operation\",\n    false: \"postfix operation\",\n  },\n  VariableDeclarator: \"variable declaration\",\n  YieldExpression: \"yield expression\",\n};\n\ntype NodeTypesWithDescriptions = keyof Omit<\n  typeof NodeDescriptions,\n  \"UpdateExpression\"\n>;\n\ntype NodeWithDescription =\n  | {\n      type: \"UpdateExpression\";\n      prefix: boolean;\n    }\n  | {\n      type: NodeTypesWithDescriptions;\n    };\n\nconst toNodeDescription = (node: NodeWithDescription) =>\n  node.type === \"UpdateExpression\"\n    ? NodeDescriptions.UpdateExpression[`${node.prefix}`]\n    : NodeDescriptions[node.type];\n\nexport default toNodeDescription;\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\nimport toNodeDescription from \"./to-node-description.ts\";\n\nexport type LValAncestor =\n  | { type: \"UpdateExpression\"; prefix: boolean }\n  | {\n      type:\n        | \"ArrayPattern\"\n        | \"AssignmentExpression\"\n        | \"CatchClause\"\n        | \"ForOfStatement\"\n        | \"FormalParameters\"\n        | \"ForInStatement\"\n        | \"ForStatement\"\n        | \"ImportSpecifier\"\n        | \"ImportNamespaceSpecifier\"\n        | \"ImportDefaultSpecifier\"\n        | \"ParenthesizedExpression\"\n        | \"ObjectPattern\"\n        | \"RestElement\"\n        | \"VariableDeclarator\";\n    };\n\nexport default {\n  AccessorIsGenerator: ({ kind }: { kind: \"get\" | \"set\" }) =>\n    `A ${kind}ter cannot be a generator.`,\n  ArgumentsInClass:\n    \"'arguments' is only allowed in functions and class methods.\",\n  AsyncFunctionInSingleStatementContext:\n    \"Async functions can only be declared at the top level or inside a block.\",\n  AwaitBindingIdentifier:\n    \"Can not use 'await' as identifier inside an async function.\",\n  AwaitBindingIdentifierInStaticBlock:\n    \"Can not use 'await' as identifier inside a static block.\",\n  AwaitExpressionFormalParameter:\n    \"'await' is not allowed in async function parameters.\",\n  AwaitUsingNotInAsyncContext:\n    \"'await using' is only allowed within async functions and at the top levels of modules.\",\n  AwaitNotInAsyncContext:\n    \"'await' is only allowed within async functions and at the top levels of modules.\",\n  BadGetterArity: \"A 'get' accessor must not have any formal parameters.\",\n  BadSetterArity: \"A 'set' accessor must have exactly one formal parameter.\",\n  BadSetterRestParameter:\n    \"A 'set' accessor function argument must not be a rest parameter.\",\n  ConstructorClassField: \"Classes may not have a field named 'constructor'.\",\n  ConstructorClassPrivateField:\n    \"Classes may not have a private field named '#constructor'.\",\n  ConstructorIsAccessor: \"Class constructor may not be an accessor.\",\n  ConstructorIsAsync: \"Constructor can't be an async function.\",\n  ConstructorIsGenerator: \"Constructor can't be a generator.\",\n  DeclarationMissingInitializer: ({\n    kind,\n  }: {\n    kind: \"await using\" | \"const\" | \"destructuring\" | \"using\";\n  }) => `Missing initializer in ${kind} declaration.`,\n  DecoratorArgumentsOutsideParentheses:\n    \"Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.\",\n  DecoratorBeforeExport:\n    \"Decorators must be placed *before* the 'export' keyword. Remove the 'decoratorsBeforeExport: true' option to use the 'export @decorator class {}' syntax.\",\n  DecoratorsBeforeAfterExport:\n    \"Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.\",\n  DecoratorConstructor:\n    \"Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?\",\n  DecoratorExportClass:\n    \"Decorators must be placed *after* the 'export' keyword. Remove the 'decoratorsBeforeExport: false' option to use the '@decorator export class {}' syntax.\",\n  DecoratorSemicolon: \"Decorators must not be followed by a semicolon.\",\n  DecoratorStaticBlock: \"Decorators can't be used with a static block.\",\n  DeferImportRequiresNamespace:\n    'Only `import defer * as x from \"./module\"` is valid.',\n  DeletePrivateField: \"Deleting a private field is not allowed.\",\n  DestructureNamedImport:\n    \"ES2015 named imports do not destructure. Use another statement for destructuring after the import.\",\n  DuplicateConstructor: \"Duplicate constructor in the same class.\",\n  DuplicateDefaultExport: \"Only one default export allowed per module.\",\n  DuplicateExport: ({ exportName }: { exportName: string }) =>\n    `\\`${exportName}\\` has already been exported. Exported identifiers must be unique.`,\n  DuplicateProto: \"Redefinition of __proto__ property.\",\n  DuplicateRegExpFlags: \"Duplicate regular expression flag.\",\n  ElementAfterRest: \"Rest element must be last element.\",\n  EscapedCharNotAnIdentifier: \"Invalid Unicode escape.\",\n  ExportBindingIsString: ({\n    localName,\n    exportName,\n  }: {\n    localName: string;\n    exportName: string;\n  }) =>\n    `A string literal cannot be used as an exported binding without \\`from\\`.\\n- Did you mean \\`export { '${localName}' as '${exportName}' } from 'some-module'\\`?`,\n  ExportDefaultFromAsIdentifier:\n    \"'from' is not allowed as an identifier after 'export default'.\",\n\n  ForInOfLoopInitializer: ({\n    type,\n  }: {\n    type: \"ForInStatement\" | \"ForOfStatement\";\n  }) =>\n    `'${\n      type === \"ForInStatement\" ? \"for-in\" : \"for-of\"\n    }' loop variable declaration may not have an initializer.`,\n  ForInUsing: \"For-in loop may not start with 'using' declaration.\",\n\n  ForOfAsync: \"The left-hand side of a for-of loop may not be 'async'.\",\n  ForOfLet: \"The left-hand side of a for-of loop may not start with 'let'.\",\n  GeneratorInSingleStatementContext:\n    \"Generators can only be declared at the top level or inside a block.\",\n\n  IllegalBreakContinue: ({\n    type,\n  }: {\n    type: \"BreakStatement\" | \"ContinueStatement\";\n  }) => `Unsyntactic ${type === \"BreakStatement\" ? \"break\" : \"continue\"}.`,\n\n  IllegalLanguageModeDirective:\n    \"Illegal 'use strict' directive in function with non-simple parameter list.\",\n  IllegalReturn: \"'return' outside of function.\",\n  ImportAttributesUseAssert:\n    \"The `assert` keyword in import attributes is deprecated and it has been replaced by the `with` keyword. You can enable the `deprecatedImportAssert` parser plugin to suppress this error.\",\n  ImportBindingIsString: ({ importName }: { importName: string }) =>\n    `A string literal cannot be used as an imported binding.\\n- Did you mean \\`import { \"${importName}\" as foo }\\`?`,\n  ImportCallArity: `\\`import()\\` requires exactly one or two arguments.`,\n  ImportCallNotNewExpression: \"Cannot use new with import(...).\",\n  ImportCallSpreadArgument: \"`...` is not allowed in `import()`.\",\n  ImportJSONBindingNotDefault:\n    \"A JSON module can only be imported with `default`.\",\n  ImportReflectionHasAssertion: \"`import module x` cannot have assertions.\",\n  ImportReflectionNotBinding:\n    'Only `import module x from \"./module\"` is valid.',\n  IncompatibleRegExpUVFlags:\n    \"The 'u' and 'v' regular expression flags cannot be enabled at the same time.\",\n  InvalidBigIntLiteral: \"Invalid BigIntLiteral.\",\n  InvalidCodePoint: \"Code point out of bounds.\",\n  InvalidCoverDiscardElement:\n    \"'void' must be followed by an expression when not used in a binding position.\",\n  InvalidCoverInitializedName: \"Invalid shorthand property initializer.\",\n  InvalidDecimal: \"Invalid decimal.\",\n  InvalidDigit: ({ radix }: { radix: number }) =>\n    `Expected number in radix ${radix}.`,\n  InvalidEscapeSequence: \"Bad character escape sequence.\",\n  InvalidEscapeSequenceTemplate: \"Invalid escape sequence in template.\",\n  InvalidEscapedReservedWord: ({ reservedWord }: { reservedWord: string }) =>\n    `Escape sequence in keyword ${reservedWord}.`,\n  InvalidIdentifier: ({ identifierName }: { identifierName: string }) =>\n    `Invalid identifier ${identifierName}.`,\n  InvalidLhs: ({ ancestor }: { ancestor: LValAncestor }) =>\n    `Invalid left-hand side in ${toNodeDescription(ancestor)}.`,\n  InvalidLhsBinding: ({ ancestor }: { ancestor: LValAncestor }) =>\n    `Binding invalid left-hand side in ${toNodeDescription(ancestor)}.`,\n  InvalidLhsOptionalChaining: ({ ancestor }: { ancestor: LValAncestor }) =>\n    `Invalid optional chaining in the left-hand side of ${toNodeDescription(\n      ancestor,\n    )}.`,\n  InvalidNumber: \"Invalid number.\",\n  InvalidOrMissingExponent:\n    \"Floating-point numbers require a valid exponent after the 'e'.\",\n  InvalidOrUnexpectedToken: ({ unexpected }: { unexpected: string }) =>\n    `Unexpected character '${unexpected}'.`,\n  InvalidParenthesizedAssignment: \"Invalid parenthesized assignment pattern.\",\n  InvalidPrivateFieldResolution: ({\n    identifierName,\n  }: {\n    identifierName: string;\n  }) => `Private name #${identifierName} is not defined.`,\n  InvalidPropertyBindingPattern: \"Binding member expression.\",\n  InvalidRecordProperty:\n    \"Only properties and spread elements are allowed in record definitions.\",\n  InvalidRestAssignmentPattern: \"Invalid rest operator's argument.\",\n  LabelRedeclaration: ({ labelName }: { labelName: string }) =>\n    `Label '${labelName}' is already declared.`,\n  LetInLexicalBinding: \"'let' is disallowed as a lexically bound name.\",\n  LineTerminatorBeforeArrow: \"No line break is allowed before '=>'.\",\n  MalformedRegExpFlags: \"Invalid regular expression flag.\",\n  MissingClassName: \"A class name is required.\",\n  MissingEqInAssignment:\n    \"Only '=' operator can be used for specifying default value.\",\n  MissingSemicolon: \"Missing semicolon.\",\n  MissingPlugin: ({ missingPlugin }: { missingPlugin: [string] }) =>\n    `This experimental syntax requires enabling the parser plugin: ${missingPlugin\n      .map(name => JSON.stringify(name))\n      .join(\", \")}.`,\n  // FIXME: Would be nice to make this \"missingPlugins\" instead.\n  // Also, seems like we can drop the \"(s)\" from the message and just make it \"s\".\n  MissingOneOfPlugins: ({ missingPlugin }: { missingPlugin: string[] }) =>\n    `This experimental syntax requires enabling one of the following parser plugin(s): ${missingPlugin\n      .map(name => JSON.stringify(name))\n      .join(\", \")}.`,\n  MissingUnicodeEscape: \"Expecting Unicode escape sequence \\\\uXXXX.\",\n  MixingCoalesceWithLogical:\n    \"Nullish coalescing operator(??) requires parens when mixing with logical operators.\",\n  ModuleAttributeDifferentFromType:\n    \"The only accepted module attribute is `type`.\",\n  ModuleAttributeInvalidValue:\n    \"Only string literals are allowed as module attribute values.\",\n  ModuleAttributesWithDuplicateKeys: ({ key }: { key: string }) =>\n    `Duplicate key \"${key}\" is not allowed in module attributes.`,\n  ModuleExportNameHasLoneSurrogate: ({\n    surrogateCharCode,\n  }: {\n    surrogateCharCode: number;\n  }) =>\n    `An export name cannot include a lone surrogate, found '\\\\u${surrogateCharCode.toString(\n      16,\n    )}'.`,\n  ModuleExportUndefined: ({ localName }: { localName: string }) =>\n    `Export '${localName}' is not defined.`,\n  MultipleDefaultsInSwitch: \"Multiple default clauses.\",\n  NewlineAfterThrow: \"Illegal newline after throw.\",\n  NoCatchOrFinally: \"Missing catch or finally clause.\",\n  NumberIdentifier: \"Identifier directly after number.\",\n  NumericSeparatorInEscapeSequence:\n    \"Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.\",\n  ObsoleteAwaitStar:\n    \"'await*' has been removed from the async functions proposal. Use Promise.all() instead.\",\n  OptionalChainingNoNew:\n    \"Constructors in/after an Optional Chain are not allowed.\",\n  OptionalChainingNoTemplate:\n    \"Tagged Template Literals are not allowed in optionalChain.\",\n  OverrideOnConstructor:\n    \"'override' modifier cannot appear on a constructor declaration.\",\n  ParamDupe: \"Argument name clash.\",\n  PatternHasAccessor: \"Object pattern can't contain getter or setter.\",\n  PatternHasMethod: \"Object pattern can't contain methods.\",\n  PrivateInExpectedIn: ({ identifierName }: { identifierName: string }) =>\n    `Private names are only allowed in property accesses (\\`obj.#${identifierName}\\`) or in \\`in\\` expressions (\\`#${identifierName} in obj\\`).`,\n  PrivateNameRedeclaration: ({ identifierName }: { identifierName: string }) =>\n    `Duplicate private name #${identifierName}.`,\n  RecordExpressionBarIncorrectEndSyntaxType:\n    \"Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n  RecordExpressionBarIncorrectStartSyntaxType:\n    \"Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n  RecordExpressionHashIncorrectStartSyntaxType:\n    \"Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.\",\n  RecordNoProto: \"'__proto__' is not allowed in Record expressions.\",\n  RestTrailingComma: \"Unexpected trailing comma after rest element.\",\n  SloppyFunction:\n    \"In non-strict mode code, functions can only be declared at top level or inside a block.\",\n  SloppyFunctionAnnexB:\n    \"In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.\",\n  SourcePhaseImportRequiresDefault:\n    'Only `import source x from \"./module\"` is valid.',\n  StaticPrototype: \"Classes may not have static property named prototype.\",\n  SuperNotAllowed:\n    \"`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?\",\n  SuperPrivateField: \"Private fields can't be accessed on super.\",\n  TrailingDecorator: \"Decorators must be attached to a class element.\",\n  TupleExpressionBarIncorrectEndSyntaxType:\n    \"Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n  TupleExpressionBarIncorrectStartSyntaxType:\n    \"Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n  TupleExpressionHashIncorrectStartSyntaxType:\n    \"Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.\",\n  UnexpectedArgumentPlaceholder: \"Unexpected argument placeholder.\",\n  UnexpectedAwaitAfterPipelineBody:\n    'Unexpected \"await\" after pipeline body; await must have parentheses in minimal proposal.',\n  UnexpectedDigitAfterHash: \"Unexpected digit after hash token.\",\n  UnexpectedImportExport:\n    \"'import' and 'export' may only appear at the top level.\",\n  UnexpectedKeyword: ({ keyword }: { keyword: string }) =>\n    `Unexpected keyword '${keyword}'.`,\n  UnexpectedLeadingDecorator:\n    \"Leading decorators must be attached to a class declaration.\",\n  UnexpectedLexicalDeclaration:\n    \"Lexical declaration cannot appear in a single-statement context.\",\n  UnexpectedNewTarget:\n    \"`new.target` can only be used in functions or class properties.\",\n  UnexpectedNumericSeparator:\n    \"A numeric separator is only allowed between two digits.\",\n  UnexpectedPrivateField: \"Unexpected private name.\",\n  UnexpectedReservedWord: ({ reservedWord }: { reservedWord: string }) =>\n    `Unexpected reserved word '${reservedWord}'.`,\n  UnexpectedSuper: \"'super' is only allowed in object methods and classes.\",\n  UnexpectedToken: ({\n    expected,\n    unexpected,\n  }: {\n    expected?: string | null;\n    unexpected?: string | null;\n  }) =>\n    `Unexpected token${unexpected ? ` '${unexpected}'.` : \"\"}${\n      expected ? `, expected \"${expected}\"` : \"\"\n    }`,\n  UnexpectedTokenUnaryExponentiation:\n    \"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.\",\n  UnexpectedUsingDeclaration:\n    \"Using declaration cannot appear in the top level when source type is `script` or in the bare case statement.\",\n  UnexpectedVoidPattern: \"Unexpected void binding.\",\n  UnsupportedBind: \"Binding should be performed on object property.\",\n  UnsupportedDecoratorExport:\n    \"A decorated export must export a class declaration.\",\n  UnsupportedDefaultExport:\n    \"Only expressions, functions or classes are allowed as the `default` export.\",\n  UnsupportedImport:\n    \"`import` can only be used in `import()` or `import.meta`.\",\n  UnsupportedMetaProperty: ({\n    target,\n    onlyValidPropertyName,\n  }: {\n    target: string;\n    onlyValidPropertyName: string;\n  }) =>\n    `The only valid meta property for ${target} is ${target}.${onlyValidPropertyName}.`,\n  UnsupportedParameterDecorator:\n    \"Decorators cannot be used to decorate parameters.\",\n  UnsupportedPropertyDecorator:\n    \"Decorators cannot be used to decorate object literal properties.\",\n  UnsupportedSuper:\n    \"'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).\",\n  UnterminatedComment: \"Unterminated comment.\",\n  UnterminatedRegExp: \"Unterminated regular expression.\",\n  UnterminatedString: \"Unterminated string constant.\",\n  UnterminatedTemplate: \"Unterminated template.\",\n  UsingDeclarationExport: \"Using declaration cannot be exported.\",\n  UsingDeclarationHasBindingPattern:\n    \"Using declaration cannot have destructuring patterns.\",\n  VarRedeclaration: ({ identifierName }: { identifierName: string }) =>\n    `Identifier '${identifierName}' has already been declared.`,\n  VoidPatternCatchClauseParam:\n    \"A void binding can not be the catch clause parameter. Use `try { ... } catch { ... }` if you want to discard the caught error.\",\n  VoidPatternInitializer: \"A void binding may not have an initializer.\",\n  YieldBindingIdentifier:\n    \"Can not use 'yield' as identifier inside a generator.\",\n  YieldInParameter: \"Yield expression is not allowed in formal parameters.\",\n  YieldNotInGeneratorFunction:\n    \"'yield' is only allowed within generator functions.\",\n  ZeroDigitNumericSeparator:\n    \"Numeric separator can not be used after leading 0.\",\n} satisfies ParseErrorTemplates;\n","import type { ParseErrorTemplates } from \"../parse-error\";\n\nexport default {\n  StrictDelete: \"Deleting local variable in strict mode.\",\n\n  // `referenceName` is the StringValue[1] of an IdentifierReference[2], which\n  // is represented as just an `Identifier`[3] in the Babel AST.\n  // 1. https://tc39.es/ecma262/#sec-static-semantics-stringvalue\n  // 2. https://tc39.es/ecma262/#prod-IdentifierReference\n  // 3. https://github.com/babel/babel/blob/main/packages/babel-parser/ast/spec.md#identifier\n  StrictEvalArguments: ({ referenceName }: { referenceName: string }) =>\n    `Assigning to '${referenceName}' in strict mode.`,\n\n  // `bindingName` is the StringValue[1] of a BindingIdentifier[2], which is\n  // represented as just an `Identifier`[3] in the Babel AST.\n  // 1. https://tc39.es/ecma262/#sec-static-semantics-stringvalue\n  // 2. https://tc39.es/ecma262/#prod-BindingIdentifier\n  // 3. https://github.com/babel/babel/blob/main/packages/babel-parser/ast/spec.md#identifier\n  StrictEvalArgumentsBinding: ({ bindingName }: { bindingName: string }) =>\n    `Binding '${bindingName}' in strict mode.`,\n\n  StrictFunction:\n    \"In strict mode code, functions can only be declared at top level or inside a block.\",\n\n  StrictNumericEscape: \"The only valid numeric escape in strict mode is '\\\\0'.\",\n\n  StrictOctalLiteral: \"Legacy octal literals are not allowed in strict mode.\",\n\n  StrictWith: \"'with' in strict mode.\",\n} satisfies ParseErrorTemplates;\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\n\nexport default {\n  ParseExpressionEmptyInput:\n    \"Unexpected parseExpression() input: The input is empty or contains only comments.\",\n  ParseExpressionExpectsEOF: ({ unexpected }: { unexpected: number }) =>\n    `Unexpected parseExpression() input: The input should contain exactly one expression, but the first expression is followed by the unexpected character \\`${String.fromCodePoint(unexpected)}\\`.`,\n} satisfies ParseErrorTemplates;\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\nimport toNodeDescription from \"./to-node-description.ts\";\n\nexport const UnparenthesizedPipeBodyDescriptions = new Set([\n  \"ArrowFunctionExpression\",\n  \"AssignmentExpression\",\n  \"ConditionalExpression\",\n  \"YieldExpression\",\n] as const);\n\ntype GetSetMemberType<T extends Set<any>> =\n  T extends Set<infer M> ? M : unknown;\n\nexport type UnparenthesizedPipeBodyTypes = GetSetMemberType<\n  typeof UnparenthesizedPipeBodyDescriptions\n>;\n\nexport default {\n  // This error is only used by the smart-mix proposal\n  PipeBodyIsTighter:\n    \"Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.\",\n  PipeTopicRequiresHackPipes: process.env.BABEL_8_BREAKING\n    ? 'Topic references are only supported when using the `\"proposal\": \"hack\"` version of the pipeline proposal.'\n    : 'Topic reference is used, but the pipelineOperator plugin was not passed a \"proposal\": \"hack\" or \"smart\" option.',\n  PipeTopicUnbound:\n    \"Topic reference is unbound; it must be inside a pipe body.\",\n  PipeTopicUnconfiguredToken: ({ token }: { token: string }) =>\n    `Invalid topic token ${token}. In order to use ${token} as a topic reference, the pipelineOperator plugin must be configured with { \"proposal\": \"hack\", \"topicToken\": \"${token}\" }.`,\n  PipeTopicUnused:\n    \"Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.\",\n  PipeUnparenthesizedBody: ({ type }: { type: UnparenthesizedPipeBodyTypes }) =>\n    `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({\n      type,\n    })}; please wrap it in parentheses.`,\n\n  ...(process.env.BABEL_8_BREAKING\n    ? {}\n    : {\n        // Messages whose codes start with “Pipeline” or “PrimaryTopic”\n        // are retained for backwards compatibility\n        // with the deprecated smart-mix pipe operator proposal plugin.\n        // They are subject to removal in a future major version.\n        PipelineBodyNoArrow:\n          'Unexpected arrow \"=>\" after pipeline body; arrow function in pipeline body must be parenthesized.',\n        PipelineBodySequenceExpression:\n          \"Pipeline body may not be a comma-separated sequence expression.\",\n        PipelineHeadSequenceExpression:\n          \"Pipeline head should not be a comma-separated sequence expression.\",\n        PipelineTopicUnused:\n          \"Pipeline is in topic style but does not use topic reference.\",\n        PrimaryTopicNotAllowed:\n          \"Topic reference was used in a lexical context without topic binding.\",\n        PrimaryTopicRequiresSmartPipeline:\n          'Topic reference is used, but the pipelineOperator plugin was not passed a \"proposal\": \"hack\" or \"smart\" option.',\n      }),\n} satisfies ParseErrorTemplates;\n","import { Position } from \"./util/location.ts\";\n\ntype SyntaxPlugin =\n  | \"flow\"\n  | \"typescript\"\n  | \"jsx\"\n  | \"pipelineOperator\"\n  | \"placeholders\";\n\ntype ParseErrorCode =\n  | \"BABEL_PARSER_SYNTAX_ERROR\"\n  | \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\";\n\n// Babel uses \"normal\" SyntaxErrors for it's errors, but adds some extra\n// functionality. This functionality is defined in the\n// `ParseErrorSpecification` interface below. We may choose to change to someday\n// give our errors their own full-blown class, but until then this allow us to\n// keep all the desirable properties of SyntaxErrors (like their name in stack\n// traces, etc.), and also allows us to punt on any publicly facing\n// class-hierarchy decisions until Babel 8.\ninterface ParseErrorSpecification<ErrorDetails> {\n  // Look, these *could* be readonly, but then Flow complains when we initially\n  // set them. We could do a whole dance and make a special interface that's not\n  // readonly for when we create the error, then cast it to the readonly\n  // interface for public use, but the previous implementation didn't have them\n  // as readonly, so let's just not worry about it for now.\n  code: ParseErrorCode;\n  reasonCode: string;\n  syntaxPlugin?: SyntaxPlugin;\n  missingPlugin?: string | string[];\n  loc: Position;\n  details: ErrorDetails;\n\n  // We should consider removing this as it now just contains the same\n  // information as `loc.index`.\n  pos: number;\n}\n\nexport type ParseError<ErrorDetails> = SyntaxError &\n  ParseErrorSpecification<ErrorDetails>;\n\n// By `ParseErrorConstructor`, we mean something like the new-less style\n// `ErrorConstructor`[1], since `ParseError`'s are not themselves actually\n// separate classes from `SyntaxError`'s.\n//\n// 1. https://github.com/microsoft/TypeScript/blob/v4.5.5/lib/lib.es5.d.ts#L1027\nexport type ParseErrorConstructor<ErrorDetails> = (\n  loc: Position,\n  details: ErrorDetails,\n) => ParseError<ErrorDetails>;\n\ntype ToMessage<ErrorDetails> = (self: ErrorDetails) => string;\n\ntype ParseErrorCredentials<ErrorDetails> = {\n  code: string;\n  reasonCode: string;\n  syntaxPlugin?: SyntaxPlugin;\n  toMessage: ToMessage<ErrorDetails>;\n};\n\nfunction defineHidden(obj: object, key: string, value: unknown) {\n  Object.defineProperty(obj, key, {\n    enumerable: false,\n    configurable: true,\n    value,\n  });\n}\n\nfunction toParseErrorConstructor<ErrorDetails extends object>({\n  toMessage,\n  code,\n  reasonCode,\n  syntaxPlugin,\n}: ParseErrorCredentials<ErrorDetails>): ParseErrorConstructor<ErrorDetails> {\n  const hasMissingPlugin =\n    reasonCode === \"MissingPlugin\" || reasonCode === \"MissingOneOfPlugins\";\n\n  if (!process.env.BABEL_8_BREAKING) {\n    const oldReasonCodes: Record<string, string> = {\n      AccessorCannotDeclareThisParameter: \"AccesorCannotDeclareThisParameter\",\n      AccessorCannotHaveTypeParameters: \"AccesorCannotHaveTypeParameters\",\n      ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference:\n        \"ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference\",\n      SetAccessorCannotHaveOptionalParameter:\n        \"SetAccesorCannotHaveOptionalParameter\",\n      SetAccessorCannotHaveRestParameter: \"SetAccesorCannotHaveRestParameter\",\n      SetAccessorCannotHaveReturnType: \"SetAccesorCannotHaveReturnType\",\n    };\n    if (oldReasonCodes[reasonCode]) {\n      reasonCode = oldReasonCodes[reasonCode];\n    }\n  }\n\n  return function constructor(loc: Position, details: ErrorDetails) {\n    const error: ParseError<ErrorDetails> = new SyntaxError() as any;\n\n    error.code = code as ParseErrorCode;\n    error.reasonCode = reasonCode;\n    error.loc = loc;\n    error.pos = loc.index;\n\n    error.syntaxPlugin = syntaxPlugin;\n    if (hasMissingPlugin) {\n      error.missingPlugin = (details as any).missingPlugin;\n    }\n\n    type Overrides = {\n      loc?: Position;\n      details?: ErrorDetails;\n    };\n    defineHidden(error, \"clone\", function clone(overrides: Overrides = {}) {\n      const { line, column, index } = overrides.loc ?? loc;\n      return constructor(new Position(line, column, index), {\n        ...details,\n        ...overrides.details,\n      });\n    });\n\n    defineHidden(error, \"details\", details);\n\n    Object.defineProperty(error, \"message\", {\n      configurable: true,\n      get(this: ParseError<ErrorDetails>): string {\n        const message = `${toMessage(details)} (${loc.line}:${loc.column})`;\n        this.message = message;\n        return message;\n      },\n      set(value: string) {\n        Object.defineProperty(this, \"message\", { value, writable: true });\n      },\n    });\n\n    return error;\n  };\n}\n\ntype ParseErrorTemplate =\n  | string\n  | ToMessage<any>\n  | { message: string | ToMessage<any>; code?: ParseErrorCode };\n\nexport type ParseErrorTemplates = { [reasonCode: string]: ParseErrorTemplate };\n\n// This is the templated form of `ParseErrorEnum`.\n//\n// Note: We could factor out the return type calculation into something like\n// `ParseErrorConstructor<T extends ParseErrorTemplates>`, and then we could\n// reuse it in the non-templated form of `ParseErrorEnum`, but TypeScript\n// doesn't seem to drill down that far when showing you the computed type of\n// an object in an editor, so we'll leave it inlined for now.\nexport function ParseErrorEnum(a: TemplateStringsArray): <\n  T extends ParseErrorTemplates,\n>(\n  parseErrorTemplates: T,\n) => {\n  [K in keyof T]: ParseErrorConstructor<\n    T[K] extends { message: string | ToMessage<any> }\n      ? T[K][\"message\"] extends ToMessage<any>\n        ? Parameters<T[K][\"message\"]>[0]\n        : object\n      : T[K] extends ToMessage<any>\n        ? Parameters<T[K]>[0]\n        : object\n  >;\n};\n\nexport function ParseErrorEnum<T extends ParseErrorTemplates>(\n  parseErrorTemplates: T,\n  syntaxPlugin?: SyntaxPlugin,\n): {\n  [K in keyof T]: ParseErrorConstructor<\n    T[K] extends { message: string | ToMessage<any> }\n      ? T[K][\"message\"] extends ToMessage<any>\n        ? Parameters<T[K][\"message\"]>[0]\n        : object\n      : T[K] extends ToMessage<any>\n        ? Parameters<T[K]>[0]\n        : object\n  >;\n};\n\n// You call `ParseErrorEnum` with a mapping from `ReasonCode`'s to either:\n//\n// 1. a static error message,\n// 2. `toMessage` functions that define additional necessary `details` needed by\n//    the `ParseError`, or\n// 3. Objects that contain a `message` of one of the above and overridden `code`\n//    and/or `reasonCode`:\n//\n// ParseErrorEnum `optionalSyntaxPlugin` ({\n//   ErrorWithStaticMessage: \"message\",\n//   ErrorWithDynamicMessage: ({ type } : { type: string }) => `${type}`),\n//   ErrorWithOverriddenCodeAndOrReasonCode: {\n//     message: ({ type }: { type: string }) => `${type}`),\n//     code: \"AN_ERROR_CODE\",\n//     ...(BABEL_8_BREAKING ? { } : { reasonCode: \"CustomErrorReasonCode\" })\n//   }\n// });\n//\nexport function ParseErrorEnum(\n  argument: TemplateStringsArray | ParseErrorTemplates,\n  syntaxPlugin?: SyntaxPlugin,\n) {\n  // If the first parameter is an array, that means we were called with a tagged\n  // template literal. Extract the syntaxPlugin from this, and call again in\n  // the \"normalized\" form.\n  if (Array.isArray(argument)) {\n    return (parseErrorTemplates: ParseErrorTemplates) =>\n      ParseErrorEnum(parseErrorTemplates, argument[0]);\n  }\n\n  const ParseErrorConstructors = {} as Record<\n    string,\n    ParseErrorConstructor<unknown>\n  >;\n\n  for (const reasonCode of Object.keys(argument)) {\n    const template = (argument as ParseErrorTemplates)[reasonCode];\n    const { message, ...rest } =\n      typeof template === \"string\"\n        ? { message: () => template }\n        : typeof template === \"function\"\n          ? { message: template }\n          : template;\n    const toMessage = typeof message === \"string\" ? () => message : message;\n\n    ParseErrorConstructors[reasonCode] = toParseErrorConstructor({\n      code: \"BABEL_PARSER_SYNTAX_ERROR\",\n      reasonCode,\n      toMessage,\n      ...(syntaxPlugin ? { syntaxPlugin } : {}),\n      ...rest,\n    });\n  }\n\n  return ParseErrorConstructors;\n}\n\nimport ModuleErrors from \"./parse-error/module-errors.ts\";\nimport StandardErrors from \"./parse-error/standard-errors.ts\";\nimport StrictModeErrors from \"./parse-error/strict-mode-errors.ts\";\nimport ParseExpressionErrors from \"./parse-error/parse-expression-errors.ts\";\nimport PipelineOperatorErrors from \"./parse-error/pipeline-operator-errors.ts\";\n\nexport const Errors = {\n  ...ParseErrorEnum(ModuleErrors),\n  ...ParseErrorEnum(StandardErrors),\n  ...ParseErrorEnum(StrictModeErrors),\n  ...ParseErrorEnum(ParseExpressionErrors),\n  ...ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors),\n};\n\nexport type { LValAncestor } from \"./parse-error/standard-errors.ts\";\n","import type { Plugin } from \"./plugin-utils.ts\";\n\n// A second optional argument can be given to further configure\n// the parser process. These options are recognized:\n\nexport type SourceType = \"script\" | \"commonjs\" | \"module\" | \"unambiguous\";\n\nexport interface Options {\n  /**\n   * By default, import and export declarations can only appear at a program's top level.\n   * Setting this option to true allows them anywhere where a statement is allowed.\n   */\n  allowImportExportEverywhere?: boolean;\n\n  /**\n   * By default, await use is not allowed outside of an async function.\n   * Set this to true to accept such code.\n   */\n  allowAwaitOutsideFunction?: boolean;\n\n  /**\n   * By default, a return statement at the top level raises an error.\n   * Set this to true to accept such code.\n   */\n  allowReturnOutsideFunction?: boolean;\n\n  /**\n   * By default, new.target use is not allowed outside of a function or class.\n   * Set this to true to accept such code.\n   */\n  allowNewTargetOutsideFunction?: boolean;\n\n  allowSuperOutsideMethod?: boolean;\n\n  /**\n   * By default, exported identifiers must refer to a declared variable.\n   * Set this to true to allow export statements to reference undeclared variables.\n   */\n  allowUndeclaredExports?: boolean;\n\n  /**\n   * By default, yield use is not allowed outside of a generator function.\n   * Set this to true to accept such code.\n   */\n\n  allowYieldOutsideFunction?: boolean;\n\n  /**\n   * By default, Babel parser JavaScript code according to Annex B syntax.\n   * Set this to `false` to disable such behavior.\n   */\n  annexB?: boolean;\n\n  /**\n   * By default, Babel attaches comments to adjacent AST nodes.\n   * When this option is set to false, comments are not attached.\n   * It can provide up to 30% performance improvement when the input code has many comments.\n   * @babel/eslint-parser will set it for you.\n   * It is not recommended to use attachComment: false with Babel transform,\n   * as doing so removes all the comments in output code, and renders annotations such as\n   * /* istanbul ignore next *\\/ nonfunctional.\n   */\n  attachComment?: boolean;\n\n  /**\n   * By default, Babel always throws an error when it finds some invalid code.\n   * When this option is set to true, it will store the parsing error and\n   * try to continue parsing the invalid input file.\n   */\n  errorRecovery?: boolean;\n\n  /**\n   * Indicate the mode the code should be parsed in.\n   * Can be one of \"script\", \"commonjs\", \"module\", or \"unambiguous\". Defaults to \"script\".\n   * \"unambiguous\" will make @babel/parser attempt to guess, based on the presence\n   * of ES6 import or export statements.\n   * Files with ES6 imports and exports are considered \"module\" and are otherwise \"script\".\n   *\n   * Use \"commonjs\" to parse code that is intended to be run in a CommonJS environment such as Node.js.\n   */\n  sourceType?: SourceType;\n\n  /**\n   * Correlate output AST nodes with their source filename.\n   * Useful when generating code and source maps from the ASTs of multiple input files.\n   */\n  sourceFilename?: string;\n\n  /**\n   * By default, all source indexes start from 0.\n   * You can provide a start index to alternatively start with.\n   * Useful for integration with other source tools.\n   */\n  startIndex?: number;\n\n  /**\n   * By default, the first line of code parsed is treated as line 1.\n   * You can provide a line number to alternatively start with.\n   * Useful for integration with other source tools.\n   */\n  startLine?: number;\n\n  /**\n   * By default, the parsed code is treated as if it starts from line 1, column 0.\n   * You can provide a column number to alternatively start with.\n   * Useful for integration with other source tools.\n   */\n  startColumn?: number;\n\n  /**\n   * Array containing the plugins that you want to enable.\n   */\n  plugins?: Plugin[];\n\n  /**\n   * Should the parser work in strict mode.\n   * Defaults to true if sourceType === 'module'. Otherwise, false.\n   */\n  strictMode?: boolean;\n\n  /**\n   * Adds a ranges property to each node: [node.start, node.end]\n   */\n  ranges?: boolean;\n\n  /**\n   * Adds all parsed tokens to a tokens property on the File node.\n   */\n  tokens?: boolean;\n\n  /**\n   * By default, the parser adds information about parentheses by setting\n   * `extra.parenthesized` to `true` as needed.\n   * When this option is `true` the parser creates `ParenthesizedExpression`\n   * AST nodes instead of using the `extra` property.\n   */\n  createParenthesizedExpressions?: boolean;\n\n  /**\n   * The default is false in Babel 7 and true in Babel 8\n   * Set this to true to parse it as an `ImportExpression` node.\n   * Otherwise `import(foo)` is parsed as `CallExpression(Import, [Identifier(foo)])`.\n   */\n  createImportExpressions?: boolean;\n}\n\nexport const enum OptionFlags {\n  AllowAwaitOutsideFunction = 1 << 0,\n  AllowReturnOutsideFunction = 1 << 1,\n  AllowNewTargetOutsideFunction = 1 << 2,\n  AllowImportExportEverywhere = 1 << 3,\n  AllowSuperOutsideMethod = 1 << 4,\n  AllowYieldOutsideFunction = 1 << 5,\n  AllowUndeclaredExports = 1 << 6,\n  Ranges = 1 << 7,\n  Tokens = 1 << 8,\n  CreateImportExpressions = 1 << 9,\n  CreateParenthesizedExpressions = 1 << 10,\n  ErrorRecovery = 1 << 11,\n  AttachComment = 1 << 12,\n  AnnexB = 1 << 13,\n}\n\ntype OptionsWithDefaults = Required<Options>;\n\nfunction createDefaultOptions(): OptionsWithDefaults {\n  return {\n    // Source type (\"script\" or \"module\") for different semantics\n    sourceType: \"script\",\n    // Source filename.\n    sourceFilename: undefined,\n    // Index (0-based) from which to start counting source. Useful for\n    // integration with other tools.\n    startIndex: 0,\n    // Column (0-based) from which to start counting source. Useful for\n    // integration with other tools.\n    startColumn: 0,\n    // Line (1-based) from which to start counting source. Useful for\n    // integration with other tools.\n    startLine: 1,\n    // When enabled, await at the top level is not considered an\n    // error.\n    allowAwaitOutsideFunction: false,\n    // When enabled, a return at the top level is not considered an\n    // error.\n    allowReturnOutsideFunction: false,\n    // When enabled, new.target outside a function or class is not\n    // considered an error.\n    allowNewTargetOutsideFunction: false,\n    // When enabled, import/export statements are not constrained to\n    // appearing at the top of the program.\n    allowImportExportEverywhere: false,\n    // TODO\n    allowSuperOutsideMethod: false,\n    // When enabled, export statements can reference undeclared variables.\n    allowUndeclaredExports: false,\n    allowYieldOutsideFunction: false,\n    // An array of plugins to enable\n    plugins: [],\n    // TODO\n    strictMode: null,\n    // Nodes have their start and end characters offsets recorded in\n    // `start` and `end` properties (directly on the node, rather than\n    // the `loc` object, which holds line/column data. To also add a\n    // [semi-standardized][range] `range` property holding a `[start,\n    // end]` array with the same numbers, set the `ranges` option to\n    // `true`.\n    //\n    // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n    ranges: false,\n    // Adds all parsed tokens to a `tokens` property on the `File` node\n    tokens: false,\n    // Whether to create ImportExpression AST nodes (if false\n    // `import(foo)` will be parsed as CallExpression(Import, [Identifier(foo)])\n    createImportExpressions: process.env.BABEL_8_BREAKING ? true : false,\n    // Whether to create ParenthesizedExpression AST nodes (if false\n    // the parser sets extra.parenthesized on the expression nodes instead).\n    createParenthesizedExpressions: false,\n    // When enabled, errors are attached to the AST instead of being directly thrown.\n    // Some errors will still throw, because @babel/parser can't always recover.\n    errorRecovery: false,\n    // When enabled, comments will be attached to adjacent AST nodes as one of\n    // `leadingComments`, `trailingComments` and `innerComments`. The comment attachment\n    // is vital to preserve comments after transform. If you don't print AST back,\n    // consider set this option to `false` for performance\n    attachComment: true,\n    // When enabled, the parser will support Annex B syntax.\n    // https://tc39.es/ecma262/#sec-additional-ecmascript-features-for-web-browsers\n    annexB: true,\n  };\n}\n\n// Interpret and default an options object\n\nexport function getOptions(opts?: Options | null): OptionsWithDefaults {\n  // https://github.com/babel/babel/pull/16918\n  // `options` is accessed frequently, please make sure it is a fast object.\n  // `%ToFastProperties` can make it a fast object, but the performance is the same as the slow object.\n  const options: any = createDefaultOptions();\n\n  if (opts == null) {\n    return options;\n  }\n  if (opts.annexB != null && opts.annexB !== false) {\n    throw new Error(\"The `annexB` option can only be set to `false`.\");\n  }\n\n  for (const key of Object.keys(options) as (keyof Options)[]) {\n    if (opts[key] != null) options[key] = opts[key];\n  }\n\n  if (options.startLine === 1) {\n    if (opts.startIndex == null && options.startColumn > 0) {\n      options.startIndex = options.startColumn;\n    } else if (opts.startColumn == null && options.startIndex > 0) {\n      options.startColumn = options.startIndex;\n    }\n  } else if (opts.startColumn == null || opts.startIndex == null) {\n    if (opts.startIndex != null || process.env.BABEL_8_BREAKING) {\n      throw new Error(\n        \"With a `startLine > 1` you must also specify `startIndex` and `startColumn`.\",\n      );\n    }\n  }\n\n  if (options.sourceType === \"commonjs\") {\n    if (opts.allowAwaitOutsideFunction != null) {\n      throw new Error(\n        \"The `allowAwaitOutsideFunction` option cannot be used with `sourceType: 'commonjs'`.\",\n      );\n    }\n    if (opts.allowReturnOutsideFunction != null) {\n      throw new Error(\n        \"`sourceType: 'commonjs'` implies `allowReturnOutsideFunction: true`, please remove the `allowReturnOutsideFunction` option or use `sourceType: 'script'`.\",\n      );\n    }\n    if (opts.allowNewTargetOutsideFunction != null) {\n      throw new Error(\n        \"`sourceType: 'commonjs'` implies `allowNewTargetOutsideFunction: true`, please remove the `allowNewTargetOutsideFunction` option or use `sourceType: 'script'`.\",\n      );\n    }\n  }\n\n  return options;\n}\n","import type { TokenType } from \"../tokenizer/types.ts\";\nimport type Parser from \"../parser/index.ts\";\nimport type * as N from \"../types.ts\";\nimport type { Node as NodeType, NodeBase, File } from \"../types.ts\";\nimport type { Position } from \"../util/location.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport type { Undone } from \"../parser/node.ts\";\nimport type { BindingFlag } from \"../util/scopeflags.ts\";\nimport { OptionFlags } from \"../options.ts\";\nimport type { ExpressionErrors } from \"../parser/util.ts\";\n\nconst { defineProperty } = Object;\nconst toUnenumerable = (object: any, key: string) => {\n  if (object) {\n    defineProperty(object, key, { enumerable: false, value: object[key] });\n  }\n};\n\nfunction toESTreeLocation(node: any) {\n  toUnenumerable(node.loc.start, \"index\");\n  toUnenumerable(node.loc.end, \"index\");\n\n  return node;\n}\n\nexport default (superClass: typeof Parser) =>\n  class ESTreeParserMixin extends superClass implements Parser {\n    parse(): File {\n      const file = toESTreeLocation(super.parse());\n\n      if (this.optionFlags & OptionFlags.Tokens) {\n        file.tokens = file.tokens.map(toESTreeLocation);\n      }\n\n      return file;\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    parseRegExpLiteral({ pattern, flags }): N.EstreeRegExpLiteral {\n      let regex: RegExp | null = null;\n      try {\n        regex = new RegExp(pattern, flags);\n      } catch (_) {\n        // In environments that don't support these flags value will\n        // be null as the regex can't be represented natively.\n      }\n      const node = this.estreeParseLiteral<N.EstreeRegExpLiteral>(regex);\n      node.regex = { pattern, flags };\n\n      return node;\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    parseBigIntLiteral(value: any): N.Node {\n      // https://github.com/estree/estree/blob/master/es2020.md#bigintliteral\n      let bigInt: bigint | null;\n      try {\n        bigInt = BigInt(value);\n      } catch {\n        bigInt = null;\n      }\n      const node = this.estreeParseLiteral<N.EstreeBigIntLiteral>(bigInt);\n      node.bigint = String(node.value || value);\n\n      return node;\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    parseDecimalLiteral(value: any): N.Node {\n      // https://github.com/estree/estree/blob/master/experimental/decimal.md\n      // todo: use BigDecimal when node supports it.\n      const decimal: null = null;\n      const node = this.estreeParseLiteral(decimal);\n      node.decimal = String(node.value || value);\n\n      return node;\n    }\n\n    estreeParseLiteral<T extends N.EstreeLiteral>(value: any) {\n      // @ts-expect-error ESTree plugin changes node types\n      return this.parseLiteral<T>(value, \"Literal\");\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    parseStringLiteral(value: any): N.Node {\n      return this.estreeParseLiteral(value);\n    }\n\n    parseNumericLiteral(value: any): any {\n      return this.estreeParseLiteral(value);\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    parseNullLiteral(): N.Node {\n      return this.estreeParseLiteral(null);\n    }\n\n    parseBooleanLiteral(value: boolean): N.BooleanLiteral {\n      // @ts-expect-error ESTree plugin changes node types\n      return this.estreeParseLiteral(value);\n    }\n\n    // https://github.com/estree/estree/blob/master/es2020.md#chainexpression\n    estreeParseChainExpression(\n      node: N.Expression,\n      endLoc: Position,\n    ): N.EstreeChainExpression {\n      const chain = this.startNodeAtNode<N.EstreeChainExpression>(node);\n      chain.expression = node;\n      return this.finishNodeAt(chain, \"ChainExpression\", endLoc);\n    }\n\n    // Cast a Directive to an ExpressionStatement. Mutates the input Directive.\n    directiveToStmt(directive: N.Directive): N.ExpressionStatement {\n      const expression = directive.value as any as N.EstreeLiteral;\n      delete directive.value;\n\n      this.castNodeTo(expression, \"Literal\");\n      expression.raw = expression.extra.raw;\n      expression.value = expression.extra.expressionValue;\n\n      const stmt = this.castNodeTo(directive, \"ExpressionStatement\");\n      stmt.expression = expression;\n      stmt.directive = expression.extra.rawValue;\n\n      delete expression.extra;\n\n      return stmt;\n    }\n\n    /**\n     * The TS-ESLint always define optional AST properties, here we provide the\n     * default value for such properties immediately after `finishNode` was invoked.\n     * This hook will be implemented by the typescript plugin.\n     *\n     * Note: This hook should be manually invoked when we change the `type` of a given AST\n     * node, to ensure that the optional properties are correctly filled.\n     * @param node The AST node finished by finishNode\n     */\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    fillOptionalPropertiesForTSESLint(node: NodeType) {}\n\n    cloneEstreeStringLiteral(node: N.EstreeLiteral): N.EstreeLiteral {\n      const { start, end, loc, range, raw, value } = node;\n      const cloned = Object.create(node.constructor.prototype);\n      cloned.type = \"Literal\";\n      cloned.start = start;\n      cloned.end = end;\n      cloned.loc = loc;\n      cloned.range = range;\n      cloned.raw = raw;\n      cloned.value = value;\n      return cloned;\n    }\n\n    // ==================================\n    // Overrides\n    // ==================================\n\n    initFunction(node: N.BodilessFunctionOrMethodBase, isAsync: boolean): void {\n      super.initFunction(node, isAsync);\n      node.expression = false;\n    }\n\n    checkDeclaration(node: N.Pattern | N.ObjectProperty): void {\n      if (node != null && this.isObjectProperty(node)) {\n        // @ts-expect-error plugin typings\n        this.checkDeclaration((node as unknown as N.EstreeProperty).value);\n      } else {\n        super.checkDeclaration(node);\n      }\n    }\n\n    getObjectOrClassMethodParams(method: N.ObjectMethod | N.ClassMethod) {\n      return (method as unknown as N.EstreeMethodDefinition).value.params;\n    }\n\n    isValidDirective(stmt: N.Statement): stmt is N.ExpressionStatement {\n      return (\n        stmt.type === \"ExpressionStatement\" &&\n        stmt.expression.type === \"Literal\" &&\n        typeof stmt.expression.value === \"string\" &&\n        !stmt.expression.extra?.parenthesized\n      );\n    }\n\n    parseBlockBody(\n      node: N.BlockStatementLike,\n      allowDirectives: boolean | undefined | null,\n      topLevel: boolean,\n      end: TokenType,\n      afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n    ): void {\n      super.parseBlockBody(\n        node,\n        allowDirectives,\n        topLevel,\n        end,\n        afterBlockParse,\n      );\n\n      const directiveStatements = node.directives.map(d =>\n        this.directiveToStmt(d),\n      );\n      // @ts-expect-error estree plugin typings\n      node.body = directiveStatements.concat(node.body);\n      delete node.directives;\n    }\n\n    parsePrivateName(): any {\n      const node = super.parsePrivateName();\n      if (!process.env.BABEL_8_BREAKING) {\n        if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n          return node;\n        }\n      }\n      return this.convertPrivateNameToPrivateIdentifier(node);\n    }\n\n    convertPrivateNameToPrivateIdentifier(\n      node: N.PrivateName,\n    ): N.EstreePrivateIdentifier {\n      const name = super.getPrivateNameSV(node);\n      node = node as any;\n      delete node.id;\n      // @ts-expect-error mutate AST types\n      node.name = name;\n      return this.castNodeTo(node, \"PrivateIdentifier\");\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    isPrivateName(node: N.Node): node is N.EstreePrivateIdentifier {\n      if (!process.env.BABEL_8_BREAKING) {\n        if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n          return super.isPrivateName(node);\n        }\n      }\n      return node.type === \"PrivateIdentifier\";\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    getPrivateNameSV(node: N.EstreePrivateIdentifier): string {\n      if (!process.env.BABEL_8_BREAKING) {\n        if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n          return super.getPrivateNameSV(node as unknown as N.PrivateName);\n        }\n      }\n      return node.name;\n    }\n\n    // @ts-expect-error plugin may override interfaces\n    parseLiteral<T extends N.Literal>(value: any, type: T[\"type\"]): T {\n      const node = super.parseLiteral<T>(value, type);\n      // @ts-expect-error mutating AST types\n      node.raw = node.extra.raw;\n      delete node.extra;\n\n      return node;\n    }\n\n    parseFunctionBody(\n      node: N.Function,\n      allowExpression?: boolean | null,\n      isMethod: boolean = false,\n    ): void {\n      super.parseFunctionBody(node, allowExpression, isMethod);\n      node.expression = node.body.type !== \"BlockStatement\";\n    }\n\n    // @ts-expect-error plugin may override interfaces\n    parseMethod<\n      T extends N.ClassPrivateMethod | N.ObjectMethod | N.ClassMethod,\n    >(\n      node: Undone<T>,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isConstructor: boolean,\n      allowDirectSuper: boolean,\n      type: T[\"type\"],\n      inClassScope: boolean = false,\n    ):\n      | N.EstreeProperty\n      | N.EstreeMethodDefinition\n      | N.EstreeTSAbstractMethodDefinition {\n      let funcNode = this.startNode<N.MethodLike>();\n      funcNode.kind = node.kind; // provide kind, so super method correctly sets state\n      funcNode = super.parseMethod(\n        funcNode,\n        isGenerator,\n        isAsync,\n        isConstructor,\n        allowDirectSuper,\n        type,\n        inClassScope,\n      );\n      delete funcNode.kind;\n      const { typeParameters } = node;\n      if (typeParameters) {\n        delete node.typeParameters;\n        funcNode.typeParameters = typeParameters;\n        this.resetStartLocationFromNode(funcNode, typeParameters);\n      }\n      const valueNode = this.castNodeTo(\n        funcNode as N.MethodLike,\n        process.env.BABEL_8_BREAKING &&\n          this.hasPlugin(\"typescript\") &&\n          !funcNode.body\n          ? \"TSEmptyBodyFunctionExpression\"\n          : \"FunctionExpression\",\n      );\n      (\n        node as unknown as Undone<\n          | N.EstreeProperty\n          | N.EstreeMethodDefinition\n          | N.EstreeTSAbstractMethodDefinition\n        >\n      ).value = valueNode;\n      if (type === \"ClassPrivateMethod\") {\n        node.computed = false;\n      }\n      if (process.env.BABEL_8_BREAKING && this.hasPlugin(\"typescript\")) {\n        // @ts-expect-error todo(flow->ts) property not defined for all types in union\n        if (node.abstract) {\n          // @ts-expect-error remove abstract from TSAbstractMethodDefinition\n          delete node.abstract;\n          return this.finishNode(\n            // @ts-expect-error cast methods to estree types\n            node as Undone<N.EstreeTSAbstractMethodDefinition>,\n            \"TSAbstractMethodDefinition\",\n          );\n        }\n      }\n      if (type === \"ObjectMethod\") {\n        if ((node as any as N.ObjectMethod).kind === \"method\") {\n          (node as any as N.EstreeProperty).kind = \"init\";\n        }\n        (node as any as N.EstreeProperty).shorthand = false;\n        return this.finishNode(\n          // @ts-expect-error cast methods to estree types\n          node as Undone<N.EstreeProperty>,\n          \"Property\",\n        );\n      } else {\n        return this.finishNode(\n          // @ts-expect-error cast methods to estree types\n          node as Undone<N.EstreeMethodDefinition>,\n          \"MethodDefinition\",\n        );\n      }\n    }\n\n    nameIsConstructor(key: N.Expression | N.PrivateName): boolean {\n      if (key.type === \"Literal\") return key.value === \"constructor\";\n      return super.nameIsConstructor(key);\n    }\n\n    parseClassProperty(...args: [N.ClassProperty]): any {\n      const propertyNode = super.parseClassProperty(...args);\n      if (!process.env.BABEL_8_BREAKING) {\n        if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n          return propertyNode as unknown as N.EstreePropertyDefinition;\n        }\n      }\n      if (\n        process.env.BABEL_8_BREAKING &&\n        propertyNode.abstract &&\n        this.hasPlugin(\"typescript\")\n      ) {\n        delete propertyNode.abstract;\n        this.castNodeTo(propertyNode, \"TSAbstractPropertyDefinition\");\n      } else {\n        this.castNodeTo(propertyNode, \"PropertyDefinition\");\n      }\n      return propertyNode;\n    }\n\n    parseClassPrivateProperty(...args: [N.ClassPrivateProperty]): any {\n      const propertyNode = super.parseClassPrivateProperty(...args);\n      if (!process.env.BABEL_8_BREAKING) {\n        if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n          return propertyNode as unknown as N.EstreePropertyDefinition;\n        }\n      }\n      if (\n        process.env.BABEL_8_BREAKING &&\n        propertyNode.abstract &&\n        this.hasPlugin(\"typescript\")\n      ) {\n        this.castNodeTo(propertyNode, \"TSAbstractPropertyDefinition\");\n      } else {\n        this.castNodeTo(propertyNode, \"PropertyDefinition\");\n      }\n      propertyNode.computed = false;\n      return propertyNode;\n    }\n\n    parseClassAccessorProperty(\n      this: Parser,\n      node: N.ClassAccessorProperty,\n    ): any {\n      const accessorPropertyNode = super.parseClassAccessorProperty(node);\n      if (!process.env.BABEL_8_BREAKING) {\n        if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n          return accessorPropertyNode;\n        }\n      }\n      if (accessorPropertyNode.abstract && this.hasPlugin(\"typescript\")) {\n        delete accessorPropertyNode.abstract;\n        this.castNodeTo(accessorPropertyNode, \"TSAbstractAccessorProperty\");\n      } else {\n        this.castNodeTo(accessorPropertyNode, \"AccessorProperty\");\n      }\n      return accessorPropertyNode;\n    }\n\n    parseObjectProperty(\n      prop: N.ObjectProperty,\n      startLoc: Position | undefined | null,\n      isPattern: boolean,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): N.ObjectProperty | undefined | null {\n      const node: N.EstreeProperty = super.parseObjectProperty(\n        prop,\n        startLoc,\n        isPattern,\n        refExpressionErrors,\n      ) as any;\n\n      if (node) {\n        node.kind = \"init\";\n        this.castNodeTo(node, \"Property\");\n      }\n\n      return node as any;\n    }\n\n    finishObjectProperty(node: Undone<N.ObjectProperty>): N.ObjectProperty {\n      (node as unknown as Undone<N.EstreeProperty>).kind = \"init\";\n      return this.finishNode(\n        node as unknown as Undone<N.EstreeProperty>,\n        \"Property\",\n      ) as any;\n    }\n\n    isValidLVal(\n      type: string,\n      isUnparenthesizedInAssign: boolean,\n      binding: BindingFlag,\n    ) {\n      return type === \"Property\"\n        ? \"value\"\n        : super.isValidLVal(type, isUnparenthesizedInAssign, binding);\n    }\n\n    isAssignable(node: N.Node, isBinding?: boolean): boolean {\n      if (node != null && this.isObjectProperty(node)) {\n        return this.isAssignable(node.value, isBinding);\n      }\n      return super.isAssignable(node, isBinding);\n    }\n\n    toAssignable(node: N.Node, isLHS: boolean = false): void {\n      if (node != null && this.isObjectProperty(node)) {\n        const { key, value } = node;\n        if (this.isPrivateName(key)) {\n          this.classScope.usePrivateName(\n            this.getPrivateNameSV(key),\n            key.loc.start,\n          );\n        }\n        this.toAssignable(value, isLHS);\n      } else {\n        super.toAssignable(node, isLHS);\n      }\n    }\n\n    toAssignableObjectExpressionProp(\n      prop: N.Node,\n      isLast: boolean,\n      isLHS: boolean,\n    ) {\n      if (\n        prop.type === \"Property\" &&\n        (prop.kind === \"get\" || prop.kind === \"set\")\n      ) {\n        this.raise(Errors.PatternHasAccessor, prop.key);\n      } else if (prop.type === \"Property\" && prop.method) {\n        this.raise(Errors.PatternHasMethod, prop.key);\n      } else {\n        super.toAssignableObjectExpressionProp(prop, isLast, isLHS);\n      }\n    }\n\n    finishCallExpression<T extends N.CallExpression | N.OptionalCallExpression>(\n      unfinished: Undone<T>,\n      optional: boolean,\n    ): T {\n      const node = super.finishCallExpression(unfinished, optional);\n\n      if (node.callee.type === \"Import\") {\n        this.castNodeTo(node, \"ImportExpression\");\n        (node as N.Node as N.EstreeImportExpression).source = node\n          .arguments[0] as N.Expression;\n        (node as N.Node as N.EstreeImportExpression).options =\n          (node.arguments[1] as N.Expression) ?? null;\n        if (!process.env.BABEL_8_BREAKING) {\n          // compatibility with previous ESTree AST\n          (node as N.Node as N.EstreeImportExpression).attributes =\n            (node.arguments[1] as N.Expression) ?? null;\n        }\n        // arguments isn't optional in the type definition\n        delete node.arguments;\n        // callee isn't optional in the type definition\n        delete node.callee;\n      } else if (node.type === \"OptionalCallExpression\") {\n        this.castNodeTo(node, \"CallExpression\");\n      } else {\n        node.optional = false;\n      }\n\n      return node;\n    }\n\n    toReferencedArguments(\n      node:\n        | N.CallExpression\n        | N.OptionalCallExpression\n        | N.EstreeImportExpression,\n      /* isParenthesizedExpr?: boolean, */\n    ) {\n      // ImportExpressions do not have an arguments array.\n      if (node.type === \"ImportExpression\") {\n        return;\n      }\n\n      super.toReferencedArguments(node);\n    }\n\n    parseExport(\n      unfinished: Undone<N.AnyExport>,\n      decorators: N.Decorator[] | null,\n    ) {\n      const exportStartLoc = this.state.lastTokStartLoc;\n      const node = super.parseExport(unfinished, decorators);\n\n      switch (node.type) {\n        case \"ExportAllDeclaration\":\n          // @ts-expect-error mutating AST types\n          node.exported = null;\n          break;\n\n        case \"ExportNamedDeclaration\":\n          if (\n            node.specifiers.length === 1 &&\n            node.specifiers[0].type === \"ExportNamespaceSpecifier\"\n          ) {\n            this.castNodeTo(node, \"ExportAllDeclaration\");\n            // @ts-expect-error mutating AST types\n            node.exported = node.specifiers[0].exported;\n            delete node.specifiers;\n          }\n\n        // fallthrough\n        case \"ExportDefaultDeclaration\":\n          {\n            const { declaration } = node;\n            if (\n              declaration?.type === \"ClassDeclaration\" &&\n              declaration.decorators?.length > 0 &&\n              // decorator comes before export\n              declaration.start === node.start\n            ) {\n              this.resetStartLocation(\n                node,\n                // For compatibility with ESLint's keyword-spacing rule, which assumes that an\n                // export declaration must start with export.\n                // https://github.com/babel/babel/issues/15085\n                // Here we reset export declaration's start to be the start of the export token\n                exportStartLoc,\n              );\n            }\n          }\n\n          break;\n      }\n\n      return node;\n    }\n\n    stopParseSubscript(base: N.Expression, state: N.ParseSubscriptState) {\n      const node = super.stopParseSubscript(base, state);\n      if (state.optionalChainMember) {\n        return this.estreeParseChainExpression(node, base.loc.end);\n      }\n      return node;\n    }\n\n    parseMember(\n      base: N.Expression,\n      startLoc: Position,\n      state: N.ParseSubscriptState,\n      computed: boolean,\n      optional: boolean,\n    ) {\n      const node = super.parseMember(base, startLoc, state, computed, optional);\n      if (node.type === \"OptionalMemberExpression\") {\n        this.castNodeTo(node, \"MemberExpression\");\n      } else {\n        node.optional = false;\n      }\n      return node;\n    }\n\n    isOptionalMemberExpression(node: N.Node) {\n      if (node.type === \"ChainExpression\") {\n        return node.expression.type === \"MemberExpression\";\n      }\n      return super.isOptionalMemberExpression(node);\n    }\n\n    hasPropertyAsPrivateName(node: N.Node): boolean {\n      if (node.type === \"ChainExpression\") {\n        node = node.expression;\n      }\n      return super.hasPropertyAsPrivateName(node);\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    isObjectProperty(node: N.Node): node is N.EstreeProperty {\n      return node.type === \"Property\" && node.kind === \"init\" && !node.method;\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    isObjectMethod(node: N.Node): node is N.EstreeProperty {\n      return (\n        node.type === \"Property\" &&\n        (node.method || node.kind === \"get\" || node.kind === \"set\")\n      );\n    }\n\n    /* ============================================================ *\n     * parser/node.ts                                               *\n     * ============================================================ */\n\n    castNodeTo<T extends N.Node[\"type\"]>(\n      node: N.Node,\n      type: T,\n    ): Extract<N.Node, { type: T }> {\n      const result = super.castNodeTo(node, type);\n      this.fillOptionalPropertiesForTSESLint(result);\n      return result;\n    }\n\n    cloneIdentifier<T extends N.Identifier | N.Placeholder>(node: T): T {\n      const cloned = super.cloneIdentifier(node);\n      this.fillOptionalPropertiesForTSESLint(cloned);\n      return cloned;\n    }\n\n    cloneStringLiteral<\n      T extends N.EstreeLiteral | N.StringLiteral | N.Placeholder,\n    >(node: T): T {\n      if (node.type === \"Literal\") {\n        return this.cloneEstreeStringLiteral(node) as T;\n      }\n      return super.cloneStringLiteral(node);\n    }\n\n    finishNodeAt<T extends NodeType>(\n      node: Undone<T>,\n      type: T[\"type\"],\n      endLoc: Position,\n    ): T {\n      return toESTreeLocation(super.finishNodeAt(node, type, endLoc));\n    }\n\n    // Override for TS-ESLint that does not allow optional AST properties\n    finishNode<T extends NodeType>(node: Undone<T>, type: T[\"type\"]): T {\n      const result = super.finishNode(node, type);\n      this.fillOptionalPropertiesForTSESLint(result);\n      return result;\n    }\n\n    resetStartLocation(node: N.Node, startLoc: Position) {\n      super.resetStartLocation(node, startLoc);\n      toESTreeLocation(node);\n    }\n\n    resetEndLocation(\n      node: NodeBase,\n      endLoc: Position = this.state.lastTokEndLoc,\n    ): void {\n      super.resetEndLocation(node, endLoc);\n      toESTreeLocation(node);\n    }\n  };\n","// The token context is used in JSX plugin to track\n// jsx tag / jsx text / normal JavaScript expression\n\nexport class TokContext {\n  constructor(token: string, preserveSpace?: boolean) {\n    this.token = token;\n    this.preserveSpace = !!preserveSpace;\n  }\n\n  token: string;\n  preserveSpace: boolean;\n}\n\nconst types: {\n  [key: string]: TokContext;\n} = {\n  brace: new TokContext(\"{\"), // normal JavaScript expression\n  j_oTag: new TokContext(\"<tag\"), // JSX opening tag\n  j_cTag: new TokContext(\"</tag\"), // JSX closing tag\n  j_expr: new TokContext(\"<tag>...</tag>\", true), // JSX expressions\n};\n\nif (!process.env.BABEL_8_BREAKING) {\n  types.template = new TokContext(\"`\", true);\n}\n\nexport { types };\n","import { types as tc, type TokContext } from \"./context.ts\";\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between 1) binary\n// expression (<) and JSX Tag start (<name>); 2) object literal and JSX\n// texts. It is set on the `updateContext` function in the JSX plugin.\n\n// The `startsExpr` property is used to determine whether an expression\n// may be the “argument” subexpression of a `yield` expression or\n// `yield` statement. It is set on all token types that may be at the\n// start of a subexpression.\n\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nconst beforeExpr = true;\nconst startsExpr = true;\nconst isLoop = true;\nconst isAssign = true;\nconst prefix = true;\nconst postfix = true;\n\ntype TokenOptions = {\n  keyword?: string;\n  beforeExpr?: boolean;\n  startsExpr?: boolean;\n  rightAssociative?: boolean;\n  isLoop?: boolean;\n  isAssign?: boolean;\n  prefix?: boolean;\n  postfix?: boolean;\n  binop?: number | null;\n};\n\n// Internally the tokenizer stores token as a number\nexport type TokenType = number;\n\n// The `ExportedTokenType` is exported via `tokTypes` and accessible\n// when `tokens: true` is enabled. Unlike internal token type, it provides\n// metadata of the tokens.\nexport class ExportedTokenType {\n  label: string;\n  keyword: string | undefined | null;\n  beforeExpr: boolean;\n  startsExpr: boolean;\n  rightAssociative: boolean;\n  isLoop: boolean;\n  isAssign: boolean;\n  prefix: boolean;\n  postfix: boolean;\n  binop: number | undefined | null;\n  // todo(Babel 8): remove updateContext from exposed token layout\n  declare updateContext:\n    | ((context: Array<TokContext>) => void)\n    | undefined\n    | null;\n\n  constructor(label: string, conf: TokenOptions = {}) {\n    this.label = label;\n    this.keyword = conf.keyword;\n    this.beforeExpr = !!conf.beforeExpr;\n    this.startsExpr = !!conf.startsExpr;\n    this.rightAssociative = !!conf.rightAssociative;\n    this.isLoop = !!conf.isLoop;\n    this.isAssign = !!conf.isAssign;\n    this.prefix = !!conf.prefix;\n    this.postfix = !!conf.postfix;\n    this.binop = conf.binop != null ? conf.binop : null;\n    if (!process.env.BABEL_8_BREAKING) {\n      this.updateContext = null;\n    }\n  }\n}\n\n// A map from keyword/keyword-like string value to the token type\nexport const keywords = new Map<string, TokenType>();\n\nfunction createKeyword(name: string, options: TokenOptions = {}): TokenType {\n  options.keyword = name;\n  const token = createToken(name, options);\n  keywords.set(name, token);\n  return token;\n}\n\nfunction createBinop(name: string, binop: number) {\n  return createToken(name, { beforeExpr, binop });\n}\n\nlet tokenTypeCounter = -1;\nexport const tokenTypes: ExportedTokenType[] = [];\nconst tokenLabels: string[] = [];\nconst tokenBinops: number[] = [];\nconst tokenBeforeExprs: boolean[] = [];\nconst tokenStartsExprs: boolean[] = [];\nconst tokenPrefixes: boolean[] = [];\n\nfunction createToken(name: string, options: TokenOptions = {}): TokenType {\n  ++tokenTypeCounter;\n  tokenLabels.push(name);\n  tokenBinops.push(options.binop ?? -1);\n  tokenBeforeExprs.push(options.beforeExpr ?? false);\n  tokenStartsExprs.push(options.startsExpr ?? false);\n  tokenPrefixes.push(options.prefix ?? false);\n  tokenTypes.push(new ExportedTokenType(name, options));\n\n  return tokenTypeCounter;\n}\n\nfunction createKeywordLike(\n  name: string,\n  options: TokenOptions = {},\n): TokenType {\n  ++tokenTypeCounter;\n  keywords.set(name, tokenTypeCounter);\n  tokenLabels.push(name);\n  tokenBinops.push(options.binop ?? -1);\n  tokenBeforeExprs.push(options.beforeExpr ?? false);\n  tokenStartsExprs.push(options.startsExpr ?? false);\n  tokenPrefixes.push(options.prefix ?? false);\n  // In the exported token type, we set the label as \"name\" for backward compatibility with Babel 7\n  tokenTypes.push(new ExportedTokenType(\"name\", options));\n\n  return tokenTypeCounter;\n}\n\n// For performance the token type helpers depend on the following declarations order.\n// When adding new token types, please also check if the token helpers need update.\n\nexport type InternalTokenTypes = typeof tt;\n\nexport const tt = {\n  // Punctuation token types.\n  bracketL: createToken(\"[\", { beforeExpr, startsExpr }),\n  // TODO: Remove this in Babel 8\n  bracketHashL: createToken(\"#[\", { beforeExpr, startsExpr }),\n  // TODO: Remove this in Babel 8\n  bracketBarL: createToken(\"[|\", { beforeExpr, startsExpr }),\n  bracketR: createToken(\"]\"),\n  // TODO: Remove this in Babel 8\n  bracketBarR: createToken(\"|]\"),\n  braceL: createToken(\"{\", { beforeExpr, startsExpr }),\n  // TODO: Remove this in Babel 8\n  braceBarL: createToken(\"{|\", { beforeExpr, startsExpr }),\n  // TODO: Remove this in Babel 8\n  braceHashL: createToken(\"#{\", { beforeExpr, startsExpr }),\n  braceR: createToken(\"}\"),\n  braceBarR: createToken(\"|}\"),\n  parenL: createToken(\"(\", { beforeExpr, startsExpr }),\n  parenR: createToken(\")\"),\n  comma: createToken(\",\", { beforeExpr }),\n  semi: createToken(\";\", { beforeExpr }),\n  colon: createToken(\":\", { beforeExpr }),\n  doubleColon: createToken(\"::\", { beforeExpr }),\n  dot: createToken(\".\"),\n  question: createToken(\"?\", { beforeExpr }),\n  questionDot: createToken(\"?.\"),\n  arrow: createToken(\"=>\", { beforeExpr }),\n  template: createToken(\"template\"),\n  ellipsis: createToken(\"...\", { beforeExpr }),\n  backQuote: createToken(\"`\", { startsExpr }),\n  dollarBraceL: createToken(\"${\", { beforeExpr, startsExpr }),\n  // start: isTemplate\n  templateTail: createToken(\"...`\", { startsExpr }),\n  templateNonTail: createToken(\"...${\", { beforeExpr, startsExpr }),\n  // end: isTemplate\n  at: createToken(\"@\"),\n  hash: createToken(\"#\", { startsExpr }),\n\n  // Special hashbang token.\n  interpreterDirective: createToken(\"#!...\"),\n\n  // Operators. These carry several kinds of properties to help the\n  // parser use them properly (the presence of these properties is\n  // what categorizes them as operators).\n  //\n  // `binop`, when present, specifies that this operator is a binary\n  // operator, and will refer to its precedence.\n  //\n  // `prefix` and `postfix` mark the operator as a prefix or postfix\n  // unary operator.\n  //\n  // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n  // binary operators with a very low precedence, that should result\n  // in AssignmentExpression nodes.\n\n  // start: isAssign\n  eq: createToken(\"=\", { beforeExpr, isAssign }),\n  assign: createToken(\"_=\", { beforeExpr, isAssign }),\n  slashAssign: createToken(\"_=\", { beforeExpr, isAssign }),\n  // These are only needed to support % and ^ as a Hack-pipe topic token.\n  // When the proposal settles on a token, the others can be merged with\n  // tt.assign.\n  xorAssign: createToken(\"_=\", { beforeExpr, isAssign }),\n  moduloAssign: createToken(\"_=\", { beforeExpr, isAssign }),\n  // end: isAssign\n\n  incDec: createToken(\"++/--\", { prefix, postfix, startsExpr }),\n  bang: createToken(\"!\", { beforeExpr, prefix, startsExpr }),\n  tilde: createToken(\"~\", { beforeExpr, prefix, startsExpr }),\n\n  // More possible topic tokens.\n  // When the proposal settles on a token, at least one of these may be removed.\n  doubleCaret: createToken(\"^^\", { startsExpr }),\n  doubleAt: createToken(\"@@\", { startsExpr }),\n\n  // start: isBinop\n  pipeline: createBinop(\"|>\", 0),\n  nullishCoalescing: createBinop(\"??\", 1),\n  logicalOR: createBinop(\"||\", 1),\n  logicalAND: createBinop(\"&&\", 2),\n  bitwiseOR: createBinop(\"|\", 3),\n  bitwiseXOR: createBinop(\"^\", 4),\n  bitwiseAND: createBinop(\"&\", 5),\n  equality: createBinop(\"==/!=/===/!==\", 6),\n  lt: createBinop(\"</>/<=/>=\", 7),\n  gt: createBinop(\"</>/<=/>=\", 7),\n  relational: createBinop(\"</>/<=/>=\", 7),\n  bitShift: createBinop(\"<</>>/>>>\", 8),\n  bitShiftL: createBinop(\"<</>>/>>>\", 8),\n  bitShiftR: createBinop(\"<</>>/>>>\", 8),\n  plusMin: createToken(\"+/-\", { beforeExpr, binop: 9, prefix, startsExpr }),\n  // startsExpr: required by v8intrinsic plugin\n  modulo: createToken(\"%\", { binop: 10, startsExpr }),\n  // unset `beforeExpr` as it can be `function *`\n  star: createToken(\"*\", { binop: 10 }),\n  slash: createBinop(\"/\", 10),\n  exponent: createToken(\"**\", {\n    beforeExpr,\n    binop: 11,\n    rightAssociative: true,\n  }),\n\n  // Keywords\n  // Don't forget to update packages/babel-helper-validator-identifier/src/keyword.js\n  // when new keywords are added\n  // start: isLiteralPropertyName\n  // start: isKeyword\n  _in: createKeyword(\"in\", { beforeExpr, binop: 7 }),\n  _instanceof: createKeyword(\"instanceof\", { beforeExpr, binop: 7 }),\n  // end: isBinop\n  _break: createKeyword(\"break\"),\n  _case: createKeyword(\"case\", { beforeExpr }),\n  _catch: createKeyword(\"catch\"),\n  _continue: createKeyword(\"continue\"),\n  _debugger: createKeyword(\"debugger\"),\n  _default: createKeyword(\"default\", { beforeExpr }),\n  _else: createKeyword(\"else\", { beforeExpr }),\n  _finally: createKeyword(\"finally\"),\n  _function: createKeyword(\"function\", { startsExpr }),\n  _if: createKeyword(\"if\"),\n  _return: createKeyword(\"return\", { beforeExpr }),\n  _switch: createKeyword(\"switch\"),\n  _throw: createKeyword(\"throw\", { beforeExpr, prefix, startsExpr }),\n  _try: createKeyword(\"try\"),\n  _var: createKeyword(\"var\"),\n  _const: createKeyword(\"const\"),\n  _with: createKeyword(\"with\"),\n  _new: createKeyword(\"new\", { beforeExpr, startsExpr }),\n  _this: createKeyword(\"this\", { startsExpr }),\n  _super: createKeyword(\"super\", { startsExpr }),\n  _class: createKeyword(\"class\", { startsExpr }),\n  _extends: createKeyword(\"extends\", { beforeExpr }),\n  _export: createKeyword(\"export\"),\n  _import: createKeyword(\"import\", { startsExpr }),\n  _null: createKeyword(\"null\", { startsExpr }),\n  _true: createKeyword(\"true\", { startsExpr }),\n  _false: createKeyword(\"false\", { startsExpr }),\n  _typeof: createKeyword(\"typeof\", { beforeExpr, prefix, startsExpr }),\n  _void: createKeyword(\"void\", { beforeExpr, prefix, startsExpr }),\n  _delete: createKeyword(\"delete\", { beforeExpr, prefix, startsExpr }),\n  // start: isLoop\n  _do: createKeyword(\"do\", { isLoop, beforeExpr }),\n  _for: createKeyword(\"for\", { isLoop }),\n  _while: createKeyword(\"while\", { isLoop }),\n  // end: isLoop\n  // end: isKeyword\n\n  // Primary literals\n  // start: isIdentifier\n  _as: createKeywordLike(\"as\", { startsExpr }),\n  _assert: createKeywordLike(\"assert\", { startsExpr }),\n  _async: createKeywordLike(\"async\", { startsExpr }),\n  _await: createKeywordLike(\"await\", { startsExpr }),\n  _defer: createKeywordLike(\"defer\", { startsExpr }),\n  _from: createKeywordLike(\"from\", { startsExpr }),\n  _get: createKeywordLike(\"get\", { startsExpr }),\n  _let: createKeywordLike(\"let\", { startsExpr }),\n  _meta: createKeywordLike(\"meta\", { startsExpr }),\n  _of: createKeywordLike(\"of\", { startsExpr }),\n  _sent: createKeywordLike(\"sent\", { startsExpr }),\n  _set: createKeywordLike(\"set\", { startsExpr }),\n  _source: createKeywordLike(\"source\", { startsExpr }),\n  _static: createKeywordLike(\"static\", { startsExpr }),\n  _using: createKeywordLike(\"using\", { startsExpr }),\n  _yield: createKeywordLike(\"yield\", { startsExpr }),\n\n  // Flow and TypeScript Keywordlike\n  _asserts: createKeywordLike(\"asserts\", { startsExpr }),\n  _checks: createKeywordLike(\"checks\", { startsExpr }),\n  _exports: createKeywordLike(\"exports\", { startsExpr }),\n  _global: createKeywordLike(\"global\", { startsExpr }),\n  _implements: createKeywordLike(\"implements\", { startsExpr }),\n  _intrinsic: createKeywordLike(\"intrinsic\", { startsExpr }),\n  _infer: createKeywordLike(\"infer\", { startsExpr }),\n  _is: createKeywordLike(\"is\", { startsExpr }),\n  _mixins: createKeywordLike(\"mixins\", { startsExpr }),\n  _proto: createKeywordLike(\"proto\", { startsExpr }),\n  _require: createKeywordLike(\"require\", { startsExpr }),\n  _satisfies: createKeywordLike(\"satisfies\", { startsExpr }),\n  // start: isTSTypeOperator\n  _keyof: createKeywordLike(\"keyof\", { startsExpr }),\n  _readonly: createKeywordLike(\"readonly\", { startsExpr }),\n  _unique: createKeywordLike(\"unique\", { startsExpr }),\n  // end: isTSTypeOperator\n  // start: isTSDeclarationStart\n  _abstract: createKeywordLike(\"abstract\", { startsExpr }),\n  _declare: createKeywordLike(\"declare\", { startsExpr }),\n  _enum: createKeywordLike(\"enum\", { startsExpr }),\n  _module: createKeywordLike(\"module\", { startsExpr }),\n  _namespace: createKeywordLike(\"namespace\", { startsExpr }),\n  // start: isFlowInterfaceOrTypeOrOpaque\n  _interface: createKeywordLike(\"interface\", { startsExpr }),\n  _type: createKeywordLike(\"type\", { startsExpr }),\n  // end: isTSDeclarationStart\n  _opaque: createKeywordLike(\"opaque\", { startsExpr }),\n  // end: isFlowInterfaceOrTypeOrOpaque\n  name: createToken(\"name\", { startsExpr }),\n\n  // placeholder plugin\n  placeholder: createToken(\"%%\", { startsExpr }),\n  // end: isIdentifier\n\n  string: createToken(\"string\", { startsExpr }),\n  num: createToken(\"num\", { startsExpr }),\n  bigint: createToken(\"bigint\", { startsExpr }),\n  // TODO: Remove this in Babel 8\n  decimal: createToken(\"decimal\", { startsExpr }),\n  // end: isLiteralPropertyName\n  regexp: createToken(\"regexp\", { startsExpr }),\n  privateName: createToken(\"#name\", { startsExpr }),\n  eof: createToken(\"eof\"),\n\n  // jsx plugin\n  jsxName: createToken(\"jsxName\"),\n  jsxText: createToken(\"jsxText\", { beforeExpr }),\n  jsxTagStart: createToken(\"jsxTagStart\", { startsExpr }),\n  jsxTagEnd: createToken(\"jsxTagEnd\"),\n} as const;\n\nexport function tokenIsIdentifier(token: TokenType): boolean {\n  return token >= tt._as && token <= tt.placeholder;\n}\n\nexport function tokenKeywordOrIdentifierIsKeyword(token: TokenType): boolean {\n  // we can remove the token >= tt._in check when we\n  // know a token is either keyword or identifier\n  return token <= tt._while;\n}\n\nexport function tokenIsKeywordOrIdentifier(token: TokenType): boolean {\n  return token >= tt._in && token <= tt.placeholder;\n}\n\nexport function tokenIsLiteralPropertyName(token: TokenType): boolean {\n  return token >= tt._in && token <= tt.decimal;\n}\n\nexport function tokenComesBeforeExpression(token: TokenType): boolean {\n  return tokenBeforeExprs[token];\n}\n\nexport function tokenCanStartExpression(token: TokenType): boolean {\n  return tokenStartsExprs[token];\n}\n\nexport function tokenIsAssignment(token: TokenType): boolean {\n  return token >= tt.eq && token <= tt.moduloAssign;\n}\n\nexport function tokenIsFlowInterfaceOrTypeOrOpaque(token: TokenType): boolean {\n  return token >= tt._interface && token <= tt._opaque;\n}\n\nexport function tokenIsLoop(token: TokenType): boolean {\n  return token >= tt._do && token <= tt._while;\n}\n\nexport function tokenIsKeyword(token: TokenType): boolean {\n  return token >= tt._in && token <= tt._while;\n}\n\nexport function tokenIsOperator(token: TokenType): boolean {\n  return token >= tt.pipeline && token <= tt._instanceof;\n}\n\nexport function tokenIsPostfix(token: TokenType): boolean {\n  return token === tt.incDec;\n}\n\nexport function tokenIsPrefix(token: TokenType): boolean {\n  return tokenPrefixes[token];\n}\n\nexport function tokenIsTSTypeOperator(token: TokenType): boolean {\n  return token >= tt._keyof && token <= tt._unique;\n}\n\nexport function tokenIsTSDeclarationStart(token: TokenType): boolean {\n  return token >= tt._abstract && token <= tt._type;\n}\n\nexport function tokenLabelName(token: TokenType): string {\n  return tokenLabels[token];\n}\n\nexport function tokenOperatorPrecedence(token: TokenType): number {\n  return tokenBinops[token];\n}\n\nexport function tokenIsBinaryOperator(token: TokenType): boolean {\n  return tokenBinops[token] !== -1;\n}\n\nexport function tokenIsRightAssociative(token: TokenType): boolean {\n  return token === tt.exponent;\n}\n\nexport function tokenIsTemplate(token: TokenType): boolean {\n  return token >= tt.templateTail && token <= tt.templateNonTail;\n}\n\nexport function getExportedToken(token: TokenType): ExportedTokenType {\n  return tokenTypes[token];\n}\n\nexport function isTokenType(obj: any): boolean {\n  return typeof obj === \"number\";\n}\n\nif (!process.env.BABEL_8_BREAKING) {\n  tokenTypes[tt.braceR].updateContext = context => {\n    context.pop();\n  };\n\n  tokenTypes[tt.braceL].updateContext =\n    tokenTypes[tt.braceHashL].updateContext =\n    tokenTypes[tt.dollarBraceL].updateContext =\n      context => {\n        context.push(tc.brace);\n      };\n\n  tokenTypes[tt.backQuote].updateContext = context => {\n    if (context[context.length - 1] === tc.template) {\n      context.pop();\n    } else {\n      context.push(tc.template);\n    }\n  };\n\n  tokenTypes[tt.jsxTagStart].updateContext = context => {\n    context.push(tc.j_expr, tc.j_oTag);\n  };\n}\n","// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point between 0x80 and 0xffff.\n// Generated by `scripts/generate-identifier-regex.cjs`.\n\n/* prettier-ignore */\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088e\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7cd\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7dc\\ua7f2-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n/* prettier-ignore */\nlet nonASCIIidentifierChars = \"\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1ace\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\n\nconst nonASCIIidentifierStart = new RegExp(\n  \"[\" + nonASCIIidentifierStartChars + \"]\",\n);\nconst nonASCIIidentifier = new RegExp(\n  \"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\",\n);\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\n\n// These are a run-length and offset-encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by `scripts/generate-identifier-regex.cjs`.\n/* prettier-ignore */\nconst astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,4,51,13,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,39,27,10,22,251,41,7,1,17,2,60,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,31,9,2,0,3,0,2,37,2,0,26,0,2,0,45,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,200,32,32,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,26,3994,6,582,6842,29,1763,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,433,44,212,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,42,9,8936,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,229,29,3,0,496,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4153,7,221,3,5761,15,7472,16,621,2467,541,1507,4938,6,4191];\n/* prettier-ignore */\nconst astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,7,9,32,4,318,1,80,3,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,68,8,2,0,3,0,2,3,2,4,2,0,15,1,83,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,7,19,58,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,343,9,54,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,10,1,2,0,49,6,4,4,14,10,5350,0,7,14,11465,27,2343,9,87,9,39,4,60,6,26,9,535,9,470,0,2,54,8,3,82,0,12,1,19628,1,4178,9,519,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,245,1,2,9,726,6,110,6,6,9,4759,9,787719,239];\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code: number, set: readonly number[]): boolean {\n  let pos = 0x10000;\n  for (let i = 0, length = set.length; i < length; i += 2) {\n    pos += set[i];\n    if (pos > code) return false;\n\n    pos += set[i + 1];\n    if (pos >= code) return true;\n  }\n  return false;\n}\n\n// Test whether a given character code starts an identifier.\n\nexport function isIdentifierStart(code: number): boolean {\n  if (code < charCodes.uppercaseA) return code === charCodes.dollarSign;\n  if (code <= charCodes.uppercaseZ) return true;\n  if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n  if (code <= charCodes.lowercaseZ) return true;\n  if (code <= 0xffff) {\n    return (\n      code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n    );\n  }\n  return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code: number): boolean {\n  if (code < charCodes.digit0) return code === charCodes.dollarSign;\n  if (code < charCodes.colon) return true;\n  if (code < charCodes.uppercaseA) return false;\n  if (code <= charCodes.uppercaseZ) return true;\n  if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n  if (code <= charCodes.lowercaseZ) return true;\n  if (code <= 0xffff) {\n    return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n  }\n  return (\n    isInAstralSet(code, astralIdentifierStartCodes) ||\n    isInAstralSet(code, astralIdentifierCodes)\n  );\n}\n\n// Test whether a given string is a valid identifier name\n\nexport function isIdentifierName(name: string): boolean {\n  let isFirst = true;\n  for (let i = 0; i < name.length; i++) {\n    // The implementation is based on\n    // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n    // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n    // since `name` is mostly ASCII, an inlined `charCodeAt` wins here\n    let cp = name.charCodeAt(i);\n    if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n      const trail = name.charCodeAt(++i);\n      if ((trail & 0xfc00) === 0xdc00) {\n        cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n      }\n    }\n    if (isFirst) {\n      isFirst = false;\n      if (!isIdentifierStart(cp)) {\n        return false;\n      }\n    } else if (!isIdentifierChar(cp)) {\n      return false;\n    }\n  }\n  return !isFirst;\n}\n","const reservedWords = {\n  keyword: [\n    \"break\",\n    \"case\",\n    \"catch\",\n    \"continue\",\n    \"debugger\",\n    \"default\",\n    \"do\",\n    \"else\",\n    \"finally\",\n    \"for\",\n    \"function\",\n    \"if\",\n    \"return\",\n    \"switch\",\n    \"throw\",\n    \"try\",\n    \"var\",\n    \"const\",\n    \"while\",\n    \"with\",\n    \"new\",\n    \"this\",\n    \"super\",\n    \"class\",\n    \"extends\",\n    \"export\",\n    \"import\",\n    \"null\",\n    \"true\",\n    \"false\",\n    \"in\",\n    \"instanceof\",\n    \"typeof\",\n    \"void\",\n    \"delete\",\n  ],\n  strict: [\n    \"implements\",\n    \"interface\",\n    \"let\",\n    \"package\",\n    \"private\",\n    \"protected\",\n    \"public\",\n    \"static\",\n    \"yield\",\n  ],\n  strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n  return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n  return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n  return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n  word: string,\n  inModule: boolean,\n): boolean {\n  return (\n    isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n  );\n}\n\nexport function isKeyword(word: string): boolean {\n  return keywords.has(word);\n}\n","import * as charCodes from \"charcodes\";\nimport { isIdentifierStart } from \"@babel/helper-validator-identifier\";\n\nexport {\n  isIdentifierStart,\n  isIdentifierChar,\n  isReservedWord,\n  isStrictBindOnlyReservedWord,\n  isStrictBindReservedWord,\n  isStrictReservedWord,\n  isKeyword,\n} from \"@babel/helper-validator-identifier\";\n\nexport const keywordRelationalOperator = /^in(stanceof)?$/;\n\n// Test whether a current state character code and next character code is @\n\nexport function isIteratorStart(\n  current: number,\n  next: number,\n  next2: number,\n): boolean {\n  return (\n    current === charCodes.atSign &&\n    next === charCodes.atSign &&\n    isIdentifierStart(next2)\n  );\n}\n\n// This is the comprehensive set of JavaScript reserved words\n// If a word is in this set, it could be a reserved word,\n// depending on sourceType/strictMode/binding info. In other words\n// if a word is not in this set, it is not a reserved word under\n// any circumstance.\nconst reservedWordLikeSet = new Set([\n  \"break\",\n  \"case\",\n  \"catch\",\n  \"continue\",\n  \"debugger\",\n  \"default\",\n  \"do\",\n  \"else\",\n  \"finally\",\n  \"for\",\n  \"function\",\n  \"if\",\n  \"return\",\n  \"switch\",\n  \"throw\",\n  \"try\",\n  \"var\",\n  \"const\",\n  \"while\",\n  \"with\",\n  \"new\",\n  \"this\",\n  \"super\",\n  \"class\",\n  \"extends\",\n  \"export\",\n  \"import\",\n  \"null\",\n  \"true\",\n  \"false\",\n  \"in\",\n  \"instanceof\",\n  \"typeof\",\n  \"void\",\n  \"delete\",\n  // strict\n  \"implements\",\n  \"interface\",\n  \"let\",\n  \"package\",\n  \"private\",\n  \"protected\",\n  \"public\",\n  \"static\",\n  \"yield\",\n  // strictBind\n  \"eval\",\n  \"arguments\",\n  // reservedWorkLike\n  \"enum\",\n  \"await\",\n]);\n\nexport function canBeReservedWord(word: string): boolean {\n  return reservedWordLikeSet.has(word);\n}\n","import { ScopeFlag, BindingFlag } from \"./scopeflags.ts\";\nimport type { Position } from \"./location.ts\";\nimport type * as N from \"../types.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport type Tokenizer from \"../tokenizer/index.ts\";\n\nexport const enum NameType {\n  // var-declared names in the current lexical scope\n  Var = 1 << 0,\n  // lexically-declared names in the current lexical scope\n  Lexical = 1 << 1,\n  // lexically-declared FunctionDeclaration names in the current lexical scope\n  Function = 1 << 2,\n}\n\n// Start an AST node, attaching a start offset.\nexport class Scope {\n  flags: ScopeFlag = 0;\n  names: Map<string, NameType> = new Map();\n  firstLexicalName = \"\";\n\n  constructor(flags: ScopeFlag) {\n    this.flags = flags;\n  }\n}\n\n// The functions in this module keep track of declared variables in the\n// current scope in order to detect duplicate variable names.\nexport default class ScopeHandler<IScope extends Scope = Scope> {\n  parser: Tokenizer;\n  scopeStack: Array<IScope> = [];\n  inModule: boolean;\n  undefinedExports: Map<string, Position> = new Map();\n\n  constructor(parser: Tokenizer, inModule: boolean) {\n    this.parser = parser;\n    this.inModule = inModule;\n  }\n\n  get inTopLevel() {\n    return (this.currentScope().flags & ScopeFlag.PROGRAM) > 0;\n  }\n  get inFunction() {\n    return (this.currentVarScopeFlags() & ScopeFlag.FUNCTION_BASE) > 0;\n  }\n  get allowSuper() {\n    return (this.currentThisScopeFlags() & ScopeFlag.SUPER) > 0;\n  }\n  get allowDirectSuper() {\n    return (this.currentThisScopeFlags() & ScopeFlag.DIRECT_SUPER) > 0;\n  }\n  get allowNewTarget() {\n    return (this.currentThisScopeFlags() & ScopeFlag.NEW_TARGET) > 0;\n  }\n  get inClass() {\n    return (this.currentThisScopeFlags() & ScopeFlag.CLASS_BASE) > 0;\n  }\n  get inClassAndNotInNonArrowFunction() {\n    const flags = this.currentThisScopeFlags();\n    return (\n      (flags & ScopeFlag.CLASS_BASE) > 0 &&\n      (flags & ScopeFlag.FUNCTION_BASE) === 0\n    );\n  }\n  get inStaticBlock() {\n    for (let i = this.scopeStack.length - 1; ; i--) {\n      const { flags } = this.scopeStack[i];\n      if (flags & ScopeFlag.STATIC_BLOCK) {\n        return true;\n      }\n      if (flags & (ScopeFlag.VAR | ScopeFlag.CLASS_BASE)) {\n        // function body, module body, class property initializers\n        return false;\n      }\n    }\n  }\n  get inNonArrowFunction() {\n    return (this.currentThisScopeFlags() & ScopeFlag.FUNCTION_BASE) > 0;\n  }\n  get inBareCaseStatement() {\n    return (this.currentScope().flags & ScopeFlag.SWITCH) > 0;\n  }\n  get treatFunctionsAsVar() {\n    return this.treatFunctionsAsVarInScope(this.currentScope());\n  }\n\n  createScope(flags: ScopeFlag): Scope {\n    return new Scope(flags);\n  }\n\n  enter(flags: ScopeFlag) {\n    /*:: +createScope: (flags:ScopeFlag) => IScope; */\n    // @ts-expect-error This method will be overwritten by subclasses\n    this.scopeStack.push(this.createScope(flags));\n  }\n\n  exit(): ScopeFlag {\n    const scope = this.scopeStack.pop();\n    return scope.flags;\n  }\n\n  // The spec says:\n  // > At the top level of a function, or script, function declarations are\n  // > treated like var declarations rather than like lexical declarations.\n  treatFunctionsAsVarInScope(scope: IScope): boolean {\n    return !!(\n      scope.flags & (ScopeFlag.FUNCTION_BASE | ScopeFlag.STATIC_BLOCK) ||\n      (!this.parser.inModule && scope.flags & ScopeFlag.PROGRAM)\n    );\n  }\n\n  declareName(name: string, bindingType: BindingFlag, loc: Position) {\n    let scope = this.currentScope();\n    if (\n      bindingType & BindingFlag.SCOPE_LEXICAL ||\n      bindingType & BindingFlag.SCOPE_FUNCTION\n    ) {\n      this.checkRedeclarationInScope(scope, name, bindingType, loc);\n\n      let type = scope.names.get(name) || 0;\n\n      if (bindingType & BindingFlag.SCOPE_FUNCTION) {\n        type = type | NameType.Function;\n      } else {\n        if (!scope.firstLexicalName) {\n          scope.firstLexicalName = name;\n        }\n        type = type | NameType.Lexical;\n      }\n\n      scope.names.set(name, type);\n\n      if (bindingType & BindingFlag.SCOPE_LEXICAL) {\n        this.maybeExportDefined(scope, name);\n      }\n    } else if (bindingType & BindingFlag.SCOPE_VAR) {\n      for (let i = this.scopeStack.length - 1; i >= 0; --i) {\n        scope = this.scopeStack[i];\n        this.checkRedeclarationInScope(scope, name, bindingType, loc);\n        scope.names.set(name, (scope.names.get(name) || 0) | NameType.Var);\n        this.maybeExportDefined(scope, name);\n\n        if (scope.flags & ScopeFlag.VAR) break;\n      }\n    }\n    if (this.parser.inModule && scope.flags & ScopeFlag.PROGRAM) {\n      this.undefinedExports.delete(name);\n    }\n  }\n\n  maybeExportDefined(scope: IScope, name: string) {\n    if (this.parser.inModule && scope.flags & ScopeFlag.PROGRAM) {\n      this.undefinedExports.delete(name);\n    }\n  }\n\n  checkRedeclarationInScope(\n    scope: IScope,\n    name: string,\n    bindingType: BindingFlag,\n    loc: Position,\n  ) {\n    if (this.isRedeclaredInScope(scope, name, bindingType)) {\n      this.parser.raise(Errors.VarRedeclaration, loc, {\n        identifierName: name,\n      });\n    }\n  }\n\n  isRedeclaredInScope(\n    scope: IScope,\n    name: string,\n    bindingType: BindingFlag,\n  ): boolean {\n    if (!(bindingType & BindingFlag.KIND_VALUE)) return false;\n\n    if (bindingType & BindingFlag.SCOPE_LEXICAL) {\n      return scope.names.has(name);\n    }\n\n    const type = scope.names.get(name);\n\n    if (bindingType & BindingFlag.SCOPE_FUNCTION) {\n      return (\n        (type & NameType.Lexical) > 0 ||\n        (!this.treatFunctionsAsVarInScope(scope) && (type & NameType.Var) > 0)\n      );\n    }\n\n    return (\n      ((type & NameType.Lexical) > 0 &&\n        // Annex B.3.4\n        // https://tc39.es/ecma262/#sec-variablestatements-in-catch-blocks\n        !(\n          scope.flags & ScopeFlag.SIMPLE_CATCH &&\n          scope.firstLexicalName === name\n        )) ||\n      (!this.treatFunctionsAsVarInScope(scope) &&\n        (type & NameType.Function) > 0)\n    );\n  }\n\n  checkLocalExport(id: N.Identifier) {\n    const { name } = id;\n    const topLevelScope = this.scopeStack[0];\n    if (!topLevelScope.names.has(name)) {\n      this.undefinedExports.set(name, id.loc.start);\n    }\n  }\n\n  currentScope(): IScope {\n    return this.scopeStack[this.scopeStack.length - 1];\n  }\n\n  currentVarScopeFlags(): ScopeFlag {\n    for (let i = this.scopeStack.length - 1; ; i--) {\n      const { flags } = this.scopeStack[i];\n      if (flags & ScopeFlag.VAR) {\n        return flags;\n      }\n    }\n  }\n\n  // Could be useful for `arguments`, `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\n  currentThisScopeFlags(): ScopeFlag {\n    for (let i = this.scopeStack.length - 1; ; i--) {\n      const { flags } = this.scopeStack[i];\n      if (\n        flags & (ScopeFlag.VAR | ScopeFlag.CLASS_BASE) &&\n        !(flags & ScopeFlag.ARROW)\n      ) {\n        return flags;\n      }\n    }\n  }\n}\n","import type { Position } from \"../../util/location.ts\";\nimport ScopeHandler, { NameType, Scope } from \"../../util/scope.ts\";\nimport { BindingFlag, type ScopeFlag } from \"../../util/scopeflags.ts\";\nimport type * as N from \"../../types.ts\";\n\n// Reference implementation: https://github.com/facebook/flow/blob/23aeb2a2ef6eb4241ce178fde5d8f17c5f747fb5/src/typing/env.ml#L536-L584\nclass FlowScope extends Scope {\n  // declare function foo(): type;\n  declareFunctions: Set<string> = new Set();\n}\n\nexport default class FlowScopeHandler extends ScopeHandler<FlowScope> {\n  createScope(flags: ScopeFlag): FlowScope {\n    return new FlowScope(flags);\n  }\n\n  declareName(name: string, bindingType: BindingFlag, loc: Position) {\n    const scope = this.currentScope();\n    if (bindingType & BindingFlag.FLAG_FLOW_DECLARE_FN) {\n      this.checkRedeclarationInScope(scope, name, bindingType, loc);\n      this.maybeExportDefined(scope, name);\n      scope.declareFunctions.add(name);\n      return;\n    }\n\n    super.declareName(name, bindingType, loc);\n  }\n\n  isRedeclaredInScope(\n    scope: FlowScope,\n    name: string,\n    bindingType: BindingFlag,\n  ): boolean {\n    if (super.isRedeclaredInScope(scope, name, bindingType)) return true;\n\n    if (\n      bindingType & BindingFlag.FLAG_FLOW_DECLARE_FN &&\n      !scope.declareFunctions.has(name)\n    ) {\n      const type = scope.names.get(name);\n      return (type & NameType.Function) > 0 || (type & NameType.Lexical) > 0;\n    }\n\n    return false;\n  }\n\n  checkLocalExport(id: N.Identifier) {\n    if (!this.scopeStack[0].declareFunctions.has(id.name)) {\n      super.checkLocalExport(id);\n    }\n  }\n}\n","/*:: declare var invariant; */\n\nimport type Parser from \"../../parser/index.ts\";\nimport {\n  tokenIsIdentifier,\n  tokenIsKeyword,\n  tokenIsKeywordOrIdentifier,\n  tokenIsLiteralPropertyName,\n  tokenLabelName,\n  tt,\n  type TokenType,\n  tokenIsFlowInterfaceOrTypeOrOpaque,\n} from \"../../tokenizer/types.ts\";\nimport type * as N from \"../../types.ts\";\nimport type { Position } from \"../../util/location.ts\";\nimport { types as tc } from \"../../tokenizer/context.ts\";\nimport * as charCodes from \"charcodes\";\nimport { isIteratorStart } from \"../../util/identifier.ts\";\nimport FlowScopeHandler from \"./scope.ts\";\nimport { BindingFlag, ScopeFlag } from \"../../util/scopeflags.ts\";\nimport type { ExpressionErrors } from \"../../parser/util.ts\";\nimport type { ParseStatementFlag } from \"../../parser/statement.ts\";\nimport { Errors, ParseErrorEnum } from \"../../parse-error.ts\";\nimport type { Undone } from \"../../parser/node.ts\";\nimport type { ClassWithMixin, IJSXParserMixin } from \"../jsx/index.ts\";\n\nconst reservedTypes = new Set([\n  \"_\",\n  \"any\",\n  \"bool\",\n  \"boolean\",\n  \"empty\",\n  \"extends\",\n  \"false\",\n  \"interface\",\n  \"mixed\",\n  \"null\",\n  \"number\",\n  \"static\",\n  \"string\",\n  \"true\",\n  \"typeof\",\n  \"void\",\n]);\n\n/* eslint sort-keys: \"error\" */\n// The Errors key follows https://github.com/facebook/flow/blob/master/src/parser/parse_error.ml unless it does not exist\nconst FlowErrors = ParseErrorEnum`flow`({\n  AmbiguousConditionalArrow:\n    \"Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.\",\n  AmbiguousDeclareModuleKind:\n    \"Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.\",\n  // TODO: When we get proper string enums in typescript make this ReservedType.\n  // Not really worth it to do the whole $Values dance with reservedTypes set.\n  AssignReservedType: ({ reservedType }: { reservedType: string }) =>\n    `Cannot overwrite reserved type ${reservedType}.`,\n  DeclareClassElement:\n    \"The `declare` modifier can only appear on class fields.\",\n  DeclareClassFieldInitializer:\n    \"Initializers are not allowed in fields with the `declare` modifier.\",\n  DuplicateDeclareModuleExports:\n    \"Duplicate `declare module.exports` statement.\",\n  EnumBooleanMemberNotInitialized: ({\n    memberName,\n    enumName,\n  }: {\n    memberName: string;\n    enumName: string;\n  }) =>\n    `Boolean enum members need to be initialized. Use either \\`${memberName} = true,\\` or \\`${memberName} = false,\\` in enum \\`${enumName}\\`.`,\n  EnumDuplicateMemberName: ({\n    memberName,\n    enumName,\n  }: {\n    memberName: string;\n    enumName: string;\n  }) =>\n    `Enum member names need to be unique, but the name \\`${memberName}\\` has already been used before in enum \\`${enumName}\\`.`,\n  EnumInconsistentMemberValues: ({ enumName }: { enumName: string }) =>\n    `Enum \\`${enumName}\\` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.`,\n  EnumInvalidExplicitType: ({\n    invalidEnumType,\n    enumName,\n  }: {\n    invalidEnumType: string;\n    enumName: string;\n  }) =>\n    `Enum type \\`${invalidEnumType}\\` is not valid. Use one of \\`boolean\\`, \\`number\\`, \\`string\\`, or \\`symbol\\` in enum \\`${enumName}\\`.`,\n  EnumInvalidExplicitTypeUnknownSupplied: ({\n    enumName,\n  }: {\n    enumName: string;\n  }) =>\n    `Supplied enum type is not valid. Use one of \\`boolean\\`, \\`number\\`, \\`string\\`, or \\`symbol\\` in enum \\`${enumName}\\`.`,\n\n  // TODO: When moving to typescript, we should either have each of the\n  // following errors only accept the specific strings they want:\n  //\n  // ...PrimaryType: explicitType: \"string\" | \"number\" | \"boolean\"\n  // ...SymbolType: explicitType: \"symbol\"\n  // ...UnknownType: explicitType: null\n  //\n  // Or, alternatively, merge these three errors together into one\n  // `EnumInvalidMemberInitializer` error that can accept `EnumExplicitType`\n  // without alteration, and then just have its message change based on the\n  // explicitType.\n  EnumInvalidMemberInitializerPrimaryType: ({\n    enumName,\n    memberName,\n    explicitType,\n  }: {\n    enumName: string;\n    memberName: string;\n    explicitType: EnumExplicitType;\n  }) =>\n    `Enum \\`${enumName}\\` has type \\`${explicitType}\\`, so the initializer of \\`${memberName}\\` needs to be a ${explicitType} literal.`,\n  EnumInvalidMemberInitializerSymbolType: ({\n    enumName,\n    memberName,\n  }: {\n    enumName: string;\n    memberName: string;\n    explicitType: EnumExplicitType;\n  }) =>\n    `Symbol enum members cannot be initialized. Use \\`${memberName},\\` in enum \\`${enumName}\\`.`,\n  EnumInvalidMemberInitializerUnknownType: ({\n    enumName,\n    memberName,\n  }: {\n    enumName: string;\n    memberName: string;\n    explicitType: EnumExplicitType;\n  }) =>\n    `The enum member initializer for \\`${memberName}\\` needs to be a literal (either a boolean, number, or string) in enum \\`${enumName}\\`.`,\n  EnumInvalidMemberName: ({\n    enumName,\n    memberName,\n    suggestion,\n  }: {\n    enumName: string;\n    memberName: string;\n    suggestion: string;\n  }) =>\n    `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using \\`${memberName}\\`, consider using \\`${suggestion}\\`, in enum \\`${enumName}\\`.`,\n  EnumNumberMemberNotInitialized: ({\n    enumName,\n    memberName,\n  }: {\n    enumName: string;\n    memberName: string;\n  }) =>\n    `Number enum members need to be initialized, e.g. \\`${memberName} = 1\\` in enum \\`${enumName}\\`.`,\n  EnumStringMemberInconsistentlyInitialized: ({\n    enumName,\n  }: {\n    enumName: string;\n  }) =>\n    `String enum members need to consistently either all use initializers, or use no initializers, in enum \\`${enumName}\\`.`,\n  GetterMayNotHaveThisParam: \"A getter cannot have a `this` parameter.\",\n  ImportReflectionHasImportType:\n    \"An `import module` declaration can not use `type` or `typeof` keyword.\",\n  ImportTypeShorthandOnlyInPureImport:\n    \"The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.\",\n  InexactInsideExact:\n    \"Explicit inexact syntax cannot appear inside an explicit exact object type.\",\n  InexactInsideNonObject:\n    \"Explicit inexact syntax cannot appear in class or interface definitions.\",\n  InexactVariance: \"Explicit inexact syntax cannot have variance.\",\n  InvalidNonTypeImportInDeclareModule:\n    \"Imports within a `declare module` body must always be `import type` or `import typeof`.\",\n  MissingTypeParamDefault:\n    \"Type parameter declaration needs a default, since a preceding type parameter declaration has a default.\",\n  NestedDeclareModule:\n    \"`declare module` cannot be used inside another `declare module`.\",\n  NestedFlowComment: \"Cannot have a flow comment inside another flow comment.\",\n  PatternIsOptional: {\n    message:\n      \"A binding pattern parameter cannot be optional in an implementation signature.\",\n    // For consistency in TypeScript and Flow error codes\n    ...(!process.env.BABEL_8_BREAKING\n      ? { reasonCode: \"OptionalBindingPattern\" }\n      : {}),\n  },\n  SetterMayNotHaveThisParam: \"A setter cannot have a `this` parameter.\",\n  SpreadVariance: \"Spread properties cannot have variance.\",\n  ThisParamAnnotationRequired:\n    \"A type annotation is required for the `this` parameter.\",\n  ThisParamBannedInConstructor:\n    \"Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.\",\n  ThisParamMayNotBeOptional: \"The `this` parameter cannot be optional.\",\n  ThisParamMustBeFirst:\n    \"The `this` parameter must be the first function parameter.\",\n  ThisParamNoDefault: \"The `this` parameter may not have a default value.\",\n  TypeBeforeInitializer:\n    \"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.\",\n  TypeCastInPattern:\n    \"The type cast expression is expected to be wrapped with parenthesis.\",\n  UnexpectedExplicitInexactInObject:\n    \"Explicit inexact syntax must appear at the end of an inexact object.\",\n  UnexpectedReservedType: ({ reservedType }: { reservedType: string }) =>\n    `Unexpected reserved type ${reservedType}.`,\n  UnexpectedReservedUnderscore:\n    \"`_` is only allowed as a type argument to call or new.\",\n  UnexpectedSpaceBetweenModuloChecks:\n    \"Spaces between `%` and `checks` are not allowed here.\",\n  UnexpectedSpreadType:\n    \"Spread operator cannot appear in class or interface definitions.\",\n  UnexpectedSubtractionOperand:\n    'Unexpected token, expected \"number\" or \"bigint\".',\n  UnexpectedTokenAfterTypeParameter:\n    \"Expected an arrow function after this type parameter declaration.\",\n  UnexpectedTypeParameterBeforeAsyncArrowFunction:\n    \"Type parameters must come after the async keyword, e.g. instead of `<T> async () => {}`, use `async <T>() => {}`.\",\n  UnsupportedDeclareExportKind: ({\n    unsupportedExportKind,\n    suggestion,\n  }: {\n    unsupportedExportKind: string;\n    suggestion: string;\n  }) =>\n    `\\`declare export ${unsupportedExportKind}\\` is not supported. Use \\`${suggestion}\\` instead.`,\n  UnsupportedStatementInDeclareModule:\n    \"Only declares and type imports are allowed inside declare module.\",\n  UnterminatedFlowComment: \"Unterminated flow-comment.\",\n});\n/* eslint-disable sort-keys */\n\nfunction isEsModuleType(bodyElement: N.Node): boolean {\n  return (\n    bodyElement.type === \"DeclareExportAllDeclaration\" ||\n    (bodyElement.type === \"DeclareExportDeclaration\" &&\n      (!bodyElement.declaration ||\n        (bodyElement.declaration.type !== \"TypeAlias\" &&\n          bodyElement.declaration.type !== \"InterfaceDeclaration\")))\n  );\n}\n\nfunction hasTypeImportKind(\n  node: Undone<N.ImportSpecifier | N.ImportDeclaration>,\n): boolean {\n  return node.importKind === \"type\" || node.importKind === \"typeof\";\n}\n\nconst exportSuggestions = {\n  const: \"declare export var\",\n  let: \"declare export var\",\n  type: \"export type\",\n  interface: \"export interface\",\n};\n\n// Like Array#filter, but returns a tuple [ acceptedElements, discardedElements ]\nfunction partition<T>(\n  list: T[],\n  test: (c: T, b: number, a: T[]) => boolean | undefined | null,\n): [T[], T[]] {\n  const list1: T[] = [];\n  const list2: T[] = [];\n  for (let i = 0; i < list.length; i++) {\n    (test(list[i], i, list) ? list1 : list2).push(list[i]);\n  }\n  return [list1, list2];\n}\n\nconst FLOW_PRAGMA_REGEX = /\\*?\\s*@((?:no)?flow)\\b/;\n\n// Flow enums types\ntype EnumExplicitType = null | \"boolean\" | \"number\" | \"string\" | \"symbol\";\n\ntype EnumContext = {\n  enumName: string;\n  explicitType: EnumExplicitType;\n  memberName: string;\n};\n\ntype EnumMemberInit =\n  | {\n      type: \"number\";\n      loc: Position;\n      value: N.Node;\n    }\n  | {\n      type: \"string\";\n      loc: Position;\n      value: N.Node;\n    }\n  | {\n      type: \"boolean\";\n      loc: Position;\n      value: N.Node;\n    }\n  | {\n      type: \"invalid\";\n      loc: Position;\n    }\n  | {\n      type: \"none\";\n      loc: Position;\n    };\n\nexport default (superClass: ClassWithMixin<typeof Parser, IJSXParserMixin>) =>\n  class FlowParserMixin extends superClass implements Parser {\n    // The value of the @flow/@noflow pragma. Initially undefined, transitions\n    // to \"@flow\" or \"@noflow\" if we see a pragma. Transitions to null if we are\n    // past the initial comment.\n    flowPragma: void | null | \"flow\" | \"noflow\" = undefined;\n\n    getScopeHandler(): new (...args: any) => FlowScopeHandler {\n      return FlowScopeHandler;\n    }\n\n    shouldParseTypes(): boolean {\n      return this.getPluginOption(\"flow\", \"all\") || this.flowPragma === \"flow\";\n    }\n\n    finishToken(type: TokenType, val: any): void {\n      if (\n        type !== tt.string &&\n        type !== tt.semi &&\n        type !== tt.interpreterDirective\n      ) {\n        if (this.flowPragma === undefined) {\n          this.flowPragma = null;\n        }\n      }\n      super.finishToken(type, val);\n    }\n\n    addComment(comment: N.Comment): void {\n      if (this.flowPragma === undefined) {\n        // Try to parse a flow pragma.\n        const matches = FLOW_PRAGMA_REGEX.exec(comment.value);\n        if (!matches) {\n          // do nothing\n        } else if (matches[1] === \"flow\") {\n          this.flowPragma = \"flow\";\n        } else if (matches[1] === \"noflow\") {\n          this.flowPragma = \"noflow\";\n        } else {\n          throw new Error(\"Unexpected flow pragma\");\n        }\n      }\n      super.addComment(comment);\n    }\n\n    flowParseTypeInitialiser(tok?: TokenType): N.FlowType {\n      const oldInType = this.state.inType;\n      this.state.inType = true;\n      this.expect(tok || tt.colon);\n\n      const type = this.flowParseType();\n      this.state.inType = oldInType;\n      return type;\n    }\n\n    flowParsePredicate(): N.FlowPredicate {\n      const node = this.startNode<N.FlowPredicate>();\n      const moduloLoc = this.state.startLoc;\n      this.next(); // eat `%`\n      this.expectContextual(tt._checks);\n      // Force '%' and 'checks' to be adjacent\n      if (this.state.lastTokStartLoc.index > moduloLoc.index + 1) {\n        this.raise(FlowErrors.UnexpectedSpaceBetweenModuloChecks, moduloLoc);\n      }\n      if (this.eat(tt.parenL)) {\n        node.value = super.parseExpression();\n        this.expect(tt.parenR);\n        return this.finishNode(node, \"DeclaredPredicate\");\n      } else {\n        return this.finishNode(node, \"InferredPredicate\");\n      }\n    }\n\n    flowParseTypeAndPredicateInitialiser(): [\n      N.FlowType | undefined | null,\n      N.FlowPredicate | undefined | null,\n    ] {\n      const oldInType = this.state.inType;\n      this.state.inType = true;\n      this.expect(tt.colon);\n      let type = null;\n      let predicate = null;\n      if (this.match(tt.modulo)) {\n        this.state.inType = oldInType;\n        predicate = this.flowParsePredicate();\n      } else {\n        type = this.flowParseType();\n        this.state.inType = oldInType;\n        if (this.match(tt.modulo)) {\n          predicate = this.flowParsePredicate();\n        }\n      }\n      return [type, predicate];\n    }\n\n    flowParseDeclareClass(\n      node: Undone<N.FlowDeclareClass>,\n    ): N.FlowDeclareClass {\n      this.next();\n      this.flowParseInterfaceish(node, /*isClass*/ true);\n      return this.finishNode(node, \"DeclareClass\");\n    }\n\n    flowParseDeclareFunction(\n      node: Undone<N.FlowDeclareFunction>,\n    ): N.FlowDeclareFunction {\n      this.next();\n\n      const id = (node.id = this.parseIdentifier());\n\n      const typeNode = this.startNode<N.FlowFunctionTypeAnnotation>();\n      const typeContainer = this.startNode<N.TypeAnnotation>();\n\n      if (this.match(tt.lt)) {\n        typeNode.typeParameters = this.flowParseTypeParameterDeclaration();\n      } else {\n        typeNode.typeParameters = null;\n      }\n\n      this.expect(tt.parenL);\n      const tmp = this.flowParseFunctionTypeParams();\n      typeNode.params = tmp.params;\n      typeNode.rest = tmp.rest;\n      typeNode.this = tmp._this;\n      this.expect(tt.parenR);\n\n      [typeNode.returnType, node.predicate] =\n        this.flowParseTypeAndPredicateInitialiser();\n\n      typeContainer.typeAnnotation = this.finishNode(\n        typeNode,\n        \"FunctionTypeAnnotation\",\n      );\n\n      id.typeAnnotation = this.finishNode(typeContainer, \"TypeAnnotation\");\n\n      this.resetEndLocation(id);\n      this.semicolon();\n\n      this.scope.declareName(\n        node.id.name,\n        BindingFlag.TYPE_FLOW_DECLARE_FN,\n        node.id.loc.start,\n      );\n\n      return this.finishNode(node, \"DeclareFunction\");\n    }\n\n    flowParseDeclare(\n      node: Undone<N.FlowDeclare>,\n      insideModule?: boolean,\n    ): N.FlowDeclare {\n      if (this.match(tt._class)) {\n        return this.flowParseDeclareClass(node);\n      } else if (this.match(tt._function)) {\n        return this.flowParseDeclareFunction(node);\n      } else if (this.match(tt._var)) {\n        return this.flowParseDeclareVariable(node);\n      } else if (this.eatContextual(tt._module)) {\n        if (this.match(tt.dot)) {\n          return this.flowParseDeclareModuleExports(node);\n        } else {\n          if (insideModule) {\n            this.raise(\n              FlowErrors.NestedDeclareModule,\n              this.state.lastTokStartLoc,\n            );\n          }\n          return this.flowParseDeclareModule(node);\n        }\n      } else if (this.isContextual(tt._type)) {\n        return this.flowParseDeclareTypeAlias(node);\n      } else if (this.isContextual(tt._opaque)) {\n        return this.flowParseDeclareOpaqueType(node);\n      } else if (this.isContextual(tt._interface)) {\n        return this.flowParseDeclareInterface(node);\n      } else if (this.match(tt._export)) {\n        return this.flowParseDeclareExportDeclaration(node, insideModule);\n      } else {\n        this.unexpected();\n      }\n    }\n\n    flowParseDeclareVariable(\n      node: Undone<N.FlowDeclareVariable>,\n    ): N.FlowDeclareVariable {\n      this.next();\n      node.id = this.flowParseTypeAnnotatableIdentifier(\n        /*allowPrimitiveOverride*/ true,\n      );\n      this.scope.declareName(\n        node.id.name,\n        BindingFlag.TYPE_VAR,\n        node.id.loc.start,\n      );\n      this.semicolon();\n      return this.finishNode(node, \"DeclareVariable\");\n    }\n\n    flowParseDeclareModule(\n      node: Undone<N.FlowDeclareModule>,\n    ): N.FlowDeclareModule {\n      this.scope.enter(ScopeFlag.OTHER);\n\n      if (this.match(tt.string)) {\n        node.id = super.parseExprAtom();\n      } else {\n        node.id = this.parseIdentifier();\n      }\n\n      const bodyNode = (node.body = this.startNode<N.BlockStatement>());\n      // @ts-expect-error refine typings\n      const body = (bodyNode.body = []);\n      this.expect(tt.braceL);\n      while (!this.match(tt.braceR)) {\n        let bodyNode = this.startNode<N.ImportDeclaration>();\n\n        if (this.match(tt._import)) {\n          this.next();\n          if (!this.isContextual(tt._type) && !this.match(tt._typeof)) {\n            this.raise(\n              FlowErrors.InvalidNonTypeImportInDeclareModule,\n              this.state.lastTokStartLoc,\n            );\n          }\n          super.parseImport(bodyNode);\n        } else {\n          this.expectContextual(\n            tt._declare,\n            FlowErrors.UnsupportedStatementInDeclareModule,\n          );\n          // @ts-expect-error refine typings\n          bodyNode = this.flowParseDeclare(bodyNode, true);\n        }\n\n        body.push(bodyNode);\n      }\n\n      this.scope.exit();\n\n      this.expect(tt.braceR);\n\n      this.finishNode(bodyNode, \"BlockStatement\");\n\n      let kind: \"CommonJS\" | \"ES\" | null = null;\n      let hasModuleExport = false;\n      body.forEach(bodyElement => {\n        if (isEsModuleType(bodyElement)) {\n          if (kind === \"CommonJS\") {\n            this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement);\n          }\n          kind = \"ES\";\n        } else if (bodyElement.type === \"DeclareModuleExports\") {\n          if (hasModuleExport) {\n            this.raise(FlowErrors.DuplicateDeclareModuleExports, bodyElement);\n          }\n          if (kind === \"ES\") {\n            this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement);\n          }\n          kind = \"CommonJS\";\n          hasModuleExport = true;\n        }\n      });\n\n      node.kind = kind || \"CommonJS\";\n      return this.finishNode(node, \"DeclareModule\");\n    }\n\n    flowParseDeclareExportDeclaration(\n      node: Undone<N.FlowDeclareExportDeclaration>,\n      insideModule?: boolean | null,\n    ): N.FlowDeclareExportDeclaration {\n      this.expect(tt._export);\n\n      if (this.eat(tt._default)) {\n        if (this.match(tt._function) || this.match(tt._class)) {\n          // declare export default class ...\n          // declare export default function ...\n          node.declaration = this.flowParseDeclare(this.startNode());\n        } else {\n          // declare export default [type];\n          node.declaration = this.flowParseType();\n          this.semicolon();\n        }\n        node.default = true;\n\n        return this.finishNode(node, \"DeclareExportDeclaration\");\n      } else {\n        if (\n          this.match(tt._const) ||\n          this.isLet() ||\n          ((this.isContextual(tt._type) || this.isContextual(tt._interface)) &&\n            !insideModule)\n        ) {\n          const label = this.state.value as\n            | \"const\"\n            | \"let\"\n            | \"type\"\n            | \"interface\";\n          throw this.raise(\n            FlowErrors.UnsupportedDeclareExportKind,\n            this.state.startLoc,\n            {\n              unsupportedExportKind: label,\n              suggestion: exportSuggestions[label],\n            },\n          );\n        }\n\n        if (\n          this.match(tt._var) || // declare export var ...\n          this.match(tt._function) || // declare export function ...\n          this.match(tt._class) || // declare export class ...\n          this.isContextual(tt._opaque) // declare export opaque ..\n        ) {\n          node.declaration = this.flowParseDeclare(this.startNode());\n          node.default = false;\n\n          return this.finishNode(node, \"DeclareExportDeclaration\");\n        } else if (\n          this.match(tt.star) || // declare export * from ''\n          this.match(tt.braceL) || // declare export {} ...\n          this.isContextual(tt._interface) || // declare export interface ...\n          this.isContextual(tt._type) || // declare export type ...\n          this.isContextual(tt._opaque) // declare export opaque type ...\n        ) {\n          node = this.parseExport(\n            node as Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>,\n            /* decorators */ null,\n          );\n          if (node.type === \"ExportNamedDeclaration\") {\n            node.default = false;\n            delete node.exportKind;\n            return this.castNodeTo(\n              node as N.ExportNamedDeclaration,\n              \"DeclareExportDeclaration\",\n            );\n          } else {\n            return this.castNodeTo(\n              node as N.ExportAllDeclaration,\n              \"DeclareExportAllDeclaration\",\n            );\n          }\n        }\n      }\n\n      this.unexpected();\n    }\n\n    flowParseDeclareModuleExports(\n      node: Undone<N.FlowDeclareModuleExports>,\n    ): N.FlowDeclareModuleExports {\n      this.next();\n      this.expectContextual(tt._exports);\n      node.typeAnnotation = this.flowParseTypeAnnotation();\n      this.semicolon();\n\n      return this.finishNode(node, \"DeclareModuleExports\");\n    }\n\n    flowParseDeclareTypeAlias(\n      node: Undone<N.FlowDeclareTypeAlias>,\n    ): N.FlowDeclareTypeAlias {\n      this.next();\n      const finished = this.flowParseTypeAlias(\n        node,\n      ) as unknown as N.FlowDeclareTypeAlias;\n      // Don't do finishNode as we don't want to process comments twice\n      this.castNodeTo(finished, \"DeclareTypeAlias\");\n      return finished;\n    }\n\n    flowParseDeclareOpaqueType(\n      node: Undone<N.FlowDeclareOpaqueType>,\n    ): N.FlowDeclareOpaqueType {\n      this.next();\n      const finished = this.flowParseOpaqueType(\n        node,\n        true,\n      ) as unknown as N.FlowDeclareOpaqueType;\n      // Don't do finishNode as we don't want to process comments twice\n      this.castNodeTo(finished, \"DeclareOpaqueType\");\n      return finished;\n    }\n\n    flowParseDeclareInterface(\n      node: Undone<N.FlowDeclareInterface>,\n    ): N.FlowDeclareInterface {\n      this.next();\n      this.flowParseInterfaceish(node, /* isClass */ false);\n      return this.finishNode(node, \"DeclareInterface\");\n    }\n\n    // Interfaces\n\n    flowParseInterfaceish(node: Undone<N.FlowDeclare>, isClass: boolean): void {\n      node.id = this.flowParseRestrictedIdentifier(\n        /* liberal */ !isClass,\n        /* declaration */ true,\n      );\n\n      this.scope.declareName(\n        node.id.name,\n        isClass ? BindingFlag.TYPE_FUNCTION : BindingFlag.TYPE_LEXICAL,\n        node.id.loc.start,\n      );\n\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n      } else {\n        node.typeParameters = null;\n      }\n\n      node.extends = [];\n\n      if (this.eat(tt._extends)) {\n        do {\n          node.extends.push(this.flowParseInterfaceExtends());\n        } while (!isClass && this.eat(tt.comma));\n      }\n\n      if (isClass) {\n        node.implements = [];\n        node.mixins = [];\n\n        if (this.eatContextual(tt._mixins)) {\n          do {\n            node.mixins.push(this.flowParseInterfaceExtends());\n          } while (this.eat(tt.comma));\n        }\n\n        if (this.eatContextual(tt._implements)) {\n          do {\n            node.implements.push(this.flowParseInterfaceExtends());\n          } while (this.eat(tt.comma));\n        }\n      }\n\n      node.body = this.flowParseObjectType({\n        allowStatic: isClass,\n        allowExact: false,\n        allowSpread: false,\n        allowProto: isClass,\n        allowInexact: false,\n      });\n    }\n\n    flowParseInterfaceExtends(): N.FlowInterfaceExtends {\n      const node = this.startNode<N.FlowInterfaceExtends>();\n\n      node.id = this.flowParseQualifiedTypeIdentifier();\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterInstantiation();\n      } else {\n        node.typeParameters = null;\n      }\n\n      return this.finishNode(node, \"InterfaceExtends\");\n    }\n\n    flowParseInterface(node: Undone<N.FlowInterface>): N.FlowInterface {\n      this.flowParseInterfaceish(node, /* isClass */ false);\n      return this.finishNode(node, \"InterfaceDeclaration\");\n    }\n\n    checkNotUnderscore(word: string) {\n      if (word === \"_\") {\n        this.raise(\n          FlowErrors.UnexpectedReservedUnderscore,\n          this.state.startLoc,\n        );\n      }\n    }\n\n    checkReservedType(word: string, startLoc: Position, declaration?: boolean) {\n      if (!reservedTypes.has(word)) return;\n\n      this.raise(\n        declaration\n          ? FlowErrors.AssignReservedType\n          : FlowErrors.UnexpectedReservedType,\n        startLoc,\n        {\n          reservedType: word,\n        },\n      );\n    }\n\n    flowParseRestrictedIdentifier(\n      liberal?: boolean,\n      declaration?: boolean,\n    ): N.Identifier {\n      this.checkReservedType(\n        this.state.value,\n        this.state.startLoc,\n        declaration,\n      );\n      return this.parseIdentifier(liberal);\n    }\n\n    // Type aliases\n\n    flowParseTypeAlias(node: Undone<N.FlowTypeAlias>): N.FlowTypeAlias {\n      node.id = this.flowParseRestrictedIdentifier(\n        /* liberal */ false,\n        /* declaration */ true,\n      );\n      this.scope.declareName(\n        node.id.name,\n        BindingFlag.TYPE_LEXICAL,\n        node.id.loc.start,\n      );\n\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n      } else {\n        node.typeParameters = null;\n      }\n\n      node.right = this.flowParseTypeInitialiser(tt.eq);\n      this.semicolon();\n\n      return this.finishNode(node, \"TypeAlias\");\n    }\n\n    flowParseOpaqueType(\n      node: Undone<N.FlowOpaqueType>,\n      declare: boolean,\n    ): N.FlowOpaqueType {\n      this.expectContextual(tt._type);\n      node.id = this.flowParseRestrictedIdentifier(\n        /* liberal */ true,\n        /* declaration */ true,\n      );\n      this.scope.declareName(\n        node.id.name,\n        BindingFlag.TYPE_LEXICAL,\n        node.id.loc.start,\n      );\n\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n      } else {\n        node.typeParameters = null;\n      }\n\n      // Parse the supertype\n      node.supertype = null;\n      if (this.match(tt.colon)) {\n        node.supertype = this.flowParseTypeInitialiser(tt.colon);\n      }\n\n      node.impltype = null;\n      if (!declare) {\n        node.impltype = this.flowParseTypeInitialiser(tt.eq);\n      }\n      this.semicolon();\n\n      return this.finishNode(node, \"OpaqueType\");\n    }\n\n    // Type annotations\n\n    flowParseTypeParameter(requireDefault: boolean = false): N.TypeParameter {\n      const nodeStartLoc = this.state.startLoc;\n\n      const node = this.startNode<N.TypeParameter>();\n\n      const variance = this.flowParseVariance();\n\n      const ident = this.flowParseTypeAnnotatableIdentifier();\n      node.name = ident.name;\n      // @ts-expect-error migrate to Babel types\n      node.variance = variance;\n      // @ts-expect-error migrate to Babel types\n      node.bound = ident.typeAnnotation;\n\n      if (this.match(tt.eq)) {\n        this.eat(tt.eq);\n        // @ts-expect-error migrate to Babel types\n        node.default = this.flowParseType();\n      } else {\n        if (requireDefault) {\n          this.raise(FlowErrors.MissingTypeParamDefault, nodeStartLoc);\n        }\n      }\n\n      return this.finishNode(node, \"TypeParameter\");\n    }\n\n    flowParseTypeParameterDeclaration(): N.TypeParameterDeclaration {\n      const oldInType = this.state.inType;\n      const node = this.startNode<N.TypeParameterDeclaration>();\n      node.params = [];\n\n      this.state.inType = true;\n\n      // istanbul ignore else: this condition is already checked at all call sites\n      if (this.match(tt.lt) || this.match(tt.jsxTagStart)) {\n        this.next();\n      } else {\n        this.unexpected();\n      }\n\n      let defaultRequired = false;\n\n      do {\n        const typeParameter = this.flowParseTypeParameter(defaultRequired);\n\n        node.params.push(typeParameter);\n\n        if (typeParameter.default) {\n          defaultRequired = true;\n        }\n\n        if (!this.match(tt.gt)) {\n          this.expect(tt.comma);\n        }\n      } while (!this.match(tt.gt));\n      this.expect(tt.gt);\n\n      this.state.inType = oldInType;\n\n      return this.finishNode(node, \"TypeParameterDeclaration\");\n    }\n\n    // Parse in top level normal context if we are in a JSX context\n    flowInTopLevelContext<T>(cb: () => T): T {\n      if (this.curContext() !== tc.brace) {\n        const oldContext = this.state.context;\n        this.state.context = [oldContext[0]];\n        try {\n          return cb();\n        } finally {\n          this.state.context = oldContext;\n        }\n      } else {\n        return cb();\n      }\n    }\n\n    // Used when parsing type arguments from ES or JSX productions, where the first token\n    // has been created without state.inType. Thus we need to re-scan the lt token.\n    flowParseTypeParameterInstantiationInExpression():\n      | N.TypeParameterInstantiation\n      | undefined {\n      if (this.reScan_lt() !== tt.lt) return;\n      return this.flowParseTypeParameterInstantiation();\n    }\n\n    flowParseTypeParameterInstantiation(): N.TypeParameterInstantiation {\n      const node = this.startNode<N.TypeParameterInstantiation>();\n      const oldInType = this.state.inType;\n\n      this.state.inType = true;\n      node.params = [];\n      this.flowInTopLevelContext(() => {\n        this.expect(tt.lt);\n        const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n        this.state.noAnonFunctionType = false;\n        while (!this.match(tt.gt)) {\n          node.params.push(this.flowParseType());\n          if (!this.match(tt.gt)) {\n            this.expect(tt.comma);\n          }\n        }\n        this.state.noAnonFunctionType = oldNoAnonFunctionType;\n      });\n\n      this.state.inType = oldInType;\n      if (!this.state.inType && this.curContext() === tc.brace) {\n        // rescan `>` when we are no longer in type context and JSX parsing context\n        // since it was tokenized when `inType` is `true`.\n        this.reScan_lt_gt();\n      }\n      this.expect(tt.gt);\n\n      return this.finishNode(node, \"TypeParameterInstantiation\");\n    }\n\n    flowParseTypeParameterInstantiationCallOrNew(): N.TypeParameterInstantiation {\n      if (this.reScan_lt() !== tt.lt) return;\n      const node = this.startNode<N.TypeParameterInstantiation>();\n      const oldInType = this.state.inType;\n      node.params = [];\n\n      this.state.inType = true;\n\n      this.expect(tt.lt);\n      while (!this.match(tt.gt)) {\n        node.params.push(this.flowParseTypeOrImplicitInstantiation());\n        if (!this.match(tt.gt)) {\n          this.expect(tt.comma);\n        }\n      }\n      this.expect(tt.gt);\n\n      this.state.inType = oldInType;\n\n      return this.finishNode(node, \"TypeParameterInstantiation\");\n    }\n\n    flowParseInterfaceType(): N.FlowInterfaceType {\n      const node = this.startNode<N.FlowInterfaceType>();\n      this.expectContextual(tt._interface);\n\n      node.extends = [];\n      if (this.eat(tt._extends)) {\n        do {\n          node.extends.push(this.flowParseInterfaceExtends());\n        } while (this.eat(tt.comma));\n      }\n\n      node.body = this.flowParseObjectType({\n        allowStatic: false,\n        allowExact: false,\n        allowSpread: false,\n        allowProto: false,\n        allowInexact: false,\n      });\n\n      return this.finishNode(node, \"InterfaceTypeAnnotation\");\n    }\n\n    flowParseObjectPropertyKey(): N.Expression {\n      return this.match(tt.num) || this.match(tt.string)\n        ? super.parseExprAtom()\n        : this.parseIdentifier(true);\n    }\n\n    flowParseObjectTypeIndexer(\n      node: Undone<N.FlowObjectTypeIndexer>,\n      isStatic: boolean,\n      variance?: N.FlowVariance | null,\n    ): N.FlowObjectTypeIndexer {\n      node.static = isStatic;\n\n      // Note: bracketL has already been consumed\n      if (this.lookahead().type === tt.colon) {\n        node.id = this.flowParseObjectPropertyKey();\n        node.key = this.flowParseTypeInitialiser();\n      } else {\n        node.id = null;\n        node.key = this.flowParseType();\n      }\n      this.expect(tt.bracketR);\n      node.value = this.flowParseTypeInitialiser();\n      node.variance = variance;\n\n      return this.finishNode(node, \"ObjectTypeIndexer\");\n    }\n\n    flowParseObjectTypeInternalSlot(\n      node: Undone<N.FlowObjectTypeInternalSlot>,\n      isStatic: boolean,\n    ): N.FlowObjectTypeInternalSlot {\n      node.static = isStatic;\n      // Note: both bracketL have already been consumed\n      node.id = this.flowParseObjectPropertyKey();\n      this.expect(tt.bracketR);\n      this.expect(tt.bracketR);\n      if (this.match(tt.lt) || this.match(tt.parenL)) {\n        node.method = true;\n        node.optional = false;\n        node.value = this.flowParseObjectTypeMethodish(\n          this.startNodeAt(node.loc.start),\n        );\n      } else {\n        node.method = false;\n        if (this.eat(tt.question)) {\n          node.optional = true;\n        }\n        node.value = this.flowParseTypeInitialiser();\n      }\n      return this.finishNode(node, \"ObjectTypeInternalSlot\");\n    }\n\n    flowParseObjectTypeMethodish(\n      node: Undone<N.FlowFunctionTypeAnnotation>,\n    ): N.FlowFunctionTypeAnnotation {\n      node.params = [];\n      node.rest = null;\n      node.typeParameters = null;\n      node.this = null;\n\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n      }\n\n      this.expect(tt.parenL);\n      if (this.match(tt._this)) {\n        node.this = this.flowParseFunctionTypeParam(/* first */ true);\n        // match Flow parser behavior\n        node.this.name = null;\n        if (!this.match(tt.parenR)) {\n          this.expect(tt.comma);\n        }\n      }\n      while (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n        node.params.push(this.flowParseFunctionTypeParam(false));\n        if (!this.match(tt.parenR)) {\n          this.expect(tt.comma);\n        }\n      }\n\n      if (this.eat(tt.ellipsis)) {\n        node.rest = this.flowParseFunctionTypeParam(false);\n      }\n      this.expect(tt.parenR);\n      node.returnType = this.flowParseTypeInitialiser();\n\n      return this.finishNode(node, \"FunctionTypeAnnotation\");\n    }\n\n    flowParseObjectTypeCallProperty(\n      node: Undone<N.FlowObjectTypeCallProperty>,\n      isStatic: boolean,\n    ): N.FlowObjectTypeCallProperty {\n      const valueNode = this.startNode();\n      node.static = isStatic;\n      node.value = this.flowParseObjectTypeMethodish(valueNode);\n      return this.finishNode(node, \"ObjectTypeCallProperty\");\n    }\n\n    flowParseObjectType({\n      allowStatic,\n      allowExact,\n      allowSpread,\n      allowProto,\n      allowInexact,\n    }: {\n      allowStatic: boolean;\n      allowExact: boolean;\n      allowSpread: boolean;\n      allowProto: boolean;\n      allowInexact: boolean;\n    }): N.FlowObjectTypeAnnotation {\n      const oldInType = this.state.inType;\n      this.state.inType = true;\n\n      const nodeStart = this.startNode<N.FlowObjectTypeAnnotation>();\n\n      nodeStart.callProperties = [];\n      nodeStart.properties = [];\n      nodeStart.indexers = [];\n      nodeStart.internalSlots = [];\n\n      let endDelim;\n      let exact;\n      let inexact = false;\n      if (allowExact && this.match(tt.braceBarL)) {\n        this.expect(tt.braceBarL);\n        endDelim = tt.braceBarR;\n        exact = true;\n      } else {\n        this.expect(tt.braceL);\n        endDelim = tt.braceR;\n        exact = false;\n      }\n\n      nodeStart.exact = exact;\n\n      while (!this.match(endDelim)) {\n        let isStatic = false;\n        let protoStartLoc: Position | undefined | null = null;\n        let inexactStartLoc: Position | undefined | null = null;\n        const node = this.startNode();\n\n        if (allowProto && this.isContextual(tt._proto)) {\n          const lookahead = this.lookahead();\n\n          if (lookahead.type !== tt.colon && lookahead.type !== tt.question) {\n            this.next();\n            protoStartLoc = this.state.startLoc;\n            allowStatic = false;\n          }\n        }\n\n        if (allowStatic && this.isContextual(tt._static)) {\n          const lookahead = this.lookahead();\n\n          // static is a valid identifier name\n          if (lookahead.type !== tt.colon && lookahead.type !== tt.question) {\n            this.next();\n            isStatic = true;\n          }\n        }\n\n        const variance = this.flowParseVariance();\n\n        if (this.eat(tt.bracketL)) {\n          if (protoStartLoc != null) {\n            this.unexpected(protoStartLoc);\n          }\n          if (this.eat(tt.bracketL)) {\n            if (variance) {\n              this.unexpected(variance.loc.start);\n            }\n            nodeStart.internalSlots.push(\n              this.flowParseObjectTypeInternalSlot(node, isStatic),\n            );\n          } else {\n            nodeStart.indexers.push(\n              this.flowParseObjectTypeIndexer(node, isStatic, variance),\n            );\n          }\n        } else if (this.match(tt.parenL) || this.match(tt.lt)) {\n          if (protoStartLoc != null) {\n            this.unexpected(protoStartLoc);\n          }\n          if (variance) {\n            this.unexpected(variance.loc.start);\n          }\n          nodeStart.callProperties.push(\n            this.flowParseObjectTypeCallProperty(node, isStatic),\n          );\n        } else {\n          let kind = \"init\";\n\n          if (this.isContextual(tt._get) || this.isContextual(tt._set)) {\n            const lookahead = this.lookahead();\n            if (tokenIsLiteralPropertyName(lookahead.type)) {\n              kind = this.state.value;\n              this.next();\n            }\n          }\n\n          const propOrInexact = this.flowParseObjectTypeProperty(\n            node,\n            isStatic,\n            protoStartLoc,\n            variance,\n            kind,\n            allowSpread,\n            allowInexact ?? !exact,\n          );\n\n          if (propOrInexact === null) {\n            inexact = true;\n            inexactStartLoc = this.state.lastTokStartLoc;\n          } else {\n            nodeStart.properties.push(propOrInexact);\n          }\n        }\n\n        this.flowObjectTypeSemicolon();\n\n        if (\n          inexactStartLoc &&\n          !this.match(tt.braceR) &&\n          !this.match(tt.braceBarR)\n        ) {\n          this.raise(\n            FlowErrors.UnexpectedExplicitInexactInObject,\n            inexactStartLoc,\n          );\n        }\n      }\n\n      this.expect(endDelim);\n\n      /* The inexact flag should only be added on ObjectTypeAnnotations that\n       * are not the body of an interface, declare interface, or declare class.\n       * Since spreads are only allowed in object types, checking that is\n       * sufficient here.\n       */\n      if (allowSpread) {\n        nodeStart.inexact = inexact;\n      }\n\n      const out = this.finishNode(nodeStart, \"ObjectTypeAnnotation\");\n\n      this.state.inType = oldInType;\n\n      return out;\n    }\n\n    flowParseObjectTypeProperty(\n      node: Undone<N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty>,\n      isStatic: boolean,\n      protoStartLoc: Position | undefined | null,\n      variance: N.FlowVariance | undefined | null,\n      kind: string,\n      allowSpread: boolean,\n      allowInexact: boolean,\n    ): N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty | null {\n      if (this.eat(tt.ellipsis)) {\n        const isInexactToken =\n          this.match(tt.comma) ||\n          this.match(tt.semi) ||\n          this.match(tt.braceR) ||\n          this.match(tt.braceBarR);\n\n        if (isInexactToken) {\n          if (!allowSpread) {\n            this.raise(\n              FlowErrors.InexactInsideNonObject,\n              this.state.lastTokStartLoc,\n            );\n          } else if (!allowInexact) {\n            this.raise(\n              FlowErrors.InexactInsideExact,\n              this.state.lastTokStartLoc,\n            );\n          }\n          if (variance) {\n            this.raise(FlowErrors.InexactVariance, variance);\n          }\n\n          return null;\n        }\n\n        if (!allowSpread) {\n          this.raise(\n            FlowErrors.UnexpectedSpreadType,\n            this.state.lastTokStartLoc,\n          );\n        }\n        if (protoStartLoc != null) {\n          this.unexpected(protoStartLoc);\n        }\n        if (variance) {\n          this.raise(FlowErrors.SpreadVariance, variance);\n        }\n\n        node.argument = this.flowParseType();\n        return this.finishNode(node, \"ObjectTypeSpreadProperty\");\n      } else {\n        node.key = this.flowParseObjectPropertyKey();\n        node.static = isStatic;\n        node.proto = protoStartLoc != null;\n        node.kind = kind;\n\n        let optional = false;\n        if (this.match(tt.lt) || this.match(tt.parenL)) {\n          // This is a method property\n          node.method = true;\n\n          if (protoStartLoc != null) {\n            this.unexpected(protoStartLoc);\n          }\n          if (variance) {\n            this.unexpected(variance.loc.start);\n          }\n\n          node.value = this.flowParseObjectTypeMethodish(\n            this.startNodeAt(node.loc.start),\n          );\n          if (kind === \"get\" || kind === \"set\") {\n            this.flowCheckGetterSetterParams(node);\n          }\n          /** Declared classes/interfaces do not allow spread */\n          if (\n            !allowSpread &&\n            node.key.name === \"constructor\" &&\n            node.value.this\n          ) {\n            this.raise(\n              FlowErrors.ThisParamBannedInConstructor,\n              node.value.this,\n            );\n          }\n        } else {\n          if (kind !== \"init\") this.unexpected();\n\n          node.method = false;\n\n          if (this.eat(tt.question)) {\n            optional = true;\n          }\n          node.value = this.flowParseTypeInitialiser();\n          node.variance = variance;\n        }\n\n        node.optional = optional;\n\n        return this.finishNode(node, \"ObjectTypeProperty\");\n      }\n    }\n\n    // This is similar to checkGetterSetterParams, but as\n    // @babel/parser uses non estree properties we cannot reuse it here\n    flowCheckGetterSetterParams(\n      property: Undone<\n        N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty\n      >,\n    ): void {\n      const paramCount = property.kind === \"get\" ? 0 : 1;\n      const length =\n        property.value.params.length + (property.value.rest ? 1 : 0);\n\n      if (property.value.this) {\n        this.raise(\n          property.kind === \"get\"\n            ? FlowErrors.GetterMayNotHaveThisParam\n            : FlowErrors.SetterMayNotHaveThisParam,\n          property.value.this,\n        );\n      }\n\n      if (length !== paramCount) {\n        this.raise(\n          property.kind === \"get\"\n            ? Errors.BadGetterArity\n            : Errors.BadSetterArity,\n          property,\n        );\n      }\n\n      if (property.kind === \"set\" && property.value.rest) {\n        this.raise(Errors.BadSetterRestParameter, property);\n      }\n    }\n\n    flowObjectTypeSemicolon(): void {\n      if (\n        !this.eat(tt.semi) &&\n        !this.eat(tt.comma) &&\n        !this.match(tt.braceR) &&\n        !this.match(tt.braceBarR)\n      ) {\n        this.unexpected();\n      }\n    }\n\n    flowParseQualifiedTypeIdentifier(\n      startLoc?: Position,\n      id?: N.Identifier,\n    ): N.FlowQualifiedTypeIdentifier | N.Identifier {\n      startLoc ??= this.state.startLoc;\n      let node: N.Identifier | N.FlowQualifiedTypeIdentifier =\n        id || this.flowParseRestrictedIdentifier(true);\n\n      while (this.eat(tt.dot)) {\n        const node2 = this.startNodeAt<N.FlowQualifiedTypeIdentifier>(startLoc);\n        node2.qualification = node;\n        node2.id = this.flowParseRestrictedIdentifier(true);\n        node = this.finishNode(node2, \"QualifiedTypeIdentifier\");\n      }\n\n      return node;\n    }\n\n    flowParseGenericType(\n      startLoc: Position,\n      id: N.Identifier,\n    ): N.FlowGenericTypeAnnotation {\n      const node = this.startNodeAt<N.FlowGenericTypeAnnotation>(startLoc);\n\n      node.typeParameters = null;\n      node.id = this.flowParseQualifiedTypeIdentifier(startLoc, id);\n\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterInstantiation();\n      }\n\n      return this.finishNode(node, \"GenericTypeAnnotation\");\n    }\n\n    flowParseTypeofType(): N.FlowTypeofTypeAnnotation {\n      const node = this.startNode<N.FlowTypeofTypeAnnotation>();\n      this.expect(tt._typeof);\n      node.argument = this.flowParsePrimaryType();\n      return this.finishNode(node, \"TypeofTypeAnnotation\");\n    }\n\n    flowParseTupleType(): N.FlowTupleTypeAnnotation {\n      const node = this.startNode<N.FlowTupleTypeAnnotation>();\n      node.types = [];\n      this.expect(tt.bracketL);\n      // We allow trailing commas\n      while (this.state.pos < this.length && !this.match(tt.bracketR)) {\n        node.types.push(this.flowParseType());\n        if (this.match(tt.bracketR)) break;\n        this.expect(tt.comma);\n      }\n      this.expect(tt.bracketR);\n      return this.finishNode(node, \"TupleTypeAnnotation\");\n    }\n\n    flowParseFunctionTypeParam(first: boolean): N.FlowFunctionTypeParam {\n      let name = null;\n      let optional = false;\n      let typeAnnotation = null;\n      const node = this.startNode<N.FlowFunctionTypeParam>();\n      const lh = this.lookahead();\n      const isThis = this.state.type === tt._this;\n\n      if (lh.type === tt.colon || lh.type === tt.question) {\n        if (isThis && !first) {\n          this.raise(FlowErrors.ThisParamMustBeFirst, node);\n        }\n        name = this.parseIdentifier(isThis);\n        if (this.eat(tt.question)) {\n          optional = true;\n          if (isThis) {\n            this.raise(FlowErrors.ThisParamMayNotBeOptional, node);\n          }\n        }\n        typeAnnotation = this.flowParseTypeInitialiser();\n      } else {\n        typeAnnotation = this.flowParseType();\n      }\n      node.name = name;\n      node.optional = optional;\n      node.typeAnnotation = typeAnnotation;\n      return this.finishNode(node, \"FunctionTypeParam\");\n    }\n\n    reinterpretTypeAsFunctionTypeParam(\n      type: N.FlowType,\n    ): N.FlowFunctionTypeParam {\n      const node = this.startNodeAt<N.FlowFunctionTypeParam>(type.loc.start);\n      node.name = null;\n      node.optional = false;\n      node.typeAnnotation = type;\n      return this.finishNode(node, \"FunctionTypeParam\");\n    }\n\n    flowParseFunctionTypeParams(params: N.FlowFunctionTypeParam[] = []): {\n      params: N.FlowFunctionTypeParam[];\n      rest: N.FlowFunctionTypeParam | undefined | null;\n      _this: N.FlowFunctionTypeParam | undefined | null;\n    } {\n      let rest: N.FlowFunctionTypeParam | undefined | null = null;\n      let _this: N.FlowFunctionTypeParam | undefined | null = null;\n      if (this.match(tt._this)) {\n        _this = this.flowParseFunctionTypeParam(/* first */ true);\n        // match Flow parser behavior\n        _this.name = null;\n        if (!this.match(tt.parenR)) {\n          this.expect(tt.comma);\n        }\n      }\n      while (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n        params.push(this.flowParseFunctionTypeParam(false));\n        if (!this.match(tt.parenR)) {\n          this.expect(tt.comma);\n        }\n      }\n      if (this.eat(tt.ellipsis)) {\n        rest = this.flowParseFunctionTypeParam(false);\n      }\n      return { params, rest, _this };\n    }\n\n    flowIdentToTypeAnnotation(\n      startLoc: Position,\n      node: Undone<N.FlowType>,\n      id: N.Identifier,\n    ): N.FlowType {\n      switch (id.name) {\n        case \"any\":\n          return this.finishNode(node, \"AnyTypeAnnotation\");\n\n        case \"bool\":\n        case \"boolean\":\n          return this.finishNode(node, \"BooleanTypeAnnotation\");\n\n        case \"mixed\":\n          return this.finishNode(node, \"MixedTypeAnnotation\");\n\n        case \"empty\":\n          return this.finishNode(node, \"EmptyTypeAnnotation\");\n\n        case \"number\":\n          return this.finishNode(node, \"NumberTypeAnnotation\");\n\n        case \"string\":\n          return this.finishNode(node, \"StringTypeAnnotation\");\n\n        case \"symbol\":\n          return this.finishNode(node, \"SymbolTypeAnnotation\");\n\n        default:\n          this.checkNotUnderscore(id.name);\n          return this.flowParseGenericType(startLoc, id);\n      }\n    }\n\n    // The parsing of types roughly parallels the parsing of expressions, and\n    // primary types are kind of like primary expressions...they're the\n    // primitives with which other types are constructed.\n    flowParsePrimaryType(): N.FlowType {\n      const startLoc = this.state.startLoc;\n      const node = this.startNode<N.FlowOtherTypeAnnotation>();\n      let tmp;\n      let type;\n      let isGroupedType = false;\n      const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n\n      switch (this.state.type) {\n        case tt.braceL:\n          return this.flowParseObjectType({\n            allowStatic: false,\n            allowExact: false,\n            allowSpread: true,\n            allowProto: false,\n            allowInexact: true,\n          });\n\n        case tt.braceBarL:\n          return this.flowParseObjectType({\n            allowStatic: false,\n            allowExact: true,\n            allowSpread: true,\n            allowProto: false,\n            allowInexact: false,\n          });\n\n        case tt.bracketL:\n          this.state.noAnonFunctionType = false;\n          type = this.flowParseTupleType();\n          this.state.noAnonFunctionType = oldNoAnonFunctionType;\n          return type;\n\n        case tt.lt: {\n          const node = this.startNode<N.FlowFunctionTypeAnnotation>();\n          node.typeParameters = this.flowParseTypeParameterDeclaration();\n          this.expect(tt.parenL);\n          tmp = this.flowParseFunctionTypeParams();\n          node.params = tmp.params;\n          node.rest = tmp.rest;\n          node.this = tmp._this;\n          this.expect(tt.parenR);\n\n          this.expect(tt.arrow);\n\n          node.returnType = this.flowParseType();\n\n          return this.finishNode(node, \"FunctionTypeAnnotation\");\n        }\n\n        case tt.parenL: {\n          const node = this.startNode<N.FlowFunctionTypeAnnotation>();\n          this.next();\n\n          // Check to see if this is actually a grouped type\n          if (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n            if (tokenIsIdentifier(this.state.type) || this.match(tt._this)) {\n              const token = this.lookahead().type;\n              isGroupedType = token !== tt.question && token !== tt.colon;\n            } else {\n              isGroupedType = true;\n            }\n          }\n\n          if (isGroupedType) {\n            this.state.noAnonFunctionType = false;\n            type = this.flowParseType();\n            this.state.noAnonFunctionType = oldNoAnonFunctionType;\n\n            // A `,` or a `) =>` means this is an anonymous function type\n            if (\n              this.state.noAnonFunctionType ||\n              !(\n                this.match(tt.comma) ||\n                (this.match(tt.parenR) && this.lookahead().type === tt.arrow)\n              )\n            ) {\n              this.expect(tt.parenR);\n              return type;\n            } else {\n              // Eat a comma if there is one\n              this.eat(tt.comma);\n            }\n          }\n\n          if (type) {\n            tmp = this.flowParseFunctionTypeParams([\n              this.reinterpretTypeAsFunctionTypeParam(type),\n            ]);\n          } else {\n            tmp = this.flowParseFunctionTypeParams();\n          }\n\n          node.params = tmp.params;\n          node.rest = tmp.rest;\n          node.this = tmp._this;\n\n          this.expect(tt.parenR);\n\n          this.expect(tt.arrow);\n\n          node.returnType = this.flowParseType();\n\n          node.typeParameters = null;\n\n          return this.finishNode(node, \"FunctionTypeAnnotation\");\n        }\n\n        case tt.string:\n          return this.parseLiteral<N.StringLiteralTypeAnnotation>(\n            this.state.value,\n            \"StringLiteralTypeAnnotation\",\n          );\n\n        case tt._true:\n        case tt._false:\n          node.value = this.match(tt._true);\n          this.next();\n          return this.finishNode(\n            node as Undone<N.BooleanLiteralTypeAnnotation>,\n            \"BooleanLiteralTypeAnnotation\",\n          );\n\n        case tt.plusMin:\n          if (this.state.value === \"-\") {\n            this.next();\n            if (this.match(tt.num)) {\n              return this.parseLiteralAtNode<N.NumberLiteralTypeAnnotation>(\n                -this.state.value,\n                \"NumberLiteralTypeAnnotation\",\n                node,\n              );\n            }\n\n            if (this.match(tt.bigint)) {\n              return this.parseLiteralAtNode<N.BigIntLiteralTypeAnnotation>(\n                -this.state.value,\n                \"BigIntLiteralTypeAnnotation\",\n                node,\n              );\n            }\n\n            throw this.raise(\n              FlowErrors.UnexpectedSubtractionOperand,\n              this.state.startLoc,\n            );\n          }\n          this.unexpected();\n          return;\n        case tt.num:\n          return this.parseLiteral(\n            this.state.value,\n            \"NumberLiteralTypeAnnotation\",\n          );\n\n        case tt.bigint:\n          return this.parseLiteral(\n            this.state.value,\n            \"BigIntLiteralTypeAnnotation\",\n          );\n\n        case tt._void:\n          this.next();\n          return this.finishNode(node, \"VoidTypeAnnotation\");\n\n        case tt._null:\n          this.next();\n          return this.finishNode(node, \"NullLiteralTypeAnnotation\");\n\n        case tt._this:\n          this.next();\n          return this.finishNode(node, \"ThisTypeAnnotation\");\n\n        case tt.star:\n          this.next();\n          return this.finishNode(node, \"ExistsTypeAnnotation\");\n\n        case tt._typeof:\n          return this.flowParseTypeofType();\n\n        default:\n          if (tokenIsKeyword(this.state.type)) {\n            const label = tokenLabelName(this.state.type);\n            this.next();\n            return super.createIdentifier(node as Undone<N.Identifier>, label);\n          } else if (tokenIsIdentifier(this.state.type)) {\n            if (this.isContextual(tt._interface)) {\n              return this.flowParseInterfaceType();\n            }\n\n            return this.flowIdentToTypeAnnotation(\n              startLoc,\n              node,\n              this.parseIdentifier(),\n            );\n          }\n      }\n\n      this.unexpected();\n    }\n\n    flowParsePostfixType(): N.FlowType {\n      const startLoc = this.state.startLoc;\n      let type = this.flowParsePrimaryType();\n      let seenOptionalIndexedAccess = false;\n      while (\n        (this.match(tt.bracketL) || this.match(tt.questionDot)) &&\n        !this.canInsertSemicolon()\n      ) {\n        const node = this.startNodeAt<N.FlowOtherTypeAnnotation>(startLoc);\n        const optional = this.eat(tt.questionDot);\n        seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional;\n        this.expect(tt.bracketL);\n        if (!optional && this.match(tt.bracketR)) {\n          node.elementType = type;\n          this.next(); // eat `]`\n          type = this.finishNode(node, \"ArrayTypeAnnotation\");\n        } else {\n          node.objectType = type;\n          node.indexType = this.flowParseType();\n          this.expect(tt.bracketR);\n          if (seenOptionalIndexedAccess) {\n            node.optional = optional;\n            type = this.finishNode<N.FlowOptionalIndexedAccessType>(\n              // @ts-expect-error todo(flow->ts)\n              node,\n              \"OptionalIndexedAccessType\",\n            );\n          } else {\n            type = this.finishNode<N.FlowIndexedAccessType>(\n              // @ts-expect-error todo(flow->ts)\n              node,\n              \"IndexedAccessType\",\n            );\n          }\n        }\n      }\n      return type;\n    }\n\n    flowParsePrefixType(): N.FlowType {\n      const node = this.startNode<N.FlowOtherTypeAnnotation>();\n      if (this.eat(tt.question)) {\n        node.typeAnnotation = this.flowParsePrefixType();\n        return this.finishNode(node, \"NullableTypeAnnotation\");\n      } else {\n        return this.flowParsePostfixType();\n      }\n    }\n\n    flowParseAnonFunctionWithoutParens(): N.FlowType {\n      const param = this.flowParsePrefixType();\n      if (!this.state.noAnonFunctionType && this.eat(tt.arrow)) {\n        // TODO: This should be a type error. Passing in a SourceLocation, and it expects a Position.\n        const node = this.startNodeAt<N.FlowFunctionTypeAnnotation>(\n          param.loc.start,\n        );\n        node.params = [this.reinterpretTypeAsFunctionTypeParam(param)];\n        node.rest = null;\n        node.this = null;\n        node.returnType = this.flowParseType();\n        node.typeParameters = null;\n        return this.finishNode(node, \"FunctionTypeAnnotation\");\n      }\n      return param;\n    }\n\n    flowParseIntersectionType(): N.FlowType {\n      const node = this.startNode<N.FlowOtherTypeAnnotation>();\n      this.eat(tt.bitwiseAND);\n      const type = this.flowParseAnonFunctionWithoutParens();\n      node.types = [type];\n      while (this.eat(tt.bitwiseAND)) {\n        node.types.push(this.flowParseAnonFunctionWithoutParens());\n      }\n      return node.types.length === 1\n        ? type\n        : this.finishNode(node, \"IntersectionTypeAnnotation\");\n    }\n\n    flowParseUnionType(): N.FlowType {\n      const node = this.startNode<N.FlowOtherTypeAnnotation>();\n      this.eat(tt.bitwiseOR);\n      const type = this.flowParseIntersectionType();\n      node.types = [type];\n      while (this.eat(tt.bitwiseOR)) {\n        node.types.push(this.flowParseIntersectionType());\n      }\n      return node.types.length === 1\n        ? type\n        : this.finishNode(node, \"UnionTypeAnnotation\");\n    }\n\n    flowParseType(): N.FlowType {\n      const oldInType = this.state.inType;\n      this.state.inType = true;\n      const type = this.flowParseUnionType();\n      this.state.inType = oldInType;\n      return type;\n    }\n\n    flowParseTypeOrImplicitInstantiation(): N.FlowType {\n      if (this.state.type === tt.name && this.state.value === \"_\") {\n        const startLoc = this.state.startLoc;\n        const node = this.parseIdentifier();\n        return this.flowParseGenericType(startLoc, node);\n      } else {\n        return this.flowParseType();\n      }\n    }\n\n    flowParseTypeAnnotation(): N.TypeAnnotation {\n      const node = this.startNode<N.TypeAnnotation>();\n      node.typeAnnotation = this.flowParseTypeInitialiser();\n      return this.finishNode(node, \"TypeAnnotation\");\n    }\n\n    flowParseTypeAnnotatableIdentifier(\n      allowPrimitiveOverride?: boolean,\n    ): N.Identifier {\n      const ident = allowPrimitiveOverride\n        ? this.parseIdentifier()\n        : this.flowParseRestrictedIdentifier();\n      if (this.match(tt.colon)) {\n        ident.typeAnnotation = this.flowParseTypeAnnotation();\n        this.resetEndLocation(ident);\n      }\n      return ident;\n    }\n\n    typeCastToParameter(node: N.TypeCastExpression): N.Expression {\n      (node.expression as N.Identifier).typeAnnotation = node.typeAnnotation;\n\n      this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);\n\n      return node.expression;\n    }\n\n    flowParseVariance(): N.FlowVariance | undefined | null {\n      let variance = null;\n      if (this.match(tt.plusMin)) {\n        variance = this.startNode<N.FlowVariance>();\n        if (this.state.value === \"+\") {\n          variance.kind = \"plus\";\n        } else {\n          variance.kind = \"minus\";\n        }\n        this.next();\n        return this.finishNode(variance, \"Variance\");\n      }\n      return variance;\n    }\n\n    // ==================================\n    // Overrides\n    // ==================================\n\n    parseFunctionBody(\n      node: N.Function,\n      allowExpressionBody?: boolean | null,\n      isMethod: boolean = false,\n    ): void {\n      if (allowExpressionBody) {\n        this.forwardNoArrowParamsConversionAt(node, () =>\n          super.parseFunctionBody(node, true, isMethod),\n        );\n        return;\n      }\n\n      super.parseFunctionBody(node, false, isMethod);\n    }\n\n    parseFunctionBodyAndFinish<\n      T extends\n        | N.Function\n        | N.TSDeclareMethod\n        | N.TSDeclareFunction\n        | N.ClassPrivateMethod,\n    >(node: Undone<T>, type: T[\"type\"], isMethod: boolean = false): T {\n      if (this.match(tt.colon)) {\n        const typeNode = this.startNode<N.TypeAnnotation>();\n\n        [\n          typeNode.typeAnnotation,\n          // @ts-expect-error predicate may not exist\n          node.predicate,\n        ] = this.flowParseTypeAndPredicateInitialiser();\n\n        node.returnType = typeNode.typeAnnotation\n          ? this.finishNode(typeNode, \"TypeAnnotation\")\n          : null;\n      }\n\n      return super.parseFunctionBodyAndFinish(node, type, isMethod);\n    }\n\n    // interfaces and enums\n    parseStatementLike(flags: ParseStatementFlag): N.Statement {\n      // strict mode handling of `interface` since it's a reserved word\n      if (this.state.strict && this.isContextual(tt._interface)) {\n        const lookahead = this.lookahead();\n        if (tokenIsKeywordOrIdentifier(lookahead.type)) {\n          const node = this.startNode<N.FlowInterface>();\n          this.next();\n          return this.flowParseInterface(node);\n        }\n      } else if (this.isContextual(tt._enum)) {\n        const node = this.startNode();\n        this.next();\n        return this.flowParseEnumDeclaration(node);\n      }\n      const stmt = super.parseStatementLike(flags);\n      // We will parse a flow pragma in any comment before the first statement.\n      if (this.flowPragma === undefined && !this.isValidDirective(stmt)) {\n        this.flowPragma = null;\n      }\n      return stmt;\n    }\n\n    // declares, interfaces and type aliases\n    parseExpressionStatement(\n      node: N.ExpressionStatement,\n      expr: N.Expression,\n      decorators: N.Decorator[] | null,\n    ): N.ExpressionStatement {\n      if (expr.type === \"Identifier\") {\n        if (expr.name === \"declare\") {\n          if (\n            this.match(tt._class) ||\n            tokenIsIdentifier(this.state.type) ||\n            this.match(tt._function) ||\n            this.match(tt._var) ||\n            this.match(tt._export)\n          ) {\n            // @ts-expect-error: refine typings\n            return this.flowParseDeclare(node);\n          }\n        } else if (tokenIsIdentifier(this.state.type)) {\n          if (expr.name === \"interface\") {\n            // @ts-expect-error: refine typings\n            return this.flowParseInterface(node);\n          } else if (expr.name === \"type\") {\n            // @ts-expect-error: refine typings\n            return this.flowParseTypeAlias(node);\n          } else if (expr.name === \"opaque\") {\n            // @ts-expect-error: refine typings\n            return this.flowParseOpaqueType(node, false);\n          }\n        }\n      }\n\n      return super.parseExpressionStatement(node, expr, decorators);\n    }\n\n    // export type\n    shouldParseExportDeclaration(): boolean {\n      const { type } = this.state;\n      if (type === tt._enum || tokenIsFlowInterfaceOrTypeOrOpaque(type)) {\n        return !this.state.containsEsc;\n      }\n      return super.shouldParseExportDeclaration();\n    }\n\n    isExportDefaultSpecifier(): boolean {\n      const { type } = this.state;\n      if (type === tt._enum || tokenIsFlowInterfaceOrTypeOrOpaque(type)) {\n        return this.state.containsEsc;\n      }\n\n      return super.isExportDefaultSpecifier();\n    }\n\n    parseExportDefaultExpression() {\n      if (this.isContextual(tt._enum)) {\n        const node = this.startNode();\n        this.next();\n        return this.flowParseEnumDeclaration(node);\n      }\n      return super.parseExportDefaultExpression();\n    }\n\n    parseConditional(\n      expr: N.Expression,\n\n      startLoc: Position,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): N.Expression {\n      if (!this.match(tt.question)) return expr;\n\n      if (this.state.maybeInArrowParameters) {\n        const nextCh = this.lookaheadCharCode();\n        // These tokens cannot start an expression, so if one of them follows\n        // ? then we are probably in an arrow function parameters list and we\n        // don't parse the conditional expression.\n        if (\n          nextCh === charCodes.comma || // (a?, b) => c\n          nextCh === charCodes.equalsTo || // (a? = b) => c\n          nextCh === charCodes.colon || // (a?: b) => c\n          nextCh === charCodes.rightParenthesis // (a?) => c\n        ) {\n          /*:: invariant(refExpressionErrors != null) */\n          this.setOptionalParametersError(refExpressionErrors);\n          return expr;\n        }\n      }\n\n      this.expect(tt.question);\n      const state = this.state.clone();\n      const originalNoArrowAt = this.state.noArrowAt;\n      const node = this.startNodeAt<N.ConditionalExpression>(startLoc);\n      let { consequent, failed } = this.tryParseConditionalConsequent();\n      let [valid, invalid] = this.getArrowLikeExpressions(consequent);\n\n      if (failed || invalid.length > 0) {\n        const noArrowAt = [...originalNoArrowAt];\n\n        if (invalid.length > 0) {\n          this.state = state;\n          this.state.noArrowAt = noArrowAt;\n\n          for (let i = 0; i < invalid.length; i++) {\n            noArrowAt.push(invalid[i].start);\n          }\n\n          ({ consequent, failed } = this.tryParseConditionalConsequent());\n          [valid, invalid] = this.getArrowLikeExpressions(consequent);\n        }\n\n        if (failed && valid.length > 1) {\n          // if there are two or more possible correct ways of parsing, throw an\n          // error.\n          // e.g.   Source: a ? (b): c => (d): e => f\n          //      Result 1: a ? b : (c => ((d): e => f))\n          //      Result 2: a ? ((b): c => d) : (e => f)\n          this.raise(FlowErrors.AmbiguousConditionalArrow, state.startLoc);\n        }\n\n        if (failed && valid.length === 1) {\n          this.state = state;\n          noArrowAt.push(valid[0].start);\n          this.state.noArrowAt = noArrowAt;\n          ({ consequent, failed } = this.tryParseConditionalConsequent());\n        }\n      }\n\n      this.getArrowLikeExpressions(consequent, true);\n\n      this.state.noArrowAt = originalNoArrowAt;\n      this.expect(tt.colon);\n\n      node.test = expr;\n      node.consequent = consequent;\n      node.alternate = this.forwardNoArrowParamsConversionAt(node, () =>\n        this.parseMaybeAssign(undefined, undefined),\n      );\n\n      return this.finishNode(node, \"ConditionalExpression\");\n    }\n\n    tryParseConditionalConsequent(): {\n      consequent: N.Expression;\n      failed: boolean;\n    } {\n      this.state.noArrowParamsConversionAt.push(this.state.start);\n\n      const consequent = this.parseMaybeAssignAllowIn();\n      const failed = !this.match(tt.colon);\n\n      this.state.noArrowParamsConversionAt.pop();\n\n      return { consequent, failed };\n    }\n\n    // Given an expression, walks through out its arrow functions whose body is\n    // an expression and through out conditional expressions. It returns every\n    // function which has been parsed with a return type but could have been\n    // parenthesized expressions.\n    // These functions are separated into two arrays: one containing the ones\n    // whose parameters can be converted to assignable lists, one containing the\n    // others.\n    getArrowLikeExpressions(\n      node: N.Expression,\n      disallowInvalid?: boolean,\n    ): [N.ArrowFunctionExpression[], N.ArrowFunctionExpression[]] {\n      const stack = [node];\n      const arrows: N.ArrowFunctionExpression[] = [];\n\n      while (stack.length !== 0) {\n        const node = stack.pop();\n        if (\n          node.type === \"ArrowFunctionExpression\" &&\n          node.body.type !== \"BlockStatement\"\n        ) {\n          if (node.typeParameters || !node.returnType) {\n            // This is an arrow expression without ambiguity, so check its parameters\n            this.finishArrowValidation(node);\n          } else {\n            arrows.push(node);\n          }\n          stack.push(node.body);\n        } else if (node.type === \"ConditionalExpression\") {\n          stack.push(node.consequent);\n          stack.push(node.alternate);\n        }\n      }\n\n      if (disallowInvalid) {\n        arrows.forEach(node => this.finishArrowValidation(node));\n        return [arrows, []];\n      }\n\n      return partition(arrows, node =>\n        node.params.every(param => this.isAssignable(param, true)),\n      );\n    }\n\n    finishArrowValidation(node: N.ArrowFunctionExpression) {\n      this.toAssignableList(\n        // node.params is Expression[] instead of $ReadOnlyArray<Pattern> because it\n        // has not been converted yet.\n        node.params as any as N.Expression[],\n        node.extra?.trailingCommaLoc,\n        /* isLHS */ false,\n      );\n      // Enter scope, as checkParams defines bindings\n      this.scope.enter(ScopeFlag.FUNCTION | ScopeFlag.ARROW);\n      // Use super's method to force the parameters to be checked\n      super.checkParams(node, false, true);\n      this.scope.exit();\n    }\n\n    forwardNoArrowParamsConversionAt<T>(\n      node: Undone<N.Node>,\n      parse: () => T,\n    ): T {\n      let result: T;\n      if (\n        this.state.noArrowParamsConversionAt.includes(\n          this.offsetToSourcePos(node.start),\n        )\n      ) {\n        this.state.noArrowParamsConversionAt.push(this.state.start);\n        result = parse();\n        this.state.noArrowParamsConversionAt.pop();\n      } else {\n        result = parse();\n      }\n\n      return result;\n    }\n\n    parseParenItem<T extends N.Expression | N.RestElement | N.SpreadElement>(\n      node: T,\n      startLoc: Position,\n    ): T | N.TypeCastExpression | N.TsTypeCastExpression {\n      const newNode = super.parseParenItem(node, startLoc);\n      if (this.eat(tt.question)) {\n        (newNode as N.Identifier).optional = true;\n        // Include questionmark in location of node\n        // Don't use this.finishNode() as otherwise we might process comments twice and\n        // include already consumed parens\n        this.resetEndLocation(node);\n      }\n\n      if (this.match(tt.colon)) {\n        const typeCastNode = this.startNodeAt<N.TypeCastExpression>(startLoc);\n        typeCastNode.expression = newNode as N.Expression;\n        typeCastNode.typeAnnotation = this.flowParseTypeAnnotation();\n\n        return this.finishNode(typeCastNode, \"TypeCastExpression\");\n      }\n\n      return newNode;\n    }\n\n    assertModuleNodeAllowed(node: N.Node) {\n      if (\n        (node.type === \"ImportDeclaration\" &&\n          (node.importKind === \"type\" || node.importKind === \"typeof\")) ||\n        (node.type === \"ExportNamedDeclaration\" &&\n          node.exportKind === \"type\") ||\n        (node.type === \"ExportAllDeclaration\" && node.exportKind === \"type\")\n      ) {\n        // Allow Flowtype imports and exports in all conditions because\n        // Flow itself does not care about 'sourceType'.\n        return;\n      }\n\n      super.assertModuleNodeAllowed(node);\n    }\n\n    parseExportDeclaration(\n      node: N.ExportNamedDeclaration,\n    ): N.Declaration | undefined | null {\n      if (this.isContextual(tt._type)) {\n        node.exportKind = \"type\";\n\n        const declarationNode = this.startNode();\n        this.next();\n\n        if (this.match(tt.braceL)) {\n          // export type { foo, bar };\n          node.specifiers = this.parseExportSpecifiers(\n            /* isInTypeExport */ true,\n          );\n          super.parseExportFrom(node);\n          return null;\n        } else {\n          // export type Foo = Bar;\n          // @ts-expect-error: refine typings\n          return this.flowParseTypeAlias(declarationNode);\n        }\n      } else if (this.isContextual(tt._opaque)) {\n        node.exportKind = \"type\";\n\n        const declarationNode = this.startNode();\n        this.next();\n        // export opaque type Foo = Bar;\n        // @ts-expect-error: refine typings\n        return this.flowParseOpaqueType(declarationNode, false);\n      } else if (this.isContextual(tt._interface)) {\n        node.exportKind = \"type\";\n        const declarationNode = this.startNode();\n        this.next();\n        // @ts-expect-error: refine typings\n        return this.flowParseInterface(declarationNode);\n      } else if (this.isContextual(tt._enum)) {\n        node.exportKind = \"value\";\n        const declarationNode = this.startNode();\n        this.next();\n        // @ts-expect-error: refine typings\n        return this.flowParseEnumDeclaration(declarationNode);\n      } else {\n        return super.parseExportDeclaration(node);\n      }\n    }\n\n    eatExportStar(\n      node: Undone<N.Node>,\n    ): node is Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration> {\n      if (super.eatExportStar(node)) return true;\n\n      if (this.isContextual(tt._type) && this.lookahead().type === tt.star) {\n        (\n          node as Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>\n        ).exportKind = \"type\";\n        this.next();\n        this.next();\n        return true;\n      }\n\n      return false;\n    }\n\n    maybeParseExportNamespaceSpecifier(\n      node: Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>,\n    ): node is Undone<N.ExportNamedDeclaration> {\n      const { startLoc } = this.state;\n      const hasNamespace = super.maybeParseExportNamespaceSpecifier(node);\n      if (hasNamespace && node.exportKind === \"type\") {\n        this.unexpected(startLoc);\n      }\n      return hasNamespace;\n    }\n\n    parseClassId(\n      node: N.Class,\n      isStatement: boolean,\n      optionalId?: boolean | null,\n    ) {\n      super.parseClassId(node, isStatement, optionalId);\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n      }\n    }\n\n    parseClassMember(\n      classBody: N.ClassBody,\n      member: any,\n      state: N.ParseClassMemberState,\n    ): void {\n      const { startLoc } = this.state;\n      if (this.isContextual(tt._declare)) {\n        if (super.parseClassMemberFromModifier(classBody, member)) {\n          // 'declare' is a class element name\n          return;\n        }\n\n        member.declare = true;\n      }\n\n      super.parseClassMember(classBody, member, state);\n\n      if (member.declare) {\n        if (\n          member.type !== \"ClassProperty\" &&\n          member.type !== \"ClassPrivateProperty\" &&\n          member.type !== \"PropertyDefinition\" // Used by estree plugin\n        ) {\n          this.raise(FlowErrors.DeclareClassElement, startLoc);\n        } else if (member.value) {\n          this.raise(FlowErrors.DeclareClassFieldInitializer, member.value);\n        }\n      }\n    }\n\n    isIterator(word: string): boolean {\n      return word === \"iterator\" || word === \"asyncIterator\";\n    }\n\n    readIterator(): void {\n      const word = super.readWord1();\n      const fullWord = \"@@\" + word;\n\n      // Allow @@iterator and @@asyncIterator as a identifier only inside type\n      if (!this.isIterator(word) || !this.state.inType) {\n        this.raise(Errors.InvalidIdentifier, this.state.curPosition(), {\n          identifierName: fullWord,\n        });\n      }\n\n      this.finishToken(tt.name, fullWord);\n    }\n\n    // ensure that inside flow types, we bypass the jsx parser plugin\n    getTokenFromCode(code: number): void {\n      const next = this.input.charCodeAt(this.state.pos + 1);\n      if (code === charCodes.leftCurlyBrace && next === charCodes.verticalBar) {\n        this.finishOp(tt.braceBarL, 2);\n      } else if (\n        this.state.inType &&\n        (code === charCodes.greaterThan || code === charCodes.lessThan)\n      ) {\n        this.finishOp(code === charCodes.greaterThan ? tt.gt : tt.lt, 1);\n      } else if (this.state.inType && code === charCodes.questionMark) {\n        if (next === charCodes.dot) {\n          this.finishOp(tt.questionDot, 2);\n        } else {\n          // allow double nullable types in Flow: ??string\n          this.finishOp(tt.question, 1);\n        }\n      } else if (\n        isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))\n      ) {\n        this.state.pos += 2; // eat \"@@\"\n        this.readIterator();\n      } else {\n        super.getTokenFromCode(code);\n      }\n    }\n\n    isAssignable(node: N.Node, isBinding?: boolean): boolean {\n      if (node.type === \"TypeCastExpression\") {\n        return this.isAssignable(node.expression, isBinding);\n      } else {\n        return super.isAssignable(node, isBinding);\n      }\n    }\n\n    toAssignable(node: N.Node, isLHS: boolean = false): void {\n      if (\n        !isLHS &&\n        node.type === \"AssignmentExpression\" &&\n        node.left.type === \"TypeCastExpression\"\n      ) {\n        node.left = this.typeCastToParameter(node.left) as N.Assignable;\n      }\n      super.toAssignable(node, isLHS);\n    }\n\n    // turn type casts that we found in function parameter head into type annotated params\n    toAssignableList(\n      exprList: N.Expression[],\n      trailingCommaLoc: Position | undefined | null,\n      isLHS: boolean,\n    ): void {\n      for (let i = 0; i < exprList.length; i++) {\n        const expr = exprList[i];\n        if (expr?.type === \"TypeCastExpression\") {\n          exprList[i] = this.typeCastToParameter(expr);\n        }\n      }\n      super.toAssignableList(exprList, trailingCommaLoc, isLHS);\n    }\n\n    // this is a list of nodes, from something like a call expression, we need to filter the\n    // type casts that we've found that are illegal in this context\n    toReferencedList(\n      exprList:\n        | ReadonlyArray<N.Expression | N.SpreadElement>\n        | ReadonlyArray<N.Expression | N.RestElement>,\n      isParenthesizedExpr?: boolean,\n    ):\n      | ReadonlyArray<N.Expression | N.SpreadElement>\n      | ReadonlyArray<N.Expression | N.RestElement> {\n      for (let i = 0; i < exprList.length; i++) {\n        const expr = exprList[i];\n        if (\n          expr &&\n          expr.type === \"TypeCastExpression\" &&\n          !expr.extra?.parenthesized &&\n          (exprList.length > 1 || !isParenthesizedExpr)\n        ) {\n          this.raise(FlowErrors.TypeCastInPattern, expr.typeAnnotation);\n        }\n      }\n\n      return exprList;\n    }\n\n    parseArrayLike(\n      close: TokenType,\n      canBePattern: boolean,\n      isTuple: boolean,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): N.ArrayExpression | N.TupleExpression {\n      const node = super.parseArrayLike(\n        close,\n        canBePattern,\n        isTuple,\n        refExpressionErrors,\n      );\n\n      // This could be an array pattern:\n      //   ([a: string, b: string]) => {}\n      // In this case, we don't have to call toReferencedList. We will\n      // call it, if needed, when we are sure that it is a parenthesized\n      // expression by calling toReferencedListDeep.\n      if (canBePattern && !this.state.maybeInArrowParameters) {\n        this.toReferencedList(node.elements);\n      }\n\n      return node;\n    }\n\n    isValidLVal(type: string, isParenthesized: boolean, binding: BindingFlag) {\n      return (\n        type === \"TypeCastExpression\" ||\n        super.isValidLVal(type, isParenthesized, binding)\n      );\n    }\n\n    // parse class property type annotations\n    parseClassProperty(node: N.ClassProperty): N.ClassProperty {\n      if (this.match(tt.colon)) {\n        node.typeAnnotation = this.flowParseTypeAnnotation();\n      }\n      return super.parseClassProperty(node);\n    }\n\n    parseClassPrivateProperty(\n      node: N.ClassPrivateProperty,\n    ): N.ClassPrivateProperty {\n      if (this.match(tt.colon)) {\n        node.typeAnnotation = this.flowParseTypeAnnotation();\n      }\n      return super.parseClassPrivateProperty(node);\n    }\n\n    // determine whether or not we're currently in the position where a class method would appear\n    isClassMethod(): boolean {\n      return this.match(tt.lt) || super.isClassMethod();\n    }\n\n    // determine whether or not we're currently in the position where a class property would appear\n    isClassProperty(): boolean {\n      return this.match(tt.colon) || super.isClassProperty();\n    }\n\n    isNonstaticConstructor(method: N.ClassMethod | N.ClassProperty): boolean {\n      return !this.match(tt.colon) && super.isNonstaticConstructor(method);\n    }\n\n    // parse type parameters for class methods\n    pushClassMethod(\n      classBody: N.ClassBody,\n      method: N.ClassMethod,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isConstructor: boolean,\n      allowsDirectSuper: boolean,\n    ): void {\n      if ((method as any).variance) {\n        this.unexpected((method as any).variance.loc.start);\n      }\n      delete (method as any).variance;\n      if (this.match(tt.lt)) {\n        method.typeParameters = this.flowParseTypeParameterDeclaration();\n      }\n\n      super.pushClassMethod(\n        classBody,\n        method,\n        isGenerator,\n        isAsync,\n        isConstructor,\n        allowsDirectSuper,\n      );\n\n      if (method.params && isConstructor) {\n        const params = method.params;\n        if (params.length > 0 && this.isThisParam(params[0])) {\n          this.raise(FlowErrors.ThisParamBannedInConstructor, method);\n        }\n        // estree support\n      } else if (\n        // @ts-expect-error TS does not know about the fact that estree can replace ClassMethod with MethodDefinition\n        method.type === \"MethodDefinition\" &&\n        isConstructor &&\n        // @ts-expect-error estree\n        method.value.params\n      ) {\n        // @ts-expect-error estree\n        const params = method.value.params;\n        if (params.length > 0 && this.isThisParam(params[0])) {\n          this.raise(FlowErrors.ThisParamBannedInConstructor, method);\n        }\n      }\n    }\n\n    pushClassPrivateMethod(\n      classBody: N.ClassBody,\n      method: N.ClassPrivateMethod,\n      isGenerator: boolean,\n      isAsync: boolean,\n    ): void {\n      if ((method as any).variance) {\n        this.unexpected((method as any).variance.loc.start);\n      }\n      delete (method as any).variance;\n      if (this.match(tt.lt)) {\n        method.typeParameters = this.flowParseTypeParameterDeclaration();\n      }\n\n      super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n    }\n\n    // parse a the super class type parameters and implements\n    parseClassSuper(node: N.Class): void {\n      super.parseClassSuper(node);\n      if (\n        node.superClass &&\n        (this.match(tt.lt) ||\n          // handles `class extends C<<T>`\n          this.match(tt.bitShiftL))\n      ) {\n        if (process.env.BABEL_8_BREAKING) {\n          node.superTypeArguments =\n            this.flowParseTypeParameterInstantiationInExpression();\n        } else {\n          node.superTypeParameters =\n            this.flowParseTypeParameterInstantiationInExpression();\n        }\n      }\n      if (this.isContextual(tt._implements)) {\n        this.next();\n        const implemented: N.FlowClassImplements[] = (node.implements = []);\n        do {\n          const node = this.startNode<N.FlowClassImplements>();\n          node.id = this.flowParseRestrictedIdentifier(/*liberal*/ true);\n          if (this.match(tt.lt)) {\n            node.typeParameters = this.flowParseTypeParameterInstantiation();\n          } else {\n            node.typeParameters = null;\n          }\n          implemented.push(this.finishNode(node, \"ClassImplements\"));\n        } while (this.eat(tt.comma));\n      }\n    }\n\n    checkGetterSetterParams(method: N.ObjectMethod | N.ClassMethod): void {\n      super.checkGetterSetterParams(method);\n      const params = this.getObjectOrClassMethodParams(method);\n      if (params.length > 0) {\n        const param = params[0];\n        if (this.isThisParam(param) && method.kind === \"get\") {\n          this.raise(FlowErrors.GetterMayNotHaveThisParam, param);\n        } else if (this.isThisParam(param)) {\n          this.raise(FlowErrors.SetterMayNotHaveThisParam, param);\n        }\n      }\n    }\n\n    parsePropertyNamePrefixOperator(\n      node: N.ObjectOrClassMember | N.ClassMember,\n    ): void {\n      node.variance = this.flowParseVariance();\n    }\n\n    // parse type parameters for object method shorthand\n    parseObjPropValue<T extends N.ObjectMember>(\n      prop: Undone<T>,\n      startLoc: Position | undefined | null,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isPattern: boolean,\n      isAccessor: boolean,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): T {\n      if ((prop as any).variance) {\n        this.unexpected((prop as any).variance.loc.start);\n      }\n      delete (prop as any).variance;\n\n      let typeParameters;\n\n      // method shorthand\n      if (this.match(tt.lt) && !isAccessor) {\n        typeParameters = this.flowParseTypeParameterDeclaration();\n        if (!this.match(tt.parenL)) this.unexpected();\n      }\n\n      const result = super.parseObjPropValue(\n        prop,\n        startLoc,\n        isGenerator,\n        isAsync,\n        isPattern,\n        isAccessor,\n        refExpressionErrors,\n      );\n\n      // add typeParameters if we found them\n      if (typeParameters) {\n        // @ts-expect-error: refine typings\n        (result.value || result).typeParameters = typeParameters;\n      }\n      return result;\n    }\n\n    parseFunctionParamType(param: N.Pattern): N.Pattern {\n      if (this.eat(tt.question)) {\n        if (param.type !== \"Identifier\") {\n          this.raise(FlowErrors.PatternIsOptional, param);\n        }\n        if (this.isThisParam(param)) {\n          this.raise(FlowErrors.ThisParamMayNotBeOptional, param);\n        }\n\n        (param as any as N.Identifier).optional = true;\n      }\n      if (this.match(tt.colon)) {\n        param.typeAnnotation = this.flowParseTypeAnnotation();\n      } else if (this.isThisParam(param)) {\n        this.raise(FlowErrors.ThisParamAnnotationRequired, param);\n      }\n\n      if (this.match(tt.eq) && this.isThisParam(param)) {\n        this.raise(FlowErrors.ThisParamNoDefault, param);\n      }\n\n      this.resetEndLocation(param);\n      return param;\n    }\n\n    parseMaybeDefault<P extends N.Pattern>(\n      startLoc?: Position | null,\n      left?: P | null,\n    ): P | N.AssignmentPattern {\n      const node = super.parseMaybeDefault(startLoc, left);\n\n      if (\n        node.type === \"AssignmentPattern\" &&\n        node.typeAnnotation &&\n        node.right.start < node.typeAnnotation.start\n      ) {\n        this.raise(FlowErrors.TypeBeforeInitializer, node.typeAnnotation);\n      }\n\n      return node;\n    }\n\n    checkImportReflection(node: Undone<N.ImportDeclaration>) {\n      super.checkImportReflection(node);\n      if (node.module && node.importKind !== \"value\") {\n        this.raise(\n          FlowErrors.ImportReflectionHasImportType,\n          node.specifiers[0].loc.start,\n        );\n      }\n    }\n\n    parseImportSpecifierLocal<\n      T extends\n        | N.ImportSpecifier\n        | N.ImportDefaultSpecifier\n        | N.ImportNamespaceSpecifier,\n    >(node: N.ImportDeclaration, specifier: Undone<T>, type: T[\"type\"]): void {\n      specifier.local = hasTypeImportKind(node)\n        ? this.flowParseRestrictedIdentifier(\n            /* liberal */ true,\n            /* declaration */ true,\n          )\n        : this.parseIdentifier();\n\n      node.specifiers.push(this.finishImportSpecifier(specifier, type));\n    }\n\n    isPotentialImportPhase(isExport: boolean): boolean {\n      if (super.isPotentialImportPhase(isExport)) return true;\n      if (this.isContextual(tt._type)) {\n        if (!isExport) return true;\n        const ch = this.lookaheadCharCode();\n        return ch === charCodes.leftCurlyBrace || ch === charCodes.asterisk;\n      }\n      return !isExport && this.isContextual(tt._typeof);\n    }\n\n    applyImportPhase(\n      node: Undone<N.ImportDeclaration | N.ExportNamedDeclaration>,\n      isExport: boolean,\n      phase: string | null,\n      loc?: Position,\n    ): void {\n      super.applyImportPhase(node, isExport, phase, loc);\n      if (isExport) {\n        if (!phase && this.match(tt._default)) {\n          // TODO: Align with our TS AST and always add .exportKind\n          return;\n        }\n        (node as N.ExportNamedDeclaration).exportKind =\n          phase === \"type\" ? phase : \"value\";\n      } else {\n        if (phase === \"type\" && this.match(tt.star)) this.unexpected();\n        (node as N.ImportDeclaration).importKind =\n          phase === \"type\" || phase === \"typeof\" ? phase : \"value\";\n      }\n    }\n\n    // parse import-type/typeof shorthand\n    parseImportSpecifier(\n      specifier: any,\n      importedIsString: boolean,\n      isInTypeOnlyImport: boolean,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      isMaybeTypeOnly: boolean,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      bindingType: BindingFlag | undefined,\n    ): N.ImportSpecifier {\n      const firstIdent = specifier.imported;\n\n      let specifierTypeKind = null;\n      if (firstIdent.type === \"Identifier\") {\n        if (firstIdent.name === \"type\") {\n          specifierTypeKind = \"type\";\n        } else if (firstIdent.name === \"typeof\") {\n          specifierTypeKind = \"typeof\";\n        }\n      }\n\n      let isBinding = false;\n      if (this.isContextual(tt._as) && !this.isLookaheadContextual(\"as\")) {\n        const as_ident = this.parseIdentifier(true);\n        if (\n          specifierTypeKind !== null &&\n          !tokenIsKeywordOrIdentifier(this.state.type)\n        ) {\n          // `import {type as ,` or `import {type as }`\n          specifier.imported = as_ident;\n          specifier.importKind = specifierTypeKind;\n          specifier.local = this.cloneIdentifier(as_ident);\n        } else {\n          // `import {type as foo`\n          specifier.imported = firstIdent;\n          specifier.importKind = null;\n          specifier.local = this.parseIdentifier();\n        }\n      } else {\n        if (\n          specifierTypeKind !== null &&\n          tokenIsKeywordOrIdentifier(this.state.type)\n        ) {\n          // `import {type foo`\n          specifier.imported = this.parseIdentifier(true);\n          specifier.importKind = specifierTypeKind;\n        } else {\n          if (importedIsString) {\n            /*:: invariant(firstIdent instanceof N.StringLiteral) */\n            throw this.raise(Errors.ImportBindingIsString, specifier, {\n              importName: firstIdent.value,\n            });\n          }\n          /*:: invariant(firstIdent instanceof N.Node) */\n          specifier.imported = firstIdent;\n          specifier.importKind = null;\n        }\n\n        if (this.eatContextual(tt._as)) {\n          specifier.local = this.parseIdentifier();\n        } else {\n          isBinding = true;\n          specifier.local = this.cloneIdentifier(specifier.imported);\n        }\n      }\n\n      const specifierIsTypeImport = hasTypeImportKind(specifier);\n\n      if (isInTypeOnlyImport && specifierIsTypeImport) {\n        this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, specifier);\n      }\n\n      if (isInTypeOnlyImport || specifierIsTypeImport) {\n        this.checkReservedType(\n          specifier.local.name,\n          specifier.local.loc.start,\n          /* declaration */ true,\n        );\n      }\n\n      if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) {\n        this.checkReservedWord(\n          specifier.local.name,\n          specifier.loc.start,\n          true,\n          true,\n        );\n      }\n\n      return this.finishImportSpecifier(specifier, \"ImportSpecifier\");\n    }\n\n    parseBindingAtom(): N.Pattern {\n      switch (this.state.type) {\n        case tt._this:\n          // \"this\" may be the name of a parameter, so allow it.\n          return this.parseIdentifier(/* liberal */ true);\n        default:\n          return super.parseBindingAtom();\n      }\n    }\n\n    // parse function type parameters - function foo<T>() {}\n    parseFunctionParams(\n      node: Undone<N.Function>,\n      isConstructor: boolean,\n    ): void {\n      // @ts-expect-error kind may not index node\n      const kind = node.kind;\n      if (kind !== \"get\" && kind !== \"set\" && this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n      }\n      super.parseFunctionParams(node, isConstructor);\n    }\n\n    // parse flow type annotations on variable declarator heads - let foo: string = bar\n    parseVarId(\n      decl: N.VariableDeclarator,\n      kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n    ): void {\n      super.parseVarId(decl, kind);\n      if (this.match(tt.colon)) {\n        decl.id.typeAnnotation = this.flowParseTypeAnnotation();\n        this.resetEndLocation(decl.id); // set end position to end of type\n      }\n    }\n\n    // parse the return type of an async arrow function - let foo = (async (): number => {});\n    parseAsyncArrowFromCallExpression(\n      node: N.ArrowFunctionExpression,\n      call: N.CallExpression,\n    ): N.ArrowFunctionExpression {\n      if (this.match(tt.colon)) {\n        const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n        this.state.noAnonFunctionType = true;\n        node.returnType = this.flowParseTypeAnnotation();\n        this.state.noAnonFunctionType = oldNoAnonFunctionType;\n      }\n\n      return super.parseAsyncArrowFromCallExpression(node, call);\n    }\n\n    // todo description\n    shouldParseAsyncArrow(): boolean {\n      return this.match(tt.colon) || super.shouldParseAsyncArrow();\n    }\n\n    // We need to support type parameter declarations for arrow functions. This\n    // is tricky. There are three situations we need to handle\n    //\n    // 1. This is either JSX or an arrow function. We'll try JSX first. If that\n    //    fails, we'll try an arrow function. If that fails, we'll throw the JSX\n    //    error.\n    // 2. This is an arrow function. We'll parse the type parameter declaration,\n    //    parse the rest, make sure the rest is an arrow function, and go from\n    //    there\n    // 3. This is neither. Just call the super method\n    parseMaybeAssign(\n      refExpressionErrors?: ExpressionErrors | null,\n      afterLeftParse?: Function,\n    ): N.Expression {\n      let state = null;\n\n      let jsx;\n\n      if (\n        this.hasPlugin(\"jsx\") &&\n        (this.match(tt.jsxTagStart) || this.match(tt.lt))\n      ) {\n        state = this.state.clone();\n\n        jsx = this.tryParse(\n          () => super.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n          state,\n        );\n\n        /*:: invariant(!jsx.aborted) */\n        /*:: invariant(jsx.node != null) */\n        if (!jsx.error) return jsx.node;\n\n        // Remove `tc.j_expr` and `tc.j_oTag` from context added\n        // by parsing `jsxTagStart` to stop the JSX plugin from\n        // messing with the tokens\n        const { context } = this.state;\n        const currentContext = context[context.length - 1];\n        if (currentContext === tc.j_oTag || currentContext === tc.j_expr) {\n          context.pop();\n        }\n      }\n\n      if (jsx?.error || this.match(tt.lt)) {\n        state = state || this.state.clone();\n\n        let typeParameters: N.TypeParameterDeclaration;\n\n        const arrow = this.tryParse((abort: () => never) => {\n          typeParameters = this.flowParseTypeParameterDeclaration();\n\n          const arrowExpression = this.forwardNoArrowParamsConversionAt(\n            typeParameters,\n            () => {\n              const result = super.parseMaybeAssign(\n                refExpressionErrors,\n                afterLeftParse,\n              );\n\n              this.resetStartLocationFromNode(result, typeParameters);\n\n              return result;\n            },\n          );\n\n          // <T>(() => {});\n          // <T>(() => {}: any);\n          if (arrowExpression.extra?.parenthesized) abort();\n\n          // The above can return a TypeCastExpression when the arrow\n          // expression is not wrapped in parens. See also `this.parseParenItem`.\n          // (<T>() => {}: any);\n          const expr = this.maybeUnwrapTypeCastExpression(arrowExpression);\n\n          if (expr.type !== \"ArrowFunctionExpression\") abort();\n\n          expr.typeParameters = typeParameters;\n          this.resetStartLocationFromNode(expr, typeParameters);\n\n          return arrowExpression;\n        }, state);\n\n        let arrowExpression:\n          | N.ArrowFunctionExpression\n          | N.TypeCastExpression\n          | undefined\n          | null = null;\n\n        if (\n          arrow.node &&\n          this.maybeUnwrapTypeCastExpression(arrow.node).type ===\n            \"ArrowFunctionExpression\"\n        ) {\n          if (!arrow.error && !arrow.aborted) {\n            // <T> async () => {}\n            // @ts-expect-error: refine tryParse typings\n            if (arrow.node.async) {\n              /*:: invariant(typeParameters) */\n              this.raise(\n                FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction,\n                typeParameters,\n              );\n            }\n            return arrow.node;\n          }\n\n          // @ts-expect-error: refine typings\n          arrowExpression = arrow.node;\n        }\n\n        // If we are here, both JSX and Flow parsing attempts failed.\n        // Give the precedence to the JSX error, except if JSX had an\n        // unrecoverable error while Flow didn't.\n        // If the error is recoverable, we can only re-report it if there is\n        // a node we can return.\n\n        if (jsx?.node) {\n          /*:: invariant(jsx.failState) */\n          this.state = jsx.failState;\n          return jsx.node;\n        }\n\n        if (arrowExpression) {\n          /*:: invariant(arrow.failState) */\n          this.state = arrow.failState;\n          return arrowExpression;\n        }\n\n        if (jsx?.thrown) throw jsx.error;\n        if (arrow.thrown) throw arrow.error;\n\n        /*:: invariant(typeParameters) */\n        throw this.raise(\n          FlowErrors.UnexpectedTokenAfterTypeParameter,\n          typeParameters,\n        );\n      }\n\n      return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n    }\n\n    // handle return types for arrow functions\n    parseArrow(\n      node: Undone<N.ArrowFunctionExpression>,\n    ): Undone<N.ArrowFunctionExpression> | undefined | null {\n      if (this.match(tt.colon)) {\n        // @ts-expect-error todo(flow->ts)\n        const result = this.tryParse<N.TypeAnnotation>(() => {\n          const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n          this.state.noAnonFunctionType = true;\n\n          const typeNode = this.startNode<N.TypeAnnotation>();\n\n          [\n            typeNode.typeAnnotation,\n            // @ts-expect-error (destructuring not supported yet)\n            node.predicate,\n          ] = this.flowParseTypeAndPredicateInitialiser();\n\n          this.state.noAnonFunctionType = oldNoAnonFunctionType;\n\n          if (this.canInsertSemicolon()) this.unexpected();\n          if (!this.match(tt.arrow)) this.unexpected();\n\n          return typeNode;\n        });\n\n        if (result.thrown) return null;\n        /*:: invariant(result.node) */\n\n        if (result.error) this.state = result.failState;\n\n        // assign after it is clear it is an arrow\n        // @ts-expect-error todo(flow->ts)\n        node.returnType = result.node.typeAnnotation\n          ? this.finishNode(result.node, \"TypeAnnotation\")\n          : null;\n      }\n\n      return super.parseArrow(node);\n    }\n\n    shouldParseArrow(params: Array<N.Node>): boolean {\n      return this.match(tt.colon) || super.shouldParseArrow(params);\n    }\n\n    setArrowFunctionParameters(\n      node: Undone<N.ArrowFunctionExpression>,\n      params:\n        | Array<N.Expression | N.SpreadElement>\n        | Array<N.Expression | N.RestElement>,\n    ): void {\n      if (\n        this.state.noArrowParamsConversionAt.includes(\n          this.offsetToSourcePos(node.start),\n        )\n      ) {\n        node.params = params as N.ArrowFunctionExpression[\"params\"];\n      } else {\n        super.setArrowFunctionParameters(node, params);\n      }\n    }\n\n    checkParams(\n      node: N.Function,\n      allowDuplicates: boolean,\n      isArrowFunction?: boolean | null,\n      strictModeChanged: boolean = true,\n    ): void {\n      if (\n        isArrowFunction &&\n        this.state.noArrowParamsConversionAt.includes(\n          this.offsetToSourcePos(node.start),\n        )\n      ) {\n        return;\n      }\n\n      // ensure the `this` param is first, if it exists\n      for (let i = 0; i < node.params.length; i++) {\n        if (this.isThisParam(node.params[i]) && i > 0) {\n          this.raise(FlowErrors.ThisParamMustBeFirst, node.params[i]);\n        }\n      }\n\n      super.checkParams(\n        node,\n        allowDuplicates,\n        isArrowFunction,\n        strictModeChanged,\n      );\n    }\n\n    parseParenAndDistinguishExpression(canBeArrow: boolean): N.Expression {\n      return super.parseParenAndDistinguishExpression(\n        canBeArrow &&\n          !this.state.noArrowAt.includes(\n            this.sourceToOffsetPos(this.state.start),\n          ),\n      );\n    }\n\n    parseSubscripts(\n      base: N.Expression,\n      startLoc: Position,\n      noCalls?: boolean | null,\n    ): N.Expression {\n      if (\n        base.type === \"Identifier\" &&\n        base.name === \"async\" &&\n        this.state.noArrowAt.includes(startLoc.index)\n      ) {\n        this.next();\n\n        const node = this.startNodeAt<N.CallExpression>(startLoc);\n        node.callee = base;\n        node.arguments = super.parseCallExpressionArguments();\n        base = this.finishNode(node, \"CallExpression\");\n      } else if (\n        base.type === \"Identifier\" &&\n        base.name === \"async\" &&\n        this.match(tt.lt)\n      ) {\n        const state = this.state.clone();\n        const arrow = this.tryParse(\n          abort => this.parseAsyncArrowWithTypeParameters(startLoc) || abort(),\n          state,\n        );\n\n        /*:: invariant(arrow.node != null) */\n        // @ts-expect-error: refine tryParse typings\n        if (!arrow.error && !arrow.aborted) return arrow.node;\n\n        const result = this.tryParse(\n          () => super.parseSubscripts(base, startLoc, noCalls),\n          state,\n        );\n\n        if (result.node && !result.error) return result.node;\n\n        if (arrow.node) {\n          this.state = arrow.failState;\n          // @ts-expect-error: refine tryParse typings\n          return arrow.node;\n        }\n\n        if (result.node) {\n          this.state = result.failState;\n          return result.node;\n        }\n\n        throw arrow.error || result.error;\n      }\n\n      return super.parseSubscripts(base, startLoc, noCalls);\n    }\n\n    parseSubscript(\n      base: N.Expression,\n\n      startLoc: Position,\n      noCalls: boolean | undefined | null,\n      subscriptState: N.ParseSubscriptState,\n    ): N.Expression {\n      if (this.match(tt.questionDot) && this.isLookaheadToken_lt()) {\n        subscriptState.optionalChainMember = true;\n        if (noCalls) {\n          subscriptState.stop = true;\n          return base;\n        }\n        this.next();\n        const node = this.startNodeAt<N.OptionalCallExpression>(startLoc);\n        node.callee = base;\n        node.typeArguments =\n          this.flowParseTypeParameterInstantiationInExpression();\n        this.expect(tt.parenL);\n        node.arguments = this.parseCallExpressionArguments();\n        node.optional = true;\n        return this.finishCallExpression(node, /* optional */ true);\n      } else if (\n        !noCalls &&\n        this.shouldParseTypes() &&\n        (this.match(tt.lt) ||\n          // also handles `new C<<T>`\n          this.match(tt.bitShiftL))\n      ) {\n        const node = this.startNodeAt<\n          N.OptionalCallExpression | N.CallExpression\n        >(startLoc);\n        node.callee = base;\n\n        const result = this.tryParse(() => {\n          node.typeArguments =\n            this.flowParseTypeParameterInstantiationCallOrNew();\n          this.expect(tt.parenL);\n          node.arguments = super.parseCallExpressionArguments();\n          if (subscriptState.optionalChainMember) {\n            (node as Undone<N.OptionalCallExpression>).optional = false;\n          }\n          return this.finishCallExpression(\n            node,\n            subscriptState.optionalChainMember,\n          );\n        });\n\n        if (result.node) {\n          if (result.error) this.state = result.failState;\n          return result.node;\n        }\n      }\n\n      return super.parseSubscript(\n        base,\n\n        startLoc,\n        noCalls,\n        subscriptState,\n      );\n    }\n\n    parseNewCallee(node: N.NewExpression): void {\n      super.parseNewCallee(node);\n\n      let targs = null;\n      if (this.shouldParseTypes() && this.match(tt.lt)) {\n        targs = this.tryParse(() =>\n          this.flowParseTypeParameterInstantiationCallOrNew(),\n        ).node;\n      }\n      node.typeArguments = targs;\n    }\n\n    parseAsyncArrowWithTypeParameters(\n      startLoc: Position,\n    ): N.ArrowFunctionExpression | undefined | null {\n      const node = this.startNodeAt<N.ArrowFunctionExpression>(startLoc);\n      this.parseFunctionParams(node, false);\n      if (!this.parseArrow(node)) return;\n      return super.parseArrowExpression(\n        node,\n        /* params */ undefined,\n        /* isAsync */ true,\n      );\n    }\n\n    readToken_mult_modulo(code: number): void {\n      const next = this.input.charCodeAt(this.state.pos + 1);\n      if (\n        code === charCodes.asterisk &&\n        next === charCodes.slash &&\n        this.state.hasFlowComment\n      ) {\n        this.state.hasFlowComment = false;\n        this.state.pos += 2;\n        this.nextToken();\n        return;\n      }\n\n      super.readToken_mult_modulo(code);\n    }\n\n    readToken_pipe_amp(code: number): void {\n      const next = this.input.charCodeAt(this.state.pos + 1);\n      if (\n        code === charCodes.verticalBar &&\n        next === charCodes.rightCurlyBrace\n      ) {\n        // '|}'\n        this.finishOp(tt.braceBarR, 2);\n        return;\n      }\n\n      super.readToken_pipe_amp(code);\n    }\n\n    parseTopLevel(file: N.File, program: N.Program): N.File {\n      const fileNode = super.parseTopLevel(file, program);\n      if (this.state.hasFlowComment) {\n        this.raise(\n          FlowErrors.UnterminatedFlowComment,\n          this.state.curPosition(),\n        );\n      }\n      return fileNode;\n    }\n\n    skipBlockComment(): N.CommentBlock | undefined {\n      if (this.hasPlugin(\"flowComments\") && this.skipFlowComment()) {\n        if (this.state.hasFlowComment) {\n          throw this.raise(FlowErrors.NestedFlowComment, this.state.startLoc);\n        }\n        this.hasFlowCommentCompletion();\n        const commentSkip = this.skipFlowComment();\n        if (commentSkip) {\n          this.state.pos += commentSkip;\n          this.state.hasFlowComment = true;\n        }\n        return;\n      }\n\n      return super.skipBlockComment(this.state.hasFlowComment ? \"*-/\" : \"*/\");\n    }\n\n    skipFlowComment(): number | false {\n      const { pos } = this.state;\n      let shiftToFirstNonWhiteSpace = 2;\n      while (\n        [charCodes.space, charCodes.tab].includes(\n          // @ts-expect-error testing whether a number is included\n          this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace),\n        )\n      ) {\n        shiftToFirstNonWhiteSpace++;\n      }\n\n      const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos);\n      const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1);\n\n      if (ch2 === charCodes.colon && ch3 === charCodes.colon) {\n        return shiftToFirstNonWhiteSpace + 2; // check for /*::\n      }\n      if (\n        this.input.slice(\n          shiftToFirstNonWhiteSpace + pos,\n          shiftToFirstNonWhiteSpace + pos + 12,\n        ) === \"flow-include\"\n      ) {\n        return shiftToFirstNonWhiteSpace + 12; // check for /*flow-include\n      }\n      if (ch2 === charCodes.colon && ch3 !== charCodes.colon) {\n        return shiftToFirstNonWhiteSpace; // check for /*:, advance up to :\n      }\n      return false;\n    }\n\n    hasFlowCommentCompletion(): void {\n      const end = this.input.indexOf(\"*/\", this.state.pos);\n      if (end === -1) {\n        throw this.raise(Errors.UnterminatedComment, this.state.curPosition());\n      }\n    }\n\n    // Flow enum parsing\n\n    flowEnumErrorBooleanMemberNotInitialized(\n      loc: Position,\n      {\n        enumName,\n        memberName,\n      }: {\n        enumName: string;\n        memberName: string;\n      },\n    ): void {\n      this.raise(FlowErrors.EnumBooleanMemberNotInitialized, loc, {\n        memberName,\n        enumName,\n      });\n    }\n\n    flowEnumErrorInvalidMemberInitializer(\n      loc: Position,\n      enumContext: EnumContext,\n    ) {\n      return this.raise(\n        !enumContext.explicitType\n          ? FlowErrors.EnumInvalidMemberInitializerUnknownType\n          : enumContext.explicitType === \"symbol\"\n            ? FlowErrors.EnumInvalidMemberInitializerSymbolType\n            : FlowErrors.EnumInvalidMemberInitializerPrimaryType,\n        loc,\n        enumContext,\n      );\n    }\n\n    flowEnumErrorNumberMemberNotInitialized(\n      loc: Position,\n      details: {\n        enumName: string;\n        memberName: string;\n      },\n    ): void {\n      this.raise(FlowErrors.EnumNumberMemberNotInitialized, loc, details);\n    }\n\n    flowEnumErrorStringMemberInconsistentlyInitialized(\n      node: N.Node,\n      details: {\n        enumName: string;\n      },\n    ): void {\n      this.raise(\n        FlowErrors.EnumStringMemberInconsistentlyInitialized,\n        node,\n        details,\n      );\n    }\n\n    flowEnumMemberInit(): EnumMemberInit {\n      const startLoc = this.state.startLoc;\n      const endOfInit = () => this.match(tt.comma) || this.match(tt.braceR);\n      switch (this.state.type) {\n        case tt.num: {\n          const literal = this.parseNumericLiteral(this.state.value);\n          if (endOfInit()) {\n            return { type: \"number\", loc: literal.loc.start, value: literal };\n          }\n          return { type: \"invalid\", loc: startLoc };\n        }\n        case tt.string: {\n          const literal = this.parseStringLiteral(this.state.value);\n          if (endOfInit()) {\n            return { type: \"string\", loc: literal.loc.start, value: literal };\n          }\n          return { type: \"invalid\", loc: startLoc };\n        }\n        case tt._true:\n        case tt._false: {\n          const literal = this.parseBooleanLiteral(this.match(tt._true));\n          if (endOfInit()) {\n            return {\n              type: \"boolean\",\n              loc: literal.loc.start,\n              value: literal,\n            };\n          }\n          return { type: \"invalid\", loc: startLoc };\n        }\n        default:\n          return { type: \"invalid\", loc: startLoc };\n      }\n    }\n\n    flowEnumMemberRaw(): {\n      id: N.Identifier;\n      init: EnumMemberInit;\n    } {\n      const loc = this.state.startLoc;\n      const id = this.parseIdentifier(true);\n      const init = this.eat(tt.eq)\n        ? this.flowEnumMemberInit()\n        : { type: \"none\" as const, loc };\n      return { id, init };\n    }\n\n    flowEnumCheckExplicitTypeMismatch(\n      loc: Position,\n      context: EnumContext,\n      expectedType: EnumExplicitType,\n    ): void {\n      const { explicitType } = context;\n      if (explicitType === null) {\n        return;\n      }\n      if (explicitType !== expectedType) {\n        this.flowEnumErrorInvalidMemberInitializer(loc, context);\n      }\n    }\n\n    flowEnumMembers({\n      enumName,\n      explicitType,\n    }: {\n      enumName: string;\n      explicitType: EnumExplicitType;\n    }): {\n      members: {\n        booleanMembers: Extract<\n          N.FlowEnumMember,\n          { type: \"EnumBooleanMember\" }\n        >[];\n        numberMembers: Extract<\n          N.FlowEnumMember,\n          { type: \"EnumNumberMember\" }\n        >[];\n        stringMembers: Extract<\n          N.FlowEnumMember,\n          { type: \"EnumStringMember\" }\n        >[];\n        defaultedMembers: Extract<\n          N.FlowEnumMember,\n          { type: \"EnumDefaultedMember\" }\n        >[];\n      };\n      hasUnknownMembers: boolean;\n    } {\n      const seenNames = new Set();\n      const members = {\n        // @ts-expect-error: migrate to Babel types\n        booleanMembers: [],\n        // @ts-expect-error: migrate to Babel types\n        numberMembers: [],\n        // @ts-expect-error: migrate to Babel types\n        stringMembers: [],\n        // @ts-expect-error: migrate to Babel types\n        defaultedMembers: [],\n      };\n      let hasUnknownMembers = false;\n      while (!this.match(tt.braceR)) {\n        if (this.eat(tt.ellipsis)) {\n          hasUnknownMembers = true;\n          break;\n        }\n        const memberNode = this.startNode<N.FlowEnumMember>();\n        const { id, init } = this.flowEnumMemberRaw();\n        const memberName = id.name;\n        if (memberName === \"\") {\n          continue;\n        }\n        if (/^[a-z]/.test(memberName)) {\n          this.raise(FlowErrors.EnumInvalidMemberName, id, {\n            memberName,\n            suggestion: memberName[0].toUpperCase() + memberName.slice(1),\n            enumName,\n          });\n        }\n        if (seenNames.has(memberName)) {\n          this.raise(FlowErrors.EnumDuplicateMemberName, id, {\n            memberName,\n            enumName,\n          });\n        }\n        seenNames.add(memberName);\n        const context = { enumName, explicitType, memberName };\n        memberNode.id = id;\n        switch (init.type) {\n          case \"boolean\": {\n            this.flowEnumCheckExplicitTypeMismatch(\n              init.loc,\n              context,\n              \"boolean\",\n            );\n            memberNode.init = init.value;\n            members.booleanMembers.push(\n              this.finishNode(memberNode, \"EnumBooleanMember\"),\n            );\n            break;\n          }\n          case \"number\": {\n            this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"number\");\n            memberNode.init = init.value;\n            members.numberMembers.push(\n              this.finishNode(memberNode, \"EnumNumberMember\"),\n            );\n            break;\n          }\n          case \"string\": {\n            this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"string\");\n            memberNode.init = init.value;\n            members.stringMembers.push(\n              this.finishNode(memberNode, \"EnumStringMember\"),\n            );\n            break;\n          }\n          case \"invalid\": {\n            throw this.flowEnumErrorInvalidMemberInitializer(init.loc, context);\n          }\n          case \"none\": {\n            switch (explicitType) {\n              case \"boolean\":\n                this.flowEnumErrorBooleanMemberNotInitialized(\n                  init.loc,\n                  context,\n                );\n                break;\n              case \"number\":\n                this.flowEnumErrorNumberMemberNotInitialized(init.loc, context);\n                break;\n              default:\n                members.defaultedMembers.push(\n                  this.finishNode(memberNode, \"EnumDefaultedMember\"),\n                );\n            }\n          }\n        }\n\n        if (!this.match(tt.braceR)) {\n          this.expect(tt.comma);\n        }\n      }\n      return { members, hasUnknownMembers };\n    }\n\n    flowEnumStringMembers(\n      initializedMembers: Array<N.Node>,\n      defaultedMembers: Array<N.Node>,\n      {\n        enumName,\n      }: {\n        enumName: string;\n      },\n    ): Array<N.Node> {\n      if (initializedMembers.length === 0) {\n        return defaultedMembers;\n      } else if (defaultedMembers.length === 0) {\n        return initializedMembers;\n      } else if (defaultedMembers.length > initializedMembers.length) {\n        for (const member of initializedMembers) {\n          this.flowEnumErrorStringMemberInconsistentlyInitialized(member, {\n            enumName,\n          });\n        }\n        return defaultedMembers;\n      } else {\n        for (const member of defaultedMembers) {\n          this.flowEnumErrorStringMemberInconsistentlyInitialized(member, {\n            enumName,\n          });\n        }\n        return initializedMembers;\n      }\n    }\n\n    flowEnumParseExplicitType({\n      enumName,\n    }: {\n      enumName: string;\n    }): EnumExplicitType {\n      if (!this.eatContextual(tt._of)) return null;\n\n      if (!tokenIsIdentifier(this.state.type)) {\n        throw this.raise(\n          FlowErrors.EnumInvalidExplicitTypeUnknownSupplied,\n          this.state.startLoc,\n          {\n            enumName,\n          },\n        );\n      }\n\n      const { value } = this.state;\n      this.next();\n\n      if (\n        value !== \"boolean\" &&\n        value !== \"number\" &&\n        value !== \"string\" &&\n        value !== \"symbol\"\n      ) {\n        this.raise(FlowErrors.EnumInvalidExplicitType, this.state.startLoc, {\n          enumName,\n          invalidEnumType: value,\n        });\n      }\n\n      return value;\n    }\n\n    flowEnumBody(node: Undone<N.FlowEnumBody>, id: N.Identifier): N.Node {\n      const enumName = id.name;\n      const nameLoc = id.loc.start;\n      const explicitType = this.flowEnumParseExplicitType({ enumName });\n      this.expect(tt.braceL);\n      const { members, hasUnknownMembers } = this.flowEnumMembers({\n        enumName,\n        explicitType,\n      });\n      node.hasUnknownMembers = hasUnknownMembers;\n\n      switch (explicitType) {\n        case \"boolean\":\n          node.explicitType = true;\n          node.members = members.booleanMembers;\n          this.expect(tt.braceR);\n          return this.finishNode(node, \"EnumBooleanBody\");\n        case \"number\":\n          node.explicitType = true;\n          node.members = members.numberMembers;\n          this.expect(tt.braceR);\n          return this.finishNode(node, \"EnumNumberBody\");\n        case \"string\":\n          node.explicitType = true;\n          node.members = this.flowEnumStringMembers(\n            members.stringMembers,\n            members.defaultedMembers,\n            { enumName },\n          );\n          this.expect(tt.braceR);\n          return this.finishNode(node, \"EnumStringBody\");\n        case \"symbol\":\n          node.members = members.defaultedMembers;\n          this.expect(tt.braceR);\n          return this.finishNode(node, \"EnumSymbolBody\");\n        default: {\n          // `explicitType` is `null`\n          const empty = () => {\n            node.members = [];\n            this.expect(tt.braceR);\n            return this.finishNode(node, \"EnumStringBody\");\n          };\n          node.explicitType = false;\n\n          const boolsLen = members.booleanMembers.length;\n          const numsLen = members.numberMembers.length;\n          const strsLen = members.stringMembers.length;\n          const defaultedLen = members.defaultedMembers.length;\n\n          if (!boolsLen && !numsLen && !strsLen && !defaultedLen) {\n            return empty();\n          } else if (!boolsLen && !numsLen) {\n            node.members = this.flowEnumStringMembers(\n              members.stringMembers,\n              members.defaultedMembers,\n              { enumName },\n            );\n            this.expect(tt.braceR);\n            return this.finishNode(node, \"EnumStringBody\");\n          } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) {\n            for (const member of members.defaultedMembers) {\n              this.flowEnumErrorBooleanMemberNotInitialized(member.loc.start, {\n                enumName,\n                memberName: member.id.name,\n              });\n            }\n            node.members = members.booleanMembers;\n            this.expect(tt.braceR);\n            return this.finishNode(node, \"EnumBooleanBody\");\n          } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) {\n            for (const member of members.defaultedMembers) {\n              this.flowEnumErrorNumberMemberNotInitialized(member.loc.start, {\n                enumName,\n                memberName: member.id.name,\n              });\n            }\n            node.members = members.numberMembers;\n            this.expect(tt.braceR);\n            return this.finishNode(node, \"EnumNumberBody\");\n          } else {\n            this.raise(FlowErrors.EnumInconsistentMemberValues, nameLoc, {\n              enumName,\n            });\n            return empty();\n          }\n        }\n      }\n    }\n\n    flowParseEnumDeclaration(\n      node: Undone<N.FlowEnumDeclaration>,\n    ): N.FlowEnumDeclaration {\n      const id = this.parseIdentifier();\n      node.id = id;\n      node.body = this.flowEnumBody(this.startNode(), id);\n      return this.finishNode(node, \"EnumDeclaration\");\n    }\n\n    jsxParseOpeningElementAfterName(\n      node: N.JSXOpeningElement,\n    ): N.JSXOpeningElement {\n      if (this.shouldParseTypes()) {\n        if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n          node.typeArguments =\n            this.flowParseTypeParameterInstantiationInExpression();\n        }\n      }\n\n      return super.jsxParseOpeningElementAfterName(node);\n    }\n\n    // check if the next token is a tt.lt\n    isLookaheadToken_lt(): boolean {\n      const next = this.nextTokenStart();\n      if (this.input.charCodeAt(next) === charCodes.lessThan) {\n        const afterNext = this.input.charCodeAt(next + 1);\n        return (\n          afterNext !== charCodes.lessThan && afterNext !== charCodes.equalsTo\n        );\n      }\n      return false;\n    }\n\n    // used after we have finished parsing types\n    reScan_lt_gt() {\n      const { type } = this.state;\n      if (type === tt.lt) {\n        this.state.pos -= 1;\n        this.readToken_lt();\n      } else if (type === tt.gt) {\n        this.state.pos -= 1;\n        this.readToken_gt();\n      }\n    }\n\n    reScan_lt() {\n      const { type } = this.state;\n      if (type === tt.bitShiftL) {\n        this.state.pos -= 2;\n        this.finishOp(tt.lt, 1);\n        return tt.lt;\n      }\n      return type;\n    }\n\n    maybeUnwrapTypeCastExpression(node: N.Node) {\n      return node.type === \"TypeCastExpression\" ? node.expression : node;\n    }\n  };\n","const entities: { [name: string]: string } = {\n  __proto__: null,\n  quot: \"\\u0022\",\n  amp: \"&\",\n  apos: \"\\u0027\",\n  lt: \"<\",\n  gt: \">\",\n  nbsp: \"\\u00A0\",\n  iexcl: \"\\u00A1\",\n  cent: \"\\u00A2\",\n  pound: \"\\u00A3\",\n  curren: \"\\u00A4\",\n  yen: \"\\u00A5\",\n  brvbar: \"\\u00A6\",\n  sect: \"\\u00A7\",\n  uml: \"\\u00A8\",\n  copy: \"\\u00A9\",\n  ordf: \"\\u00AA\",\n  laquo: \"\\u00AB\",\n  not: \"\\u00AC\",\n  shy: \"\\u00AD\",\n  reg: \"\\u00AE\",\n  macr: \"\\u00AF\",\n  deg: \"\\u00B0\",\n  plusmn: \"\\u00B1\",\n  sup2: \"\\u00B2\",\n  sup3: \"\\u00B3\",\n  acute: \"\\u00B4\",\n  micro: \"\\u00B5\",\n  para: \"\\u00B6\",\n  middot: \"\\u00B7\",\n  cedil: \"\\u00B8\",\n  sup1: \"\\u00B9\",\n  ordm: \"\\u00BA\",\n  raquo: \"\\u00BB\",\n  frac14: \"\\u00BC\",\n  frac12: \"\\u00BD\",\n  frac34: \"\\u00BE\",\n  iquest: \"\\u00BF\",\n  Agrave: \"\\u00C0\",\n  Aacute: \"\\u00C1\",\n  Acirc: \"\\u00C2\",\n  Atilde: \"\\u00C3\",\n  Auml: \"\\u00C4\",\n  Aring: \"\\u00C5\",\n  AElig: \"\\u00C6\",\n  Ccedil: \"\\u00C7\",\n  Egrave: \"\\u00C8\",\n  Eacute: \"\\u00C9\",\n  Ecirc: \"\\u00CA\",\n  Euml: \"\\u00CB\",\n  Igrave: \"\\u00CC\",\n  Iacute: \"\\u00CD\",\n  Icirc: \"\\u00CE\",\n  Iuml: \"\\u00CF\",\n  ETH: \"\\u00D0\",\n  Ntilde: \"\\u00D1\",\n  Ograve: \"\\u00D2\",\n  Oacute: \"\\u00D3\",\n  Ocirc: \"\\u00D4\",\n  Otilde: \"\\u00D5\",\n  Ouml: \"\\u00D6\",\n  times: \"\\u00D7\",\n  Oslash: \"\\u00D8\",\n  Ugrave: \"\\u00D9\",\n  Uacute: \"\\u00DA\",\n  Ucirc: \"\\u00DB\",\n  Uuml: \"\\u00DC\",\n  Yacute: \"\\u00DD\",\n  THORN: \"\\u00DE\",\n  szlig: \"\\u00DF\",\n  agrave: \"\\u00E0\",\n  aacute: \"\\u00E1\",\n  acirc: \"\\u00E2\",\n  atilde: \"\\u00E3\",\n  auml: \"\\u00E4\",\n  aring: \"\\u00E5\",\n  aelig: \"\\u00E6\",\n  ccedil: \"\\u00E7\",\n  egrave: \"\\u00E8\",\n  eacute: \"\\u00E9\",\n  ecirc: \"\\u00EA\",\n  euml: \"\\u00EB\",\n  igrave: \"\\u00EC\",\n  iacute: \"\\u00ED\",\n  icirc: \"\\u00EE\",\n  iuml: \"\\u00EF\",\n  eth: \"\\u00F0\",\n  ntilde: \"\\u00F1\",\n  ograve: \"\\u00F2\",\n  oacute: \"\\u00F3\",\n  ocirc: \"\\u00F4\",\n  otilde: \"\\u00F5\",\n  ouml: \"\\u00F6\",\n  divide: \"\\u00F7\",\n  oslash: \"\\u00F8\",\n  ugrave: \"\\u00F9\",\n  uacute: \"\\u00FA\",\n  ucirc: \"\\u00FB\",\n  uuml: \"\\u00FC\",\n  yacute: \"\\u00FD\",\n  thorn: \"\\u00FE\",\n  yuml: \"\\u00FF\",\n  OElig: \"\\u0152\",\n  oelig: \"\\u0153\",\n  Scaron: \"\\u0160\",\n  scaron: \"\\u0161\",\n  Yuml: \"\\u0178\",\n  fnof: \"\\u0192\",\n  circ: \"\\u02C6\",\n  tilde: \"\\u02DC\",\n  Alpha: \"\\u0391\",\n  Beta: \"\\u0392\",\n  Gamma: \"\\u0393\",\n  Delta: \"\\u0394\",\n  Epsilon: \"\\u0395\",\n  Zeta: \"\\u0396\",\n  Eta: \"\\u0397\",\n  Theta: \"\\u0398\",\n  Iota: \"\\u0399\",\n  Kappa: \"\\u039A\",\n  Lambda: \"\\u039B\",\n  Mu: \"\\u039C\",\n  Nu: \"\\u039D\",\n  Xi: \"\\u039E\",\n  Omicron: \"\\u039F\",\n  Pi: \"\\u03A0\",\n  Rho: \"\\u03A1\",\n  Sigma: \"\\u03A3\",\n  Tau: \"\\u03A4\",\n  Upsilon: \"\\u03A5\",\n  Phi: \"\\u03A6\",\n  Chi: \"\\u03A7\",\n  Psi: \"\\u03A8\",\n  Omega: \"\\u03A9\",\n  alpha: \"\\u03B1\",\n  beta: \"\\u03B2\",\n  gamma: \"\\u03B3\",\n  delta: \"\\u03B4\",\n  epsilon: \"\\u03B5\",\n  zeta: \"\\u03B6\",\n  eta: \"\\u03B7\",\n  theta: \"\\u03B8\",\n  iota: \"\\u03B9\",\n  kappa: \"\\u03BA\",\n  lambda: \"\\u03BB\",\n  mu: \"\\u03BC\",\n  nu: \"\\u03BD\",\n  xi: \"\\u03BE\",\n  omicron: \"\\u03BF\",\n  pi: \"\\u03C0\",\n  rho: \"\\u03C1\",\n  sigmaf: \"\\u03C2\",\n  sigma: \"\\u03C3\",\n  tau: \"\\u03C4\",\n  upsilon: \"\\u03C5\",\n  phi: \"\\u03C6\",\n  chi: \"\\u03C7\",\n  psi: \"\\u03C8\",\n  omega: \"\\u03C9\",\n  thetasym: \"\\u03D1\",\n  upsih: \"\\u03D2\",\n  piv: \"\\u03D6\",\n  ensp: \"\\u2002\",\n  emsp: \"\\u2003\",\n  thinsp: \"\\u2009\",\n  zwnj: \"\\u200C\",\n  zwj: \"\\u200D\",\n  lrm: \"\\u200E\",\n  rlm: \"\\u200F\",\n  ndash: \"\\u2013\",\n  mdash: \"\\u2014\",\n  lsquo: \"\\u2018\",\n  rsquo: \"\\u2019\",\n  sbquo: \"\\u201A\",\n  ldquo: \"\\u201C\",\n  rdquo: \"\\u201D\",\n  bdquo: \"\\u201E\",\n  dagger: \"\\u2020\",\n  Dagger: \"\\u2021\",\n  bull: \"\\u2022\",\n  hellip: \"\\u2026\",\n  permil: \"\\u2030\",\n  prime: \"\\u2032\",\n  Prime: \"\\u2033\",\n  lsaquo: \"\\u2039\",\n  rsaquo: \"\\u203A\",\n  oline: \"\\u203E\",\n  frasl: \"\\u2044\",\n  euro: \"\\u20AC\",\n  image: \"\\u2111\",\n  weierp: \"\\u2118\",\n  real: \"\\u211C\",\n  trade: \"\\u2122\",\n  alefsym: \"\\u2135\",\n  larr: \"\\u2190\",\n  uarr: \"\\u2191\",\n  rarr: \"\\u2192\",\n  darr: \"\\u2193\",\n  harr: \"\\u2194\",\n  crarr: \"\\u21B5\",\n  lArr: \"\\u21D0\",\n  uArr: \"\\u21D1\",\n  rArr: \"\\u21D2\",\n  dArr: \"\\u21D3\",\n  hArr: \"\\u21D4\",\n  forall: \"\\u2200\",\n  part: \"\\u2202\",\n  exist: \"\\u2203\",\n  empty: \"\\u2205\",\n  nabla: \"\\u2207\",\n  isin: \"\\u2208\",\n  notin: \"\\u2209\",\n  ni: \"\\u220B\",\n  prod: \"\\u220F\",\n  sum: \"\\u2211\",\n  minus: \"\\u2212\",\n  lowast: \"\\u2217\",\n  radic: \"\\u221A\",\n  prop: \"\\u221D\",\n  infin: \"\\u221E\",\n  ang: \"\\u2220\",\n  and: \"\\u2227\",\n  or: \"\\u2228\",\n  cap: \"\\u2229\",\n  cup: \"\\u222A\",\n  int: \"\\u222B\",\n  there4: \"\\u2234\",\n  sim: \"\\u223C\",\n  cong: \"\\u2245\",\n  asymp: \"\\u2248\",\n  ne: \"\\u2260\",\n  equiv: \"\\u2261\",\n  le: \"\\u2264\",\n  ge: \"\\u2265\",\n  sub: \"\\u2282\",\n  sup: \"\\u2283\",\n  nsub: \"\\u2284\",\n  sube: \"\\u2286\",\n  supe: \"\\u2287\",\n  oplus: \"\\u2295\",\n  otimes: \"\\u2297\",\n  perp: \"\\u22A5\",\n  sdot: \"\\u22C5\",\n  lceil: \"\\u2308\",\n  rceil: \"\\u2309\",\n  lfloor: \"\\u230A\",\n  rfloor: \"\\u230B\",\n  lang: \"\\u2329\",\n  rang: \"\\u232A\",\n  loz: \"\\u25CA\",\n  spades: \"\\u2660\",\n  clubs: \"\\u2663\",\n  hearts: \"\\u2665\",\n  diams: \"\\u2666\",\n} as const;\nexport default entities;\n","import * as charCodes from \"charcodes\";\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\nexport const lineBreak = /\\r\\n|[\\r\\n\\u2028\\u2029]/;\nexport const lineBreakG = new RegExp(lineBreak.source, \"g\");\n\n// https://tc39.github.io/ecma262/#sec-line-terminators\nexport function isNewLine(code: number): boolean {\n  switch (code) {\n    case charCodes.lineFeed:\n    case charCodes.carriageReturn:\n    case charCodes.lineSeparator:\n    case charCodes.paragraphSeparator:\n      return true;\n\n    default:\n      return false;\n  }\n}\n\nexport function hasNewLine(input: string, start: number, end: number): boolean {\n  for (let i = start; i < end; i++) {\n    if (isNewLine(input.charCodeAt(i))) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport const skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\nexport const skipWhiteSpaceInLine =\n  /(?:[^\\S\\n\\r\\u2028\\u2029]|\\/\\/.*|\\/\\*.*?\\*\\/)*/g;\n\n// https://tc39.github.io/ecma262/#sec-white-space\nexport function isWhitespace(code: number): boolean {\n  switch (code) {\n    case 0x0009: // CHARACTER TABULATION\n    case 0x000b: // LINE TABULATION\n    case 0x000c: // FORM FEED\n    case charCodes.space:\n    case charCodes.nonBreakingSpace:\n    case charCodes.oghamSpaceMark:\n    case 0x2000: // EN QUAD\n    case 0x2001: // EM QUAD\n    case 0x2002: // EN SPACE\n    case 0x2003: // EM SPACE\n    case 0x2004: // THREE-PER-EM SPACE\n    case 0x2005: // FOUR-PER-EM SPACE\n    case 0x2006: // SIX-PER-EM SPACE\n    case 0x2007: // FIGURE SPACE\n    case 0x2008: // PUNCTUATION SPACE\n    case 0x2009: // THIN SPACE\n    case 0x200a: // HAIR SPACE\n    case 0x202f: // NARROW NO-BREAK SPACE\n    case 0x205f: // MEDIUM MATHEMATICAL SPACE\n    case 0x3000: // IDEOGRAPHIC SPACE\n    case 0xfeff: // ZERO WIDTH NO-BREAK SPACE\n      return true;\n\n    default:\n      return false;\n  }\n}\n","import * as charCodes from \"charcodes\";\n\nimport XHTMLEntities from \"./xhtml.ts\";\nimport type Parser from \"../../parser/index.ts\";\nimport type { ExpressionErrors } from \"../../parser/util.ts\";\nimport {\n  tokenComesBeforeExpression,\n  tokenIsKeyword,\n  tokenLabelName,\n  type TokenType,\n  tt,\n} from \"../../tokenizer/types.ts\";\nimport type { TokContext } from \"../../tokenizer/context.ts\";\nimport { types as tc } from \"../../tokenizer/context.ts\";\nimport type * as N from \"../../types.ts\";\nimport { isIdentifierChar, isIdentifierStart } from \"../../util/identifier.ts\";\nimport type { Position } from \"../../util/location.ts\";\nimport { isNewLine } from \"../../util/whitespace.ts\";\nimport { Errors, ParseErrorEnum } from \"../../parse-error.ts\";\nimport type { Undone } from \"../../parser/node.ts\";\n\n/* eslint sort-keys: \"error\" */\nconst JsxErrors = ParseErrorEnum`jsx`({\n  AttributeIsEmpty:\n    \"JSX attributes must only be assigned a non-empty expression.\",\n  MissingClosingTagElement: ({ openingTagName }: { openingTagName: string }) =>\n    `Expected corresponding JSX closing tag for <${openingTagName}>.`,\n  MissingClosingTagFragment: \"Expected corresponding JSX closing tag for <>.\",\n  UnexpectedSequenceExpression:\n    \"Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?\",\n  // FIXME: Unify with Errors.UnexpectedToken\n  UnexpectedToken: ({\n    unexpected,\n    HTMLEntity,\n  }: {\n    unexpected: string;\n    HTMLEntity: string;\n  }) =>\n    `Unexpected token \\`${unexpected}\\`. Did you mean \\`${HTMLEntity}\\` or \\`{'${unexpected}'}\\`?`,\n  UnsupportedJsxValue:\n    \"JSX value should be either an expression or a quoted JSX text.\",\n  UnterminatedJsxContent: \"Unterminated JSX contents.\",\n  UnwrappedAdjacentJSXElements:\n    \"Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?\",\n});\n\n/* eslint-disable sort-keys */\n\nfunction isFragment(object?: N.JSXTag | null): object is N.JSXFragmentTag {\n  return object\n    ? object.type === \"JSXOpeningFragment\" ||\n        object.type === \"JSXClosingFragment\"\n    : false;\n}\n\n// Transforms JSX element name to string.\n\nfunction getQualifiedJSXName(\n  object: N.JSXIdentifier | N.JSXNamespacedName | N.JSXMemberExpression,\n): string {\n  if (object.type === \"JSXIdentifier\") {\n    return object.name;\n  }\n\n  if (object.type === \"JSXNamespacedName\") {\n    return object.namespace.name + \":\" + object.name.name;\n  }\n\n  if (object.type === \"JSXMemberExpression\") {\n    return (\n      getQualifiedJSXName(object.object) +\n      \".\" +\n      getQualifiedJSXName(object.property)\n    );\n  }\n\n  // istanbul ignore next\n  // @ts-expect-error - object is 'never'\n  throw new Error(\"Node had unexpected type: \" + object.type);\n}\n\nexport interface IJSXParserMixin {\n  jsxParseOpeningElementAfterName(\n    node: N.JSXOpeningElement,\n  ): N.JSXOpeningElement;\n}\n\nexport type ClassWithMixin<\n  T extends new (...args: any) => any,\n  M extends object,\n> = T extends new (...args: infer P) => infer I\n  ? new (...args: P) => I & M\n  : never;\n\nexport default (superClass: typeof Parser) =>\n  class JSXParserMixin extends superClass implements Parser, IJSXParserMixin {\n    // Reads inline JSX contents token.\n\n    jsxReadToken(): void {\n      let out = \"\";\n      let chunkStart = this.state.pos;\n      for (;;) {\n        if (this.state.pos >= this.length) {\n          throw this.raise(\n            JsxErrors.UnterminatedJsxContent,\n            this.state.startLoc,\n          );\n        }\n\n        const ch = this.input.charCodeAt(this.state.pos);\n\n        switch (ch) {\n          case charCodes.lessThan:\n          case charCodes.leftCurlyBrace:\n            if (this.state.pos === this.state.start) {\n              if (ch === charCodes.lessThan && this.state.canStartJSXElement) {\n                ++this.state.pos;\n                this.finishToken(tt.jsxTagStart);\n              } else {\n                super.getTokenFromCode(ch);\n              }\n              return;\n            }\n            out += this.input.slice(chunkStart, this.state.pos);\n            this.finishToken(tt.jsxText, out);\n            return;\n\n          case charCodes.ampersand:\n            out += this.input.slice(chunkStart, this.state.pos);\n            out += this.jsxReadEntity();\n            chunkStart = this.state.pos;\n            break;\n\n          case charCodes.greaterThan:\n          case charCodes.rightCurlyBrace:\n            if (process.env.BABEL_8_BREAKING) {\n              this.raise(JsxErrors.UnexpectedToken, this.state.curPosition(), {\n                unexpected: this.input[this.state.pos],\n                HTMLEntity:\n                  ch === charCodes.rightCurlyBrace ? \"&rbrace;\" : \"&gt;\",\n              });\n            }\n          /* falls through */\n\n          default:\n            if (isNewLine(ch)) {\n              out += this.input.slice(chunkStart, this.state.pos);\n              out += this.jsxReadNewLine(true);\n              chunkStart = this.state.pos;\n            } else {\n              ++this.state.pos;\n            }\n        }\n      }\n    }\n\n    jsxReadNewLine(normalizeCRLF: boolean): string {\n      const ch = this.input.charCodeAt(this.state.pos);\n      let out;\n      ++this.state.pos;\n      if (\n        ch === charCodes.carriageReturn &&\n        this.input.charCodeAt(this.state.pos) === charCodes.lineFeed\n      ) {\n        ++this.state.pos;\n        out = normalizeCRLF ? \"\\n\" : \"\\r\\n\";\n      } else {\n        out = String.fromCharCode(ch);\n      }\n      ++this.state.curLine;\n      this.state.lineStart = this.state.pos;\n\n      return out;\n    }\n\n    jsxReadString(quote: number): void {\n      let out = \"\";\n      let chunkStart = ++this.state.pos;\n      for (;;) {\n        if (this.state.pos >= this.length) {\n          throw this.raise(Errors.UnterminatedString, this.state.startLoc);\n        }\n\n        const ch = this.input.charCodeAt(this.state.pos);\n        if (ch === quote) break;\n        if (ch === charCodes.ampersand) {\n          out += this.input.slice(chunkStart, this.state.pos);\n          out += this.jsxReadEntity();\n          chunkStart = this.state.pos;\n        } else if (isNewLine(ch)) {\n          out += this.input.slice(chunkStart, this.state.pos);\n          out += this.jsxReadNewLine(false);\n          chunkStart = this.state.pos;\n        } else {\n          ++this.state.pos;\n        }\n      }\n      out += this.input.slice(chunkStart, this.state.pos++);\n      this.finishToken(tt.string, out);\n    }\n\n    jsxReadEntity(): string {\n      const startPos = ++this.state.pos;\n      if (this.codePointAtPos(this.state.pos) === charCodes.numberSign) {\n        ++this.state.pos;\n\n        let radix = 10;\n        if (this.codePointAtPos(this.state.pos) === charCodes.lowercaseX) {\n          radix = 16;\n          ++this.state.pos;\n        }\n\n        const codePoint = this.readInt(\n          radix,\n          /* len */ undefined,\n          /* forceLen */ false,\n          /* allowNumSeparator */ \"bail\",\n        );\n        if (\n          codePoint !== null &&\n          this.codePointAtPos(this.state.pos) === charCodes.semicolon\n        ) {\n          ++this.state.pos;\n          return String.fromCodePoint(codePoint);\n        }\n      } else {\n        let count = 0;\n        let semi = false;\n        while (\n          count++ < 10 &&\n          this.state.pos < this.length &&\n          !(semi = this.codePointAtPos(this.state.pos) === charCodes.semicolon)\n        ) {\n          ++this.state.pos;\n        }\n\n        if (semi) {\n          const desc = this.input.slice(startPos, this.state.pos);\n          const entity = XHTMLEntities[desc];\n          ++this.state.pos;\n\n          if (entity) {\n            return entity;\n          }\n        }\n      }\n\n      // Not a valid entity\n      this.state.pos = startPos;\n      return \"&\";\n    }\n\n    // Read a JSX identifier (valid tag or attribute name).\n    //\n    // Optimized version since JSX identifiers can\"t contain\n    // escape characters and so can be read as single slice.\n    // Also assumes that first character was already checked\n    // by isIdentifierStart in readToken.\n\n    jsxReadWord(): void {\n      let ch;\n      const start = this.state.pos;\n      do {\n        ch = this.input.charCodeAt(++this.state.pos);\n      } while (isIdentifierChar(ch) || ch === charCodes.dash);\n      this.finishToken(tt.jsxName, this.input.slice(start, this.state.pos));\n    }\n\n    // Parse next token as JSX identifier\n\n    jsxParseIdentifier(): N.JSXIdentifier {\n      const node = this.startNode<N.JSXIdentifier>();\n      if (this.match(tt.jsxName)) {\n        node.name = this.state.value;\n      } else if (tokenIsKeyword(this.state.type)) {\n        node.name = tokenLabelName(this.state.type);\n      } else {\n        this.unexpected();\n      }\n      this.next();\n      return this.finishNode(node, \"JSXIdentifier\");\n    }\n\n    // Parse namespaced identifier.\n\n    jsxParseNamespacedName(): N.JSXNamespacedName | N.JSXIdentifier {\n      const startLoc = this.state.startLoc;\n      const name = this.jsxParseIdentifier();\n      if (!this.eat(tt.colon)) return name;\n\n      const node = this.startNodeAt<N.JSXNamespacedName>(startLoc);\n      node.namespace = name;\n      node.name = this.jsxParseIdentifier();\n      return this.finishNode(node, \"JSXNamespacedName\");\n    }\n\n    // Parses element name in any form - namespaced, member\n    // or single identifier.\n\n    jsxParseElementName():\n      | N.JSXIdentifier\n      | N.JSXNamespacedName\n      | N.JSXMemberExpression {\n      const startLoc = this.state.startLoc;\n      let node: N.JSXIdentifier | N.JSXNamespacedName | N.JSXMemberExpression =\n        this.jsxParseNamespacedName();\n      if (node.type === \"JSXNamespacedName\") {\n        return node;\n      }\n      while (this.eat(tt.dot)) {\n        const newNode = this.startNodeAt<N.JSXMemberExpression>(startLoc);\n        newNode.object = node;\n        newNode.property = this.jsxParseIdentifier();\n        node = this.finishNode(newNode, \"JSXMemberExpression\");\n      }\n      return node;\n    }\n\n    // Parses any type of JSX attribute value.\n\n    jsxParseAttributeValue():\n      | N.JSXExpressionContainer\n      | N.JSXElement\n      | N.StringLiteral {\n      let node;\n      switch (this.state.type) {\n        case tt.braceL:\n          node = this.startNode();\n          this.setContext(tc.brace);\n          this.next();\n          node = this.jsxParseExpressionContainer(node, tc.j_oTag);\n          if (node.expression.type === \"JSXEmptyExpression\") {\n            this.raise(JsxErrors.AttributeIsEmpty, node);\n          }\n          return node;\n\n        case tt.jsxTagStart:\n        case tt.string:\n          return this.parseExprAtom() as N.JSXElement | N.StringLiteral;\n\n        default:\n          throw this.raise(JsxErrors.UnsupportedJsxValue, this.state.startLoc);\n      }\n    }\n\n    // JSXEmptyExpression is unique type since it doesn't actually parse anything,\n    // and so it should start at the end of last read token (left brace) and finish\n    // at the beginning of the next one (right brace).\n\n    jsxParseEmptyExpression(): N.JSXEmptyExpression {\n      const node = this.startNodeAt(this.state.lastTokEndLoc);\n      return this.finishNodeAt(node, \"JSXEmptyExpression\", this.state.startLoc);\n    }\n\n    // Parse JSX spread child\n\n    jsxParseSpreadChild(node: Undone<N.JSXSpreadChild>): N.JSXSpreadChild {\n      this.next(); // ellipsis\n      node.expression = this.parseExpression();\n      this.setContext(tc.j_expr);\n      this.state.canStartJSXElement = true;\n      this.expect(tt.braceR);\n\n      return this.finishNode(node, \"JSXSpreadChild\");\n    }\n\n    // Parses JSX expression enclosed into curly brackets.\n\n    jsxParseExpressionContainer(\n      node: Undone<N.JSXExpressionContainer>,\n      previousContext: TokContext,\n    ): N.JSXExpressionContainer {\n      if (this.match(tt.braceR)) {\n        node.expression = this.jsxParseEmptyExpression();\n      } else {\n        const expression = this.parseExpression();\n\n        if (process.env.BABEL_8_BREAKING) {\n          if (\n            expression.type === \"SequenceExpression\" &&\n            !expression.extra?.parenthesized\n          ) {\n            this.raise(\n              JsxErrors.UnexpectedSequenceExpression,\n              expression.expressions[1],\n            );\n          }\n        }\n\n        node.expression = expression;\n      }\n      this.setContext(previousContext);\n      this.state.canStartJSXElement = true;\n      this.expect(tt.braceR);\n\n      return this.finishNode(node, \"JSXExpressionContainer\");\n    }\n\n    // Parses following JSX attribute name-value pair.\n\n    jsxParseAttribute(): N.JSXAttribute | N.JSXSpreadAttribute {\n      const node = this.startNode<N.JSXAttribute | N.JSXSpreadAttribute>();\n      if (this.match(tt.braceL)) {\n        this.setContext(tc.brace);\n        this.next();\n        this.expect(tt.ellipsis);\n        node.argument = this.parseMaybeAssignAllowIn();\n        this.setContext(tc.j_oTag);\n        this.state.canStartJSXElement = true;\n        this.expect(tt.braceR);\n        return this.finishNode(node, \"JSXSpreadAttribute\");\n      }\n      node.name = this.jsxParseNamespacedName();\n      node.value = this.eat(tt.eq) ? this.jsxParseAttributeValue() : null;\n      return this.finishNode(node, \"JSXAttribute\");\n    }\n\n    // Parses JSX opening tag starting after \"<\".\n\n    jsxParseOpeningElementAt(\n      startLoc: Position,\n    ): N.JSXOpeningElement | N.JSXOpeningFragment {\n      const node = this.startNodeAt<N.JSXOpeningElement | N.JSXOpeningFragment>(\n        startLoc,\n      );\n      if (this.eat(tt.jsxTagEnd)) {\n        return this.finishNode(node, \"JSXOpeningFragment\");\n      }\n      node.name = this.jsxParseElementName();\n      return this.jsxParseOpeningElementAfterName(\n        node as Undone<N.JSXOpeningElement>,\n      );\n    }\n\n    jsxParseOpeningElementAfterName(\n      node: Undone<N.JSXOpeningElement>,\n    ): N.JSXOpeningElement {\n      const attributes: (N.JSXAttribute | N.JSXSpreadAttribute)[] = [];\n      while (!this.match(tt.slash) && !this.match(tt.jsxTagEnd)) {\n        attributes.push(this.jsxParseAttribute());\n      }\n      node.attributes = attributes;\n      node.selfClosing = this.eat(tt.slash);\n      this.expect(tt.jsxTagEnd);\n      return this.finishNode(node, \"JSXOpeningElement\");\n    }\n\n    // Parses JSX closing tag starting after \"</\".\n\n    jsxParseClosingElementAt(\n      startLoc: Position,\n    ): N.JSXClosingElement | N.JSXClosingFragment {\n      const node = this.startNodeAt<N.JSXClosingFragment | N.JSXClosingElement>(\n        startLoc,\n      );\n      if (this.eat(tt.jsxTagEnd)) {\n        return this.finishNode(node, \"JSXClosingFragment\");\n      }\n      node.name = this.jsxParseElementName();\n      this.expect(tt.jsxTagEnd);\n      return this.finishNode(node, \"JSXClosingElement\");\n    }\n\n    // Parses entire JSX element, including it\"s opening tag\n    // (starting after \"<\"), attributes, contents and closing tag.\n\n    jsxParseElementAt(startLoc: Position): N.JSXElement | N.JSXFragment {\n      const node = this.startNodeAt<N.JSXElement | N.JSXFragment>(startLoc);\n      const children = [];\n      const openingElement = this.jsxParseOpeningElementAt(startLoc);\n      let closingElement = null;\n\n      if (!openingElement.selfClosing) {\n        contents: for (;;) {\n          switch (this.state.type) {\n            case tt.jsxTagStart:\n              startLoc = this.state.startLoc;\n              this.next();\n              if (this.eat(tt.slash)) {\n                closingElement = this.jsxParseClosingElementAt(startLoc);\n                break contents;\n              }\n              children.push(this.jsxParseElementAt(startLoc));\n              break;\n\n            case tt.jsxText:\n              children.push(this.parseLiteral(this.state.value, \"JSXText\"));\n              break;\n\n            case tt.braceL: {\n              const node = this.startNode<\n                N.JSXSpreadChild | N.JSXExpressionContainer\n              >();\n              this.setContext(tc.brace);\n              this.next();\n              if (this.match(tt.ellipsis)) {\n                children.push(this.jsxParseSpreadChild(node));\n              } else {\n                children.push(\n                  this.jsxParseExpressionContainer(node, tc.j_expr),\n                );\n              }\n\n              break;\n            }\n            // istanbul ignore next - should never happen\n            default:\n              this.unexpected();\n          }\n        }\n\n        if (\n          isFragment(openingElement) &&\n          !isFragment(closingElement) &&\n          closingElement !== null\n        ) {\n          this.raise(JsxErrors.MissingClosingTagFragment, closingElement);\n        } else if (!isFragment(openingElement) && isFragment(closingElement)) {\n          this.raise(JsxErrors.MissingClosingTagElement, closingElement, {\n            openingTagName: getQualifiedJSXName(openingElement.name),\n          });\n        } else if (!isFragment(openingElement) && !isFragment(closingElement)) {\n          if (\n            getQualifiedJSXName(closingElement.name) !==\n            getQualifiedJSXName(openingElement.name)\n          ) {\n            this.raise(JsxErrors.MissingClosingTagElement, closingElement, {\n              openingTagName: getQualifiedJSXName(openingElement.name),\n            });\n          }\n        }\n      }\n\n      if (isFragment(openingElement)) {\n        node.openingFragment = openingElement;\n        node.closingFragment = closingElement;\n      } else {\n        node.openingElement = openingElement;\n        node.closingElement = closingElement;\n      }\n      node.children = children;\n      if (this.match(tt.lt)) {\n        throw this.raise(\n          JsxErrors.UnwrappedAdjacentJSXElements,\n          this.state.startLoc,\n        );\n      }\n\n      return isFragment(openingElement)\n        ? this.finishNode(node, \"JSXFragment\")\n        : this.finishNode(node, \"JSXElement\");\n    }\n\n    // Parses entire JSX element from current position.\n\n    jsxParseElement(): N.JSXElement | N.JSXFragment {\n      const startLoc = this.state.startLoc;\n      this.next();\n      return this.jsxParseElementAt(startLoc);\n    }\n\n    setContext(newContext: TokContext) {\n      const { context } = this.state;\n      context[context.length - 1] = newContext;\n    }\n\n    // ==================================\n    // Overrides\n    // ==================================\n\n    parseExprAtom(refExpressionErrors?: ExpressionErrors | null): N.Expression {\n      if (this.match(tt.jsxTagStart)) {\n        return this.jsxParseElement();\n      } else if (\n        this.match(tt.lt) &&\n        this.input.charCodeAt(this.state.pos) !== charCodes.exclamationMark\n      ) {\n        // In case we encounter an lt token here it will always be the start of\n        // jsx as the lt sign is not allowed in places that expect an expression\n        this.replaceToken(tt.jsxTagStart);\n        return this.jsxParseElement();\n      } else {\n        return super.parseExprAtom(refExpressionErrors);\n      }\n    }\n\n    skipSpace() {\n      const curContext = this.curContext();\n      if (!curContext.preserveSpace) super.skipSpace();\n    }\n\n    getTokenFromCode(code: number): void {\n      const context = this.curContext();\n\n      if (context === tc.j_expr) {\n        this.jsxReadToken();\n        return;\n      }\n\n      if (context === tc.j_oTag || context === tc.j_cTag) {\n        if (isIdentifierStart(code)) {\n          this.jsxReadWord();\n          return;\n        }\n\n        if (code === charCodes.greaterThan) {\n          ++this.state.pos;\n          this.finishToken(tt.jsxTagEnd);\n          return;\n        }\n\n        if (\n          (code === charCodes.quotationMark || code === charCodes.apostrophe) &&\n          context === tc.j_oTag\n        ) {\n          this.jsxReadString(code);\n          return;\n        }\n      }\n\n      if (\n        code === charCodes.lessThan &&\n        this.state.canStartJSXElement &&\n        this.input.charCodeAt(this.state.pos + 1) !== charCodes.exclamationMark\n      ) {\n        ++this.state.pos;\n        this.finishToken(tt.jsxTagStart);\n        return;\n      }\n\n      super.getTokenFromCode(code);\n    }\n\n    updateContext(prevType: TokenType): void {\n      const { context, type } = this.state;\n      if (type === tt.slash && prevType === tt.jsxTagStart) {\n        // do not consider JSX expr -> JSX open tag -> ... anymore\n        // reconsider as closing tag context\n        context.splice(-2, 2, tc.j_cTag);\n        this.state.canStartJSXElement = false;\n      } else if (type === tt.jsxTagStart) {\n        // start opening tag context\n        context.push(tc.j_oTag);\n      } else if (type === tt.jsxTagEnd) {\n        const out = context[context.length - 1];\n        if ((out === tc.j_oTag && prevType === tt.slash) || out === tc.j_cTag) {\n          context.pop();\n          this.state.canStartJSXElement =\n            context[context.length - 1] === tc.j_expr;\n        } else {\n          this.setContext(tc.j_expr);\n          this.state.canStartJSXElement = true;\n        }\n      } else {\n        this.state.canStartJSXElement = tokenComesBeforeExpression(type);\n      }\n    }\n  };\n","import type { Position } from \"../../util/location.ts\";\nimport ScopeHandler, { NameType, Scope } from \"../../util/scope.ts\";\nimport { BindingFlag, ScopeFlag } from \"../../util/scopeflags.ts\";\nimport type * as N from \"../../types.ts\";\nimport { Errors } from \"../../parse-error.ts\";\n\nconst enum TsNameType {\n  Types = 1 << 0,\n  // enums (which are also in .types)\n  Enums = 1 << 1,\n  // const enums (which are also in .enums and .types)\n  ConstEnums = 1 << 2,\n  // classes (which are also in .lexical) and interface (which are also in .types)\n  Classes = 1 << 3,\n  // namespaces and ambient functions (or classes) are too difficult to track,\n  // especially without type analysis.\n  // We need to track them anyway, to avoid \"X is not defined\" errors\n  // when exporting them.\n  ExportOnlyBindings = 1 << 4,\n}\n\nclass TypeScriptScope extends Scope {\n  tsNames: Map<string, TsNameType> = new Map();\n}\n\n// See https://github.com/babel/babel/pull/9766#discussion_r268920730 for an\n// explanation of how typescript handles scope.\n\nexport default class TypeScriptScopeHandler extends ScopeHandler<TypeScriptScope> {\n  importsStack: Set<string>[] = [];\n\n  createScope(flags: ScopeFlag): TypeScriptScope {\n    this.importsStack.push(new Set()); // Always keep the top-level scope for export checks.\n\n    return new TypeScriptScope(flags);\n  }\n\n  enter(flags: ScopeFlag): void {\n    if (flags === ScopeFlag.TS_MODULE) {\n      this.importsStack.push(new Set());\n    }\n\n    super.enter(flags);\n  }\n\n  exit() {\n    const flags = super.exit();\n\n    if (flags === ScopeFlag.TS_MODULE) {\n      this.importsStack.pop();\n    }\n\n    return flags;\n  }\n\n  hasImport(name: string, allowShadow?: boolean) {\n    const len = this.importsStack.length;\n    if (this.importsStack[len - 1].has(name)) {\n      return true;\n    }\n    if (!allowShadow && len > 1) {\n      for (let i = 0; i < len - 1; i++) {\n        if (this.importsStack[i].has(name)) return true;\n      }\n    }\n    return false;\n  }\n\n  declareName(name: string, bindingType: BindingFlag, loc: Position) {\n    if (bindingType & BindingFlag.FLAG_TS_IMPORT) {\n      if (this.hasImport(name, true)) {\n        this.parser.raise(Errors.VarRedeclaration, loc, {\n          identifierName: name,\n        });\n      }\n      this.importsStack[this.importsStack.length - 1].add(name);\n      return;\n    }\n\n    const scope = this.currentScope();\n    let type = scope.tsNames.get(name) || 0;\n\n    if (bindingType & BindingFlag.FLAG_TS_EXPORT_ONLY) {\n      this.maybeExportDefined(scope, name);\n      scope.tsNames.set(name, type | TsNameType.ExportOnlyBindings);\n      return;\n    }\n\n    super.declareName(name, bindingType, loc);\n\n    if (bindingType & BindingFlag.KIND_TYPE) {\n      if (!(bindingType & BindingFlag.KIND_VALUE)) {\n        // \"Value\" bindings have already been registered by the superclass.\n        this.checkRedeclarationInScope(scope, name, bindingType, loc);\n        this.maybeExportDefined(scope, name);\n      }\n      type = type | TsNameType.Types;\n    }\n    if (bindingType & BindingFlag.FLAG_TS_ENUM) {\n      type = type | TsNameType.Enums;\n    }\n    if (bindingType & BindingFlag.FLAG_TS_CONST_ENUM) {\n      type = type | TsNameType.ConstEnums;\n    }\n    if (bindingType & BindingFlag.FLAG_CLASS) {\n      type = type | TsNameType.Classes;\n    }\n    if (type) scope.tsNames.set(name, type);\n  }\n\n  isRedeclaredInScope(\n    scope: TypeScriptScope,\n    name: string,\n    bindingType: BindingFlag,\n  ): boolean {\n    const type = scope.tsNames.get(name);\n    if ((type & TsNameType.Enums) > 0) {\n      if (bindingType & BindingFlag.FLAG_TS_ENUM) {\n        // Enums can be merged with other enums if they are both\n        //  const or both non-const.\n        const isConst = !!(bindingType & BindingFlag.FLAG_TS_CONST_ENUM);\n        const wasConst = (type & TsNameType.ConstEnums) > 0;\n        return isConst !== wasConst;\n      }\n      return true;\n    }\n    if (\n      bindingType & BindingFlag.FLAG_CLASS &&\n      (type & TsNameType.Classes) > 0\n    ) {\n      if (scope.names.get(name) & NameType.Lexical) {\n        // Classes can be merged with interfaces\n        return !!(bindingType & BindingFlag.KIND_VALUE);\n      } else {\n        // Interface can be merged with other classes or interfaces\n        return false;\n      }\n    }\n    if (bindingType & BindingFlag.KIND_TYPE && (type & TsNameType.Types) > 0) {\n      return true;\n    }\n\n    return super.isRedeclaredInScope(scope, name, bindingType);\n  }\n\n  checkLocalExport(id: N.Identifier) {\n    const { name } = id;\n\n    if (this.hasImport(name)) return;\n\n    const len = this.scopeStack.length;\n    for (let i = len - 1; i >= 0; i--) {\n      const scope = this.scopeStack[i];\n      const type = scope.tsNames.get(name);\n      if (\n        (type & TsNameType.Types) > 0 ||\n        (type & TsNameType.ExportOnlyBindings) > 0\n      ) {\n        return;\n      }\n    }\n\n    super.checkLocalExport(id);\n  }\n}\n","// ProductionParameterHandler is a stack fashioned production parameter tracker\n// https://tc39.es/ecma262/#sec-grammar-notation\n// The tracked parameters are defined above.\n//\n// Whenever [+Await]/[+Yield] appears in the right-hand sides of a production,\n// we must enter a new tracking stack. For example when parsing\n//\n// AsyncFunctionDeclaration [Yield, Await]:\n//   async [no LineTerminator here] function BindingIdentifier[?Yield, ?Await]\n//     ( FormalParameters[~Yield, +Await] ) { AsyncFunctionBody }\n//\n// we must follow such process:\n//\n// 1. parse async keyword\n// 2. parse function keyword\n// 3. parse bindingIdentifier <= inherit current parameters: [?Await]\n// 4. enter new stack with (PARAM_AWAIT)\n// 5. parse formal parameters <= must have [Await] parameter [+Await]\n// 6. parse function body\n// 7. exit current stack\n\nexport const enum ParamKind {\n  // Initial Parameter flags\n  PARAM = 0b0000,\n  // track [Yield] production parameter\n  PARAM_YIELD = 0b0001,\n  // track [Await] production parameter\n  PARAM_AWAIT = 0b0010,\n  // track [Return] production parameter\n  PARAM_RETURN = 0b0100,\n  // track [In] production parameter\n  PARAM_IN = 0b1000,\n}\n\n// todo(flow->ts) - check if more granular type can be used,\n//  type below is not good because things like PARAM_AWAIT|PARAM_YIELD are not included\n// export type ParamKind =\n//   | typeof PARAM\n//   | typeof PARAM_AWAIT\n//   | typeof PARAM_IN\n//   | typeof PARAM_RETURN\n//   | typeof PARAM_YIELD;\n\nexport default class ProductionParameterHandler {\n  stacks: Array<ParamKind> = [];\n  enter(flags: ParamKind) {\n    this.stacks.push(flags);\n  }\n\n  exit() {\n    this.stacks.pop();\n  }\n\n  currentFlags(): ParamKind {\n    return this.stacks[this.stacks.length - 1];\n  }\n\n  get hasAwait(): boolean {\n    return (this.currentFlags() & ParamKind.PARAM_AWAIT) > 0;\n  }\n\n  get hasYield(): boolean {\n    return (this.currentFlags() & ParamKind.PARAM_YIELD) > 0;\n  }\n\n  get hasReturn(): boolean {\n    return (this.currentFlags() & ParamKind.PARAM_RETURN) > 0;\n  }\n\n  get hasIn(): boolean {\n    return (this.currentFlags() & ParamKind.PARAM_IN) > 0;\n  }\n}\n\nexport function functionFlags(\n  isAsync: boolean,\n  isGenerator: boolean,\n): ParamKind {\n  return (\n    (isAsync ? ParamKind.PARAM_AWAIT : 0) |\n    (isGenerator ? ParamKind.PARAM_YIELD : 0)\n  );\n}\n","import type { OptionFlags, Options } from \"../options.ts\";\nimport type State from \"../tokenizer/state.ts\";\nimport type { PluginsMap } from \"./index.ts\";\nimport type ScopeHandler from \"../util/scope.ts\";\nimport type ExpressionScopeHandler from \"../util/expression-scope.ts\";\nimport type ClassScopeHandler from \"../util/class-scope.ts\";\nimport type ProductionParameterHandler from \"../util/production-parameter.ts\";\nimport type {\n  ParserPluginWithOptions,\n  PluginConfig,\n  PluginOptions,\n} from \"../typings.ts\";\nimport type * as N from \"../types.ts\";\n\nexport default class BaseParser {\n  // Properties set by constructor in index.js\n  declare options: Options;\n  declare optionFlags: OptionFlags;\n  declare inModule: boolean;\n  declare scope: ScopeHandler<any>;\n  declare classScope: ClassScopeHandler;\n  declare prodParam: ProductionParameterHandler;\n  declare expressionScope: ExpressionScopeHandler;\n  declare plugins: PluginsMap;\n  declare filename: string | undefined | null;\n  declare startIndex: number;\n  // Names of exports store. `default` is stored as a name for both\n  // `export default foo;` and `export { foo as default };`.\n  declare exportedIdentifiers: Set<string>;\n  sawUnambiguousESM: boolean = false;\n  ambiguousScriptDifferentAst: boolean = false;\n\n  // Initialized by Tokenizer\n  declare state: State;\n  // input and length are not in state as they are constant and we do\n  // not want to ever copy them, which happens if state gets cloned\n  declare input: string;\n  declare length: number;\n  // Comment store for Program.comments\n  declare comments: Array<N.Comment>;\n\n  sourceToOffsetPos(sourcePos: number) {\n    return sourcePos + this.startIndex;\n  }\n\n  offsetToSourcePos(offsetPos: number) {\n    return offsetPos - this.startIndex;\n  }\n\n  // This method accepts either a string (plugin name) or an array pair\n  // (plugin name and options object). If an options object is given,\n  // then each value is non-recursively checked for identity with that\n  // plugin’s actual option value.\n  hasPlugin(pluginConfig: PluginConfig): boolean {\n    if (typeof pluginConfig === \"string\") {\n      return this.plugins.has(pluginConfig);\n    } else {\n      const [pluginName, pluginOptions] = pluginConfig;\n      if (!this.hasPlugin(pluginName)) {\n        return false;\n      }\n      const actualOptions = this.plugins.get(pluginName);\n      for (const key of Object.keys(\n        pluginOptions,\n      ) as (keyof typeof pluginOptions)[]) {\n        if (actualOptions?.[key] !== pluginOptions[key]) {\n          return false;\n        }\n      }\n      return true;\n    }\n  }\n\n  getPluginOption<\n    PluginName extends ParserPluginWithOptions[0],\n    OptionName extends keyof PluginOptions<PluginName>,\n  >(plugin: PluginName, name: OptionName) {\n    return (this.plugins.get(plugin) as null | PluginOptions<PluginName>)?.[\n      name\n    ];\n  }\n}\n","/*:: declare var invariant; */\n\nimport BaseParser from \"./base.ts\";\nimport type { Comment, Node } from \"../types.ts\";\nimport * as charCodes from \"charcodes\";\nimport type { Undone } from \"./node.ts\";\n\n/**\n * A whitespace token containing comments\n */\nexport type CommentWhitespace = {\n  /**\n   * the start of the whitespace token.\n   */\n  start: number;\n  /**\n   * the end of the whitespace token.\n   */\n  end: number;\n  /**\n   * the containing comments\n   */\n  comments: Array<Comment>;\n  /**\n   * the immediately preceding AST node of the whitespace token\n   */\n  leadingNode: Node | null;\n  /**\n   * the immediately following AST node of the whitespace token\n   */\n  trailingNode: Node | null;\n  /**\n   * the innermost AST node containing the whitespace with minimal size (|end - start|)\n   */\n  containingNode: Node | null;\n};\n\n/**\n * Merge comments with node's trailingComments or assign comments to be\n * trailingComments. New comments will be placed before old comments\n * because the commentStack is enumerated reversely.\n */\nfunction setTrailingComments(node: Undone<Node>, comments: Array<Comment>) {\n  if (node.trailingComments === undefined) {\n    node.trailingComments = comments;\n  } else {\n    node.trailingComments.unshift(...comments);\n  }\n}\n\n/**\n * Merge comments with node's leadingComments or assign comments to be\n * leadingComments. New comments will be placed before old comments\n * because the commentStack is enumerated reversely.\n */\nfunction setLeadingComments(node: Undone<Node>, comments: Array<Comment>) {\n  if (node.leadingComments === undefined) {\n    node.leadingComments = comments;\n  } else {\n    node.leadingComments.unshift(...comments);\n  }\n}\n\n/**\n * Merge comments with node's innerComments or assign comments to be\n * innerComments. New comments will be placed before old comments\n * because the commentStack is enumerated reversely.\n */\nexport function setInnerComments(\n  node: Undone<Node>,\n  comments?: Array<Comment>,\n) {\n  if (node.innerComments === undefined) {\n    node.innerComments = comments;\n  } else {\n    node.innerComments.unshift(...comments);\n  }\n}\n\n/**\n * Given node and elements array, if elements has non-null element,\n * merge comments to its trailingComments, otherwise merge comments\n * to node's innerComments\n */\nfunction adjustInnerComments(\n  node: Undone<Node>,\n  elements: Array<Node>,\n  commentWS: CommentWhitespace,\n) {\n  let lastElement = null;\n  let i = elements.length;\n  while (lastElement === null && i > 0) {\n    lastElement = elements[--i];\n  }\n  if (lastElement === null || lastElement.start > commentWS.start) {\n    setInnerComments(node, commentWS.comments);\n  } else {\n    setTrailingComments(lastElement, commentWS.comments);\n  }\n}\n\nexport default class CommentsParser extends BaseParser {\n  addComment(comment: Comment): void {\n    if (this.filename) comment.loc.filename = this.filename;\n    const { commentsLen } = this.state;\n    if (this.comments.length !== commentsLen) {\n      this.comments.length = commentsLen;\n    }\n    this.comments.push(comment);\n    this.state.commentsLen++;\n  }\n\n  /**\n   * Given a newly created AST node _n_, attach _n_ to a comment whitespace _w_ if applicable\n   * {@see {@link CommentWhitespace}}\n   */\n  processComment(node: Node): void {\n    const { commentStack } = this.state;\n    const commentStackLength = commentStack.length;\n    if (commentStackLength === 0) return;\n    let i = commentStackLength - 1;\n    const lastCommentWS = commentStack[i];\n\n    if (lastCommentWS.start === node.end) {\n      lastCommentWS.leadingNode = node;\n      i--;\n    }\n\n    const { start: nodeStart } = node;\n    // invariant: for all 0 <= j <= i, let c = commentStack[j], c must satisfy c.end < node.end\n    for (; i >= 0; i--) {\n      const commentWS = commentStack[i];\n      const commentEnd = commentWS.end;\n      if (commentEnd > nodeStart) {\n        // by definition of commentWhiteSpace, this implies commentWS.start > nodeStart\n        // so node can be a containingNode candidate. At this time we can finalize the comment\n        // whitespace, because\n        // 1) its leadingNode or trailingNode, if exists, will not change\n        // 2) its containingNode have been assigned and will not change because it is the\n        //    innermost minimal-sized AST node\n        commentWS.containingNode = node;\n        this.finalizeComment(commentWS);\n        commentStack.splice(i, 1);\n      } else {\n        if (commentEnd === nodeStart) {\n          commentWS.trailingNode = node;\n        }\n        // stop the loop when commentEnd <= nodeStart\n        break;\n      }\n    }\n  }\n\n  /**\n   * Assign the comments of comment whitespaces to related AST nodes.\n   * Also adjust innerComments following trailing comma.\n   */\n  finalizeComment(commentWS: CommentWhitespace) {\n    const { comments } = commentWS;\n    if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) {\n      if (commentWS.leadingNode !== null) {\n        setTrailingComments(commentWS.leadingNode, comments);\n      }\n      if (commentWS.trailingNode !== null) {\n        setLeadingComments(commentWS.trailingNode, comments);\n      }\n    } else {\n      /*:: invariant(commentWS.containingNode !== null) */\n      const { containingNode: node, start: commentStart } = commentWS;\n      if (\n        this.input.charCodeAt(this.offsetToSourcePos(commentStart) - 1) ===\n        charCodes.comma\n      ) {\n        // If a commentWhitespace follows a comma and the containingNode allows\n        // list structures with trailing comma, merge it to the trailingComment\n        // of the last non-null list element\n        switch (node.type) {\n          case \"ObjectExpression\":\n          case \"ObjectPattern\":\n          case \"RecordExpression\":\n            adjustInnerComments(node, node.properties, commentWS);\n            break;\n          case \"CallExpression\":\n          case \"OptionalCallExpression\":\n            adjustInnerComments(node, node.arguments, commentWS);\n            break;\n          case \"ImportExpression\":\n            adjustInnerComments(\n              node,\n              [node.source, node.options ?? null],\n              commentWS,\n            );\n            break;\n          case \"FunctionDeclaration\":\n          case \"FunctionExpression\":\n          case \"ArrowFunctionExpression\":\n          case \"ObjectMethod\":\n          case \"ClassMethod\":\n          case \"ClassPrivateMethod\":\n            adjustInnerComments(node, node.params, commentWS);\n            break;\n          case \"ArrayExpression\":\n          case \"ArrayPattern\":\n          case \"TupleExpression\":\n            adjustInnerComments(node, node.elements, commentWS);\n            break;\n          case \"ExportNamedDeclaration\":\n          case \"ImportDeclaration\":\n            adjustInnerComments(node, node.specifiers, commentWS);\n            break;\n          case \"TSEnumDeclaration\":\n            if (!process.env.BABEL_8_BREAKING) {\n              adjustInnerComments(node, node.members, commentWS);\n            } else {\n              setInnerComments(node, comments);\n            }\n            break;\n          case \"TSEnumBody\":\n            adjustInnerComments(node, node.members, commentWS);\n            break;\n          default: {\n            setInnerComments(node, comments);\n          }\n        }\n      } else {\n        setInnerComments(node, comments);\n      }\n    }\n  }\n\n  /**\n   * Drains remaining commentStack and applies finalizeComment\n   * to each comment whitespace. Used only in parseExpression\n   * where the top level AST node is _not_ Program\n   * {@see {@link CommentsParser#finalizeComment}}\n   */\n  finalizeRemainingComments() {\n    const { commentStack } = this.state;\n    for (let i = commentStack.length - 1; i >= 0; i--) {\n      this.finalizeComment(commentStack[i]);\n    }\n    this.state.commentStack = [];\n  }\n\n  /* eslint-disable no-irregular-whitespace */\n  /**\n   * Reset previous node trailing comments. Used in object / class\n   * property parsing. We parse `async`, `static`, `set` and `get`\n   * as an identifier but may reinterpret it into an async/static/accessor\n   * method later. In this case the identifier is not part of the AST and we\n   * should sync the knowledge to commentStacks\n   *\n   * For example, when parsing\n   * ```\n   * async /* 1 *​/ function f() {}\n   * ```\n   * the comment whitespace `/* 1 *​/` has leading node Identifier(async). When\n   * we see the function token, we create a Function node and mark `/* 1 *​/` as\n   * inner comments. So `/* 1 *​/` should be detached from the Identifier node.\n   *\n   * @param node the last finished AST node _before_ current token\n   */\n  /* eslint-enable no-irregular-whitespace */\n  resetPreviousNodeTrailingComments(node: Node) {\n    const { commentStack } = this.state;\n    const { length } = commentStack;\n    if (length === 0) return;\n    const commentWS = commentStack[length - 1];\n    if (commentWS.leadingNode === node) {\n      commentWS.leadingNode = null;\n    }\n  }\n\n  /**\n   * Attach a node to the comment whitespaces right before/after\n   * the given range.\n   *\n   * This is used to properly attach comments around parenthesized\n   * expressions as leading/trailing comments of the inner expression.\n   */\n  takeSurroundingComments(node: Node, start: number, end: number) {\n    const { commentStack } = this.state;\n    const commentStackLength = commentStack.length;\n    if (commentStackLength === 0) return;\n    let i = commentStackLength - 1;\n\n    for (; i >= 0; i--) {\n      const commentWS = commentStack[i];\n      const commentEnd = commentWS.end;\n      const commentStart = commentWS.start;\n\n      if (commentStart === end) {\n        commentWS.leadingNode = node;\n      } else if (commentEnd === start) {\n        commentWS.trailingNode = node;\n      } else if (commentEnd < start) {\n        break;\n      }\n    }\n  }\n}\n","import type { Options } from \"../options.ts\";\nimport type { CommentWhitespace } from \"../parser/comments\";\nimport { Position } from \"../util/location.ts\";\n\nimport { types as ct, type TokContext } from \"./context.ts\";\nimport { tt, type TokenType } from \"./types.ts\";\nimport type { Errors } from \"../parse-error.ts\";\nimport type { ParseError } from \"../parse-error.ts\";\n\nexport type DeferredStrictError =\n  | typeof Errors.StrictNumericEscape\n  | typeof Errors.StrictOctalLiteral;\n\ntype TopicContextState = {\n  // When a topic binding has been currently established,\n  // then this is 1. Otherwise, it is 0. This is forwards compatible\n  // with a future plugin for multiple lexical topics.\n  maxNumOfResolvableTopics: number;\n  // When a topic binding has been currently established, and if that binding\n  // has been used as a topic reference `#`, then this is 0. Otherwise, it is\n  // `null`. This is forwards compatible with a future plugin for multiple\n  // lexical topics.\n  maxTopicIndex: null | 0;\n};\n\nexport const enum LoopLabelKind {\n  Loop = 1,\n  Switch = 2,\n}\n\ndeclare const bit: import(\"../../../../scripts/babel-plugin-bit-decorator/types.d.ts\").BitDecorator<State>;\n\nexport default class State {\n  @bit.storage flags: number;\n\n  @bit accessor strict = false;\n\n  startIndex: number;\n  curLine: number;\n  lineStart: number;\n\n  // And, if locations are used, the {line, column} object\n  // corresponding to those offsets\n  startLoc: Position;\n  endLoc: Position;\n\n  init({\n    strictMode,\n    sourceType,\n    startIndex,\n    startLine,\n    startColumn,\n  }: Options): void {\n    this.strict =\n      strictMode === false\n        ? false\n        : strictMode === true\n          ? true\n          : sourceType === \"module\";\n\n    this.startIndex = startIndex;\n    this.curLine = startLine;\n    this.lineStart = -startColumn;\n    this.startLoc = this.endLoc = new Position(\n      startLine,\n      startColumn,\n      startIndex,\n    );\n  }\n\n  errors: ParseError<any>[] = [];\n\n  // Used to signify the start of a potential arrow function\n  potentialArrowAt: number = -1;\n\n  // Used to signify the start of an expression which looks like a\n  // typed arrow function, but it isn't\n  // e.g. a ? (b) : c => d\n  //          ^\n  noArrowAt: number[] = [];\n\n  // Used to signify the start of an expression whose params, if it looks like\n  // an arrow function, shouldn't be converted to assignable nodes.\n  // This is used to defer the validation of typed arrow functions inside\n  // conditional expressions.\n  // e.g. a ? (b) : c => d\n  //          ^\n  noArrowParamsConversionAt: number[] = [];\n\n  // Flags to track\n  @bit accessor maybeInArrowParameters = false;\n  @bit accessor inType = false;\n  @bit accessor noAnonFunctionType = false;\n  @bit accessor hasFlowComment = false;\n  @bit accessor isAmbientContext = false;\n  @bit accessor inAbstractClass = false;\n  @bit accessor inDisallowConditionalTypesContext = false;\n\n  // For the Hack-style pipelines plugin\n  topicContext: TopicContextState = {\n    maxNumOfResolvableTopics: 0,\n    maxTopicIndex: null,\n  };\n\n  // For the F#-style pipelines plugin\n  @bit accessor soloAwait = false;\n  @bit accessor inFSharpPipelineDirectBody = false;\n\n  // Labels in scope.\n  labels: Array<{\n    kind: LoopLabelKind;\n    name?: string | null;\n    statementStart?: number;\n  }> = [];\n\n  commentsLen = 0;\n  // Comment attachment store\n  commentStack: Array<CommentWhitespace> = [];\n\n  // The current position of the tokenizer in the input.\n  pos: number = 0;\n\n  // Properties of the current token:\n  // Its type\n  type: TokenType = tt.eof;\n\n  // For tokens that include more information than their type, the value\n  value: any = null;\n\n  // Its start and end offset\n  start: number = 0;\n  end: number = 0;\n\n  // Position information for the previous token\n  // this is initialized when generating the second token.\n  lastTokEndLoc: Position = null;\n  // this is initialized when generating the second token.\n  lastTokStartLoc: Position = null;\n\n  // The context stack is used to track whether the apostrophe \"`\" starts\n  // or ends a string template\n  context: Array<TokContext> = [ct.brace];\n\n  // Used to track whether a JSX element is allowed to form\n  @bit accessor canStartJSXElement = true;\n\n  // Used to signal to callers of `readWord1` whether the word\n  // contained any escape sequences. This is needed because words with\n  // escape sequences must not be interpreted as keywords.\n  @bit accessor containsEsc = false;\n\n  // Used to track invalid escape sequences in template literals,\n  // that must be reported if the template is not tagged.\n  firstInvalidTemplateEscapePos: null | Position = null;\n\n  @bit accessor hasTopLevelAwait = false;\n\n  // This property is used to track the following errors\n  // - StrictNumericEscape\n  // - StrictOctalLiteral\n  //\n  // in a literal that occurs prior to/immediately after a \"use strict\" directive.\n\n  // todo(JLHwung): set strictErrors to null and avoid recording string errors\n  // after a non-directive is parsed\n  strictErrors: Map<number, [DeferredStrictError, Position]> = new Map();\n\n  // Tokens length in token store\n  tokensLength: number = 0;\n\n  /**\n   * When we add a new property, we must manually update the `clone` method\n   * @see State#clone\n   */\n\n  curPosition(): Position {\n    return new Position(\n      this.curLine,\n      this.pos - this.lineStart,\n      this.pos + this.startIndex,\n    );\n  }\n\n  clone(): State {\n    const state = new State();\n    state.flags = this.flags;\n    state.startIndex = this.startIndex;\n    state.curLine = this.curLine;\n    state.lineStart = this.lineStart;\n    state.startLoc = this.startLoc;\n    state.endLoc = this.endLoc;\n    state.errors = this.errors.slice();\n    state.potentialArrowAt = this.potentialArrowAt;\n    state.noArrowAt = this.noArrowAt.slice();\n    state.noArrowParamsConversionAt = this.noArrowParamsConversionAt.slice();\n    state.topicContext = this.topicContext;\n    state.labels = this.labels.slice();\n    state.commentsLen = this.commentsLen;\n    state.commentStack = this.commentStack.slice();\n    state.pos = this.pos;\n    state.type = this.type;\n    state.value = this.value;\n    state.start = this.start;\n    state.end = this.end;\n    state.lastTokEndLoc = this.lastTokEndLoc;\n    state.lastTokStartLoc = this.lastTokStartLoc;\n    state.context = this.context.slice();\n    state.firstInvalidTemplateEscapePos = this.firstInvalidTemplateEscapePos;\n    state.strictErrors = this.strictErrors;\n    state.tokensLength = this.tokensLength;\n\n    return state;\n  }\n}\n\nexport type LookaheadState = {\n  pos: number;\n  value: any;\n  type: TokenType;\n  start: number;\n  end: number;\n  context: TokContext[];\n  startLoc: Position;\n  lastTokEndLoc: Position;\n  curLine: number;\n  lineStart: number;\n  curPosition: State[\"curPosition\"];\n  /* Used only in readToken_mult_modulo */\n  inType: boolean;\n  // These boolean properties are not initialized in createLookaheadState()\n  // instead they will only be set by the tokenizer\n  containsEsc?: boolean;\n};\n","// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// The following character codes are forbidden from being\n// an immediate sibling of NumericLiteralSeparator _\nconst forbiddenNumericSeparatorSiblings = {\n  decBinOct: new Set<number>([\n    charCodes.dot,\n    charCodes.uppercaseB,\n    charCodes.uppercaseE,\n    charCodes.uppercaseO,\n    charCodes.underscore, // multiple separators are not allowed\n    charCodes.lowercaseB,\n    charCodes.lowercaseE,\n    charCodes.lowercaseO,\n  ]),\n  hex: new Set<number>([\n    charCodes.dot,\n    charCodes.uppercaseX,\n    charCodes.underscore, // multiple separators are not allowed\n    charCodes.lowercaseX,\n  ]),\n};\n\nconst isAllowedNumericSeparatorSibling = {\n  // 0 - 1\n  bin: (ch: number) => ch === charCodes.digit0 || ch === charCodes.digit1,\n\n  // 0 - 7\n  oct: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit7,\n\n  // 0 - 9\n  dec: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit9,\n\n  // 0 - 9, A - F, a - f,\n  hex: (ch: number) =>\n    (ch >= charCodes.digit0 && ch <= charCodes.digit9) ||\n    (ch >= charCodes.uppercaseA && ch <= charCodes.uppercaseF) ||\n    (ch >= charCodes.lowercaseA && ch <= charCodes.lowercaseF),\n};\n\nexport type StringContentsErrorHandlers = EscapedCharErrorHandlers & {\n  unterminated(\n    initialPos: number,\n    initialLineStart: number,\n    initialCurLine: number,\n  ): void;\n};\n\nexport function readStringContents(\n  type: \"single\" | \"double\" | \"template\",\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  errors: StringContentsErrorHandlers,\n) {\n  const initialPos = pos;\n  const initialLineStart = lineStart;\n  const initialCurLine = curLine;\n\n  let out = \"\";\n  let firstInvalidLoc = null;\n  let chunkStart = pos;\n  const { length } = input;\n  for (;;) {\n    if (pos >= length) {\n      errors.unterminated(initialPos, initialLineStart, initialCurLine);\n      out += input.slice(chunkStart, pos);\n      break;\n    }\n    const ch = input.charCodeAt(pos);\n    if (isStringEnd(type, ch, input, pos)) {\n      out += input.slice(chunkStart, pos);\n      break;\n    }\n    if (ch === charCodes.backslash) {\n      out += input.slice(chunkStart, pos);\n      const res = readEscapedChar(\n        input,\n        pos,\n        lineStart,\n        curLine,\n        type === \"template\",\n        errors,\n      );\n      if (res.ch === null && !firstInvalidLoc) {\n        firstInvalidLoc = { pos, lineStart, curLine };\n      } else {\n        out += res.ch;\n      }\n      ({ pos, lineStart, curLine } = res);\n      chunkStart = pos;\n    } else if (\n      ch === charCodes.lineSeparator ||\n      ch === charCodes.paragraphSeparator\n    ) {\n      ++pos;\n      ++curLine;\n      lineStart = pos;\n    } else if (ch === charCodes.lineFeed || ch === charCodes.carriageReturn) {\n      if (type === \"template\") {\n        out += input.slice(chunkStart, pos) + \"\\n\";\n        ++pos;\n        if (\n          ch === charCodes.carriageReturn &&\n          input.charCodeAt(pos) === charCodes.lineFeed\n        ) {\n          ++pos;\n        }\n        ++curLine;\n        chunkStart = lineStart = pos;\n      } else {\n        errors.unterminated(initialPos, initialLineStart, initialCurLine);\n      }\n    } else {\n      ++pos;\n    }\n  }\n  return process.env.BABEL_8_BREAKING\n    ? { pos, str: out, firstInvalidLoc, lineStart, curLine }\n    : {\n        pos,\n        str: out,\n        firstInvalidLoc,\n        lineStart,\n        curLine,\n        containsInvalid: !!firstInvalidLoc,\n      };\n}\n\nfunction isStringEnd(\n  type: \"single\" | \"double\" | \"template\",\n  ch: number,\n  input: string,\n  pos: number,\n) {\n  if (type === \"template\") {\n    return (\n      ch === charCodes.graveAccent ||\n      (ch === charCodes.dollarSign &&\n        input.charCodeAt(pos + 1) === charCodes.leftCurlyBrace)\n    );\n  }\n  return (\n    ch === (type === \"double\" ? charCodes.quotationMark : charCodes.apostrophe)\n  );\n}\n\ntype EscapedCharErrorHandlers = HexCharErrorHandlers &\n  CodePointErrorHandlers & {\n    strictNumericEscape(pos: number, lineStart: number, curLine: number): void;\n  };\n\nfunction readEscapedChar(\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  inTemplate: boolean,\n  errors: EscapedCharErrorHandlers,\n) {\n  const throwOnInvalid = !inTemplate;\n  pos++; // skip '\\'\n\n  const res = (ch: string | null) => ({ pos, ch, lineStart, curLine });\n\n  const ch = input.charCodeAt(pos++);\n  switch (ch) {\n    case charCodes.lowercaseN:\n      return res(\"\\n\");\n    case charCodes.lowercaseR:\n      return res(\"\\r\");\n    case charCodes.lowercaseX: {\n      let code;\n      ({ code, pos } = readHexChar(\n        input,\n        pos,\n        lineStart,\n        curLine,\n        2,\n        false,\n        throwOnInvalid,\n        errors,\n      ));\n      return res(code === null ? null : String.fromCharCode(code));\n    }\n    case charCodes.lowercaseU: {\n      let code;\n      ({ code, pos } = readCodePoint(\n        input,\n        pos,\n        lineStart,\n        curLine,\n        throwOnInvalid,\n        errors,\n      ));\n      return res(code === null ? null : String.fromCodePoint(code));\n    }\n    case charCodes.lowercaseT:\n      return res(\"\\t\");\n    case charCodes.lowercaseB:\n      return res(\"\\b\");\n    case charCodes.lowercaseV:\n      return res(\"\\u000b\");\n    case charCodes.lowercaseF:\n      return res(\"\\f\");\n    case charCodes.carriageReturn:\n      if (input.charCodeAt(pos) === charCodes.lineFeed) {\n        ++pos;\n      }\n    // fall through\n    case charCodes.lineFeed:\n      lineStart = pos;\n      ++curLine;\n    // fall through\n    case charCodes.lineSeparator:\n    case charCodes.paragraphSeparator:\n      return res(\"\");\n    case charCodes.digit8:\n    case charCodes.digit9:\n      if (inTemplate) {\n        return res(null);\n      } else {\n        errors.strictNumericEscape(pos - 1, lineStart, curLine);\n      }\n    // fall through\n    default:\n      if (ch >= charCodes.digit0 && ch <= charCodes.digit7) {\n        const startPos = pos - 1;\n        const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));\n\n        let octalStr = match[0];\n\n        let octal = parseInt(octalStr, 8);\n        if (octal > 255) {\n          octalStr = octalStr.slice(0, -1);\n          octal = parseInt(octalStr, 8);\n        }\n        pos += octalStr.length - 1;\n        const next = input.charCodeAt(pos);\n        if (\n          octalStr !== \"0\" ||\n          next === charCodes.digit8 ||\n          next === charCodes.digit9\n        ) {\n          if (inTemplate) {\n            return res(null);\n          } else {\n            errors.strictNumericEscape(startPos, lineStart, curLine);\n          }\n        }\n\n        return res(String.fromCharCode(octal));\n      }\n\n      return res(String.fromCharCode(ch));\n  }\n}\n\ntype HexCharErrorHandlers = IntErrorHandlers & {\n  invalidEscapeSequence(pos: number, lineStart: number, curLine: number): void;\n};\n\n// Used to read character escape sequences ('\\x', '\\u').\nfunction readHexChar(\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  len: number,\n  forceLen: boolean,\n  throwOnInvalid: boolean,\n  errors: HexCharErrorHandlers,\n) {\n  const initialPos = pos;\n  let n;\n  ({ n, pos } = readInt(\n    input,\n    pos,\n    lineStart,\n    curLine,\n    16,\n    len,\n    forceLen,\n    false,\n    errors,\n    /* bailOnError */ !throwOnInvalid,\n  ));\n  if (n === null) {\n    if (throwOnInvalid) {\n      errors.invalidEscapeSequence(initialPos, lineStart, curLine);\n    } else {\n      pos = initialPos - 1;\n    }\n  }\n  return { code: n, pos };\n}\n\nexport type IntErrorHandlers = {\n  numericSeparatorInEscapeSequence(\n    pos: number,\n    lineStart: number,\n    curLine: number,\n  ): void;\n  unexpectedNumericSeparator(\n    pos: number,\n    lineStart: number,\n    curLine: number,\n  ): void;\n  // It can return \"true\" to indicate that the error was handled\n  // and the int parsing should continue.\n  invalidDigit(\n    pos: number,\n    lineStart: number,\n    curLine: number,\n    radix: number,\n  ): boolean;\n};\n\nexport function readInt(\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  radix: number,\n  len: number | undefined,\n  forceLen: boolean,\n  allowNumSeparator: boolean | \"bail\",\n  errors: IntErrorHandlers,\n  bailOnError: boolean,\n) {\n  const start = pos;\n  const forbiddenSiblings =\n    radix === 16\n      ? forbiddenNumericSeparatorSiblings.hex\n      : forbiddenNumericSeparatorSiblings.decBinOct;\n  const isAllowedSibling =\n    radix === 16\n      ? isAllowedNumericSeparatorSibling.hex\n      : radix === 10\n        ? isAllowedNumericSeparatorSibling.dec\n        : radix === 8\n          ? isAllowedNumericSeparatorSibling.oct\n          : isAllowedNumericSeparatorSibling.bin;\n\n  let invalid = false;\n  let total = 0;\n\n  for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n    const code = input.charCodeAt(pos);\n    let val;\n\n    if (code === charCodes.underscore && allowNumSeparator !== \"bail\") {\n      const prev = input.charCodeAt(pos - 1);\n      const next = input.charCodeAt(pos + 1);\n\n      if (!allowNumSeparator) {\n        if (bailOnError) return { n: null, pos };\n        errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);\n      } else if (\n        Number.isNaN(next) ||\n        !isAllowedSibling(next) ||\n        forbiddenSiblings.has(prev) ||\n        forbiddenSiblings.has(next)\n      ) {\n        if (bailOnError) return { n: null, pos };\n        errors.unexpectedNumericSeparator(pos, lineStart, curLine);\n      }\n\n      // Ignore this _ character\n      ++pos;\n      continue;\n    }\n\n    if (code >= charCodes.lowercaseA) {\n      val = code - charCodes.lowercaseA + charCodes.lineFeed;\n    } else if (code >= charCodes.uppercaseA) {\n      val = code - charCodes.uppercaseA + charCodes.lineFeed;\n    } else if (charCodes.isDigit(code)) {\n      val = code - charCodes.digit0; // 0-9\n    } else {\n      val = Infinity;\n    }\n    if (val >= radix) {\n      // If we found a digit which is too big, errors.invalidDigit can return true to avoid\n      // breaking the loop (this is used for error recovery).\n      if (val <= 9 && bailOnError) {\n        return { n: null, pos };\n      } else if (\n        val <= 9 &&\n        errors.invalidDigit(pos, lineStart, curLine, radix)\n      ) {\n        val = 0;\n      } else if (forceLen) {\n        val = 0;\n        invalid = true;\n      } else {\n        break;\n      }\n    }\n    ++pos;\n    total = total * radix + val;\n  }\n  if (pos === start || (len != null && pos - start !== len) || invalid) {\n    return { n: null, pos };\n  }\n\n  return { n: total, pos };\n}\n\nexport type CodePointErrorHandlers = HexCharErrorHandlers & {\n  invalidCodePoint(pos: number, lineStart: number, curLine: number): void;\n};\n\nexport function readCodePoint(\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  throwOnInvalid: boolean,\n  errors: CodePointErrorHandlers,\n) {\n  const ch = input.charCodeAt(pos);\n  let code;\n\n  if (ch === charCodes.leftCurlyBrace) {\n    ++pos;\n    ({ code, pos } = readHexChar(\n      input,\n      pos,\n      lineStart,\n      curLine,\n      input.indexOf(\"}\", pos) - pos,\n      true,\n      throwOnInvalid,\n      errors,\n    ));\n    ++pos;\n    if (code !== null && code > 0x10ffff) {\n      if (throwOnInvalid) {\n        errors.invalidCodePoint(pos, lineStart, curLine);\n      } else {\n        return { code: null, pos };\n      }\n    }\n  } else {\n    ({ code, pos } = readHexChar(\n      input,\n      pos,\n      lineStart,\n      curLine,\n      4,\n      false,\n      throwOnInvalid,\n      errors,\n    ));\n  }\n  return { code, pos };\n}\n","/*:: declare var invariant; */\n\nimport { OptionFlags, type Options } from \"../options.ts\";\nimport {\n  Position,\n  SourceLocation,\n  createPositionWithColumnOffset,\n} from \"../util/location.ts\";\nimport CommentsParser, { type CommentWhitespace } from \"../parser/comments.ts\";\nimport type * as N from \"../types.ts\";\nimport * as charCodes from \"charcodes\";\nimport { isIdentifierStart, isIdentifierChar } from \"../util/identifier.ts\";\nimport {\n  tokenIsKeyword,\n  tokenLabelName,\n  tt,\n  keywords as keywordTypes,\n  type TokenType,\n} from \"./types.ts\";\nimport type { TokContext } from \"./context.ts\";\nimport {\n  Errors,\n  type ParseError,\n  type ParseErrorConstructor,\n} from \"../parse-error.ts\";\nimport {\n  lineBreakG,\n  isNewLine,\n  isWhitespace,\n  skipWhiteSpace,\n  skipWhiteSpaceInLine,\n} from \"../util/whitespace.ts\";\nimport State from \"./state.ts\";\nimport type { LookaheadState, DeferredStrictError } from \"./state.ts\";\nimport type { Undone } from \"../parser/node.ts\";\nimport type { Node } from \"../types.ts\";\n\nimport {\n  readInt,\n  readCodePoint,\n  readStringContents,\n  type IntErrorHandlers,\n  type CodePointErrorHandlers,\n  type StringContentsErrorHandlers,\n} from \"@babel/helper-string-parser\";\n\nimport type { Plugin } from \"../typings.ts\";\n\nfunction buildPosition(pos: number, lineStart: number, curLine: number) {\n  return new Position(curLine, pos - lineStart, pos);\n}\n\nconst VALID_REGEX_FLAGS = new Set([\n  charCodes.lowercaseG,\n  charCodes.lowercaseM,\n  charCodes.lowercaseS,\n  charCodes.lowercaseI,\n  charCodes.lowercaseY,\n  charCodes.lowercaseU,\n  charCodes.lowercaseD,\n  charCodes.lowercaseV,\n]);\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nexport class Token {\n  constructor(state: State) {\n    const startIndex = state.startIndex || 0;\n    this.type = state.type;\n    this.value = state.value;\n    this.start = startIndex + state.start;\n    this.end = startIndex + state.end;\n    this.loc = new SourceLocation(state.startLoc, state.endLoc);\n  }\n\n  declare type: TokenType;\n  declare value: any;\n  declare start: number;\n  declare end: number;\n  declare loc: SourceLocation;\n}\n\n// ## Tokenizer\n\nexport default abstract class Tokenizer extends CommentsParser {\n  isLookahead: boolean;\n\n  // Token store.\n  tokens: Array<Token | N.Comment> = [];\n\n  constructor(options: Options, input: string) {\n    super();\n    this.state = new State();\n    this.state.init(options);\n    this.input = input;\n    this.length = input.length;\n    this.comments = [];\n    this.isLookahead = false;\n  }\n\n  pushToken(token: Token | N.Comment) {\n    // Pop out invalid tokens trapped by try-catch parsing.\n    // Those parsing branches are mainly created by typescript and flow plugins.\n    this.tokens.length = this.state.tokensLength;\n    this.tokens.push(token);\n    ++this.state.tokensLength;\n  }\n\n  // Move to the next token\n\n  next(): void {\n    this.checkKeywordEscapes();\n    if (this.optionFlags & OptionFlags.Tokens) {\n      this.pushToken(new Token(this.state));\n    }\n\n    this.state.lastTokEndLoc = this.state.endLoc;\n    this.state.lastTokStartLoc = this.state.startLoc;\n    this.nextToken();\n  }\n\n  eat(type: TokenType): boolean {\n    if (this.match(type)) {\n      this.next();\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  /**\n   * Whether current token matches given type\n   */\n  match(type: TokenType): boolean {\n    return this.state.type === type;\n  }\n\n  /**\n   * Create a LookaheadState from current parser state\n   */\n  createLookaheadState(state: State): LookaheadState {\n    return {\n      pos: state.pos,\n      value: null,\n      type: state.type,\n      start: state.start,\n      end: state.end,\n      context: [this.curContext()],\n      inType: state.inType,\n      startLoc: state.startLoc,\n      lastTokEndLoc: state.lastTokEndLoc,\n      curLine: state.curLine,\n      lineStart: state.lineStart,\n      curPosition: state.curPosition,\n    };\n  }\n\n  /**\n   * lookahead peeks the next token, skipping changes to token context and\n   * comment stack. For performance it returns a limited LookaheadState\n   * instead of full parser state.\n   *\n   * The { column, line } Loc info is not included in lookahead since such usage\n   * is rare. Although it may return other location properties e.g. `curLine` and\n   * `lineStart`, these properties are not listed in the LookaheadState interface\n   * and thus the returned value is _NOT_ reliable.\n   *\n   * The tokenizer should make best efforts to avoid using any parser state\n   * other than those defined in LookaheadState\n   */\n  lookahead(): LookaheadState {\n    const old = this.state;\n    // @ts-expect-error For performance we use a simplified tokenizer state structure\n    this.state = this.createLookaheadState(old);\n\n    this.isLookahead = true;\n    this.nextToken();\n    this.isLookahead = false;\n\n    const curr = this.state;\n    this.state = old;\n    return curr;\n  }\n\n  nextTokenStart(): number {\n    return this.nextTokenStartSince(this.state.pos);\n  }\n\n  nextTokenStartSince(pos: number): number {\n    skipWhiteSpace.lastIndex = pos;\n    return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos;\n  }\n\n  lookaheadCharCode(): number {\n    return this.lookaheadCharCodeSince(this.state.pos);\n  }\n\n  lookaheadCharCodeSince(pos: number): number {\n    return this.input.charCodeAt(this.nextTokenStartSince(pos));\n  }\n\n  /**\n   * Similar to nextToken, but it will stop at line break when it is seen before the next token\n   *\n   * @returns {number} position of the next token start or line break, whichever is seen first.\n   * @memberof Tokenizer\n   */\n  nextTokenInLineStart(): number {\n    return this.nextTokenInLineStartSince(this.state.pos);\n  }\n\n  nextTokenInLineStartSince(pos: number): number {\n    skipWhiteSpaceInLine.lastIndex = pos;\n    return skipWhiteSpaceInLine.test(this.input)\n      ? skipWhiteSpaceInLine.lastIndex\n      : pos;\n  }\n\n  /**\n   * Similar to lookaheadCharCode, but it will return the char code of line break if it is\n   * seen before the next token\n   *\n   * @returns {number} char code of the next token start or line break, whichever is seen first.\n   * @memberof Tokenizer\n   */\n  lookaheadInLineCharCode(): number {\n    return this.input.charCodeAt(this.nextTokenInLineStart());\n  }\n\n  codePointAtPos(pos: number): number {\n    // The implementation is based on\n    // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n    // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n    // since `input` is mostly ASCII, an inlined `charCodeAt` wins here\n    let cp = this.input.charCodeAt(pos);\n    if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) {\n      const trail = this.input.charCodeAt(pos);\n      if ((trail & 0xfc00) === 0xdc00) {\n        cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n      }\n    }\n    return cp;\n  }\n\n  // Toggle strict mode. Re-reads the next number or string to please\n  // pedantic tests (`\"use strict\"; 010;` should fail).\n\n  setStrict(strict: boolean): void {\n    this.state.strict = strict;\n    if (strict) {\n      // Throw an error for any string decimal escape found before/immediately\n      // after a \"use strict\" directive. Strict mode will be set at parse\n      // time for any literals that occur after the next node of the strict\n      // directive.\n      this.state.strictErrors.forEach(([toParseError, at]) =>\n        this.raise(toParseError, at),\n      );\n      this.state.strictErrors.clear();\n    }\n  }\n\n  curContext(): TokContext {\n    return this.state.context[this.state.context.length - 1];\n  }\n\n  // Read a single token, updating the parser object's token-related properties.\n  nextToken(): void {\n    this.skipSpace();\n    this.state.start = this.state.pos;\n    if (!this.isLookahead) this.state.startLoc = this.state.curPosition();\n    if (this.state.pos >= this.length) {\n      this.finishToken(tt.eof);\n      return;\n    }\n\n    this.getTokenFromCode(this.codePointAtPos(this.state.pos));\n  }\n\n  // Skips a block comment, whose end is marked by commentEnd.\n  // *-/ is used by the Flow plugin, when parsing block comments nested\n  // inside Flow comments.\n  skipBlockComment(commentEnd: \"*/\" | \"*-/\"): N.CommentBlock | undefined {\n    let startLoc;\n    if (!this.isLookahead) startLoc = this.state.curPosition();\n    const start = this.state.pos;\n    const end = this.input.indexOf(commentEnd, start + 2);\n    if (end === -1) {\n      // We have to call this again here because startLoc may not be set...\n      // This seems to be for performance reasons:\n      // https://github.com/babel/babel/commit/acf2a10899f696a8aaf34df78bf9725b5ea7f2da\n      throw this.raise(Errors.UnterminatedComment, this.state.curPosition());\n    }\n\n    this.state.pos = end + commentEnd.length;\n    lineBreakG.lastIndex = start + 2;\n    while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) {\n      ++this.state.curLine;\n      this.state.lineStart = lineBreakG.lastIndex;\n    }\n\n    // If we are doing a lookahead right now we need to advance the position (above code)\n    // but we do not want to push the comment to the state.\n    if (this.isLookahead) return;\n    /*:: invariant(startLoc) */\n\n    const comment: N.CommentBlock = {\n      type: \"CommentBlock\",\n      value: this.input.slice(start + 2, end),\n      start: this.sourceToOffsetPos(start),\n      end: this.sourceToOffsetPos(end + commentEnd.length),\n      loc: new SourceLocation(startLoc, this.state.curPosition()),\n    };\n    if (this.optionFlags & OptionFlags.Tokens) this.pushToken(comment);\n    return comment;\n  }\n\n  skipLineComment(startSkip: number): N.CommentLine | undefined {\n    const start = this.state.pos;\n    let startLoc;\n    if (!this.isLookahead) startLoc = this.state.curPosition();\n    let ch = this.input.charCodeAt((this.state.pos += startSkip));\n    if (this.state.pos < this.length) {\n      while (!isNewLine(ch) && ++this.state.pos < this.length) {\n        ch = this.input.charCodeAt(this.state.pos);\n      }\n    }\n\n    // If we are doing a lookahead right now we need to advance the position (above code)\n    // but we do not want to push the comment to the state.\n    if (this.isLookahead) return;\n\n    const end = this.state.pos;\n    const value = this.input.slice(start + startSkip, end);\n\n    const comment: N.CommentLine = {\n      type: \"CommentLine\",\n      value,\n      start: this.sourceToOffsetPos(start),\n      end: this.sourceToOffsetPos(end),\n      loc: new SourceLocation(startLoc, this.state.curPosition()),\n    };\n    if (this.optionFlags & OptionFlags.Tokens) this.pushToken(comment);\n    return comment;\n  }\n\n  // Called at the start of the parse and after every token. Skips\n  // whitespace and comments, and.\n\n  skipSpace(): void {\n    const spaceStart = this.state.pos;\n    const comments: N.Comment[] =\n      this.optionFlags & OptionFlags.AttachComment ? [] : null;\n    loop: while (this.state.pos < this.length) {\n      const ch = this.input.charCodeAt(this.state.pos);\n      switch (ch) {\n        case charCodes.space:\n        case charCodes.nonBreakingSpace:\n        case charCodes.tab:\n          ++this.state.pos;\n          break;\n        case charCodes.carriageReturn:\n          if (\n            this.input.charCodeAt(this.state.pos + 1) === charCodes.lineFeed\n          ) {\n            ++this.state.pos;\n          }\n        // fall through\n        case charCodes.lineFeed:\n        case charCodes.lineSeparator:\n        case charCodes.paragraphSeparator:\n          ++this.state.pos;\n          ++this.state.curLine;\n          this.state.lineStart = this.state.pos;\n          break;\n\n        case charCodes.slash:\n          switch (this.input.charCodeAt(this.state.pos + 1)) {\n            case charCodes.asterisk: {\n              const comment = this.skipBlockComment(\"*/\");\n              if (comment !== undefined) {\n                this.addComment(comment);\n                comments?.push(comment);\n              }\n              break;\n            }\n\n            case charCodes.slash: {\n              const comment = this.skipLineComment(2);\n              if (comment !== undefined) {\n                this.addComment(comment);\n                comments?.push(comment);\n              }\n              break;\n            }\n\n            default:\n              break loop;\n          }\n          break;\n\n        default:\n          if (isWhitespace(ch)) {\n            ++this.state.pos;\n          } else if (\n            ch === charCodes.dash &&\n            !this.inModule &&\n            this.optionFlags & OptionFlags.AnnexB\n          ) {\n            const pos = this.state.pos;\n            if (\n              this.input.charCodeAt(pos + 1) === charCodes.dash &&\n              this.input.charCodeAt(pos + 2) === charCodes.greaterThan &&\n              (spaceStart === 0 || this.state.lineStart > spaceStart)\n            ) {\n              // A `-->` line comment\n              const comment = this.skipLineComment(3);\n              if (comment !== undefined) {\n                this.addComment(comment);\n                comments?.push(comment);\n              }\n            } else {\n              break loop;\n            }\n          } else if (\n            ch === charCodes.lessThan &&\n            !this.inModule &&\n            this.optionFlags & OptionFlags.AnnexB\n          ) {\n            const pos = this.state.pos;\n            if (\n              this.input.charCodeAt(pos + 1) === charCodes.exclamationMark &&\n              this.input.charCodeAt(pos + 2) === charCodes.dash &&\n              this.input.charCodeAt(pos + 3) === charCodes.dash\n            ) {\n              // `<!--`, an XML-style comment that should be interpreted as a line comment\n              const comment = this.skipLineComment(4);\n              if (comment !== undefined) {\n                this.addComment(comment);\n                comments?.push(comment);\n              }\n            } else {\n              break loop;\n            }\n          } else {\n            break loop;\n          }\n      }\n    }\n\n    if (comments?.length > 0) {\n      const end = this.state.pos;\n      const commentWhitespace: CommentWhitespace = {\n        start: this.sourceToOffsetPos(spaceStart),\n        end: this.sourceToOffsetPos(end),\n        comments,\n        leadingNode: null,\n        trailingNode: null,\n        containingNode: null,\n      };\n      this.state.commentStack.push(commentWhitespace);\n    }\n  }\n\n  // Called at the end of every token. Sets `end`, `val`, and\n  // maintains `context` and `canStartJSXElement`, and skips the space after\n  // the token, so that the next one's `start` will point at the\n  // right position.\n\n  finishToken(type: TokenType, val?: any): void {\n    this.state.end = this.state.pos;\n    this.state.endLoc = this.state.curPosition();\n    const prevType = this.state.type;\n    this.state.type = type;\n    this.state.value = val;\n\n    if (!this.isLookahead) {\n      this.updateContext(prevType);\n    }\n  }\n\n  replaceToken(type: TokenType): void {\n    this.state.type = type;\n    // @ts-expect-error the prevType of updateContext is required\n    // only when the new type is tt.slash/tt.jsxTagEnd\n    this.updateContext();\n  }\n\n  // ### Token reading\n\n  // This is the function that is called to fetch the next token. It\n  // is somewhat obscure, because it works in character codes rather\n  // than characters, and because operator parsing has been inlined\n  // into it.\n  //\n  // All in the name of speed.\n\n  // number sign is \"#\"\n  readToken_numberSign(): void {\n    if (this.state.pos === 0 && this.readToken_interpreter()) {\n      return;\n    }\n\n    const nextPos = this.state.pos + 1;\n    const next = this.codePointAtPos(nextPos);\n    if (next >= charCodes.digit0 && next <= charCodes.digit9) {\n      throw this.raise(\n        Errors.UnexpectedDigitAfterHash,\n        this.state.curPosition(),\n      );\n    }\n\n    if (\n      !process.env.BABEL_8_BREAKING &&\n      (next === charCodes.leftCurlyBrace ||\n        (next === charCodes.leftSquareBracket &&\n          this.hasPlugin(\"recordAndTuple\")))\n    ) {\n      // When we see `#{`, it is likely to be a hash record.\n      // However we don't yell at `#[` since users may intend to use \"computed private fields\",\n      // which is not allowed in the spec. Throwing expecting recordAndTuple is\n      // misleading\n      this.expectPlugin(\"recordAndTuple\");\n      if (\n        !process.env.BABEL_8_BREAKING &&\n        this.getPluginOption(\"recordAndTuple\", \"syntaxType\") === \"bar\"\n      ) {\n        throw this.raise(\n          next === charCodes.leftCurlyBrace\n            ? Errors.RecordExpressionHashIncorrectStartSyntaxType\n            : Errors.TupleExpressionHashIncorrectStartSyntaxType,\n          this.state.curPosition(),\n        );\n      }\n\n      this.state.pos += 2;\n      if (next === charCodes.leftCurlyBrace) {\n        // #{\n        this.finishToken(tt.braceHashL);\n      } else {\n        // #[\n        this.finishToken(tt.bracketHashL);\n      }\n    } else if (isIdentifierStart(next)) {\n      ++this.state.pos;\n      this.finishToken(tt.privateName, this.readWord1(next));\n    } else if (next === charCodes.backslash) {\n      ++this.state.pos;\n      this.finishToken(tt.privateName, this.readWord1());\n    } else {\n      this.finishOp(tt.hash, 1);\n    }\n  }\n\n  readToken_dot(): void {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n    if (next >= charCodes.digit0 && next <= charCodes.digit9) {\n      this.readNumber(true);\n      return;\n    }\n\n    if (\n      next === charCodes.dot &&\n      this.input.charCodeAt(this.state.pos + 2) === charCodes.dot\n    ) {\n      this.state.pos += 3;\n      this.finishToken(tt.ellipsis);\n    } else {\n      ++this.state.pos;\n      this.finishToken(tt.dot);\n    }\n  }\n\n  readToken_slash(): void {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n    if (next === charCodes.equalsTo) {\n      this.finishOp(tt.slashAssign, 2);\n    } else {\n      this.finishOp(tt.slash, 1);\n    }\n  }\n\n  readToken_interpreter(): boolean {\n    if (this.state.pos !== 0 || this.length < 2) return false;\n\n    let ch = this.input.charCodeAt(this.state.pos + 1);\n    if (ch !== charCodes.exclamationMark) return false;\n\n    const start = this.state.pos;\n    this.state.pos += 1;\n\n    while (!isNewLine(ch) && ++this.state.pos < this.length) {\n      ch = this.input.charCodeAt(this.state.pos);\n    }\n\n    const value = this.input.slice(start + 2, this.state.pos);\n\n    this.finishToken(tt.interpreterDirective, value);\n\n    return true;\n  }\n\n  readToken_mult_modulo(code: number): void {\n    // '%' or '*'\n    let type = code === charCodes.asterisk ? tt.star : tt.modulo;\n    let width = 1;\n    let next = this.input.charCodeAt(this.state.pos + 1);\n\n    // Exponentiation operator '**'\n    if (code === charCodes.asterisk && next === charCodes.asterisk) {\n      width++;\n      next = this.input.charCodeAt(this.state.pos + 2);\n      type = tt.exponent;\n    }\n\n    // '%=' or '*='\n    if (next === charCodes.equalsTo && !this.state.inType) {\n      width++;\n      // `tt.moduloAssign` is only needed to support % as a Hack-pipe topic token.\n      // If the proposal ends up choosing a different token,\n      // it can be merged with tt.assign.\n      type = code === charCodes.percentSign ? tt.moduloAssign : tt.assign;\n    }\n\n    this.finishOp(type, width);\n  }\n\n  readToken_pipe_amp(code: number): void {\n    // '||' '&&' '||=' '&&='\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    if (next === code) {\n      if (this.input.charCodeAt(this.state.pos + 2) === charCodes.equalsTo) {\n        this.finishOp(tt.assign, 3);\n      } else {\n        this.finishOp(\n          code === charCodes.verticalBar ? tt.logicalOR : tt.logicalAND,\n          2,\n        );\n      }\n      return;\n    }\n\n    if (code === charCodes.verticalBar) {\n      // '|>'\n      if (next === charCodes.greaterThan) {\n        this.finishOp(tt.pipeline, 2);\n        return;\n      }\n      // '|}'\n      if (\n        !process.env.BABEL_8_BREAKING &&\n        this.hasPlugin(\"recordAndTuple\") &&\n        next === charCodes.rightCurlyBrace\n      ) {\n        if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n          throw this.raise(\n            Errors.RecordExpressionBarIncorrectEndSyntaxType,\n            this.state.curPosition(),\n          );\n        }\n        this.state.pos += 2;\n        this.finishToken(tt.braceBarR);\n        return;\n      }\n\n      // '|]'\n      if (\n        !process.env.BABEL_8_BREAKING &&\n        this.hasPlugin(\"recordAndTuple\") &&\n        next === charCodes.rightSquareBracket\n      ) {\n        if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n          throw this.raise(\n            Errors.TupleExpressionBarIncorrectEndSyntaxType,\n            this.state.curPosition(),\n          );\n        }\n        this.state.pos += 2;\n        this.finishToken(tt.bracketBarR);\n        return;\n      }\n    }\n\n    if (next === charCodes.equalsTo) {\n      this.finishOp(tt.assign, 2);\n      return;\n    }\n\n    this.finishOp(\n      code === charCodes.verticalBar ? tt.bitwiseOR : tt.bitwiseAND,\n      1,\n    );\n  }\n\n  readToken_caret(): void {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    // '^='\n    if (next === charCodes.equalsTo && !this.state.inType) {\n      // `tt.xorAssign` is only needed to support ^ as a Hack-pipe topic token.\n      // If the proposal ends up choosing a different token,\n      // it can be merged with tt.assign.\n      this.finishOp(tt.xorAssign, 2);\n    }\n    // '^^'\n    else if (\n      next === charCodes.caret &&\n      // If the ^^ token is not enabled, we don't throw but parse two single ^s\n      // because it could be a ^ hack token followed by a ^ binary operator.\n      this.hasPlugin([\n        \"pipelineOperator\",\n        { proposal: \"hack\", topicToken: \"^^\" },\n      ])\n    ) {\n      this.finishOp(tt.doubleCaret, 2);\n\n      // `^^^` is forbidden and must be separated by a space.\n      const lookaheadCh = this.input.codePointAt(this.state.pos);\n      if (lookaheadCh === charCodes.caret) {\n        this.unexpected();\n      }\n    }\n    // '^'\n    else {\n      this.finishOp(tt.bitwiseXOR, 1);\n    }\n  }\n\n  readToken_atSign(): void {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    // '@@'\n    if (\n      next === charCodes.atSign &&\n      this.hasPlugin([\n        \"pipelineOperator\",\n        { proposal: \"hack\", topicToken: \"@@\" },\n      ])\n    ) {\n      this.finishOp(tt.doubleAt, 2);\n    }\n    // '@'\n    else {\n      this.finishOp(tt.at, 1);\n    }\n  }\n\n  readToken_plus_min(code: number): void {\n    // '+-'\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    if (next === code) {\n      this.finishOp(tt.incDec, 2);\n      return;\n    }\n\n    if (next === charCodes.equalsTo) {\n      this.finishOp(tt.assign, 2);\n    } else {\n      this.finishOp(tt.plusMin, 1);\n    }\n  }\n\n  readToken_lt(): void {\n    // '<'\n    const { pos } = this.state;\n    const next = this.input.charCodeAt(pos + 1);\n\n    if (next === charCodes.lessThan) {\n      if (this.input.charCodeAt(pos + 2) === charCodes.equalsTo) {\n        this.finishOp(tt.assign, 3);\n        return;\n      }\n      this.finishOp(tt.bitShiftL, 2);\n      return;\n    }\n\n    if (next === charCodes.equalsTo) {\n      // <=\n      this.finishOp(tt.relational, 2);\n      return;\n    }\n\n    this.finishOp(tt.lt, 1);\n  }\n\n  readToken_gt(): void {\n    // '>'\n    const { pos } = this.state;\n    const next = this.input.charCodeAt(pos + 1);\n\n    if (next === charCodes.greaterThan) {\n      const size =\n        this.input.charCodeAt(pos + 2) === charCodes.greaterThan ? 3 : 2;\n      if (this.input.charCodeAt(pos + size) === charCodes.equalsTo) {\n        this.finishOp(tt.assign, size + 1);\n        return;\n      }\n      this.finishOp(tt.bitShiftR, size);\n      return;\n    }\n\n    if (next === charCodes.equalsTo) {\n      // <= | >=\n      this.finishOp(tt.relational, 2);\n      return;\n    }\n\n    this.finishOp(tt.gt, 1);\n  }\n\n  readToken_eq_excl(code: number): void {\n    // '=!'\n    const next = this.input.charCodeAt(this.state.pos + 1);\n    if (next === charCodes.equalsTo) {\n      this.finishOp(\n        tt.equality,\n        this.input.charCodeAt(this.state.pos + 2) === charCodes.equalsTo\n          ? 3\n          : 2,\n      );\n      return;\n    }\n    if (code === charCodes.equalsTo && next === charCodes.greaterThan) {\n      // '=>'\n      this.state.pos += 2;\n      this.finishToken(tt.arrow);\n      return;\n    }\n    this.finishOp(code === charCodes.equalsTo ? tt.eq : tt.bang, 1);\n  }\n\n  readToken_question(): void {\n    // '?'\n    const next = this.input.charCodeAt(this.state.pos + 1);\n    const next2 = this.input.charCodeAt(this.state.pos + 2);\n    if (next === charCodes.questionMark) {\n      if (next2 === charCodes.equalsTo) {\n        // '??='\n        this.finishOp(tt.assign, 3);\n      } else {\n        // '??'\n        this.finishOp(tt.nullishCoalescing, 2);\n      }\n    } else if (\n      next === charCodes.dot &&\n      !(next2 >= charCodes.digit0 && next2 <= charCodes.digit9)\n    ) {\n      // '.' not followed by a number\n      this.state.pos += 2;\n      this.finishToken(tt.questionDot);\n    } else {\n      ++this.state.pos;\n      this.finishToken(tt.question);\n    }\n  }\n\n  getTokenFromCode(code: number): void {\n    switch (code) {\n      // The interpretation of a dot depends on whether it is followed\n      // by a digit or another two dots.\n\n      case charCodes.dot:\n        this.readToken_dot();\n        return;\n      // Punctuation tokens.\n      case charCodes.leftParenthesis:\n        ++this.state.pos;\n        this.finishToken(tt.parenL);\n        return;\n      case charCodes.rightParenthesis:\n        ++this.state.pos;\n        this.finishToken(tt.parenR);\n        return;\n      case charCodes.semicolon:\n        ++this.state.pos;\n        this.finishToken(tt.semi);\n        return;\n      case charCodes.comma:\n        ++this.state.pos;\n        this.finishToken(tt.comma);\n        return;\n      case charCodes.leftSquareBracket:\n        if (\n          !process.env.BABEL_8_BREAKING &&\n          this.hasPlugin(\"recordAndTuple\") &&\n          this.input.charCodeAt(this.state.pos + 1) === charCodes.verticalBar\n        ) {\n          if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n            throw this.raise(\n              Errors.TupleExpressionBarIncorrectStartSyntaxType,\n              this.state.curPosition(),\n            );\n          }\n\n          // [|\n          this.state.pos += 2;\n          this.finishToken(tt.bracketBarL);\n        } else {\n          ++this.state.pos;\n          this.finishToken(tt.bracketL);\n        }\n        return;\n      case charCodes.rightSquareBracket:\n        ++this.state.pos;\n        this.finishToken(tt.bracketR);\n        return;\n      case charCodes.leftCurlyBrace:\n        if (\n          !process.env.BABEL_8_BREAKING &&\n          this.hasPlugin(\"recordAndTuple\") &&\n          this.input.charCodeAt(this.state.pos + 1) === charCodes.verticalBar\n        ) {\n          if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n            throw this.raise(\n              Errors.RecordExpressionBarIncorrectStartSyntaxType,\n              this.state.curPosition(),\n            );\n          }\n\n          // {|\n          this.state.pos += 2;\n          this.finishToken(tt.braceBarL);\n        } else {\n          ++this.state.pos;\n          this.finishToken(tt.braceL);\n        }\n        return;\n      case charCodes.rightCurlyBrace:\n        ++this.state.pos;\n        this.finishToken(tt.braceR);\n        return;\n\n      case charCodes.colon:\n        if (\n          this.hasPlugin(\"functionBind\") &&\n          this.input.charCodeAt(this.state.pos + 1) === charCodes.colon\n        ) {\n          this.finishOp(tt.doubleColon, 2);\n        } else {\n          ++this.state.pos;\n          this.finishToken(tt.colon);\n        }\n        return;\n\n      case charCodes.questionMark:\n        this.readToken_question();\n        return;\n\n      case charCodes.graveAccent:\n        this.readTemplateToken();\n        return;\n\n      case charCodes.digit0: {\n        const next = this.input.charCodeAt(this.state.pos + 1);\n        // '0x', '0X' - hex number\n        if (next === charCodes.lowercaseX || next === charCodes.uppercaseX) {\n          this.readRadixNumber(16);\n          return;\n        }\n        // '0o', '0O' - octal number\n        if (next === charCodes.lowercaseO || next === charCodes.uppercaseO) {\n          this.readRadixNumber(8);\n          return;\n        }\n        // '0b', '0B' - binary number\n        if (next === charCodes.lowercaseB || next === charCodes.uppercaseB) {\n          this.readRadixNumber(2);\n          return;\n        }\n      }\n      // Anything else beginning with a digit is an integer, octal\n      // number, or float. (fall through)\n      case charCodes.digit1:\n      case charCodes.digit2:\n      case charCodes.digit3:\n      case charCodes.digit4:\n      case charCodes.digit5:\n      case charCodes.digit6:\n      case charCodes.digit7:\n      case charCodes.digit8:\n      case charCodes.digit9:\n        this.readNumber(false);\n        return;\n\n      // Quotes produce strings.\n      case charCodes.quotationMark:\n      case charCodes.apostrophe:\n        this.readString(code);\n        return;\n\n      // Operators are parsed inline in tiny state machines. '=' (charCodes.equalsTo) is\n      // often referred to. `finishOp` simply skips the amount of\n      // characters it is given as second argument, and returns a token\n      // of the type given by its first argument.\n\n      case charCodes.slash:\n        this.readToken_slash();\n        return;\n\n      case charCodes.percentSign:\n      case charCodes.asterisk:\n        this.readToken_mult_modulo(code);\n        return;\n\n      case charCodes.verticalBar:\n      case charCodes.ampersand:\n        this.readToken_pipe_amp(code);\n        return;\n\n      case charCodes.caret:\n        this.readToken_caret();\n        return;\n\n      case charCodes.plusSign:\n      case charCodes.dash:\n        this.readToken_plus_min(code);\n        return;\n\n      case charCodes.lessThan:\n        this.readToken_lt();\n        return;\n\n      case charCodes.greaterThan:\n        this.readToken_gt();\n        return;\n\n      case charCodes.equalsTo:\n      case charCodes.exclamationMark:\n        this.readToken_eq_excl(code);\n        return;\n\n      case charCodes.tilde:\n        this.finishOp(tt.tilde, 1);\n        return;\n\n      case charCodes.atSign:\n        this.readToken_atSign();\n        return;\n\n      case charCodes.numberSign:\n        this.readToken_numberSign();\n        return;\n\n      case charCodes.backslash:\n        this.readWord();\n        return;\n\n      default:\n        if (isIdentifierStart(code)) {\n          this.readWord(code);\n          return;\n        }\n    }\n\n    throw this.raise(\n      Errors.InvalidOrUnexpectedToken,\n      this.state.curPosition(),\n      {\n        unexpected: String.fromCodePoint(code),\n      },\n    );\n  }\n\n  finishOp(type: TokenType, size: number): void {\n    const str = this.input.slice(this.state.pos, this.state.pos + size);\n    this.state.pos += size;\n    this.finishToken(type, str);\n  }\n\n  readRegexp(): void {\n    const startLoc = this.state.startLoc;\n    const start = this.state.start + 1;\n    let escaped, inClass;\n    let { pos } = this.state;\n    for (; ; ++pos) {\n      if (pos >= this.length) {\n        // FIXME: explain\n        throw this.raise(\n          Errors.UnterminatedRegExp,\n          createPositionWithColumnOffset(startLoc, 1),\n        );\n      }\n      const ch = this.input.charCodeAt(pos);\n      if (isNewLine(ch)) {\n        throw this.raise(\n          Errors.UnterminatedRegExp,\n          createPositionWithColumnOffset(startLoc, 1),\n        );\n      }\n      if (escaped) {\n        escaped = false;\n      } else {\n        if (ch === charCodes.leftSquareBracket) {\n          inClass = true;\n        } else if (ch === charCodes.rightSquareBracket && inClass) {\n          inClass = false;\n        } else if (ch === charCodes.slash && !inClass) {\n          break;\n        }\n        escaped = ch === charCodes.backslash;\n      }\n    }\n    const content = this.input.slice(start, pos);\n    ++pos;\n\n    let mods = \"\";\n\n    const nextPos = () =>\n      // (pos + 1) + 1 - start\n      createPositionWithColumnOffset(startLoc, pos + 2 - start);\n\n    while (pos < this.length) {\n      const cp = this.codePointAtPos(pos);\n      // It doesn't matter if cp > 0xffff, the loop will either throw or break because we check on cp\n      const char = String.fromCharCode(cp);\n\n      // @ts-expect-error VALID_REGEX_FLAGS.has should accept expanded type: number\n      if (VALID_REGEX_FLAGS.has(cp)) {\n        if (cp === charCodes.lowercaseV) {\n          if (mods.includes(\"u\")) {\n            this.raise(Errors.IncompatibleRegExpUVFlags, nextPos());\n          }\n        } else if (cp === charCodes.lowercaseU) {\n          if (mods.includes(\"v\")) {\n            this.raise(Errors.IncompatibleRegExpUVFlags, nextPos());\n          }\n        }\n        if (mods.includes(char)) {\n          this.raise(Errors.DuplicateRegExpFlags, nextPos());\n        }\n      } else if (isIdentifierChar(cp) || cp === charCodes.backslash) {\n        this.raise(Errors.MalformedRegExpFlags, nextPos());\n      } else {\n        break;\n      }\n\n      ++pos;\n      mods += char;\n    }\n    this.state.pos = pos;\n\n    this.finishToken(tt.regexp, {\n      pattern: content,\n      flags: mods,\n    });\n  }\n\n  // Read an integer in the given radix. Return null if zero digits\n  // were read, the integer value otherwise. When `len` is given, this\n  // will return `null` unless the integer has exactly `len` digits.\n  // When `forceLen` is `true`, it means that we already know that in case\n  // of a malformed number we have to skip `len` characters anyway, instead\n  // of bailing out early. For example, in \"\\u{123Z}\" we want to read up to }\n  // anyway, while in \"\\u00Z\" we will stop at Z instead of consuming four\n  // characters (and thus the closing quote).\n\n  readInt(\n    radix: number,\n    len?: number,\n    forceLen: boolean = false,\n    allowNumSeparator: boolean | \"bail\" = true,\n  ): number | null {\n    const { n, pos } = readInt(\n      this.input,\n      this.state.pos,\n      this.state.lineStart,\n      this.state.curLine,\n      radix,\n      len,\n      forceLen,\n      allowNumSeparator,\n      this.errorHandlers_readInt,\n      /* bailOnError */ false,\n    );\n    this.state.pos = pos;\n    return n;\n  }\n\n  readRadixNumber(radix: number): void {\n    const start = this.state.pos;\n    const startLoc = this.state.curPosition();\n    let isBigInt = false;\n\n    this.state.pos += 2; // 0x\n    const val = this.readInt(radix);\n    if (val == null) {\n      this.raise(\n        Errors.InvalidDigit,\n        // Numeric literals can't have newlines, so this is safe to do.\n        createPositionWithColumnOffset(startLoc, 2),\n        {\n          radix,\n        },\n      );\n    }\n    const next = this.input.charCodeAt(this.state.pos);\n\n    if (next === charCodes.lowercaseN) {\n      ++this.state.pos;\n      isBigInt = true;\n    } else if (next === charCodes.lowercaseM) {\n      throw this.raise(Errors.InvalidDecimal, startLoc);\n    }\n\n    if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {\n      throw this.raise(Errors.NumberIdentifier, this.state.curPosition());\n    }\n\n    if (isBigInt) {\n      const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, \"\");\n      this.finishToken(tt.bigint, str);\n      return;\n    }\n\n    this.finishToken(tt.num, val);\n  }\n\n  // Read an integer, octal integer, or floating-point number.\n\n  readNumber(startsWithDot: boolean): void {\n    const start = this.state.pos;\n    const startLoc = this.state.curPosition();\n    let isFloat = false;\n    let isBigInt = false;\n    let hasExponent = false;\n    let isOctal = false;\n\n    if (!startsWithDot && this.readInt(10) === null) {\n      this.raise(Errors.InvalidNumber, this.state.curPosition());\n    }\n    const hasLeadingZero =\n      this.state.pos - start >= 2 &&\n      this.input.charCodeAt(start) === charCodes.digit0;\n\n    if (hasLeadingZero) {\n      const integer = this.input.slice(start, this.state.pos);\n      this.recordStrictModeErrors(Errors.StrictOctalLiteral, startLoc);\n      if (!this.state.strict) {\n        // disallow numeric separators in non octal decimals and legacy octal likes\n        const underscorePos = integer.indexOf(\"_\");\n        if (underscorePos > 0) {\n          // Numeric literals can't have newlines, so this is safe to do.\n          this.raise(\n            Errors.ZeroDigitNumericSeparator,\n            createPositionWithColumnOffset(startLoc, underscorePos),\n          );\n        }\n      }\n      isOctal = hasLeadingZero && !/[89]/.test(integer);\n    }\n\n    let next = this.input.charCodeAt(this.state.pos);\n    if (next === charCodes.dot && !isOctal) {\n      ++this.state.pos;\n      this.readInt(10);\n      isFloat = true;\n      next = this.input.charCodeAt(this.state.pos);\n    }\n\n    if (\n      (next === charCodes.uppercaseE || next === charCodes.lowercaseE) &&\n      !isOctal\n    ) {\n      next = this.input.charCodeAt(++this.state.pos);\n      if (next === charCodes.plusSign || next === charCodes.dash) {\n        ++this.state.pos;\n      }\n      if (this.readInt(10) === null) {\n        this.raise(Errors.InvalidOrMissingExponent, startLoc);\n      }\n      isFloat = true;\n      hasExponent = true;\n      next = this.input.charCodeAt(this.state.pos);\n    }\n\n    if (next === charCodes.lowercaseN) {\n      // disallow floats, legacy octal syntax and non octal decimals\n      // new style octal (\"0o\") is handled in this.readRadixNumber\n      if (isFloat || hasLeadingZero) {\n        this.raise(Errors.InvalidBigIntLiteral, startLoc);\n      }\n      ++this.state.pos;\n      isBigInt = true;\n    }\n\n    if (!process.env.BABEL_8_BREAKING && next === charCodes.lowercaseM) {\n      this.expectPlugin(\"decimal\", this.state.curPosition());\n      if (hasExponent || hasLeadingZero) {\n        this.raise(Errors.InvalidDecimal, startLoc);\n      }\n      ++this.state.pos;\n      // eslint-disable-next-line no-var\n      var isDecimal = true;\n    }\n\n    if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {\n      throw this.raise(Errors.NumberIdentifier, this.state.curPosition());\n    }\n\n    // remove \"_\" for numeric literal separator, and trailing `m` or `n`\n    const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, \"\");\n\n    if (isBigInt) {\n      this.finishToken(tt.bigint, str);\n      return;\n    }\n\n    if (!process.env.BABEL_8_BREAKING && isDecimal) {\n      this.finishToken(tt.decimal, str);\n      return;\n    }\n\n    const val = isOctal ? parseInt(str, 8) : parseFloat(str);\n    this.finishToken(tt.num, val);\n  }\n\n  // Read a string value, interpreting backslash-escapes.\n\n  readCodePoint(throwOnInvalid: boolean): number | null {\n    const { code, pos } = readCodePoint(\n      this.input,\n      this.state.pos,\n      this.state.lineStart,\n      this.state.curLine,\n      throwOnInvalid,\n      this.errorHandlers_readCodePoint,\n    );\n    this.state.pos = pos;\n    return code;\n  }\n\n  readString(quote: number): void {\n    const { str, pos, curLine, lineStart } = readStringContents(\n      quote === charCodes.quotationMark ? \"double\" : \"single\",\n      this.input,\n      this.state.pos + 1, // skip the quote\n      this.state.lineStart,\n      this.state.curLine,\n      this.errorHandlers_readStringContents_string,\n    );\n    this.state.pos = pos + 1; // skip the quote\n    this.state.lineStart = lineStart;\n    this.state.curLine = curLine;\n    this.finishToken(tt.string, str);\n  }\n\n  // Reads template continuation `}...`\n  readTemplateContinuation(): void {\n    if (!this.match(tt.braceR)) {\n      this.unexpected(null, tt.braceR);\n    }\n    // rewind pos to `}`\n    this.state.pos--;\n    this.readTemplateToken();\n  }\n\n  // Reads template string tokens.\n  readTemplateToken(): void {\n    const opening = this.input[this.state.pos];\n    const { str, firstInvalidLoc, pos, curLine, lineStart } =\n      readStringContents(\n        \"template\",\n        this.input,\n        this.state.pos + 1, // skip '`' or `}`\n        this.state.lineStart,\n        this.state.curLine,\n        this.errorHandlers_readStringContents_template,\n      );\n    this.state.pos = pos + 1; // skip '`' or `$`\n    this.state.lineStart = lineStart;\n    this.state.curLine = curLine;\n\n    if (firstInvalidLoc) {\n      this.state.firstInvalidTemplateEscapePos = new Position(\n        firstInvalidLoc.curLine,\n        firstInvalidLoc.pos - firstInvalidLoc.lineStart,\n        this.sourceToOffsetPos(firstInvalidLoc.pos),\n      );\n    }\n\n    if (this.input.codePointAt(pos) === charCodes.graveAccent) {\n      this.finishToken(\n        tt.templateTail,\n        firstInvalidLoc ? null : opening + str + \"`\",\n      );\n    } else {\n      this.state.pos++; // skip '{'\n      this.finishToken(\n        tt.templateNonTail,\n        firstInvalidLoc ? null : opening + str + \"${\",\n      );\n    }\n  }\n\n  recordStrictModeErrors(toParseError: DeferredStrictError, at: Position) {\n    const index = at.index;\n\n    if (this.state.strict && !this.state.strictErrors.has(index)) {\n      this.raise(toParseError, at);\n    } else {\n      this.state.strictErrors.set(index, [toParseError, at]);\n    }\n  }\n\n  // Read an identifier, and return it as a string. Sets `this.state.containsEsc`\n  // to whether the word contained a '\\u' escape.\n  //\n  // Incrementally adds only escaped chars, adding other chunks as-is\n  // as a micro-optimization.\n  //\n  // When `firstCode` is given, it assumes it is always an identifier start and\n  // will skip reading start position again\n\n  readWord1(firstCode?: number): string {\n    this.state.containsEsc = false;\n    let word = \"\";\n    const start = this.state.pos;\n    let chunkStart = this.state.pos;\n    if (firstCode !== undefined) {\n      this.state.pos += firstCode <= 0xffff ? 1 : 2;\n    }\n\n    while (this.state.pos < this.length) {\n      const ch = this.codePointAtPos(this.state.pos);\n      if (isIdentifierChar(ch)) {\n        this.state.pos += ch <= 0xffff ? 1 : 2;\n      } else if (ch === charCodes.backslash) {\n        this.state.containsEsc = true;\n\n        word += this.input.slice(chunkStart, this.state.pos);\n        const escStart = this.state.curPosition();\n        const identifierCheck =\n          this.state.pos === start ? isIdentifierStart : isIdentifierChar;\n\n        if (this.input.charCodeAt(++this.state.pos) !== charCodes.lowercaseU) {\n          this.raise(Errors.MissingUnicodeEscape, this.state.curPosition());\n          chunkStart = this.state.pos - 1;\n          continue;\n        }\n\n        ++this.state.pos;\n        const esc = this.readCodePoint(true);\n        if (esc !== null) {\n          if (!identifierCheck(esc)) {\n            this.raise(Errors.EscapedCharNotAnIdentifier, escStart);\n          }\n\n          word += String.fromCodePoint(esc);\n        }\n        chunkStart = this.state.pos;\n      } else {\n        break;\n      }\n    }\n    return word + this.input.slice(chunkStart, this.state.pos);\n  }\n\n  // Read an identifier or keyword token. Will check for reserved\n  // words when necessary.\n\n  readWord(firstCode?: number): void {\n    const word = this.readWord1(firstCode);\n    const type = keywordTypes.get(word);\n    if (type !== undefined) {\n      // We don't use word as state.value here because word is a dynamic string\n      // while token label is a shared constant string\n      this.finishToken(type, tokenLabelName(type));\n    } else {\n      this.finishToken(tt.name, word);\n    }\n  }\n\n  checkKeywordEscapes(): void {\n    const { type } = this.state;\n    if (tokenIsKeyword(type) && this.state.containsEsc) {\n      this.raise(Errors.InvalidEscapedReservedWord, this.state.startLoc, {\n        reservedWord: tokenLabelName(type),\n      });\n    }\n  }\n\n  /**\n   * Raise a `ParseError` given the appropriate properties. If passed a\n   * `Position` for the `at` property, raises the `ParseError` at that location.\n   * Otherwise, if passed a `Node`, raises the `ParseError` at the start\n   * location of that `Node`.\n   *\n   * If `errorRecovery` is `true`, the error is pushed to the errors array and\n   * returned. If `errorRecovery` is `false`, the error is instead thrown.\n   *\n   * The return type is marked as `never` for simplicity, as error recovery\n   * will create types in an invalid AST shape.\n   */\n  raise<ErrorDetails = object>(\n    toParseError: ParseErrorConstructor<ErrorDetails>,\n    at: Position | Undone<Node>,\n    details: ErrorDetails = {} as ErrorDetails,\n  ): ParseError<ErrorDetails> {\n    const loc = at instanceof Position ? at : at.loc.start;\n    const error = toParseError(loc, details);\n\n    if (!(this.optionFlags & OptionFlags.ErrorRecovery)) throw error;\n    if (!this.isLookahead) this.state.errors.push(error);\n\n    return error;\n  }\n\n  /**\n   * If `errorRecovery` is `false`, this method behaves identically to `raise`.\n   * If `errorRecovery` is `true`, this method will first see if there is\n   * already an error stored at the same `Position`, and replaces it with the\n   * one generated here.\n   */\n  raiseOverwrite<ErrorDetails>(\n    toParseError: ParseErrorConstructor<ErrorDetails>,\n    at: Position | Undone<Node>,\n    details: ErrorDetails = {} as ErrorDetails,\n  ): ParseError<ErrorDetails> | never {\n    const loc = at instanceof Position ? at : at.loc.start;\n    const pos = loc.index;\n    const errors = this.state.errors;\n\n    for (let i = errors.length - 1; i >= 0; i--) {\n      const error = errors[i];\n      if (error.loc.index === pos) {\n        return (errors[i] = toParseError(loc, details));\n      }\n      if (error.loc.index < pos) break;\n    }\n\n    return this.raise(toParseError, at, details);\n  }\n\n  // updateContext is used by the jsx plugin\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  updateContext(prevType: TokenType): void {}\n\n  // Raise an unexpected token error. Can take the expected token type.\n  unexpected(loc?: Position | null, type?: TokenType): void {\n    throw this.raise(\n      Errors.UnexpectedToken,\n      loc != null ? loc : this.state.startLoc,\n      {\n        expected: type ? tokenLabelName(type) : null,\n      },\n    );\n  }\n\n  expectPlugin(pluginName: Plugin, loc?: Position): true {\n    if (this.hasPlugin(pluginName)) {\n      return true;\n    }\n\n    throw this.raise(\n      Errors.MissingPlugin,\n      loc != null ? loc : this.state.startLoc,\n      {\n        missingPlugin: [pluginName],\n      },\n    );\n  }\n\n  expectOnePlugin(pluginNames: Plugin[]): void {\n    if (!pluginNames.some(name => this.hasPlugin(name))) {\n      throw this.raise(Errors.MissingOneOfPlugins, this.state.startLoc, {\n        missingPlugin: pluginNames,\n      });\n    }\n  }\n\n  errorBuilder(error: ParseErrorConstructor<object>) {\n    return (pos: number, lineStart: number, curLine: number) => {\n      this.raise(error, buildPosition(pos, lineStart, curLine));\n    };\n  }\n\n  errorHandlers_readInt: IntErrorHandlers = {\n    invalidDigit: (pos, lineStart, curLine, radix) => {\n      if (!(this.optionFlags & OptionFlags.ErrorRecovery)) return false;\n\n      this.raise(Errors.InvalidDigit, buildPosition(pos, lineStart, curLine), {\n        radix,\n      });\n      // Continue parsing the number as if there was no invalid digit.\n      return true;\n    },\n    numericSeparatorInEscapeSequence: this.errorBuilder(\n      Errors.NumericSeparatorInEscapeSequence,\n    ),\n    unexpectedNumericSeparator: this.errorBuilder(\n      Errors.UnexpectedNumericSeparator,\n    ),\n  };\n\n  errorHandlers_readCodePoint: CodePointErrorHandlers = {\n    ...this.errorHandlers_readInt,\n    invalidEscapeSequence: this.errorBuilder(Errors.InvalidEscapeSequence),\n    invalidCodePoint: this.errorBuilder(Errors.InvalidCodePoint),\n  };\n\n  errorHandlers_readStringContents_string: StringContentsErrorHandlers = {\n    ...this.errorHandlers_readCodePoint,\n    strictNumericEscape: (pos, lineStart, curLine) => {\n      this.recordStrictModeErrors(\n        Errors.StrictNumericEscape,\n        buildPosition(pos, lineStart, curLine),\n      );\n    },\n    unterminated: (pos, lineStart, curLine) => {\n      throw this.raise(\n        Errors.UnterminatedString, // Report the error at the string quote\n        buildPosition(pos - 1, lineStart, curLine),\n      );\n    },\n  };\n\n  errorHandlers_readStringContents_template: StringContentsErrorHandlers = {\n    ...this.errorHandlers_readCodePoint,\n    strictNumericEscape: this.errorBuilder(Errors.StrictNumericEscape),\n    unterminated: (pos, lineStart, curLine) => {\n      throw this.raise(\n        Errors.UnterminatedTemplate,\n        buildPosition(pos, lineStart, curLine),\n      );\n    },\n  };\n}\n","import { ClassElementType } from \"./scopeflags.ts\";\nimport type { Position } from \"./location.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport type Tokenizer from \"../tokenizer/index.ts\";\n\nexport class ClassScope {\n  // A list of private named declared in the current class\n  privateNames: Set<string> = new Set();\n\n  // A list of private getters of setters without their counterpart\n  loneAccessors: Map<string, ClassElementType> = new Map();\n\n  // A list of private names used before being defined, mapping to\n  // their position.\n  undefinedPrivateNames: Map<string, Position> = new Map();\n}\n\nexport default class ClassScopeHandler {\n  parser: Tokenizer;\n  stack: Array<ClassScope> = [];\n  undefinedPrivateNames: Map<string, Position> = new Map();\n\n  constructor(parser: Tokenizer) {\n    this.parser = parser;\n  }\n\n  current(): ClassScope {\n    return this.stack[this.stack.length - 1];\n  }\n\n  enter() {\n    this.stack.push(new ClassScope());\n  }\n\n  exit() {\n    const oldClassScope = this.stack.pop();\n\n    // Migrate the usage of not yet defined private names to the outer\n    // class scope, or raise an error if we reached the top-level scope.\n\n    const current = this.current();\n\n    // Array.from is needed because this is compiled to an array-like for loop\n    for (const [name, loc] of Array.from(oldClassScope.undefinedPrivateNames)) {\n      if (current) {\n        if (!current.undefinedPrivateNames.has(name)) {\n          current.undefinedPrivateNames.set(name, loc);\n        }\n      } else {\n        this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, {\n          identifierName: name,\n        });\n      }\n    }\n  }\n\n  declarePrivateName(\n    name: string,\n    elementType: ClassElementType,\n    loc: Position,\n  ) {\n    const { privateNames, loneAccessors, undefinedPrivateNames } =\n      this.current();\n    let redefined = privateNames.has(name);\n\n    if (elementType & ClassElementType.KIND_ACCESSOR) {\n      const accessor = redefined && loneAccessors.get(name);\n      if (accessor) {\n        const oldStatic = accessor & ClassElementType.FLAG_STATIC;\n        const newStatic = elementType & ClassElementType.FLAG_STATIC;\n\n        const oldKind = accessor & ClassElementType.KIND_ACCESSOR;\n        const newKind = elementType & ClassElementType.KIND_ACCESSOR;\n\n        // The private name can be duplicated only if it is used by\n        // two accessors with different kind (get and set), and if\n        // they have the same placement (static or not).\n        redefined = oldKind === newKind || oldStatic !== newStatic;\n\n        if (!redefined) loneAccessors.delete(name);\n      } else if (!redefined) {\n        loneAccessors.set(name, elementType);\n      }\n    }\n\n    if (redefined) {\n      this.parser.raise(Errors.PrivateNameRedeclaration, loc, {\n        identifierName: name,\n      });\n    }\n\n    privateNames.add(name);\n    undefinedPrivateNames.delete(name);\n  }\n\n  usePrivateName(name: string, loc: Position) {\n    let classScope;\n    for (classScope of this.stack) {\n      if (classScope.privateNames.has(name)) return;\n    }\n\n    if (classScope) {\n      classScope.undefinedPrivateNames.set(name, loc);\n    } else {\n      // top-level\n      this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, {\n        identifierName: name,\n      });\n    }\n  }\n}\n","import { Errors, type ParseErrorConstructor } from \"../parse-error.ts\";\nimport type { Position } from \"./location.ts\";\nimport type { Node } from \"../types.ts\";\nimport type Tokenizer from \"../tokenizer/index.ts\";\nimport type { Undone } from \"../parser/node.ts\";\n\n/**\n * @module util/expression-scope\n\nExpressionScope is used to track declaration errors in these ambiguous patterns:\n\n- CoverParenthesizedExpressionAndArrowParameterList\n  e.g. we don't know if `({ x })` is an parenthesized expression or an\n  arrow function parameters until we see an `=>` after `)`.\n\n- CoverCallExpressionAndAsyncArrowHead\n  e.g. we don't know if `async({ x })` is a call expression or an async arrow\n  function parameters until we see an `=>` after `)`\n\nThe following declaration errors (@see parser-errors/standard) will be recorded in\nsome expression scopes and thrown later when we know what the ambiguous pattern is\n\n- AwaitBindingIdentifier\n- AwaitExpressionFormalParameter\n- YieldInParameter\n- InvalidParenthesizedAssignment when parenthesized is an identifier\n\nThere are four different expression scope\n- Expression\n  A general scope that represents program / function body / static block. No errors\n  will be recorded nor thrown in this scope.\n\n- MaybeArrowParameterDeclaration\n  A scope that represents ambiguous arrow head e.g. `(x)`. Errors will be recorded\n  alongside parent scopes and thrown when `ExpressionScopeHandler#validateAsPattern`\n  is called.\n\n- MaybeAsyncArrowParameterDeclaration\n  A scope that represents ambiguous async arrow head e.g. `async(x)`. Errors will\n  be recorded alongside parent scopes and thrown when\n  `ExpressionScopeHandler#validateAsPattern` is called.\n\n- ParameterDeclaration\n  A scope that represents unambiguous function parameters `function(x)`. Errors\n  recorded in this scope will be thrown immediately. No errors will be recorded in\n  this scope.\n\n// @see {@link https://docs.google.com/document/d/1FAvEp9EUK-G8kHfDIEo_385Hs2SUBCYbJ5H-NnLvq8M | V8 Expression Scope design docs}\n */\n\nconst enum ExpressionScopeType {\n  kExpression = 0,\n  kMaybeArrowParameterDeclaration = 1,\n  kMaybeAsyncArrowParameterDeclaration = 2,\n  kParameterDeclaration = 3,\n}\n\nclass ExpressionScope {\n  declare type: ExpressionScopeType;\n\n  constructor(type: ExpressionScopeType = ExpressionScopeType.kExpression) {\n    this.type = type;\n  }\n\n  canBeArrowParameterDeclaration(): this is ArrowHeadParsingScope {\n    return (\n      this.type === ExpressionScopeType.kMaybeAsyncArrowParameterDeclaration ||\n      this.type === ExpressionScopeType.kMaybeArrowParameterDeclaration\n    );\n  }\n\n  isCertainlyParameterDeclaration() {\n    return this.type === ExpressionScopeType.kParameterDeclaration;\n  }\n}\n\ntype ArrowHeadParsingParameterInitializerError =\n  | typeof Errors.AwaitExpressionFormalParameter\n  | typeof Errors.YieldInParameter;\ntype ArrowHeadParsingDeclarationError =\n  | ArrowHeadParsingParameterInitializerError\n  | typeof Errors.InvalidParenthesizedAssignment\n  | typeof Errors.AwaitBindingIdentifier;\n\nclass ArrowHeadParsingScope extends ExpressionScope {\n  declarationErrors: Map<number, [ParseErrorConstructor<object>, Position]> =\n    new Map();\n  constructor(\n    type:\n      | ExpressionScopeType.kMaybeArrowParameterDeclaration\n      | ExpressionScopeType.kMaybeAsyncArrowParameterDeclaration,\n  ) {\n    super(type);\n  }\n  recordDeclarationError(\n    ParsingErrorClass: ParseErrorConstructor<object>,\n    at: Position,\n  ) {\n    const index = at.index;\n\n    this.declarationErrors.set(index, [ParsingErrorClass, at]);\n  }\n  clearDeclarationError(index: number) {\n    this.declarationErrors.delete(index);\n  }\n  iterateErrors(\n    iterator: (a: [ArrowHeadParsingDeclarationError, Position]) => void,\n  ) {\n    this.declarationErrors.forEach(iterator);\n  }\n}\n\nexport default class ExpressionScopeHandler {\n  parser: Tokenizer;\n  stack: Array<ExpressionScope> = [new ExpressionScope()];\n\n  constructor(parser: Tokenizer) {\n    this.parser = parser;\n  }\n  enter(scope: ExpressionScope) {\n    this.stack.push(scope);\n  }\n\n  exit() {\n    this.stack.pop();\n  }\n\n  /**\n   * Record likely parameter initializer errors\n   *\n   * When current scope is a ParameterDeclaration, the error will be thrown immediately,\n   * otherwise it will be recorded to any ancestry MaybeArrowParameterDeclaration and\n   * MaybeAsyncArrowParameterDeclaration scope until an Expression scope is seen.\n   */\n  recordParameterInitializerError(\n    toParseError: ArrowHeadParsingParameterInitializerError,\n    node: Undone<Node>,\n  ): void {\n    const origin = node.loc.start;\n    const { stack } = this;\n    let i = stack.length - 1;\n    let scope: ExpressionScope = stack[i];\n    while (!scope.isCertainlyParameterDeclaration()) {\n      if (scope.canBeArrowParameterDeclaration()) {\n        scope.recordDeclarationError(toParseError, origin);\n      } else {\n        /*:: invariant(scope.type == ExpressionScopeType.kExpression) */\n        // Type-Expression is the boundary where initializer error can populate to\n        return;\n      }\n      scope = stack[--i];\n    }\n    this.parser.raise(toParseError, origin);\n  }\n\n  /**\n   * Record errors that must be thrown if the current pattern ends up being an arrow\n   * function parameter. This is used to record parenthesized identifiers, and to record\n   * \"a as T\" and \"<T> a\" type assertions when parsing typescript.\n   *\n   * A parenthesized identifier (or type assertion) in LHS can be ambiguous because the assignment\n   * can be transformed to an assignable later, but not vice versa:\n   * For example, in `([(a) = []] = []) => {}`, we think `(a) = []` is an LHS in `[(a) = []]`,\n   * an LHS within `[(a) = []] = []`. However the LHS chain is then transformed by toAssignable,\n   * and we should throw assignment `(a)`, which is only valid in LHS. Hence we record the\n   * location of parenthesized `(a)` to current scope if it is one of MaybeArrowParameterDeclaration\n   * and MaybeAsyncArrowParameterDeclaration\n   *\n   * Unlike `recordParameterInitializerError`, we don't record to ancestry scope because we\n   * validate arrow head parsing scope before exit, and then the LHS will be unambiguous:\n   * For example, in `( x = ( [(a) = []] = [] ) ) => {}`, we should not record `(a)` in `( x = ... ) =>`\n   * arrow scope because when we finish parsing `( [(a) = []] = [] )`, it is an unambiguous assignment\n   * expression and can not be cast to pattern\n   */\n  recordArrowParameterBindingError(\n    error: ParseErrorConstructor<object>,\n    node: Node,\n  ): void {\n    const { stack } = this;\n    const scope: ExpressionScope = stack[stack.length - 1];\n    const origin = node.loc.start;\n    if (scope.isCertainlyParameterDeclaration()) {\n      this.parser.raise(error, origin);\n    } else if (scope.canBeArrowParameterDeclaration()) {\n      scope.recordDeclarationError(error, origin);\n    } else {\n      return;\n    }\n  }\n\n  /**\n   * Record likely async arrow parameter errors\n   *\n   * Errors will be recorded to any ancestry MaybeAsyncArrowParameterDeclaration\n   * scope until an Expression scope is seen.\n   */\n  recordAsyncArrowParametersError(at: Position): void {\n    const { stack } = this;\n    let i = stack.length - 1;\n    let scope: ExpressionScope = stack[i];\n    while (scope.canBeArrowParameterDeclaration()) {\n      if (\n        scope.type === ExpressionScopeType.kMaybeAsyncArrowParameterDeclaration\n      ) {\n        scope.recordDeclarationError(Errors.AwaitBindingIdentifier, at);\n      }\n      scope = stack[--i];\n    }\n  }\n\n  validateAsPattern(): void {\n    const { stack } = this;\n    const currentScope = stack[stack.length - 1];\n    if (!currentScope.canBeArrowParameterDeclaration()) return;\n    currentScope.iterateErrors(([toParseError, loc]) => {\n      this.parser.raise(toParseError, loc);\n      // iterate from parent scope\n      let i = stack.length - 2;\n      let scope = stack[i];\n      while (scope.canBeArrowParameterDeclaration()) {\n        scope.clearDeclarationError(loc.index);\n        scope = stack[--i];\n      }\n    });\n  }\n}\n\nexport function newParameterDeclarationScope() {\n  return new ExpressionScope(ExpressionScopeType.kParameterDeclaration);\n}\n\nexport function newArrowHeadScope() {\n  return new ArrowHeadParsingScope(\n    ExpressionScopeType.kMaybeArrowParameterDeclaration,\n  );\n}\n\nexport function newAsyncArrowScope() {\n  return new ArrowHeadParsingScope(\n    ExpressionScopeType.kMaybeAsyncArrowParameterDeclaration,\n  );\n}\n\nexport function newExpressionScope() {\n  return new ExpressionScope();\n}\n","import type { Position } from \"../util/location.ts\";\nimport {\n  tokenIsLiteralPropertyName,\n  tt,\n  type TokenType,\n} from \"../tokenizer/types.ts\";\nimport Tokenizer from \"../tokenizer/index.ts\";\nimport type State from \"../tokenizer/state.ts\";\nimport type {\n  EstreePropertyDefinition,\n  Node,\n  ObjectMethod,\n  ObjectProperty,\n  PrivateName,\n} from \"../types.d.ts\";\nimport { hasNewLine } from \"../util/whitespace.ts\";\nimport { isIdentifierChar } from \"../util/identifier.ts\";\nimport ClassScopeHandler from \"../util/class-scope.ts\";\nimport ExpressionScopeHandler from \"../util/expression-scope.ts\";\nimport { ScopeFlag } from \"../util/scopeflags.ts\";\nimport ProductionParameterHandler, {\n  ParamKind,\n} from \"../util/production-parameter.ts\";\nimport {\n  Errors,\n  type ParseError,\n  type ParseErrorConstructor,\n} from \"../parse-error.ts\";\nimport type Parser from \"./index.ts\";\n\nimport type ScopeHandler from \"../util/scope.ts\";\nimport { OptionFlags } from \"../options.ts\";\n\ntype TryParse<Node, Error, Thrown, Aborted, FailState> = {\n  node: Node;\n  error: Error;\n  thrown: Thrown;\n  aborted: Aborted;\n  failState: FailState;\n};\n\n// ## Parser utilities\n\nexport default abstract class UtilParser extends Tokenizer {\n  // Forward-declaration: defined in parser/index.js\n  abstract getScopeHandler(): new (...args: any) => ScopeHandler;\n\n  addExtra(\n    node: Partial<Node>,\n    key: string,\n    value: any,\n    enumerable: boolean = true,\n  ): void {\n    if (!node) return;\n\n    let { extra } = node;\n    if (extra == null) {\n      extra = {};\n      node.extra = extra;\n    }\n\n    if (enumerable) {\n      extra[key] = value;\n    } else {\n      Object.defineProperty(extra, key, { enumerable, value });\n    }\n  }\n\n  // Tests whether parsed token is a contextual keyword.\n\n  isContextual(token: TokenType): boolean {\n    return this.state.type === token && !this.state.containsEsc;\n  }\n\n  isUnparsedContextual(nameStart: number, name: string): boolean {\n    if (this.input.startsWith(name, nameStart)) {\n      const nextCh = this.input.charCodeAt(nameStart + name.length);\n      return !(\n        isIdentifierChar(nextCh) ||\n        // check if `nextCh is between 0xd800 - 0xdbff,\n        // if `nextCh` is NaN, `NaN & 0xfc00` is 0, the function\n        // returns true\n        (nextCh & 0xfc00) === 0xd800\n      );\n    }\n    return false;\n  }\n\n  isLookaheadContextual(name: string): boolean {\n    const next = this.nextTokenStart();\n    return this.isUnparsedContextual(next, name);\n  }\n\n  // Consumes contextual keyword if possible.\n\n  eatContextual(token: TokenType): boolean {\n    if (this.isContextual(token)) {\n      this.next();\n      return true;\n    }\n    return false;\n  }\n\n  // Asserts that following token is given contextual keyword.\n\n  expectContextual(\n    token: TokenType,\n    toParseError?: ParseErrorConstructor<any>,\n  ): void {\n    if (!this.eatContextual(token)) {\n      if (toParseError != null) {\n        throw this.raise(toParseError, this.state.startLoc);\n      }\n      this.unexpected(null, token);\n    }\n  }\n\n  // Test whether a semicolon can be inserted at the current position.\n\n  canInsertSemicolon(): boolean {\n    return (\n      this.match(tt.eof) ||\n      this.match(tt.braceR) ||\n      this.hasPrecedingLineBreak()\n    );\n  }\n\n  hasPrecedingLineBreak(): boolean {\n    return hasNewLine(\n      this.input,\n      this.offsetToSourcePos(this.state.lastTokEndLoc.index),\n      this.state.start,\n    );\n  }\n\n  hasFollowingLineBreak(): boolean {\n    return hasNewLine(this.input, this.state.end, this.nextTokenStart());\n  }\n\n  isLineTerminator(): boolean {\n    return this.eat(tt.semi) || this.canInsertSemicolon();\n  }\n\n  // Consume a semicolon, or, failing that, see if we are allowed to\n  // pretend that there is a semicolon at this position.\n\n  semicolon(allowAsi: boolean = true): void {\n    if (allowAsi ? this.isLineTerminator() : this.eat(tt.semi)) return;\n    this.raise(Errors.MissingSemicolon, this.state.lastTokEndLoc);\n  }\n\n  // Expect a token of a given type. If found, consume it, otherwise,\n  // raise an unexpected token error at given pos.\n\n  expect(type: TokenType, loc?: Position | null): void {\n    if (!this.eat(type)) {\n      this.unexpected(loc, type);\n    }\n  }\n\n  // tryParse will clone parser state.\n  // It is expensive and should be used with cautions\n  tryParse<T extends Node | ReadonlyArray<Node>>(\n    fn: (abort: (node?: T) => never) => T,\n    oldState: State = this.state.clone(),\n  ):\n    | TryParse<T, null, false, false, null>\n    | TryParse<T | null, ParseError<any>, boolean, false, State>\n    | TryParse<T | null, null, false, true, State> {\n    const abortSignal: {\n      node: T | null;\n    } = { node: null };\n    try {\n      const node = fn((node = null) => {\n        abortSignal.node = node;\n        // eslint-disable-next-line @typescript-eslint/only-throw-error\n        throw abortSignal;\n      });\n      if (this.state.errors.length > oldState.errors.length) {\n        const failState = this.state;\n        this.state = oldState;\n        // tokensLength should be preserved during error recovery mode\n        // since the parser does not halt and will instead parse the\n        // remaining tokens\n        this.state.tokensLength = failState.tokensLength;\n        return {\n          node,\n          error: failState.errors[oldState.errors.length],\n          thrown: false,\n          aborted: false,\n          failState,\n        };\n      }\n\n      return {\n        node,\n        error: null,\n        thrown: false,\n        aborted: false,\n        failState: null,\n      };\n    } catch (error) {\n      const failState = this.state;\n      this.state = oldState;\n      if (error instanceof SyntaxError) {\n        // @ts-expect-error casting general syntax error to parse error\n        return { node: null, error, thrown: true, aborted: false, failState };\n      }\n      if (error === abortSignal) {\n        return {\n          node: abortSignal.node,\n          error: null,\n          thrown: false,\n          aborted: true,\n          failState,\n        };\n      }\n\n      throw error;\n    }\n  }\n\n  checkExpressionErrors(\n    refExpressionErrors: ExpressionErrors | undefined | null,\n    andThrow: boolean,\n  ) {\n    if (!refExpressionErrors) return false;\n    const {\n      shorthandAssignLoc,\n      doubleProtoLoc,\n      privateKeyLoc,\n      optionalParametersLoc,\n      voidPatternLoc,\n    } = refExpressionErrors;\n\n    const hasErrors =\n      !!shorthandAssignLoc ||\n      !!doubleProtoLoc ||\n      !!optionalParametersLoc ||\n      !!privateKeyLoc ||\n      !!voidPatternLoc;\n\n    if (!andThrow) {\n      return hasErrors;\n    }\n\n    if (shorthandAssignLoc != null) {\n      this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc);\n    }\n\n    if (doubleProtoLoc != null) {\n      this.raise(Errors.DuplicateProto, doubleProtoLoc);\n    }\n\n    if (privateKeyLoc != null) {\n      this.raise(Errors.UnexpectedPrivateField, privateKeyLoc);\n    }\n\n    if (optionalParametersLoc != null) {\n      this.unexpected(optionalParametersLoc);\n    }\n\n    if (voidPatternLoc != null) {\n      this.raise(Errors.InvalidCoverDiscardElement, voidPatternLoc);\n    }\n  }\n\n  /**\n   * Test if current token is a literal property name\n   * https://tc39.es/ecma262/#prod-LiteralPropertyName\n   * LiteralPropertyName:\n   *   IdentifierName\n   *   StringLiteral\n   *   NumericLiteral\n   *   BigIntLiteral\n   */\n  isLiteralPropertyName(): boolean {\n    return tokenIsLiteralPropertyName(this.state.type);\n  }\n\n  /**\n   * Test if given node is a PrivateName\n   * will be overridden in ESTree plugin\n   */\n  isPrivateName(node: Node): node is PrivateName {\n    return node.type === \"PrivateName\";\n  }\n\n  /**\n   * Return the string value of a given private name\n   * WITHOUT `#`\n   * @see {@link https://tc39.es/ecma262/#sec-static-semantics-stringvalue}\n   */\n  getPrivateNameSV(node: PrivateName): string {\n    return node.id.name;\n  }\n\n  /**\n   * Return whether the given node is a member/optional chain that\n   * contains a private name as its property\n   * It is overridden in ESTree plugin\n   */\n  hasPropertyAsPrivateName(node: Node): boolean {\n    return (\n      (node.type === \"MemberExpression\" ||\n        node.type === \"OptionalMemberExpression\") &&\n      this.isPrivateName(node.property)\n    );\n  }\n\n  isObjectProperty(\n    node: Node,\n  ): node is ObjectProperty | EstreePropertyDefinition {\n    return node.type === \"ObjectProperty\";\n  }\n\n  isObjectMethod(node: Node): node is ObjectMethod {\n    return node.type === \"ObjectMethod\";\n  }\n\n  initializeScopes(\n    this: Parser,\n    inModule: boolean = this.options.sourceType === \"module\",\n  ): () => void {\n    // Initialize state\n    const oldLabels = this.state.labels;\n    this.state.labels = [];\n\n    const oldExportedIdentifiers = this.exportedIdentifiers;\n    this.exportedIdentifiers = new Set();\n\n    // initialize scopes\n    const oldInModule = this.inModule;\n    this.inModule = inModule;\n\n    const oldScope = this.scope;\n    const ScopeHandler = this.getScopeHandler();\n    this.scope = new ScopeHandler(this, inModule);\n\n    const oldProdParam = this.prodParam;\n    this.prodParam = new ProductionParameterHandler();\n\n    const oldClassScope = this.classScope;\n    this.classScope = new ClassScopeHandler(this);\n\n    const oldExpressionScope = this.expressionScope;\n    this.expressionScope = new ExpressionScopeHandler(this);\n\n    return () => {\n      // Revert state\n      this.state.labels = oldLabels;\n      this.exportedIdentifiers = oldExportedIdentifiers;\n\n      // Revert scopes\n      this.inModule = oldInModule;\n      this.scope = oldScope;\n      this.prodParam = oldProdParam;\n      this.classScope = oldClassScope;\n      this.expressionScope = oldExpressionScope;\n    };\n  }\n\n  enterInitialScopes() {\n    let paramFlags = ParamKind.PARAM;\n    if (\n      this.inModule ||\n      this.optionFlags & OptionFlags.AllowAwaitOutsideFunction\n    ) {\n      paramFlags |= ParamKind.PARAM_AWAIT;\n    }\n    if (this.optionFlags & OptionFlags.AllowYieldOutsideFunction) {\n      paramFlags |= ParamKind.PARAM_YIELD;\n    }\n    // The inModule flag ensures that the module block within a CommonJS source\n    // will be treated as an ES module.\n    const isCommonJS = !this.inModule && this.options.sourceType === \"commonjs\";\n    if (\n      isCommonJS ||\n      this.optionFlags & OptionFlags.AllowReturnOutsideFunction\n    ) {\n      paramFlags |= ParamKind.PARAM_RETURN;\n    }\n    this.prodParam.enter(paramFlags);\n    let scopeFlags = isCommonJS ? ScopeFlag.FUNCTION : ScopeFlag.PROGRAM;\n    if (this.optionFlags & OptionFlags.AllowNewTargetOutsideFunction) {\n      scopeFlags |= ScopeFlag.NEW_TARGET;\n    }\n    this.scope.enter(scopeFlags);\n  }\n\n  checkDestructuringPrivate(refExpressionErrors: ExpressionErrors) {\n    const { privateKeyLoc } = refExpressionErrors;\n    if (privateKeyLoc !== null) {\n      this.expectPlugin(\"destructuringPrivate\", privateKeyLoc);\n    }\n  }\n}\n\n/**\n * The ExpressionErrors is a context struct used to track ambiguous patterns\n * When we are sure the parsed pattern is a RHS, which means it is not a pattern,\n * we will throw on this position on invalid assign syntax, otherwise it will be reset to null\n *\n * Types of ExpressionErrors:\n *\n * - **shorthandAssignLoc**: track initializer `=` position\n * - **doubleProtoLoc**: track the duplicate `__proto__` key position\n * - **privateKeyLoc**: track private key `#p` position\n * - **optionalParametersLoc**: track the optional parameter (`?`).\n *   It's only used by typescript and flow plugins\n */\nexport class ExpressionErrors {\n  shorthandAssignLoc: Position | undefined | null = null;\n  doubleProtoLoc: Position | undefined | null = null;\n  privateKeyLoc: Position | undefined | null = null;\n  optionalParametersLoc: Position | undefined | null = null;\n  voidPatternLoc: Position | undefined | null = null;\n}\n","import UtilParser from \"./util.ts\";\nimport { SourceLocation, type Position } from \"../util/location.ts\";\nimport type {\n  Comment,\n  Node as NodeType,\n  NodeBase,\n  EstreeLiteral,\n  Identifier,\n  Placeholder,\n  StringLiteral,\n} from \"../types.ts\";\nimport { OptionFlags } from \"../options.ts\";\n\n// Start an AST node, attaching a start offset.\n\nclass Node implements NodeBase {\n  constructor(parser: UtilParser, pos: number, loc: Position) {\n    this.start = pos;\n    this.end = 0;\n    this.loc = new SourceLocation(loc);\n    if (parser?.optionFlags & OptionFlags.Ranges) this.range = [pos, 0];\n    if (parser?.filename) this.loc.filename = parser.filename;\n  }\n\n  type: string = \"\";\n  declare start: number;\n  declare end: number;\n  declare loc: SourceLocation;\n  declare range: [number, number];\n  declare leadingComments: Array<Comment>;\n  declare trailingComments: Array<Comment>;\n  declare innerComments: Array<Comment>;\n  declare extra: {\n    [key: string]: any;\n  };\n}\nconst NodePrototype = Node.prototype;\n\nif (!process.env.BABEL_8_BREAKING) {\n  // @ts-expect-error __clone is not defined in Node prototype\n  NodePrototype.__clone = function (): Node {\n    const newNode = new Node(undefined, this.start, this.loc.start);\n    const keys = Object.keys(this) as (keyof Node)[];\n    for (let i = 0, length = keys.length; i < length; i++) {\n      const key = keys[i];\n      // Do not clone comments that are already attached to the node\n      if (\n        key !== \"leadingComments\" &&\n        key !== \"trailingComments\" &&\n        key !== \"innerComments\"\n      ) {\n        // @ts-expect-error cloning this to newNode\n        newNode[key] = this[key];\n      }\n    }\n\n    return newNode;\n  };\n}\n\nexport type Undone<T extends NodeType> = Omit<T, \"type\">;\n\nexport abstract class NodeUtils extends UtilParser {\n  startNode<T extends NodeType = never>(): Undone<T> {\n    const loc = this.state.startLoc;\n    return new Node(this, loc.index, loc) as unknown as Undone<T>;\n  }\n\n  startNodeAt<T extends NodeType = never>(loc: Position): Undone<T> {\n    return new Node(this, loc.index, loc) as unknown as Undone<T>;\n  }\n\n  /** Start a new node with a previous node's location. */\n  startNodeAtNode<T extends NodeType = never>(\n    type: Undone<NodeType>,\n  ): Undone<T> {\n    return this.startNodeAt(type.loc.start);\n  }\n\n  // Finish an AST node, adding `type` and `end` properties.\n\n  finishNode<T extends NodeType>(node: Undone<T>, type: T[\"type\"]): T {\n    return this.finishNodeAt(node, type, this.state.lastTokEndLoc);\n  }\n\n  // Finish node at given position\n\n  finishNodeAt<T extends NodeType>(\n    node: Omit<T, \"type\">,\n    type: T[\"type\"],\n    endLoc: Position,\n  ): T {\n    if (process.env.NODE_ENV !== \"production\" && node.end > 0) {\n      throw new Error(\n        \"Do not call finishNode*() twice on the same node.\" +\n          \" Instead use resetEndLocation() or change type directly.\",\n      );\n    }\n    (node as T).type = type;\n    node.end = endLoc.index;\n    node.loc.end = endLoc;\n    if (this.optionFlags & OptionFlags.Ranges) node.range[1] = endLoc.index;\n    if (this.optionFlags & OptionFlags.AttachComment) {\n      this.processComment(node as T);\n    }\n    return node as T;\n  }\n\n  resetStartLocation(node: NodeBase, startLoc: Position): void {\n    node.start = startLoc.index;\n    node.loc.start = startLoc;\n    if (this.optionFlags & OptionFlags.Ranges) node.range[0] = startLoc.index;\n  }\n\n  resetEndLocation(\n    node: NodeBase,\n    endLoc: Position = this.state.lastTokEndLoc,\n  ): void {\n    node.end = endLoc.index;\n    node.loc.end = endLoc;\n    if (this.optionFlags & OptionFlags.Ranges) node.range[1] = endLoc.index;\n  }\n\n  /**\n   * Reset the start location of node to the start location of locationNode\n   */\n  resetStartLocationFromNode(node: NodeBase, locationNode: NodeBase): void {\n    this.resetStartLocation(node, locationNode.loc.start);\n  }\n\n  castNodeTo<T extends NodeType[\"type\"]>(\n    node: NodeType,\n    type: T,\n  ): Extract<NodeType, { type: T }> {\n    node.type = type;\n    return node as Extract<NodeType, { type: T }>;\n  }\n\n  cloneIdentifier<T extends Identifier | Placeholder>(node: T): T {\n    // We don't need to clone `typeAnnotations` and `optional`: because\n    // cloneIdentifier is only used in object shorthand and named import/export.\n    // Neither of them allow type annotations after the identifier or optional identifier\n    const { type, start, end, loc, range, name } = node;\n    const cloned = Object.create(NodePrototype);\n    cloned.type = type;\n    cloned.start = start;\n    cloned.end = end;\n    cloned.loc = loc;\n    cloned.range = range;\n    cloned.name = name;\n    if (node.extra) cloned.extra = node.extra;\n    return cloned;\n  }\n\n  cloneStringLiteral<T extends StringLiteral | EstreeLiteral | Placeholder>(\n    node: T,\n  ): T {\n    const { type, start, end, loc, range, extra } = node;\n    const cloned = Object.create(NodePrototype);\n    cloned.type = type;\n    cloned.start = start;\n    cloned.end = end;\n    cloned.loc = loc;\n    cloned.range = range;\n    cloned.extra = extra;\n    cloned.value = (node as StringLiteral).value;\n    return cloned;\n  }\n}\n","import * as charCodes from \"charcodes\";\nimport { tt, type TokenType } from \"../tokenizer/types.ts\";\nimport type {\n  AssignmentPattern,\n  TSParameterProperty,\n  Decorator,\n  Expression,\n  Identifier,\n  Node,\n  Pattern,\n  RestElement,\n  SpreadElement,\n  ObjectOrClassMember,\n  ClassMember,\n  ObjectMember,\n  TsNamedTypeElementBase,\n  PrivateName,\n  ObjectExpression,\n  ObjectPattern,\n  ArrayPattern,\n  AssignmentProperty,\n  Assignable,\n  VoidPattern,\n} from \"../types.ts\";\nimport type { Position } from \"../util/location.ts\";\nimport {\n  isStrictBindOnlyReservedWord,\n  isStrictBindReservedWord,\n} from \"../util/identifier.ts\";\nimport { NodeUtils, type Undone } from \"./node.ts\";\nimport { BindingFlag } from \"../util/scopeflags.ts\";\nimport type { ExpressionErrors } from \"./util.ts\";\nimport { Errors, type LValAncestor } from \"../parse-error.ts\";\nimport type Parser from \"./index.ts\";\n\nconst unwrapParenthesizedExpression = (node: Node): Node => {\n  return node.type === \"ParenthesizedExpression\"\n    ? unwrapParenthesizedExpression(node.expression)\n    : node;\n};\n\nexport const enum ParseBindingListFlags {\n  ALLOW_EMPTY = 1 << 0,\n  IS_FUNCTION_PARAMS = 1 << 1,\n  IS_CONSTRUCTOR_PARAMS = 1 << 2,\n}\n\nexport default abstract class LValParser extends NodeUtils {\n  // Forward-declaration: defined in expression.js\n  abstract parseIdentifier(liberal?: boolean): Identifier;\n  abstract parseMaybeAssign(\n    refExpressionErrors?: ExpressionErrors | null,\n    afterLeftParse?: Function,\n  ): Expression;\n\n  abstract parseMaybeAssignAllowIn(\n    refExpressionErrors?: ExpressionErrors | null,\n    afterLeftParse?: Function,\n  ): Expression;\n\n  abstract parseObjectLike<T extends ObjectPattern | ObjectExpression>(\n    close: TokenType,\n    isPattern: boolean,\n    isRecord?: boolean,\n    refExpressionErrors?: ExpressionErrors,\n  ): T;\n  abstract parseObjPropValue(\n    prop: any,\n    startLoc: Position | null,\n    isGenerator: boolean,\n    isAsync: boolean,\n    isPattern: boolean,\n    isAccessor: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): void;\n  abstract parsePropertyName(\n    prop: ObjectOrClassMember | ClassMember | TsNamedTypeElementBase,\n  ): void;\n  abstract parsePrivateName(): PrivateName;\n  // Forward-declaration: defined in statement.js\n  abstract parseDecorator(): Decorator;\n\n  /**\n   * Convert existing expression atom to assignable pattern\n   * if possible. Also checks invalid destructuring targets:\n   *\n   * - Parenthesized Destructuring patterns\n   * - RestElement is not the last element\n   * - Missing `=` in assignment pattern\n   *\n   * NOTE: There is a corresponding \"isAssignable\" method.\n   * When this one is updated, please check if also that one needs to be updated.\n   *\n   * @param node The expression atom\n   * @param isLHS Whether we are parsing a LeftHandSideExpression.\n   *              If isLHS is `true`, the following cases are allowed: `[(a)] = [0]`, `[(a.b)] = [0]`\n   *              If isLHS is `false`, we are in an arrow function parameters list.\n   */\n  toAssignable(node: Node, isLHS: boolean = false): asserts node is Assignable {\n    let parenthesized = undefined;\n    if (node.type === \"ParenthesizedExpression\" || node.extra?.parenthesized) {\n      parenthesized = unwrapParenthesizedExpression(node);\n      if (isLHS) {\n        // an LHS can be reinterpreted to a binding pattern but not vice versa.\n        // therefore a parenthesized identifier is ambiguous until we are sure it is an assignment expression\n        // i.e. `([(a) = []] = []) => {}`\n        // see also `recordArrowParameterBindingError` signature in packages/babel-parser/src/util/expression-scope.js\n        if (parenthesized.type === \"Identifier\") {\n          this.expressionScope.recordArrowParameterBindingError(\n            Errors.InvalidParenthesizedAssignment,\n            node,\n          );\n        } else if (\n          parenthesized.type !== \"MemberExpression\" &&\n          !this.isOptionalMemberExpression(parenthesized)\n        ) {\n          // A parenthesized member expression can be in LHS but not in pattern.\n          // If the LHS is later interpreted as a pattern, `checkLVal` will throw for member expression binding\n          // i.e. `([(a.b) = []] = []) => {}`\n          this.raise(Errors.InvalidParenthesizedAssignment, node);\n        }\n      } else {\n        this.raise(Errors.InvalidParenthesizedAssignment, node);\n      }\n    }\n\n    switch (node.type) {\n      case \"Identifier\":\n      case \"ObjectPattern\":\n      case \"ArrayPattern\":\n      case \"AssignmentPattern\":\n      case \"RestElement\":\n      case \"VoidPattern\":\n        break;\n\n      case \"ObjectExpression\":\n        this.castNodeTo(node, \"ObjectPattern\");\n        for (\n          let i = 0, length = node.properties.length, last = length - 1;\n          i < length;\n          i++\n        ) {\n          const prop = node.properties[i];\n          const isLast = i === last;\n          this.toAssignableObjectExpressionProp(prop, isLast, isLHS);\n\n          if (\n            isLast &&\n            (prop as Node).type === \"RestElement\" &&\n            node.extra?.trailingCommaLoc\n          ) {\n            this.raise(Errors.RestTrailingComma, node.extra.trailingCommaLoc);\n          }\n        }\n        break;\n\n      case \"ObjectProperty\": {\n        const { key, value } = node;\n        if (this.isPrivateName(key)) {\n          this.classScope.usePrivateName(\n            this.getPrivateNameSV(key),\n            key.loc.start,\n          );\n        }\n        this.toAssignable(value, isLHS);\n        break;\n      }\n\n      case \"SpreadElement\": {\n        throw new Error(\n          \"Internal @babel/parser error (this is a bug, please report it).\" +\n            \" SpreadElement should be converted by .toAssignable's caller.\",\n        );\n      }\n\n      case \"ArrayExpression\":\n        this.castNodeTo(node, \"ArrayPattern\");\n        this.toAssignableList(\n          node.elements,\n          node.extra?.trailingCommaLoc,\n          isLHS,\n        );\n        break;\n\n      case \"AssignmentExpression\":\n        if (node.operator !== \"=\") {\n          this.raise(Errors.MissingEqInAssignment, node.left.loc.end);\n        }\n\n        this.castNodeTo(node, \"AssignmentPattern\");\n        delete node.operator;\n        if (node.left.type === \"VoidPattern\") {\n          this.raise(Errors.VoidPatternInitializer, node.left);\n        }\n        this.toAssignable(node.left, isLHS);\n        break;\n\n      case \"ParenthesizedExpression\":\n        /*::invariant (parenthesized !== undefined) */\n        this.toAssignable(parenthesized, isLHS);\n        break;\n\n      default:\n      // We don't know how to deal with this node. It will\n      // be reported by a later call to checkLVal\n    }\n  }\n\n  toAssignableObjectExpressionProp(\n    prop: Node,\n    isLast: boolean,\n    isLHS: boolean,\n  ) {\n    if (prop.type === \"ObjectMethod\") {\n      this.raise(\n        prop.kind === \"get\" || prop.kind === \"set\"\n          ? Errors.PatternHasAccessor\n          : Errors.PatternHasMethod,\n        prop.key,\n      );\n    } else if (prop.type === \"SpreadElement\") {\n      this.castNodeTo(prop, \"RestElement\");\n      const arg = prop.argument;\n      this.checkToRestConversion(arg, /* allowPattern */ false);\n      this.toAssignable(arg, isLHS);\n\n      if (!isLast) {\n        this.raise(Errors.RestTrailingComma, prop);\n      }\n    } else {\n      this.toAssignable(prop, isLHS);\n    }\n  }\n\n  // Convert list of expression atoms to binding list.\n\n  toAssignableList(\n    exprList: (\n      | Expression\n      | SpreadElement\n      | RestElement\n      | VoidPattern\n      | AssignmentPattern\n      | null\n    )[],\n    trailingCommaLoc: Position | undefined | null,\n    isLHS: boolean,\n  ): void {\n    const end = exprList.length - 1;\n\n    for (let i = 0; i <= end; i++) {\n      const elt = exprList[i];\n      if (!elt) continue;\n\n      this.toAssignableListItem(exprList, i, isLHS);\n\n      if (elt.type === \"RestElement\") {\n        if (i < end) {\n          this.raise(Errors.RestTrailingComma, elt);\n        } else if (trailingCommaLoc) {\n          this.raise(Errors.RestTrailingComma, trailingCommaLoc);\n        }\n      }\n    }\n  }\n\n  toAssignableListItem(\n    exprList: (\n      | Expression\n      | SpreadElement\n      | RestElement\n      | VoidPattern\n      | AssignmentPattern\n    )[],\n    index: number,\n    isLHS: boolean,\n  ): void {\n    const node = exprList[index];\n    if (node.type === \"SpreadElement\") {\n      this.castNodeTo(node, \"RestElement\");\n      const arg = node.argument;\n      this.checkToRestConversion(arg, /* allowPattern */ true);\n      this.toAssignable(arg, isLHS);\n    } else {\n      this.toAssignable(node, isLHS);\n    }\n  }\n\n  isAssignable(node: Node, isBinding?: boolean): boolean {\n    switch (node.type) {\n      case \"Identifier\":\n      case \"ObjectPattern\":\n      case \"ArrayPattern\":\n      case \"AssignmentPattern\":\n      case \"RestElement\":\n      case \"VoidPattern\":\n        return true;\n\n      case \"ObjectExpression\": {\n        const last = node.properties.length - 1;\n        return node.properties.every((prop, i) => {\n          return (\n            prop.type !== \"ObjectMethod\" &&\n            (i === last || prop.type !== \"SpreadElement\") &&\n            this.isAssignable(prop)\n          );\n        });\n      }\n\n      case \"ObjectProperty\":\n        return this.isAssignable(node.value);\n\n      case \"SpreadElement\":\n        return this.isAssignable(node.argument);\n\n      case \"ArrayExpression\":\n        return node.elements.every(\n          element => element === null || this.isAssignable(element),\n        );\n\n      case \"AssignmentExpression\":\n        return node.operator === \"=\";\n\n      case \"ParenthesizedExpression\":\n        return this.isAssignable(node.expression);\n\n      case \"MemberExpression\":\n      case \"OptionalMemberExpression\":\n        return !isBinding;\n\n      default:\n        return false;\n    }\n  }\n\n  // Convert list of expression atoms to a list of\n\n  toReferencedList(\n    exprList:\n      | ReadonlyArray<\n          Expression | SpreadElement | VoidPattern | AssignmentPattern\n        >\n      | ReadonlyArray<\n          Expression | RestElement | VoidPattern | AssignmentPattern\n        >,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    isParenthesizedExpr?: boolean,\n  ):\n    | ReadonlyArray<\n        Expression | SpreadElement | VoidPattern | AssignmentPattern\n      >\n    | ReadonlyArray<\n        Expression | RestElement | VoidPattern | AssignmentPattern\n      > {\n    return exprList;\n  }\n\n  toReferencedListDeep(\n    exprList:\n      | ReadonlyArray<\n          Expression | SpreadElement | VoidPattern | AssignmentPattern\n        >\n      | ReadonlyArray<\n          Expression | RestElement | VoidPattern | AssignmentPattern\n        >,\n    isParenthesizedExpr?: boolean,\n  ): void {\n    this.toReferencedList(exprList, isParenthesizedExpr);\n\n    for (const expr of exprList) {\n      if (expr?.type === \"ArrayExpression\") {\n        this.toReferencedListDeep(expr.elements);\n      }\n    }\n  }\n\n  // Parses spread element.\n\n  parseSpread(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): SpreadElement {\n    const node = this.startNode<SpreadElement>();\n    this.next();\n    node.argument = this.parseMaybeAssignAllowIn(\n      refExpressionErrors,\n      undefined,\n    );\n    return this.finishNode(node, \"SpreadElement\");\n  }\n\n  // https://tc39.es/ecma262/#prod-BindingRestElement\n  parseRestBinding(this: Parser): RestElement {\n    const node = this.startNode<RestElement>();\n    this.next(); // eat `...`\n    const argument = this.parseBindingAtom();\n    if (argument.type === \"VoidPattern\") {\n      this.raise(Errors.UnexpectedVoidPattern, argument);\n    }\n    node.argument = argument;\n    return this.finishNode(node, \"RestElement\");\n  }\n\n  // Parses lvalue (assignable) atom.\n  parseBindingAtom(this: Parser): Pattern {\n    // https://tc39.es/ecma262/#prod-BindingPattern\n    switch (this.state.type) {\n      case tt.bracketL: {\n        const node = this.startNode<ArrayPattern>();\n        this.next();\n        node.elements = this.parseBindingList(\n          tt.bracketR,\n          charCodes.rightSquareBracket,\n          ParseBindingListFlags.ALLOW_EMPTY,\n        );\n        return this.finishNode(node, \"ArrayPattern\");\n      }\n\n      case tt.braceL:\n        return this.parseObjectLike(tt.braceR, true);\n\n      case tt._void:\n        return this.parseVoidPattern(null);\n    }\n\n    // https://tc39.es/ecma262/#prod-BindingIdentifier\n    return this.parseIdentifier();\n  }\n\n  // https://tc39.es/ecma262/#prod-BindingElementList\n  parseBindingList(\n    this: Parser,\n    close: TokenType,\n    closeCharCode: (typeof charCodes)[keyof typeof charCodes],\n    flags: ParseBindingListFlags.ALLOW_EMPTY,\n  ): Array<Pattern>;\n  parseBindingList(\n    this: Parser,\n    close: TokenType,\n    closeCharCode: (typeof charCodes)[keyof typeof charCodes],\n    flags: ParseBindingListFlags.IS_FUNCTION_PARAMS,\n  ): Array<Pattern | TSParameterProperty>;\n  parseBindingList(\n    this: Parser,\n    close: TokenType,\n    closeCharCode: (typeof charCodes)[keyof typeof charCodes],\n    flags: ParseBindingListFlags,\n  ): Array<Pattern | TSParameterProperty> {\n    const allowEmpty = flags & ParseBindingListFlags.ALLOW_EMPTY;\n\n    const elts: Array<Pattern | TSParameterProperty> = [];\n    let first = true;\n    while (!this.eat(close)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(tt.comma);\n      }\n      if (allowEmpty && this.match(tt.comma)) {\n        elts.push(null);\n      } else if (this.eat(close)) {\n        break;\n      } else if (this.match(tt.ellipsis)) {\n        let rest: Pattern = this.parseRestBinding();\n        if (\n          (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"flow\")) ||\n          flags & ParseBindingListFlags.IS_FUNCTION_PARAMS\n        ) {\n          rest = this.parseFunctionParamType(rest);\n        }\n        elts.push(rest);\n        if (!this.checkCommaAfterRest(closeCharCode)) {\n          this.expect(close);\n          break;\n        }\n      } else {\n        const decorators = [];\n        if (flags & ParseBindingListFlags.IS_FUNCTION_PARAMS) {\n          if (this.match(tt.at) && this.hasPlugin(\"decorators\")) {\n            this.raise(\n              Errors.UnsupportedParameterDecorator,\n              this.state.startLoc,\n            );\n          }\n          // invariant: hasPlugin(\"decorators-legacy\")\n          while (this.match(tt.at)) {\n            decorators.push(this.parseDecorator());\n          }\n        }\n        elts.push(this.parseBindingElement(flags, decorators));\n      }\n    }\n    return elts;\n  }\n\n  // https://tc39.es/ecma262/#prod-BindingRestProperty\n  parseBindingRestProperty(\n    this: Parser,\n    prop: Undone<RestElement>,\n  ): RestElement {\n    this.next(); // eat '...'\n    if (this.hasPlugin(\"discardBinding\") && this.match(tt._void)) {\n      prop.argument = this.parseVoidPattern(null);\n      this.raise(Errors.UnexpectedVoidPattern, prop.argument);\n    } else {\n      // Don't use parseRestBinding() as we only allow Identifier here.\n      prop.argument = this.parseIdentifier();\n    }\n    this.checkCommaAfterRest(charCodes.rightCurlyBrace);\n    return this.finishNode(prop, \"RestElement\");\n  }\n\n  // https://tc39.es/ecma262/#prod-BindingProperty\n  parseBindingProperty(this: Parser): AssignmentProperty | RestElement {\n    const { type, startLoc } = this.state;\n    if (type === tt.ellipsis) {\n      return this.parseBindingRestProperty(this.startNode());\n    }\n\n    const prop = this.startNode<AssignmentProperty>();\n    if (type === tt.privateName) {\n      this.expectPlugin(\"destructuringPrivate\", startLoc);\n      this.classScope.usePrivateName(this.state.value, startLoc);\n      prop.key = this.parsePrivateName();\n    } else {\n      this.parsePropertyName(prop);\n    }\n    prop.method = false;\n    return this.parseObjPropValue(\n      prop,\n      startLoc,\n      false /* isGenerator */,\n      false /* isAsync */,\n      true /* isPattern */,\n      false /* isAccessor */,\n    );\n  }\n\n  // https://tc39.es/ecma262/#prod-BindingElement\n  parseBindingElement(\n    this: Parser,\n    flags: ParseBindingListFlags,\n    decorators: Decorator[],\n  ): Pattern | TSParameterProperty {\n    const left = this.parseMaybeDefault();\n    if (\n      (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"flow\")) ||\n      flags & ParseBindingListFlags.IS_FUNCTION_PARAMS\n    ) {\n      this.parseFunctionParamType(left);\n    }\n    if (decorators.length) {\n      left.decorators = decorators;\n      this.resetStartLocationFromNode(left, decorators[0]);\n    }\n    const elt = this.parseMaybeDefault(left.loc.start, left);\n    return elt;\n  }\n\n  // Used by flow/typescript plugin to add type annotations to binding elements\n  parseFunctionParamType(param: Pattern): Pattern {\n    return param;\n  }\n\n  // Parses assignment pattern around given atom if possible.\n  // https://tc39.es/ecma262/#prod-BindingElement\n  parseMaybeDefault<P extends Pattern>(\n    this: Parser,\n    startLoc?: Position | null,\n    left?: P,\n  ): P | AssignmentPattern;\n  parseMaybeDefault(\n    this: Parser,\n    startLoc?: Position | null,\n    left?: Pattern | null,\n  ): Pattern {\n    startLoc ??= this.state.startLoc;\n    left = left ?? this.parseBindingAtom();\n    if (!this.eat(tt.eq)) return left;\n\n    const node = this.startNodeAt<AssignmentPattern>(startLoc);\n    if (left.type === \"VoidPattern\") {\n      this.raise(Errors.VoidPatternInitializer, left);\n    }\n    node.left = left;\n    node.right = this.parseMaybeAssignAllowIn();\n    return this.finishNode(node, \"AssignmentPattern\");\n  }\n  /**\n   * Return information use in determining whether a Node of a given type is an LVal,\n   * possibly given certain additional context information.\n   *\n   * Subclasser notes: This method has kind of a lot of mixed, but related,\n   * responsibilities. If we can definitively determine with the information\n   * provided that this either *is* or *isn't* a valid `LVal`, then the return\n   * value is easy: just return `true` or `false`. However, if it is a valid\n   * LVal *ancestor*, and thus its descendants must be subsequently visited to\n   * continue the \"investigation\", then this method should return the relevant\n   * child key as a `string`. In some special cases, you additionally want to\n   * convey that this node should be treated as if it were parenthesized. In\n   * that case, a tuple of [key: string, parenthesized: boolean] is returned.\n   * The `string`-only return option is actually just a shorthand for:\n   * `[key: string, parenthesized: false]`.\n   *\n   * @param type A Node `type` string\n   * @param isUnparenthesizedInAssign\n   *        Whether the node in question is unparenthesized and its parent\n   *        is either an assignment pattern or an assignment expression.\n   * @param binding\n   *        The binding operation that is being considered for this potential\n   *        LVal.\n   * @returns `true` or `false` if we can immediately determine whether the node\n   *          type in question can be treated as an `LVal`.\n   *          A `string` key to traverse if we must check this child.\n   *          A `[string, boolean]` tuple if we need to check this child and\n   *          treat is as parenthesized.\n   */\n  isValidLVal(\n    type: string,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    isUnparenthesizedInAssign: boolean,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    binding: BindingFlag,\n  ): string | boolean | [string, boolean] {\n    switch (type) {\n      case \"AssignmentPattern\":\n        return \"left\";\n      case \"RestElement\":\n        return \"argument\";\n      case \"ObjectProperty\":\n        return \"value\";\n      case \"ParenthesizedExpression\":\n        return \"expression\";\n      case \"ArrayPattern\":\n        return \"elements\";\n      case \"ObjectPattern\":\n        return \"properties\";\n      case \"VoidPattern\":\n        return true;\n    }\n    return false;\n  }\n\n  // Overridden by the estree plugin\n  isOptionalMemberExpression(expression: Node): boolean {\n    return expression.type === \"OptionalMemberExpression\";\n  }\n\n  /**\n   * Verify that a target expression is an lval (something that can be assigned to).\n   *\n   * @param expression The expression in question to check.\n   * @param ancestor\n   *        The relevant ancestor to provide context information for the error\n   *        if the check fails.\n   * @param binding\n   *        The desired binding type. If the given expression is an identifier\n   *        and `binding` is not `BindingFlag.TYPE_NONE`, `checkLVal` will register binding\n   *        to the parser scope See also `src/util/scopeflags.js`\n   * @param checkClashes\n   *        An optional string set to check if an identifier name is included.\n   *        `checkLVal` will add checked identifier name to `checkClashes` It is\n   *        used in tracking duplicates in function parameter lists. If it is\n   *        false, `checkLVal` will skip duplicate checks\n   * @param strictModeChanged\n   *        Whether an identifier has been parsed in a sloppy context but should\n   *        be reinterpreted as strict-mode. e.g. `(arguments) => { \"use strict \"}`\n   * @param hasParenthesizedAncestor\n   *        This is only used internally during recursive calls, and you should\n   *        not have to set it yourself.\n   */\n\n  checkLVal(\n    expression:\n      | Expression\n      | ObjectMember\n      | RestElement\n      | Pattern\n      | TSParameterProperty,\n    ancestor: LValAncestor,\n    binding: BindingFlag = BindingFlag.TYPE_NONE,\n    checkClashes: Set<string> | false = false,\n    strictModeChanged: boolean = false,\n    hasParenthesizedAncestor: boolean = false,\n  ): void {\n    const type = expression.type;\n\n    // If we find here an ObjectMethod, it's because this was originally\n    // an ObjectExpression which has then been converted.\n    // toAssignable already reported this error with a nicer message.\n    if (this.isObjectMethod(expression)) return;\n\n    const isOptionalMemberExpression =\n      this.isOptionalMemberExpression(expression);\n\n    if (isOptionalMemberExpression || type === \"MemberExpression\") {\n      if (isOptionalMemberExpression) {\n        this.expectPlugin(\"optionalChainingAssign\", expression.loc.start);\n        if (ancestor.type !== \"AssignmentExpression\") {\n          this.raise(Errors.InvalidLhsOptionalChaining, expression, {\n            ancestor,\n          });\n        }\n      }\n\n      if (binding !== BindingFlag.TYPE_NONE) {\n        this.raise(Errors.InvalidPropertyBindingPattern, expression);\n      }\n      return;\n    }\n\n    if (type === \"Identifier\") {\n      this.checkIdentifier(expression, binding, strictModeChanged);\n\n      const { name } = expression;\n\n      if (checkClashes) {\n        if (checkClashes.has(name)) {\n          this.raise(Errors.ParamDupe, expression);\n        } else {\n          checkClashes.add(name);\n        }\n      }\n\n      return;\n    } else if (type === \"VoidPattern\" && ancestor.type === \"CatchClause\") {\n      this.raise(Errors.VoidPatternCatchClauseParam, expression);\n    }\n\n    const validity = this.isValidLVal(\n      type,\n      !(hasParenthesizedAncestor || expression.extra?.parenthesized) &&\n        ancestor.type === \"AssignmentExpression\",\n      binding,\n    );\n\n    if (validity === true) return;\n    if (validity === false) {\n      const ParseErrorClass =\n        binding === BindingFlag.TYPE_NONE\n          ? Errors.InvalidLhs\n          : Errors.InvalidLhsBinding;\n\n      this.raise(ParseErrorClass, expression, { ancestor });\n      return;\n    }\n\n    let key: string, isParenthesizedExpression: boolean;\n    if (typeof validity === \"string\") {\n      key = validity;\n      isParenthesizedExpression = type === \"ParenthesizedExpression\";\n    } else {\n      [key, isParenthesizedExpression] = validity;\n    }\n\n    const nextAncestor =\n      type === \"ArrayPattern\" || type === \"ObjectPattern\"\n        ? ({ type } as const)\n        : ancestor;\n\n    // @ts-expect-error key may not index expression.\n    const val = expression[key];\n    if (Array.isArray(val)) {\n      for (const child of val) {\n        if (child) {\n          this.checkLVal(\n            child,\n            nextAncestor,\n            binding,\n            checkClashes,\n            strictModeChanged,\n            isParenthesizedExpression,\n          );\n        }\n      }\n    } else if (val) {\n      this.checkLVal(\n        val,\n        nextAncestor,\n        binding,\n        checkClashes,\n        strictModeChanged,\n        isParenthesizedExpression,\n      );\n    }\n  }\n\n  checkIdentifier(\n    at: Identifier,\n    bindingType: BindingFlag,\n    strictModeChanged: boolean = false,\n  ) {\n    if (\n      this.state.strict &&\n      (strictModeChanged\n        ? isStrictBindReservedWord(at.name, this.inModule)\n        : isStrictBindOnlyReservedWord(at.name))\n    ) {\n      if (bindingType === BindingFlag.TYPE_NONE) {\n        this.raise(Errors.StrictEvalArguments, at, { referenceName: at.name });\n      } else {\n        this.raise(Errors.StrictEvalArgumentsBinding, at, {\n          bindingName: at.name,\n        });\n      }\n    }\n\n    if (bindingType & BindingFlag.FLAG_NO_LET_IN_LEXICAL && at.name === \"let\") {\n      this.raise(Errors.LetInLexicalBinding, at);\n    }\n\n    if (!(bindingType & BindingFlag.TYPE_NONE)) {\n      this.declareNameFromIdentifier(at, bindingType);\n    }\n  }\n\n  declareNameFromIdentifier(identifier: Identifier, binding: BindingFlag) {\n    this.scope.declareName(identifier.name, binding, identifier.loc.start);\n  }\n\n  checkToRestConversion(node: Node, allowPattern: boolean): void {\n    switch (node.type) {\n      case \"ParenthesizedExpression\":\n        this.checkToRestConversion(node.expression, allowPattern);\n        break;\n      case \"Identifier\":\n      case \"MemberExpression\":\n        break;\n      case \"ArrayExpression\":\n      case \"ObjectExpression\":\n        if (allowPattern) break;\n      /* falls through */\n      default:\n        this.raise(Errors.InvalidRestAssignmentPattern, node);\n    }\n  }\n\n  checkCommaAfterRest(\n    close: (typeof charCodes)[keyof typeof charCodes],\n  ): boolean {\n    if (!this.match(tt.comma)) {\n      return false;\n    }\n\n    this.raise(\n      this.lookaheadCharCode() === close\n        ? Errors.RestTrailingComma\n        : Errors.ElementAfterRest,\n      this.state.startLoc,\n    );\n\n    return true;\n  }\n}\n","import type State from \"../../tokenizer/state.ts\";\nimport {\n  tokenIsIdentifier,\n  tokenIsTSDeclarationStart,\n  tokenIsTSTypeOperator,\n  tokenOperatorPrecedence,\n  tokenIsKeywordOrIdentifier,\n  tt,\n  type TokenType,\n  tokenIsTemplate,\n  tokenCanStartExpression,\n} from \"../../tokenizer/types.ts\";\nimport { types as tc } from \"../../tokenizer/context.ts\";\nimport type * as N from \"../../types.ts\";\nimport type { Position } from \"../../util/location.ts\";\nimport { createPositionWithColumnOffset } from \"../../util/location.ts\";\nimport type Parser from \"../../parser/index.ts\";\nimport { ScopeFlag, BindingFlag } from \"../../util/scopeflags.ts\";\nimport TypeScriptScopeHandler from \"./scope.ts\";\nimport * as charCodes from \"charcodes\";\nimport type { ExpressionErrors } from \"../../parser/util.ts\";\nimport type { ParseStatementFlag } from \"../../parser/statement.ts\";\nimport { ParamKind } from \"../../util/production-parameter.ts\";\nimport { Errors, ParseErrorEnum } from \"../../parse-error.ts\";\nimport type { Undone } from \"../../parser/node.ts\";\nimport type { ClassWithMixin, IJSXParserMixin } from \"../jsx/index.ts\";\nimport { ParseBindingListFlags } from \"../../parser/lval.ts\";\nimport { OptionFlags } from \"../../options.ts\";\n\ntype TsModifier =\n  | \"readonly\"\n  | \"abstract\"\n  | \"declare\"\n  | \"static\"\n  | \"override\"\n  | \"const\"\n  | N.Accessibility\n  | N.VarianceAnnotations;\n\nfunction nonNull<T>(x?: T | null): T {\n  if (x == null) {\n    throw new Error(`Unexpected ${x} value.`);\n  }\n  return x;\n}\n\nfunction assert(x: boolean): void {\n  if (!x) {\n    throw new Error(\"Assert fail\");\n  }\n}\n\ntype ParsingContext =\n  | \"EnumMembers\"\n  | \"HeritageClauseElement\"\n  | \"TupleElementTypes\"\n  | \"TypeMembers\"\n  | \"TypeParametersOrArguments\";\n\ntype ModifierBase = {\n  accessibility?: N.Accessibility;\n} & {\n  [key in TsModifier]?: boolean | undefined | null;\n};\n\n/* eslint sort-keys: \"error\" */\nconst TSErrors = ParseErrorEnum`typescript`({\n  AbstractMethodHasImplementation: ({ methodName }: { methodName: string }) =>\n    `Method '${methodName}' cannot have an implementation because it is marked abstract.`,\n  AbstractPropertyHasInitializer: ({\n    propertyName,\n  }: {\n    propertyName: string;\n  }) =>\n    `Property '${propertyName}' cannot have an initializer because it is marked abstract.`,\n  AccessorCannotBeOptional:\n    \"An 'accessor' property cannot be declared optional.\",\n  AccessorCannotDeclareThisParameter:\n    \"'get' and 'set' accessors cannot declare 'this' parameters.\",\n  AccessorCannotHaveTypeParameters: \"An accessor cannot have type parameters.\",\n  ClassMethodHasDeclare: \"Class methods cannot have the 'declare' modifier.\",\n  ClassMethodHasReadonly: \"Class methods cannot have the 'readonly' modifier.\",\n  ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference:\n    \"A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.\",\n  ConstructorHasTypeParameters:\n    \"Type parameters cannot appear on a constructor declaration.\",\n  DeclareAccessor: ({ kind }: { kind: \"get\" | \"set\" }) =>\n    `'declare' is not allowed in ${kind}ters.`,\n  DeclareClassFieldHasInitializer:\n    \"Initializers are not allowed in ambient contexts.\",\n  DeclareFunctionHasImplementation:\n    \"An implementation cannot be declared in ambient contexts.\",\n  DuplicateAccessibilityModifier: ({\n    modifier,\n  }: {\n    modifier: N.Accessibility;\n  }) => `Accessibility modifier already seen: '${modifier}'.`,\n  DuplicateModifier: ({ modifier }: { modifier: TsModifier }) =>\n    `Duplicate modifier: '${modifier}'.`,\n  // `token` matches the terminology used by typescript:\n  // https://github.com/microsoft/TypeScript/blob/main/src/compiler/types.ts#L2915\n  EmptyHeritageClauseType: ({ token }: { token: \"extends\" | \"implements\" }) =>\n    `'${token}' list cannot be empty.`,\n  EmptyTypeArguments: \"Type argument list cannot be empty.\",\n  EmptyTypeParameters: \"Type parameter list cannot be empty.\",\n  ExpectedAmbientAfterExportDeclare:\n    \"'export declare' must be followed by an ambient declaration.\",\n  ImportAliasHasImportType: \"An import alias can not use 'import type'.\",\n  ImportReflectionHasImportType:\n    \"An `import module` declaration can not use `type` modifier\",\n  IncompatibleModifiers: ({\n    modifiers,\n  }: {\n    modifiers: [TsModifier, TsModifier];\n  }) =>\n    `'${modifiers[0]}' modifier cannot be used with '${modifiers[1]}' modifier.`,\n  IndexSignatureHasAbstract:\n    \"Index signatures cannot have the 'abstract' modifier.\",\n  IndexSignatureHasAccessibility: ({\n    modifier,\n  }: {\n    modifier: N.Accessibility;\n  }) =>\n    `Index signatures cannot have an accessibility modifier ('${modifier}').`,\n  IndexSignatureHasDeclare:\n    \"Index signatures cannot have the 'declare' modifier.\",\n  IndexSignatureHasOverride:\n    \"'override' modifier cannot appear on an index signature.\",\n  IndexSignatureHasStatic:\n    \"Index signatures cannot have the 'static' modifier.\",\n  InitializerNotAllowedInAmbientContext:\n    \"Initializers are not allowed in ambient contexts.\",\n  InvalidHeritageClauseType: ({ token }: { token: \"extends\" | \"implements\" }) =>\n    `'${token}' list can only include identifiers or qualified-names with optional type arguments.`,\n  InvalidModifierOnAwaitUsingDeclaration: (modifier: TsModifier) =>\n    `'${modifier}' modifier cannot appear on an await using declaration.`,\n  InvalidModifierOnTypeMember: ({ modifier }: { modifier: TsModifier }) =>\n    `'${modifier}' modifier cannot appear on a type member.`,\n  InvalidModifierOnTypeParameter: ({ modifier }: { modifier: TsModifier }) =>\n    `'${modifier}' modifier cannot appear on a type parameter.`,\n  InvalidModifierOnTypeParameterPositions: ({\n    modifier,\n  }: {\n    modifier: TsModifier;\n  }) =>\n    `'${modifier}' modifier can only appear on a type parameter of a class, interface or type alias.`,\n\n  InvalidModifierOnUsingDeclaration: (modifier: TsModifier) =>\n    `'${modifier}' modifier cannot appear on a using declaration.`,\n  InvalidModifiersOrder: ({\n    orderedModifiers,\n  }: {\n    orderedModifiers: [TsModifier, TsModifier];\n  }) =>\n    `'${orderedModifiers[0]}' modifier must precede '${orderedModifiers[1]}' modifier.`,\n  InvalidPropertyAccessAfterInstantiationExpression:\n    \"Invalid property access after an instantiation expression. \" +\n    \"You can either wrap the instantiation expression in parentheses, or delete the type arguments.\",\n  InvalidTupleMemberLabel:\n    \"Tuple members must be labeled with a simple identifier.\",\n  MissingInterfaceName:\n    \"'interface' declarations must be followed by an identifier.\",\n  NonAbstractClassHasAbstractMethod:\n    \"Abstract methods can only appear within an abstract class.\",\n  NonClassMethodPropertyHasAbstractModifier:\n    \"'abstract' modifier can only appear on a class, method, or property declaration.\",\n  OptionalTypeBeforeRequired:\n    \"A required element cannot follow an optional element.\",\n  OverrideNotInSubClass:\n    \"This member cannot have an 'override' modifier because its containing class does not extend another class.\",\n  PatternIsOptional:\n    \"A binding pattern parameter cannot be optional in an implementation signature.\",\n  PrivateElementHasAbstract:\n    \"Private elements cannot have the 'abstract' modifier.\",\n  PrivateElementHasAccessibility: ({\n    modifier,\n  }: {\n    modifier: N.Accessibility;\n  }) =>\n    `Private elements cannot have an accessibility modifier ('${modifier}').`,\n  ReadonlyForMethodSignature:\n    \"'readonly' modifier can only appear on a property declaration or index signature.\",\n  ReservedArrowTypeParam:\n    \"This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `<T,>() => ...`.\",\n  ReservedTypeAssertion:\n    \"This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.\",\n  SetAccessorCannotHaveOptionalParameter:\n    \"A 'set' accessor cannot have an optional parameter.\",\n  SetAccessorCannotHaveRestParameter:\n    \"A 'set' accessor cannot have rest parameter.\",\n  SetAccessorCannotHaveReturnType:\n    \"A 'set' accessor cannot have a return type annotation.\",\n  SingleTypeParameterWithoutTrailingComma: ({\n    typeParameterName,\n  }: {\n    typeParameterName: string;\n  }) =>\n    `Single type parameter ${typeParameterName} should have a trailing comma. Example usage: <${typeParameterName},>.`,\n  StaticBlockCannotHaveModifier:\n    \"Static class blocks cannot have any modifier.\",\n  TupleOptionalAfterType:\n    \"A labeled tuple optional element must be declared using a question mark after the name and before the colon (`name?: type`), rather than after the type (`name: type?`).\",\n  TypeAnnotationAfterAssign:\n    \"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.\",\n  TypeImportCannotSpecifyDefaultAndNamed:\n    \"A type-only import can specify a default import or named bindings, but not both.\",\n  TypeModifierIsUsedInTypeExports:\n    \"The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.\",\n  TypeModifierIsUsedInTypeImports:\n    \"The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.\",\n  UnexpectedParameterModifier:\n    \"A parameter property is only allowed in a constructor implementation.\",\n  UnexpectedReadonly:\n    \"'readonly' type modifier is only permitted on array and tuple literal types.\",\n  UnexpectedTypeAnnotation: \"Did not expect a type annotation here.\",\n  UnexpectedTypeCastInParameter: \"Unexpected type cast in parameter position.\",\n  UnsupportedImportTypeArgument:\n    \"Argument in a type import must be a string literal.\",\n  UnsupportedParameterPropertyKind:\n    \"A parameter property may not be declared using a binding pattern.\",\n  UnsupportedSignatureParameterKind: ({ type }: { type: string }) =>\n    `Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got ${type}.`,\n  UsingDeclarationInAmbientContext: (kind: \"using\" | \"await using\") =>\n    `'${kind}' declarations are not allowed in ambient contexts.`,\n});\n\n/* eslint-disable sort-keys */\n\n// Doesn't handle \"void\" or \"null\" because those are keywords, not identifiers.\n// It also doesn't handle \"intrinsic\", since usually it's not a keyword.\nfunction keywordTypeFromName(value: string): N.TsKeywordTypeType | undefined {\n  switch (value) {\n    case \"any\":\n      return \"TSAnyKeyword\";\n    case \"boolean\":\n      return \"TSBooleanKeyword\";\n    case \"bigint\":\n      return \"TSBigIntKeyword\";\n    case \"never\":\n      return \"TSNeverKeyword\";\n    case \"number\":\n      return \"TSNumberKeyword\";\n    case \"object\":\n      return \"TSObjectKeyword\";\n    case \"string\":\n      return \"TSStringKeyword\";\n    case \"symbol\":\n      return \"TSSymbolKeyword\";\n    case \"undefined\":\n      return \"TSUndefinedKeyword\";\n    case \"unknown\":\n      return \"TSUnknownKeyword\";\n    default:\n      return undefined;\n  }\n}\n\nfunction tsIsAccessModifier(modifier: string): modifier is N.Accessibility {\n  return (\n    modifier === \"private\" || modifier === \"public\" || modifier === \"protected\"\n  );\n}\n\nfunction tsIsVarianceAnnotations(\n  modifier: string,\n): modifier is N.VarianceAnnotations {\n  return modifier === \"in\" || modifier === \"out\";\n}\n\nfunction tsIsEntityName(\n  node: N.Expression,\n): node is N.MemberExpression | N.Identifier | N.TsInstantiationExpression {\n  if (node.extra?.parenthesized) {\n    return false;\n  }\n  switch (node.type) {\n    case \"Identifier\":\n      return true;\n    case \"MemberExpression\":\n      return !node.computed && tsIsEntityName(node.object);\n    case \"TSInstantiationExpression\":\n      return tsIsEntityName(node.expression);\n    default:\n      return false;\n  }\n}\n\nexport const enum tsParseEntityNameFlags {\n  NONE = 0b00,\n  ALLOW_RESERVED_WORDS = 0b01,\n  LEADING_THIS_AS_IDENTIFIER = 0b10,\n}\n\nexport default (superClass: ClassWithMixin<typeof Parser, IJSXParserMixin>) =>\n  class TypeScriptParserMixin extends superClass implements Parser {\n    getScopeHandler(): new (...args: any) => TypeScriptScopeHandler {\n      return TypeScriptScopeHandler;\n    }\n\n    tsIsIdentifier(): boolean {\n      // TODO: actually a bit more complex in TypeScript, but shouldn't matter.\n      // See https://github.com/Microsoft/TypeScript/issues/15008\n      return tokenIsIdentifier(this.state.type);\n    }\n\n    tsTokenCanFollowModifier() {\n      return (\n        this.match(tt.bracketL) ||\n        this.match(tt.braceL) ||\n        this.match(tt.star) ||\n        this.match(tt.ellipsis) ||\n        this.match(tt.privateName) ||\n        this.isLiteralPropertyName()\n      );\n    }\n\n    tsNextTokenOnSameLineAndCanFollowModifier() {\n      this.next();\n      if (this.hasPrecedingLineBreak()) {\n        return false;\n      }\n      return this.tsTokenCanFollowModifier();\n    }\n\n    tsNextTokenCanFollowModifier() {\n      // Note: TypeScript's implementation is much more complicated because\n      // more things are considered modifiers there.\n      // This implementation only handles modifiers not handled by @babel/parser itself. And \"static\".\n      if (this.match(tt._static)) {\n        this.next();\n        return this.tsTokenCanFollowModifier();\n      }\n      return this.tsNextTokenOnSameLineAndCanFollowModifier();\n    }\n\n    /** Parses a modifier matching one the given modifier names. */\n    tsParseModifier<T extends TsModifier>(\n      allowedModifiers: T[],\n      stopOnStartOfClassStaticBlock?: boolean,\n      hasSeenStaticModifier?: boolean,\n    ): T | undefined | null {\n      if (\n        !tokenIsIdentifier(this.state.type) &&\n        this.state.type !== tt._in &&\n        this.state.type !== tt._const\n      ) {\n        return undefined;\n      }\n\n      const modifier = this.state.value;\n      if (allowedModifiers.includes(modifier)) {\n        if (hasSeenStaticModifier && this.match(tt._static)) {\n          return undefined;\n        }\n        if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) {\n          return undefined;\n        }\n        if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) {\n          return modifier;\n        }\n      }\n      return undefined;\n    }\n\n    /** Parses a list of modifiers, in any order.\n     *  If you need a specific order, you must call this function multiple times:\n     *    this.tsParseModifiers({ modified: node, allowedModifiers: [\"public\"] });\n     *    this.tsParseModifiers({ modified: node, allowedModifiers: [\"abstract\", \"readonly\"] });\n     */\n    tsParseModifiers<N extends ModifierBase>(\n      {\n        allowedModifiers,\n        disallowedModifiers,\n        stopOnStartOfClassStaticBlock,\n        errorTemplate = TSErrors.InvalidModifierOnTypeMember,\n      }: {\n        allowedModifiers: readonly TsModifier[];\n        disallowedModifiers?: TsModifier[];\n        stopOnStartOfClassStaticBlock?: boolean;\n        errorTemplate?: typeof TSErrors.InvalidModifierOnTypeMember;\n      },\n      modified: N,\n    ): void {\n      const enforceOrder = (\n        loc: Position,\n        modifier: TsModifier,\n        before: TsModifier,\n        after: TsModifier,\n      ) => {\n        if (modifier === before && modified[after]) {\n          this.raise(TSErrors.InvalidModifiersOrder, loc, {\n            orderedModifiers: [before, after],\n          });\n        }\n      };\n      const incompatible = (\n        loc: Position,\n        modifier: TsModifier,\n        mod1: TsModifier,\n        mod2: TsModifier,\n      ) => {\n        if (\n          (modified[mod1] && modifier === mod2) ||\n          (modified[mod2] && modifier === mod1)\n        ) {\n          this.raise(TSErrors.IncompatibleModifiers, loc, {\n            modifiers: [mod1, mod2],\n          });\n        }\n      };\n\n      for (;;) {\n        const { startLoc } = this.state;\n        const modifier: TsModifier | undefined | null = this.tsParseModifier(\n          allowedModifiers.concat(disallowedModifiers ?? []),\n          stopOnStartOfClassStaticBlock,\n          modified.static,\n        );\n\n        if (!modifier) break;\n\n        if (tsIsAccessModifier(modifier)) {\n          if (modified.accessibility) {\n            this.raise(TSErrors.DuplicateAccessibilityModifier, startLoc, {\n              modifier,\n            });\n          } else {\n            enforceOrder(startLoc, modifier, modifier, \"override\");\n            enforceOrder(startLoc, modifier, modifier, \"static\");\n            enforceOrder(startLoc, modifier, modifier, \"readonly\");\n\n            modified.accessibility = modifier;\n          }\n        } else if (tsIsVarianceAnnotations(modifier)) {\n          if (modified[modifier]) {\n            this.raise(TSErrors.DuplicateModifier, startLoc, { modifier });\n          }\n          modified[modifier] = true;\n\n          enforceOrder(startLoc, modifier, \"in\", \"out\");\n        } else {\n          if (Object.hasOwn(modified, modifier)) {\n            this.raise(TSErrors.DuplicateModifier, startLoc, { modifier });\n          } else {\n            enforceOrder(startLoc, modifier, \"static\", \"readonly\");\n            enforceOrder(startLoc, modifier, \"static\", \"override\");\n            enforceOrder(startLoc, modifier, \"override\", \"readonly\");\n            enforceOrder(startLoc, modifier, \"abstract\", \"override\");\n\n            incompatible(startLoc, modifier, \"declare\", \"override\");\n            incompatible(startLoc, modifier, \"static\", \"abstract\");\n          }\n          modified[modifier] = true;\n        }\n\n        if (disallowedModifiers?.includes(modifier)) {\n          this.raise(errorTemplate, startLoc, {\n            modifier,\n          });\n        }\n      }\n    }\n\n    tsIsListTerminator(kind: ParsingContext): boolean {\n      switch (kind) {\n        case \"EnumMembers\":\n        case \"TypeMembers\":\n          return this.match(tt.braceR);\n        case \"HeritageClauseElement\":\n          return this.match(tt.braceL);\n        case \"TupleElementTypes\":\n          return this.match(tt.bracketR);\n        case \"TypeParametersOrArguments\":\n          return this.match(tt.gt);\n      }\n    }\n\n    tsParseList<T extends N.Node>(\n      kind: ParsingContext,\n      parseElement: () => T,\n    ): T[] {\n      const result: T[] = [];\n      while (!this.tsIsListTerminator(kind)) {\n        // Skipping \"parseListElement\" from the TS source since that's just for error handling.\n        result.push(parseElement());\n      }\n      return result;\n    }\n\n    tsParseDelimitedList<T extends N.Node>(\n      kind: ParsingContext,\n      parseElement: () => T,\n      refTrailingCommaPos?: {\n        value: number;\n      },\n    ): T[] {\n      return nonNull(\n        this.tsParseDelimitedListWorker(\n          kind,\n          parseElement,\n          /* expectSuccess */ true,\n          refTrailingCommaPos,\n        ),\n      );\n    }\n\n    /**\n     * If !expectSuccess, returns undefined instead of failing to parse.\n     * If expectSuccess, parseElement should always return a defined value.\n     */\n    tsParseDelimitedListWorker<T extends N.Node>(\n      kind: ParsingContext,\n      parseElement: () => T | undefined,\n      expectSuccess: boolean,\n      refTrailingCommaPos?: {\n        value: number;\n      },\n    ): T[] | undefined {\n      const result: T[] = [];\n      let trailingCommaPos = -1;\n\n      for (;;) {\n        if (this.tsIsListTerminator(kind)) {\n          break;\n        }\n        trailingCommaPos = -1;\n\n        const element = parseElement();\n        if (element == null) {\n          return undefined;\n        }\n        result.push(element);\n\n        if (this.eat(tt.comma)) {\n          trailingCommaPos = this.state.lastTokStartLoc.index;\n          continue;\n        }\n\n        if (this.tsIsListTerminator(kind)) {\n          break;\n        }\n\n        if (expectSuccess) {\n          // This will fail with an error about a missing comma\n          this.expect(tt.comma);\n        }\n        return undefined;\n      }\n\n      if (refTrailingCommaPos) {\n        refTrailingCommaPos.value = trailingCommaPos;\n      }\n\n      return result;\n    }\n\n    tsParseBracketedList<T extends N.Node>(\n      kind: ParsingContext,\n      parseElement: () => T,\n      bracket: boolean,\n      skipFirstToken: boolean,\n      refTrailingCommaPos?: {\n        value: number;\n      },\n    ): T[] {\n      if (!skipFirstToken) {\n        if (bracket) {\n          this.expect(tt.bracketL);\n        } else {\n          this.expect(tt.lt);\n        }\n      }\n\n      const result = this.tsParseDelimitedList(\n        kind,\n        parseElement,\n        refTrailingCommaPos,\n      );\n\n      if (bracket) {\n        this.expect(tt.bracketR);\n      } else {\n        this.expect(tt.gt);\n      }\n\n      return result;\n    }\n\n    tsParseImportType(): N.TsImportType {\n      const node = this.startNode<N.TsImportType>();\n      this.expect(tt._import);\n      this.expect(tt.parenL);\n      if (!this.match(tt.string)) {\n        this.raise(TSErrors.UnsupportedImportTypeArgument, this.state.startLoc);\n        if (process.env.BABEL_8_BREAKING) {\n          // Consume as an non-conditional type so that we can recover from this error\n          node.argument = this.tsParseNonConditionalType() as any;\n        } else {\n          node.argument = super.parseExprAtom() as any;\n        }\n      } else {\n        if (process.env.BABEL_8_BREAKING) {\n          node.argument = this.tsParseLiteralTypeNode();\n        } else {\n          // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n          node.argument = this.parseStringLiteral(this.state.value);\n        }\n      }\n      if (this.eat(tt.comma)) {\n        node.options = this.tsParseImportTypeOptions();\n      } else {\n        node.options = null;\n      }\n      this.expect(tt.parenR);\n\n      if (this.eat(tt.dot)) {\n        // In this instance, the entity name will actually itself be a\n        // qualifier, so allow it to be a reserved word as well.\n        node.qualifier = this.tsParseEntityName(\n          tsParseEntityNameFlags.ALLOW_RESERVED_WORDS |\n            tsParseEntityNameFlags.LEADING_THIS_AS_IDENTIFIER,\n        );\n      }\n      if (this.match(tt.lt)) {\n        if (process.env.BABEL_8_BREAKING) {\n          node.typeArguments = this.tsParseTypeArguments();\n        } else {\n          node.typeParameters = this.tsParseTypeArguments();\n        }\n      }\n      return this.finishNode(node, \"TSImportType\");\n    }\n\n    tsParseImportTypeOptions(): N.ObjectExpression {\n      const node = this.startNode<N.ObjectExpression>();\n      this.expect(tt.braceL);\n      const withProperty = this.startNode<N.ObjectProperty>();\n      if (this.isContextual(tt._with)) {\n        withProperty.method = false;\n        withProperty.key = this.parseIdentifier(true);\n        withProperty.computed = false;\n        withProperty.shorthand = false;\n      } else {\n        this.unexpected(null, tt._with);\n      }\n      this.expect(tt.colon);\n      withProperty.value = this.tsParseImportTypeWithPropertyValue();\n      node.properties = [this.finishObjectProperty(withProperty)];\n      this.eat(tt.comma);\n      this.expect(tt.braceR);\n      return this.finishNode(node, \"ObjectExpression\");\n    }\n\n    tsParseImportTypeWithPropertyValue(): N.ObjectExpression {\n      const node = this.startNode<N.ObjectExpression>();\n      const properties = [];\n      this.expect(tt.braceL);\n      while (!this.match(tt.braceR)) {\n        const type = this.state.type;\n        if (tokenIsIdentifier(type) || type === tt.string) {\n          properties.push(super.parsePropertyDefinition(null));\n        } else {\n          this.unexpected();\n        }\n        this.eat(tt.comma);\n      }\n      node.properties = properties;\n      this.next(); // eat }\n      return this.finishNode(node, \"ObjectExpression\");\n    }\n\n    tsParseEntityName(flags: tsParseEntityNameFlags): N.TsEntityName {\n      let entity: N.TsEntityName;\n      if (\n        flags & tsParseEntityNameFlags.ALLOW_RESERVED_WORDS &&\n        this.match(tt._this)\n      ) {\n        if (flags & tsParseEntityNameFlags.LEADING_THIS_AS_IDENTIFIER) {\n          entity = this.parseIdentifier(true);\n        } else {\n          const node = this.startNode<N.ThisExpression>();\n          this.next();\n          entity = this.finishNode(node, \"ThisExpression\");\n        }\n      } else {\n        entity = this.parseIdentifier(\n          !!(flags & tsParseEntityNameFlags.ALLOW_RESERVED_WORDS),\n        );\n      }\n      while (this.eat(tt.dot)) {\n        const node: Undone<N.TsQualifiedName> =\n          this.startNodeAtNode<N.TsQualifiedName>(entity);\n        node.left = entity;\n        node.right = this.parseIdentifier(\n          !!(flags & tsParseEntityNameFlags.ALLOW_RESERVED_WORDS),\n        );\n        entity = this.finishNode(node, \"TSQualifiedName\");\n      }\n      return entity;\n    }\n\n    tsParseTypeReference(): N.TsTypeReference {\n      const node = this.startNode<N.TsTypeReference>();\n      node.typeName = this.tsParseEntityName(\n        tsParseEntityNameFlags.ALLOW_RESERVED_WORDS,\n      );\n      if (!this.hasPrecedingLineBreak() && this.match(tt.lt)) {\n        if (process.env.BABEL_8_BREAKING) {\n          node.typeArguments = this.tsParseTypeArguments();\n        } else {\n          node.typeParameters = this.tsParseTypeArguments();\n        }\n      }\n      return this.finishNode(node, \"TSTypeReference\");\n    }\n\n    tsParseThisTypePredicate(lhs: N.TsThisType): N.TsTypePredicate {\n      this.next();\n      const node = this.startNodeAtNode<N.TsTypePredicate>(lhs);\n      node.parameterName = lhs;\n      node.typeAnnotation = this.tsParseTypeAnnotation(/* eatColon */ false);\n      node.asserts = false;\n      return this.finishNode(node, \"TSTypePredicate\");\n    }\n\n    tsParseThisTypeNode(): N.TsThisType {\n      const node = this.startNode<N.TsThisType>();\n      this.next();\n      return this.finishNode(node, \"TSThisType\");\n    }\n\n    tsParseTypeQuery(): N.TsTypeQuery {\n      const node = this.startNode<N.TsTypeQuery>();\n      this.expect(tt._typeof);\n      if (this.match(tt._import)) {\n        node.exprName = this.tsParseImportType();\n      } else {\n        if (process.env.BABEL_8_BREAKING) {\n          node.exprName = this.tsParseEntityName(\n            tsParseEntityNameFlags.ALLOW_RESERVED_WORDS,\n          );\n        } else {\n          node.exprName = this.tsParseEntityName(\n            tsParseEntityNameFlags.ALLOW_RESERVED_WORDS |\n              tsParseEntityNameFlags.LEADING_THIS_AS_IDENTIFIER,\n          );\n        }\n      }\n      if (!this.hasPrecedingLineBreak() && this.match(tt.lt)) {\n        if (process.env.BABEL_8_BREAKING) {\n          node.typeArguments = this.tsParseTypeArguments();\n        } else {\n          node.typeParameters = this.tsParseTypeArguments();\n        }\n      }\n      return this.finishNode(node, \"TSTypeQuery\");\n    }\n\n    tsParseInOutModifiers = this.tsParseModifiers.bind(this, {\n      allowedModifiers: [\"in\", \"out\"],\n      disallowedModifiers: [\n        \"const\",\n        \"public\",\n        \"private\",\n        \"protected\",\n        \"readonly\",\n        \"declare\",\n        \"abstract\",\n        \"override\",\n      ],\n      errorTemplate: TSErrors.InvalidModifierOnTypeParameter,\n    });\n\n    tsParseConstModifier = this.tsParseModifiers.bind(this, {\n      allowedModifiers: [\"const\"],\n      // for better error recovery\n      disallowedModifiers: [\"in\", \"out\"],\n      errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions,\n    });\n\n    tsParseInOutConstModifiers = this.tsParseModifiers.bind(this, {\n      allowedModifiers: [\"in\", \"out\", \"const\"],\n      disallowedModifiers: [\n        \"public\",\n        \"private\",\n        \"protected\",\n        \"readonly\",\n        \"declare\",\n        \"abstract\",\n        \"override\",\n      ],\n      errorTemplate: TSErrors.InvalidModifierOnTypeParameter,\n    });\n\n    tsParseTypeParameter(\n      parseModifiers: (node: Undone<N.TsTypeParameter>) => void,\n    ): N.TsTypeParameter {\n      const node = this.startNode<N.TsTypeParameter>();\n\n      parseModifiers(node);\n\n      node.name = this.tsParseTypeParameterName();\n      node.constraint = this.tsEatThenParseType(tt._extends);\n      node.default = this.tsEatThenParseType(tt.eq);\n      return this.finishNode(node, \"TSTypeParameter\");\n    }\n\n    tsTryParseTypeParameters(\n      parseModifiers: (node: N.TsTypeParameter) => void,\n    ): N.TsTypeParameterDeclaration | undefined | null {\n      if (this.match(tt.lt)) {\n        return this.tsParseTypeParameters(parseModifiers);\n      }\n    }\n\n    tsParseTypeParameters(parseModifiers: (node: N.TsTypeParameter) => void) {\n      const node = this.startNode<N.TsTypeParameterDeclaration>();\n\n      if (this.match(tt.lt) || this.match(tt.jsxTagStart)) {\n        this.next();\n      } else {\n        this.unexpected();\n      }\n\n      const refTrailingCommaPos = { value: -1 };\n\n      node.params = this.tsParseBracketedList(\n        \"TypeParametersOrArguments\",\n        this.tsParseTypeParameter.bind(this, parseModifiers),\n        /* bracket */ false,\n        /* skipFirstToken */ true,\n        refTrailingCommaPos,\n      );\n      if (node.params.length === 0) {\n        this.raise(TSErrors.EmptyTypeParameters, node);\n      }\n      if (refTrailingCommaPos.value !== -1) {\n        this.addExtra(node, \"trailingComma\", refTrailingCommaPos.value);\n      }\n      return this.finishNode(node, \"TSTypeParameterDeclaration\");\n    }\n\n    // Note: In TypeScript implementation we must provide `yieldContext` and `awaitContext`,\n    // but here it's always false, because this is only used for types.\n    tsFillSignature(\n      returnToken: TokenType,\n      signature: Undone<N.TsSignatureDeclaration>,\n    ): void {\n      // Arrow fns *must* have return token (`=>`). Normal functions can omit it.\n      const returnTokenRequired = returnToken === tt.arrow;\n\n      // https://github.com/babel/babel/issues/9231\n      const paramsKey = process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\";\n      const returnTypeKey = process.env.BABEL_8_BREAKING\n        ? \"returnType\"\n        : \"typeAnnotation\";\n\n      signature.typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseConstModifier,\n      );\n      this.expect(tt.parenL);\n      signature[paramsKey] = this.tsParseBindingListForSignature();\n      if (returnTokenRequired) {\n        signature[returnTypeKey] =\n          this.tsParseTypeOrTypePredicateAnnotation(returnToken);\n      } else if (this.match(returnToken)) {\n        signature[returnTypeKey] =\n          this.tsParseTypeOrTypePredicateAnnotation(returnToken);\n      }\n    }\n\n    tsParseBindingListForSignature(): Array<\n      | N.Identifier\n      | N.RestElement\n      | N.ObjectPattern\n      | N.ArrayPattern\n      | N.VoidPattern\n    > {\n      const list = super.parseBindingList(\n        tt.parenR,\n        charCodes.rightParenthesis,\n        ParseBindingListFlags.IS_FUNCTION_PARAMS,\n      );\n      for (const pattern of list) {\n        const { type } = pattern;\n        if (type === \"AssignmentPattern\" || type === \"TSParameterProperty\") {\n          this.raise(TSErrors.UnsupportedSignatureParameterKind, pattern, {\n            type,\n          });\n        }\n      }\n      return list as Exclude<\n        (typeof list)[0],\n        N.AssignmentPattern | N.TSParameterProperty\n      >[];\n    }\n\n    tsParseTypeMemberSemicolon(): void {\n      if (!this.eat(tt.comma) && !this.isLineTerminator()) {\n        this.expect(tt.semi);\n      }\n    }\n\n    tsParseSignatureMember(\n      kind: \"TSCallSignatureDeclaration\" | \"TSConstructSignatureDeclaration\",\n      node: Undone<\n        N.TsCallSignatureDeclaration | N.TsConstructSignatureDeclaration\n      >,\n    ): N.TsCallSignatureDeclaration | N.TsConstructSignatureDeclaration {\n      this.tsFillSignature(tt.colon, node);\n      this.tsParseTypeMemberSemicolon();\n      return this.finishNode(node, kind);\n    }\n\n    tsIsUnambiguouslyIndexSignature() {\n      this.next(); // Skip '{'\n      if (tokenIsIdentifier(this.state.type)) {\n        this.next();\n        return this.match(tt.colon);\n      }\n      return false;\n    }\n\n    tsTryParseIndexSignature(\n      node: Undone<N.TsIndexSignature>,\n    ): N.TsIndexSignature | undefined {\n      if (\n        !(\n          this.match(tt.bracketL) &&\n          this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this))\n        )\n      ) {\n        return;\n      }\n\n      this.expect(tt.bracketL);\n      const id = this.parseIdentifier();\n      id.typeAnnotation = this.tsParseTypeAnnotation();\n      this.resetEndLocation(id); // set end position to end of type\n\n      this.expect(tt.bracketR);\n      node.parameters = [id];\n\n      const type = this.tsTryParseTypeAnnotation();\n      if (type) node.typeAnnotation = type;\n      this.tsParseTypeMemberSemicolon();\n      return this.finishNode(node, \"TSIndexSignature\");\n    }\n\n    tsParsePropertyOrMethodSignature(\n      node: Undone<N.TsPropertySignature | N.TsMethodSignature>,\n      readonly: boolean,\n    ): N.TsPropertySignature | N.TsMethodSignature {\n      if (this.eat(tt.question)) node.optional = true;\n\n      if (this.match(tt.parenL) || this.match(tt.lt)) {\n        if (readonly) {\n          this.raise(TSErrors.ReadonlyForMethodSignature, node);\n        }\n        const method = node as Undone<N.TsMethodSignature>;\n        if (method.kind && this.match(tt.lt)) {\n          this.raise(\n            TSErrors.AccessorCannotHaveTypeParameters,\n            this.state.curPosition(),\n          );\n        }\n        this.tsFillSignature(tt.colon, method);\n        this.tsParseTypeMemberSemicolon();\n        const paramsKey = process.env.BABEL_8_BREAKING\n          ? \"params\"\n          : \"parameters\";\n        const returnTypeKey = process.env.BABEL_8_BREAKING\n          ? \"returnType\"\n          : \"typeAnnotation\";\n        if (method.kind === \"get\") {\n          if (method[paramsKey].length > 0) {\n            this.raise(Errors.BadGetterArity, this.state.curPosition());\n            if (this.isThisParam(method[paramsKey][0])) {\n              this.raise(\n                TSErrors.AccessorCannotDeclareThisParameter,\n                this.state.curPosition(),\n              );\n            }\n          }\n        } else if (method.kind === \"set\") {\n          if (method[paramsKey].length !== 1) {\n            this.raise(Errors.BadSetterArity, this.state.curPosition());\n          } else {\n            const firstParameter = method[paramsKey][0];\n            if (this.isThisParam(firstParameter)) {\n              this.raise(\n                TSErrors.AccessorCannotDeclareThisParameter,\n                this.state.curPosition(),\n              );\n            }\n            if (\n              firstParameter.type === \"Identifier\" &&\n              firstParameter.optional\n            ) {\n              this.raise(\n                TSErrors.SetAccessorCannotHaveOptionalParameter,\n                this.state.curPosition(),\n              );\n            }\n            if (firstParameter.type === \"RestElement\") {\n              this.raise(\n                TSErrors.SetAccessorCannotHaveRestParameter,\n                this.state.curPosition(),\n              );\n            }\n          }\n          if (method[returnTypeKey]) {\n            this.raise(\n              TSErrors.SetAccessorCannotHaveReturnType,\n              method[returnTypeKey],\n            );\n          }\n        } else {\n          method.kind = \"method\";\n        }\n        return this.finishNode(method, \"TSMethodSignature\");\n      } else {\n        const property = node as Undone<N.TsPropertySignature>;\n        if (readonly) property.readonly = true;\n        const type = this.tsTryParseTypeAnnotation();\n        if (type) property.typeAnnotation = type;\n        this.tsParseTypeMemberSemicolon();\n        return this.finishNode(property, \"TSPropertySignature\");\n      }\n    }\n\n    tsParseTypeMember(): N.TsTypeElement {\n      const node: any = this.startNode();\n\n      if (this.match(tt.parenL) || this.match(tt.lt)) {\n        return this.tsParseSignatureMember(\"TSCallSignatureDeclaration\", node);\n      }\n\n      if (this.match(tt._new)) {\n        const id = this.startNode<N.Identifier>();\n        this.next();\n        if (this.match(tt.parenL) || this.match(tt.lt)) {\n          return this.tsParseSignatureMember(\n            \"TSConstructSignatureDeclaration\",\n            node,\n          );\n        } else {\n          node.key = this.createIdentifier(id, \"new\");\n          return this.tsParsePropertyOrMethodSignature(node, false);\n        }\n      }\n\n      this.tsParseModifiers(\n        {\n          allowedModifiers: [\"readonly\"],\n          disallowedModifiers: [\n            \"declare\",\n            \"abstract\",\n            \"private\",\n            \"protected\",\n            \"public\",\n            \"static\",\n            \"override\",\n          ],\n        },\n        node,\n      );\n\n      const idx = this.tsTryParseIndexSignature(node);\n      if (idx) {\n        return idx;\n      }\n\n      super.parsePropertyName(node);\n      if (\n        !node.computed &&\n        node.key.type === \"Identifier\" &&\n        (node.key.name === \"get\" || node.key.name === \"set\") &&\n        this.tsTokenCanFollowModifier()\n      ) {\n        node.kind = node.key.name;\n        super.parsePropertyName(node);\n        // Allow < here so that we can recover from get key<T> later\n        if (!this.match(tt.parenL) && !this.match(tt.lt)) {\n          this.unexpected(null, tt.parenL);\n        }\n      }\n      return this.tsParsePropertyOrMethodSignature(node, !!node.readonly);\n    }\n\n    tsParseTypeLiteral(): N.TsTypeLiteral {\n      const node = this.startNode<N.TsTypeLiteral>();\n      node.members = this.tsParseObjectTypeMembers();\n      return this.finishNode(node, \"TSTypeLiteral\");\n    }\n\n    tsParseObjectTypeMembers(): Array<N.TsTypeElement> {\n      this.expect(tt.braceL);\n      const members = this.tsParseList(\n        \"TypeMembers\",\n        this.tsParseTypeMember.bind(this),\n      );\n      this.expect(tt.braceR);\n      return members;\n    }\n\n    tsIsStartOfMappedType(): boolean {\n      this.next();\n      if (this.eat(tt.plusMin)) {\n        return this.isContextual(tt._readonly);\n      }\n      if (this.isContextual(tt._readonly)) {\n        this.next();\n      }\n      if (!this.match(tt.bracketL)) {\n        return false;\n      }\n      this.next();\n      if (!this.tsIsIdentifier()) {\n        return false;\n      }\n      this.next();\n      return this.match(tt._in);\n    }\n\n    tsParseMappedType(): N.TsMappedType {\n      const node = this.startNode<N.TsMappedType>();\n\n      this.expect(tt.braceL);\n\n      if (this.match(tt.plusMin)) {\n        node.readonly = this.state.value;\n        this.next();\n        this.expectContextual(tt._readonly);\n      } else if (this.eatContextual(tt._readonly)) {\n        node.readonly = true;\n      }\n\n      this.expect(tt.bracketL);\n      if (process.env.BABEL_8_BREAKING) {\n        node.key = this.tsParseTypeParameterName() as N.Identifier;\n        node.constraint = this.tsExpectThenParseType(tt._in);\n      } else {\n        const typeParameter = this.startNode<N.TsTypeParameter>();\n        typeParameter.name = this.tsParseTypeParameterName();\n        typeParameter.constraint = this.tsExpectThenParseType(tt._in);\n        // @ts-expect-error for Babel 7\n        node.typeParameter = this.finishNode(typeParameter, \"TSTypeParameter\");\n      }\n      node.nameType = this.eatContextual(tt._as) ? this.tsParseType() : null;\n\n      this.expect(tt.bracketR);\n\n      if (this.match(tt.plusMin)) {\n        node.optional = this.state.value;\n        this.next();\n        this.expect(tt.question);\n      } else if (this.eat(tt.question)) {\n        node.optional = true;\n      }\n\n      node.typeAnnotation = this.tsTryParseType();\n      this.semicolon();\n      this.expect(tt.braceR);\n\n      return this.finishNode(node, \"TSMappedType\");\n    }\n\n    tsParseTupleType(): N.TsTupleType {\n      const node = this.startNode<N.TsTupleType>();\n      node.elementTypes = this.tsParseBracketedList(\n        \"TupleElementTypes\",\n        this.tsParseTupleElementType.bind(this),\n        /* bracket */ true,\n        /* skipFirstToken */ false,\n      );\n\n      // Validate the elementTypes to ensure that no mandatory elements\n      // follow optional elements\n      let seenOptionalElement = false;\n      node.elementTypes.forEach(elementNode => {\n        const { type } = elementNode;\n\n        if (\n          seenOptionalElement &&\n          type !== \"TSRestType\" &&\n          type !== \"TSOptionalType\" &&\n          !(type === \"TSNamedTupleMember\" && elementNode.optional)\n        ) {\n          this.raise(TSErrors.OptionalTypeBeforeRequired, elementNode);\n        }\n\n        seenOptionalElement ||=\n          (type === \"TSNamedTupleMember\" && elementNode.optional) ||\n          type === \"TSOptionalType\";\n      });\n\n      return this.finishNode(node, \"TSTupleType\");\n    }\n\n    tsParseTupleElementType(): N.TsNamedTupleMember | N.TsType {\n      // parses `...TsType[]`\n\n      const restStartLoc = this.state.startLoc;\n\n      const rest = this.eat(tt.ellipsis);\n      const { startLoc } = this.state;\n\n      let labeled: boolean;\n      let label: N.Identifier;\n      let optional: boolean;\n      let type: N.TsNamedTupleMember | N.TsType;\n\n      const isWord = tokenIsKeywordOrIdentifier(this.state.type);\n      const chAfterWord = isWord ? this.lookaheadCharCode() : null;\n      if (chAfterWord === charCodes.colon) {\n        labeled = true;\n        optional = false;\n        label = this.parseIdentifier(true);\n        this.expect(tt.colon);\n        type = this.tsParseType();\n      } else if (chAfterWord === charCodes.questionMark) {\n        optional = true;\n        const wordName = this.state.value;\n        const typeOrLabel = this.tsParseNonArrayType();\n\n        if (this.lookaheadCharCode() === charCodes.colon) {\n          labeled = true;\n          label = this.createIdentifier(\n            this.startNodeAt<N.Identifier>(startLoc),\n            wordName,\n          );\n          this.expect(tt.question);\n          this.expect(tt.colon);\n          type = this.tsParseType();\n        } else {\n          labeled = false;\n          type = typeOrLabel;\n          this.expect(tt.question);\n        }\n      } else {\n        type = this.tsParseType();\n        optional = this.eat(tt.question);\n        // In this case (labeled === true) could be only in invalid label.\n        // E.g. [x.y:type]\n        // An error is raised while processing node.\n        labeled = this.eat(tt.colon);\n      }\n\n      if (labeled) {\n        let labeledNode: Undone<N.TsNamedTupleMember>;\n        if (label) {\n          labeledNode = this.startNodeAt<N.TsNamedTupleMember>(startLoc);\n          labeledNode.optional = optional;\n          labeledNode.label = label;\n          labeledNode.elementType = type;\n\n          if (this.eat(tt.question)) {\n            labeledNode.optional = true;\n            this.raise(\n              TSErrors.TupleOptionalAfterType,\n              this.state.lastTokStartLoc,\n            );\n          }\n        } else {\n          labeledNode = this.startNodeAt<N.TsNamedTupleMember>(startLoc);\n          labeledNode.optional = optional;\n          this.raise(TSErrors.InvalidTupleMemberLabel, type);\n          // @ts-expect-error This produces an invalid AST, but at least we don't drop\n          // nodes representing the invalid source.\n          labeledNode.label = type;\n          labeledNode.elementType = this.tsParseType();\n        }\n        type = this.finishNode(labeledNode, \"TSNamedTupleMember\");\n      } else if (optional) {\n        const optionalTypeNode = this.startNodeAt<N.TsOptionalType>(startLoc);\n        optionalTypeNode.typeAnnotation = type;\n        type = this.finishNode(optionalTypeNode, \"TSOptionalType\");\n      }\n\n      if (rest) {\n        const restNode = this.startNodeAt<N.TsRestType>(restStartLoc);\n        restNode.typeAnnotation = type;\n        type = this.finishNode(restNode, \"TSRestType\");\n      }\n\n      return type;\n    }\n\n    tsParseParenthesizedType(): N.TsParenthesizedType {\n      const node = this.startNode<N.TsParenthesizedType>();\n      this.expect(tt.parenL);\n      node.typeAnnotation = this.tsParseType();\n      this.expect(tt.parenR);\n      return this.finishNode(node, \"TSParenthesizedType\");\n    }\n\n    tsParseFunctionOrConstructorType(\n      type: \"TSFunctionType\" | \"TSConstructorType\",\n      abstract?: boolean,\n    ): N.TsFunctionOrConstructorType {\n      const node = this.startNode<\n        N.TsFunctionOrConstructorType | N.TsConstructorType\n      >();\n      if (type === \"TSConstructorType\") {\n        (node as Undone<N.TsConstructorType>).abstract = !!abstract;\n        if (abstract) this.next();\n        this.next(); // eat `new`\n      }\n      this.tsInAllowConditionalTypesContext(() =>\n        this.tsFillSignature(tt.arrow, node),\n      );\n      return this.finishNode(node, type);\n    }\n\n    tsParseLiteralTypeNode(): N.TsLiteralType {\n      const node = this.startNode<N.TsLiteralType>();\n      switch (this.state.type) {\n        case tt.num:\n        case tt.bigint:\n        case tt.string:\n        case tt._true:\n        case tt._false:\n          // For compatibility to estree we cannot call parseLiteral directly here\n          // @ts-expect-error refine typings\n          node.literal = super.parseExprAtom();\n          break;\n        default:\n          this.unexpected();\n      }\n      return this.finishNode(node, \"TSLiteralType\");\n    }\n\n    tsParseTemplateLiteralType(): N.TsTemplateLiteralType | N.TsLiteralType {\n      if (process.env.BABEL_8_BREAKING) {\n        const startLoc = this.state.startLoc;\n        let curElt = this.parseTemplateElement(false);\n        const quasis = [curElt];\n        if (curElt.tail) {\n          const node = this.startNodeAt<N.TsLiteralType>(startLoc);\n          const literal = this.startNodeAt<N.TemplateLiteral>(startLoc);\n          literal.expressions = [];\n          literal.quasis = quasis;\n          node.literal = this.finishNode(literal, \"TemplateLiteral\");\n          return this.finishNode(node, \"TSLiteralType\");\n        } else {\n          const substitutions: N.TsType[] = [];\n          while (!curElt.tail) {\n            substitutions.push(this.tsParseType());\n            this.readTemplateContinuation();\n            quasis.push((curElt = this.parseTemplateElement(false)));\n          }\n          const node = this.startNodeAt<N.TsTemplateLiteralType>(startLoc);\n          node.types = substitutions;\n          node.quasis = quasis;\n          return this.finishNode(node, \"TSTemplateLiteralType\");\n        }\n      } else {\n        const node = this.startNode<N.TsLiteralType>();\n        node.literal = super.parseTemplate(false);\n        return this.finishNode(node, \"TSLiteralType\");\n      }\n    }\n\n    parseTemplateSubstitution(): N.TsType | N.Expression {\n      if (this.state.inType) return this.tsParseType();\n      return super.parseTemplateSubstitution();\n    }\n\n    tsParseThisTypeOrThisTypePredicate(): N.TsThisType | N.TsTypePredicate {\n      const thisKeyword = this.tsParseThisTypeNode();\n      if (this.isContextual(tt._is) && !this.hasPrecedingLineBreak()) {\n        return this.tsParseThisTypePredicate(thisKeyword);\n      } else {\n        return thisKeyword;\n      }\n    }\n\n    tsParseNonArrayType(): N.TsType {\n      switch (this.state.type) {\n        case tt.string:\n        case tt.num:\n        case tt.bigint:\n        case tt._true:\n        case tt._false:\n          return this.tsParseLiteralTypeNode();\n        case tt.plusMin:\n          if (this.state.value === \"-\") {\n            const node = this.startNode<N.TsLiteralType>();\n            const nextToken = this.lookahead();\n            if (nextToken.type !== tt.num && nextToken.type !== tt.bigint) {\n              this.unexpected();\n            }\n            node.literal = this.parseMaybeUnary() as N.UnaryExpression;\n            return this.finishNode(node, \"TSLiteralType\");\n          }\n          break;\n        case tt._this:\n          return this.tsParseThisTypeOrThisTypePredicate();\n        case tt._typeof:\n          return this.tsParseTypeQuery();\n        case tt._import:\n          return this.tsParseImportType();\n        case tt.braceL:\n          return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this))\n            ? this.tsParseMappedType()\n            : this.tsParseTypeLiteral();\n        case tt.bracketL:\n          return this.tsParseTupleType();\n        case tt.parenL:\n          if (process.env.BABEL_8_BREAKING) {\n            if (\n              !(this.optionFlags & OptionFlags.CreateParenthesizedExpressions)\n            ) {\n              const startLoc = this.state.startLoc;\n              this.next();\n              const type = this.tsParseType();\n              this.expect(tt.parenR);\n              this.addExtra(type, \"parenthesized\", true);\n              this.addExtra(type, \"parenStart\", startLoc.index);\n              return type;\n            }\n          }\n\n          return this.tsParseParenthesizedType();\n        case tt.templateNonTail:\n        case tt.templateTail:\n          return this.tsParseTemplateLiteralType();\n        default: {\n          const { type } = this.state;\n          if (\n            tokenIsIdentifier(type) ||\n            type === tt._void ||\n            type === tt._null\n          ) {\n            const nodeType =\n              type === tt._void\n                ? \"TSVoidKeyword\"\n                : type === tt._null\n                  ? \"TSNullKeyword\"\n                  : keywordTypeFromName(this.state.value);\n            if (\n              nodeType !== undefined &&\n              this.lookaheadCharCode() !== charCodes.dot\n            ) {\n              const node = this.startNode<N.TsKeywordType>();\n              this.next();\n              return this.finishNode(node, nodeType);\n            }\n            return this.tsParseTypeReference();\n          }\n        }\n      }\n\n      this.unexpected();\n    }\n\n    tsParseArrayTypeOrHigher(): N.TsType {\n      const { startLoc } = this.state;\n      let type = this.tsParseNonArrayType();\n      while (!this.hasPrecedingLineBreak() && this.eat(tt.bracketL)) {\n        if (this.match(tt.bracketR)) {\n          const node = this.startNodeAt<N.TsArrayType>(startLoc);\n          node.elementType = type;\n          this.expect(tt.bracketR);\n          type = this.finishNode(node, \"TSArrayType\");\n        } else {\n          const node = this.startNodeAt<N.TsIndexedAccessType>(startLoc);\n          node.objectType = type;\n          node.indexType = this.tsParseType();\n          this.expect(tt.bracketR);\n          type = this.finishNode(node, \"TSIndexedAccessType\");\n        }\n      }\n      return type;\n    }\n\n    tsParseTypeOperator(): N.TsTypeOperator {\n      const node = this.startNode<N.TsTypeOperator>();\n      const operator = this.state.value;\n      this.next(); // eat operator\n      node.operator = operator;\n      node.typeAnnotation = this.tsParseTypeOperatorOrHigher();\n\n      if (operator === \"readonly\") {\n        this.tsCheckTypeAnnotationForReadOnly(node);\n      }\n\n      return this.finishNode(node, \"TSTypeOperator\");\n    }\n\n    tsCheckTypeAnnotationForReadOnly(node: Undone<N.TsTypeOperator>) {\n      switch (node.typeAnnotation.type) {\n        case \"TSTupleType\":\n        case \"TSArrayType\":\n          return;\n        default:\n          this.raise(TSErrors.UnexpectedReadonly, node);\n      }\n    }\n\n    tsParseInferType(): N.TsInferType {\n      const node = this.startNode<N.TsInferType>();\n      this.expectContextual(tt._infer);\n      const typeParameter = this.startNode<N.TsTypeParameter>();\n      typeParameter.name = this.tsParseTypeParameterName();\n      typeParameter.constraint = this.tsTryParse(() =>\n        this.tsParseConstraintForInferType(),\n      );\n      node.typeParameter = this.finishNode(typeParameter, \"TSTypeParameter\");\n      return this.finishNode(node, \"TSInferType\");\n    }\n\n    tsParseConstraintForInferType() {\n      if (this.eat(tt._extends)) {\n        const constraint = this.tsInDisallowConditionalTypesContext(() =>\n          this.tsParseType(),\n        );\n        if (\n          this.state.inDisallowConditionalTypesContext ||\n          !this.match(tt.question)\n        ) {\n          return constraint;\n        }\n      }\n    }\n\n    tsParseTypeOperatorOrHigher(): N.TsType {\n      const isTypeOperator =\n        tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc;\n      return isTypeOperator\n        ? this.tsParseTypeOperator()\n        : this.isContextual(tt._infer)\n          ? this.tsParseInferType()\n          : this.tsInAllowConditionalTypesContext(() =>\n              this.tsParseArrayTypeOrHigher(),\n            );\n    }\n\n    tsParseUnionOrIntersectionType(\n      kind: \"TSUnionType\" | \"TSIntersectionType\",\n      parseConstituentType: () => N.TsType,\n      operator: TokenType,\n    ): N.TsType {\n      const node = this.startNode<N.TsUnionType | N.TsIntersectionType>();\n      const hasLeadingOperator = this.eat(operator);\n      const types = [];\n      do {\n        types.push(parseConstituentType());\n      } while (this.eat(operator));\n      if (types.length === 1 && !hasLeadingOperator) {\n        return types[0];\n      }\n      node.types = types;\n      return this.finishNode(node, kind);\n    }\n\n    tsParseIntersectionTypeOrHigher(): N.TsType {\n      return this.tsParseUnionOrIntersectionType(\n        \"TSIntersectionType\",\n        this.tsParseTypeOperatorOrHigher.bind(this),\n        tt.bitwiseAND,\n      );\n    }\n\n    tsParseUnionTypeOrHigher() {\n      return this.tsParseUnionOrIntersectionType(\n        \"TSUnionType\",\n        this.tsParseIntersectionTypeOrHigher.bind(this),\n        tt.bitwiseOR,\n      );\n    }\n\n    tsIsStartOfFunctionType() {\n      if (this.match(tt.lt)) {\n        return true;\n      }\n      return (\n        this.match(tt.parenL) &&\n        this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this))\n      );\n    }\n\n    tsSkipParameterStart(): boolean {\n      if (tokenIsIdentifier(this.state.type) || this.match(tt._this)) {\n        this.next();\n        return true;\n      }\n\n      if (this.match(tt.braceL)) {\n        // Return true if we can parse an object pattern without errors\n        const { errors } = this.state;\n        const previousErrorCount = errors.length;\n        try {\n          this.parseObjectLike(tt.braceR, true);\n          return errors.length === previousErrorCount;\n        } catch {\n          return false;\n        }\n      }\n\n      if (this.match(tt.bracketL)) {\n        this.next();\n        // Return true if we can parse an array pattern without errors\n        const { errors } = this.state;\n        const previousErrorCount = errors.length;\n        try {\n          super.parseBindingList(\n            tt.bracketR,\n            charCodes.rightSquareBracket,\n            ParseBindingListFlags.ALLOW_EMPTY,\n          );\n          return errors.length === previousErrorCount;\n        } catch {\n          return false;\n        }\n      }\n\n      return false;\n    }\n\n    tsIsUnambiguouslyStartOfFunctionType(): boolean {\n      this.next();\n      if (this.match(tt.parenR) || this.match(tt.ellipsis)) {\n        // ( )\n        // ( ...\n        return true;\n      }\n      if (this.tsSkipParameterStart()) {\n        if (\n          this.match(tt.colon) ||\n          this.match(tt.comma) ||\n          this.match(tt.question) ||\n          this.match(tt.eq)\n        ) {\n          // ( xxx :\n          // ( xxx ,\n          // ( xxx ?\n          // ( xxx =\n          return true;\n        }\n        if (this.match(tt.parenR)) {\n          this.next();\n          if (this.match(tt.arrow)) {\n            // ( xxx ) =>\n            return true;\n          }\n        }\n      }\n      return false;\n    }\n\n    tsParseTypeOrTypePredicateAnnotation(\n      returnToken: TokenType,\n    ): N.TsTypeAnnotation {\n      return this.tsInType(() => {\n        const t = this.startNode<N.TsTypeAnnotation>();\n        this.expect(returnToken);\n\n        const node = this.startNode<N.TsTypePredicate>();\n\n        const asserts = !!this.tsTryParse(\n          this.tsParseTypePredicateAsserts.bind(this),\n        );\n\n        if (asserts && this.match(tt._this)) {\n          // When asserts is false, thisKeyword is handled by tsParseNonArrayType\n          // : asserts this is type\n          let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate();\n          // if it turns out to be a `TSThisType`, wrap it with `TSTypePredicate`\n          // : asserts this\n          if (thisTypePredicate.type === \"TSThisType\") {\n            node.parameterName = thisTypePredicate;\n            node.asserts = true;\n            (node as N.TsTypePredicate).typeAnnotation = null;\n            thisTypePredicate = this.finishNode(node, \"TSTypePredicate\");\n          } else {\n            this.resetStartLocationFromNode(thisTypePredicate, node);\n            thisTypePredicate.asserts = true;\n          }\n          t.typeAnnotation = thisTypePredicate;\n          return this.finishNode(t, \"TSTypeAnnotation\");\n        }\n\n        const typePredicateVariable =\n          this.tsIsIdentifier() &&\n          this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this));\n\n        if (!typePredicateVariable) {\n          if (!asserts) {\n            // : type\n            return this.tsParseTypeAnnotation(/* eatColon */ false, t);\n          }\n\n          // : asserts foo\n          node.parameterName = this.parseIdentifier();\n          node.asserts = asserts;\n          (node as N.TsTypePredicate).typeAnnotation = null;\n          t.typeAnnotation = this.finishNode(node, \"TSTypePredicate\");\n          return this.finishNode(t, \"TSTypeAnnotation\");\n        }\n\n        // : asserts foo is type\n        const type = this.tsParseTypeAnnotation(/* eatColon */ false);\n        node.parameterName = typePredicateVariable;\n        node.typeAnnotation = type;\n        node.asserts = asserts;\n        t.typeAnnotation = this.finishNode(node, \"TSTypePredicate\");\n        return this.finishNode(t, \"TSTypeAnnotation\");\n      });\n    }\n\n    tsTryParseTypeOrTypePredicateAnnotation(): N.TsTypeAnnotation | undefined {\n      if (this.match(tt.colon)) {\n        return this.tsParseTypeOrTypePredicateAnnotation(tt.colon);\n      }\n    }\n\n    tsTryParseTypeAnnotation(): N.TsTypeAnnotation | undefined {\n      if (this.match(tt.colon)) {\n        return this.tsParseTypeAnnotation();\n      }\n    }\n\n    tsTryParseType(): N.TsType | undefined {\n      return this.tsEatThenParseType(tt.colon);\n    }\n\n    tsParseTypePredicatePrefix(): N.Identifier | undefined {\n      const id = this.parseIdentifier();\n      if (this.isContextual(tt._is) && !this.hasPrecedingLineBreak()) {\n        this.next();\n        return id;\n      }\n    }\n\n    tsParseTypePredicateAsserts(): boolean {\n      if (this.state.type !== tt._asserts) {\n        return false;\n      }\n      const containsEsc = this.state.containsEsc;\n      this.next();\n      if (!tokenIsIdentifier(this.state.type) && !this.match(tt._this)) {\n        return false;\n      }\n\n      if (containsEsc) {\n        this.raise(\n          Errors.InvalidEscapedReservedWord,\n          this.state.lastTokStartLoc,\n          {\n            reservedWord: \"asserts\",\n          },\n        );\n      }\n\n      return true;\n    }\n\n    tsParseTypeAnnotation(\n      eatColon = true,\n      t: Undone<N.TsTypeAnnotation> = this.startNode<N.TsTypeAnnotation>(),\n    ): N.TsTypeAnnotation {\n      this.tsInType(() => {\n        if (eatColon) this.expect(tt.colon);\n        t.typeAnnotation = this.tsParseType();\n      });\n      return this.finishNode(t, \"TSTypeAnnotation\");\n    }\n\n    /** Be sure to be in a type context before calling this, using `tsInType`. */\n    tsParseType(): N.TsType {\n      // Need to set `state.inType` so that we don't parse JSX in a type context.\n      assert(this.state.inType);\n      const type = this.tsParseNonConditionalType();\n\n      if (\n        this.state.inDisallowConditionalTypesContext ||\n        this.hasPrecedingLineBreak() ||\n        !this.eat(tt._extends)\n      ) {\n        return type;\n      }\n      const node = this.startNodeAtNode<N.TsConditionalType>(type);\n      node.checkType = type;\n\n      node.extendsType = this.tsInDisallowConditionalTypesContext(() =>\n        this.tsParseNonConditionalType(),\n      );\n\n      this.expect(tt.question);\n      node.trueType = this.tsInAllowConditionalTypesContext(() =>\n        this.tsParseType(),\n      );\n\n      this.expect(tt.colon);\n      node.falseType = this.tsInAllowConditionalTypesContext(() =>\n        this.tsParseType(),\n      );\n\n      return this.finishNode(node, \"TSConditionalType\");\n    }\n\n    isAbstractConstructorSignature(): boolean {\n      return (\n        this.isContextual(tt._abstract) && this.isLookaheadContextual(\"new\")\n      );\n    }\n\n    tsParseNonConditionalType(): N.TsType {\n      if (this.tsIsStartOfFunctionType()) {\n        return this.tsParseFunctionOrConstructorType(\"TSFunctionType\");\n      }\n      if (this.match(tt._new)) {\n        // As in `new () => Date`\n        return this.tsParseFunctionOrConstructorType(\"TSConstructorType\");\n      } else if (this.isAbstractConstructorSignature()) {\n        // As in `abstract new () => Date`\n        return this.tsParseFunctionOrConstructorType(\n          \"TSConstructorType\",\n          /* abstract */ true,\n        );\n      }\n      return this.tsParseUnionTypeOrHigher();\n    }\n\n    tsParseTypeAssertion(): N.TsTypeAssertion {\n      if (this.getPluginOption(\"typescript\", \"disallowAmbiguousJSXLike\")) {\n        this.raise(TSErrors.ReservedTypeAssertion, this.state.startLoc);\n      }\n\n      const node = this.startNode<N.TsTypeAssertion>();\n      node.typeAnnotation = this.tsInType(() => {\n        this.next(); // \"<\"\n        return this.match(tt._const)\n          ? this.tsParseTypeReference()\n          : this.tsParseType();\n      });\n      this.expect(tt.gt);\n      node.expression = this.parseMaybeUnary();\n      return this.finishNode(node, \"TSTypeAssertion\");\n    }\n\n    tsParseHeritageClause(token: \"extends\"): Array<N.TSInterfaceHeritage>;\n    tsParseHeritageClause(token: \"implements\"): Array<N.TSClassImplements>;\n    tsParseHeritageClause(\n      token: \"extends\" | \"implements\",\n    ): Array<N.TSClassImplements> | Array<N.TSInterfaceHeritage> {\n      const originalStartLoc = this.state.startLoc;\n\n      const delimitedList = this.tsParseDelimitedList(\n        \"HeritageClauseElement\",\n        () => {\n          if (process.env.BABEL_8_BREAKING) {\n            const expression = super.parseExprSubscripts();\n            if (!tsIsEntityName(expression)) {\n              this.raise(\n                TSErrors.InvalidHeritageClauseType,\n                expression.loc.start,\n                { token },\n              );\n            }\n            const nodeType =\n              token === \"extends\" ? \"TSInterfaceHeritage\" : \"TSClassImplements\";\n            if (expression.type === \"TSInstantiationExpression\") {\n              // @ts-expect-error cast TSInstantiationExpression to TSInterfaceHeritage/TSClassImplements\n              expression.type = nodeType;\n              return expression;\n            }\n            const node = this.startNodeAtNode<\n              N.TSInterfaceHeritage | N.TSClassImplements\n            >(expression);\n            node.expression = expression;\n            // The last element can not form a TSInstantiationExpression because of the bail condition in\n            // `parseSubscript`, in this case we have to parse type arguments again\n            if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n              node.typeArguments = this.tsParseTypeArgumentsInExpression();\n            }\n            return this.finishNode(node, nodeType);\n          } else {\n            const node = this.startNode<\n              N.TSInterfaceHeritage | N.TSClassImplements\n            >();\n            // @ts-expect-error Babel 7 vs Babel 8\n            node.expression = this.tsParseEntityName(\n              tsParseEntityNameFlags.ALLOW_RESERVED_WORDS |\n                tsParseEntityNameFlags.LEADING_THIS_AS_IDENTIFIER,\n            );\n            if (this.match(tt.lt)) {\n              // @ts-expect-error Babel 7 vs Babel 8\n              node.typeParameters = this.tsParseTypeArguments();\n            }\n\n            return this.finishNode(\n              node,\n              // @ts-expect-error Babel 7 vs Babel 8\n              \"TSExpressionWithTypeArguments\",\n            );\n          }\n        },\n      );\n\n      if (!delimitedList.length) {\n        this.raise(TSErrors.EmptyHeritageClauseType, originalStartLoc, {\n          token,\n        });\n      }\n\n      return delimitedList as\n        | Array<N.TSClassImplements>\n        | Array<N.TSInterfaceHeritage>;\n    }\n\n    tsParseInterfaceDeclaration(\n      node: Undone<N.TsInterfaceDeclaration>,\n      properties: {\n        declare?: true;\n      } = {},\n    ): N.TsInterfaceDeclaration | null {\n      if (this.hasFollowingLineBreak()) return null;\n      this.expectContextual(tt._interface);\n      if (properties.declare) node.declare = true;\n      if (tokenIsIdentifier(this.state.type)) {\n        node.id = this.parseIdentifier();\n        this.checkIdentifier(node.id, BindingFlag.TYPE_TS_INTERFACE);\n      } else {\n        node.id = null;\n        this.raise(TSErrors.MissingInterfaceName, this.state.startLoc);\n      }\n\n      node.typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseInOutConstModifiers,\n      );\n      if (this.eat(tt._extends)) {\n        node.extends = this.tsParseHeritageClause(\"extends\");\n      }\n      const body = this.startNode<N.TSInterfaceBody>();\n      body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this));\n      node.body = this.finishNode(body, \"TSInterfaceBody\");\n      return this.finishNode(node, \"TSInterfaceDeclaration\");\n    }\n\n    tsParseTypeAliasDeclaration(\n      node: N.TsTypeAliasDeclaration,\n    ): N.TsTypeAliasDeclaration {\n      node.id = this.parseIdentifier();\n      this.checkIdentifier(node.id, BindingFlag.TYPE_TS_TYPE);\n\n      node.typeAnnotation = this.tsInType(() => {\n        node.typeParameters = this.tsTryParseTypeParameters(\n          this.tsParseInOutModifiers,\n        );\n\n        this.expect(tt.eq);\n\n        if (\n          this.isContextual(tt._intrinsic) &&\n          this.lookaheadCharCode() !== charCodes.dot\n        ) {\n          const node = this.startNode<N.TsKeywordType>();\n          this.next();\n          return this.finishNode(node, \"TSIntrinsicKeyword\");\n        }\n\n        return this.tsParseType();\n      });\n\n      this.semicolon();\n      return this.finishNode(node, \"TSTypeAliasDeclaration\");\n    }\n\n    // Parse in top level normal context if we are in a JSX context\n    tsInTopLevelContext<T>(cb: () => T): T {\n      if (this.curContext() !== tc.brace) {\n        const oldContext = this.state.context;\n        this.state.context = [oldContext[0]];\n        try {\n          return cb();\n        } finally {\n          this.state.context = oldContext;\n        }\n      } else {\n        return cb();\n      }\n    }\n\n    /**\n     * Runs `cb` in a type context.\n     * This should be called one token *before* the first type token,\n     * so that the call to `next()` is run in type context.\n     */\n    tsInType<T>(cb: () => T): T {\n      const oldInType = this.state.inType;\n      this.state.inType = true;\n      try {\n        return cb();\n      } finally {\n        this.state.inType = oldInType;\n      }\n    }\n\n    tsInDisallowConditionalTypesContext<T>(cb: () => T): T {\n      const oldInDisallowConditionalTypesContext =\n        this.state.inDisallowConditionalTypesContext;\n      this.state.inDisallowConditionalTypesContext = true;\n      try {\n        return cb();\n      } finally {\n        this.state.inDisallowConditionalTypesContext =\n          oldInDisallowConditionalTypesContext;\n      }\n    }\n\n    tsInAllowConditionalTypesContext<T>(cb: () => T): T {\n      const oldInDisallowConditionalTypesContext =\n        this.state.inDisallowConditionalTypesContext;\n      this.state.inDisallowConditionalTypesContext = false;\n      try {\n        return cb();\n      } finally {\n        this.state.inDisallowConditionalTypesContext =\n          oldInDisallowConditionalTypesContext;\n      }\n    }\n\n    tsEatThenParseType(token: TokenType): N.TsType | undefined {\n      if (this.match(token)) {\n        return this.tsNextThenParseType();\n      }\n    }\n\n    tsExpectThenParseType(token: TokenType): N.TsType {\n      return this.tsInType(() => {\n        this.expect(token);\n        return this.tsParseType();\n      });\n    }\n\n    tsNextThenParseType(): N.TsType {\n      return this.tsInType(() => {\n        this.next();\n        return this.tsParseType();\n      });\n    }\n\n    tsParseEnumMember(): N.TsEnumMember {\n      const node = this.startNode<N.TsEnumMember>();\n      // Computed property names are grammar errors in an enum, so accept just string literal or identifier.\n      node.id = this.match(tt.string)\n        ? super.parseStringLiteral(this.state.value)\n        : this.parseIdentifier(/* liberal */ true);\n      if (this.eat(tt.eq)) {\n        node.initializer = super.parseMaybeAssignAllowIn();\n      }\n      return this.finishNode(node, \"TSEnumMember\");\n    }\n\n    tsParseEnumDeclaration(\n      node: Undone<N.TsEnumDeclaration>,\n      properties: {\n        const?: true;\n        declare?: true;\n      } = {},\n    ): N.TsEnumDeclaration {\n      if (properties.const) node.const = true;\n      if (properties.declare) node.declare = true;\n      this.expectContextual(tt._enum);\n      node.id = this.parseIdentifier();\n      this.checkIdentifier(\n        node.id,\n        node.const ? BindingFlag.TYPE_TS_CONST_ENUM : BindingFlag.TYPE_TS_ENUM,\n      );\n\n      if (process.env.BABEL_8_BREAKING) {\n        node.body = this.tsParseEnumBody();\n      } else {\n        this.expect(tt.braceL);\n        node.members = this.tsParseDelimitedList(\n          \"EnumMembers\",\n          this.tsParseEnumMember.bind(this),\n        );\n        this.expect(tt.braceR);\n      }\n      return this.finishNode(node, \"TSEnumDeclaration\");\n    }\n\n    tsParseEnumBody(): N.TsEnumBody {\n      const node = this.startNode<N.TsEnumBody>();\n      this.expect(tt.braceL);\n      node.members = this.tsParseDelimitedList(\n        \"EnumMembers\",\n        this.tsParseEnumMember.bind(this),\n      );\n      this.expect(tt.braceR);\n      return this.finishNode(node, \"TSEnumBody\");\n    }\n\n    tsParseModuleBlock(): N.TsModuleBlock {\n      const node = this.startNode<N.TsModuleBlock>();\n      this.scope.enter(ScopeFlag.OTHER);\n\n      this.expect(tt.braceL);\n      // Inside of a module block is considered \"top-level\", meaning it can have imports and exports.\n      super.parseBlockOrModuleBlockBody(\n        (node.body = []),\n        /* directives */ undefined,\n        /* topLevel */ true,\n        /* end */ tt.braceR,\n      );\n      this.scope.exit();\n      return this.finishNode(node, \"TSModuleBlock\");\n    }\n\n    tsParseModuleOrNamespaceDeclaration(\n      node: Undone<N.TsModuleDeclaration>,\n      nested: boolean = false,\n    ): N.TsModuleDeclaration {\n      node.id = process.env.BABEL_8_BREAKING\n        ? this.tsParseEntityName(tsParseEntityNameFlags.ALLOW_RESERVED_WORDS)\n        : this.parseIdentifier();\n\n      if (\n        process.env.BABEL_8_BREAKING ? node.id.type === \"Identifier\" : !nested\n      ) {\n        // @ts-expect-error checked above\n        this.checkIdentifier(node.id, BindingFlag.TYPE_TS_NAMESPACE);\n      }\n\n      if (!process.env.BABEL_8_BREAKING && this.eat(tt.dot)) {\n        const inner = this.startNode<N.TsModuleDeclaration>();\n        this.tsParseModuleOrNamespaceDeclaration(inner, true);\n        // @ts-expect-error Fixme: refine typings\n        node.body = inner;\n      } else {\n        this.scope.enter(ScopeFlag.TS_MODULE);\n        this.prodParam.enter(ParamKind.PARAM);\n        node.body = this.tsParseModuleBlock();\n        this.prodParam.exit();\n        this.scope.exit();\n      }\n      return this.finishNode(node, \"TSModuleDeclaration\");\n    }\n\n    tsParseAmbientExternalModuleDeclaration(\n      node: N.TsModuleDeclaration,\n    ): N.TsModuleDeclaration {\n      if (this.isContextual(tt._global)) {\n        node.kind = \"global\";\n        if (!process.env.BABEL_8_BREAKING) {\n          node.global = true;\n        }\n        node.id = this.parseIdentifier();\n      } else if (this.match(tt.string)) {\n        node.kind = \"module\";\n        node.id = super.parseStringLiteral(this.state.value);\n      } else {\n        this.unexpected();\n      }\n      if (this.match(tt.braceL)) {\n        this.scope.enter(ScopeFlag.TS_MODULE);\n        this.prodParam.enter(ParamKind.PARAM);\n        node.body = this.tsParseModuleBlock();\n        this.prodParam.exit();\n        this.scope.exit();\n      } else {\n        this.semicolon();\n      }\n\n      return this.finishNode(node, \"TSModuleDeclaration\");\n    }\n\n    tsParseImportEqualsDeclaration(\n      node: Undone<N.TsImportEqualsDeclaration>,\n      maybeDefaultIdentifier?: N.Identifier | null,\n      isExport?: boolean,\n    ): N.TsImportEqualsDeclaration {\n      if (!process.env.BABEL_8_BREAKING) {\n        node.isExport = isExport || false;\n      }\n      node.id = maybeDefaultIdentifier || this.parseIdentifier();\n      this.checkIdentifier(node.id, BindingFlag.TYPE_TS_VALUE_IMPORT);\n      this.expect(tt.eq);\n      const moduleReference = this.tsParseModuleReference();\n      if (\n        node.importKind === \"type\" &&\n        moduleReference.type !== \"TSExternalModuleReference\"\n      ) {\n        this.raise(TSErrors.ImportAliasHasImportType, moduleReference);\n      }\n      node.moduleReference = moduleReference;\n      this.semicolon();\n      return this.finishNode(node, \"TSImportEqualsDeclaration\");\n    }\n\n    tsIsExternalModuleReference(): boolean {\n      return (\n        this.isContextual(tt._require) &&\n        this.lookaheadCharCode() === charCodes.leftParenthesis\n      );\n    }\n\n    tsParseModuleReference(): N.TsModuleReference {\n      return this.tsIsExternalModuleReference()\n        ? this.tsParseExternalModuleReference()\n        : this.tsParseEntityName(tsParseEntityNameFlags.NONE);\n    }\n\n    tsParseExternalModuleReference(): N.TsExternalModuleReference {\n      const node = this.startNode<N.TsExternalModuleReference>();\n      this.expectContextual(tt._require);\n      this.expect(tt.parenL);\n      if (!this.match(tt.string)) {\n        this.unexpected();\n      }\n      // For compatibility to estree we cannot call parseLiteral directly here\n      node.expression = super.parseExprAtom() as N.StringLiteral;\n      this.expect(tt.parenR);\n      this.sawUnambiguousESM = true;\n      return this.finishNode(node, \"TSExternalModuleReference\");\n    }\n\n    // Utilities\n\n    tsLookAhead<T>(f: () => T): T {\n      const state = this.state.clone();\n      const res = f();\n      this.state = state;\n      return res;\n    }\n\n    tsTryParseAndCatch<T extends N.NodeBase | undefined | null>(\n      f: () => T,\n    ): T | undefined | null {\n      const result = this.tryParse(\n        abort =>\n          // @ts-expect-error todo(flow->ts)\n          f() || abort(),\n      );\n\n      if (result.aborted || !result.node) return;\n      if (result.error) this.state = result.failState;\n      // @ts-expect-error refine typings\n      return result.node;\n    }\n\n    tsTryParse<T>(f: () => T | undefined | false): T | undefined {\n      const state = this.state.clone();\n      const result = f();\n      if (result !== undefined && result !== false) {\n        return result;\n      }\n      this.state = state;\n    }\n\n    tsTryParseDeclare(node: any) {\n      if (this.isLineTerminator()) {\n        return;\n      }\n      const startType = this.state.type;\n      return this.tsInAmbientContext(() => {\n        switch (startType) {\n          case tt._function:\n            node.declare = true;\n            return super.parseFunctionStatement(\n              node,\n              /* async */ false,\n              /* isHangingDeclaration */ false,\n            );\n          case tt._class:\n            // While this is also set by tsParseExpressionStatement, we need to set it\n            // before parsing the class declaration to know how to register it in the scope.\n            node.declare = true;\n            return this.parseClass(\n              node as Undone<N.ClassDeclaration>,\n              /* isStatement */ true,\n              /* optionalId */ false,\n            );\n          case tt._enum:\n            return this.tsParseEnumDeclaration(node, { declare: true });\n          case tt._global:\n            return this.tsParseAmbientExternalModuleDeclaration(node);\n          case tt._let:\n            if (this.state.containsEsc) {\n              return;\n            }\n          // fallthrough\n          case tt._const:\n          case tt._var:\n            if (!this.match(tt._const) || !this.isLookaheadContextual(\"enum\")) {\n              node.declare = true;\n              return this.parseVarStatement(node, this.state.value, true);\n            }\n\n            // `const enum = 0;` not allowed because \"enum\" is a strict mode reserved word.\n            this.expect(tt._const);\n            return this.tsParseEnumDeclaration(node, {\n              const: true,\n              declare: true,\n            });\n          case tt._using:\n            if (this.isUsing()) {\n              this.raise(\n                TSErrors.InvalidModifierOnUsingDeclaration,\n                this.state.startLoc,\n                \"declare\",\n              );\n              node.declare = true;\n              return this.parseVarStatement(node, \"using\", true);\n            }\n            break;\n          case tt._await:\n            if (this.isAwaitUsing()) {\n              this.raise(\n                TSErrors.InvalidModifierOnAwaitUsingDeclaration,\n                this.state.startLoc,\n                \"declare\",\n              );\n              node.declare = true;\n              this.next(); // eat 'await'\n              return this.parseVarStatement(node, \"await using\", true);\n            }\n            break;\n          case tt._interface: {\n            const result = this.tsParseInterfaceDeclaration(node, {\n              declare: true,\n            });\n            if (result) return result;\n          }\n          // fallthrough\n          default:\n            if (tokenIsIdentifier(startType)) {\n              return this.tsParseDeclaration(\n                node,\n                this.state.value,\n                /* next */ true,\n                /* decorators */ null,\n              );\n            }\n        }\n      });\n    }\n\n    // Note: this won't be called unless the keyword is allowed in `shouldParseExportDeclaration`.\n    tsTryParseExportDeclaration(): N.Declaration | undefined {\n      return this.tsParseDeclaration(\n        this.startNode(),\n        this.state.value,\n        /* next */ true,\n        /* decorators */ null,\n      );\n    }\n\n    tsParseExpressionStatement(\n      node: Undone<N.TsModuleDeclaration>,\n      expr: N.Identifier,\n      decorators: N.Decorator[] | null,\n    ): N.Declaration | undefined {\n      switch (expr.name) {\n        case \"declare\": {\n          const declaration = this.tsTryParseDeclare(node);\n          if (declaration) {\n            declaration.declare = true;\n          }\n          return declaration;\n        }\n        case \"global\":\n          // `global { }` (with no `declare`) may appear inside an ambient module declaration.\n          // Would like to use tsParseAmbientExternalModuleDeclaration here, but already ran past \"global\".\n          if (this.match(tt.braceL)) {\n            this.scope.enter(ScopeFlag.TS_MODULE);\n            this.prodParam.enter(ParamKind.PARAM);\n            const mod = node;\n            mod.kind = \"global\";\n            if (!process.env.BABEL_8_BREAKING) {\n              node.global = true;\n            }\n            mod.id = expr;\n            mod.body = this.tsParseModuleBlock();\n            this.scope.exit();\n            this.prodParam.exit();\n            return this.finishNode(mod, \"TSModuleDeclaration\");\n          }\n          break;\n\n        default:\n          return this.tsParseDeclaration(\n            node,\n            expr.name,\n            /* next */ false,\n            decorators,\n          );\n      }\n    }\n\n    // Common to tsTryParseDeclare, tsTryParseExportDeclaration, and tsParseExpressionStatement.\n    tsParseDeclaration(\n      node: any,\n      value: string,\n      next: boolean,\n      decorators: N.Decorator[] | null,\n    ) {\n      // no declaration apart from enum can be followed by a line break.\n      switch (value) {\n        case \"abstract\":\n          if (\n            this.tsCheckLineTerminator(next) &&\n            (this.match(tt._class) || tokenIsIdentifier(this.state.type))\n          ) {\n            return this.tsParseAbstractDeclaration(node, decorators);\n          }\n          break;\n\n        case \"module\":\n          if (this.tsCheckLineTerminator(next)) {\n            if (this.match(tt.string)) {\n              return this.tsParseAmbientExternalModuleDeclaration(node);\n            } else if (tokenIsIdentifier(this.state.type)) {\n              node.kind = \"module\";\n              return this.tsParseModuleOrNamespaceDeclaration(node);\n            }\n          }\n          break;\n\n        case \"namespace\":\n          if (\n            this.tsCheckLineTerminator(next) &&\n            tokenIsIdentifier(this.state.type)\n          ) {\n            node.kind = \"namespace\";\n            return this.tsParseModuleOrNamespaceDeclaration(node);\n          }\n          break;\n\n        case \"type\":\n          if (\n            this.tsCheckLineTerminator(next) &&\n            tokenIsIdentifier(this.state.type)\n          ) {\n            return this.tsParseTypeAliasDeclaration(node);\n          }\n          break;\n      }\n    }\n\n    tsCheckLineTerminator(next: boolean) {\n      if (next) {\n        if (this.hasFollowingLineBreak()) return false;\n        this.next();\n        return true;\n      }\n      return !this.isLineTerminator();\n    }\n\n    tsTryParseGenericAsyncArrowFunction(\n      startLoc: Position,\n    ): N.ArrowFunctionExpression | undefined {\n      if (!this.match(tt.lt)) return;\n\n      const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n      this.state.maybeInArrowParameters = true;\n\n      const res: Undone<N.ArrowFunctionExpression> | undefined =\n        this.tsTryParseAndCatch(() => {\n          const node = this.startNodeAt<N.ArrowFunctionExpression>(startLoc);\n          node.typeParameters = this.tsParseTypeParameters(\n            this.tsParseConstModifier,\n          );\n          // Don't use overloaded parseFunctionParams which would look for \"<\" again.\n          super.parseFunctionParams(node);\n          node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation();\n          this.expect(tt.arrow);\n          return node;\n        });\n\n      this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n\n      if (!res) return;\n\n      return super.parseArrowExpression(\n        res,\n        /* params are already set */ null,\n        /* async */ true,\n      );\n    }\n\n    // Used when parsing type arguments from ES or JSX productions, where the first token\n    // has been created without state.inType. Thus we need to re-scan the lt token.\n    tsParseTypeArgumentsInExpression():\n      | N.TsTypeParameterInstantiation\n      | undefined {\n      if (this.reScan_lt() !== tt.lt) return;\n      return this.tsParseTypeArguments();\n    }\n\n    tsParseTypeArguments(): N.TsTypeParameterInstantiation {\n      const node = this.startNode<N.TsTypeParameterInstantiation>();\n      node.params = this.tsInType(() =>\n        this.tsInTopLevelContext(() => {\n          this.expect(tt.lt);\n          return this.tsParseDelimitedList(\n            \"TypeParametersOrArguments\",\n            this.tsParseType.bind(this),\n          );\n        }),\n      );\n      if (node.params.length === 0) {\n        this.raise(TSErrors.EmptyTypeArguments, node);\n      } else if (!this.state.inType && this.curContext() === tc.brace) {\n        // rescan `>` when we are no longer in type context and JSX parsing context\n        // since it was tokenized when `inType` is `true`.\n        this.reScan_lt_gt();\n      }\n      this.expect(tt.gt);\n      return this.finishNode(node, \"TSTypeParameterInstantiation\");\n    }\n\n    tsIsDeclarationStart(): boolean {\n      return tokenIsTSDeclarationStart(this.state.type);\n    }\n\n    // ======================================================\n    // OVERRIDES\n    // ======================================================\n\n    isExportDefaultSpecifier(): boolean {\n      if (this.tsIsDeclarationStart()) return false;\n      return super.isExportDefaultSpecifier();\n    }\n\n    parseBindingElement(\n      flags: ParseBindingListFlags,\n      decorators: N.Decorator[],\n    ): N.Pattern | N.TSParameterProperty {\n      // Store original location to include decorators/modifiers in range\n      const startLoc = decorators.length\n        ? decorators[0].loc.start\n        : this.state.startLoc;\n\n      const modified: ModifierBase = {};\n      this.tsParseModifiers(\n        {\n          allowedModifiers: [\n            \"public\",\n            \"private\",\n            \"protected\",\n            \"override\",\n            \"readonly\",\n          ],\n        },\n        modified,\n      );\n      const accessibility = modified.accessibility;\n      const override = modified.override;\n      const readonly = modified.readonly;\n      if (\n        !(flags & ParseBindingListFlags.IS_CONSTRUCTOR_PARAMS) &&\n        (accessibility || readonly || override)\n      ) {\n        this.raise(TSErrors.UnexpectedParameterModifier, startLoc);\n      }\n\n      const left = this.parseMaybeDefault();\n      if (flags & ParseBindingListFlags.IS_FUNCTION_PARAMS) {\n        this.parseFunctionParamType(left);\n      }\n      const elt = this.parseMaybeDefault(left.loc.start, left);\n      if (accessibility || readonly || override) {\n        const pp = this.startNodeAt<N.TSParameterProperty>(startLoc);\n        if (decorators.length) {\n          pp.decorators = decorators;\n        }\n        if (accessibility) pp.accessibility = accessibility;\n        if (readonly) pp.readonly = readonly;\n        if (override) pp.override = override;\n        if (elt.type !== \"Identifier\" && elt.type !== \"AssignmentPattern\") {\n          this.raise(TSErrors.UnsupportedParameterPropertyKind, pp);\n        }\n        pp.parameter = elt as any as N.Identifier | N.AssignmentPattern;\n        return this.finishNode(pp, \"TSParameterProperty\");\n      }\n\n      if (decorators.length) {\n        left.decorators = decorators;\n      }\n\n      return elt;\n    }\n\n    isSimpleParameter(node: N.Pattern | N.TSParameterProperty): boolean {\n      return (\n        (node.type === \"TSParameterProperty\" &&\n          super.isSimpleParameter(node.parameter)) ||\n        super.isSimpleParameter(node)\n      );\n    }\n\n    tsDisallowOptionalPattern(node: Undone<N.Function>) {\n      for (const param of node.params) {\n        if (\n          param.type !== \"Identifier\" &&\n          (param as any).optional &&\n          !this.state.isAmbientContext\n        ) {\n          this.raise(TSErrors.PatternIsOptional, param);\n        }\n      }\n    }\n\n    setArrowFunctionParameters(\n      node: Undone<N.ArrowFunctionExpression>,\n      params: N.Expression[],\n      trailingCommaLoc?: Position | null,\n    ): void {\n      super.setArrowFunctionParameters(node, params, trailingCommaLoc);\n      this.tsDisallowOptionalPattern(node);\n    }\n\n    parseFunctionBodyAndFinish<\n      T extends\n        | N.Function\n        | N.TSDeclareMethod\n        | N.TSDeclareFunction\n        | N.ClassPrivateMethod,\n    >(node: Undone<T>, type: T[\"type\"], isMethod: boolean = false): T {\n      if (this.match(tt.colon)) {\n        node.returnType = this.tsParseTypeOrTypePredicateAnnotation(tt.colon);\n      }\n\n      const bodilessType =\n        type === \"FunctionDeclaration\"\n          ? \"TSDeclareFunction\"\n          : type === \"ClassMethod\" || type === \"ClassPrivateMethod\"\n            ? \"TSDeclareMethod\"\n            : undefined;\n      if (bodilessType && !this.match(tt.braceL) && this.isLineTerminator()) {\n        return this.finishNode(node, bodilessType);\n      }\n      if (bodilessType === \"TSDeclareFunction\" && this.state.isAmbientContext) {\n        this.raise(TSErrors.DeclareFunctionHasImplementation, node);\n        if ((node as Undone<N.FunctionDeclaration>).declare) {\n          return super.parseFunctionBodyAndFinish(node, bodilessType, isMethod);\n        }\n      }\n      this.tsDisallowOptionalPattern(node);\n\n      return super.parseFunctionBodyAndFinish(node, type, isMethod);\n    }\n\n    registerFunctionStatementId(node: N.Function): void {\n      if (!node.body && node.id) {\n        // Function ids are validated after parsing their body.\n        // For bodiless function, we need to do it here.\n        this.checkIdentifier(node.id, BindingFlag.TYPE_TS_AMBIENT);\n      } else {\n        super.registerFunctionStatementId(node);\n      }\n    }\n\n    tsCheckForInvalidTypeCasts(items: Array<N.Expression | N.SpreadElement>) {\n      items.forEach(node => {\n        if (node?.type === \"TSTypeCastExpression\") {\n          this.raise(TSErrors.UnexpectedTypeAnnotation, node.typeAnnotation);\n        }\n      });\n    }\n\n    toReferencedList(\n      exprList: Array<N.Expression | undefined | null>,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      isInParens?: boolean,\n    ): Array<N.Expression | undefined | null> {\n      // Handles invalid scenarios like: `f(a:b)`, `(a:b);`, and `(a:b,c:d)`.\n      //\n      // Note that `f<T>(a:b)` goes through a different path and is handled\n      // in `parseSubscript` directly.\n      this.tsCheckForInvalidTypeCasts(exprList);\n      return exprList;\n    }\n\n    parseArrayLike(\n      close: TokenType,\n      canBePattern: boolean,\n      isTuple: boolean,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): N.ArrayExpression | N.TupleExpression {\n      const node = super.parseArrayLike(\n        close,\n        canBePattern,\n        isTuple,\n        refExpressionErrors,\n      );\n\n      if (node.type === \"ArrayExpression\") {\n        this.tsCheckForInvalidTypeCasts(node.elements);\n      }\n\n      return node;\n    }\n\n    parseSubscript(\n      base: N.Expression,\n\n      startLoc: Position,\n      noCalls: boolean | undefined | null,\n      state: N.ParseSubscriptState,\n    ): N.Expression {\n      if (!this.hasPrecedingLineBreak() && this.match(tt.bang)) {\n        // When ! is consumed as a postfix operator (non-null assertion),\n        // disallow JSX tag forming after. e.g. When parsing `p! < n.p!`\n        // `<n.p` can not be a start of JSX tag\n        this.state.canStartJSXElement = false;\n        this.next();\n\n        const nonNullExpression =\n          this.startNodeAt<N.TsNonNullExpression>(startLoc);\n        nonNullExpression.expression = base;\n        return this.finishNode(nonNullExpression, \"TSNonNullExpression\");\n      }\n\n      let isOptionalCall = false;\n      if (\n        this.match(tt.questionDot) &&\n        this.lookaheadCharCode() === charCodes.lessThan\n      ) {\n        if (noCalls) {\n          state.stop = true;\n          return base;\n        }\n        state.optionalChainMember = isOptionalCall = true;\n        this.next();\n      }\n\n      // handles 'f<<T>'\n      if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n        let missingParenErrorLoc;\n        // tsTryParseAndCatch is expensive, so avoid if not necessary.\n        // There are number of things we are going to \"maybe\" parse, like type arguments on\n        // tagged template expressions. If any of them fail, walk it back and continue.\n        const result = this.tsTryParseAndCatch(() => {\n          if (!noCalls && this.atPossibleAsyncArrow(base)) {\n            // Almost certainly this is a generic async function `async <T>() => ...\n            // But it might be a call with a type argument `async<T>();`\n            const asyncArrowFn =\n              this.tsTryParseGenericAsyncArrowFunction(startLoc);\n            if (asyncArrowFn) {\n              state.stop = true;\n              return asyncArrowFn;\n            }\n          }\n\n          const typeArguments = this.tsParseTypeArgumentsInExpression();\n          if (!typeArguments) return;\n\n          if (isOptionalCall && !this.match(tt.parenL)) {\n            missingParenErrorLoc = this.state.curPosition();\n            return;\n          }\n\n          if (tokenIsTemplate(this.state.type)) {\n            const result = super.parseTaggedTemplateExpression(\n              base,\n              startLoc,\n              state,\n            );\n            if (process.env.BABEL_8_BREAKING) {\n              result.typeArguments = typeArguments;\n            } else {\n              result.typeParameters = typeArguments;\n            }\n            return result;\n          }\n\n          if (!noCalls && this.eat(tt.parenL)) {\n            const node = this.startNodeAt<\n              N.CallExpression | N.OptionalCallExpression\n            >(startLoc);\n            node.callee = base;\n            // @ts-expect-error (won't be any undefined arguments)\n            node.arguments = this.parseCallExpressionArguments();\n\n            // Handles invalid case: `f<T>(a:b)`\n            this.tsCheckForInvalidTypeCasts(node.arguments);\n\n            if (process.env.BABEL_8_BREAKING) {\n              node.typeArguments = typeArguments;\n            } else {\n              node.typeParameters = typeArguments;\n            }\n\n            if (state.optionalChainMember) {\n              (node as Undone<N.OptionalCallExpression>).optional =\n                isOptionalCall;\n            }\n\n            return this.finishCallExpression(node, state.optionalChainMember);\n          }\n\n          const tokenType = this.state.type;\n          if (\n            // a<b>>c is not (a<b>)>c, but a<(b>>c)\n            tokenType === tt.gt ||\n            // a<b>>>c is not (a<b>)>>c, but a<(b>>>c)\n            tokenType === tt.bitShiftR ||\n            // a<b>c is (a<b)>c\n            (tokenType !== tt.parenL &&\n              tokenCanStartExpression(tokenType) &&\n              !this.hasPrecedingLineBreak())\n          ) {\n            // Bail out.\n            return;\n          }\n\n          const node = this.startNodeAt<N.TsInstantiationExpression>(startLoc);\n          node.expression = base;\n          if (process.env.BABEL_8_BREAKING) {\n            node.typeArguments = typeArguments;\n          } else {\n            node.typeParameters = typeArguments;\n          }\n          return this.finishNode(node, \"TSInstantiationExpression\");\n        });\n\n        if (missingParenErrorLoc) {\n          this.unexpected(missingParenErrorLoc, tt.parenL);\n        }\n\n        if (result) {\n          if (result.type === \"TSInstantiationExpression\") {\n            if (\n              this.match(tt.dot) ||\n              (this.match(tt.questionDot) &&\n                this.lookaheadCharCode() !== charCodes.leftParenthesis)\n            ) {\n              this.raise(\n                TSErrors.InvalidPropertyAccessAfterInstantiationExpression,\n                this.state.startLoc,\n              );\n            }\n            if (!this.match(tt.dot) && !this.match(tt.questionDot)) {\n              // If TSInstantiationExpression is not followed by . / ?.,\n              // it must be the end of a subscript chain. Note that `(` already forms\n              // call expression arguments\n              result.expression = super.stopParseSubscript(base, state);\n            }\n          }\n          return result;\n        }\n      }\n\n      return super.parseSubscript(base, startLoc, noCalls, state);\n    }\n\n    parseNewCallee(node: N.NewExpression): void {\n      super.parseNewCallee(node);\n\n      const { callee } = node;\n      if (\n        callee.type === \"TSInstantiationExpression\" &&\n        !callee.extra?.parenthesized\n      ) {\n        if (process.env.BABEL_8_BREAKING) {\n          node.typeArguments = callee.typeArguments;\n        } else {\n          node.typeParameters = callee.typeParameters;\n        }\n        node.callee = callee.expression;\n      }\n    }\n\n    parseExprOp(\n      left: N.Expression,\n      leftStartLoc: Position,\n      minPrec: number,\n    ): N.Expression {\n      let isSatisfies: boolean;\n      if (\n        tokenOperatorPrecedence(tt._in) > minPrec &&\n        !this.hasPrecedingLineBreak() &&\n        (this.isContextual(tt._as) ||\n          (isSatisfies = this.isContextual(tt._satisfies)))\n      ) {\n        const node = this.startNodeAt<\n          N.TsAsExpression | N.TsSatisfiesExpression\n        >(leftStartLoc);\n        node.expression = left;\n        node.typeAnnotation = this.tsInType(() => {\n          this.next(); // \"as\" or \"satisfies\"\n          if (this.match(tt._const)) {\n            if (isSatisfies) {\n              this.raise(Errors.UnexpectedKeyword, this.state.startLoc, {\n                keyword: \"const\",\n              });\n            }\n            return this.tsParseTypeReference();\n          }\n\n          return this.tsParseType();\n        });\n        this.finishNode(\n          node,\n          isSatisfies ? \"TSSatisfiesExpression\" : \"TSAsExpression\",\n        );\n        // rescan `<`, `>` because they were scanned when this.state.inType was true\n        this.reScan_lt_gt();\n        return this.parseExprOp(\n          // @ts-expect-error todo(flow->ts)\n          node,\n          leftStartLoc,\n          minPrec,\n        );\n      }\n\n      return super.parseExprOp(left, leftStartLoc, minPrec);\n    }\n\n    checkReservedWord(\n      word: string,\n      startLoc: Position,\n      checkKeywords: boolean,\n      isBinding: boolean,\n    ): void {\n      // Strict mode words may be allowed as in `declare namespace N { const static: number; }`.\n      // And we have a type checker anyway, so don't bother having the parser do it.\n      if (!this.state.isAmbientContext) {\n        super.checkReservedWord(word, startLoc, checkKeywords, isBinding);\n      }\n    }\n\n    checkImportReflection(node: Undone<N.ImportDeclaration>) {\n      super.checkImportReflection(node);\n      if (node.module && node.importKind !== \"value\") {\n        this.raise(\n          TSErrors.ImportReflectionHasImportType,\n          node.specifiers[0].loc.start,\n        );\n      }\n    }\n\n    /*\n    Don't bother doing this check in TypeScript code because:\n    1. We may have a nested export statement with the same name:\n      export const x = 0;\n      export namespace N {\n        export const x = 1;\n      }\n    2. We have a type checker to warn us about this sort of thing.\n    */\n    checkDuplicateExports() {}\n\n    isPotentialImportPhase(isExport: boolean): boolean {\n      if (super.isPotentialImportPhase(isExport)) return true;\n      if (this.isContextual(tt._type)) {\n        const ch = this.lookaheadCharCode();\n        return isExport\n          ? ch === charCodes.leftCurlyBrace || ch === charCodes.asterisk\n          : ch !== charCodes.equalsTo;\n      }\n      return !isExport && this.isContextual(tt._typeof);\n    }\n\n    applyImportPhase(\n      node: Undone<N.ImportDeclaration | N.ExportNamedDeclaration>,\n      isExport: boolean,\n      phase: string | null,\n      loc?: Position,\n    ): void {\n      super.applyImportPhase(node, isExport, phase, loc);\n      if (isExport) {\n        (node as N.ExportNamedDeclaration).exportKind =\n          phase === \"type\" ? \"type\" : \"value\";\n      } else {\n        (node as N.ImportDeclaration).importKind =\n          phase === \"type\" || phase === \"typeof\" ? phase : \"value\";\n      }\n    }\n\n    parseImport(\n      node: Undone<N.ImportDeclaration | N.TsImportEqualsDeclaration>,\n    ): N.AnyImport {\n      if (this.match(tt.string)) {\n        node.importKind = \"value\";\n        return super.parseImport(node as Undone<N.ImportDeclaration>);\n      }\n\n      let importNode;\n      if (\n        tokenIsIdentifier(this.state.type) &&\n        this.lookaheadCharCode() === charCodes.equalsTo\n      ) {\n        node.importKind = \"value\";\n        return this.tsParseImportEqualsDeclaration(\n          node as Undone<N.TsImportEqualsDeclaration>,\n        );\n      } else if (this.isContextual(tt._type)) {\n        const maybeDefaultIdentifier = this.parseMaybeImportPhase(\n          node as Undone<N.ImportDeclaration>,\n          /* isExport */ false,\n        );\n        if (this.lookaheadCharCode() === charCodes.equalsTo) {\n          return this.tsParseImportEqualsDeclaration(\n            node as Undone<N.TsImportEqualsDeclaration>,\n            maybeDefaultIdentifier,\n          );\n        } else {\n          importNode = super.parseImportSpecifiersAndAfter(\n            node as Undone<N.ImportDeclaration>,\n            maybeDefaultIdentifier,\n          );\n        }\n      } else {\n        importNode = super.parseImport(node as Undone<N.ImportDeclaration>);\n      }\n\n      // `import type` can only be used on imports with named imports or with a\n      // default import - but not both\n      if (\n        importNode.importKind === \"type\" &&\n        // @ts-expect-error refine typings\n        importNode.specifiers.length > 1 &&\n        // @ts-expect-error refine typings\n        importNode.specifiers[0].type === \"ImportDefaultSpecifier\"\n      ) {\n        this.raise(TSErrors.TypeImportCannotSpecifyDefaultAndNamed, importNode);\n      }\n\n      return importNode;\n    }\n\n    parseExport(\n      node: Undone<\n        | N.ExportDefaultDeclaration\n        | N.ExportAllDeclaration\n        | N.ExportNamedDeclaration\n      >,\n      decorators: N.Decorator[] | null,\n    ): N.AnyExport {\n      if (this.match(tt._import)) {\n        // `export import A = B;`\n        const nodeImportEquals = process.env.BABEL_8_BREAKING\n          ? this.startNode<N.TsImportEqualsDeclaration>()\n          : (node as Undone<N.TsImportEqualsDeclaration>);\n        this.next(); // eat `tt._import`\n        let maybeDefaultIdentifier: N.Identifier | null = null;\n        if (\n          this.isContextual(tt._type) &&\n          // We pass false here, because we are parsing an `import ... =`\n          this.isPotentialImportPhase(/* isExport */ false)\n        ) {\n          maybeDefaultIdentifier = this.parseMaybeImportPhase(\n            nodeImportEquals,\n            /* isExport */ false,\n          );\n        } else {\n          nodeImportEquals.importKind = \"value\";\n        }\n        const declaration = this.tsParseImportEqualsDeclaration(\n          nodeImportEquals,\n          maybeDefaultIdentifier,\n          /* isExport */ true,\n        );\n        if (process.env.BABEL_8_BREAKING) {\n          (node as Undone<N.ExportNamedDeclaration>).attributes = [];\n          (node as Undone<N.ExportNamedDeclaration>).declaration = declaration;\n          (node as Undone<N.ExportNamedDeclaration>).exportKind = \"value\";\n          (node as Undone<N.ExportNamedDeclaration>).source = null;\n          (node as Undone<N.ExportNamedDeclaration>).specifiers = [];\n          return this.finishNode(node, \"ExportNamedDeclaration\");\n        } else {\n          return declaration;\n        }\n      } else if (this.eat(tt.eq)) {\n        // `export = x;`\n        const assign = node as Undone<N.TsExportAssignment>;\n        assign.expression = super.parseExpression();\n        this.semicolon();\n        this.sawUnambiguousESM = true;\n        return this.finishNode(assign, \"TSExportAssignment\");\n      } else if (this.eatContextual(tt._as)) {\n        // `export as namespace A;`\n        const decl = node as Undone<N.TsNamespaceExportDeclaration>;\n        // See `parseNamespaceExportDeclaration` in TypeScript's own parser\n        this.expectContextual(tt._namespace);\n        decl.id = this.parseIdentifier();\n        this.semicolon();\n        return this.finishNode(decl, \"TSNamespaceExportDeclaration\");\n      } else {\n        return super.parseExport(\n          node as Undone<N.ExportAllDeclaration | N.ExportDefaultDeclaration>,\n          decorators,\n        );\n      }\n    }\n\n    isAbstractClass(): boolean {\n      return (\n        this.isContextual(tt._abstract) && this.isLookaheadContextual(\"class\")\n      );\n    }\n\n    parseExportDefaultExpression(): N.ExportDefaultDeclaration[\"declaration\"] {\n      if (this.isAbstractClass()) {\n        const cls = this.startNode<N.Class>();\n        this.next(); // Skip \"abstract\"\n        cls.abstract = true;\n        return this.parseClass(cls, true, true);\n      }\n\n      // export default interface allowed in:\n      // https://github.com/Microsoft/TypeScript/pull/16040\n      if (this.match(tt._interface)) {\n        const result = this.tsParseInterfaceDeclaration(\n          this.startNode<N.TsInterfaceDeclaration>(),\n        );\n        if (result) return result;\n      }\n\n      return super.parseExportDefaultExpression();\n    }\n\n    parseVarStatement(\n      node: N.VariableDeclaration,\n      kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n      allowMissingInitializer: boolean = false,\n    ) {\n      const { isAmbientContext } = this.state;\n      const declaration = super.parseVarStatement(\n        node,\n        kind,\n        allowMissingInitializer || isAmbientContext,\n      );\n\n      if (!isAmbientContext) return declaration;\n\n      // If node.declare is true, the error has already been raised in tsTryParseDeclare.\n      if (!node.declare && (kind === \"using\" || kind === \"await using\")) {\n        this.raiseOverwrite(\n          TSErrors.UsingDeclarationInAmbientContext,\n          node,\n          kind,\n        );\n        return declaration;\n      }\n\n      for (const { id, init } of declaration.declarations) {\n        // Empty initializer is the easy case that we want.\n        if (!init) continue;\n\n        // var and let aren't ever allowed initializers.\n        if (kind === \"var\" || kind === \"let\" || !!id.typeAnnotation) {\n          this.raise(TSErrors.InitializerNotAllowedInAmbientContext, init);\n        } else if (\n          !isValidAmbientConstInitializer(init, this.hasPlugin(\"estree\"))\n        ) {\n          this.raise(\n            TSErrors.ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference,\n            init,\n          );\n        }\n      }\n\n      return declaration;\n    }\n\n    parseStatementContent(\n      flags: ParseStatementFlag,\n      decorators?: N.Decorator[] | null,\n    ): N.Statement {\n      if (this.match(tt._const) && this.isLookaheadContextual(\"enum\")) {\n        const node = this.startNode<N.TsEnumDeclaration>();\n        this.expect(tt._const); // eat 'const'\n        return this.tsParseEnumDeclaration(node, { const: true });\n      }\n\n      if (this.isContextual(tt._enum)) {\n        return this.tsParseEnumDeclaration(\n          this.startNode<N.TsEnumDeclaration>(),\n        );\n      }\n\n      if (this.isContextual(tt._interface)) {\n        const result = this.tsParseInterfaceDeclaration(this.startNode());\n        if (result) return result;\n      }\n\n      return super.parseStatementContent(flags, decorators);\n    }\n\n    parseAccessModifier(): N.Accessibility | undefined | null {\n      return this.tsParseModifier([\"public\", \"protected\", \"private\"]);\n    }\n\n    tsHasSomeModifiers(member: any, modifiers: readonly TsModifier[]): boolean {\n      return modifiers.some(modifier => {\n        if (tsIsAccessModifier(modifier)) {\n          return member.accessibility === modifier;\n        }\n        return !!member[modifier];\n      });\n    }\n\n    tsIsStartOfStaticBlocks() {\n      return (\n        this.isContextual(tt._static) &&\n        this.lookaheadCharCode() === charCodes.leftCurlyBrace\n      );\n    }\n\n    parseClassMember(\n      classBody: N.ClassBody,\n      member: any,\n      state: N.ParseClassMemberState,\n    ): void {\n      const modifiers = [\n        \"declare\",\n        \"private\",\n        \"public\",\n        \"protected\",\n        \"override\",\n        \"abstract\",\n        \"readonly\",\n        \"static\",\n      ] as const;\n      this.tsParseModifiers(\n        {\n          allowedModifiers: modifiers,\n          disallowedModifiers: [\"in\", \"out\"],\n          stopOnStartOfClassStaticBlock: true,\n          errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions,\n        },\n        member,\n      );\n\n      const callParseClassMemberWithIsStatic = () => {\n        if (this.tsIsStartOfStaticBlocks()) {\n          this.next(); // eat \"static\"\n          this.next(); // eat \"{\"\n          if (this.tsHasSomeModifiers(member, modifiers)) {\n            this.raise(\n              TSErrors.StaticBlockCannotHaveModifier,\n              this.state.curPosition(),\n            );\n          }\n          super.parseClassStaticBlock(classBody, member as N.StaticBlock);\n        } else {\n          this.parseClassMemberWithIsStatic(\n            classBody,\n            member,\n            state,\n            !!member.static,\n          );\n        }\n      };\n      if (member.declare) {\n        this.tsInAmbientContext(callParseClassMemberWithIsStatic);\n      } else {\n        callParseClassMemberWithIsStatic();\n      }\n    }\n\n    parseClassMemberWithIsStatic(\n      classBody: N.ClassBody,\n      member: Undone<N.ClassMember | N.TsIndexSignature>,\n      state: N.ParseClassMemberState,\n      isStatic: boolean,\n    ): void {\n      const idx = this.tsTryParseIndexSignature(\n        member as Undone<N.TsIndexSignature>,\n      );\n      if (idx) {\n        classBody.body.push(idx);\n\n        if ((member as any).abstract) {\n          this.raise(TSErrors.IndexSignatureHasAbstract, member);\n        }\n        if ((member as any).accessibility) {\n          this.raise(TSErrors.IndexSignatureHasAccessibility, member, {\n            modifier: (member as any).accessibility,\n          });\n        }\n        if ((member as any).declare) {\n          this.raise(TSErrors.IndexSignatureHasDeclare, member);\n        }\n        if ((member as any).override) {\n          this.raise(TSErrors.IndexSignatureHasOverride, member);\n        }\n\n        return;\n      }\n\n      if (!this.state.inAbstractClass && (member as any).abstract) {\n        this.raise(TSErrors.NonAbstractClassHasAbstractMethod, member);\n      }\n\n      if ((member as any).override) {\n        if (!state.hadSuperClass) {\n          this.raise(TSErrors.OverrideNotInSubClass, member);\n        }\n      }\n\n      /*:: invariant(member.type !== \"TSIndexSignature\") */\n\n      super.parseClassMemberWithIsStatic(\n        classBody,\n        member as Undone<N.ClassMember>,\n        state,\n        isStatic,\n      );\n    }\n\n    parsePostMemberNameModifiers(\n      methodOrProp: N.ClassMethod | N.ClassProperty | N.ClassPrivateProperty,\n    ): void {\n      const optional = this.eat(tt.question);\n      if (optional) methodOrProp.optional = true;\n\n      if ((methodOrProp as any).readonly && this.match(tt.parenL)) {\n        this.raise(TSErrors.ClassMethodHasReadonly, methodOrProp);\n      }\n\n      if ((methodOrProp as any).declare && this.match(tt.parenL)) {\n        this.raise(TSErrors.ClassMethodHasDeclare, methodOrProp);\n      }\n    }\n\n    // Note: The reason we do this in `parseExpressionStatement` and not `parseStatement`\n    // is that e.g. `type()` is valid JS, so we must try parsing that first.\n    // If it's really a type, we will parse `type` as the statement, and can correct it here\n    // by parsing the rest.\n    // @ts-expect-error plugin overrides interfaces\n    parseExpressionStatement(\n      node: Undone<N.ExpressionStatement>,\n      expr: N.Expression,\n      decorators: N.Decorator[] | null,\n    ): N.Statement {\n      const decl =\n        expr.type === \"Identifier\"\n          ? // @ts-expect-error refine typings\n            this.tsParseExpressionStatement(node, expr, decorators)\n          : undefined;\n      return decl || super.parseExpressionStatement(node, expr, decorators);\n    }\n\n    // export type\n    // Should be true for anything parsed by `tsTryParseExportDeclaration`.\n    shouldParseExportDeclaration(): boolean {\n      if (this.tsIsDeclarationStart()) return true;\n      return super.shouldParseExportDeclaration();\n    }\n\n    // An apparent conditional expression could actually be an optional parameter in an arrow function.\n    parseConditional(\n      expr: N.Expression,\n\n      startLoc: Position,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): N.Expression {\n      if (!this.match(tt.question)) return expr;\n\n      if (this.state.maybeInArrowParameters) {\n        const nextCh = this.lookaheadCharCode();\n        // These tokens cannot start an expression, so if one of them follows\n        // ? then we are probably in an arrow function parameters list and we\n        // don't parse the conditional expression.\n        if (\n          nextCh === charCodes.comma || // (a?, b) => c\n          nextCh === charCodes.equalsTo || // (a? = b) => c\n          nextCh === charCodes.colon || // (a?: b) => c\n          nextCh === charCodes.rightParenthesis // (a?) => c\n        ) {\n          /*:: invariant(refExpressionErrors != null) */\n          this.setOptionalParametersError(refExpressionErrors);\n          return expr;\n        }\n      }\n\n      return super.parseConditional(expr, startLoc, refExpressionErrors);\n    }\n\n    // Note: These \"type casts\" are *not* valid TS expressions.\n    // But we parse them here and change them when completing the arrow function.\n    parseParenItem<T extends N.Expression | N.RestElement | N.SpreadElement>(\n      node: T,\n      startLoc: Position,\n    ): T | N.TsTypeCastExpression {\n      const newNode = super.parseParenItem(node, startLoc);\n      if (this.eat(tt.question)) {\n        (newNode as N.Identifier).optional = true;\n        // Include questionmark in location of node\n        // Don't use this.finishNode() as otherwise we might process comments twice and\n        // include already consumed parens\n        this.resetEndLocation(node);\n      }\n\n      if (this.match(tt.colon)) {\n        const typeCastNode = this.startNodeAt<N.TsTypeCastExpression>(startLoc);\n        typeCastNode.expression = node as N.Expression;\n        typeCastNode.typeAnnotation = this.tsParseTypeAnnotation();\n\n        return this.finishNode(typeCastNode, \"TSTypeCastExpression\");\n      }\n\n      return node;\n    }\n\n    parseExportDeclaration(\n      node: N.ExportNamedDeclaration,\n    ): N.Declaration | undefined | null {\n      if (!this.state.isAmbientContext && this.isContextual(tt._declare)) {\n        return this.tsInAmbientContext(() => this.parseExportDeclaration(node));\n      }\n\n      // Store original location\n      const startLoc = this.state.startLoc;\n\n      const isDeclare = this.eatContextual(tt._declare);\n\n      if (\n        isDeclare &&\n        (this.isContextual(tt._declare) || !this.shouldParseExportDeclaration())\n      ) {\n        throw this.raise(\n          TSErrors.ExpectedAmbientAfterExportDeclare,\n          this.state.startLoc,\n        );\n      }\n\n      const isIdentifier = tokenIsIdentifier(this.state.type);\n      const declaration: N.Declaration | undefined | null =\n        (isIdentifier && this.tsTryParseExportDeclaration()) ||\n        super.parseExportDeclaration(node);\n\n      if (!declaration) return null;\n\n      if (\n        declaration.type === \"TSInterfaceDeclaration\" ||\n        declaration.type === \"TSTypeAliasDeclaration\" ||\n        isDeclare\n      ) {\n        node.exportKind = \"type\";\n      }\n\n      if (isDeclare && declaration.type !== \"TSImportEqualsDeclaration\") {\n        // Reset location to include `declare` in range\n        this.resetStartLocation(declaration, startLoc);\n\n        declaration.declare = true;\n      }\n\n      return declaration;\n    }\n\n    parseClassId(\n      node: N.Class,\n      isStatement: boolean,\n      optionalId?: boolean | null,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      bindingType?: BindingFlag,\n    ): void {\n      if ((!isStatement || optionalId) && this.isContextual(tt._implements)) {\n        return;\n      }\n\n      super.parseClassId(\n        node,\n        isStatement,\n        optionalId,\n        (node as any).declare\n          ? BindingFlag.TYPE_TS_AMBIENT\n          : BindingFlag.TYPE_CLASS,\n      );\n      const typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseInOutConstModifiers,\n      );\n      if (typeParameters) node.typeParameters = typeParameters;\n    }\n\n    parseClassPropertyAnnotation(\n      node: N.ClassProperty | N.ClassPrivateProperty | N.ClassAccessorProperty,\n    ): void {\n      if (!node.optional) {\n        if (this.eat(tt.bang)) {\n          node.definite = true;\n        } else if (this.eat(tt.question)) {\n          node.optional = true;\n        }\n      }\n\n      const type = this.tsTryParseTypeAnnotation();\n      if (type) node.typeAnnotation = type;\n    }\n\n    parseClassProperty(node: N.ClassProperty): N.ClassProperty {\n      this.parseClassPropertyAnnotation(node);\n\n      if (\n        this.state.isAmbientContext &&\n        !(node.readonly && !node.typeAnnotation) &&\n        this.match(tt.eq)\n      ) {\n        this.raise(\n          TSErrors.DeclareClassFieldHasInitializer,\n          this.state.startLoc,\n        );\n      }\n      if (node.abstract && this.match(tt.eq)) {\n        const { key } = node;\n        this.raise(\n          TSErrors.AbstractPropertyHasInitializer,\n          this.state.startLoc,\n          {\n            propertyName:\n              key.type === \"Identifier\" && !node.computed\n                ? key.name\n                : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]`,\n          },\n        );\n      }\n\n      return super.parseClassProperty(node);\n    }\n\n    parseClassPrivateProperty(\n      node: N.ClassPrivateProperty,\n    ): N.ClassPrivateProperty {\n      if (node.abstract) {\n        this.raise(TSErrors.PrivateElementHasAbstract, node);\n      }\n\n      if (node.accessibility) {\n        this.raise(TSErrors.PrivateElementHasAccessibility, node, {\n          modifier: node.accessibility,\n        });\n      }\n\n      this.parseClassPropertyAnnotation(node);\n      return super.parseClassPrivateProperty(node);\n    }\n\n    parseClassAccessorProperty(\n      node: N.ClassAccessorProperty,\n    ): N.ClassAccessorProperty {\n      this.parseClassPropertyAnnotation(node);\n      if (node.optional) {\n        this.raise(TSErrors.AccessorCannotBeOptional, node);\n      }\n      return super.parseClassAccessorProperty(node);\n    }\n\n    pushClassMethod(\n      classBody: N.ClassBody,\n      method: N.ClassMethod,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isConstructor: boolean,\n      allowsDirectSuper: boolean,\n    ): void {\n      const typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseConstModifier,\n      );\n      if (typeParameters && isConstructor) {\n        this.raise(TSErrors.ConstructorHasTypeParameters, typeParameters);\n      }\n\n      const { declare = false, kind } = method;\n\n      if (declare && (kind === \"get\" || kind === \"set\")) {\n        this.raise(TSErrors.DeclareAccessor, method, { kind });\n      }\n      if (typeParameters) method.typeParameters = typeParameters;\n      super.pushClassMethod(\n        classBody,\n        method,\n        isGenerator,\n        isAsync,\n        isConstructor,\n        allowsDirectSuper,\n      );\n    }\n\n    pushClassPrivateMethod(\n      classBody: N.ClassBody,\n      method: N.ClassPrivateMethod,\n      isGenerator: boolean,\n      isAsync: boolean,\n    ): void {\n      const typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseConstModifier,\n      );\n      if (typeParameters) method.typeParameters = typeParameters;\n      super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n    }\n\n    declareClassPrivateMethodInScope(\n      node: N.ClassPrivateMethod | N.TSDeclareMethod,\n      kind: number,\n    ) {\n      if (node.type === \"TSDeclareMethod\") return;\n      // This happens when using the \"estree\" plugin.\n      if (\n        (node as N.Node).type === \"MethodDefinition\" &&\n        (node as unknown as N.EstreeMethodDefinition).value.body == null\n      ) {\n        return;\n      }\n\n      super.declareClassPrivateMethodInScope(node, kind);\n    }\n\n    parseClassSuper(node: N.Class): void {\n      super.parseClassSuper(node);\n      // handle `extends f<<T>\n      if (node.superClass && (this.match(tt.lt) || this.match(tt.bitShiftL))) {\n        if (process.env.BABEL_8_BREAKING) {\n          node.superTypeArguments = this.tsParseTypeArgumentsInExpression();\n        } else {\n          node.superTypeParameters = this.tsParseTypeArgumentsInExpression();\n        }\n      }\n      if (this.eatContextual(tt._implements)) {\n        node.implements = this.tsParseHeritageClause(\"implements\");\n      }\n    }\n\n    parseObjPropValue<T extends N.ObjectMember>(\n      prop: Undone<T>,\n      startLoc: Position | undefined | null,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isPattern: boolean,\n      isAccessor: boolean,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): T {\n      const typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseConstModifier,\n      );\n      if (typeParameters) prop.typeParameters = typeParameters;\n\n      return super.parseObjPropValue(\n        prop,\n\n        startLoc,\n        isGenerator,\n        isAsync,\n        isPattern,\n        isAccessor,\n        refExpressionErrors,\n      );\n    }\n\n    parseFunctionParams(node: N.Function, isConstructor: boolean): void {\n      const typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseConstModifier,\n      );\n      if (typeParameters) node.typeParameters = typeParameters;\n      super.parseFunctionParams(node, isConstructor);\n    }\n\n    // `let x: number;`\n    parseVarId(\n      decl: N.VariableDeclarator,\n      kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n    ): void {\n      super.parseVarId(decl, kind);\n      if (\n        decl.id.type === \"Identifier\" &&\n        !this.hasPrecedingLineBreak() &&\n        this.eat(tt.bang)\n      ) {\n        decl.definite = true;\n      }\n\n      const type = this.tsTryParseTypeAnnotation();\n      if (type) {\n        decl.id.typeAnnotation = type;\n        this.resetEndLocation(decl.id); // set end position to end of type\n      }\n    }\n\n    // parse the return type of an async arrow function - let foo = (async (): number => {});\n    parseAsyncArrowFromCallExpression(\n      node: N.ArrowFunctionExpression,\n      call: N.CallExpression,\n    ): N.ArrowFunctionExpression {\n      if (this.match(tt.colon)) {\n        node.returnType = this.tsParseTypeAnnotation();\n      }\n      return super.parseAsyncArrowFromCallExpression(node, call);\n    }\n\n    parseMaybeAssign(\n      refExpressionErrors?: ExpressionErrors | null,\n      afterLeftParse?: Function,\n    ): N.Expression {\n      // Note: When the JSX plugin is on, type assertions (`<T> x`) aren't valid syntax.\n\n      let state: State | undefined | null;\n      let jsx;\n      let typeCast;\n\n      if (\n        this.hasPlugin(\"jsx\") &&\n        (this.match(tt.jsxTagStart) || this.match(tt.lt))\n      ) {\n        // Prefer to parse JSX if possible. But may be an arrow fn.\n        state = this.state.clone();\n\n        jsx = this.tryParse(\n          () => super.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n          state,\n        );\n\n        /*:: invariant(!jsx.aborted) */\n        /*:: invariant(jsx.node != null) */\n        if (!jsx.error) return jsx.node;\n\n        // Remove `tc.j_expr` or `tc.j_oTag` from context added\n        // by parsing `jsxTagStart` to stop the JSX plugin from\n        // messing with the tokens\n        const { context } = this.state;\n        const currentContext = context[context.length - 1];\n        if (currentContext === tc.j_oTag || currentContext === tc.j_expr) {\n          context.pop();\n        }\n      }\n\n      if (!jsx?.error && !this.match(tt.lt)) {\n        return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n      }\n\n      // Either way, we're looking at a '<': tt.jsxTagStart or relational.\n\n      // If the state was cloned in the JSX parsing branch above but there\n      // have been any error in the tryParse call, this.state is set to state\n      // so we still need to clone it.\n      if (!state || state === this.state) state = this.state.clone();\n\n      let typeParameters: N.TsTypeParameterDeclaration | undefined | null;\n      // We need to explicitly annotate 'abort' for microsoft/TypeScript#58170\n      const arrow = this.tryParse((abort: () => never) => {\n        // This is similar to TypeScript's `tryParseParenthesizedArrowFunctionExpression`.\n        typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier);\n        const expr = super.parseMaybeAssign(\n          refExpressionErrors,\n          afterLeftParse,\n        );\n\n        if (\n          expr.type !== \"ArrowFunctionExpression\" ||\n          expr.extra?.parenthesized\n        ) {\n          abort();\n        }\n\n        // Correct TypeScript code should have at least 1 type parameter, but don't crash on bad code.\n        if (typeParameters?.params.length !== 0) {\n          this.resetStartLocationFromNode(expr, typeParameters);\n        }\n        expr.typeParameters = typeParameters;\n\n        if (process.env.BABEL_8_BREAKING) {\n          if (\n            this.hasPlugin(\"jsx\") &&\n            expr.typeParameters.params.length === 1 &&\n            !expr.typeParameters.extra?.trailingComma\n          ) {\n            // report error if single type parameter used without trailing comma.\n            const parameter = expr.typeParameters\n              .params[0] as N.TsTypeParameter;\n            if (!parameter.constraint) {\n              // A single type parameter must either have constraints\n              // or a trailing comma, otherwise it's ambiguous with JSX.\n              this.raise(\n                TSErrors.SingleTypeParameterWithoutTrailingComma,\n                createPositionWithColumnOffset(parameter.loc.end, 1),\n                {\n                  typeParameterName: process.env.BABEL_8_BREAKING\n                    ? (parameter.name as N.Identifier).name\n                    : (parameter.name as string),\n                },\n              );\n            }\n          }\n        }\n\n        return expr;\n      }, state);\n\n      /*:: invariant(arrow.node != null) */\n      if (!arrow.error && !arrow.aborted) {\n        // This error is reported outside of the this.tryParse call so that\n        // in case of <T>(x) => 2, we don't consider <T>(x) as a type assertion\n        // because of this error.\n        if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);\n        return arrow.node;\n      }\n\n      if (!jsx) {\n        // Try parsing a type cast instead of an arrow function.\n        // This will never happen outside of JSX.\n        // (Because in JSX the '<' should be a jsxTagStart and not a relational.\n        assert(!this.hasPlugin(\"jsx\"));\n\n        // This will start with a type assertion (via parseMaybeUnary).\n        // But don't directly call `this.tsParseTypeAssertion` because we want to handle any binary after it.\n        typeCast = this.tryParse(\n          () => super.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n          state,\n        );\n        /*:: invariant(!typeCast.aborted) */\n        /*:: invariant(typeCast.node != null) */\n        if (!typeCast.error) return typeCast.node;\n      }\n\n      if (jsx?.node) {\n        /*:: invariant(jsx.failState) */\n        this.state = jsx.failState;\n        return jsx.node;\n      }\n\n      if (arrow.node) {\n        /*:: invariant(arrow.failState) */\n        this.state = arrow.failState;\n        if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);\n        return arrow.node;\n      }\n\n      if (typeCast?.node) {\n        /*:: invariant(typeCast.failState) */\n        this.state = typeCast.failState;\n        return typeCast.node;\n      }\n\n      throw jsx?.error || arrow.error || typeCast?.error;\n    }\n\n    reportReservedArrowTypeParam(node: any) {\n      if (\n        node.params.length === 1 &&\n        !node.params[0].constraint &&\n        !node.extra?.trailingComma &&\n        this.getPluginOption(\"typescript\", \"disallowAmbiguousJSXLike\")\n      ) {\n        this.raise(TSErrors.ReservedArrowTypeParam, node);\n      }\n    }\n\n    // Handle type assertions\n    parseMaybeUnary(\n      refExpressionErrors?: ExpressionErrors | null,\n      sawUnary?: boolean,\n    ): N.Expression {\n      if (!this.hasPlugin(\"jsx\") && this.match(tt.lt)) {\n        return this.tsParseTypeAssertion();\n      }\n      return super.parseMaybeUnary(refExpressionErrors, sawUnary);\n    }\n\n    parseArrow(\n      node: Undone<N.ArrowFunctionExpression>,\n    ): Undone<N.ArrowFunctionExpression> | undefined | null {\n      if (this.match(tt.colon)) {\n        // This is different from how the TS parser does it.\n        // TS uses lookahead. The Babel Parser parses it as a parenthesized expression and converts.\n\n        const result = this.tryParse(abort => {\n          const returnType = this.tsParseTypeOrTypePredicateAnnotation(\n            tt.colon,\n          );\n          if (this.canInsertSemicolon() || !this.match(tt.arrow)) abort();\n          return returnType;\n        });\n\n        if (result.aborted) return;\n\n        if (!result.thrown) {\n          if (result.error) this.state = result.failState;\n          // @ts-expect-error refine typings\n          node.returnType = result.node;\n        }\n      }\n\n      return super.parseArrow(node);\n    }\n\n    // Allow type annotations inside of a parameter list.\n    parseFunctionParamType(param: N.Pattern) {\n      if (this.eat(tt.question)) {\n        (param as any as N.Identifier).optional = true;\n      }\n      const type = this.tsTryParseTypeAnnotation();\n      if (type) param.typeAnnotation = type;\n      this.resetEndLocation(param);\n\n      return param;\n    }\n\n    isAssignable(node: N.Node, isBinding?: boolean): boolean {\n      switch (node.type) {\n        case \"TSTypeCastExpression\":\n          return this.isAssignable(node.expression, isBinding);\n        case \"TSParameterProperty\":\n          return true;\n        default:\n          return super.isAssignable(node, isBinding);\n      }\n    }\n\n    toAssignable(node: N.Node, isLHS: boolean = false): void {\n      switch (node.type) {\n        case \"ParenthesizedExpression\":\n          this.toAssignableParenthesizedExpression(node, isLHS);\n          break;\n        case \"TSAsExpression\":\n        case \"TSSatisfiesExpression\":\n        case \"TSNonNullExpression\":\n        case \"TSTypeAssertion\":\n          if (isLHS) {\n            this.expressionScope.recordArrowParameterBindingError(\n              TSErrors.UnexpectedTypeCastInParameter,\n              node,\n            );\n          } else {\n            this.raise(TSErrors.UnexpectedTypeCastInParameter, node);\n          }\n          this.toAssignable(node.expression, isLHS);\n          break;\n        case \"AssignmentExpression\":\n          if (!isLHS && node.left.type === \"TSTypeCastExpression\") {\n            node.left = this.typeCastToParameter(node.left) as N.Assignable;\n          }\n        /* fall through */\n        default:\n          super.toAssignable(node, isLHS);\n      }\n    }\n\n    toAssignableParenthesizedExpression(\n      node: N.ParenthesizedExpression,\n      isLHS: boolean,\n    ): void {\n      switch (node.expression.type) {\n        case \"TSAsExpression\":\n        case \"TSSatisfiesExpression\":\n        case \"TSNonNullExpression\":\n        case \"TSTypeAssertion\":\n        case \"ParenthesizedExpression\":\n          this.toAssignable(node.expression, isLHS);\n          break;\n        default:\n          super.toAssignable(node, isLHS);\n      }\n    }\n\n    checkToRestConversion(node: N.Node, allowPattern: boolean): void {\n      switch (node.type) {\n        case \"TSAsExpression\":\n        case \"TSSatisfiesExpression\":\n        case \"TSTypeAssertion\":\n        case \"TSNonNullExpression\":\n          this.checkToRestConversion(node.expression, false);\n          break;\n        default:\n          super.checkToRestConversion(node, allowPattern);\n      }\n    }\n\n    isValidLVal(\n      type:\n        | \"TSTypeCastExpression\"\n        | \"TSParameterProperty\"\n        | \"TSNonNullExpression\"\n        | \"TSInstantiationExpression\"\n        | \"TSAsExpression\"\n        | \"TSSatisfiesExpression\"\n        | \"TSTypeAssertion\",\n      isUnparenthesizedInAssign: boolean,\n      binding: BindingFlag,\n    ) {\n      switch (type) {\n        // Allow \"typecasts\" to appear on the left of assignment expressions,\n        // because it may be in an arrow function.\n        // e.g. `const f = (foo: number = 0) => foo;`\n        case \"TSTypeCastExpression\":\n          return true;\n        case \"TSParameterProperty\":\n          return \"parameter\";\n        case \"TSNonNullExpression\":\n          return \"expression\";\n        case \"TSAsExpression\":\n        case \"TSSatisfiesExpression\":\n        case \"TSTypeAssertion\":\n          return (\n            (binding !== BindingFlag.TYPE_NONE || !isUnparenthesizedInAssign) &&\n            ([\"expression\", true] as [string, boolean])\n          );\n        default:\n          return super.isValidLVal(type, isUnparenthesizedInAssign, binding);\n      }\n    }\n\n    parseBindingAtom(): N.Pattern {\n      if (this.state.type === tt._this) {\n        return this.parseIdentifier(/* liberal */ true);\n      }\n      return super.parseBindingAtom();\n    }\n\n    parseMaybeDecoratorArguments(\n      expr: N.Expression,\n      startLoc: Position,\n    ): N.Expression {\n      // handles `@f<<T>`\n      if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n        const typeArguments = this.tsParseTypeArgumentsInExpression();\n\n        if (this.match(tt.parenL)) {\n          const call = super.parseMaybeDecoratorArguments(\n            expr,\n            startLoc,\n          ) as N.CallExpression;\n          if (process.env.BABEL_8_BREAKING) {\n            call.typeArguments = typeArguments;\n          } else {\n            call.typeParameters = typeArguments;\n          }\n\n          return call;\n        }\n\n        this.unexpected(null, tt.parenL);\n      }\n\n      return super.parseMaybeDecoratorArguments(expr, startLoc);\n    }\n\n    checkCommaAfterRest(\n      close: (typeof charCodes)[keyof typeof charCodes],\n    ): boolean {\n      if (\n        this.state.isAmbientContext &&\n        this.match(tt.comma) &&\n        this.lookaheadCharCode() === close\n      ) {\n        this.next();\n        return false;\n      }\n      return super.checkCommaAfterRest(close);\n    }\n\n    // === === === === === === === === === === === === === === === ===\n    // Note: All below methods are duplicates of something in flow.js.\n    // Not sure what the best way to combine these is.\n    // === === === === === === === === === === === === === === === ===\n\n    isClassMethod(): boolean {\n      return this.match(tt.lt) || super.isClassMethod();\n    }\n\n    isClassProperty(): boolean {\n      return (\n        this.match(tt.bang) || this.match(tt.colon) || super.isClassProperty()\n      );\n    }\n\n    parseMaybeDefault<P extends N.Pattern>(\n      startLoc?: Position | null,\n      left?: P | null,\n    ): P | N.AssignmentPattern {\n      const node = super.parseMaybeDefault(startLoc, left);\n\n      if (\n        node.type === \"AssignmentPattern\" &&\n        node.typeAnnotation &&\n        node.right.start < node.typeAnnotation.start\n      ) {\n        this.raise(TSErrors.TypeAnnotationAfterAssign, node.typeAnnotation);\n      }\n\n      return node;\n    }\n\n    // ensure that inside types, we bypass the jsx parser plugin\n    getTokenFromCode(code: number): void {\n      if (this.state.inType) {\n        if (code === charCodes.greaterThan) {\n          this.finishOp(tt.gt, 1);\n          return;\n        }\n        if (code === charCodes.lessThan) {\n          this.finishOp(tt.lt, 1);\n          return;\n        }\n      }\n      super.getTokenFromCode(code);\n    }\n\n    // used after we have finished parsing types\n    reScan_lt_gt() {\n      const { type } = this.state;\n      if (type === tt.lt) {\n        this.state.pos -= 1;\n        this.readToken_lt();\n      } else if (type === tt.gt) {\n        this.state.pos -= 1;\n        this.readToken_gt();\n      }\n    }\n\n    reScan_lt() {\n      const { type } = this.state;\n      if (type === tt.bitShiftL) {\n        this.state.pos -= 2;\n        this.finishOp(tt.lt, 1);\n        return tt.lt;\n      }\n      return type;\n    }\n\n    toAssignableListItem(\n      exprList: (N.Expression | N.SpreadElement | N.RestElement)[],\n      index: number,\n      isLHS: boolean,\n    ): void {\n      const node = exprList[index];\n      if (node.type === \"TSTypeCastExpression\") {\n        exprList[index] = this.typeCastToParameter(node);\n      }\n      super.toAssignableListItem(exprList, index, isLHS);\n    }\n\n    typeCastToParameter(node: N.TsTypeCastExpression): N.Expression {\n      (node.expression as N.Identifier).typeAnnotation = node.typeAnnotation;\n\n      this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);\n\n      return node.expression;\n    }\n\n    shouldParseArrow(params: Array<N.Node>) {\n      if (this.match(tt.colon)) {\n        return params.every(expr => this.isAssignable(expr, true));\n      }\n      return super.shouldParseArrow(params);\n    }\n\n    shouldParseAsyncArrow(): boolean {\n      return this.match(tt.colon) || super.shouldParseAsyncArrow();\n    }\n\n    canHaveLeadingDecorator() {\n      // Avoid unnecessary lookahead in checking for abstract class unless needed!\n      return super.canHaveLeadingDecorator() || this.isAbstractClass();\n    }\n\n    jsxParseOpeningElementAfterName(\n      node: N.JSXOpeningElement,\n    ): N.JSXOpeningElement {\n      // handles `<Component<<T>`\n      if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n        const typeArguments = this.tsTryParseAndCatch(() =>\n          this.tsParseTypeArgumentsInExpression(),\n        );\n        if (typeArguments) {\n          if (process.env.BABEL_8_BREAKING) {\n            node.typeArguments = typeArguments;\n          } else {\n            node.typeParameters = typeArguments;\n          }\n        }\n      }\n      return super.jsxParseOpeningElementAfterName(node);\n    }\n\n    getGetterSetterExpectedParamCount(\n      method: N.ObjectMethod | N.ClassMethod,\n    ): number {\n      const baseCount = super.getGetterSetterExpectedParamCount(method);\n      const params = this.getObjectOrClassMethodParams(method);\n      const firstParam = params[0];\n      const hasContextParam = firstParam && this.isThisParam(firstParam);\n\n      return hasContextParam ? baseCount + 1 : baseCount;\n    }\n\n    parseCatchClauseParam(): N.Pattern {\n      const param = super.parseCatchClauseParam();\n      const type = this.tsTryParseTypeAnnotation();\n\n      if (type) {\n        param.typeAnnotation = type;\n        this.resetEndLocation(param);\n      }\n\n      return param;\n    }\n\n    tsInAmbientContext<T>(cb: () => T): T {\n      const { isAmbientContext: oldIsAmbientContext, strict: oldStrict } =\n        this.state;\n      this.state.isAmbientContext = true;\n      this.state.strict = false;\n      try {\n        return cb();\n      } finally {\n        this.state.isAmbientContext = oldIsAmbientContext;\n        this.state.strict = oldStrict;\n      }\n    }\n\n    parseClass<T extends N.Class>(\n      node: Undone<T>,\n      isStatement: boolean,\n      optionalId?: boolean,\n    ): T {\n      const oldInAbstractClass = this.state.inAbstractClass;\n      this.state.inAbstractClass = !!(node as any).abstract;\n      try {\n        return super.parseClass(node, isStatement, optionalId);\n      } finally {\n        this.state.inAbstractClass = oldInAbstractClass;\n      }\n    }\n\n    tsParseAbstractDeclaration(\n      node: any,\n      decorators: N.Decorator[] | null,\n    ): N.ClassDeclaration | N.TsInterfaceDeclaration | undefined | null {\n      if (this.match(tt._class)) {\n        node.abstract = true;\n        return this.maybeTakeDecorators(\n          decorators,\n          this.parseClass<N.ClassDeclaration>(\n            node as N.ClassDeclaration,\n            /* isStatement */ true,\n            /* optionalId */ false,\n          ),\n        );\n      } else if (this.isContextual(tt._interface)) {\n        // for invalid abstract interface\n\n        // To avoid\n        //   abstract interface\n        //   Foo {}\n        if (!this.hasFollowingLineBreak()) {\n          node.abstract = true;\n          this.raise(TSErrors.NonClassMethodPropertyHasAbstractModifier, node);\n          return this.tsParseInterfaceDeclaration(\n            node as N.TsInterfaceDeclaration,\n          );\n        }\n      } else {\n        this.unexpected(null, tt._class);\n      }\n    }\n\n    parseMethod<\n      T extends N.ObjectMethod | N.ClassMethod | N.ClassPrivateMethod,\n    >(\n      node: Undone<T>,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isConstructor: boolean,\n      allowDirectSuper: boolean,\n      type: T[\"type\"],\n      inClassScope?: boolean,\n    ) {\n      const method = super.parseMethod<T>(\n        node,\n        isGenerator,\n        isAsync,\n        isConstructor,\n        allowDirectSuper,\n        type,\n        inClassScope,\n      );\n      // @ts-expect-error todo(flow->ts) property not defined for all types in union\n      if (method.abstract || method.type === \"TSAbstractMethodDefinition\") {\n        const hasEstreePlugin = this.hasPlugin(\"estree\");\n        const methodFn = hasEstreePlugin\n          ? // @ts-expect-error estree typings\n            method.value\n          : method;\n        if (methodFn.body) {\n          const { key } = method;\n          this.raise(TSErrors.AbstractMethodHasImplementation, method, {\n            methodName:\n              key.type === \"Identifier\" && !method.computed\n                ? key.name\n                : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]`,\n          });\n        }\n      }\n      return method;\n    }\n\n    tsParseTypeParameterName(): N.Identifier | string {\n      const typeName: N.Identifier = this.parseIdentifier();\n      return process.env.BABEL_8_BREAKING ? typeName : typeName.name;\n    }\n\n    shouldParseAsAmbientContext(): boolean {\n      return !!this.getPluginOption(\"typescript\", \"dts\");\n    }\n\n    parse() {\n      if (this.shouldParseAsAmbientContext()) {\n        this.state.isAmbientContext = true;\n      }\n      return super.parse();\n    }\n\n    getExpression() {\n      if (this.shouldParseAsAmbientContext()) {\n        this.state.isAmbientContext = true;\n      }\n      return super.getExpression();\n    }\n\n    parseExportSpecifier(\n      node: Undone<N.ExportSpecifier>,\n      isString: boolean,\n      isInTypeExport: boolean,\n      isMaybeTypeOnly: boolean,\n    ) {\n      if (!isString && isMaybeTypeOnly) {\n        this.parseTypeOnlyImportExportSpecifier(\n          node,\n          /* isImport */ false,\n          isInTypeExport,\n        );\n        return this.finishNode<N.ExportSpecifier>(node, \"ExportSpecifier\");\n      }\n      node.exportKind = \"value\";\n      return super.parseExportSpecifier(\n        node,\n        isString,\n        isInTypeExport,\n        isMaybeTypeOnly,\n      );\n    }\n\n    parseImportSpecifier(\n      specifier: Undone<N.ImportSpecifier>,\n      importedIsString: boolean,\n      isInTypeOnlyImport: boolean,\n      isMaybeTypeOnly: boolean,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      bindingType: BindingFlag | undefined,\n    ): N.ImportSpecifier {\n      if (!importedIsString && isMaybeTypeOnly) {\n        this.parseTypeOnlyImportExportSpecifier(\n          specifier,\n          /* isImport */ true,\n          isInTypeOnlyImport,\n        );\n        return this.finishNode<N.ImportSpecifier>(specifier, \"ImportSpecifier\");\n      }\n      specifier.importKind = \"value\";\n      return super.parseImportSpecifier(\n        specifier,\n        importedIsString,\n        isInTypeOnlyImport,\n        isMaybeTypeOnly,\n        isInTypeOnlyImport\n          ? BindingFlag.TYPE_TS_TYPE_IMPORT\n          : BindingFlag.TYPE_TS_VALUE_IMPORT,\n      );\n    }\n\n    parseTypeOnlyImportExportSpecifier(\n      node: any,\n      isImport: boolean,\n      isInTypeOnlyImportExport: boolean,\n    ): void {\n      const leftOfAsKey = isImport ? \"imported\" : \"local\";\n      const rightOfAsKey = isImport ? \"local\" : \"exported\";\n\n      let leftOfAs = node[leftOfAsKey];\n      let rightOfAs;\n\n      let hasTypeSpecifier = false;\n      let canParseAsKeyword = true;\n\n      const loc = leftOfAs.loc.start;\n\n      // https://github.com/microsoft/TypeScript/blob/fc4f9d83d5939047aa6bb2a43965c6e9bbfbc35b/src/compiler/parser.ts#L7411-L7456\n      // import { type } from \"mod\";          - hasTypeSpecifier: false, leftOfAs: type\n      // import { type as } from \"mod\";       - hasTypeSpecifier: true,  leftOfAs: as\n      // import { type as as } from \"mod\";    - hasTypeSpecifier: false, leftOfAs: type, rightOfAs: as\n      // import { type as as as } from \"mod\"; - hasTypeSpecifier: true,  leftOfAs: as,   rightOfAs: as\n      if (this.isContextual(tt._as)) {\n        // { type as ...? }\n        const firstAs = this.parseIdentifier();\n        if (this.isContextual(tt._as)) {\n          // { type as as ...? }\n          const secondAs = this.parseIdentifier();\n          if (tokenIsKeywordOrIdentifier(this.state.type)) {\n            // { type as as something }\n            hasTypeSpecifier = true;\n            leftOfAs = firstAs;\n            rightOfAs = isImport\n              ? this.parseIdentifier()\n              : this.parseModuleExportName();\n            canParseAsKeyword = false;\n          } else {\n            // { type as as }\n            rightOfAs = secondAs;\n            canParseAsKeyword = false;\n          }\n        } else if (tokenIsKeywordOrIdentifier(this.state.type)) {\n          // { type as something }\n          canParseAsKeyword = false;\n          rightOfAs = isImport\n            ? this.parseIdentifier()\n            : this.parseModuleExportName();\n        } else {\n          // { type as }\n          hasTypeSpecifier = true;\n          leftOfAs = firstAs;\n        }\n      } else if (tokenIsKeywordOrIdentifier(this.state.type)) {\n        // { type something ...? }\n        hasTypeSpecifier = true;\n        if (isImport) {\n          leftOfAs = this.parseIdentifier(true);\n          if (!this.isContextual(tt._as)) {\n            this.checkReservedWord(\n              leftOfAs.name,\n              leftOfAs.loc.start,\n              true,\n              true,\n            );\n          }\n        } else {\n          leftOfAs = this.parseModuleExportName();\n        }\n      }\n      if (hasTypeSpecifier && isInTypeOnlyImportExport) {\n        this.raise(\n          isImport\n            ? TSErrors.TypeModifierIsUsedInTypeImports\n            : TSErrors.TypeModifierIsUsedInTypeExports,\n          loc,\n        );\n      }\n\n      node[leftOfAsKey] = leftOfAs;\n      node[rightOfAsKey] = rightOfAs;\n\n      const kindKey = isImport ? \"importKind\" : \"exportKind\";\n      node[kindKey] = hasTypeSpecifier ? \"type\" : \"value\";\n\n      if (canParseAsKeyword && this.eatContextual(tt._as)) {\n        node[rightOfAsKey] = isImport\n          ? this.parseIdentifier()\n          : this.parseModuleExportName();\n      }\n      if (!node[rightOfAsKey]) {\n        node[rightOfAsKey] = this.cloneIdentifier(node[leftOfAsKey]);\n      }\n      if (isImport) {\n        this.checkIdentifier(\n          node[rightOfAsKey],\n          hasTypeSpecifier\n            ? BindingFlag.TYPE_TS_TYPE_IMPORT\n            : BindingFlag.TYPE_TS_VALUE_IMPORT,\n        );\n      }\n    }\n\n    /**\n     * This hook is defined in the ESTree plugin.\n     * The TS-ESLint always define optional AST properties, here we provide the\n     * default value for such properties immediately after `finishNode` was invoked.\n     *\n     * @param node The AST node finished by finishNode\n     * @returns\n     */\n    fillOptionalPropertiesForTSESLint(node: N.Node): void {\n      switch (node.type) {\n        case \"ExpressionStatement\":\n          node.directive ??= undefined;\n          return;\n        case \"RestElement\":\n          node.value = undefined;\n        /* fallthrough */\n        case \"Identifier\":\n        case \"ArrayPattern\":\n        case \"AssignmentPattern\":\n        case \"ObjectPattern\":\n          node.decorators ??= [];\n          node.optional ??= false;\n          node.typeAnnotation ??= undefined;\n          return;\n        case \"TSParameterProperty\":\n          node.accessibility ??= undefined;\n          node.decorators ??= [];\n          node.override ??= false;\n          node.readonly ??= false;\n          node.static ??= false;\n          return;\n        case \"TSEmptyBodyFunctionExpression\":\n          node.body = null;\n        /* fallthrough */\n        case \"TSDeclareFunction\":\n        case \"FunctionDeclaration\":\n        case \"FunctionExpression\":\n        case \"ClassMethod\":\n        case \"ClassPrivateMethod\":\n          node.declare ??= false;\n          node.returnType ??= undefined;\n          node.typeParameters ??= undefined;\n          return;\n        case \"Property\":\n          node.optional ??= false;\n          return;\n        case \"TSMethodSignature\":\n        case \"TSPropertySignature\":\n          node.optional ??= false;\n        /* fallthrough */\n        case \"TSIndexSignature\":\n          node.accessibility ??= undefined;\n          node.readonly ??= false;\n          node.static ??= false;\n          return;\n        case \"TSAbstractPropertyDefinition\":\n        case \"PropertyDefinition\":\n        case \"TSAbstractAccessorProperty\":\n        case \"AccessorProperty\":\n          node.declare ??= false;\n          node.definite ??= false;\n          node.readonly ??= false;\n          node.typeAnnotation ??= undefined;\n        /* fallthrough */\n        case \"TSAbstractMethodDefinition\":\n        case \"MethodDefinition\":\n          node.accessibility ??= undefined;\n          node.decorators ??= [];\n          node.override ??= false;\n          node.optional ??= false;\n          return;\n        case \"ClassExpression\":\n          node.id ??= null;\n        /* fallthrough */\n        case \"ClassDeclaration\":\n          node.abstract ??= false;\n          node.declare ??= false;\n          node.decorators ??= [];\n          node.implements ??= [];\n          node.superTypeArguments ??= undefined;\n          node.typeParameters ??= undefined;\n          return;\n        case \"TSTypeAliasDeclaration\":\n        case \"VariableDeclaration\":\n          node.declare ??= false;\n          return;\n        case \"VariableDeclarator\":\n          node.definite ??= false;\n          return;\n        case \"TSEnumDeclaration\":\n          node.const ??= false;\n          node.declare ??= false;\n          return;\n        case \"TSEnumMember\":\n          node.computed ??= false;\n          return;\n        case \"TSImportType\":\n          node.qualifier ??= null;\n          node.options ??= null;\n          if (process.env.BABEL_8_BREAKING) {\n            node.typeArguments ??= null;\n          }\n          return;\n        case \"TSInterfaceDeclaration\":\n          node.declare ??= false;\n          node.extends ??= [];\n          return;\n        case \"TSModuleDeclaration\":\n          node.declare ??= false;\n          node.global ??= node.kind === \"global\";\n          return;\n        case \"TSTypeParameter\":\n          node.const ??= false;\n          node.in ??= false;\n          node.out ??= false;\n          return;\n      }\n    }\n  };\n\nfunction isPossiblyLiteralEnum(expression: N.Expression): boolean {\n  if (expression.type !== \"MemberExpression\") return false;\n\n  const { computed, property } = expression;\n\n  if (\n    computed &&\n    property.type !== \"StringLiteral\" &&\n    (property.type !== \"TemplateLiteral\" || property.expressions.length > 0)\n  ) {\n    return false;\n  }\n\n  return isUncomputedMemberExpressionChain(expression.object);\n}\n\n// If a const declaration has no type annotation and is initialized to\n// a string literal, numeric literal, or enum reference, then it is\n// allowed. In an ideal world, we'd check whether init was *actually* an\n// enum reference, but we allow anything that \"could be\" a literal enum\n// in `isPossiblyLiteralEnum` since we don't have all the information\n// that the typescript compiler has.\nfunction isValidAmbientConstInitializer(\n  expression: N.Expression,\n  estree: boolean,\n): boolean {\n  const { type } = expression;\n  if (expression.extra?.parenthesized) {\n    return false;\n  }\n  if (estree) {\n    if (type === \"Literal\") {\n      const { value } = expression;\n      if (typeof value === \"string\" || typeof value === \"boolean\") {\n        return true;\n      }\n    }\n  } else {\n    if (type === \"StringLiteral\" || type === \"BooleanLiteral\") {\n      return true;\n    }\n  }\n  if (isNumber(expression, estree) || isNegativeNumber(expression, estree)) {\n    return true;\n  }\n  if (type === \"TemplateLiteral\" && expression.expressions.length === 0) {\n    return true;\n  }\n  if (isPossiblyLiteralEnum(expression)) {\n    return true;\n  }\n  return false;\n}\n\nfunction isNumber(expression: N.Expression, estree: boolean): boolean {\n  if (estree) {\n    return (\n      expression.type === \"Literal\" &&\n      (typeof expression.value === \"number\" || \"bigint\" in expression)\n    );\n  }\n  return (\n    expression.type === \"NumericLiteral\" || expression.type === \"BigIntLiteral\"\n  );\n}\n\nfunction isNegativeNumber(expression: N.Expression, estree: boolean): boolean {\n  if (expression.type === \"UnaryExpression\") {\n    const { operator, argument } = expression;\n    if (operator === \"-\" && isNumber(argument, estree)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nfunction isUncomputedMemberExpressionChain(expression: N.Expression): boolean {\n  if (expression.type === \"Identifier\") return true;\n  if (expression.type !== \"MemberExpression\" || expression.computed) {\n    return false;\n  }\n\n  return isUncomputedMemberExpressionChain(expression.object);\n}\n","import * as charCodes from \"charcodes\";\n\nimport { tokenLabelName, tt } from \"../tokenizer/types.ts\";\nimport type Parser from \"../parser/index.ts\";\nimport type * as N from \"../types.ts\";\nimport { ParseErrorEnum } from \"../parse-error.ts\";\nimport type { Undone } from \"../parser/node.ts\";\nimport type { ExpressionErrors } from \"../parser/util.ts\";\nimport type { BindingFlag } from \"../util/scopeflags.ts\";\nimport type { Position } from \"../util/location.ts\";\n\ntype PossiblePlaceholders = {\n  Identifier: N.Identifier;\n  StringLiteral: N.StringLiteral;\n  Expression: N.Expression;\n  Statement: N.Statement;\n  Declaration: N.Declaration;\n  BlockStatement: N.BlockStatement;\n  ClassBody: N.ClassBody;\n  Pattern: N.Pattern;\n};\nexport type PlaceholderTypes = keyof PossiblePlaceholders;\n\ntype NodeOf<T extends keyof PossiblePlaceholders> = PossiblePlaceholders[T];\n// todo: when there  is proper union type for Node\n// type NodeOf<T extends PlaceholderTypes> = Extract<N.Node, { type: T }>;\n\n// todo: Placeholder<T> breaks everything, because its type is incompatible with\n// the substituted nodes.\ntype MaybePlaceholder<T extends PlaceholderTypes> = NodeOf<T>; // | Placeholder<T>\n\n/* eslint sort-keys: \"error\" */\nconst PlaceholderErrors = ParseErrorEnum`placeholders`({\n  ClassNameIsRequired: \"A class name is required.\",\n  UnexpectedSpace: \"Unexpected space in placeholder.\",\n});\n\nexport default (superClass: typeof Parser) =>\n  class PlaceholdersParserMixin extends superClass implements Parser {\n    parsePlaceholder<T extends PlaceholderTypes>(\n      expectedNode: T,\n    ): /*?N.Placeholder<T>*/ MaybePlaceholder<T> | undefined {\n      if (this.match(tt.placeholder)) {\n        const node = this.startNode<N.Placeholder<T>>();\n        this.next();\n        this.assertNoSpace();\n\n        // We can't use this.parseIdentifier because\n        // we don't want nested placeholders.\n        node.name = super.parseIdentifier(/* liberal */ true);\n\n        this.assertNoSpace();\n        this.expect(tt.placeholder);\n        return this.finishPlaceholder(node, expectedNode);\n      }\n    }\n\n    finishPlaceholder<T extends PlaceholderTypes>(\n      node: Undone<N.Placeholder> | Undone<NodeOf<PlaceholderTypes>>,\n      expectedNode: T,\n    ): /*N.Placeholder<T>*/ MaybePlaceholder<T> {\n      let placeholder = node as unknown as N.Placeholder<T>;\n\n      if (!placeholder.expectedNode || !placeholder.type) {\n        placeholder = this.finishNode(\n          placeholder,\n          \"Placeholder\",\n        ) as unknown as N.Placeholder<T>;\n      }\n\n      placeholder.expectedNode = expectedNode;\n      return placeholder as unknown as MaybePlaceholder<T>;\n    }\n\n    /* ============================================================ *\n     * tokenizer/index.ts                                           *\n     * ============================================================ */\n\n    getTokenFromCode(code: number) {\n      if (\n        code === charCodes.percentSign &&\n        this.input.charCodeAt(this.state.pos + 1) === charCodes.percentSign\n      ) {\n        this.finishOp(tt.placeholder, 2);\n      } else {\n        super.getTokenFromCode(code);\n      }\n    }\n\n    /* ============================================================ *\n     * parser/expression.ts                                         *\n     * ============================================================ */\n\n    parseExprAtom(\n      refExpressionErrors?: ExpressionErrors | null,\n    ): MaybePlaceholder<\"Expression\"> {\n      return (\n        this.parsePlaceholder(\"Expression\") ||\n        super.parseExprAtom(refExpressionErrors)\n      );\n    }\n\n    parseIdentifier(liberal?: boolean): MaybePlaceholder<\"Identifier\"> {\n      // NOTE: This function only handles identifiers outside of\n      // expressions and binding patterns, since they are already\n      // handled by the parseExprAtom and parseBindingAtom functions.\n      // This is needed, for example, to parse \"class %%NAME%% {}\".\n      return (\n        this.parsePlaceholder(\"Identifier\") || super.parseIdentifier(liberal)\n      );\n    }\n\n    checkReservedWord(\n      word: string,\n      startLoc: Position,\n      checkKeywords: boolean,\n      isBinding: boolean,\n    ) {\n      // Sometimes we call #checkReservedWord(node.name), expecting\n      // that node is an Identifier. If it is a Placeholder, name\n      // will be undefined.\n      if (word !== undefined) {\n        super.checkReservedWord(word, startLoc, checkKeywords, isBinding);\n      }\n    }\n\n    /* ============================================================ *\n     * parser/node.ts                                               *\n     * ============================================================ */\n\n    cloneIdentifier<T extends N.Identifier | N.Placeholder>(node: T): T {\n      const cloned = super.cloneIdentifier(node);\n      if (cloned.type === \"Placeholder\") {\n        cloned.expectedNode = (node as N.Placeholder).expectedNode;\n      }\n      return cloned;\n    }\n\n    cloneStringLiteral<\n      T extends N.EstreeLiteral | N.StringLiteral | N.Placeholder,\n    >(node: T): T {\n      if (node.type === \"Placeholder\") {\n        return this.cloneIdentifier(node) as T;\n      }\n      return super.cloneStringLiteral(node);\n    }\n\n    /* ============================================================ *\n     * parser/lval.ts                                               *\n     * ============================================================ */\n\n    parseBindingAtom(): MaybePlaceholder<\"Pattern\"> {\n      return this.parsePlaceholder(\"Pattern\") || super.parseBindingAtom();\n    }\n\n    isValidLVal(type: string, isParenthesized: boolean, binding: BindingFlag) {\n      return (\n        type === \"Placeholder\" ||\n        super.isValidLVal(type, isParenthesized, binding)\n      );\n    }\n\n    toAssignable(node: N.Node, isLHS: boolean): void {\n      if (\n        node &&\n        node.type === \"Placeholder\" &&\n        node.expectedNode === \"Expression\"\n      ) {\n        node.expectedNode = \"Pattern\";\n      } else {\n        super.toAssignable(node, isLHS);\n      }\n    }\n\n    /* ============================================================ *\n     * parser/statement.ts                                          *\n     * ============================================================ */\n\n    chStartsBindingIdentifier(ch: number, pos: number): boolean {\n      if (super.chStartsBindingIdentifier(ch, pos)) {\n        return true;\n      }\n\n      // Accept \"let %%\" as the start of \"let %%placeholder%%\", as though the\n      // placeholder were an identifier.\n      const next = this.nextTokenStart();\n      if (\n        this.input.charCodeAt(next) === charCodes.percentSign &&\n        this.input.charCodeAt(next + 1) === charCodes.percentSign\n      ) {\n        return true;\n      }\n\n      return false;\n    }\n\n    verifyBreakContinue(\n      node: N.BreakStatement | N.ContinueStatement,\n      isBreak: boolean,\n    ) {\n      // @ts-expect-error: node.label could be Placeholder\n      if (node.label && node.label.type === \"Placeholder\") return;\n      super.verifyBreakContinue(node, isBreak);\n    }\n\n    // @ts-expect-error Plugin will override parser interface\n    parseExpressionStatement(\n      node: MaybePlaceholder<\"Statement\">,\n      expr: MaybePlaceholder<\"Expression\">,\n    ): MaybePlaceholder<\"Statement\"> {\n      // @ts-expect-error placeholder typings\n      if (expr.type !== \"Placeholder\" || expr.extra?.parenthesized) {\n        // @ts-expect-error placeholder typings\n        return super.parseExpressionStatement(node, expr);\n      }\n\n      if (this.match(tt.colon)) {\n        // @ts-expect-error placeholder typings\n        const stmt: N.LabeledStatement = node;\n        stmt.label = this.finishPlaceholder(expr, \"Identifier\");\n        this.next();\n        stmt.body = super.parseStatementOrSloppyAnnexBFunctionDeclaration();\n        return this.finishNode(stmt, \"LabeledStatement\");\n      }\n\n      this.semicolon();\n      const stmtPlaceholder = node as unknown as N.Placeholder<\"Statement\">;\n      stmtPlaceholder.name = (expr as N.Placeholder).name;\n      return this.finishPlaceholder(stmtPlaceholder, \"Statement\");\n    }\n\n    parseBlock(\n      allowDirectives?: boolean,\n      createNewLexicalScope?: boolean,\n      afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n    ): MaybePlaceholder<\"BlockStatement\"> {\n      return (\n        this.parsePlaceholder(\"BlockStatement\") ||\n        super.parseBlock(\n          allowDirectives,\n          createNewLexicalScope,\n          afterBlockParse,\n        )\n      );\n    }\n\n    parseFunctionId(\n      requireId?: boolean,\n    ): MaybePlaceholder<\"Identifier\"> | undefined | null {\n      return (\n        this.parsePlaceholder(\"Identifier\") || super.parseFunctionId(requireId)\n      );\n    }\n    // @ts-expect-error Plugin will override parser interface\n    parseClass<T extends N.Class>(\n      node: T,\n      isStatement: /* T === ClassDeclaration */ boolean,\n      optionalId?: boolean,\n    ): T {\n      const type = isStatement ? \"ClassDeclaration\" : \"ClassExpression\";\n\n      this.next();\n      const oldStrict = this.state.strict;\n\n      const placeholder = this.parsePlaceholder(\"Identifier\");\n      if (placeholder) {\n        if (\n          this.match(tt._extends) ||\n          this.match(tt.placeholder) ||\n          this.match(tt.braceL)\n        ) {\n          node.id = placeholder;\n        } else if (optionalId || !isStatement) {\n          node.id = null;\n          node.body = this.finishPlaceholder(placeholder, \"ClassBody\");\n          return this.finishNode(node, type);\n        } else {\n          throw this.raise(\n            PlaceholderErrors.ClassNameIsRequired,\n            this.state.startLoc,\n          );\n        }\n      } else {\n        this.parseClassId(node, isStatement, optionalId);\n      }\n\n      super.parseClassSuper(node);\n      node.body =\n        this.parsePlaceholder(\"ClassBody\") ||\n        super.parseClassBody(!!node.superClass, oldStrict);\n      return this.finishNode(node, type);\n    }\n\n    parseExport(\n      node: Undone<\n        | N.ExportDefaultDeclaration\n        | N.ExportAllDeclaration\n        | N.ExportNamedDeclaration\n      >,\n      decorators: N.Decorator[] | null,\n    ): N.AnyExport {\n      const placeholder = this.parsePlaceholder(\"Identifier\");\n      if (!placeholder) return super.parseExport(node, decorators);\n\n      const node2 = node as Undone<N.ExportNamedDeclaration>;\n\n      if (!this.isContextual(tt._from) && !this.match(tt.comma)) {\n        // export %%DECL%%;\n        node2.specifiers = [];\n        node2.source = null;\n        node2.declaration = this.finishPlaceholder(placeholder, \"Declaration\");\n        return this.finishNode(node2, \"ExportNamedDeclaration\");\n      }\n\n      // export %%NAME%% from \"foo\";\n      this.expectPlugin(\"exportDefaultFrom\");\n      const specifier = this.startNode<N.ExportDefaultSpecifier>();\n      specifier.exported = placeholder;\n      node2.specifiers = [this.finishNode(specifier, \"ExportDefaultSpecifier\")];\n\n      return super.parseExport(node2, decorators);\n    }\n\n    isExportDefaultSpecifier(): boolean {\n      if (this.match(tt._default)) {\n        const next = this.nextTokenStart();\n        if (this.isUnparsedContextual(next, \"from\")) {\n          if (\n            this.input.startsWith(\n              tokenLabelName(tt.placeholder),\n              this.nextTokenStartSince(next + 4),\n            )\n          ) {\n            return true;\n          }\n        }\n      }\n      return super.isExportDefaultSpecifier();\n    }\n\n    maybeParseExportDefaultSpecifier(\n      node: Undone<\n        | N.ExportDefaultDeclaration\n        | N.ExportAllDeclaration\n        | N.ExportNamedDeclaration\n      >,\n      maybeDefaultIdentifier: N.Identifier | null,\n    ): node is Undone<N.ExportNamedDeclaration> {\n      if ((node as N.ExportNamedDeclaration).specifiers?.length) {\n        // \"export %%NAME%%\" has already been parsed by #parseExport.\n        return true;\n      }\n      return super.maybeParseExportDefaultSpecifier(\n        node,\n        maybeDefaultIdentifier,\n      );\n    }\n\n    checkExport(node: N.ExportNamedDeclaration): void {\n      const { specifiers } = node;\n      if (specifiers?.length) {\n        node.specifiers = specifiers.filter(\n          // @ts-expect-error placeholder typings\n          node => node.exported.type === \"Placeholder\",\n        );\n      }\n      super.checkExport(node);\n      node.specifiers = specifiers;\n    }\n\n    parseImport(\n      node: Undone<N.ImportDeclaration>,\n    ): N.ImportDeclaration | N.TsImportEqualsDeclaration {\n      const placeholder = this.parsePlaceholder(\"Identifier\");\n      if (!placeholder) return super.parseImport(node);\n\n      node.specifiers = [];\n\n      if (!this.isContextual(tt._from) && !this.match(tt.comma)) {\n        // import %%STRING%%;\n        node.source = this.finishPlaceholder(placeholder, \"StringLiteral\");\n        this.semicolon();\n        return this.finishNode(node, \"ImportDeclaration\");\n      }\n\n      // import %%DEFAULT%% ...\n      const specifier =\n        this.startNodeAtNode<N.ImportDefaultSpecifier>(placeholder);\n      specifier.local = placeholder;\n      node.specifiers.push(\n        this.finishNode(specifier, \"ImportDefaultSpecifier\"),\n      );\n\n      if (this.eat(tt.comma)) {\n        // import %%DEFAULT%%, * as ...\n        const hasStarImport = this.maybeParseStarImportSpecifier(node);\n\n        // import %%DEFAULT%%, { ...\n        if (!hasStarImport) this.parseNamedImportSpecifiers(node);\n      }\n\n      this.expectContextual(tt._from);\n      node.source = this.parseImportSource();\n      this.semicolon();\n      return this.finishNode(node, \"ImportDeclaration\");\n    }\n\n    parseImportSource(): MaybePlaceholder<\"StringLiteral\"> {\n      // import ... from %%STRING%%;\n\n      return (\n        this.parsePlaceholder(\"StringLiteral\") || super.parseImportSource()\n      );\n    }\n\n    // Throws if the current token and the prev one are separated by a space.\n    assertNoSpace(): void {\n      if (\n        this.state.start >\n        this.offsetToSourcePos(this.state.lastTokEndLoc.index)\n      ) {\n        this.raise(PlaceholderErrors.UnexpectedSpace, this.state.lastTokEndLoc);\n      }\n    }\n  };\n","import type Parser from \"../parser/index.ts\";\nimport { tokenIsIdentifier, tt } from \"../tokenizer/types.ts\";\nimport type * as N from \"../types.ts\";\nimport type { ExpressionErrors } from \"../parser/util.ts\";\n\nexport default (superClass: typeof Parser) =>\n  class V8IntrinsicMixin extends superClass implements Parser {\n    parseV8Intrinsic(): N.Expression {\n      if (this.match(tt.modulo)) {\n        const v8IntrinsicStartLoc = this.state.startLoc;\n        // let the `loc` of Identifier starts from `%`\n        const node = this.startNode<N.Identifier>();\n        this.next(); // eat '%'\n        if (tokenIsIdentifier(this.state.type)) {\n          const name = this.parseIdentifierName();\n          const identifier = this.createIdentifier(node, name);\n          this.castNodeTo(identifier, \"V8IntrinsicIdentifier\");\n          if (this.match(tt.parenL)) {\n            return identifier;\n          }\n        }\n        this.unexpected(v8IntrinsicStartLoc);\n      }\n    }\n\n    /* ============================================================ *\n     * parser/expression.js                                         *\n     * ============================================================ */\n\n    parseExprAtom(refExpressionErrors?: ExpressionErrors | null): N.Expression {\n      return (\n        this.parseV8Intrinsic() || super.parseExprAtom(refExpressionErrors)\n      );\n    }\n  };\n","import type Parser from \"./parser/index.ts\";\nimport type { PluginConfig } from \"./typings.ts\";\n\nexport type Plugin = PluginConfig;\n\nexport type MixinPlugin = (\n  superClass: new (...args: any) => Parser,\n) => new (...args: any) => Parser;\n\nconst PIPELINE_PROPOSALS = process.env.BABEL_8_BREAKING\n  ? [\"fsharp\", \"hack\"]\n  : [\"minimal\", \"fsharp\", \"hack\", \"smart\"];\nconst TOPIC_TOKENS = [\"^^\", \"@@\", \"^\", \"%\", \"#\"];\n\nexport function validatePlugins(pluginsMap: Map<string, any>) {\n  if (pluginsMap.has(\"decorators\")) {\n    if (pluginsMap.has(\"decorators-legacy\")) {\n      throw new Error(\n        \"Cannot use the decorators and decorators-legacy plugin together\",\n      );\n    }\n\n    const decoratorsBeforeExport =\n      pluginsMap.get(\"decorators\").decoratorsBeforeExport;\n    if (\n      decoratorsBeforeExport != null &&\n      typeof decoratorsBeforeExport !== \"boolean\"\n    ) {\n      throw new Error(\n        \"'decoratorsBeforeExport' must be a boolean, if specified.\",\n      );\n    }\n\n    const allowCallParenthesized =\n      pluginsMap.get(\"decorators\").allowCallParenthesized;\n    if (\n      allowCallParenthesized != null &&\n      typeof allowCallParenthesized !== \"boolean\"\n    ) {\n      throw new Error(\"'allowCallParenthesized' must be a boolean.\");\n    }\n  }\n\n  if (pluginsMap.has(\"flow\") && pluginsMap.has(\"typescript\")) {\n    throw new Error(\"Cannot combine flow and typescript plugins.\");\n  }\n\n  if (pluginsMap.has(\"placeholders\") && pluginsMap.has(\"v8intrinsic\")) {\n    throw new Error(\"Cannot combine placeholders and v8intrinsic plugins.\");\n  }\n\n  if (pluginsMap.has(\"pipelineOperator\")) {\n    const proposal = pluginsMap.get(\"pipelineOperator\").proposal;\n\n    if (!PIPELINE_PROPOSALS.includes(proposal)) {\n      const proposalList = PIPELINE_PROPOSALS.map(p => `\"${p}\"`).join(\", \");\n      throw new Error(\n        `\"pipelineOperator\" requires \"proposal\" option whose value must be one of: ${proposalList}.`,\n      );\n    }\n\n    if (proposal === \"hack\") {\n      if (pluginsMap.has(\"placeholders\")) {\n        throw new Error(\n          \"Cannot combine placeholders plugin and Hack-style pipes.\",\n        );\n      }\n\n      if (pluginsMap.has(\"v8intrinsic\")) {\n        throw new Error(\n          \"Cannot combine v8intrinsic plugin and Hack-style pipes.\",\n        );\n      }\n\n      const topicToken = pluginsMap.get(\"pipelineOperator\").topicToken;\n\n      if (!TOPIC_TOKENS.includes(topicToken)) {\n        const tokenList = TOPIC_TOKENS.map(t => `\"${t}\"`).join(\", \");\n\n        throw new Error(\n          `\"pipelineOperator\" in \"proposal\": \"hack\" mode also requires a \"topicToken\" option whose value must be one of: ${tokenList}.`,\n        );\n      }\n\n      if (!process.env.BABEL_8_BREAKING) {\n        if (\n          topicToken === \"#\" &&\n          pluginsMap.get(\"recordAndTuple\")?.syntaxType === \"hash\"\n        ) {\n          throw new Error(\n            `Plugin conflict between \\`[\"pipelineOperator\", { proposal: \"hack\", topicToken: \"#\" }]\\` and \\`${JSON.stringify([\"recordAndTuple\", pluginsMap.get(\"recordAndTuple\")])}\\`.`,\n          );\n        }\n      }\n    } else if (\n      !process.env.BABEL_8_BREAKING &&\n      proposal === \"smart\" &&\n      pluginsMap.get(\"recordAndTuple\")?.syntaxType === \"hash\"\n    ) {\n      throw new Error(\n        `Plugin conflict between \\`[\"pipelineOperator\", { proposal: \"smart\" }]\\` and \\`${JSON.stringify([\"recordAndTuple\", pluginsMap.get(\"recordAndTuple\")])}\\`.`,\n      );\n    }\n  }\n\n  if (pluginsMap.has(\"moduleAttributes\")) {\n    if (process.env.BABEL_8_BREAKING) {\n      throw new Error(\n        \"`moduleAttributes` has been removed in Babel 8, please migrate to import attributes instead.\",\n      );\n    } else {\n      if (\n        pluginsMap.has(\"deprecatedImportAssert\") ||\n        pluginsMap.has(\"importAssertions\")\n      ) {\n        throw new Error(\n          \"Cannot combine importAssertions, deprecatedImportAssert and moduleAttributes plugins.\",\n        );\n      }\n      const moduleAttributesVersionPluginOption =\n        pluginsMap.get(\"moduleAttributes\").version;\n      if (moduleAttributesVersionPluginOption !== \"may-2020\") {\n        throw new Error(\n          \"The 'moduleAttributes' plugin requires a 'version' option,\" +\n            \" representing the last proposal update. Currently, the\" +\n            \" only supported value is 'may-2020'.\",\n        );\n      }\n    }\n  }\n  if (pluginsMap.has(\"importAssertions\")) {\n    if (process.env.BABEL_8_BREAKING) {\n      throw new Error(\n        \"`importAssertions` has been removed in Babel 8, please use import attributes instead.\" +\n          \" To use the non-standard `assert` syntax you can enable the `deprecatedImportAssert` parser plugin.\",\n      );\n    } else if (pluginsMap.has(\"deprecatedImportAssert\")) {\n      throw new Error(\n        \"Cannot combine importAssertions and deprecatedImportAssert plugins.\",\n      );\n    }\n  }\n  if (\n    !pluginsMap.has(\"deprecatedImportAssert\") &&\n    pluginsMap.has(\"importAttributes\") &&\n    pluginsMap.get(\"importAttributes\").deprecatedAssertSyntax\n  ) {\n    if (process.env.BABEL_8_BREAKING) {\n      throw new Error(\n        \"The 'importAttributes' plugin has been removed in Babel 8. If you need to enable support \" +\n          \"for the deprecated `assert` syntax, you can enable the `deprecatedImportAssert` parser plugin.\",\n      );\n    } else {\n      pluginsMap.set(\"deprecatedImportAssert\", {});\n    }\n  }\n\n  if (pluginsMap.has(\"recordAndTuple\")) {\n    if (process.env.BABEL_8_BREAKING) {\n      throw new Error(\n        \"The 'recordAndTuple' plugin has been removed in Babel 8. Please remove it from your configuration.\",\n      );\n    } else {\n      const syntaxType = pluginsMap.get(\"recordAndTuple\").syntaxType;\n      if (syntaxType != null) {\n        const RECORD_AND_TUPLE_SYNTAX_TYPES = [\"hash\", \"bar\"];\n        if (!RECORD_AND_TUPLE_SYNTAX_TYPES.includes(syntaxType)) {\n          throw new Error(\n            \"The 'syntaxType' option of the 'recordAndTuple' plugin must be one of: \" +\n              RECORD_AND_TUPLE_SYNTAX_TYPES.map(p => `'${p}'`).join(\", \"),\n          );\n        }\n      }\n    }\n  }\n\n  if (\n    pluginsMap.has(\"asyncDoExpressions\") &&\n    !pluginsMap.has(\"doExpressions\")\n  ) {\n    const error = new Error(\n      \"'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins.\",\n    );\n    // @ts-expect-error so @babel/core can provide better error message\n    error.missingPlugins = \"doExpressions\";\n    throw error;\n  }\n\n  if (\n    pluginsMap.has(\"optionalChainingAssign\") &&\n    pluginsMap.get(\"optionalChainingAssign\").version !== \"2023-07\"\n  ) {\n    throw new Error(\n      \"The 'optionalChainingAssign' plugin requires a 'version' option,\" +\n        \" representing the last proposal update. Currently, the\" +\n        \" only supported value is '2023-07'.\",\n    );\n  }\n\n  if (\n    pluginsMap.has(\"discardBinding\") &&\n    pluginsMap.get(\"discardBinding\").syntaxType !== \"void\"\n  ) {\n    throw new Error(\n      \"The 'discardBinding' plugin requires a 'syntaxType' option. Currently the only supported value is 'void'.\",\n    );\n  }\n\n  if (process.env.BABEL_8_BREAKING) {\n    if (pluginsMap.has(\"decimal\")) {\n      throw new Error(\n        \"The 'decimal' plugin has been removed in Babel 8. Please remove it from your configuration.\",\n      );\n    }\n    if (pluginsMap.has(\"importReflection\")) {\n      throw new Error(\n        \"The 'importReflection' plugin has been removed in Babel 8. Use 'sourcePhaseImports' instead, and \" +\n          \"replace 'import module' with 'import source' in your code.\",\n      );\n    }\n  }\n}\n\n// These plugins are defined using a mixin which extends the parser class.\n\nimport estree from \"./plugins/estree.ts\";\nimport flow from \"./plugins/flow/index.ts\";\nimport jsx from \"./plugins/jsx/index.ts\";\nimport typescript from \"./plugins/typescript/index.ts\";\nimport placeholders from \"./plugins/placeholders.ts\";\nimport v8intrinsic from \"./plugins/v8intrinsic.ts\";\n\n// NOTE: order is important. estree must come first; placeholders must come last.\nexport const mixinPlugins = {\n  estree,\n  jsx,\n  flow,\n  typescript,\n  v8intrinsic,\n  placeholders,\n};\n\nexport const mixinPluginNames = Object.keys(mixinPlugins) as ReadonlyArray<\n  \"estree\" | \"jsx\" | \"flow\" | \"typescript\" | \"v8intrinsic\" | \"placeholders\"\n>;\n","// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\nimport {\n  tokenCanStartExpression,\n  tokenIsAssignment,\n  tokenIsIdentifier,\n  tokenIsKeywordOrIdentifier,\n  tokenIsOperator,\n  tokenIsPostfix,\n  tokenIsPrefix,\n  tokenIsRightAssociative,\n  tokenIsTemplate,\n  tokenKeywordOrIdentifierIsKeyword,\n  tokenLabelName,\n  tokenOperatorPrecedence,\n  tt,\n  type TokenType,\n} from \"../tokenizer/types.ts\";\nimport type * as N from \"../types.ts\";\nimport LValParser from \"./lval.ts\";\nimport {\n  isKeyword,\n  isReservedWord,\n  isStrictReservedWord,\n  isStrictBindReservedWord,\n  isIdentifierStart,\n  canBeReservedWord,\n} from \"../util/identifier.ts\";\nimport {\n  type Position,\n  createPositionWithColumnOffset,\n} from \"../util/location.ts\";\nimport * as charCodes from \"charcodes\";\nimport { ScopeFlag, BindingFlag } from \"../util/scopeflags.ts\";\nimport { ExpressionErrors } from \"./util.ts\";\nimport { ParamKind, functionFlags } from \"../util/production-parameter.ts\";\nimport {\n  newArrowHeadScope,\n  newAsyncArrowScope,\n  newExpressionScope,\n} from \"../util/expression-scope.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport {\n  UnparenthesizedPipeBodyDescriptions,\n  type UnparenthesizedPipeBodyTypes,\n} from \"../parse-error/pipeline-operator-errors.ts\";\nimport { setInnerComments } from \"./comments.ts\";\nimport type { Undone } from \"./node.ts\";\nimport type Parser from \"./index.ts\";\n\nimport { OptionFlags, type SourceType } from \"../options.ts\";\n\nexport default abstract class ExpressionParser extends LValParser {\n  // Forward-declaration: defined in statement.js\n  abstract parseBlock(\n    allowDirectives?: boolean,\n    createNewLexicalScope?: boolean,\n    afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n  ): N.BlockStatement;\n  abstract parseClass(\n    node: N.Class,\n    isStatement: boolean,\n    optionalId?: boolean,\n  ): N.Class;\n  abstract parseDecorators(allowExport?: boolean): void;\n  abstract parseFunction<T extends N.NormalFunction>(\n    node: T,\n    statement?: number,\n    allowExpressionBody?: boolean,\n    isAsync?: boolean,\n  ): T;\n  abstract parseFunctionParams(node: N.Function, isConstructor?: boolean): void;\n  abstract parseBlockOrModuleBlockBody(\n    body: N.Statement[],\n    directives: N.Directive[] | null | undefined,\n    topLevel: boolean,\n    end: TokenType,\n    afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n  ): void;\n  abstract parseProgram(\n    program: N.Program,\n    end: TokenType,\n    sourceType?: SourceType,\n  ): N.Program;\n\n  // For object literal, check if property __proto__ has been used more than once.\n  // If the expression is a destructuring assignment, then __proto__ may appear\n  // multiple times. Otherwise, __proto__ is a duplicated key.\n\n  // For record expression, check if property __proto__ exists\n\n  checkProto(\n    prop: N.ObjectMember | N.SpreadElement,\n    isRecord: boolean | undefined | null,\n    sawProto: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): boolean {\n    if (\n      prop.type === \"SpreadElement\" ||\n      this.isObjectMethod(prop) ||\n      prop.computed ||\n      prop.shorthand\n    ) {\n      return sawProto;\n    }\n\n    const key = prop.key as\n      | N.Identifier\n      | N.StringLiteral\n      | N.NumericLiteral\n      | N.BigIntLiteral;\n    // It is either an Identifier or a String/NumericLiteral\n    const name = key.type === \"Identifier\" ? key.name : key.value;\n\n    if (name === \"__proto__\") {\n      if (isRecord) {\n        this.raise(Errors.RecordNoProto, key);\n        return true;\n      }\n      if (sawProto) {\n        if (refExpressionErrors) {\n          // Store the first redefinition's position, otherwise ignore because\n          // we are parsing ambiguous pattern\n          if (refExpressionErrors.doubleProtoLoc === null) {\n            refExpressionErrors.doubleProtoLoc = key.loc.start;\n          }\n        } else {\n          this.raise(Errors.DuplicateProto, key);\n        }\n      }\n\n      return true;\n    }\n\n    return sawProto;\n  }\n\n  shouldExitDescending(\n    expr: N.Expression | N.PrivateName,\n    potentialArrowAt: number,\n  ): expr is N.ArrowFunctionExpression {\n    return (\n      expr.type === \"ArrowFunctionExpression\" &&\n      this.offsetToSourcePos(expr.start) === potentialArrowAt\n    );\n  }\n\n  // Convenience method to parse an Expression only\n  getExpression(this: Parser): N.Expression & N.ParserOutput {\n    this.enterInitialScopes();\n    this.nextToken();\n    if (this.match(tt.eof)) {\n      throw this.raise(Errors.ParseExpressionEmptyInput, this.state.startLoc);\n    }\n    const expr = this.parseExpression() as N.Expression & N.ParserOutput;\n    if (!this.match(tt.eof)) {\n      throw this.raise(Errors.ParseExpressionExpectsEOF, this.state.startLoc, {\n        unexpected: this.input.codePointAt(this.state.start),\n      });\n    }\n    // Unlike parseTopLevel, we need to drain remaining commentStacks\n    // because the top level node is _not_ Program.\n    this.finalizeRemainingComments();\n    expr.comments = this.comments;\n    expr.errors = this.state.errors;\n    if (this.optionFlags & OptionFlags.Tokens) {\n      expr.tokens = this.tokens;\n    }\n    return expr;\n  }\n\n  // ### Expression parsing\n\n  // These nest, from the most general expression type at the top to\n  // 'atomic', nondivisible expression types at the bottom. Most of\n  // the functions will simply let the function (s) below them parse,\n  // and, *if* the syntactic construct they handle is present, wrap\n  // the AST node that the inner parser gave them in another node.\n\n  // Parse a full expression.\n  // - `disallowIn`\n  //   is used to forbid the `in` operator (in for loops initialization expressions)\n  //   When `disallowIn` is true, the production parameter [In] is not present.\n\n  // - `refExpressionErrors `\n  //   provides reference for storing '=' operator inside shorthand\n  //   property assignment in contexts where both object expression\n  //   and object pattern might appear (so it's possible to raise\n  //   delayed syntax error at correct position).\n\n  parseExpression(\n    this: Parser,\n    disallowIn?: boolean,\n    refExpressionErrors?: ExpressionErrors,\n  ): N.Expression {\n    if (disallowIn) {\n      return this.disallowInAnd(() =>\n        this.parseExpressionBase(refExpressionErrors),\n      );\n    }\n    return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors));\n  }\n\n  // https://tc39.es/ecma262/#prod-Expression\n  parseExpressionBase(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    const expr = this.parseMaybeAssign(refExpressionErrors);\n    if (this.match(tt.comma)) {\n      const node = this.startNodeAt<N.SequenceExpression>(startLoc);\n      node.expressions = [expr];\n      while (this.eat(tt.comma)) {\n        node.expressions.push(this.parseMaybeAssign(refExpressionErrors));\n      }\n      this.toReferencedList(node.expressions);\n      return this.finishNode(node, \"SequenceExpression\");\n    }\n    return expr;\n  }\n\n  // Set [~In] parameter for assignment expression\n  parseMaybeAssignDisallowIn(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n    afterLeftParse?: Function,\n  ) {\n    return this.disallowInAnd(() =>\n      this.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n    );\n  }\n\n  // Set [+In] parameter for assignment expression\n  parseMaybeAssignAllowIn(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n    afterLeftParse?: Function,\n  ) {\n    return this.allowInAnd(() =>\n      this.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n    );\n  }\n\n  // This method is only used by\n  // the typescript and flow plugins.\n  setOptionalParametersError(refExpressionErrors: ExpressionErrors) {\n    refExpressionErrors.optionalParametersLoc = this.state.startLoc;\n  }\n\n  // Parse an assignment expression. This includes applications of\n  // operators like `+=`.\n  // https://tc39.es/ecma262/#prod-AssignmentExpression\n  parseMaybeAssign(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n    afterLeftParse?: Function,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    const isYield = this.isContextual(tt._yield);\n    if (isYield) {\n      if (this.prodParam.hasYield) {\n        this.next();\n        let left = this.parseYield(startLoc);\n        if (afterLeftParse) {\n          left = afterLeftParse.call(this, left, startLoc);\n        }\n        return left;\n      }\n    }\n\n    let ownExpressionErrors;\n    if (refExpressionErrors) {\n      ownExpressionErrors = false;\n    } else {\n      refExpressionErrors = new ExpressionErrors();\n      ownExpressionErrors = true;\n    }\n    const { type } = this.state;\n\n    if (type === tt.parenL || tokenIsIdentifier(type)) {\n      this.state.potentialArrowAt = this.state.start;\n    }\n\n    let left = this.parseMaybeConditional(refExpressionErrors);\n    if (afterLeftParse) {\n      left = afterLeftParse.call(this, left, startLoc);\n    }\n    if (tokenIsAssignment(this.state.type)) {\n      const node = this.startNodeAt<N.AssignmentExpression>(startLoc);\n      const operator = this.state.value;\n      node.operator = operator;\n\n      if (this.match(tt.eq)) {\n        this.toAssignable(left, /* isLHS */ true);\n        node.left = left;\n\n        const startIndex = startLoc.index;\n        if (\n          refExpressionErrors.doubleProtoLoc != null &&\n          refExpressionErrors.doubleProtoLoc.index >= startIndex\n        ) {\n          refExpressionErrors.doubleProtoLoc = null; // reset because double __proto__ is valid in assignment expression\n        }\n        if (\n          refExpressionErrors.shorthandAssignLoc != null &&\n          refExpressionErrors.shorthandAssignLoc.index >= startIndex\n        ) {\n          refExpressionErrors.shorthandAssignLoc = null; // reset because shorthand default was used correctly\n        }\n        if (\n          refExpressionErrors.privateKeyLoc != null &&\n          refExpressionErrors.privateKeyLoc.index >= startIndex\n        ) {\n          this.checkDestructuringPrivate(refExpressionErrors);\n          refExpressionErrors.privateKeyLoc = null; // reset because `({ #x: x })` is an assignable pattern\n        }\n        if (\n          refExpressionErrors.voidPatternLoc != null &&\n          refExpressionErrors.voidPatternLoc.index >= startIndex\n        ) {\n          refExpressionErrors.voidPatternLoc = null;\n        }\n      } else {\n        node.left = left as unknown as N.Assignable; // checked a few lines further down\n      }\n\n      this.next();\n      node.right = this.parseMaybeAssign();\n      this.checkLVal(left, this.finishNode(node, \"AssignmentExpression\"));\n      // @ts-expect-error todo(flow->ts) improve node types\n      return node;\n    } else if (ownExpressionErrors) {\n      this.checkExpressionErrors(refExpressionErrors, true);\n    }\n\n    if (isYield) {\n      const { type } = this.state;\n      const startsExpr = this.hasPlugin(\"v8intrinsic\")\n        ? tokenCanStartExpression(type)\n        : tokenCanStartExpression(type) && !this.match(tt.modulo);\n      if (startsExpr && !this.isAmbiguousPrefixOrIdentifier()) {\n        this.raiseOverwrite(Errors.YieldNotInGeneratorFunction, startLoc);\n        return this.parseYield(startLoc);\n      }\n    }\n\n    return left;\n  }\n\n  // Parse a ternary conditional (`?:`) operator.\n  // https://tc39.es/ecma262/#prod-ConditionalExpression\n\n  parseMaybeConditional(\n    this: Parser,\n    refExpressionErrors: ExpressionErrors,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    const potentialArrowAt = this.state.potentialArrowAt;\n    const expr = this.parseExprOps(refExpressionErrors);\n\n    if (this.shouldExitDescending(expr, potentialArrowAt)) {\n      return expr;\n    }\n\n    return this.parseConditional(expr, startLoc, refExpressionErrors);\n  }\n\n  parseConditional(\n    this: Parser,\n    expr: N.Expression,\n    startLoc: Position,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.Expression {\n    if (this.eat(tt.question)) {\n      const node = this.startNodeAt<N.ConditionalExpression>(startLoc);\n      node.test = expr;\n      node.consequent = this.parseMaybeAssignAllowIn();\n      this.expect(tt.colon);\n      node.alternate = this.parseMaybeAssign();\n      return this.finishNode(node, \"ConditionalExpression\");\n    }\n    return expr;\n  }\n\n  parseMaybeUnaryOrPrivate(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors,\n  ): N.Expression | N.PrivateName {\n    return this.match(tt.privateName)\n      ? this.parsePrivateName()\n      : this.parseMaybeUnary(refExpressionErrors);\n  }\n\n  // Start the precedence parser.\n  // https://tc39.es/ecma262/#prod-ShortCircuitExpression\n\n  parseExprOps(\n    this: Parser,\n    refExpressionErrors: ExpressionErrors,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    const potentialArrowAt = this.state.potentialArrowAt;\n    const expr = this.parseMaybeUnaryOrPrivate(refExpressionErrors);\n\n    if (this.shouldExitDescending(expr, potentialArrowAt)) {\n      return expr;\n    }\n\n    return this.parseExprOp(expr, startLoc, -1);\n  }\n\n  // Parse binary operators with the operator precedence parsing\n  // algorithm. `left` is the left-hand side of the operator.\n  // `minPrec` provides context that allows the function to stop and\n  // defer further parser to one of its callers when it encounters an\n  // operator that has a lower precedence than the set it is parsing.\n\n  parseExprOp(\n    this: Parser,\n    left: N.Expression | N.PrivateName,\n    leftStartLoc: Position,\n    minPrec: number,\n  ): N.Expression {\n    if (this.isPrivateName(left)) {\n      // https://tc39.es/ecma262/#prod-RelationalExpression\n      // RelationalExpression [In, Yield, Await]\n      //   [+In] PrivateIdentifier in ShiftExpression[?Yield, ?Await]\n\n      const value = this.getPrivateNameSV(left);\n\n      if (\n        minPrec >= tokenOperatorPrecedence(tt._in) ||\n        !this.prodParam.hasIn ||\n        !this.match(tt._in)\n      ) {\n        this.raise(Errors.PrivateInExpectedIn, left, {\n          identifierName: value,\n        });\n      }\n\n      this.classScope.usePrivateName(value, left.loc.start);\n    }\n\n    const op = this.state.type;\n    if (tokenIsOperator(op) && (this.prodParam.hasIn || !this.match(tt._in))) {\n      let prec = tokenOperatorPrecedence(op);\n      if (prec > minPrec) {\n        if (op === tt.pipeline) {\n          this.expectPlugin(\"pipelineOperator\");\n          if (this.state.inFSharpPipelineDirectBody) {\n            // PrivateName must be followed by `in`, but we have `|>`\n            return left as N.Expression;\n          }\n          this.checkPipelineAtInfixOperator(left as N.Expression, leftStartLoc);\n        }\n        const node = this.startNodeAt<N.LogicalExpression | N.BinaryExpression>(\n          leftStartLoc,\n        );\n        node.left = left;\n        node.operator = this.state.value;\n\n        const logical = op === tt.logicalOR || op === tt.logicalAND;\n        const coalesce = op === tt.nullishCoalescing;\n\n        if (coalesce) {\n          // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions.\n          // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error.\n          prec = tokenOperatorPrecedence(tt.logicalAND);\n        }\n\n        this.next();\n\n        if (\n          !process.env.BABEL_8_BREAKING &&\n          op === tt.pipeline &&\n          // @ts-expect-error: Only in Babel 7\n          this.hasPlugin([\"pipelineOperator\", { proposal: \"minimal\" }])\n        ) {\n          if (this.state.type === tt._await && this.prodParam.hasAwait) {\n            throw this.raise(\n              Errors.UnexpectedAwaitAfterPipelineBody,\n              this.state.startLoc,\n            );\n          }\n        }\n\n        node.right = this.parseExprOpRightExpr(op, prec);\n        const finishedNode = this.finishNode(\n          node,\n          logical || coalesce ? \"LogicalExpression\" : \"BinaryExpression\",\n        );\n        /* this check is for all ?? operators\n         * a ?? b && c for this example\n         * when op is coalesce and nextOp is logical (&&), throw at the pos of nextOp that it can not be mixed.\n         * Symmetrically it also throws when op is logical and nextOp is coalesce\n         */\n        const nextOp = this.state.type;\n        if (\n          (coalesce && (nextOp === tt.logicalOR || nextOp === tt.logicalAND)) ||\n          (logical && nextOp === tt.nullishCoalescing)\n        ) {\n          throw this.raise(\n            Errors.MixingCoalesceWithLogical,\n            this.state.startLoc,\n          );\n        }\n\n        return this.parseExprOp(finishedNode, leftStartLoc, minPrec);\n      }\n    }\n    // PrivateName is followed by `in` and handled by the previous if statement\n    return left as N.Expression;\n  }\n\n  // Helper function for `parseExprOp`. Parse the right-hand side of binary-\n  // operator expressions, then apply any operator-specific functions.\n\n  parseExprOpRightExpr(\n    this: Parser,\n    op: TokenType,\n    prec: number,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    switch (op) {\n      case tt.pipeline:\n        switch (this.getPluginOption(\"pipelineOperator\", \"proposal\")) {\n          case \"hack\":\n            return this.withTopicBindingContext(() => {\n              return this.parseHackPipeBody();\n            });\n\n          case \"fsharp\":\n            return this.withSoloAwaitPermittingContext(() => {\n              return this.parseFSharpPipelineBody(prec);\n            });\n        }\n\n        if (\n          !process.env.BABEL_8_BREAKING &&\n          // @ts-expect-error: Babel 7 only\n          this.getPluginOption(\"pipelineOperator\", \"proposal\") === \"smart\"\n        ) {\n          return this.withTopicBindingContext(() => {\n            if (this.prodParam.hasYield && this.isContextual(tt._yield)) {\n              throw this.raise(Errors.PipeBodyIsTighter, this.state.startLoc);\n            }\n            return this.parseSmartPipelineBodyInStyle(\n              this.parseExprOpBaseRightExpr(op, prec),\n              startLoc,\n            );\n          });\n        }\n\n      // Falls through.\n      default:\n        return this.parseExprOpBaseRightExpr(op, prec);\n    }\n  }\n\n  // Helper function for `parseExprOpRightExpr`. Parse the right-hand side of\n  // binary-operator expressions without applying any operator-specific functions.\n\n  parseExprOpBaseRightExpr(\n    this: Parser,\n    op: TokenType,\n    prec: number,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n\n    return this.parseExprOp(\n      this.parseMaybeUnaryOrPrivate(),\n      startLoc,\n      tokenIsRightAssociative(op) ? prec - 1 : prec,\n    );\n  }\n\n  parseHackPipeBody(this: Parser): N.Expression {\n    const { startLoc } = this.state;\n    const body = this.parseMaybeAssign();\n    const requiredParentheses = UnparenthesizedPipeBodyDescriptions.has(\n      // @ts-expect-error TS2345: Argument of type 'string' is not assignable to parameter of type '\"ArrowFunctionExpression\" | \"YieldExpression\" | \"AssignmentExpression\" | \"ConditionalExpression\"'.\n      body.type,\n    );\n\n    // TODO: Check how to handle type casts in Flow and TS once they are supported\n    if (requiredParentheses && !body.extra?.parenthesized) {\n      this.raise(Errors.PipeUnparenthesizedBody, startLoc, {\n        type: body.type as UnparenthesizedPipeBodyTypes,\n      });\n    }\n    if (!this.topicReferenceWasUsedInCurrentContext()) {\n      // A Hack pipe body must use the topic reference at least once.\n      this.raise(Errors.PipeTopicUnused, startLoc);\n    }\n\n    return body;\n  }\n\n  checkExponentialAfterUnary(\n    node: N.AwaitExpression | Undone<N.UnaryExpression>,\n  ) {\n    if (this.match(tt.exponent)) {\n      this.raise(Errors.UnexpectedTokenUnaryExponentiation, node.argument);\n    }\n  }\n\n  // Parse unary operators, both prefix and postfix.\n  // https://tc39.es/ecma262/#prod-UnaryExpression\n  parseMaybeUnary(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n    sawUnary?: boolean,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    const isAwait = this.isContextual(tt._await);\n\n    if (isAwait && this.recordAwaitIfAllowed()) {\n      this.next();\n      const expr = this.parseAwait(startLoc);\n      if (!sawUnary) this.checkExponentialAfterUnary(expr);\n      return expr;\n    }\n    const update = this.match(tt.incDec);\n    const node = this.startNode<N.UnaryExpression | N.UpdateExpression>();\n    if (tokenIsPrefix(this.state.type)) {\n      node.operator = this.state.value;\n      node.prefix = true;\n\n      if (this.match(tt._throw)) {\n        this.expectPlugin(\"throwExpressions\");\n      }\n      const isDelete = this.match(tt._delete);\n      this.next();\n\n      node.argument = this.parseMaybeUnary(null, true);\n\n      this.checkExpressionErrors(refExpressionErrors, true);\n\n      if (this.state.strict && isDelete) {\n        const arg = node.argument;\n\n        if (arg.type === \"Identifier\") {\n          this.raise(Errors.StrictDelete, node);\n        } else if (this.hasPropertyAsPrivateName(arg)) {\n          this.raise(Errors.DeletePrivateField, node);\n        }\n      }\n\n      if (!update) {\n        if (!sawUnary) {\n          this.checkExponentialAfterUnary(node as Undone<N.UnaryExpression>);\n        }\n        return this.finishNode(node, \"UnaryExpression\");\n      }\n    }\n\n    const expr = this.parseUpdate(\n      // @ts-expect-error using \"Undone\" node as \"done\"\n      node,\n      update,\n      refExpressionErrors,\n    );\n\n    if (isAwait) {\n      const { type } = this.state;\n      const startsExpr = this.hasPlugin(\"v8intrinsic\")\n        ? tokenCanStartExpression(type)\n        : tokenCanStartExpression(type) && !this.match(tt.modulo);\n      if (startsExpr && !this.isAmbiguousPrefixOrIdentifier()) {\n        this.raiseOverwrite(Errors.AwaitNotInAsyncContext, startLoc);\n        return this.parseAwait(startLoc);\n      }\n    }\n\n    return expr;\n  }\n\n  // https://tc39.es/ecma262/#prod-UpdateExpression\n  parseUpdate(\n    this: Parser,\n    node: N.Expression,\n    update: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.Expression {\n    if (update) {\n      const updateExpressionNode = node as Undone<N.UpdateExpression>;\n      this.checkLVal(\n        updateExpressionNode.argument,\n        this.finishNode(updateExpressionNode, \"UpdateExpression\"),\n      );\n      return node;\n    }\n\n    const startLoc = this.state.startLoc;\n    let expr = this.parseExprSubscripts(refExpressionErrors);\n    if (this.checkExpressionErrors(refExpressionErrors, false)) return expr;\n    while (tokenIsPostfix(this.state.type) && !this.canInsertSemicolon()) {\n      const node = this.startNodeAt<N.UpdateExpression>(startLoc);\n      node.operator = this.state.value;\n      node.prefix = false;\n      node.argument = expr;\n      this.next();\n      this.checkLVal(expr, (expr = this.finishNode(node, \"UpdateExpression\")));\n    }\n    return expr;\n  }\n\n  // Parse call, dot, and `[]`-subscript expressions.\n  // https://tc39.es/ecma262/#prod-LeftHandSideExpression\n  parseExprSubscripts(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    const potentialArrowAt = this.state.potentialArrowAt;\n    const expr = this.parseExprAtom(refExpressionErrors);\n\n    if (this.shouldExitDescending(expr, potentialArrowAt)) {\n      return expr;\n    }\n\n    return this.parseSubscripts(expr, startLoc);\n  }\n\n  parseSubscripts(\n    this: Parser,\n    base: N.Expression,\n    startLoc: Position,\n    noCalls?: boolean | null,\n  ): N.Expression {\n    const state = {\n      optionalChainMember: false,\n      maybeAsyncArrow: this.atPossibleAsyncArrow(base),\n      stop: false,\n    };\n    do {\n      base = this.parseSubscript(base, startLoc, noCalls, state);\n\n      // After parsing a subscript, this isn't \"async\" for sure.\n      state.maybeAsyncArrow = false;\n    } while (!state.stop);\n    return base;\n  }\n\n  /**\n   * @param state Set 'state.stop = true' to indicate that we should stop parsing subscripts.\n   *   state.optionalChainMember to indicate that the member is currently in OptionalChain\n   */\n  parseSubscript(\n    this: Parser,\n    base: N.Expression,\n    startLoc: Position,\n    noCalls: boolean | undefined | null,\n    state: N.ParseSubscriptState,\n  ): N.Expression {\n    const { type } = this.state;\n    if (!noCalls && type === tt.doubleColon) {\n      return this.parseBind(base, startLoc, noCalls, state);\n    } else if (tokenIsTemplate(type)) {\n      return this.parseTaggedTemplateExpression(base, startLoc, state);\n    }\n\n    let optional = false;\n\n    if (type === tt.questionDot) {\n      if (noCalls) {\n        this.raise(Errors.OptionalChainingNoNew, this.state.startLoc);\n        if (this.lookaheadCharCode() === charCodes.leftParenthesis) {\n          // stop at `?.` when parsing `new a?.()`\n          return this.stopParseSubscript(base, state);\n        }\n      }\n      state.optionalChainMember = optional = true;\n      this.next();\n    }\n\n    if (!noCalls && this.match(tt.parenL)) {\n      return this.parseCoverCallAndAsyncArrowHead(\n        base,\n        startLoc,\n        state,\n        optional,\n      );\n    } else {\n      const computed = this.eat(tt.bracketL);\n      if (computed || optional || this.eat(tt.dot)) {\n        return this.parseMember(base, startLoc, state, computed, optional);\n      } else {\n        return this.stopParseSubscript(base, state);\n      }\n    }\n  }\n\n  stopParseSubscript(\n    this: Parser,\n    base: N.Expression,\n    state: N.ParseSubscriptState,\n  ) {\n    state.stop = true;\n    return base;\n  }\n\n  // base[?Yield, ?Await] [ Expression[+In, ?Yield, ?Await] ]\n  // base[?Yield, ?Await] . IdentifierName\n  // base[?Yield, ?Await] . PrivateIdentifier\n  //   where `base` is one of CallExpression, MemberExpression and OptionalChain\n  parseMember(\n    this: Parser,\n    base: N.Expression,\n    startLoc: Position,\n    state: N.ParseSubscriptState,\n    computed: boolean,\n    optional: boolean,\n  ): N.OptionalMemberExpression | N.MemberExpression {\n    const node = this.startNodeAt<\n      N.OptionalMemberExpression | N.MemberExpression\n    >(startLoc);\n    node.object = base;\n    node.computed = computed;\n    if (computed) {\n      node.property = this.parseExpression();\n      this.expect(tt.bracketR);\n    } else if (this.match(tt.privateName)) {\n      if (base.type === \"Super\") {\n        this.raise(Errors.SuperPrivateField, startLoc);\n      }\n      this.classScope.usePrivateName(this.state.value, this.state.startLoc);\n      node.property = this.parsePrivateName();\n    } else {\n      node.property = this.parseIdentifier(true);\n    }\n\n    if (state.optionalChainMember) {\n      (node as Undone<N.OptionalMemberExpression>).optional = optional;\n      return this.finishNode(node, \"OptionalMemberExpression\");\n    } else {\n      return this.finishNode(node, \"MemberExpression\");\n    }\n  }\n\n  // https://github.com/tc39/proposal-bind-operator#syntax\n  parseBind(\n    this: Parser,\n    base: N.Expression,\n    startLoc: Position,\n    noCalls: boolean | undefined | null,\n    state: N.ParseSubscriptState,\n  ): N.Expression {\n    const node = this.startNodeAt<N.BindExpression>(startLoc);\n    node.object = base;\n    this.next(); // eat '::'\n    node.callee = this.parseNoCallExpr();\n    state.stop = true;\n    return this.parseSubscripts(\n      this.finishNode(node, \"BindExpression\"),\n      startLoc,\n      noCalls,\n    );\n  }\n\n  // https://tc39.es/ecma262/#prod-CoverCallExpressionAndAsyncArrowHead\n  // CoverCallExpressionAndAsyncArrowHead\n  // CallExpression[?Yield, ?Await] Arguments[?Yield, ?Await]\n  // OptionalChain[?Yield, ?Await] Arguments[?Yield, ?Await]\n  parseCoverCallAndAsyncArrowHead(\n    this: Parser,\n    base: N.Expression,\n    startLoc: Position,\n    state: N.ParseSubscriptState,\n    optional: boolean,\n  ): N.Expression {\n    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n    let refExpressionErrors: ExpressionErrors | null = null;\n\n    this.state.maybeInArrowParameters = true;\n    this.next(); // eat `(`\n\n    const node = this.startNodeAt<N.CallExpression | N.OptionalCallExpression>(\n      startLoc,\n    );\n    node.callee = base;\n    const { maybeAsyncArrow, optionalChainMember } = state;\n\n    if (maybeAsyncArrow) {\n      this.expressionScope.enter(newAsyncArrowScope());\n      refExpressionErrors = new ExpressionErrors();\n    }\n\n    if (optionalChainMember) {\n      (node as Undone<N.OptionalCallExpression>).optional = optional;\n    }\n\n    if (optional) {\n      node.arguments = this.parseCallExpressionArguments();\n    } else {\n      node.arguments = this.parseCallExpressionArguments(\n        base.type !== \"Super\",\n        node,\n        refExpressionErrors,\n      );\n    }\n    let finishedNode:\n      | N.CallExpression\n      | N.OptionalCallExpression\n      | N.ArrowFunctionExpression = this.finishCallExpression(\n      node,\n      optionalChainMember,\n    );\n\n    if (maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) {\n      /*:: invariant(refExpressionErrors != null) */\n      state.stop = true;\n      this.checkDestructuringPrivate(refExpressionErrors);\n      this.expressionScope.validateAsPattern();\n      this.expressionScope.exit();\n      finishedNode = this.parseAsyncArrowFromCallExpression(\n        this.startNodeAt<N.ArrowFunctionExpression>(startLoc),\n        finishedNode as N.CallExpression,\n      );\n    } else {\n      if (maybeAsyncArrow) {\n        this.checkExpressionErrors(refExpressionErrors, true);\n        this.expressionScope.exit();\n      }\n      this.toReferencedArguments(finishedNode);\n    }\n\n    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n\n    return finishedNode;\n  }\n\n  toReferencedArguments(\n    node: N.CallExpression | N.OptionalCallExpression,\n    isParenthesizedExpr?: boolean,\n  ) {\n    this.toReferencedListDeep(node.arguments, isParenthesizedExpr);\n  }\n\n  // MemberExpression [?Yield, ?Await] TemplateLiteral[?Yield, ?Await, +Tagged]\n  // CallExpression [?Yield, ?Await] TemplateLiteral[?Yield, ?Await, +Tagged]\n  parseTaggedTemplateExpression(\n    this: Parser,\n    base: N.Expression,\n    startLoc: Position,\n    state: N.ParseSubscriptState,\n  ): N.TaggedTemplateExpression {\n    const node = this.startNodeAt<N.TaggedTemplateExpression>(startLoc);\n    node.tag = base;\n    node.quasi = this.parseTemplate(true);\n    if (state.optionalChainMember) {\n      this.raise(Errors.OptionalChainingNoTemplate, startLoc);\n    }\n    return this.finishNode(node, \"TaggedTemplateExpression\");\n  }\n\n  atPossibleAsyncArrow(base: N.Expression): boolean {\n    return (\n      base.type === \"Identifier\" &&\n      base.name === \"async\" &&\n      this.state.lastTokEndLoc.index === base.end &&\n      !this.canInsertSemicolon() &&\n      // check there are no escape sequences, such as \\u{61}sync\n      base.end - base.start === 5 &&\n      this.offsetToSourcePos(base.start) === this.state.potentialArrowAt\n    );\n  }\n\n  finishCallExpression<T extends N.CallExpression | N.OptionalCallExpression>(\n    node: Undone<T>,\n    optional: boolean,\n  ): T {\n    if (node.callee.type === \"Import\") {\n      if (node.arguments.length === 0 || node.arguments.length > 2) {\n        this.raise(Errors.ImportCallArity, node);\n      } else {\n        for (const arg of node.arguments) {\n          if (arg.type === \"SpreadElement\") {\n            this.raise(Errors.ImportCallSpreadArgument, arg);\n          }\n        }\n      }\n    }\n    return this.finishNode(\n      node,\n      optional ? \"OptionalCallExpression\" : \"CallExpression\",\n    );\n  }\n\n  parseCallExpressionArguments(\n    this: Parser,\n    allowPlaceholder?: boolean,\n    nodeForExtra?: Undone<N.Node> | null,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): Array<N.Expression> {\n    const elts: N.Expression[] = [];\n    let first = true;\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.inFSharpPipelineDirectBody = false;\n\n    while (!this.eat(tt.parenR)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(tt.comma);\n        if (this.match(tt.parenR)) {\n          if (nodeForExtra) {\n            this.addTrailingCommaExtraToNode(nodeForExtra);\n          }\n          this.next();\n          break;\n        }\n      }\n\n      elts.push(\n        this.parseExprListItem(\n          tt.parenR,\n          false,\n          refExpressionErrors,\n          allowPlaceholder,\n        ),\n      );\n    }\n\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n\n    return elts;\n  }\n\n  shouldParseAsyncArrow(): boolean {\n    return this.match(tt.arrow) && !this.canInsertSemicolon();\n  }\n\n  parseAsyncArrowFromCallExpression(\n    this: Parser,\n    node: Undone<N.ArrowFunctionExpression>,\n    call: N.CallExpression,\n  ): N.ArrowFunctionExpression {\n    this.resetPreviousNodeTrailingComments(call);\n    this.expect(tt.arrow);\n    this.parseArrowExpression(\n      node,\n      call.arguments,\n      true,\n      call.extra?.trailingCommaLoc,\n    );\n    // mark inner comments of `async()` as inner comments of `async () =>`\n    if (call.innerComments) {\n      setInnerComments(node, call.innerComments);\n    }\n    // mark trailing comments of `async` to be inner comments\n    if (call.callee.trailingComments) {\n      setInnerComments(node, call.callee.trailingComments);\n    }\n    return node as N.ArrowFunctionExpression;\n  }\n\n  // Parse a no-call expression (like argument of `new` or `::` operators).\n  // https://tc39.es/ecma262/#prod-MemberExpression\n  parseNoCallExpr(this: Parser): N.Expression {\n    const startLoc = this.state.startLoc;\n    return this.parseSubscripts(this.parseExprAtom(), startLoc, true);\n  }\n\n  // Parse an atomic expression — either a single token that is an\n  // expression, an expression started by a keyword like `function` or\n  // `new`, or an expression wrapped in punctuation like `()`, `[]`,\n  // or `{}`.\n\n  // https://tc39.es/ecma262/#prod-PrimaryExpression\n  // https://tc39.es/ecma262/#prod-AsyncArrowFunction\n  // PrimaryExpression\n  // Super\n  // Import\n  // AsyncArrowFunction\n\n  parseExprAtom(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.Expression {\n    let node;\n    let decorators: N.Decorator[] | null = null;\n\n    const { type } = this.state;\n    switch (type) {\n      case tt._super:\n        return this.parseSuper();\n\n      case tt._import:\n        node = this.startNode<N.MetaProperty | N.Import | N.ImportExpression>();\n        this.next();\n\n        if (this.match(tt.dot)) {\n          return this.parseImportMetaPropertyOrPhaseCall(\n            node as Undone<N.MetaProperty | N.ImportExpression>,\n          );\n        }\n\n        if (this.match(tt.parenL)) {\n          if (this.optionFlags & OptionFlags.CreateImportExpressions) {\n            return this.parseImportCall(node as Undone<N.ImportExpression>);\n          } else {\n            return this.finishNode(node, \"Import\");\n          }\n        } else {\n          this.raise(Errors.UnsupportedImport, this.state.lastTokStartLoc);\n          return this.finishNode(node, \"Import\");\n        }\n\n      case tt._this:\n        node = this.startNode<N.ThisExpression>();\n        this.next();\n        return this.finishNode(node, \"ThisExpression\");\n\n      case tt._do: {\n        return this.parseDo(this.startNode(), false);\n      }\n\n      case tt.slash:\n      case tt.slashAssign: {\n        this.readRegexp();\n        return this.parseRegExpLiteral(this.state.value);\n      }\n\n      case tt.num:\n        return this.parseNumericLiteral(this.state.value);\n\n      case tt.bigint:\n        return this.parseBigIntLiteral(this.state.value);\n\n      case tt.string:\n        return this.parseStringLiteral(this.state.value);\n\n      case tt._null:\n        return this.parseNullLiteral();\n\n      case tt._true:\n        return this.parseBooleanLiteral(true);\n      case tt._false:\n        return this.parseBooleanLiteral(false);\n\n      case tt.parenL: {\n        const canBeArrow = this.state.potentialArrowAt === this.state.start;\n        return this.parseParenAndDistinguishExpression(canBeArrow);\n      }\n\n      case tt.bracketL: {\n        return this.parseArrayLike(\n          tt.bracketR,\n          /* canBePattern */ true,\n          /* isTuple */ false,\n          refExpressionErrors,\n        );\n      }\n      case tt.braceL: {\n        return this.parseObjectLike(\n          tt.braceR,\n          /* isPattern */ false,\n          /* isRecord */ false,\n          refExpressionErrors,\n        );\n      }\n      case tt._function:\n        return this.parseFunctionOrFunctionSent();\n\n      case tt.at:\n        decorators = this.parseDecorators();\n      // fall through\n      case tt._class:\n        return this.parseClass(\n          this.maybeTakeDecorators(\n            decorators,\n            this.startNode<N.ClassExpression>(),\n          ),\n          false,\n        );\n\n      case tt._new:\n        return this.parseNewOrNewTarget();\n\n      case tt.templateNonTail:\n      case tt.templateTail:\n        return this.parseTemplate(false);\n\n      // BindExpression[Yield]\n      //   :: MemberExpression[?Yield]\n      case tt.doubleColon: {\n        node = this.startNode<N.BindExpression>();\n        this.next();\n        node.object = null;\n        const callee = (node.callee = this.parseNoCallExpr());\n        if (callee.type === \"MemberExpression\") {\n          return this.finishNode(node, \"BindExpression\");\n        } else {\n          throw this.raise(Errors.UnsupportedBind, callee);\n        }\n      }\n\n      case tt.privateName: {\n        // Standalone private names are only allowed in \"#x in obj\"\n        // expressions, and they are directly handled by callers of\n        // parseExprOp. If we reach this, the input is always invalid.\n        // We can throw a better error message and recover, rather than\n        // just throwing \"Unexpected token\" (which is the default\n        // behavior of this big switch statement).\n        this.raise(Errors.PrivateInExpectedIn, this.state.startLoc, {\n          identifierName: this.state.value,\n        });\n        return this.parsePrivateName() as unknown as N.Expression;\n      }\n\n      case tt.moduloAssign: {\n        return this.parseTopicReferenceThenEqualsSign(tt.modulo, \"%\");\n      }\n\n      case tt.xorAssign: {\n        return this.parseTopicReferenceThenEqualsSign(tt.bitwiseXOR, \"^\");\n      }\n\n      case tt.doubleCaret:\n      case tt.doubleAt: {\n        return this.parseTopicReference(\"hack\");\n      }\n\n      case tt.bitwiseXOR:\n      case tt.modulo:\n      case tt.hash: {\n        const pipeProposal = this.getPluginOption(\n          \"pipelineOperator\",\n          \"proposal\",\n        );\n\n        if (pipeProposal) {\n          return this.parseTopicReference(pipeProposal);\n        }\n        this.unexpected();\n        break;\n      }\n\n      case tt.lt: {\n        const lookaheadCh = this.input.codePointAt(this.nextTokenStart());\n        if (\n          isIdentifierStart(lookaheadCh) || // Element/Type Parameter <foo>\n          lookaheadCh === charCodes.greaterThan // Fragment <>\n        ) {\n          this.expectOnePlugin([\"jsx\", \"flow\", \"typescript\"]);\n        } else {\n          this.unexpected();\n        }\n        break;\n      }\n\n      default:\n        if (!process.env.BABEL_8_BREAKING) {\n          if (type === tt.decimal) {\n            return this.parseDecimalLiteral(this.state.value);\n          } else if (type === tt.bracketBarL || type === tt.bracketHashL) {\n            return this.parseArrayLike(\n              this.state.type === tt.bracketBarL ? tt.bracketBarR : tt.bracketR,\n              /* canBePattern */ false,\n              /* isTuple */ true,\n            );\n          } else if (type === tt.braceBarL || type === tt.braceHashL) {\n            return this.parseObjectLike(\n              this.state.type === tt.braceBarL ? tt.braceBarR : tt.braceR,\n              /* isPattern */ false,\n              /* isRecord */ true,\n            );\n          }\n        }\n\n        if (tokenIsIdentifier(type)) {\n          if (\n            this.isContextual(tt._module) &&\n            this.lookaheadInLineCharCode() === charCodes.leftCurlyBrace\n          ) {\n            return this.parseModuleExpression();\n          }\n          const canBeArrow = this.state.potentialArrowAt === this.state.start;\n          const containsEsc = this.state.containsEsc;\n          const id = this.parseIdentifier();\n\n          if (\n            !containsEsc &&\n            id.name === \"async\" &&\n            !this.canInsertSemicolon()\n          ) {\n            const { type } = this.state;\n            if (type === tt._function) {\n              this.resetPreviousNodeTrailingComments(id);\n              this.next();\n              return this.parseAsyncFunctionExpression(\n                this.startNodeAtNode(id),\n              );\n            } else if (tokenIsIdentifier(type)) {\n              // If the next token begins with \"=\", commit to parsing an async\n              // arrow function. (Peeking ahead for \"=\" lets us avoid a more\n              // expensive full-token lookahead on this common path.)\n              if (this.lookaheadCharCode() === charCodes.equalsTo) {\n                // although `id` is not used in async arrow unary function,\n                // we don't need to reset `async`'s trailing comments because\n                // it will be attached to the upcoming async arrow binding identifier\n                return this.parseAsyncArrowUnaryFunction(\n                  this.startNodeAtNode(id),\n                );\n              } else {\n                // Otherwise, treat \"async\" as an identifier and let calling code\n                // deal with the current tt.name token.\n                return id;\n              }\n            } else if (type === tt._do) {\n              this.resetPreviousNodeTrailingComments(id);\n              return this.parseDo(this.startNodeAtNode(id), true);\n            }\n          }\n\n          if (\n            canBeArrow &&\n            this.match(tt.arrow) &&\n            !this.canInsertSemicolon()\n          ) {\n            this.next();\n            return this.parseArrowExpression(\n              this.startNodeAtNode(id),\n              [id],\n              false,\n            );\n          }\n\n          return id;\n        } else {\n          this.unexpected();\n        }\n    }\n  }\n\n  // This helper method should only be called\n  // when the parser has reached a potential Hack pipe topic token\n  // that is followed by an equals sign.\n  // See <https://github.com/js-choi/proposal-hack-pipes>.\n  // If we find ^= or %= in an expression position\n  // (i.e., the tt.moduloAssign or tt.xorAssign token types), and if the\n  // Hack-pipes proposal is active with ^ or % as its topicToken, then the ^ or\n  // % could be the topic token (e.g., in x |> ^==y or x |> ^===y), and so we\n  // reparse the current token as ^ or %.\n  // Otherwise, this throws an unexpected-token error.\n  parseTopicReferenceThenEqualsSign(\n    topicTokenType: TokenType,\n    topicTokenValue: string,\n  ): N.Expression {\n    const pipeProposal = this.getPluginOption(\"pipelineOperator\", \"proposal\");\n\n    if (pipeProposal) {\n      // Set the most-recent token to be a topic token\n      // given by the tokenType and tokenValue.\n      // Now the next readToken() call (in parseTopicReference)\n      // will consume that “topic token”.\n      this.state.type = topicTokenType;\n      this.state.value = topicTokenValue;\n      // Rewind the tokenizer to the end of the “topic token”, so that the\n      // following token starts at the equals sign after that topic token.\n      this.state.pos--;\n      this.state.end--;\n      // This is safe to do since the preceding character was either ^ or %, and\n      // thus not a newline.\n      this.state.endLoc = createPositionWithColumnOffset(this.state.endLoc, -1);\n      // Now actually consume the topic token.\n      return this.parseTopicReference(pipeProposal);\n    } else {\n      this.unexpected();\n    }\n  }\n\n  // This helper method should only be called\n  // when the proposal-pipeline-operator plugin is active,\n  // and when the parser has reached a potential Hack pipe topic token.\n  // Although a pipe-operator proposal is assumed to be active,\n  // its configuration might not match the current token’s type.\n  // See <https://github.com/js-choi/proposal-hack-pipes>.\n  parseTopicReference(pipeProposal: string): N.Expression {\n    const node = this.startNode<N.TopicReference>();\n    const startLoc = this.state.startLoc;\n    const tokenType = this.state.type;\n\n    // Consume the current token.\n    this.next();\n\n    // If the pipe-operator plugin’s configuration matches the current token’s type,\n    // then this will return `node`, will have been finished as a topic reference.\n    // Otherwise, this will throw a `PipeTopicUnconfiguredToken` error.\n    return this.finishTopicReference(node, startLoc, pipeProposal, tokenType);\n  }\n\n  // This helper method attempts to finish the given `node`\n  // into a topic-reference node for the given `pipeProposal`.\n  // See <https://github.com/js-choi/proposal-hack-pipes>.\n  //\n  // The method assumes that any topic token was consumed before it was called.\n  //\n  // If the `pipelineOperator` plugin is active,\n  // and if the given `tokenType` matches the plugin’s configuration,\n  // then this method will return the finished `node`.\n  //\n  // If the `pipelineOperator` plugin is active,\n  // but if the given `tokenType` does not match the plugin’s configuration,\n  // then this method will throw a `PipeTopicUnconfiguredToken` error.\n  finishTopicReference<\n    T extends N.PipelinePrimaryTopicReference | N.TopicReference,\n  >(\n    node: Undone<T>,\n    startLoc: Position,\n    pipeProposal: string,\n    tokenType: TokenType,\n  ): T {\n    if (\n      this.testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType)\n    ) {\n      // The token matches the plugin’s configuration.\n      // The token is therefore a topic reference.\n\n      if (process.env.BABEL_8_BREAKING || pipeProposal === \"hack\") {\n        if (!this.topicReferenceIsAllowedInCurrentContext()) {\n          this.raise(Errors.PipeTopicUnbound, startLoc);\n        }\n\n        // Register the topic reference so that its pipe body knows\n        // that its topic was used at least once.\n        this.registerTopicReference();\n\n        return this.finishNode(node, \"TopicReference\");\n      } else {\n        // pipeProposal is \"smart\"\n\n        if (!this.topicReferenceIsAllowedInCurrentContext()) {\n          this.raise(Errors.PrimaryTopicNotAllowed, startLoc);\n        }\n        this.registerTopicReference();\n        return this.finishNode(node, \"PipelinePrimaryTopicReference\");\n      }\n    } else {\n      // The token does not match the plugin’s configuration.\n      throw this.raise(Errors.PipeTopicUnconfiguredToken, startLoc, {\n        token: tokenLabelName(tokenType),\n      });\n    }\n  }\n\n  // This helper method tests whether the given token type\n  // matches the pipelineOperator parser plugin’s configuration.\n  // If the active pipe proposal is Hack style,\n  // and if the given token is the same as the plugin configuration’s `topicToken`,\n  // then this is a valid topic reference.\n  // If the active pipe proposal is smart mix,\n  // then the topic token must always be `#`.\n  // If the active pipe proposal is neither (e.g., \"minimal\"(Babel 7) or \"fsharp\"),\n  // then an error is thrown.\n  testTopicReferenceConfiguration(\n    pipeProposal: string,\n    startLoc: Position,\n    tokenType: TokenType,\n  ): boolean {\n    switch (pipeProposal) {\n      case \"hack\": {\n        return this.hasPlugin([\n          \"pipelineOperator\",\n          {\n            // @ts-expect-error token must have a label\n            topicToken: tokenLabelName(tokenType),\n          },\n        ]);\n      }\n      case \"smart\":\n        return tokenType === tt.hash;\n      default:\n        throw this.raise(Errors.PipeTopicRequiresHackPipes, startLoc);\n    }\n  }\n\n  // async [no LineTerminator here] AsyncArrowBindingIdentifier[?Yield] [no LineTerminator here] => AsyncConciseBody[?In]\n  parseAsyncArrowUnaryFunction(\n    this: Parser,\n    node: Undone<N.ArrowFunctionExpression>,\n  ): N.ArrowFunctionExpression {\n    // We don't need to push a new ParameterDeclarationScope here since we are sure\n    // 1) it is an async arrow, 2) no biding pattern is allowed in params\n    this.prodParam.enter(functionFlags(true, this.prodParam.hasYield));\n    const params = [this.parseIdentifier()];\n    this.prodParam.exit();\n    if (this.hasPrecedingLineBreak()) {\n      this.raise(Errors.LineTerminatorBeforeArrow, this.state.curPosition());\n    }\n    this.expect(tt.arrow);\n    // let foo = async bar => {};\n    return this.parseArrowExpression(node, params, true);\n  }\n\n  // https://github.com/tc39/proposal-do-expressions\n  // https://github.com/tc39/proposal-async-do-expressions\n  parseDo(\n    this: Parser,\n    node: Undone<N.DoExpression>,\n    isAsync: boolean,\n  ): N.DoExpression {\n    this.expectPlugin(\"doExpressions\");\n    if (isAsync) {\n      this.expectPlugin(\"asyncDoExpressions\");\n    }\n    node.async = isAsync;\n    this.next(); // eat `do`\n    const oldLabels = this.state.labels;\n    this.state.labels = [];\n    if (isAsync) {\n      // AsyncDoExpression :\n      // async [no LineTerminator here] do Block[~Yield, +Await, ~Return]\n      this.prodParam.enter(ParamKind.PARAM_AWAIT);\n      node.body = this.parseBlock();\n      this.prodParam.exit();\n    } else {\n      node.body = this.parseBlock();\n    }\n\n    this.state.labels = oldLabels;\n    return this.finishNode(node, \"DoExpression\");\n  }\n\n  // Parse the `super` keyword\n  parseSuper(): N.Super {\n    const node = this.startNode<N.Super>();\n    this.next(); // eat `super`\n    if (\n      this.match(tt.parenL) &&\n      !this.scope.allowDirectSuper &&\n      !(this.optionFlags & OptionFlags.AllowSuperOutsideMethod)\n    ) {\n      this.raise(Errors.SuperNotAllowed, node);\n    } else if (\n      !this.scope.allowSuper &&\n      !(this.optionFlags & OptionFlags.AllowSuperOutsideMethod)\n    ) {\n      this.raise(Errors.UnexpectedSuper, node);\n    }\n\n    if (\n      !this.match(tt.parenL) &&\n      !this.match(tt.bracketL) &&\n      !this.match(tt.dot)\n    ) {\n      this.raise(Errors.UnsupportedSuper, node);\n    }\n\n    return this.finishNode(node, \"Super\");\n  }\n\n  parsePrivateName(): N.PrivateName {\n    const node = this.startNode<N.PrivateName>();\n    const id = this.startNodeAt<N.Identifier>(\n      // The position is hardcoded because we merge `#` and name into a single\n      // tt.privateName token\n      createPositionWithColumnOffset(this.state.startLoc, 1),\n    );\n    const name = this.state.value;\n    this.next(); // eat #name;\n    node.id = this.createIdentifier(id, name);\n    return this.finishNode(node, \"PrivateName\");\n  }\n\n  parseFunctionOrFunctionSent(\n    this: Parser,\n  ): N.FunctionExpression | N.MetaProperty {\n    const node = this.startNode<N.FunctionExpression | N.MetaProperty>();\n\n    // We do not do parseIdentifier here because when parseFunctionOrFunctionSent\n    // is called we already know that the current token is a \"name\" with the value \"function\"\n    // This will improve perf a tiny little bit as we do not do validation but more importantly\n    // here is that parseIdentifier will remove an item from the expression stack\n    // if \"function\" or \"class\" is parsed as identifier (in objects e.g.), which should not happen here.\n    this.next(); // eat `function`\n\n    if (this.prodParam.hasYield && this.match(tt.dot)) {\n      const meta = this.createIdentifier(\n        this.startNodeAtNode<N.Identifier>(node),\n        \"function\",\n      );\n      this.next(); // eat `.`\n      // https://github.com/tc39/proposal-function.sent#syntax-1\n      if (this.match(tt._sent)) {\n        this.expectPlugin(\"functionSent\");\n      } else if (!this.hasPlugin(\"functionSent\")) {\n        // The code wasn't `function.sent` but just `function.`, so a simple error is less confusing.\n        this.unexpected();\n      }\n      return this.parseMetaProperty(\n        node as Undone<N.MetaProperty>,\n        meta,\n        \"sent\",\n      );\n    }\n    return this.parseFunction(node as Undone<N.FunctionExpression>);\n  }\n\n  parseMetaProperty(\n    node: Undone<N.MetaProperty>,\n    meta: N.Identifier,\n    propertyName: string,\n  ): N.MetaProperty {\n    node.meta = meta;\n\n    const containsEsc = this.state.containsEsc;\n\n    node.property = this.parseIdentifier(true);\n\n    if (node.property.name !== propertyName || containsEsc) {\n      this.raise(Errors.UnsupportedMetaProperty, node.property, {\n        target: meta.name,\n        onlyValidPropertyName: propertyName,\n      });\n    }\n\n    return this.finishNode(node, \"MetaProperty\");\n  }\n\n  // https://tc39.es/ecma262/#prod-ImportMeta\n  // https://tc39.es/proposal-source-phase-imports/\n  parseImportMetaPropertyOrPhaseCall(\n    this: Parser,\n    node: Undone<N.MetaProperty | N.ImportExpression>,\n  ): N.MetaProperty | N.ImportExpression {\n    this.next(); // eat `.`\n\n    if (this.isContextual(tt._source) || this.isContextual(tt._defer)) {\n      const isSource = this.isContextual(tt._source);\n\n      this.expectPlugin(\n        isSource ? \"sourcePhaseImports\" : \"deferredImportEvaluation\",\n      );\n      this.next();\n      (node as Undone<N.ImportExpression>).phase = isSource\n        ? \"source\"\n        : \"defer\";\n      return this.parseImportCall(node as Undone<N.ImportExpression>);\n    } else {\n      const id = this.createIdentifierAt(\n        this.startNodeAtNode<N.Identifier>(node),\n        \"import\",\n        this.state.lastTokStartLoc,\n      );\n      if (this.isContextual(tt._meta)) {\n        if (!this.inModule) {\n          this.raise(Errors.ImportMetaOutsideModule, id);\n        }\n        this.sawUnambiguousESM = true;\n      }\n      return this.parseMetaProperty(node as Undone<N.MetaProperty>, id, \"meta\");\n    }\n  }\n\n  parseLiteralAtNode<T extends N.Node>(\n    value: any,\n    type: T[\"type\"],\n    node: any,\n  ): T {\n    this.addExtra(node, \"rawValue\", value);\n    this.addExtra(\n      node,\n      \"raw\",\n      this.input.slice(this.offsetToSourcePos(node.start), this.state.end),\n    );\n    node.value = value;\n    this.next();\n    return this.finishNode<T>(node, type);\n  }\n\n  parseLiteral<T extends N.Node>(value: any, type: T[\"type\"]): T {\n    const node = this.startNode();\n    return this.parseLiteralAtNode(value, type, node);\n  }\n\n  parseStringLiteral(value: any) {\n    return this.parseLiteral<N.StringLiteral>(value, \"StringLiteral\");\n  }\n\n  parseNumericLiteral(value: any) {\n    return this.parseLiteral<N.NumericLiteral>(value, \"NumericLiteral\");\n  }\n\n  parseBigIntLiteral(value: any) {\n    if (process.env.BABEL_8_BREAKING) {\n      let bigInt: bigint | null;\n      try {\n        bigInt = BigInt(value);\n      } catch {\n        // parser supports invalid bigints like `1.0n` or `1e1n` such that it\n        // can throw a recoverable error, but BigInt constructor does not\n        // support them.\n        bigInt = null;\n      }\n      const node = this.parseLiteral<N.BigIntLiteral>(bigInt, \"BigIntLiteral\");\n      return node;\n    } else {\n      return this.parseLiteral<N.BigIntLiteral>(value, \"BigIntLiteral\");\n    }\n  }\n\n  // TODO: Remove this in Babel 8\n  parseDecimalLiteral(value: any) {\n    return this.parseLiteral<N.DecimalLiteral>(value, \"DecimalLiteral\");\n  }\n\n  parseRegExpLiteral(value: {\n    value: any;\n    pattern: string;\n    flags: N.RegExpLiteral[\"flags\"];\n  }) {\n    const node = this.startNode<N.RegExpLiteral>();\n    this.addExtra(\n      node,\n      \"raw\",\n      this.input.slice(this.offsetToSourcePos(node.start), this.state.end),\n    );\n    node.pattern = value.pattern;\n    node.flags = value.flags;\n    this.next();\n    return this.finishNode(node, \"RegExpLiteral\");\n  }\n\n  parseBooleanLiteral(value: boolean) {\n    const node = this.startNode<N.BooleanLiteral>();\n    node.value = value;\n    this.next();\n    return this.finishNode(node, \"BooleanLiteral\");\n  }\n\n  parseNullLiteral() {\n    const node = this.startNode<N.NullLiteral>();\n    this.next();\n    return this.finishNode(node, \"NullLiteral\");\n  }\n\n  // https://tc39.es/ecma262/#prod-CoverParenthesizedExpressionAndArrowParameterList\n  parseParenAndDistinguishExpression(\n    this: Parser,\n    canBeArrow: boolean,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n\n    let val;\n    this.next(); // eat `(`\n    this.expressionScope.enter(newArrowHeadScope());\n\n    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.maybeInArrowParameters = true;\n    this.state.inFSharpPipelineDirectBody = false;\n\n    const innerStartLoc = this.state.startLoc;\n    const exprList: (\n      | N.Expression\n      | N.RestElement\n      | N.VoidPattern\n      | N.AssignmentPattern\n    )[] = [];\n    const refExpressionErrors = new ExpressionErrors();\n    let first = true;\n    let spreadStartLoc;\n    let optionalCommaStartLoc;\n\n    while (!this.match(tt.parenR)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(\n          tt.comma,\n          refExpressionErrors.optionalParametersLoc === null\n            ? null\n            : refExpressionErrors.optionalParametersLoc,\n        );\n        if (this.match(tt.parenR)) {\n          optionalCommaStartLoc = this.state.startLoc;\n          break;\n        }\n      }\n\n      if (this.match(tt.ellipsis)) {\n        const spreadNodeStartLoc = this.state.startLoc;\n        spreadStartLoc = this.state.startLoc;\n        exprList.push(\n          this.parseParenItem(this.parseRestBinding(), spreadNodeStartLoc),\n        );\n\n        if (!this.checkCommaAfterRest(charCodes.rightParenthesis)) {\n          break;\n        }\n      } else {\n        exprList.push(\n          this.parseMaybeAssignAllowInOrVoidPattern(\n            tt.parenR,\n            refExpressionErrors,\n            this.parseParenItem,\n          ),\n        );\n      }\n    }\n\n    const innerEndLoc = this.state.lastTokEndLoc;\n    this.expect(tt.parenR);\n\n    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n\n    let arrowNode = this.startNodeAt<N.ArrowFunctionExpression>(startLoc);\n    if (\n      canBeArrow &&\n      this.shouldParseArrow(exprList) &&\n      (arrowNode = this.parseArrow(arrowNode))\n    ) {\n      this.checkDestructuringPrivate(refExpressionErrors);\n      this.expressionScope.validateAsPattern();\n      this.expressionScope.exit();\n      this.parseArrowExpression(arrowNode, exprList, false);\n      // @ts-expect-error todo(flow->ts) improve node types\n      return arrowNode;\n    }\n    this.expressionScope.exit();\n\n    if (!exprList.length) {\n      this.unexpected(this.state.lastTokStartLoc);\n    }\n    if (optionalCommaStartLoc) this.unexpected(optionalCommaStartLoc);\n    if (spreadStartLoc) this.unexpected(spreadStartLoc);\n    this.checkExpressionErrors(refExpressionErrors, true);\n\n    this.toReferencedListDeep(exprList, /* isParenthesizedExpr */ true);\n    if (exprList.length > 1) {\n      val = this.startNodeAt<N.SequenceExpression>(innerStartLoc);\n      val.expressions = exprList as N.Expression[];\n      // finish node at current location so it can pick up comments after `)`\n      this.finishNode(val, \"SequenceExpression\");\n      this.resetEndLocation(val, innerEndLoc);\n    } else {\n      val = exprList[0];\n    }\n\n    return this.wrapParenthesis(\n      startLoc,\n      // @ts-expect-error todo(flow->ts)\n      val,\n    );\n  }\n\n  wrapParenthesis(startLoc: Position, expression: N.Expression): N.Expression {\n    if (!(this.optionFlags & OptionFlags.CreateParenthesizedExpressions)) {\n      this.addExtra(expression, \"parenthesized\", true);\n      this.addExtra(expression, \"parenStart\", startLoc.index);\n\n      this.takeSurroundingComments(\n        expression,\n        startLoc.index,\n        this.state.lastTokEndLoc.index,\n      );\n\n      return expression;\n    }\n\n    const parenExpression =\n      this.startNodeAt<N.ParenthesizedExpression>(startLoc);\n    parenExpression.expression = expression;\n    return this.finishNode(parenExpression, \"ParenthesizedExpression\");\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars -- `params` is used in typescript plugin\n  shouldParseArrow(params: Array<N.Node>): boolean {\n    return !this.canInsertSemicolon();\n  }\n\n  parseArrow(\n    node: Undone<N.ArrowFunctionExpression>,\n  ): Undone<N.ArrowFunctionExpression> | undefined {\n    if (this.eat(tt.arrow)) {\n      return node;\n    }\n  }\n\n  parseParenItem<T extends N.Expression | N.RestElement | N.SpreadElement>(\n    node: T,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    startLoc: Position,\n  ): T | N.TypeCastExpression | N.TsTypeCastExpression {\n    return node;\n  }\n\n  parseNewOrNewTarget(this: Parser): N.NewExpression | N.MetaProperty {\n    const node = this.startNode<N.NewExpression | N.MetaProperty>();\n    this.next();\n    if (this.match(tt.dot)) {\n      // https://tc39.es/ecma262/#prod-NewTarget\n      const meta = this.createIdentifier(\n        this.startNodeAtNode<N.Identifier>(node),\n        \"new\",\n      );\n      this.next();\n      const metaProp = this.parseMetaProperty(\n        node as Undone<N.MetaProperty>,\n        meta,\n        \"target\",\n      );\n\n      if (!this.scope.allowNewTarget) {\n        this.raise(Errors.UnexpectedNewTarget, metaProp);\n      }\n\n      return metaProp;\n    }\n\n    return this.parseNew(node as Undone<N.NewExpression>);\n  }\n\n  // New's precedence is slightly tricky. It must allow its argument to\n  // be a `[]` or dot subscript expression, but not a call — at least,\n  // not without wrapping it in parentheses. Thus, it uses the noCalls\n  // argument to parseSubscripts to prevent it from consuming the\n  // argument list.\n  // https://tc39.es/ecma262/#prod-NewExpression\n  parseNew(this: Parser, node: Undone<N.NewExpression>): N.NewExpression {\n    this.parseNewCallee(node);\n\n    if (this.eat(tt.parenL)) {\n      const args = this.parseExprList(tt.parenR);\n      this.toReferencedList(args);\n      // (parseExprList should be all non-null in this case)\n      node.arguments = args;\n    } else {\n      node.arguments = [];\n    }\n\n    return this.finishNode(node, \"NewExpression\");\n  }\n\n  parseNewCallee(this: Parser, node: Undone<N.NewExpression>): void {\n    const isImport = this.match(tt._import);\n    const callee = this.parseNoCallExpr();\n    node.callee = callee;\n    if (\n      isImport &&\n      (callee.type === \"Import\" || callee.type === \"ImportExpression\")\n    ) {\n      this.raise(Errors.ImportCallNotNewExpression, callee);\n    }\n  }\n\n  // Parse template expression.\n\n  parseTemplateElement(isTagged: boolean): N.TemplateElement {\n    const { start, startLoc, end, value } = this.state;\n    const elemStart = start + 1;\n    const elem = this.startNodeAt<N.TemplateElement>(\n      createPositionWithColumnOffset(startLoc, 1),\n    );\n    if (value === null) {\n      if (!isTagged) {\n        this.raise(\n          Errors.InvalidEscapeSequenceTemplate,\n          // FIXME: Adding 1 is probably wrong.\n          createPositionWithColumnOffset(\n            this.state.firstInvalidTemplateEscapePos,\n            1,\n          ),\n        );\n      }\n    }\n\n    const isTail = this.match(tt.templateTail);\n    const endOffset = isTail ? -1 : -2;\n    const elemEnd = end + endOffset;\n    elem.value = {\n      raw: this.input.slice(elemStart, elemEnd).replace(/\\r\\n?/g, \"\\n\"),\n      cooked: value === null ? null : value.slice(1, endOffset),\n    };\n    elem.tail = isTail;\n    this.next();\n    const finishedNode = this.finishNode(elem, \"TemplateElement\");\n    this.resetEndLocation(\n      finishedNode,\n      createPositionWithColumnOffset(this.state.lastTokEndLoc, endOffset),\n    );\n    return finishedNode;\n  }\n\n  // https://tc39.es/ecma262/#prod-TemplateLiteral\n  parseTemplate(this: Parser, isTagged: boolean): N.TemplateLiteral {\n    const node = this.startNode<N.TemplateLiteral>();\n    let curElt = this.parseTemplateElement(isTagged);\n    const quasis = [curElt];\n    const substitutions = [];\n    while (!curElt.tail) {\n      substitutions.push(this.parseTemplateSubstitution());\n      this.readTemplateContinuation();\n      quasis.push((curElt = this.parseTemplateElement(isTagged)));\n    }\n    // Type cast from (N.Expression[] | N.TsType[]). parseTemplateSubstitution\n    // returns consistent results.\n    node.expressions = substitutions as N.Expression[] | N.TsType[];\n    node.quasis = quasis;\n    return this.finishNode(node, \"TemplateLiteral\");\n  }\n\n  // This is overwritten by the TypeScript plugin to parse template types\n  parseTemplateSubstitution(this: Parser): N.Expression | N.TsType {\n    return this.parseExpression();\n  }\n\n  // Parse an object literal, binding pattern, or record.\n\n  parseObjectLike(\n    close: TokenType,\n    isPattern: true,\n    isRecord?: boolean | null,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.ObjectPattern;\n  parseObjectLike(\n    close: TokenType,\n    isPattern: false,\n    isRecord?: false | null,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.ObjectExpression;\n  parseObjectLike(\n    close: TokenType,\n    isPattern: false,\n    isRecord?: true,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.RecordExpression;\n  parseObjectLike<T extends N.ObjectPattern | N.ObjectExpression>(\n    this: Parser,\n    close: TokenType,\n    isPattern: boolean,\n    isRecord?: boolean | null,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): T {\n    if (isRecord) {\n      this.expectPlugin(\"recordAndTuple\");\n    }\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.inFSharpPipelineDirectBody = false;\n    let sawProto = false;\n    let first = true;\n    const node = this.startNode<\n      N.ObjectExpression | N.ObjectPattern | N.RecordExpression\n    >();\n\n    node.properties = [];\n    this.next();\n\n    while (!this.match(close)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(tt.comma);\n        if (this.match(close)) {\n          this.addTrailingCommaExtraToNode(node);\n          break;\n        }\n      }\n\n      let prop;\n      if (isPattern) {\n        prop = this.parseBindingProperty();\n      } else {\n        prop = this.parsePropertyDefinition(refExpressionErrors);\n        sawProto = this.checkProto(\n          prop,\n          isRecord,\n          sawProto,\n          refExpressionErrors,\n        );\n      }\n\n      if (\n        isRecord &&\n        !this.isObjectProperty(prop) &&\n        prop.type !== \"SpreadElement\"\n      ) {\n        this.raise(Errors.InvalidRecordProperty, prop);\n      }\n\n      if (!process.env.BABEL_8_BREAKING) {\n        // @ts-expect-error shorthand may not index prop\n        if (prop.shorthand) {\n          this.addExtra(prop, \"shorthand\", true);\n        }\n      }\n\n      // @ts-expect-error Fixme: refine typings\n      node.properties.push(prop);\n    }\n\n    this.next();\n\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n    let type = \"ObjectExpression\";\n    if (isPattern) {\n      type = \"ObjectPattern\";\n    } else if (isRecord) {\n      type = \"RecordExpression\";\n    }\n    // @ts-expect-error type is well defined\n    return this.finishNode(node, type);\n  }\n\n  addTrailingCommaExtraToNode(node: Undone<N.Node>): void {\n    this.addExtra(node, \"trailingComma\", this.state.lastTokStartLoc.index);\n    this.addExtra(node, \"trailingCommaLoc\", this.state.lastTokStartLoc, false);\n  }\n\n  // Check grammar production:\n  //   IdentifierName *_opt PropertyName\n  // It is used in `parsePropertyDefinition` to detect AsyncMethod and Accessors\n  maybeAsyncOrAccessorProp(\n    prop: Undone<N.ObjectProperty>,\n  ): prop is typeof prop & { key: N.Identifier } {\n    return (\n      !prop.computed &&\n      prop.key.type === \"Identifier\" &&\n      (this.isLiteralPropertyName() ||\n        this.match(tt.bracketL) ||\n        this.match(tt.star))\n    );\n  }\n\n  // https://tc39.es/ecma262/#prod-PropertyDefinition\n  parsePropertyDefinition(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.ObjectMember | N.SpreadElement {\n    let decorators = [];\n    if (this.match(tt.at)) {\n      if (this.hasPlugin(\"decorators\")) {\n        this.raise(Errors.UnsupportedPropertyDecorator, this.state.startLoc);\n      }\n\n      // we needn't check if decorators (stage 0) plugin is enabled since it's checked by\n      // the call to this.parseDecorator\n      while (this.match(tt.at)) {\n        decorators.push(this.parseDecorator());\n      }\n    }\n\n    const prop = this.startNode<N.ObjectProperty>();\n    let isAsync = false;\n    let isAccessor = false;\n    let startLoc;\n\n    if (this.match(tt.ellipsis)) {\n      if (decorators.length) this.unexpected();\n      return this.parseSpread();\n    }\n\n    if (decorators.length) {\n      prop.decorators = decorators;\n      decorators = [];\n    }\n\n    prop.method = false;\n\n    if (refExpressionErrors) {\n      startLoc = this.state.startLoc;\n    }\n\n    let isGenerator = this.eat(tt.star);\n    this.parsePropertyNamePrefixOperator(prop);\n    const containsEsc = this.state.containsEsc;\n    this.parsePropertyName(prop, refExpressionErrors);\n\n    if (!isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) {\n      const { key } = prop;\n      const keyName = key.name;\n      // https://tc39.es/ecma262/#prod-AsyncMethod\n      // https://tc39.es/ecma262/#prod-AsyncGeneratorMethod\n      if (keyName === \"async\" && !this.hasPrecedingLineBreak()) {\n        isAsync = true;\n        this.resetPreviousNodeTrailingComments(key);\n        isGenerator = this.eat(tt.star);\n        this.parsePropertyName(prop);\n      }\n      // get PropertyName[?Yield, ?Await] () { FunctionBody[~Yield, ~Await] }\n      // set PropertyName[?Yield, ?Await] ( PropertySetParameterList ) { FunctionBody[~Yield, ~Await] }\n      if (keyName === \"get\" || keyName === \"set\") {\n        isAccessor = true;\n        this.resetPreviousNodeTrailingComments(key);\n        prop.kind = keyName;\n        if (this.match(tt.star)) {\n          isGenerator = true;\n          this.raise(Errors.AccessorIsGenerator, this.state.curPosition(), {\n            kind: keyName,\n          });\n          this.next();\n        }\n        this.parsePropertyName(prop);\n      }\n    }\n\n    return this.parseObjPropValue(\n      prop,\n      startLoc,\n      isGenerator,\n      isAsync,\n      false /* isPattern */,\n      isAccessor,\n      refExpressionErrors,\n    );\n  }\n\n  getGetterSetterExpectedParamCount(\n    method: N.ObjectMethod | N.ClassMethod,\n  ): number {\n    return method.kind === \"get\" ? 0 : 1;\n  }\n\n  // This exists so we can override within the ESTree plugin\n  getObjectOrClassMethodParams(method: N.ObjectMethod | N.ClassMethod) {\n    return method.params;\n  }\n\n  // get methods aren't allowed to have any parameters\n  // set methods must have exactly 1 parameter which is not a rest parameter\n  checkGetterSetterParams(method: N.ObjectMethod | N.ClassMethod): void {\n    const paramCount = this.getGetterSetterExpectedParamCount(method);\n    const params = this.getObjectOrClassMethodParams(method);\n\n    if (params.length !== paramCount) {\n      this.raise(\n        method.kind === \"get\" ? Errors.BadGetterArity : Errors.BadSetterArity,\n        method,\n      );\n    }\n\n    if (\n      method.kind === \"set\" &&\n      params[params.length - 1]?.type === \"RestElement\"\n    ) {\n      this.raise(Errors.BadSetterRestParameter, method);\n    }\n  }\n\n  // https://tc39.es/ecma262/#prod-MethodDefinition\n  parseObjectMethod(\n    this: Parser,\n    prop: Undone<N.ObjectMethod>,\n    isGenerator: boolean,\n    isAsync: boolean,\n    isPattern: boolean,\n    isAccessor: boolean,\n  ): N.ObjectMethod | undefined | null {\n    if (isAccessor) {\n      // isAccessor implies isAsync: false, isPattern: false, isGenerator: false\n      const finishedProp = this.parseMethod(\n        prop,\n        // This _should_ be false, but with error recovery, we allow it to be\n        // set for informational purposes\n        isGenerator,\n        /* isAsync */ false,\n        /* isConstructor */ false,\n        false,\n        \"ObjectMethod\",\n      );\n      this.checkGetterSetterParams(finishedProp);\n      return finishedProp;\n    }\n\n    if (isAsync || isGenerator || this.match(tt.parenL)) {\n      if (isPattern) this.unexpected();\n      prop.kind = \"method\";\n      prop.method = true;\n      return this.parseMethod(\n        prop,\n        isGenerator,\n        isAsync,\n        /* isConstructor */ false,\n        false,\n        \"ObjectMethod\",\n      );\n    }\n  }\n\n  // if `isPattern` is true, parse https://tc39.es/ecma262/#prod-BindingProperty\n  // else https://tc39.es/ecma262/#prod-PropertyDefinition\n  parseObjectProperty(\n    this: Parser,\n    prop: Undone<N.ObjectProperty>,\n    startLoc: Position | undefined | null,\n    isPattern: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.ObjectProperty | undefined | null {\n    prop.shorthand = false;\n\n    if (this.eat(tt.colon)) {\n      prop.value = isPattern\n        ? this.parseMaybeDefault(this.state.startLoc)\n        : this.parseMaybeAssignAllowInOrVoidPattern(\n            tt.braceR,\n            refExpressionErrors,\n          );\n\n      return this.finishObjectProperty(prop);\n    }\n\n    if (!prop.computed && prop.key.type === \"Identifier\") {\n      // PropertyDefinition:\n      //   IdentifierReference\n      //   CoverInitializedName\n      // Note: `{ eval } = {}` will be checked in `checkLVal` later.\n      this.checkReservedWord(prop.key.name, prop.key.loc.start, true, false);\n\n      if (isPattern) {\n        prop.value = this.parseMaybeDefault(\n          startLoc,\n          this.cloneIdentifier(prop.key),\n        );\n      } else if (this.match(tt.eq)) {\n        const shorthandAssignLoc = this.state.startLoc;\n        if (refExpressionErrors != null) {\n          if (refExpressionErrors.shorthandAssignLoc === null) {\n            refExpressionErrors.shorthandAssignLoc = shorthandAssignLoc;\n          }\n        } else {\n          this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc);\n        }\n        prop.value = this.parseMaybeDefault(\n          startLoc,\n          this.cloneIdentifier(prop.key),\n        );\n      } else {\n        prop.value = this.cloneIdentifier(prop.key);\n      }\n      prop.shorthand = true;\n\n      return this.finishObjectProperty(prop);\n    }\n  }\n\n  finishObjectProperty(node: Undone<N.ObjectProperty>) {\n    return this.finishNode(node, \"ObjectProperty\");\n  }\n\n  parseObjPropValue<T extends N.ObjectMember>(\n    this: Parser,\n    prop: Undone<T>,\n    startLoc: Position | undefined | null,\n    isGenerator: boolean,\n    isAsync: boolean,\n    isPattern: boolean,\n    isAccessor: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): T {\n    const node = (this.parseObjectMethod(\n      prop as Undone<N.ObjectMethod>,\n      isGenerator,\n      isAsync,\n      isPattern,\n      isAccessor,\n    ) ||\n      this.parseObjectProperty(\n        prop as Undone<N.ObjectProperty>,\n        startLoc,\n        isPattern,\n        refExpressionErrors,\n      )) as T;\n\n    if (!node) this.unexpected();\n\n    return node;\n  }\n\n  // https://tc39.es/ecma262/#prod-PropertyName\n  // when refExpressionErrors presents, it will parse private name\n  // and record the position of the first private name\n  parsePropertyName(\n    this: Parser,\n    prop:\n      | Undone<N.ObjectOrClassMember | N.ClassMember>\n      | N.TsNamedTypeElementBase,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): void {\n    if (this.eat(tt.bracketL)) {\n      (prop as Undone<N.ObjectOrClassMember>).computed = true;\n      prop.key = this.parseMaybeAssignAllowIn();\n      this.expect(tt.bracketR);\n    } else {\n      // We check if it's valid for it to be a private name when we push it.\n      const { type, value } = this.state;\n      let key;\n      // most un-computed property names are identifiers\n      if (tokenIsKeywordOrIdentifier(type)) {\n        key = this.parseIdentifier(true);\n      } else {\n        switch (type) {\n          case tt.num:\n            key = this.parseNumericLiteral(value);\n            break;\n          case tt.string:\n            key = this.parseStringLiteral(value);\n            break;\n          case tt.bigint:\n            key = this.parseBigIntLiteral(value);\n            break;\n          case tt.privateName: {\n            // the class private key has been handled in parseClassElementName\n            const privateKeyLoc = this.state.startLoc;\n            if (refExpressionErrors != null) {\n              if (refExpressionErrors.privateKeyLoc === null) {\n                refExpressionErrors.privateKeyLoc = privateKeyLoc;\n              }\n            } else {\n              this.raise(Errors.UnexpectedPrivateField, privateKeyLoc);\n            }\n            key = this.parsePrivateName();\n            break;\n          }\n          default:\n            if (!process.env.BABEL_8_BREAKING && type === tt.decimal) {\n              key = this.parseDecimalLiteral(value);\n              break;\n            }\n\n            this.unexpected();\n        }\n      }\n      (prop as any).key = key;\n      if (type !== tt.privateName) {\n        // ClassPrivateProperty is never computed, so we don't assign in that case.\n        prop.computed = false;\n      }\n    }\n  }\n\n  // Initialize empty function node.\n\n  initFunction(node: N.BodilessFunctionOrMethodBase, isAsync: boolean): void {\n    node.id = null;\n    node.generator = false;\n    node.async = isAsync;\n  }\n\n  // Parse object or class method.\n\n  parseMethod<T extends N.ObjectMethod | N.ClassMethod | N.ClassPrivateMethod>(\n    this: Parser,\n    node: Undone<T>,\n    isGenerator: boolean,\n    isAsync: boolean,\n    isConstructor: boolean,\n    allowDirectSuper: boolean,\n    type: T[\"type\"],\n    inClassScope: boolean = false,\n  ): T {\n    this.initFunction(node, isAsync);\n    node.generator = isGenerator;\n    this.scope.enter(\n      ScopeFlag.FUNCTION |\n        ScopeFlag.SUPER |\n        (inClassScope ? ScopeFlag.CLASS : 0) |\n        (allowDirectSuper ? ScopeFlag.DIRECT_SUPER : 0),\n    );\n    this.prodParam.enter(functionFlags(isAsync, node.generator));\n    this.parseFunctionParams(node, isConstructor);\n    const finishedNode = this.parseFunctionBodyAndFinish(node, type, true);\n    this.prodParam.exit();\n    this.scope.exit();\n\n    return finishedNode;\n  }\n\n  // parse an array literal or tuple literal\n  // https://tc39.es/ecma262/#prod-ArrayLiteral\n  // https://tc39.es/proposal-record-tuple/#prod-TupleLiteral\n  parseArrayLike(\n    this: Parser,\n    close: TokenType,\n    canBePattern: boolean,\n    isTuple: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.ArrayExpression | N.TupleExpression {\n    if (isTuple) {\n      this.expectPlugin(\"recordAndTuple\");\n    }\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.inFSharpPipelineDirectBody = false;\n    const node = this.startNode<N.ArrayExpression | N.TupleExpression>();\n    this.next();\n    node.elements = this.parseExprList(\n      close,\n      /* allowEmpty */ !isTuple,\n      refExpressionErrors,\n      // @ts-expect-error todo(flow->ts)\n      node,\n    );\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n    return this.finishNode(\n      node,\n      isTuple ? \"TupleExpression\" : \"ArrayExpression\",\n    );\n  }\n\n  // Parse arrow function expression.\n  // If the parameters are provided, they will be converted to an\n  // assignable list.\n  parseArrowExpression(\n    this: Parser,\n    node: Undone<N.ArrowFunctionExpression>,\n    params:\n      | Array<\n          N.Expression | N.SpreadElement | N.VoidPattern | N.AssignmentPattern\n        >\n      | Array<\n          N.Expression | N.RestElement | N.VoidPattern | N.AssignmentPattern\n        >,\n    isAsync: boolean,\n    trailingCommaLoc?: Position | null,\n  ): N.ArrowFunctionExpression {\n    this.scope.enter(ScopeFlag.FUNCTION | ScopeFlag.ARROW);\n    let flags = functionFlags(isAsync, false);\n    // ConciseBody[In] :\n    //   [lookahead ≠ {] ExpressionBody[?In, ~Await]\n    //   { FunctionBody[~Yield, ~Await] }\n    if (!this.match(tt.braceL) && this.prodParam.hasIn) {\n      flags |= ParamKind.PARAM_IN;\n    }\n    this.prodParam.enter(flags);\n    this.initFunction(node, isAsync);\n    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n\n    if (params) {\n      this.state.maybeInArrowParameters = true;\n      this.setArrowFunctionParameters(node, params, trailingCommaLoc);\n    }\n    this.state.maybeInArrowParameters = false;\n    this.parseFunctionBody(node, true);\n\n    this.prodParam.exit();\n    this.scope.exit();\n    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n\n    return this.finishNode(node, \"ArrowFunctionExpression\");\n  }\n\n  setArrowFunctionParameters(\n    node: Undone<N.ArrowFunctionExpression>,\n    params:\n      | Array<\n          N.Expression | N.SpreadElement | N.VoidPattern | N.AssignmentPattern\n        >\n      | Array<\n          N.Expression | N.RestElement | N.VoidPattern | N.AssignmentPattern\n        >,\n    trailingCommaLoc?: Position | null,\n  ): void {\n    this.toAssignableList(params, trailingCommaLoc, false);\n    node.params = params as (N.Pattern | N.TSParameterProperty)[];\n  }\n\n  parseFunctionBodyAndFinish<\n    T extends\n      | N.Function\n      | N.TSDeclareMethod\n      | N.TSDeclareFunction\n      | N.ClassPrivateMethod,\n  >(node: Undone<T>, type: T[\"type\"], isMethod: boolean = false): T {\n    // @ts-expect-error (node is not bodiless if we get here)\n    this.parseFunctionBody(node, false, isMethod);\n    return this.finishNode(node, type);\n  }\n\n  // Parse function body and check parameters.\n  parseFunctionBody(\n    this: Parser,\n    node: Undone<N.Function>,\n    allowExpression?: boolean | null,\n    isMethod: boolean = false,\n  ): void {\n    const isExpression = allowExpression && !this.match(tt.braceL);\n    this.expressionScope.enter(newExpressionScope());\n\n    if (isExpression) {\n      // https://tc39.es/ecma262/#prod-ExpressionBody\n      (node as Undone<N.ArrowFunctionExpression>).body =\n        this.parseMaybeAssign();\n      this.checkParams(node, false, allowExpression, false);\n    } else {\n      const oldStrict = this.state.strict;\n      // Start a new scope with regard to labels\n      // flag (restore them to their old value afterwards).\n      const oldLabels = this.state.labels;\n      this.state.labels = [];\n\n      // FunctionBody[Yield, Await]:\n      //   StatementList[?Yield, ?Await, +Return] opt\n      this.prodParam.enter(\n        this.prodParam.currentFlags() | ParamKind.PARAM_RETURN,\n      );\n      node.body = this.parseBlock(\n        true,\n        false,\n        // Strict mode function checks after we parse the statements in the function body.\n        (hasStrictModeDirective: boolean) => {\n          const nonSimple = !this.isSimpleParamList(node.params);\n\n          if (hasStrictModeDirective && nonSimple) {\n            // This logic is here to align the error location with the ESTree plugin.\n            this.raise(\n              Errors.IllegalLanguageModeDirective,\n              // @ts-expect-error kind may not index node\n              (node.kind === \"method\" || node.kind === \"constructor\") &&\n                // @ts-expect-error key may not index node\n                !!node.key\n                ? // @ts-expect-error node.key has been guarded\n                  node.key.loc.end\n                : node,\n            );\n          }\n\n          const strictModeChanged = !oldStrict && this.state.strict;\n\n          // Add the params to varDeclaredNames to ensure that an error is thrown\n          // if a let/const declaration in the function clashes with one of the params.\n          this.checkParams(\n            node,\n            !this.state.strict && !allowExpression && !isMethod && !nonSimple,\n            allowExpression,\n            strictModeChanged,\n          );\n\n          // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n          if (this.state.strict && node.id) {\n            this.checkIdentifier(\n              node.id,\n              BindingFlag.TYPE_OUTSIDE,\n              strictModeChanged,\n            );\n          }\n        },\n      );\n      this.prodParam.exit();\n      this.state.labels = oldLabels;\n    }\n    this.expressionScope.exit();\n  }\n\n  isSimpleParameter(node: N.Pattern | N.TSParameterProperty): boolean {\n    return node.type === \"Identifier\";\n  }\n\n  isSimpleParamList(\n    params: ReadonlyArray<N.Pattern | N.TSParameterProperty>,\n  ): boolean {\n    for (let i = 0, len = params.length; i < len; i++) {\n      if (!this.isSimpleParameter(params[i])) return false;\n    }\n    return true;\n  }\n\n  checkParams(\n    node: Undone<N.Function>,\n    allowDuplicates: boolean,\n    isArrowFunction?: boolean | null,\n    strictModeChanged: boolean = true,\n  ): void {\n    const checkClashes = !allowDuplicates && new Set<string>();\n    // We create a fake node with the \"ephemeral\" type `FormalParameters`[1]\n    // since we just store an array of parameters. Perhaps someday we can have\n    // something like class FormalParameters extends Array { ... }, which would\n    // also be helpful when traversing this node.\n    //\n    // 1. https://tc39.es/ecma262/#prod-FormalParameters\n    const formalParameters = { type: \"FormalParameters\" } as const;\n    for (const param of node.params) {\n      this.checkLVal(\n        param,\n        formalParameters,\n        BindingFlag.TYPE_VAR,\n        checkClashes,\n        strictModeChanged,\n      );\n    }\n  }\n\n  // Parses a comma-separated list of expressions, and returns them as\n  // an array. `close` is the token type that ends the list, and\n  // `allowEmpty` can be turned on to allow subsequent commas with\n  // nothing in between them to be parsed as `null` (which is needed\n  // for array literals).\n  // https://tc39.es/ecma262/#prod-ElementList\n  parseExprList(\n    this: Parser,\n    close: TokenType,\n    allowEmpty?: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n    nodeForExtra?: N.Node | null,\n  ): (N.Expression | null)[] {\n    const elts: (N.Expression | null)[] = [];\n    let first = true;\n\n    while (!this.eat(close)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(tt.comma);\n        if (this.match(close)) {\n          if (nodeForExtra) {\n            this.addTrailingCommaExtraToNode(nodeForExtra);\n          }\n          this.next();\n          break;\n        }\n      }\n\n      elts.push(this.parseExprListItem(close, allowEmpty, refExpressionErrors));\n    }\n    return elts;\n  }\n\n  parseExprListItem(\n    this: Parser,\n    close: TokenType,\n    allowEmpty?: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n    allowPlaceholder?: boolean | null,\n  ): N.Expression | null;\n  parseExprListItem(\n    this: Parser,\n    close: TokenType,\n    allowEmpty?: false,\n    refExpressionErrors?: ExpressionErrors | null,\n    allowPlaceholder?: boolean | null,\n  ): N.Expression;\n  parseExprListItem(\n    this: Parser,\n    close: TokenType,\n    allowEmpty?: boolean | null,\n    refExpressionErrors?: ExpressionErrors | null,\n    allowPlaceholder?: boolean | null,\n  ):\n    | N.Expression\n    | N.SpreadElement\n    | N.ArgumentPlaceholder\n    | N.VoidPattern\n    | N.AssignmentPattern\n    | null {\n    let elt;\n    if (this.match(tt.comma)) {\n      if (!allowEmpty) {\n        this.raise(Errors.UnexpectedToken, this.state.curPosition(), {\n          unexpected: \",\",\n        });\n      }\n      elt = null;\n    } else if (this.match(tt.ellipsis)) {\n      const spreadNodeStartLoc = this.state.startLoc;\n\n      elt = this.parseParenItem(\n        this.parseSpread(refExpressionErrors),\n        spreadNodeStartLoc,\n      );\n    } else if (this.match(tt.question)) {\n      this.expectPlugin(\"partialApplication\");\n      if (!allowPlaceholder) {\n        this.raise(Errors.UnexpectedArgumentPlaceholder, this.state.startLoc);\n      }\n      const node = this.startNode<N.ArgumentPlaceholder>();\n      this.next();\n      elt = this.finishNode(node, \"ArgumentPlaceholder\");\n    } else {\n      elt = this.parseMaybeAssignAllowInOrVoidPattern(\n        close,\n        refExpressionErrors,\n        this.parseParenItem,\n      );\n    }\n    return elt;\n  }\n\n  // Parse the next token as an identifier. If `liberal` is true (used\n  // when parsing properties), it will also convert keywords into\n  // identifiers.\n  // This shouldn't be used to parse the keywords of meta properties, since they\n  // are not identifiers and cannot contain escape sequences.\n\n  parseIdentifier(liberal?: boolean): N.Identifier {\n    const node = this.startNode<N.Identifier>();\n    const name = this.parseIdentifierName(liberal);\n\n    return this.createIdentifier(node, name);\n  }\n\n  createIdentifier(node: Undone<N.Identifier>, name: string): N.Identifier {\n    node.name = name;\n    node.loc.identifierName = name;\n\n    return this.finishNode(node, \"Identifier\");\n  }\n\n  createIdentifierAt(\n    node: Undone<N.Identifier>,\n    name: string,\n    endLoc: Position,\n  ): N.Identifier {\n    node.name = name;\n    node.loc.identifierName = name;\n\n    return this.finishNodeAt(node, \"Identifier\", endLoc);\n  }\n\n  parseIdentifierName(liberal?: boolean): string {\n    let name: string;\n\n    const { startLoc, type } = this.state;\n\n    if (tokenIsKeywordOrIdentifier(type)) {\n      name = this.state.value;\n    } else {\n      this.unexpected();\n    }\n\n    const tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type);\n\n    if (liberal) {\n      // If the current token is not used as a keyword, set its type to \"tt.name\".\n      // This will prevent this.next() from throwing about unexpected escapes.\n      if (tokenIsKeyword) {\n        this.replaceToken(tt.name);\n      }\n    } else {\n      this.checkReservedWord(name, startLoc, tokenIsKeyword, false);\n    }\n\n    this.next();\n\n    return name;\n  }\n\n  checkReservedWord(\n    word: string,\n    startLoc: Position,\n    checkKeywords: boolean,\n    isBinding: boolean,\n  ): void {\n    // Every JavaScript reserved word is 10 characters or less.\n    if (word.length > 10) {\n      return;\n    }\n    // Most identifiers are not reservedWord-like, they don't need special\n    // treatments afterward, which very likely ends up throwing errors\n    if (!canBeReservedWord(word)) {\n      return;\n    }\n\n    if (checkKeywords && isKeyword(word)) {\n      this.raise(Errors.UnexpectedKeyword, startLoc, {\n        keyword: word,\n      });\n      return;\n    }\n\n    const reservedTest = !this.state.strict\n      ? isReservedWord\n      : isBinding\n        ? isStrictBindReservedWord\n        : isStrictReservedWord;\n\n    if (reservedTest(word, this.inModule)) {\n      this.raise(Errors.UnexpectedReservedWord, startLoc, {\n        reservedWord: word,\n      });\n      return;\n    } else if (word === \"yield\") {\n      if (this.prodParam.hasYield) {\n        this.raise(Errors.YieldBindingIdentifier, startLoc);\n        return;\n      }\n    } else if (word === \"await\") {\n      if (this.prodParam.hasAwait) {\n        this.raise(Errors.AwaitBindingIdentifier, startLoc);\n        return;\n      }\n\n      if (this.scope.inStaticBlock) {\n        this.raise(Errors.AwaitBindingIdentifierInStaticBlock, startLoc);\n        return;\n      }\n\n      this.expressionScope.recordAsyncArrowParametersError(startLoc);\n    } else if (word === \"arguments\") {\n      if (this.scope.inClassAndNotInNonArrowFunction) {\n        this.raise(Errors.ArgumentsInClass, startLoc);\n        return;\n      }\n    }\n  }\n\n  // Returns whether `await` is allowed or not in this context, and if it is\n  // keeps track of it to determine whether a module uses top-level await.\n  recordAwaitIfAllowed(): boolean {\n    const isAwaitAllowed = this.prodParam.hasAwait;\n\n    if (isAwaitAllowed && !this.scope.inFunction) {\n      this.state.hasTopLevelAwait = true;\n    }\n\n    return isAwaitAllowed;\n  }\n\n  // Parses await expression inside async function.\n\n  parseAwait(this: Parser, startLoc: Position): N.AwaitExpression {\n    const node = this.startNodeAt<N.AwaitExpression>(startLoc);\n\n    this.expressionScope.recordParameterInitializerError(\n      Errors.AwaitExpressionFormalParameter,\n      node,\n    );\n\n    if (this.eat(tt.star)) {\n      this.raise(Errors.ObsoleteAwaitStar, node);\n    }\n\n    if (\n      !this.scope.inFunction &&\n      !(this.optionFlags & OptionFlags.AllowAwaitOutsideFunction)\n    ) {\n      if (this.isAmbiguousPrefixOrIdentifier()) {\n        this.ambiguousScriptDifferentAst = true;\n      } else {\n        this.sawUnambiguousESM = true;\n      }\n    }\n\n    if (!this.state.soloAwait) {\n      node.argument = this.parseMaybeUnary(null, true);\n    }\n\n    return this.finishNode(node, \"AwaitExpression\");\n  }\n\n  isAmbiguousPrefixOrIdentifier(): boolean {\n    if (this.hasPrecedingLineBreak()) return true;\n    const { type } = this.state;\n    return (\n      // All the following expressions are ambiguous:\n      //   await + 0, await - 0, await ( 0 ), await [ 0 ], await / 0 /u, await ``, await of []\n      type === tt.plusMin ||\n      type === tt.parenL ||\n      type === tt.bracketL ||\n      tokenIsTemplate(type) ||\n      (type === tt._of && !this.state.containsEsc) ||\n      // Sometimes the tokenizer generates tt.slash for regexps, and this is\n      // handler by parseExprAtom\n      type === tt.regexp ||\n      type === tt.slash ||\n      // This code could be parsed both as a modulo operator or as an intrinsic:\n      //   await %x(0)\n      (this.hasPlugin(\"v8intrinsic\") && type === tt.modulo)\n    );\n  }\n\n  // Parses yield expression inside generator.\n\n  parseYield(this: Parser, startLoc: Position): N.YieldExpression {\n    const node = this.startNodeAt<N.YieldExpression>(startLoc);\n\n    this.expressionScope.recordParameterInitializerError(\n      Errors.YieldInParameter,\n      node,\n    );\n\n    let delegating = false;\n    let argument: N.Expression | null = null;\n    if (!this.hasPrecedingLineBreak()) {\n      delegating = this.eat(tt.star);\n      switch (this.state.type) {\n        case tt.semi:\n        case tt.eof:\n        case tt.braceR:\n        case tt.parenR:\n        case tt.bracketR:\n        case tt.braceBarR:\n        case tt.colon:\n        case tt.comma:\n          // The above is the complete set of tokens that can\n          // follow an AssignmentExpression, and none of them\n          // can start an AssignmentExpression\n          if (!delegating) break;\n        /* fallthrough */\n        default:\n          argument = this.parseMaybeAssign();\n      }\n    }\n    node.delegate = delegating;\n    node.argument = argument;\n    return this.finishNode(node, \"YieldExpression\");\n  }\n\n  // https://tc39.es/ecma262/#prod-ImportCall\n  parseImportCall(\n    this: Parser,\n    node: Undone<N.ImportExpression>,\n  ): N.ImportExpression {\n    this.next(); // eat tt.parenL\n    node.source = this.parseMaybeAssignAllowIn();\n    node.options = null;\n    if (this.eat(tt.comma)) {\n      if (!this.match(tt.parenR)) {\n        node.options = this.parseMaybeAssignAllowIn();\n        if (this.eat(tt.comma)) {\n          this.addTrailingCommaExtraToNode(node.options);\n          if (!this.match(tt.parenR)) {\n            // keep consuming arguments, to then throw ImportCallArity\n            // instead of \"expected )\"\n            do {\n              this.parseMaybeAssignAllowIn();\n            } while (this.eat(tt.comma) && !this.match(tt.parenR));\n\n            this.raise(Errors.ImportCallArity, node);\n          }\n        }\n      } else {\n        this.addTrailingCommaExtraToNode(node.source);\n      }\n    }\n    this.expect(tt.parenR);\n    return this.finishNode(node, \"ImportExpression\");\n  }\n\n  // Validates a pipeline (for any of the pipeline Babylon plugins) at the point\n  // of the infix operator `|>`.\n\n  checkPipelineAtInfixOperator(left: N.Expression, leftStartLoc: Position) {\n    // @ts-expect-error Remove this in Babel 8\n    if (this.hasPlugin([\"pipelineOperator\", { proposal: \"smart\" }])) {\n      if (left.type === \"SequenceExpression\") {\n        // Ensure that the pipeline head is not a comma-delimited\n        // sequence expression.\n        this.raise(Errors.PipelineHeadSequenceExpression, leftStartLoc);\n      }\n    }\n  }\n\n  parseSmartPipelineBodyInStyle(childExpr: N.Expression, startLoc: Position) {\n    if (this.isSimpleReference(childExpr)) {\n      const bodyNode = this.startNodeAt<N.PipelineBareFunction>(startLoc);\n      bodyNode.callee = childExpr;\n      return this.finishNode(bodyNode, \"PipelineBareFunction\");\n    } else {\n      const bodyNode = this.startNodeAt<N.PipelineTopicExpression>(startLoc);\n      this.checkSmartPipeTopicBodyEarlyErrors(startLoc);\n      bodyNode.expression = childExpr;\n      return this.finishNode(bodyNode, \"PipelineTopicExpression\");\n    }\n  }\n\n  isSimpleReference(expression: N.Expression): boolean {\n    switch (expression.type) {\n      case \"MemberExpression\":\n        return (\n          !expression.computed && this.isSimpleReference(expression.object)\n        );\n      case \"Identifier\":\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  // This helper method is to be called immediately\n  // after a topic-style smart-mix pipe body is parsed.\n  // The `startLoc` is the starting position of the pipe body.\n\n  checkSmartPipeTopicBodyEarlyErrors(startLoc: Position): void {\n    // If the following token is invalidly `=>`, then throw a human-friendly error\n    // instead of something like 'Unexpected token, expected \";\"'.\n    // For example, `x => x |> y => #` (assuming `#` is the topic reference)\n    // groups into `x => (x |> y) => #`,\n    // and `(x |> y) => #` is an invalid arrow function.\n    // This is because smart-mix `|>` has tighter precedence than `=>`.\n    if (this.match(tt.arrow)) {\n      throw this.raise(Errors.PipelineBodyNoArrow, this.state.startLoc);\n    }\n\n    // A topic-style smart-mix pipe body must use the topic reference at least once.\n    if (!this.topicReferenceWasUsedInCurrentContext()) {\n      this.raise(Errors.PipelineTopicUnused, startLoc);\n    }\n  }\n\n  // Enable topic references from outer contexts within Hack-style pipe bodies.\n  // The function modifies the parser's topic-context state to enable or disable\n  // the use of topic references.\n  // The function then calls a callback, then resets the parser\n  // to the old topic-context state that it had before the function was called.\n\n  withTopicBindingContext<T>(callback: () => T): T {\n    const outerContextTopicState = this.state.topicContext;\n    this.state.topicContext = {\n      // Enable the use of the primary topic reference.\n      maxNumOfResolvableTopics: 1,\n      // Hide the use of any topic references from outer contexts.\n      maxTopicIndex: null,\n    };\n\n    try {\n      return callback();\n    } finally {\n      this.state.topicContext = outerContextTopicState;\n    }\n  }\n\n  // This helper method is used only with the deprecated smart-mix pipe proposal.\n  // Disables topic references from outer contexts within syntax constructs\n  // such as the bodies of iteration statements.\n  // The function modifies the parser's topic-context state to enable or disable\n  // the use of topic references with the smartPipelines plugin. They then run a\n  // callback, then they reset the parser to the old topic-context state that it\n  // had before the function was called.\n\n  withSmartMixTopicForbiddingContext<T>(callback: () => T): T {\n    // TODO(Babel 8): Remove this method\n\n    if (\n      !process.env.BABEL_8_BREAKING &&\n      // @ts-expect-error Babel 7 only\n      this.hasPlugin([\"pipelineOperator\", { proposal: \"smart\" }])\n    ) {\n      // Reset the parser’s topic context only if the smart-mix pipe proposal is active.\n      const outerContextTopicState = this.state.topicContext;\n      this.state.topicContext = {\n        // Disable the use of the primary topic reference.\n        maxNumOfResolvableTopics: 0,\n        // Hide the use of any topic references from outer contexts.\n        maxTopicIndex: null,\n      };\n\n      try {\n        return callback();\n      } finally {\n        this.state.topicContext = outerContextTopicState;\n      }\n    } else {\n      // If the pipe proposal is \"minimal\"(Babel 7), \"fsharp\", or \"hack\",\n      // or if no pipe proposal is active,\n      // then the callback result is returned\n      // without touching any extra parser state.\n      return callback();\n    }\n  }\n\n  withSoloAwaitPermittingContext<T>(callback: () => T): T {\n    const outerContextSoloAwaitState = this.state.soloAwait;\n    this.state.soloAwait = true;\n\n    try {\n      return callback();\n    } finally {\n      this.state.soloAwait = outerContextSoloAwaitState;\n    }\n  }\n\n  allowInAnd<T>(callback: () => T): T {\n    const flags = this.prodParam.currentFlags();\n    const prodParamToSet = ParamKind.PARAM_IN & ~flags;\n    if (prodParamToSet) {\n      this.prodParam.enter(flags | ParamKind.PARAM_IN);\n      try {\n        return callback();\n      } finally {\n        this.prodParam.exit();\n      }\n    }\n    return callback();\n  }\n\n  disallowInAnd<T>(callback: () => T): T {\n    const flags = this.prodParam.currentFlags();\n    const prodParamToClear = ParamKind.PARAM_IN & flags;\n    if (prodParamToClear) {\n      this.prodParam.enter(flags & ~ParamKind.PARAM_IN);\n      try {\n        return callback();\n      } finally {\n        this.prodParam.exit();\n      }\n    }\n    return callback();\n  }\n\n  // Register the use of a topic reference within the current\n  // topic-binding context.\n  registerTopicReference(): void {\n    this.state.topicContext.maxTopicIndex = 0;\n  }\n\n  topicReferenceIsAllowedInCurrentContext(): boolean {\n    return this.state.topicContext.maxNumOfResolvableTopics >= 1;\n  }\n\n  topicReferenceWasUsedInCurrentContext(): boolean {\n    return (\n      this.state.topicContext.maxTopicIndex != null &&\n      this.state.topicContext.maxTopicIndex >= 0\n    );\n  }\n\n  parseFSharpPipelineBody(this: Parser, prec: number): N.Expression {\n    const startLoc = this.state.startLoc;\n\n    this.state.potentialArrowAt = this.state.start;\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.inFSharpPipelineDirectBody = true;\n\n    const ret = this.parseExprOp(\n      this.parseMaybeUnaryOrPrivate(),\n      startLoc,\n      prec,\n    );\n\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n\n    return ret;\n  }\n\n  // https://github.com/tc39/proposal-js-module-blocks\n  parseModuleExpression(this: Parser): N.ModuleExpression {\n    this.expectPlugin(\"moduleBlocks\");\n    const node = this.startNode<N.ModuleExpression>();\n    this.next(); // eat \"module\"\n    if (!this.match(tt.braceL)) {\n      this.unexpected(null, tt.braceL);\n    }\n    // start program node immediately after `{`\n    const program = this.startNodeAt<N.Program>(this.state.endLoc);\n    this.next(); // eat `{`\n\n    const revertScopes = this.initializeScopes(/** inModule */ true);\n    this.enterInitialScopes();\n\n    try {\n      node.body = this.parseProgram(program, tt.braceR, \"module\");\n    } finally {\n      revertScopes();\n    }\n    return this.finishNode<N.ModuleExpression>(node, \"ModuleExpression\");\n  }\n\n  parseVoidPattern(\n    this: Parser,\n    refExpressionErrors: ExpressionErrors | null,\n  ): N.VoidPattern {\n    this.expectPlugin(\"discardBinding\");\n    const node = this.startNode<N.VoidPattern>();\n    if (refExpressionErrors != null) {\n      refExpressionErrors.voidPatternLoc = this.state.startLoc;\n    }\n    this.next();\n    return this.finishNode(node, \"VoidPattern\");\n  }\n\n  parseMaybeAssignAllowInOrVoidPattern(\n    this: Parser,\n    close: TokenType,\n    refExpressionErrors: ExpressionErrors | null,\n    afterLeftParse?: Function,\n  ) {\n    if (refExpressionErrors != null && this.match(tt._void)) {\n      const nextCode = this.lookaheadCharCode();\n      if (\n        nextCode === charCodes.comma ||\n        nextCode ===\n          (close === tt.bracketR\n            ? charCodes.rightSquareBracket\n            : close === tt.braceR\n              ? charCodes.rightCurlyBrace\n              : charCodes.rightParenthesis) ||\n        nextCode === charCodes.equalsTo\n      ) {\n        // `void = Initializer` is not allowed, here we parse the production as an assignment pattern\n        // so that we can recover from this error\n        return this.parseMaybeDefault(\n          this.state.startLoc,\n          this.parseVoidPattern(refExpressionErrors),\n        );\n      }\n    }\n    return this.parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse);\n  }\n\n  // Used in Flow plugin\n  parsePropertyNamePrefixOperator(\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    prop: Undone<N.ObjectOrClassMember | N.ClassMember>,\n  ): void {}\n}\n","import type * as N from \"../types.ts\";\nimport {\n  tokenIsIdentifier,\n  tokenIsKeywordOrIdentifier,\n  tokenIsLoop,\n  tokenIsTemplate,\n  tt,\n  type TokenType,\n  getExportedToken,\n} from \"../tokenizer/types.ts\";\nimport ExpressionParser from \"./expression.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport { isIdentifierChar, isIdentifierStart } from \"../util/identifier.ts\";\nimport * as charCodes from \"charcodes\";\nimport {\n  ScopeFlag,\n  ClassElementType,\n  BindingFlag,\n} from \"../util/scopeflags.ts\";\nimport { ExpressionErrors } from \"./util.ts\";\nimport { ParamKind, functionFlags } from \"../util/production-parameter.ts\";\nimport {\n  newExpressionScope,\n  newParameterDeclarationScope,\n} from \"../util/expression-scope.ts\";\nimport { OptionFlags, type SourceType } from \"../options.ts\";\nimport { Token } from \"../tokenizer/index.ts\";\nimport type { Position } from \"../util/location.ts\";\nimport { createPositionWithColumnOffset } from \"../util/location.ts\";\nimport type { Undone } from \"./node.ts\";\nimport type Parser from \"./index.ts\";\nimport { ParseBindingListFlags } from \"./lval.ts\";\nimport { LoopLabelKind } from \"../tokenizer/state.ts\";\n\nconst loopLabel = { kind: LoopLabelKind.Loop } as const,\n  switchLabel = { kind: LoopLabelKind.Switch } as const;\n\nexport const enum ParseFunctionFlag {\n  Expression = 0b0000,\n  Declaration = 0b0001,\n  HangingDeclaration = 0b0010,\n  NullableId = 0b0100,\n  Async = 0b1000,\n}\n\nexport const enum ParseStatementFlag {\n  StatementOnly = 0b0000,\n  AllowImportExport = 0b0001,\n  AllowDeclaration = 0b0010,\n  AllowFunctionDeclaration = 0b0100,\n  AllowLabeledFunction = 0b1000,\n}\n\nconst loneSurrogate = /[\\uD800-\\uDFFF]/u;\n\nconst keywordRelationalOperator = /in(?:stanceof)?/y;\n\n/**\n * Convert tokens for backward Babel 7 compat.\n * tt.privateName => tt.hash + tt.name\n * tt.templateTail => tt.backquote/tt.braceR + tt.template + tt.backquote\n * tt.templateNonTail => tt.backquote/tt.braceR + tt.template + tt.dollarBraceL\n * For performance reasons this routine mutates `tokens`, it is okay\n * here since we execute `parseTopLevel` once for every file.\n */\nfunction babel7CompatTokens(\n  tokens: (Token | N.Comment)[],\n  input: string,\n  startIndex: number,\n) {\n  for (let i = 0; i < tokens.length; i++) {\n    const token = tokens[i];\n    const { type } = token;\n    if (typeof type === \"number\") {\n      if (!process.env.BABEL_8_BREAKING) {\n        if (type === tt.privateName) {\n          const { loc, start, value, end } = token;\n          const hashEndPos = start + 1;\n          const hashEndLoc = createPositionWithColumnOffset(loc.start, 1);\n          tokens.splice(\n            i,\n            1,\n            new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.hash),\n              value: \"#\",\n              start: start,\n              end: hashEndPos,\n              startLoc: loc.start,\n              endLoc: hashEndLoc,\n            }),\n            new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.name),\n              value: value,\n              start: hashEndPos,\n              end: end,\n              startLoc: hashEndLoc,\n              endLoc: loc.end,\n            }),\n          );\n          i++;\n          continue;\n        }\n\n        if (tokenIsTemplate(type)) {\n          const { loc, start, value, end } = token;\n          const backquoteEnd = start + 1;\n          const backquoteEndLoc = createPositionWithColumnOffset(loc.start, 1);\n          let startToken;\n          if (input.charCodeAt(start - startIndex) === charCodes.graveAccent) {\n            startToken = new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.backQuote),\n              value: \"`\",\n              start: start,\n              end: backquoteEnd,\n              startLoc: loc.start,\n              endLoc: backquoteEndLoc,\n            });\n          } else {\n            startToken = new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.braceR),\n              value: \"}\",\n              start: start,\n              end: backquoteEnd,\n              startLoc: loc.start,\n              endLoc: backquoteEndLoc,\n            });\n          }\n          let templateValue,\n            templateElementEnd,\n            templateElementEndLoc,\n            endToken;\n          if (type === tt.templateTail) {\n            // ends with '`'\n            templateElementEnd = end - 1;\n            templateElementEndLoc = createPositionWithColumnOffset(loc.end, -1);\n            templateValue = value === null ? null : value.slice(1, -1);\n            endToken = new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.backQuote),\n              value: \"`\",\n              start: templateElementEnd,\n              end: end,\n              startLoc: templateElementEndLoc,\n              endLoc: loc.end,\n            });\n          } else {\n            // ends with `${`\n            templateElementEnd = end - 2;\n            templateElementEndLoc = createPositionWithColumnOffset(loc.end, -2);\n            templateValue = value === null ? null : value.slice(1, -2);\n            endToken = new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.dollarBraceL),\n              value: \"${\",\n              start: templateElementEnd,\n              end: end,\n              startLoc: templateElementEndLoc,\n              endLoc: loc.end,\n            });\n          }\n          tokens.splice(\n            i,\n            1,\n            startToken,\n            new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.template),\n              value: templateValue,\n              start: backquoteEnd,\n              end: templateElementEnd,\n              startLoc: backquoteEndLoc,\n              endLoc: templateElementEndLoc,\n            }),\n            endToken,\n          );\n          i += 2;\n          continue;\n        }\n      }\n      // @ts-expect-error: we manipulate `token` for performance reasons\n      token.type = getExportedToken(type);\n    }\n  }\n  return tokens;\n}\nexport default abstract class StatementParser extends ExpressionParser {\n  // ### Statement parsing\n\n  // Parse a program. Initializes the parser, reads any number of\n  // statements, and wraps them in a Program node.  Optionally takes a\n  // `program` argument.  If present, the statements will be appended\n  // to its body instead of creating a new node.\n\n  parseTopLevel(\n    this: Parser,\n    file: Undone<N.File>,\n    program: Undone<N.Program>,\n  ): N.File {\n    file.program = this.parseProgram(\n      program,\n      tt.eof,\n      this.options.sourceType === \"module\" ? \"module\" : \"script\",\n    );\n    file.comments = this.comments;\n\n    if (this.optionFlags & OptionFlags.Tokens) {\n      file.tokens = babel7CompatTokens(\n        this.tokens,\n        this.input,\n        this.startIndex,\n      );\n    }\n\n    return this.finishNode(file, \"File\");\n  }\n\n  parseProgram(\n    this: Parser,\n    program: Undone<N.Program>,\n    end: TokenType,\n    sourceType: SourceType,\n  ): N.Program {\n    program.sourceType = sourceType;\n    program.interpreter = this.parseInterpreterDirective();\n    this.parseBlockBody(program, true, true, end);\n    if (this.inModule) {\n      if (\n        !(this.optionFlags & OptionFlags.AllowUndeclaredExports) &&\n        this.scope.undefinedExports.size > 0\n      ) {\n        for (const [localName, at] of Array.from(this.scope.undefinedExports)) {\n          this.raise(Errors.ModuleExportUndefined, at, { localName });\n        }\n      }\n      this.addExtra(program, \"topLevelAwait\", this.state.hasTopLevelAwait);\n    }\n    let finishedProgram: N.Program;\n    if (end === tt.eof) {\n      // finish at eof for top level program\n      finishedProgram = this.finishNode(program, \"Program\");\n    } else {\n      // finish immediately before the end token\n      finishedProgram = this.finishNodeAt(\n        program,\n        \"Program\",\n        createPositionWithColumnOffset(this.state.startLoc, -1),\n      );\n    }\n    return finishedProgram;\n  }\n\n  /**\n   * cast a Statement to a Directive. This method mutates input statement.\n   */\n  stmtToDirective(stmt: N.ExpressionStatement): N.Directive {\n    const directive = this.castNodeTo(stmt, \"Directive\");\n\n    const directiveLiteral = this.castNodeTo(\n      stmt.expression,\n      \"DirectiveLiteral\",\n    );\n    const expressionValue = directiveLiteral.value;\n    const raw = this.input.slice(\n      this.offsetToSourcePos(directiveLiteral.start),\n      this.offsetToSourcePos(directiveLiteral.end),\n    );\n    const val = (directiveLiteral.value = raw.slice(1, -1)); // remove quotes\n\n    this.addExtra(directiveLiteral, \"raw\", raw);\n    this.addExtra(directiveLiteral, \"rawValue\", val);\n    this.addExtra(directiveLiteral, \"expressionValue\", expressionValue);\n\n    directive.value = directiveLiteral;\n    delete stmt.expression;\n\n    return directive;\n  }\n\n  parseInterpreterDirective(): N.InterpreterDirective | null {\n    if (!this.match(tt.interpreterDirective)) {\n      return null;\n    }\n\n    const node = this.startNode<N.InterpreterDirective>();\n    node.value = this.state.value;\n    this.next();\n    return this.finishNode(node, \"InterpreterDirective\");\n  }\n\n  isLet(): boolean {\n    if (!this.isContextual(tt._let)) {\n      return false;\n    }\n    return this.hasFollowingBindingAtom();\n  }\n\n  isUsing(): boolean {\n    if (!this.isContextual(tt._using)) {\n      return false;\n    }\n    const next = this.nextTokenInLineStart();\n    const nextCh = this.codePointAtPos(next);\n    return this.chStartsBindingIdentifier(nextCh, next);\n  }\n\n  isForUsing(): boolean {\n    if (!this.isContextual(tt._using)) {\n      return false;\n    }\n    const next = this.nextTokenInLineStart();\n    const nextCh = this.codePointAtPos(next);\n    if (this.isUnparsedContextual(next, \"of\")) {\n      const nextCharAfterOf = this.lookaheadCharCodeSince(next + 2);\n      // `for( using of` must start either a for-lhs-of statement\n      // or a for lexical declaration\n      if (\n        nextCharAfterOf !== charCodes.equalsTo &&\n        nextCharAfterOf !== charCodes.colon &&\n        // recover from `for(using of;...);`\n        nextCharAfterOf !== charCodes.semicolon\n      ) {\n        return false;\n      }\n    }\n    if (\n      this.chStartsBindingIdentifier(nextCh, next) ||\n      this.isUnparsedContextual(next, \"void\")\n    ) {\n      return true;\n    }\n    return false;\n  }\n\n  isAwaitUsing(): boolean {\n    if (!this.isContextual(tt._await)) {\n      return false;\n    }\n    let next = this.nextTokenInLineStart();\n    if (this.isUnparsedContextual(next, \"using\")) {\n      next = this.nextTokenInLineStartSince(next + 5);\n      const nextCh = this.codePointAtPos(next);\n      if (this.chStartsBindingIdentifier(nextCh, next)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  chStartsBindingIdentifier(ch: number, pos: number) {\n    if (isIdentifierStart(ch)) {\n      keywordRelationalOperator.lastIndex = pos;\n      if (keywordRelationalOperator.test(this.input)) {\n        // We have seen `in` or `instanceof` so far, now check if the identifier\n        // ends here\n        const endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex);\n        if (!isIdentifierChar(endCh) && endCh !== charCodes.backslash) {\n          return false;\n        }\n      }\n      return true;\n    } else if (ch === charCodes.backslash) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  chStartsBindingPattern(ch: number) {\n    return (\n      ch === charCodes.leftSquareBracket || ch === charCodes.leftCurlyBrace\n    );\n  }\n\n  /**\n   * Assuming we have seen a contextual `let` and declaration is allowed, check if it\n   * starts a variable declaration so that it should be interpreted as a keyword.\n   */\n  hasFollowingBindingAtom(): boolean {\n    const next = this.nextTokenStart();\n    const nextCh = this.codePointAtPos(next);\n    return (\n      this.chStartsBindingPattern(nextCh) ||\n      this.chStartsBindingIdentifier(nextCh, next)\n    );\n  }\n\n  /**\n   * Assuming we have seen a contextual `using` and declaration is allowed, check if it\n   * starts a variable declaration in the same line so that it should be interpreted as\n   * a keyword.\n   */\n  hasInLineFollowingBindingIdentifierOrBrace(): boolean {\n    const next = this.nextTokenInLineStart();\n    const nextCh = this.codePointAtPos(next);\n    return (\n      nextCh === charCodes.leftCurlyBrace ||\n      this.chStartsBindingIdentifier(nextCh, next)\n    );\n  }\n\n  allowsUsing(): boolean {\n    return (\n      (this.scope.inModule || !this.scope.inTopLevel) &&\n      !this.scope.inBareCaseStatement\n    );\n  }\n\n  // https://tc39.es/ecma262/#prod-ModuleItem\n  parseModuleItem(this: Parser) {\n    return this.parseStatementLike(\n      ParseStatementFlag.AllowImportExport |\n        ParseStatementFlag.AllowDeclaration |\n        ParseStatementFlag.AllowFunctionDeclaration |\n        // This function is actually also used to parse StatementItems,\n        // which with Annex B enabled allows labeled functions.\n        ParseStatementFlag.AllowLabeledFunction,\n    );\n  }\n\n  // https://tc39.es/ecma262/#prod-StatementListItem\n  parseStatementListItem(this: Parser) {\n    return this.parseStatementLike(\n      ParseStatementFlag.AllowDeclaration |\n        ParseStatementFlag.AllowFunctionDeclaration |\n        (!this.options.annexB || this.state.strict\n          ? 0\n          : ParseStatementFlag.AllowLabeledFunction),\n    );\n  }\n\n  parseStatementOrSloppyAnnexBFunctionDeclaration(\n    this: Parser,\n    allowLabeledFunction: boolean = false,\n  ) {\n    let flags: ParseStatementFlag = ParseStatementFlag.StatementOnly;\n    if (this.options.annexB && !this.state.strict) {\n      flags |= ParseStatementFlag.AllowFunctionDeclaration;\n      if (allowLabeledFunction) {\n        flags |= ParseStatementFlag.AllowLabeledFunction;\n      }\n    }\n    return this.parseStatementLike(flags);\n  }\n\n  // Parse a single statement.\n  //\n  // If expecting a statement and finding a slash operator, parse a\n  // regular expression literal. This is to handle cases like\n  // `if (foo) /blah/.exec(foo)`, where looking at the previous token\n  // does not help.\n  // https://tc39.es/ecma262/#prod-Statement\n  parseStatement(this: Parser) {\n    return this.parseStatementLike(ParseStatementFlag.StatementOnly);\n  }\n\n  // ImportDeclaration and ExportDeclaration are also handled here so we can throw recoverable errors\n  // when they are not at the top level\n  parseStatementLike(\n    this: Parser,\n    flags: ParseStatementFlag,\n  ):\n    | N.Statement\n    | N.Declaration\n    | N.ImportDeclaration\n    | N.ExportDefaultDeclaration\n    | N.ExportNamedDeclaration\n    | N.ExportAllDeclaration {\n    let decorators: N.Decorator[] | null = null;\n\n    if (this.match(tt.at)) {\n      decorators = this.parseDecorators(true);\n    }\n    return this.parseStatementContent(flags, decorators);\n  }\n\n  parseStatementContent(\n    this: Parser,\n    flags: ParseStatementFlag,\n    decorators?: N.Decorator[] | null,\n  ): N.Statement {\n    const startType = this.state.type;\n    const node = this.startNode();\n    const allowDeclaration = !!(flags & ParseStatementFlag.AllowDeclaration);\n    const allowFunctionDeclaration = !!(\n      flags & ParseStatementFlag.AllowFunctionDeclaration\n    );\n    const topLevel = flags & ParseStatementFlag.AllowImportExport;\n\n    // Most types of statements are recognized by the keyword they\n    // start with. Many are trivial to parse, some require a bit of\n    // complexity.\n\n    switch (startType) {\n      case tt._break:\n        return this.parseBreakContinueStatement(node, /* isBreak */ true);\n      case tt._continue:\n        return this.parseBreakContinueStatement(node, /* isBreak */ false);\n      case tt._debugger:\n        return this.parseDebuggerStatement(node as Undone<N.DebuggerStatement>);\n      case tt._do:\n        return this.parseDoWhileStatement(node as Undone<N.DoWhileStatement>);\n      case tt._for:\n        return this.parseForStatement(node as Undone<N.ForStatement>);\n      case tt._function:\n        if (this.lookaheadCharCode() === charCodes.dot) break;\n        if (!allowFunctionDeclaration) {\n          this.raise(\n            this.state.strict\n              ? Errors.StrictFunction\n              : this.options.annexB\n                ? Errors.SloppyFunctionAnnexB\n                : Errors.SloppyFunction,\n            this.state.startLoc,\n          );\n        }\n        return this.parseFunctionStatement(\n          node as Undone<N.FunctionDeclaration>,\n          false,\n          !allowDeclaration && allowFunctionDeclaration,\n        );\n      case tt._class:\n        if (!allowDeclaration) this.unexpected();\n        return this.parseClass(\n          this.maybeTakeDecorators(\n            decorators,\n            node as Undone<N.ClassDeclaration>,\n          ),\n          true,\n        );\n\n      case tt._if:\n        return this.parseIfStatement(node as Undone<N.IfStatement>);\n      case tt._return:\n        return this.parseReturnStatement(node as Undone<N.ReturnStatement>);\n      case tt._switch:\n        return this.parseSwitchStatement(node as Undone<N.SwitchStatement>);\n      case tt._throw:\n        return this.parseThrowStatement(node as Undone<N.ThrowStatement>);\n      case tt._try:\n        return this.parseTryStatement(node as Undone<N.TryStatement>);\n\n      case tt._await:\n        // [+Await] await [no LineTerminator here] using [no LineTerminator here] BindingList[+Using]\n        if (this.isAwaitUsing()) {\n          if (!this.allowsUsing()) {\n            this.raise(Errors.UnexpectedUsingDeclaration, node);\n          } else if (!allowDeclaration) {\n            this.raise(Errors.UnexpectedLexicalDeclaration, node);\n          } else if (!this.recordAwaitIfAllowed()) {\n            this.raise(Errors.AwaitUsingNotInAsyncContext, node);\n          }\n          this.next(); // eat 'await'\n          return this.parseVarStatement(\n            node as Undone<N.VariableDeclaration>,\n            \"await using\",\n          );\n        }\n        break;\n      case tt._using:\n        // using [no LineTerminator here] BindingList[+Using]\n        if (\n          this.state.containsEsc ||\n          !this.hasInLineFollowingBindingIdentifierOrBrace()\n        ) {\n          break;\n        }\n        if (!this.allowsUsing()) {\n          this.raise(Errors.UnexpectedUsingDeclaration, this.state.startLoc);\n        } else if (!allowDeclaration) {\n          this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc);\n        }\n        return this.parseVarStatement(\n          node as Undone<N.VariableDeclaration>,\n          \"using\",\n        );\n      case tt._let: {\n        if (this.state.containsEsc) {\n          break;\n        }\n        // `let [` is an explicit negative lookahead for\n        // ExpressionStatement, so special-case it first.\n        const next = this.nextTokenStart();\n        const nextCh = this.codePointAtPos(next);\n        if (nextCh !== charCodes.leftSquareBracket) {\n          if (!allowDeclaration && this.hasFollowingLineBreak()) break;\n          if (\n            !this.chStartsBindingIdentifier(nextCh, next) &&\n            nextCh !== charCodes.leftCurlyBrace\n          ) {\n            break;\n          }\n        }\n      }\n      // fall through\n      case tt._const: {\n        if (!allowDeclaration) {\n          this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc);\n        }\n      }\n      // fall through\n      case tt._var: {\n        const kind = this.state.value;\n        return this.parseVarStatement(\n          node as Undone<N.VariableDeclaration>,\n          kind,\n        );\n      }\n      case tt._while:\n        return this.parseWhileStatement(node as Undone<N.WhileStatement>);\n      case tt._with:\n        return this.parseWithStatement(node as Undone<N.WithStatement>);\n      case tt.braceL:\n        return this.parseBlock();\n      case tt.semi:\n        return this.parseEmptyStatement(node as Undone<N.EmptyStatement>);\n      case tt._import: {\n        const nextTokenCharCode = this.lookaheadCharCode();\n        if (\n          nextTokenCharCode === charCodes.leftParenthesis || // import()\n          nextTokenCharCode === charCodes.dot // import.meta\n        ) {\n          break;\n        }\n      }\n      // fall through\n      case tt._export: {\n        if (\n          !(this.optionFlags & OptionFlags.AllowImportExportEverywhere) &&\n          !topLevel\n        ) {\n          this.raise(Errors.UnexpectedImportExport, this.state.startLoc);\n        }\n\n        this.next(); // eat `import`/`export`\n\n        let result;\n        if (startType === tt._import) {\n          result = this.parseImport(node as Undone<N.ImportDeclaration>);\n        } else {\n          result = this.parseExport(\n            node as Undone<\n              | N.ExportAllDeclaration\n              | N.ExportDefaultDeclaration\n              | N.ExportNamedDeclaration\n            >,\n            decorators,\n          );\n        }\n\n        this.assertModuleNodeAllowed(result);\n\n        return result;\n      }\n\n      default: {\n        if (this.isAsyncFunction()) {\n          if (!allowDeclaration) {\n            this.raise(\n              Errors.AsyncFunctionInSingleStatementContext,\n              this.state.startLoc,\n            );\n          }\n          this.next(); // eat 'async'\n          return this.parseFunctionStatement(\n            node as Undone<N.FunctionDeclaration>,\n            true,\n            !allowDeclaration && allowFunctionDeclaration,\n          );\n        }\n      }\n    }\n\n    // If the statement does not start with a statement keyword or a\n    // brace, it's an ExpressionStatement or LabeledStatement. We\n    // simply start parsing an expression, and afterwards, if the\n    // next token is a colon and the expression was a simple\n    // Identifier node, we switch to interpreting it as a label.\n    const maybeName = this.state.value;\n    const expr = this.parseExpression();\n\n    if (\n      tokenIsIdentifier(startType) &&\n      expr.type === \"Identifier\" &&\n      this.eat(tt.colon)\n    ) {\n      return this.parseLabeledStatement(\n        node as Undone<N.LabeledStatement>,\n        maybeName,\n        expr,\n        flags,\n      );\n    } else {\n      return this.parseExpressionStatement(\n        node as Undone<N.ExpressionStatement>,\n        expr,\n        decorators,\n      );\n    }\n  }\n\n  assertModuleNodeAllowed(node: N.Node): void {\n    if (\n      !(this.optionFlags & OptionFlags.AllowImportExportEverywhere) &&\n      !this.inModule\n    ) {\n      this.raise(Errors.ImportOutsideModule, node);\n    }\n  }\n\n  decoratorsEnabledBeforeExport(): boolean {\n    if (this.hasPlugin(\"decorators-legacy\")) return true;\n    return (\n      this.hasPlugin(\"decorators\") &&\n      this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\") !== false\n    );\n  }\n\n  // Attach the decorators to the given class.\n  // NOTE: This method changes the .start location of the class, and thus\n  // can affect comment attachment. Calling it before or after finalizing\n  // the class node (and thus finalizing its comments) changes how comments\n  // before the `class` keyword or before the final .start location of the\n  // class are attached.\n  maybeTakeDecorators<T extends Undone<N.Class>>(\n    maybeDecorators: N.Decorator[] | null,\n    classNode: T,\n    exportNode?: Undone<N.ExportDefaultDeclaration | N.ExportNamedDeclaration>,\n  ): T {\n    if (maybeDecorators) {\n      if (classNode.decorators?.length) {\n        // Note: decorators attachment is only attempred multiple times\n        // when the class is part of an export declaration.\n        if (\n          typeof this.getPluginOption(\n            \"decorators\",\n            \"decoratorsBeforeExport\",\n          ) !== \"boolean\"\n        ) {\n          // If `decoratorsBeforeExport` was set to `true` or `false`, we\n          // already threw an error about decorators not being in a valid\n          // position.\n          this.raise(\n            Errors.DecoratorsBeforeAfterExport,\n            classNode.decorators[0],\n          );\n        }\n        classNode.decorators.unshift(...maybeDecorators);\n      } else {\n        classNode.decorators = maybeDecorators;\n      }\n      this.resetStartLocationFromNode(classNode, maybeDecorators[0]);\n      if (exportNode) this.resetStartLocationFromNode(exportNode, classNode);\n    }\n    return classNode;\n  }\n\n  canHaveLeadingDecorator(): boolean {\n    return this.match(tt._class);\n  }\n\n  parseDecorators(this: Parser, allowExport?: boolean): N.Decorator[] {\n    const decorators = [];\n    do {\n      decorators.push(this.parseDecorator());\n    } while (this.match(tt.at));\n\n    if (this.match(tt._export)) {\n      if (!allowExport) {\n        this.unexpected();\n      }\n\n      if (!this.decoratorsEnabledBeforeExport()) {\n        this.raise(Errors.DecoratorExportClass, this.state.startLoc);\n      }\n    } else if (!this.canHaveLeadingDecorator()) {\n      throw this.raise(Errors.UnexpectedLeadingDecorator, this.state.startLoc);\n    }\n\n    return decorators;\n  }\n\n  parseDecorator(this: Parser): N.Decorator {\n    this.expectOnePlugin([\"decorators\", \"decorators-legacy\"]);\n\n    const node = this.startNode<N.Decorator>();\n    this.next();\n\n    if (this.hasPlugin(\"decorators\")) {\n      const startLoc = this.state.startLoc;\n      let expr: N.Expression;\n\n      if (this.match(tt.parenL)) {\n        const startLoc = this.state.startLoc;\n        this.next(); // eat '('\n        expr = this.parseExpression();\n        this.expect(tt.parenR);\n        expr = this.wrapParenthesis(startLoc, expr);\n\n        const paramsStartLoc = this.state.startLoc;\n        node.expression = this.parseMaybeDecoratorArguments(expr, startLoc);\n        if (\n          this.getPluginOption(\"decorators\", \"allowCallParenthesized\") ===\n            false &&\n          node.expression !== expr\n        ) {\n          this.raise(\n            Errors.DecoratorArgumentsOutsideParentheses,\n            paramsStartLoc,\n          );\n        }\n      } else {\n        expr = this.parseIdentifier(false);\n\n        while (this.eat(tt.dot)) {\n          const node = this.startNodeAt<N.MemberExpression>(startLoc);\n          node.object = expr;\n          if (this.match(tt.privateName)) {\n            this.classScope.usePrivateName(\n              this.state.value,\n              this.state.startLoc,\n            );\n            node.property = this.parsePrivateName();\n          } else {\n            node.property = this.parseIdentifier(true);\n          }\n          node.computed = false;\n          expr = this.finishNode(node, \"MemberExpression\");\n        }\n\n        node.expression = this.parseMaybeDecoratorArguments(expr, startLoc);\n      }\n    } else {\n      node.expression = this.parseExprSubscripts();\n    }\n    return this.finishNode(node, \"Decorator\");\n  }\n\n  parseMaybeDecoratorArguments(\n    this: Parser,\n    expr: N.Expression,\n    startLoc: Position,\n  ): N.Expression {\n    if (this.eat(tt.parenL)) {\n      const node = this.startNodeAt<N.CallExpression>(startLoc);\n      node.callee = expr;\n      node.arguments = this.parseCallExpressionArguments();\n      this.toReferencedList(node.arguments);\n      return this.finishNode(node, \"CallExpression\");\n    }\n\n    return expr;\n  }\n\n  parseBreakContinueStatement(\n    node: Undone<N.Node>,\n    isBreak: true,\n  ): N.BreakStatement;\n  parseBreakContinueStatement(\n    node: Undone<N.Node>,\n    isBreak: false,\n  ): N.ContinueStatement;\n  parseBreakContinueStatement(\n    node: Undone<N.BreakStatement | N.ContinueStatement>,\n    isBreak: boolean,\n  ): N.BreakStatement | N.ContinueStatement {\n    this.next();\n\n    if (this.isLineTerminator()) {\n      node.label = null;\n    } else {\n      node.label = this.parseIdentifier();\n      this.semicolon();\n    }\n\n    this.verifyBreakContinue(node, isBreak);\n\n    return this.finishNode(\n      node,\n      isBreak ? \"BreakStatement\" : \"ContinueStatement\",\n    );\n  }\n\n  verifyBreakContinue(\n    node: Undone<N.BreakStatement | N.ContinueStatement>,\n    isBreak: boolean,\n  ) {\n    let i;\n    for (i = 0; i < this.state.labels.length; ++i) {\n      const lab = this.state.labels[i];\n      if (node.label == null || lab.name === node.label.name) {\n        if (lab.kind != null && (isBreak || lab.kind === LoopLabelKind.Loop)) {\n          break;\n        }\n        if (node.label && isBreak) break;\n      }\n    }\n    if (i === this.state.labels.length) {\n      const type = isBreak ? \"BreakStatement\" : \"ContinueStatement\";\n      this.raise(Errors.IllegalBreakContinue, node, { type });\n    }\n  }\n\n  parseDebuggerStatement(\n    node: Undone<N.DebuggerStatement>,\n  ): N.DebuggerStatement {\n    this.next();\n    this.semicolon();\n    return this.finishNode(node, \"DebuggerStatement\");\n  }\n\n  parseHeaderExpression(this: Parser): N.Expression {\n    this.expect(tt.parenL);\n    const val = this.parseExpression();\n    this.expect(tt.parenR);\n    return val;\n  }\n\n  // https://tc39.es/ecma262/#prod-DoWhileStatement\n  parseDoWhileStatement(\n    this: Parser,\n    node: Undone<N.DoWhileStatement>,\n  ): N.DoWhileStatement {\n    this.next();\n    this.state.labels.push(loopLabel);\n\n    // Parse the loop body's body.\n    node.body =\n      // For the smartPipelines plugin: Disable topic references from outer\n      // contexts within the loop body. They are permitted in test expressions,\n      // outside of the loop body.\n      this.withSmartMixTopicForbiddingContext(() =>\n        // Parse the loop body's body.\n        this.parseStatement(),\n      );\n\n    this.state.labels.pop();\n\n    this.expect(tt._while);\n    node.test = this.parseHeaderExpression();\n    this.eat(tt.semi);\n    return this.finishNode(node, \"DoWhileStatement\");\n  }\n\n  // Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n  // loop is non-trivial. Basically, we have to parse the init `var`\n  // statement or expression, disallowing the `in` operator (see\n  // the second parameter to `parseExpression`), and then check\n  // whether the next token is `in` or `of`. When there is no init\n  // part (semicolon immediately after the opening parenthesis), it\n  // is a regular `for` loop.\n\n  parseForStatement(\n    this: Parser,\n    node: Undone<N.ForStatement | N.ForInOf>,\n  ): N.ForLike {\n    this.next();\n    this.state.labels.push(loopLabel);\n\n    let awaitAt = null;\n\n    if (this.isContextual(tt._await) && this.recordAwaitIfAllowed()) {\n      awaitAt = this.state.startLoc;\n      this.next();\n    }\n    this.scope.enter(ScopeFlag.OTHER);\n    this.expect(tt.parenL);\n\n    if (this.match(tt.semi)) {\n      if (awaitAt !== null) {\n        this.unexpected(awaitAt);\n      }\n      return this.parseFor(node as Undone<N.ForStatement>, null);\n    }\n\n    const startsWithLet = this.isContextual(tt._let);\n    {\n      const startsWithAwaitUsing = this.isAwaitUsing();\n      const starsWithUsingDeclaration =\n        startsWithAwaitUsing || this.isForUsing();\n      const isLetOrUsing =\n        (startsWithLet && this.hasFollowingBindingAtom()) ||\n        starsWithUsingDeclaration;\n\n      if (this.match(tt._var) || this.match(tt._const) || isLetOrUsing) {\n        const initNode = this.startNode<N.VariableDeclaration>();\n        let kind;\n        if (startsWithAwaitUsing) {\n          kind = \"await using\";\n          if (!this.recordAwaitIfAllowed()) {\n            this.raise(Errors.AwaitUsingNotInAsyncContext, this.state.startLoc);\n          }\n          this.next(); // eat 'await'\n        } else {\n          kind = this.state.value;\n        }\n        this.next();\n        this.parseVar(initNode, true, kind);\n        const init = this.finishNode(initNode, \"VariableDeclaration\");\n\n        const isForIn = this.match(tt._in);\n        if (isForIn && starsWithUsingDeclaration) {\n          this.raise(Errors.ForInUsing, init);\n        }\n        if (\n          (isForIn || this.isContextual(tt._of)) &&\n          init.declarations.length === 1\n        ) {\n          return this.parseForIn(node as Undone<N.ForInOf>, init, awaitAt);\n        }\n        if (awaitAt !== null) {\n          this.unexpected(awaitAt);\n        }\n        return this.parseFor(node as Undone<N.ForStatement>, init);\n      }\n    }\n\n    // Check whether the first token is possibly a contextual keyword, so that\n    // we can forbid `for (async of` if this turns out to be a for-of loop.\n    const startsWithAsync = this.isContextual(tt._async);\n\n    const refExpressionErrors = new ExpressionErrors();\n    const init = this.parseExpression(true, refExpressionErrors);\n    const isForOf = this.isContextual(tt._of);\n    if (isForOf) {\n      // Check for leading tokens that are forbidden in for-of loops:\n      if (startsWithLet) {\n        this.raise(Errors.ForOfLet, init);\n      }\n\n      if (\n        // `for await (async of []);` is allowed.\n        awaitAt === null &&\n        startsWithAsync &&\n        init.type === \"Identifier\"\n      ) {\n        // This catches the case where the `async` in `for (async of` was\n        // parsed as an identifier. If it was parsed as the start of an async\n        // arrow function (e.g. `for (async of => {} of []);`), the LVal check\n        // further down will raise a more appropriate error.\n        this.raise(Errors.ForOfAsync, init);\n      }\n    }\n    if (isForOf || this.match(tt._in)) {\n      this.checkDestructuringPrivate(refExpressionErrors);\n      this.toAssignable(init, /* isLHS */ true);\n      const type = isForOf ? \"ForOfStatement\" : \"ForInStatement\";\n      this.checkLVal(init, { type });\n      return this.parseForIn(\n        node as Undone<N.ForInStatement | N.ForOfStatement>,\n        // @ts-expect-error init has been transformed to an assignable\n        init,\n        awaitAt,\n      );\n    } else {\n      this.checkExpressionErrors(refExpressionErrors, true);\n    }\n    if (awaitAt !== null) {\n      this.unexpected(awaitAt);\n    }\n    return this.parseFor(node as Undone<N.ForStatement>, init);\n  }\n\n  // https://tc39.es/ecma262/#prod-HoistableDeclaration\n  parseFunctionStatement(\n    this: Parser,\n    node: Undone<N.FunctionDeclaration>,\n    isAsync: boolean,\n    isHangingDeclaration: boolean,\n  ): N.FunctionDeclaration {\n    this.next(); // eat 'function'\n    return this.parseFunction(\n      node,\n      ParseFunctionFlag.Declaration |\n        (isHangingDeclaration ? ParseFunctionFlag.HangingDeclaration : 0) |\n        (isAsync ? ParseFunctionFlag.Async : 0),\n    );\n  }\n\n  // https://tc39.es/ecma262/#prod-IfStatement\n  parseIfStatement(this: Parser, node: Undone<N.IfStatement>) {\n    this.next();\n    node.test = this.parseHeaderExpression();\n    // Annex B.3.3\n    // https://tc39.es/ecma262/#sec-functiondeclarations-in-ifstatement-statement-clauses\n    node.consequent = this.parseStatementOrSloppyAnnexBFunctionDeclaration();\n    node.alternate = this.eat(tt._else)\n      ? this.parseStatementOrSloppyAnnexBFunctionDeclaration()\n      : null;\n    return this.finishNode(node, \"IfStatement\");\n  }\n\n  parseReturnStatement(this: Parser, node: Undone<N.ReturnStatement>) {\n    if (!this.prodParam.hasReturn) {\n      this.raise(Errors.IllegalReturn, this.state.startLoc);\n    }\n\n    this.next();\n\n    // In `return` (and `break`/`continue`), the keywords with\n    // optional arguments, we eagerly look for a semicolon or the\n    // possibility to insert one.\n\n    if (this.isLineTerminator()) {\n      node.argument = null;\n    } else {\n      node.argument = this.parseExpression();\n      this.semicolon();\n    }\n\n    return this.finishNode(node, \"ReturnStatement\");\n  }\n\n  // https://tc39.es/ecma262/#prod-SwitchStatement\n  parseSwitchStatement(this: Parser, node: Undone<N.SwitchStatement>) {\n    this.next();\n    node.discriminant = this.parseHeaderExpression();\n    const cases: N.SwitchStatement[\"cases\"] = (node.cases = []);\n    this.expect(tt.braceL);\n    this.state.labels.push(switchLabel);\n    this.scope.enter(ScopeFlag.SWITCH);\n\n    // Statements under must be grouped (by label) in SwitchCase\n    // nodes. `cur` is used to keep the node that we are currently\n    // adding statements to.\n\n    let cur;\n    for (let sawDefault; !this.match(tt.braceR); ) {\n      if (this.match(tt._case) || this.match(tt._default)) {\n        const isCase = this.match(tt._case);\n        if (cur) this.finishNode(cur, \"SwitchCase\");\n        // @ts-expect-error Fixme\n        cases.push((cur = this.startNode<N.SwitchCase>()));\n        cur.consequent = [];\n        this.next();\n        if (isCase) {\n          cur.test = this.parseExpression();\n        } else {\n          if (sawDefault) {\n            this.raise(\n              Errors.MultipleDefaultsInSwitch,\n              this.state.lastTokStartLoc,\n            );\n          }\n          sawDefault = true;\n          cur.test = null;\n        }\n        this.expect(tt.colon);\n      } else {\n        if (cur) {\n          cur.consequent.push(this.parseStatementListItem());\n        } else {\n          this.unexpected();\n        }\n      }\n    }\n    this.scope.exit();\n    if (cur) this.finishNode(cur, \"SwitchCase\");\n    this.next(); // Closing brace\n    this.state.labels.pop();\n    return this.finishNode(node, \"SwitchStatement\");\n  }\n\n  parseThrowStatement(this: Parser, node: Undone<N.ThrowStatement>) {\n    this.next();\n    if (this.hasPrecedingLineBreak()) {\n      this.raise(Errors.NewlineAfterThrow, this.state.lastTokEndLoc);\n    }\n    node.argument = this.parseExpression();\n    this.semicolon();\n    return this.finishNode(node, \"ThrowStatement\");\n  }\n\n  parseCatchClauseParam(this: Parser): N.Pattern {\n    const param = this.parseBindingAtom();\n\n    this.scope.enter(\n      this.options.annexB && param.type === \"Identifier\"\n        ? ScopeFlag.SIMPLE_CATCH\n        : ScopeFlag.OTHER,\n    );\n    this.checkLVal(\n      param,\n      { type: \"CatchClause\" },\n      BindingFlag.TYPE_CATCH_PARAM,\n    );\n\n    return param;\n  }\n\n  parseTryStatement(\n    this: Parser,\n    node: Undone<N.TryStatement>,\n  ): N.TryStatement {\n    this.next();\n\n    node.block = this.parseBlock();\n    node.handler = null;\n\n    if (this.match(tt._catch)) {\n      const clause = this.startNode<N.CatchClause>();\n      this.next();\n      if (this.match(tt.parenL)) {\n        this.expect(tt.parenL);\n        clause.param = this.parseCatchClauseParam();\n        this.expect(tt.parenR);\n      } else {\n        clause.param = null;\n        this.scope.enter(ScopeFlag.OTHER);\n      }\n\n      // Parse the catch clause's body.\n      clause.body =\n        // For the smartPipelines plugin: Disable topic references from outer\n        // contexts within the catch clause's body.\n        this.withSmartMixTopicForbiddingContext(() =>\n          // Parse the catch clause's body.\n          this.parseBlock(false, false),\n        );\n\n      this.scope.exit();\n      node.handler = this.finishNode(clause, \"CatchClause\");\n    }\n\n    node.finalizer = this.eat(tt._finally) ? this.parseBlock() : null;\n\n    if (!node.handler && !node.finalizer) {\n      this.raise(Errors.NoCatchOrFinally, node);\n    }\n\n    return this.finishNode(node, \"TryStatement\");\n  }\n\n  // https://tc39.es/ecma262/#prod-VariableStatement\n  // https://tc39.es/ecma262/#prod-LexicalDeclaration\n  parseVarStatement(\n    this: Parser,\n    node: Undone<N.VariableDeclaration>,\n    kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n    allowMissingInitializer: boolean = false,\n  ): N.VariableDeclaration {\n    this.next();\n    this.parseVar(node, false, kind, allowMissingInitializer);\n    this.semicolon();\n    return this.finishNode(node, \"VariableDeclaration\");\n  }\n\n  // https://tc39.es/ecma262/#prod-WhileStatement\n  parseWhileStatement(\n    this: Parser,\n    node: Undone<N.WhileStatement>,\n  ): N.WhileStatement {\n    this.next();\n    node.test = this.parseHeaderExpression();\n    this.state.labels.push(loopLabel);\n\n    // Parse the loop body.\n    node.body =\n      // For the smartPipelines plugin:\n      // Disable topic references from outer contexts within the loop body.\n      // They are permitted in test expressions, outside of the loop body.\n      this.withSmartMixTopicForbiddingContext(() =>\n        // Parse loop body.\n        this.parseStatement(),\n      );\n\n    this.state.labels.pop();\n\n    return this.finishNode(node, \"WhileStatement\");\n  }\n\n  parseWithStatement(\n    this: Parser,\n    node: Undone<N.WithStatement>,\n  ): N.WithStatement {\n    if (this.state.strict) {\n      this.raise(Errors.StrictWith, this.state.startLoc);\n    }\n    this.next();\n    node.object = this.parseHeaderExpression();\n\n    // Parse the statement body.\n    node.body =\n      // For the smartPipelines plugin:\n      // Disable topic references from outer contexts within the with statement's body.\n      // They are permitted in function default-parameter expressions, which are\n      // part of the outer context, outside of the with statement's body.\n      this.withSmartMixTopicForbiddingContext(() =>\n        // Parse the statement body.\n        this.parseStatement(),\n      );\n\n    return this.finishNode(node, \"WithStatement\");\n  }\n\n  parseEmptyStatement(node: Undone<N.EmptyStatement>): N.EmptyStatement {\n    this.next();\n    return this.finishNode(node, \"EmptyStatement\");\n  }\n\n  // https://tc39.es/ecma262/#prod-LabelledStatement\n  parseLabeledStatement(\n    this: Parser,\n    node: Undone<N.LabeledStatement>,\n    maybeName: string,\n    expr: N.Identifier,\n    flags: ParseStatementFlag,\n  ): N.LabeledStatement {\n    for (const label of this.state.labels) {\n      if (label.name === maybeName) {\n        this.raise(Errors.LabelRedeclaration, expr, {\n          labelName: maybeName,\n        });\n      }\n    }\n\n    const kind = tokenIsLoop(this.state.type)\n      ? LoopLabelKind.Loop\n      : this.match(tt._switch)\n        ? LoopLabelKind.Switch\n        : null;\n    for (let i = this.state.labels.length - 1; i >= 0; i--) {\n      const label = this.state.labels[i];\n      if (label.statementStart === node.start) {\n        label.statementStart = this.sourceToOffsetPos(this.state.start);\n        label.kind = kind;\n      } else {\n        break;\n      }\n    }\n\n    this.state.labels.push({\n      name: maybeName,\n      kind: kind,\n      statementStart: this.sourceToOffsetPos(this.state.start),\n    });\n    // https://tc39.es/ecma262/#prod-LabelledItem\n    node.body =\n      flags & ParseStatementFlag.AllowLabeledFunction\n        ? this.parseStatementOrSloppyAnnexBFunctionDeclaration(true)\n        : this.parseStatement();\n\n    this.state.labels.pop();\n    node.label = expr;\n    return this.finishNode(node, \"LabeledStatement\");\n  }\n\n  parseExpressionStatement(\n    node: Undone<N.ExpressionStatement>,\n    expr: N.Expression,\n    /* eslint-disable-next-line @typescript-eslint/no-unused-vars -- used in TypeScript parser */\n    decorators: N.Decorator[] | null,\n  ) {\n    node.expression = expr;\n    this.semicolon();\n    return this.finishNode(node, \"ExpressionStatement\");\n  }\n\n  // Parse a semicolon-enclosed block of statements, handling `\"use\n  // strict\"` declarations when `allowDirectives` is true (used for\n  // function bodies).\n\n  parseBlock(\n    this: Parser,\n    allowDirectives: boolean = false,\n    createNewLexicalScope: boolean = true,\n    afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n  ): N.BlockStatement {\n    const node = this.startNode<N.BlockStatement>();\n    if (allowDirectives) {\n      this.state.strictErrors.clear();\n    }\n    this.expect(tt.braceL);\n    if (createNewLexicalScope) {\n      this.scope.enter(ScopeFlag.OTHER);\n    }\n    this.parseBlockBody(\n      node,\n      allowDirectives,\n      false,\n      tt.braceR,\n      afterBlockParse,\n    );\n    if (createNewLexicalScope) {\n      this.scope.exit();\n    }\n    return this.finishNode(node, \"BlockStatement\");\n  }\n\n  isValidDirective(stmt: N.Statement): stmt is N.ExpressionStatement {\n    return (\n      stmt.type === \"ExpressionStatement\" &&\n      stmt.expression.type === \"StringLiteral\" &&\n      !stmt.expression.extra.parenthesized\n    );\n  }\n\n  parseBlockBody(\n    this: Parser,\n    node: Undone<N.BlockStatementLike>,\n    allowDirectives: boolean | undefined | null,\n    topLevel: boolean,\n    end: TokenType,\n    afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n  ): void {\n    const body: N.BlockStatementLike[\"body\"] = (node.body = []);\n    const directives: N.BlockStatementLike[\"directives\"] = (node.directives =\n      []);\n    this.parseBlockOrModuleBlockBody(\n      body,\n      allowDirectives ? directives : undefined,\n      topLevel,\n      end,\n      afterBlockParse,\n    );\n  }\n\n  // Undefined directives means that directives are not allowed.\n  // https://tc39.es/ecma262/#prod-Block\n  // https://tc39.es/ecma262/#prod-ModuleBody\n  parseBlockOrModuleBlockBody(\n    this: Parser,\n    body: N.Statement[],\n    directives: N.Directive[] | undefined | null,\n    topLevel: boolean,\n    end: TokenType,\n    afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n  ): void {\n    const oldStrict = this.state.strict;\n    let hasStrictModeDirective = false;\n    let parsedNonDirective = false;\n\n    while (!this.match(end)) {\n      const stmt = topLevel\n        ? this.parseModuleItem()\n        : this.parseStatementListItem();\n\n      if (directives && !parsedNonDirective) {\n        if (this.isValidDirective(stmt)) {\n          const directive = this.stmtToDirective(stmt);\n          directives.push(directive);\n\n          if (\n            !hasStrictModeDirective &&\n            directive.value.value === \"use strict\"\n          ) {\n            hasStrictModeDirective = true;\n            this.setStrict(true);\n          }\n\n          continue;\n        }\n        parsedNonDirective = true;\n        // clear strict errors since the strict mode will not change within the block\n        this.state.strictErrors.clear();\n      }\n      body.push(stmt);\n    }\n\n    afterBlockParse?.call(this, hasStrictModeDirective);\n\n    if (!oldStrict) {\n      this.setStrict(false);\n    }\n\n    this.next();\n  }\n\n  // Parse a regular `for` loop. The disambiguation code in\n  // `parseStatement` will already have parsed the init statement or\n  // expression.\n\n  parseFor(\n    this: Parser,\n    node: Undone<N.ForStatement>,\n    init?: N.VariableDeclaration | N.Expression | null,\n  ): N.ForStatement {\n    node.init = init;\n    this.semicolon(/* allowAsi */ false);\n    node.test = this.match(tt.semi) ? null : this.parseExpression();\n    this.semicolon(/* allowAsi */ false);\n    node.update = this.match(tt.parenR) ? null : this.parseExpression();\n    this.expect(tt.parenR);\n\n    // Parse the loop body.\n    node.body =\n      // For the smartPipelines plugin: Disable topic references from outer\n      // contexts within the loop body. They are permitted in test expressions,\n      // outside of the loop body.\n      this.withSmartMixTopicForbiddingContext(() =>\n        // Parse the loop body.\n        this.parseStatement(),\n      );\n\n    this.scope.exit();\n    this.state.labels.pop();\n\n    return this.finishNode(node, \"ForStatement\");\n  }\n\n  // Parse a `for`/`in` and `for`/`of` loop, which are almost\n  // same from parser's perspective.\n\n  parseForIn(\n    this: Parser,\n    node: Undone<N.ForInOf>,\n    init: N.VariableDeclaration | N.AssignmentPattern,\n    awaitAt?: Position | null,\n  ): N.ForInOf {\n    const isForIn = this.match(tt._in);\n    this.next();\n\n    if (isForIn) {\n      if (awaitAt !== null) this.unexpected(awaitAt);\n    } else {\n      node.await = awaitAt !== null;\n    }\n\n    if (\n      init.type === \"VariableDeclaration\" &&\n      init.declarations[0].init != null &&\n      (!isForIn ||\n        !this.options.annexB ||\n        this.state.strict ||\n        init.kind !== \"var\" ||\n        init.declarations[0].id.type !== \"Identifier\")\n    ) {\n      this.raise(Errors.ForInOfLoopInitializer, init, {\n        type: isForIn ? \"ForInStatement\" : \"ForOfStatement\",\n      });\n    }\n\n    if (init.type === \"AssignmentPattern\") {\n      this.raise(Errors.InvalidLhs, init, {\n        ancestor: { type: \"ForStatement\" },\n      });\n    }\n\n    node.left = init;\n    node.right = isForIn\n      ? this.parseExpression()\n      : this.parseMaybeAssignAllowIn();\n    this.expect(tt.parenR);\n\n    // Parse the loop body.\n    node.body =\n      // For the smartPipelines plugin:\n      // Disable topic references from outer contexts within the loop body.\n      // They are permitted in test expressions, outside of the loop body.\n      this.withSmartMixTopicForbiddingContext(() =>\n        // Parse loop body.\n        this.parseStatement(),\n      );\n\n    this.scope.exit();\n    this.state.labels.pop();\n\n    return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\");\n  }\n\n  // Parse a list of variable declarations.\n\n  parseVar(\n    this: Parser,\n    node: Undone<N.VariableDeclaration>,\n    isFor: boolean,\n    kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n    allowMissingInitializer: boolean = false,\n  ): Undone<N.VariableDeclaration> {\n    const declarations: N.VariableDeclarator[] = (node.declarations = []);\n    node.kind = kind;\n    for (;;) {\n      const decl = this.startNode<N.VariableDeclarator>();\n      this.parseVarId(decl, kind);\n      decl.init = !this.eat(tt.eq)\n        ? null\n        : isFor\n          ? this.parseMaybeAssignDisallowIn()\n          : this.parseMaybeAssignAllowIn();\n\n      if (decl.init === null && !allowMissingInitializer) {\n        if (\n          decl.id.type !== \"Identifier\" &&\n          !(isFor && (this.match(tt._in) || this.isContextual(tt._of)))\n        ) {\n          this.raise(\n            Errors.DeclarationMissingInitializer,\n            this.state.lastTokEndLoc,\n            {\n              kind: \"destructuring\",\n            },\n          );\n        } else if (\n          (kind === \"const\" || kind === \"using\" || kind === \"await using\") &&\n          !(this.match(tt._in) || this.isContextual(tt._of))\n        ) {\n          this.raise(\n            Errors.DeclarationMissingInitializer,\n            this.state.lastTokEndLoc,\n            { kind },\n          );\n        }\n      }\n      declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n      if (!this.eat(tt.comma)) break;\n    }\n    return node;\n  }\n\n  parseVarId(\n    this: Parser,\n    decl: Undone<N.VariableDeclarator>,\n    kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n  ): void {\n    const id = this.parseBindingAtom();\n    if (kind === \"using\" || kind === \"await using\") {\n      if (id.type === \"ArrayPattern\" || id.type === \"ObjectPattern\") {\n        this.raise(Errors.UsingDeclarationHasBindingPattern, id.loc.start);\n      }\n    } else {\n      if (id.type === \"VoidPattern\") {\n        this.raise(Errors.UnexpectedVoidPattern, id.loc.start);\n      }\n    }\n    this.checkLVal(\n      id,\n      { type: \"VariableDeclarator\" },\n      kind === \"var\" ? BindingFlag.TYPE_VAR : BindingFlag.TYPE_LEXICAL,\n    );\n    decl.id = id;\n  }\n\n  // https://tc39.es/ecma262/#prod-AsyncFunctionExpression\n  parseAsyncFunctionExpression(\n    this: Parser,\n    node: Undone<N.FunctionExpression>,\n  ): N.FunctionExpression {\n    return this.parseFunction(node, ParseFunctionFlag.Async);\n  }\n\n  // Parse a function declaration or expression (depending on the\n  // ParseFunctionFlag.Declaration flag).\n\n  parseFunction<T extends N.NormalFunction>(\n    this: Parser,\n    node: Undone<T>,\n    flags: ParseFunctionFlag = ParseFunctionFlag.Expression,\n  ): T {\n    const hangingDeclaration = flags & ParseFunctionFlag.HangingDeclaration;\n    const isDeclaration = !!(flags & ParseFunctionFlag.Declaration);\n    const requireId = isDeclaration && !(flags & ParseFunctionFlag.NullableId);\n    const isAsync = !!(flags & ParseFunctionFlag.Async);\n\n    this.initFunction(node, isAsync);\n\n    if (this.match(tt.star)) {\n      if (hangingDeclaration) {\n        this.raise(\n          Errors.GeneratorInSingleStatementContext,\n          this.state.startLoc,\n        );\n      }\n      this.next(); // eat *\n      node.generator = true;\n    }\n\n    if (isDeclaration) {\n      node.id = this.parseFunctionId(requireId);\n    }\n\n    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n    this.state.maybeInArrowParameters = false;\n    this.scope.enter(ScopeFlag.FUNCTION);\n    this.prodParam.enter(functionFlags(isAsync, node.generator));\n\n    if (!isDeclaration) {\n      node.id = this.parseFunctionId();\n    }\n\n    this.parseFunctionParams(node, /* isConstructor */ false);\n\n    // For the smartPipelines plugin: Disable topic references from outer\n    // contexts within the function body. They are permitted in function\n    // default-parameter expressions, outside of the function body.\n    this.withSmartMixTopicForbiddingContext(() => {\n      // Parse the function body.\n      this.parseFunctionBodyAndFinish(\n        node,\n        isDeclaration ? \"FunctionDeclaration\" : \"FunctionExpression\",\n      );\n    });\n\n    this.prodParam.exit();\n    this.scope.exit();\n\n    if (isDeclaration && !hangingDeclaration) {\n      // We need to register this _after_ parsing the function body\n      // because of TypeScript body-less function declarations,\n      // which shouldn't be added to the scope.\n      this.registerFunctionStatementId(node as T);\n    }\n\n    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n    return node as T;\n  }\n\n  parseFunctionId(requireId?: boolean): N.Identifier | undefined | null {\n    return requireId || tokenIsIdentifier(this.state.type)\n      ? this.parseIdentifier()\n      : null;\n  }\n\n  parseFunctionParams(\n    this: Parser,\n    node: Undone<N.Function>,\n    isConstructor?: boolean,\n  ): void {\n    this.expect(tt.parenL);\n    this.expressionScope.enter(newParameterDeclarationScope());\n    node.params = this.parseBindingList(\n      tt.parenR,\n      charCodes.rightParenthesis,\n      ParseBindingListFlags.IS_FUNCTION_PARAMS |\n        (isConstructor ? ParseBindingListFlags.IS_CONSTRUCTOR_PARAMS : 0),\n    );\n\n    this.expressionScope.exit();\n  }\n\n  registerFunctionStatementId(node: N.Function): void {\n    if (!node.id) return;\n\n    // If it is a regular function declaration in sloppy mode, then it is\n    // subject to Annex B semantics (BindingFlag.TYPE_FUNCTION). Otherwise, the binding\n    // mode depends on properties of the current scope (see\n    // treatFunctionsAsVar).\n    this.scope.declareName(\n      node.id.name,\n      !this.options.annexB || this.state.strict || node.generator || node.async\n        ? this.scope.treatFunctionsAsVar\n          ? BindingFlag.TYPE_VAR\n          : BindingFlag.TYPE_LEXICAL\n        : BindingFlag.TYPE_FUNCTION,\n      node.id.loc.start,\n    );\n  }\n\n  // Parse a class declaration or literal (depending on the\n  // `isStatement` parameter).\n\n  parseClass<T extends N.Class>(\n    this: Parser,\n    node: Undone<T>,\n    isStatement: /* T === ClassDeclaration */ boolean,\n    optionalId?: boolean,\n  ): T {\n    this.next(); // 'class'\n\n    // A class definition is always strict mode code.\n    const oldStrict = this.state.strict;\n    this.state.strict = true;\n\n    this.parseClassId(node, isStatement, optionalId);\n    this.parseClassSuper(node);\n    // this.state.strict is restored in parseClassBody\n    node.body = this.parseClassBody(!!node.superClass, oldStrict);\n\n    return this.finishNode(\n      node,\n      isStatement ? \"ClassDeclaration\" : \"ClassExpression\",\n    );\n  }\n\n  isClassProperty(): boolean {\n    return this.match(tt.eq) || this.match(tt.semi) || this.match(tt.braceR);\n  }\n\n  isClassMethod(): boolean {\n    return this.match(tt.parenL);\n  }\n\n  nameIsConstructor(key: N.Expression | N.PrivateName): boolean {\n    return (\n      (key.type === \"Identifier\" && key.name === \"constructor\") ||\n      (key.type === \"StringLiteral\" && key.value === \"constructor\")\n    );\n  }\n\n  isNonstaticConstructor(method: N.ClassMethod | N.ClassProperty): boolean {\n    return (\n      !method.computed && !method.static && this.nameIsConstructor(method.key)\n    );\n  }\n\n  // https://tc39.es/ecma262/#prod-ClassBody\n  parseClassBody(\n    this: Parser,\n    hadSuperClass: boolean,\n    oldStrict: boolean,\n  ): N.ClassBody {\n    this.classScope.enter();\n\n    const state: N.ParseClassMemberState = {\n      hadConstructor: false,\n      hadSuperClass,\n    };\n    let decorators: N.Decorator[] = [];\n    const classBody = this.startNode<N.ClassBody>();\n    classBody.body = [];\n\n    this.expect(tt.braceL);\n\n    // For the smartPipelines plugin: Disable topic references from outer\n    // contexts within the class body.\n    this.withSmartMixTopicForbiddingContext(() => {\n      // Parse the contents within the braces.\n      while (!this.match(tt.braceR)) {\n        if (this.eat(tt.semi)) {\n          if (decorators.length > 0) {\n            throw this.raise(\n              Errors.DecoratorSemicolon,\n              this.state.lastTokEndLoc,\n            );\n          }\n          continue;\n        }\n\n        if (this.match(tt.at)) {\n          decorators.push(this.parseDecorator());\n          continue;\n        }\n\n        const member = this.startNode<N.ClassMember>();\n\n        // steal the decorators if there are any\n        if (decorators.length) {\n          // @ts-expect-error Fixme\n          member.decorators = decorators;\n          this.resetStartLocationFromNode(member, decorators[0]);\n          decorators = [];\n        }\n\n        this.parseClassMember(classBody, member, state);\n\n        if (\n          // @ts-expect-error Fixme\n          member.kind === \"constructor\" &&\n          // @ts-expect-error Fixme\n          member.decorators &&\n          // @ts-expect-error Fixme\n          member.decorators.length > 0\n        ) {\n          this.raise(Errors.DecoratorConstructor, member);\n        }\n      }\n    });\n\n    this.state.strict = oldStrict;\n\n    this.next(); // eat `}`\n\n    if (decorators.length) {\n      throw this.raise(Errors.TrailingDecorator, this.state.startLoc);\n    }\n\n    this.classScope.exit();\n\n    return this.finishNode(classBody, \"ClassBody\");\n  }\n\n  // returns true if the current identifier is a method/field name,\n  // false if it is a modifier\n  parseClassMemberFromModifier(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    member: Undone<N.ClassMember>,\n  ): boolean {\n    const key = this.parseIdentifier(true); // eats the modifier\n\n    if (this.isClassMethod()) {\n      const method: N.ClassMethod = member as any;\n\n      // a method named like the modifier\n      method.kind = \"method\";\n      method.computed = false;\n      method.key = key;\n      method.static = false;\n      this.pushClassMethod(\n        classBody,\n        method,\n        false,\n        false,\n        /* isConstructor */ false,\n        false,\n      );\n      return true;\n    } else if (this.isClassProperty()) {\n      const prop: N.ClassProperty = member as any;\n\n      // a property named like the modifier\n      prop.computed = false;\n      prop.key = key;\n      prop.static = false;\n      classBody.body.push(this.parseClassProperty(prop));\n      return true;\n    }\n    this.resetPreviousNodeTrailingComments(key);\n    return false;\n  }\n\n  parseClassMember(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    member: Undone<N.ClassMember>,\n    state: N.ParseClassMemberState,\n  ): void {\n    const isStatic = this.isContextual(tt._static);\n\n    if (isStatic) {\n      if (this.parseClassMemberFromModifier(classBody, member)) {\n        // a class element named 'static'\n        return;\n      }\n      if (this.eat(tt.braceL)) {\n        this.parseClassStaticBlock(classBody, member as any as N.StaticBlock);\n        return;\n      }\n    }\n\n    this.parseClassMemberWithIsStatic(classBody, member, state, isStatic);\n  }\n\n  parseClassMemberWithIsStatic(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    member: Undone<N.ClassMember>,\n    state: N.ParseClassMemberState,\n    isStatic: boolean,\n  ) {\n    const publicMethod = member as N.ClassMethod;\n    const privateMethod = member as N.ClassPrivateMethod;\n    const publicProp = member as N.ClassProperty;\n    const privateProp = member as N.ClassPrivateProperty;\n    const accessorProp = member as N.ClassAccessorProperty;\n\n    const method: typeof publicMethod | typeof privateMethod = publicMethod;\n    const publicMember: typeof publicMethod | typeof publicProp = publicMethod;\n\n    member.static = isStatic;\n    this.parsePropertyNamePrefixOperator(member);\n\n    if (this.eat(tt.star)) {\n      // a generator\n      method.kind = \"method\";\n      const isPrivateName = this.match(tt.privateName);\n      this.parseClassElementName(method);\n      this.parsePostMemberNameModifiers(method);\n\n      if (isPrivateName) {\n        // Private generator method\n        this.pushClassPrivateMethod(classBody, privateMethod, true, false);\n        return;\n      }\n\n      if (this.isNonstaticConstructor(publicMethod)) {\n        this.raise(Errors.ConstructorIsGenerator, publicMethod.key);\n      }\n\n      this.pushClassMethod(\n        classBody,\n        publicMethod,\n        true,\n        false,\n        /* isConstructor */ false,\n        false,\n      );\n\n      return;\n    }\n\n    const isContextual =\n      !this.state.containsEsc && tokenIsIdentifier(this.state.type);\n    const key = this.parseClassElementName(member);\n    const maybeContextualKw = isContextual ? (key as N.Identifier).name : null;\n    const isPrivate = this.isPrivateName(key);\n    const maybeQuestionTokenStartLoc = this.state.startLoc;\n\n    this.parsePostMemberNameModifiers(publicMember);\n\n    if (this.isClassMethod()) {\n      method.kind = \"method\";\n\n      if (isPrivate) {\n        this.pushClassPrivateMethod(classBody, privateMethod, false, false);\n        return;\n      }\n\n      // a normal method\n      const isConstructor = this.isNonstaticConstructor(publicMethod);\n      let allowsDirectSuper = false;\n      if (isConstructor) {\n        publicMethod.kind = \"constructor\";\n\n        // TypeScript allows multiple overloaded constructor declarations.\n        if (state.hadConstructor && !this.hasPlugin(\"typescript\")) {\n          this.raise(Errors.DuplicateConstructor, key);\n        }\n        if (isConstructor && this.hasPlugin(\"typescript\") && member.override) {\n          this.raise(Errors.OverrideOnConstructor, key);\n        }\n        state.hadConstructor = true;\n        allowsDirectSuper = state.hadSuperClass;\n      }\n\n      this.pushClassMethod(\n        classBody,\n        publicMethod,\n        false,\n        false,\n        isConstructor,\n        allowsDirectSuper,\n      );\n    } else if (this.isClassProperty()) {\n      if (isPrivate) {\n        this.pushClassPrivateProperty(classBody, privateProp);\n      } else {\n        this.pushClassProperty(classBody, publicProp);\n      }\n    } else if (maybeContextualKw === \"async\" && !this.isLineTerminator()) {\n      // an async method\n      this.resetPreviousNodeTrailingComments(key);\n      const isGenerator = this.eat(tt.star);\n\n      if (publicMember.optional) {\n        this.unexpected(maybeQuestionTokenStartLoc);\n      }\n\n      method.kind = \"method\";\n      // The so-called parsed name would have been \"async\": get the real name.\n      const isPrivate = this.match(tt.privateName);\n      this.parseClassElementName(method);\n      this.parsePostMemberNameModifiers(publicMember);\n\n      if (isPrivate) {\n        // private async method\n        this.pushClassPrivateMethod(\n          classBody,\n          privateMethod,\n          isGenerator,\n          true,\n        );\n      } else {\n        if (this.isNonstaticConstructor(publicMethod)) {\n          this.raise(Errors.ConstructorIsAsync, publicMethod.key);\n        }\n\n        this.pushClassMethod(\n          classBody,\n          publicMethod,\n          isGenerator,\n          true,\n          /* isConstructor */ false,\n          false,\n        );\n      }\n    } else if (\n      (maybeContextualKw === \"get\" || maybeContextualKw === \"set\") &&\n      !(this.match(tt.star) && this.isLineTerminator())\n    ) {\n      // `get\\n*` is an uninitialized property named 'get' followed by a generator.\n      // a getter or setter\n      this.resetPreviousNodeTrailingComments(key);\n      method.kind = maybeContextualKw;\n      // The so-called parsed name would have been \"get/set\": get the real name.\n      const isPrivate = this.match(tt.privateName);\n      this.parseClassElementName(publicMethod);\n\n      if (isPrivate) {\n        // private getter/setter\n        this.pushClassPrivateMethod(classBody, privateMethod, false, false);\n      } else {\n        if (this.isNonstaticConstructor(publicMethod)) {\n          this.raise(Errors.ConstructorIsAccessor, publicMethod.key);\n        }\n        this.pushClassMethod(\n          classBody,\n          publicMethod,\n          false,\n          false,\n          /* isConstructor */ false,\n          false,\n        );\n      }\n\n      this.checkGetterSetterParams(publicMethod);\n    } else if (maybeContextualKw === \"accessor\" && !this.isLineTerminator()) {\n      this.expectPlugin(\"decoratorAutoAccessors\");\n      this.resetPreviousNodeTrailingComments(key);\n\n      // The so-called parsed name would have been \"accessor\": get the real name.\n      const isPrivate = this.match(tt.privateName);\n      this.parseClassElementName(publicProp);\n      this.pushClassAccessorProperty(classBody, accessorProp, isPrivate);\n    } else if (this.isLineTerminator()) {\n      // an uninitialized class property (due to ASI, since we don't otherwise recognize the next token)\n      if (isPrivate) {\n        this.pushClassPrivateProperty(classBody, privateProp);\n      } else {\n        this.pushClassProperty(classBody, publicProp);\n      }\n    } else {\n      this.unexpected();\n    }\n  }\n\n  // https://tc39.es/ecma262/#prod-ClassElementName\n  parseClassElementName(\n    this: Parser,\n    member: Undone<N.ClassMember>,\n  ): N.Expression | N.Identifier | N.PrivateName {\n    const { type, value } = this.state;\n    if (\n      (type === tt.name || type === tt.string) &&\n      member.static &&\n      value === \"prototype\"\n    ) {\n      this.raise(Errors.StaticPrototype, this.state.startLoc);\n    }\n\n    if (type === tt.privateName) {\n      if (value === \"constructor\") {\n        this.raise(Errors.ConstructorClassPrivateField, this.state.startLoc);\n      }\n      const key = this.parsePrivateName();\n      member.key = key;\n      return key;\n    }\n\n    this.parsePropertyName(member);\n    return member.key;\n  }\n\n  parseClassStaticBlock(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    member: Undone<\n      N.StaticBlock & {\n        decorators?: Array<N.Decorator>;\n      }\n    >,\n  ) {\n    // Start a new lexical scope\n    this.scope.enter(\n      ScopeFlag.CLASS | ScopeFlag.STATIC_BLOCK | ScopeFlag.SUPER,\n    );\n    // Start a new scope with regard to loop labels\n    const oldLabels = this.state.labels;\n    this.state.labels = [];\n    // ClassStaticBlockStatementList:\n    //   StatementList[~Yield, ~Await, ~Return] opt\n    this.prodParam.enter(ParamKind.PARAM);\n    const body: N.Statement[] = (member.body = []);\n    this.parseBlockOrModuleBlockBody(body, undefined, false, tt.braceR);\n    this.prodParam.exit();\n    this.scope.exit();\n    this.state.labels = oldLabels;\n    classBody.body.push(this.finishNode<N.StaticBlock>(member, \"StaticBlock\"));\n    if (member.decorators?.length) {\n      this.raise(Errors.DecoratorStaticBlock, member);\n    }\n  }\n\n  pushClassProperty(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    prop: N.ClassProperty,\n  ) {\n    if (!prop.computed && this.nameIsConstructor(prop.key)) {\n      // Non-computed field, which is either an identifier named \"constructor\"\n      // or a string literal named \"constructor\"\n      this.raise(Errors.ConstructorClassField, prop.key);\n    }\n\n    classBody.body.push(this.parseClassProperty(prop));\n  }\n\n  pushClassPrivateProperty(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    prop: Undone<N.ClassPrivateProperty>,\n  ) {\n    const node = this.parseClassPrivateProperty(prop);\n    classBody.body.push(node);\n\n    this.classScope.declarePrivateName(\n      this.getPrivateNameSV(node.key),\n      ClassElementType.OTHER,\n      node.key.loc.start,\n    );\n  }\n\n  pushClassAccessorProperty(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    prop: N.ClassAccessorProperty,\n    isPrivate: boolean,\n  ) {\n    if (!isPrivate && !prop.computed && this.nameIsConstructor(prop.key)) {\n      // Non-computed field, which is either an identifier named \"constructor\"\n      // or a string literal named \"constructor\"\n      this.raise(Errors.ConstructorClassField, prop.key);\n    }\n\n    const node = this.parseClassAccessorProperty(prop);\n    classBody.body.push(node);\n\n    if (isPrivate) {\n      this.classScope.declarePrivateName(\n        this.getPrivateNameSV(node.key as N.PrivateName),\n        ClassElementType.OTHER,\n        node.key.loc.start,\n      );\n    }\n  }\n\n  pushClassMethod(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    method: Undone<N.ClassMethod>,\n    isGenerator: boolean,\n    isAsync: boolean,\n    isConstructor: boolean,\n    allowsDirectSuper: boolean,\n  ): void {\n    classBody.body.push(\n      this.parseMethod(\n        method,\n        isGenerator,\n        isAsync,\n        isConstructor,\n        allowsDirectSuper,\n        \"ClassMethod\",\n        true,\n      ),\n    );\n  }\n\n  pushClassPrivateMethod(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    method: Undone<N.ClassPrivateMethod>,\n    isGenerator: boolean,\n    isAsync: boolean,\n  ): void {\n    const node = this.parseMethod(\n      method,\n      isGenerator,\n      isAsync,\n      /* isConstructor */ false,\n      false,\n      \"ClassPrivateMethod\",\n      true,\n    );\n    classBody.body.push(node);\n\n    const kind =\n      node.kind === \"get\"\n        ? node.static\n          ? ClassElementType.STATIC_GETTER\n          : ClassElementType.INSTANCE_GETTER\n        : node.kind === \"set\"\n          ? node.static\n            ? ClassElementType.STATIC_SETTER\n            : ClassElementType.INSTANCE_SETTER\n          : ClassElementType.OTHER;\n    this.declareClassPrivateMethodInScope(node, kind);\n  }\n\n  declareClassPrivateMethodInScope(\n    node: Undone<N.ClassPrivateMethod | N.TSDeclareMethod>,\n    kind: number,\n  ) {\n    this.classScope.declarePrivateName(\n      this.getPrivateNameSV(node.key as N.PrivateName),\n      kind,\n      node.key.loc.start,\n    );\n  }\n\n  // Overridden in typescript.js\n  parsePostMemberNameModifiers(\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    methodOrProp: Undone<N.ClassMethod | N.ClassProperty>,\n  ): void {}\n\n  // https://tc39.es/ecma262/#prod-FieldDefinition\n  parseClassPrivateProperty(\n    this: Parser,\n    node: Undone<N.ClassPrivateProperty>,\n  ): N.ClassPrivateProperty {\n    this.parseInitializer(node);\n    this.semicolon();\n    return this.finishNode(node, \"ClassPrivateProperty\");\n  }\n\n  // https://tc39.es/ecma262/#prod-FieldDefinition\n  parseClassProperty(this: Parser, node: N.ClassProperty): N.ClassProperty {\n    this.parseInitializer(node);\n    this.semicolon();\n    return this.finishNode(node, \"ClassProperty\");\n  }\n\n  parseClassAccessorProperty(\n    this: Parser,\n    node: N.ClassAccessorProperty,\n  ): N.ClassAccessorProperty {\n    this.parseInitializer(node);\n    this.semicolon();\n    return this.finishNode(node, \"ClassAccessorProperty\");\n  }\n\n  // https://tc39.es/ecma262/#prod-Initializer\n  parseInitializer(\n    this: Parser,\n    node: Undone<\n      N.ClassProperty | N.ClassPrivateProperty | N.ClassAccessorProperty\n    >,\n  ): void {\n    this.scope.enter(ScopeFlag.CLASS | ScopeFlag.SUPER);\n    this.expressionScope.enter(newExpressionScope());\n    this.prodParam.enter(ParamKind.PARAM);\n    node.value = this.eat(tt.eq) ? this.parseMaybeAssignAllowIn() : null;\n    this.expressionScope.exit();\n    this.prodParam.exit();\n    this.scope.exit();\n  }\n\n  parseClassId(\n    node: Undone<N.Class>,\n    isStatement: boolean,\n    optionalId?: boolean | null,\n    bindingType: BindingFlag = BindingFlag.TYPE_CLASS,\n  ): void {\n    if (tokenIsIdentifier(this.state.type)) {\n      node.id = this.parseIdentifier();\n      if (isStatement) {\n        this.declareNameFromIdentifier(node.id, bindingType);\n      }\n    } else {\n      if (optionalId || !isStatement) {\n        node.id = null;\n      } else {\n        throw this.raise(Errors.MissingClassName, this.state.startLoc);\n      }\n    }\n  }\n\n  // https://tc39.es/ecma262/#prod-ClassHeritage\n  parseClassSuper(this: Parser, node: Undone<N.Class>): void {\n    node.superClass = this.eat(tt._extends) ? this.parseExprSubscripts() : null;\n  }\n\n  // Parses module export declaration.\n  // https://tc39.es/ecma262/#prod-ExportDeclaration\n\n  parseExport(\n    this: Parser,\n    node: Undone<\n      | N.ExportDefaultDeclaration\n      | N.ExportAllDeclaration\n      | N.ExportNamedDeclaration\n    >,\n    decorators: N.Decorator[] | null,\n  ): N.AnyExport {\n    const maybeDefaultIdentifier = this.parseMaybeImportPhase(\n      node,\n      /* isExport */ true,\n    );\n    const hasDefault = this.maybeParseExportDefaultSpecifier(\n      node,\n      maybeDefaultIdentifier,\n    );\n    const parseAfterDefault = !hasDefault || this.eat(tt.comma);\n    const hasStar = parseAfterDefault && this.eatExportStar(node);\n    const hasNamespace =\n      hasStar && this.maybeParseExportNamespaceSpecifier(node);\n    const parseAfterNamespace =\n      parseAfterDefault && (!hasNamespace || this.eat(tt.comma));\n    const isFromRequired = hasDefault || hasStar;\n\n    if (hasStar && !hasNamespace) {\n      if (hasDefault) this.unexpected();\n      if (decorators) {\n        throw this.raise(Errors.UnsupportedDecoratorExport, node);\n      }\n      this.parseExportFrom(node, true);\n\n      this.sawUnambiguousESM = true;\n\n      return this.finishNode(node, \"ExportAllDeclaration\");\n    }\n\n    const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node);\n\n    if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers) {\n      this.unexpected(null, tt.braceL);\n    }\n\n    if (hasNamespace && parseAfterNamespace) {\n      this.unexpected(null, tt._from);\n    }\n\n    let hasDeclaration;\n    if (isFromRequired || hasSpecifiers) {\n      hasDeclaration = false;\n      if (decorators) {\n        throw this.raise(Errors.UnsupportedDecoratorExport, node);\n      }\n      this.parseExportFrom(\n        node as Undone<N.ExportNamedDeclaration>,\n        isFromRequired,\n      );\n    } else {\n      hasDeclaration = this.maybeParseExportDeclaration(\n        node as Undone<N.ExportNamedDeclaration>,\n      );\n    }\n\n    if (isFromRequired || hasSpecifiers || hasDeclaration) {\n      const node2 = node as Undone<N.ExportNamedDeclaration>;\n      this.checkExport(node2, true, false, !!node2.source);\n      if (node2.declaration?.type === \"ClassDeclaration\") {\n        this.maybeTakeDecorators(decorators, node2.declaration, node2);\n      } else if (decorators) {\n        throw this.raise(Errors.UnsupportedDecoratorExport, node);\n      }\n      this.sawUnambiguousESM = true;\n      return this.finishNode(node2, \"ExportNamedDeclaration\");\n    }\n\n    if (this.eat(tt._default)) {\n      const node2 = node as Undone<N.ExportDefaultDeclaration>;\n      // export default ...\n      const decl = this.parseExportDefaultExpression();\n      node2.declaration = decl;\n\n      if (decl.type === \"ClassDeclaration\") {\n        this.maybeTakeDecorators(decorators, decl as N.ClassDeclaration, node2);\n      } else if (decorators) {\n        throw this.raise(Errors.UnsupportedDecoratorExport, node);\n      }\n\n      this.checkExport(node2, true, true);\n      this.sawUnambiguousESM = true;\n      return this.finishNode(node2, \"ExportDefaultDeclaration\");\n    }\n\n    this.unexpected(null, tt.braceL);\n  }\n\n  eatExportStar(\n    node: Undone<N.Node>,\n  ): node is Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration> {\n    return this.eat(tt.star);\n  }\n\n  maybeParseExportDefaultSpecifier(\n    node: Undone<\n      | N.ExportDefaultDeclaration\n      | N.ExportAllDeclaration\n      | N.ExportNamedDeclaration\n    >,\n    maybeDefaultIdentifier: N.Identifier | null,\n  ): node is Undone<N.ExportNamedDeclaration> {\n    if (maybeDefaultIdentifier || this.isExportDefaultSpecifier()) {\n      // export defaultObj ...\n      this.expectPlugin(\"exportDefaultFrom\", maybeDefaultIdentifier?.loc.start);\n      const id = maybeDefaultIdentifier || this.parseIdentifier(true);\n      const specifier = this.startNodeAtNode<N.ExportDefaultSpecifier>(id);\n      specifier.exported = id;\n      (node as Undone<N.ExportNamedDeclaration>).specifiers = [\n        this.finishNode(specifier, \"ExportDefaultSpecifier\"),\n      ];\n      return true;\n    }\n    return false;\n  }\n\n  maybeParseExportNamespaceSpecifier(\n    node: Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>,\n  ): node is Undone<N.ExportNamedDeclaration> {\n    if (this.isContextual(tt._as)) {\n      (node as Undone<N.ExportNamedDeclaration>).specifiers ??= [];\n\n      const specifier = this.startNodeAt<N.ExportNamespaceSpecifier>(\n        this.state.lastTokStartLoc,\n      );\n\n      this.next();\n\n      specifier.exported = this.parseModuleExportName();\n      (node as Undone<N.ExportNamedDeclaration>).specifiers.push(\n        this.finishNode(specifier, \"ExportNamespaceSpecifier\"),\n      );\n      return true;\n    }\n    return false;\n  }\n\n  maybeParseExportNamedSpecifiers(\n    node: Undone<N.Node>,\n  ): node is Undone<N.ExportNamedDeclaration> {\n    if (this.match(tt.braceL)) {\n      const node2 = node as Undone<N.ExportNamedDeclaration>;\n\n      if (!node2.specifiers) node2.specifiers = [];\n      const isTypeExport = node2.exportKind === \"type\";\n      node2.specifiers.push(...this.parseExportSpecifiers(isTypeExport));\n      node2.source = null;\n      if (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"importAssertions\")) {\n        node2.assertions = [];\n      } else {\n        node2.attributes = [];\n      }\n      node2.declaration = null;\n      return true;\n    }\n    return false;\n  }\n\n  maybeParseExportDeclaration(\n    this: Parser,\n    node: Undone<N.ExportNamedDeclaration>,\n  ): boolean {\n    if (this.shouldParseExportDeclaration()) {\n      node.specifiers = [];\n      node.source = null;\n      if (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"importAssertions\")) {\n        node.assertions = [];\n      } else {\n        node.attributes = [];\n      }\n      node.declaration = this.parseExportDeclaration(node);\n      return true;\n    }\n    return false;\n  }\n\n  isAsyncFunction(): boolean {\n    if (!this.isContextual(tt._async)) return false;\n    const next = this.nextTokenInLineStart();\n    return this.isUnparsedContextual(next, \"function\");\n  }\n\n  parseExportDefaultExpression(\n    this: Parser,\n  ): N.ExportDefaultDeclaration[\"declaration\"] {\n    const expr = this.startNode();\n\n    if (this.match(tt._function)) {\n      this.next();\n      return this.parseFunction(\n        expr as Undone<N.FunctionDeclaration>,\n        ParseFunctionFlag.Declaration | ParseFunctionFlag.NullableId,\n      );\n    } else if (this.isAsyncFunction()) {\n      this.next(); // eat 'async'\n      this.next(); // eat 'function'\n      return this.parseFunction(\n        expr as Undone<N.FunctionDeclaration>,\n        ParseFunctionFlag.Declaration |\n          ParseFunctionFlag.NullableId |\n          ParseFunctionFlag.Async,\n      );\n    }\n\n    if (this.match(tt._class)) {\n      return this.parseClass(expr as Undone<N.ClassExpression>, true, true);\n    }\n\n    if (this.match(tt.at)) {\n      if (\n        this.hasPlugin(\"decorators\") &&\n        this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\") === true\n      ) {\n        this.raise(Errors.DecoratorBeforeExport, this.state.startLoc);\n      }\n      return this.parseClass(\n        this.maybeTakeDecorators(\n          this.parseDecorators(false),\n          this.startNode<N.ClassDeclaration>(),\n        ),\n        true,\n        true,\n      );\n    }\n\n    if (\n      this.match(tt._const) ||\n      this.match(tt._var) ||\n      this.isLet() ||\n      this.isUsing() ||\n      this.isAwaitUsing()\n    ) {\n      throw this.raise(Errors.UnsupportedDefaultExport, this.state.startLoc);\n    }\n\n    const res = this.parseMaybeAssignAllowIn();\n    this.semicolon();\n    return res;\n  }\n\n  // https://tc39.es/ecma262/#prod-ExportDeclaration\n  parseExportDeclaration(\n    this: Parser,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    node: Undone<N.ExportNamedDeclaration>,\n  ): N.Declaration | undefined | null {\n    if (this.match(tt._class)) {\n      const node = this.parseClass(\n        this.startNode<N.ClassDeclaration>(),\n        true,\n        false,\n      );\n      return node;\n    }\n    return this.parseStatementListItem() as N.Declaration;\n  }\n\n  isExportDefaultSpecifier(): boolean {\n    const { type } = this.state;\n    if (tokenIsIdentifier(type)) {\n      if ((type === tt._async && !this.state.containsEsc) || type === tt._let) {\n        return false;\n      }\n      if (\n        (type === tt._type || type === tt._interface) &&\n        !this.state.containsEsc\n      ) {\n        // If we see any variable name other than `from` after `type` keyword,\n        // we consider it as flow/typescript type exports\n        // note that this approach may fail on some pedantic cases\n        // export type from = number\n        const next = this.nextTokenStart();\n        const nextChar = this.input.charCodeAt(next);\n        if (\n          nextChar === charCodes.leftCurlyBrace ||\n          (this.chStartsBindingIdentifier(nextChar, next) &&\n            !this.input.startsWith(\"from\", next))\n        ) {\n          this.expectOnePlugin([\"flow\", \"typescript\"]);\n          return false;\n        }\n      }\n    } else if (!this.match(tt._default)) {\n      return false;\n    }\n\n    const next = this.nextTokenStart();\n    const hasFrom = this.isUnparsedContextual(next, \"from\");\n    if (\n      this.input.charCodeAt(next) === charCodes.comma ||\n      (tokenIsIdentifier(this.state.type) && hasFrom)\n    ) {\n      return true;\n    }\n    // lookahead again when `export default from` is seen\n    if (this.match(tt._default) && hasFrom) {\n      const nextAfterFrom = this.input.charCodeAt(\n        this.nextTokenStartSince(next + 4),\n      );\n      return (\n        nextAfterFrom === charCodes.quotationMark ||\n        nextAfterFrom === charCodes.apostrophe\n      );\n    }\n    return false;\n  }\n\n  parseExportFrom(\n    this: Parser,\n    node: Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>,\n    expect?: boolean,\n  ): void {\n    if (this.eatContextual(tt._from)) {\n      node.source = this.parseImportSource();\n      this.checkExport(node);\n      this.maybeParseImportAttributes(node);\n      this.checkJSONModuleImport(node);\n    } else if (expect) {\n      this.unexpected();\n    }\n\n    this.semicolon();\n  }\n\n  shouldParseExportDeclaration(): boolean {\n    const { type } = this.state;\n    if (type === tt.at) {\n      this.expectOnePlugin([\"decorators\", \"decorators-legacy\"]);\n      if (this.hasPlugin(\"decorators\")) {\n        if (\n          this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\") === true\n        ) {\n          this.raise(Errors.DecoratorBeforeExport, this.state.startLoc);\n        }\n\n        return true;\n      }\n    }\n\n    if (this.isUsing()) {\n      this.raise(Errors.UsingDeclarationExport, this.state.startLoc);\n      return true;\n    }\n\n    if (this.isAwaitUsing()) {\n      this.raise(Errors.UsingDeclarationExport, this.state.startLoc);\n      return true;\n    }\n\n    return (\n      type === tt._var ||\n      type === tt._const ||\n      type === tt._function ||\n      type === tt._class ||\n      this.isLet() ||\n      this.isAsyncFunction()\n    );\n  }\n\n  checkExport(\n    node: Undone<\n      | N.ExportNamedDeclaration\n      | N.ExportAllDeclaration\n      | N.ExportDefaultDeclaration\n    >,\n    checkNames?: boolean,\n    isDefault?: boolean,\n    isFrom?: boolean,\n  ): void {\n    if (checkNames) {\n      // Check for duplicate exports\n      if (isDefault) {\n        // Default exports\n        this.checkDuplicateExports(node, \"default\");\n        if (this.hasPlugin(\"exportDefaultFrom\")) {\n          const declaration = (node as any as N.ExportDefaultDeclaration)\n            .declaration;\n          if (\n            declaration.type === \"Identifier\" &&\n            declaration.name === \"from\" &&\n            declaration.end - declaration.start === 4 && // does not contain escape\n            !declaration.extra?.parenthesized\n          ) {\n            this.raise(Errors.ExportDefaultFromAsIdentifier, declaration);\n          }\n        }\n        // @ts-expect-error node.specifiers may not exist\n      } else if (node.specifiers?.length) {\n        // Named exports\n        // @ts-expect-error node.specifiers may not exist\n        for (const specifier of node.specifiers) {\n          const { exported } = specifier;\n          const exportName =\n            exported.type === \"Identifier\" ? exported.name : exported.value;\n          this.checkDuplicateExports(specifier, exportName);\n          if (!isFrom && specifier.local) {\n            const { local } = specifier;\n            if (local.type !== \"Identifier\") {\n              this.raise(Errors.ExportBindingIsString, specifier, {\n                localName: local.value,\n                exportName,\n              });\n            } else {\n              // check for keywords used as local names\n              this.checkReservedWord(local.name, local.loc.start, true, false);\n              // check if export is defined\n              this.scope.checkLocalExport(local);\n            }\n          }\n        }\n      } else if ((node as Undone<N.ExportNamedDeclaration>).declaration) {\n        const decl = (node as Undone<N.ExportNamedDeclaration>).declaration;\n        // Exported declarations\n        if (\n          decl.type === \"FunctionDeclaration\" ||\n          decl.type === \"ClassDeclaration\"\n        ) {\n          const { id } = decl;\n          if (!id) throw new Error(\"Assertion failure\");\n\n          this.checkDuplicateExports(node, id.name);\n        } else if (decl.type === \"VariableDeclaration\") {\n          for (const declaration of decl.declarations) {\n            this.checkDeclaration(declaration.id);\n          }\n        }\n      }\n    }\n  }\n\n  checkDeclaration(node: N.Pattern | N.ObjectProperty): void {\n    if (node.type === \"Identifier\") {\n      this.checkDuplicateExports(node, node.name);\n    } else if (node.type === \"ObjectPattern\") {\n      for (const prop of node.properties) {\n        this.checkDeclaration(prop);\n      }\n    } else if (node.type === \"ArrayPattern\") {\n      for (const elem of node.elements) {\n        if (elem) {\n          this.checkDeclaration(elem);\n        }\n      }\n    } else if (node.type === \"ObjectProperty\") {\n      // @ts-expect-error migrate to Babel types\n      this.checkDeclaration(node.value);\n    } else if (node.type === \"RestElement\") {\n      this.checkDeclaration(node.argument);\n    } else if (node.type === \"AssignmentPattern\") {\n      this.checkDeclaration(node.left);\n    }\n  }\n\n  checkDuplicateExports(\n    node: Undone<\n      | N.Identifier\n      | N.StringLiteral\n      | N.ExportNamedDeclaration\n      | N.ExportSpecifier\n      | N.ExportDefaultSpecifier\n    >,\n    exportName: string,\n  ): void {\n    if (this.exportedIdentifiers.has(exportName)) {\n      if (exportName === \"default\") {\n        this.raise(Errors.DuplicateDefaultExport, node);\n      } else {\n        this.raise(Errors.DuplicateExport, node, { exportName });\n      }\n    }\n    this.exportedIdentifiers.add(exportName);\n  }\n\n  // Parses a comma-separated list of module exports.\n\n  parseExportSpecifiers(isInTypeExport: boolean): Array<N.ExportSpecifier> {\n    const nodes = [];\n    let first = true;\n\n    // export { x, y as z } [from '...']\n    this.expect(tt.braceL);\n\n    while (!this.eat(tt.braceR)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(tt.comma);\n        if (this.eat(tt.braceR)) break;\n      }\n      const isMaybeTypeOnly = this.isContextual(tt._type);\n      const isString = this.match(tt.string);\n      const node = this.startNode<N.ExportSpecifier>();\n      node.local = this.parseModuleExportName() as N.Identifier;\n      nodes.push(\n        this.parseExportSpecifier(\n          node,\n          isString,\n          isInTypeExport,\n          isMaybeTypeOnly,\n        ),\n      );\n    }\n\n    return nodes;\n  }\n\n  parseExportSpecifier(\n    node: any,\n    isString: boolean,\n    /* eslint-disable @typescript-eslint/no-unused-vars -- used in TypeScript parser */\n    isInTypeExport: boolean,\n    isMaybeTypeOnly: boolean,\n    /* eslint-enable @typescript-eslint/no-unused-vars */\n  ): N.ExportSpecifier {\n    if (this.eatContextual(tt._as)) {\n      node.exported = this.parseModuleExportName();\n    } else if (isString) {\n      node.exported = this.cloneStringLiteral(node.local);\n    } else if (!node.exported) {\n      node.exported = this.cloneIdentifier(node.local);\n    }\n    return this.finishNode<N.ExportSpecifier>(node, \"ExportSpecifier\");\n  }\n\n  // https://tc39.es/ecma262/#prod-ModuleExportName\n  parseModuleExportName(): N.StringLiteral | N.Identifier {\n    if (this.match(tt.string)) {\n      const result = this.parseStringLiteral(this.state.value);\n      const surrogate = loneSurrogate.exec(result.value);\n      if (surrogate) {\n        this.raise(Errors.ModuleExportNameHasLoneSurrogate, result, {\n          surrogateCharCode: surrogate[0].charCodeAt(0),\n        });\n      }\n      return result;\n    }\n    return this.parseIdentifier(true);\n  }\n\n  isJSONModuleImport(\n    node: Undone<\n      N.ExportAllDeclaration | N.ExportNamedDeclaration | N.ImportDeclaration\n    >,\n  ): boolean {\n    if (node.assertions != null) {\n      return node.assertions.some(({ key, value }) => {\n        return (\n          value.value === \"json\" &&\n          (key.type === \"Identifier\"\n            ? key.name === \"type\"\n            : key.value === \"type\")\n        );\n      });\n    }\n    return false;\n  }\n\n  checkImportReflection(node: Undone<N.ImportDeclaration>) {\n    const { specifiers } = node;\n    const singleBindingType =\n      specifiers.length === 1 ? specifiers[0].type : null;\n\n    if (node.phase === \"source\") {\n      if (singleBindingType !== \"ImportDefaultSpecifier\") {\n        this.raise(\n          Errors.SourcePhaseImportRequiresDefault,\n          specifiers[0].loc.start,\n        );\n      }\n    } else if (node.phase === \"defer\") {\n      if (singleBindingType !== \"ImportNamespaceSpecifier\") {\n        this.raise(\n          Errors.DeferImportRequiresNamespace,\n          specifiers[0].loc.start,\n        );\n      }\n    } else if (node.module) {\n      if (singleBindingType !== \"ImportDefaultSpecifier\") {\n        this.raise(Errors.ImportReflectionNotBinding, specifiers[0].loc.start);\n      }\n      if (node.assertions?.length > 0) {\n        this.raise(\n          Errors.ImportReflectionHasAssertion,\n          specifiers[0].loc.start,\n        );\n      }\n    }\n  }\n\n  checkJSONModuleImport(\n    node: Undone<\n      N.ExportAllDeclaration | N.ExportNamedDeclaration | N.ImportDeclaration\n    >,\n  ) {\n    // @ts-expect-error Fixme: node.type must be undefined because they are undone\n    if (this.isJSONModuleImport(node) && node.type !== \"ExportAllDeclaration\") {\n      // @ts-expect-error specifiers may not index node\n      const { specifiers } = node;\n      if (specifiers != null) {\n        // @ts-expect-error refine specifier types\n        const nonDefaultNamedSpecifier = specifiers.find(specifier => {\n          let imported;\n          if (specifier.type === \"ExportSpecifier\") {\n            imported = specifier.local;\n          } else if (specifier.type === \"ImportSpecifier\") {\n            imported = specifier.imported;\n          }\n          if (imported !== undefined) {\n            return imported.type === \"Identifier\"\n              ? imported.name !== \"default\"\n              : imported.value !== \"default\";\n          }\n        });\n        if (nonDefaultNamedSpecifier !== undefined) {\n          this.raise(\n            Errors.ImportJSONBindingNotDefault,\n            nonDefaultNamedSpecifier.loc.start,\n          );\n        }\n      }\n    }\n  }\n\n  isPotentialImportPhase(isExport: boolean): boolean {\n    if (isExport) return false;\n    return (\n      this.isContextual(tt._source) ||\n      this.isContextual(tt._defer) ||\n      (!process.env.BABEL_8_BREAKING && this.isContextual(tt._module))\n    );\n  }\n\n  applyImportPhase(\n    node: Undone<N.ImportDeclaration | N.ExportNamedDeclaration>,\n    isExport: boolean,\n    phase: string | null,\n    loc?: Position,\n  ): void {\n    if (isExport) {\n      if (!process.env.IS_PUBLISH) {\n        if (\n          (!process.env.BABEL_8_BREAKING && phase === \"module\") ||\n          phase === \"source\"\n        ) {\n          throw new Error(\n            `Assertion failure: export declarations do not support the '${phase}' phase.`,\n          );\n        }\n      }\n      return;\n    }\n\n    if (!process.env.BABEL_8_BREAKING && phase === \"module\") {\n      this.expectPlugin(\"importReflection\", loc);\n      (node as N.ImportDeclaration).module = true;\n    } else if (this.hasPlugin(\"importReflection\")) {\n      (node as N.ImportDeclaration).module = false;\n    }\n\n    if (phase === \"source\") {\n      this.expectPlugin(\"sourcePhaseImports\", loc);\n      (node as N.ImportDeclaration).phase = \"source\";\n    } else if (phase === \"defer\") {\n      this.expectPlugin(\"deferredImportEvaluation\", loc);\n      (node as N.ImportDeclaration).phase = \"defer\";\n    } else if (this.hasPlugin(\"sourcePhaseImports\")) {\n      (node as N.ImportDeclaration).phase = null;\n    }\n  }\n\n  /*\n   * Parse `source` in `import source x from \"x\"`, disambiguating\n   * `import source from \"x\"` and `import source from from \"x\"`.\n   *\n   * This function might return an identifier representing the `source`\n   * if it eats `source` and then discovers that it was the default import\n   * binding and not the import reflection.\n   *\n   * This function is also used to parse `import type` and `import typeof`\n   * in the TS and Flow plugins, and for parsing `import defer`.\n   */\n  parseMaybeImportPhase(\n    node: Undone<N.ImportDeclaration | N.TsImportEqualsDeclaration>,\n    isExport: boolean,\n  ): N.Identifier | null {\n    if (!this.isPotentialImportPhase(isExport)) {\n      this.applyImportPhase(\n        node as Undone<N.ImportDeclaration>,\n        isExport,\n        null,\n      );\n      return null;\n    }\n\n    const phaseIdentifier = this.startNode<N.Identifier>();\n    const phaseIdentifierName = this.parseIdentifierName(true);\n\n    const { type } = this.state;\n    const isImportPhase = tokenIsKeywordOrIdentifier(type)\n      ? // OK: import <phase> x from \"foo\";\n        // OK: import <phase> from from \"foo\";\n        // NO: import <phase> from \"foo\";\n        // NO: import <phase> from 'foo';\n        // With the module declarations proposals, we will need further disambiguation\n        // for `import module from from;`.\n        type !== tt._from || this.lookaheadCharCode() === charCodes.lowercaseF\n      : // OK: import <phase> { x } from \"foo\";\n        // OK: import <phase> x from \"foo\";\n        // OK: import <phase> * as T from \"foo\";\n        // NO: import <phase> from \"foo\";\n        // OK: import <phase> \"foo\";\n        // The last one is invalid, we will continue parsing and throw\n        // an error later\n        type !== tt.comma;\n\n    if (isImportPhase) {\n      this.applyImportPhase(\n        node as Undone<N.ImportDeclaration>,\n        isExport,\n        phaseIdentifierName,\n        phaseIdentifier.loc.start,\n      );\n      return null;\n    } else {\n      this.applyImportPhase(\n        node as Undone<N.ImportDeclaration>,\n        isExport,\n        null,\n      );\n      // `<phase>` is a default binding, return it to the main import declaration parser\n      return this.createIdentifier(phaseIdentifier, phaseIdentifierName);\n    }\n  }\n\n  isPrecedingIdImportPhase(\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    phase: string,\n  ) {\n    const { type } = this.state;\n    return tokenIsIdentifier(type)\n      ? // OK: import <phase> x from \"foo\";\n        // OK: import <phase> from from \"foo\";\n        // NO: import <phase> from \"foo\";\n        // NO: import <phase> from 'foo';\n        // With the module declarations proposals, we will need further disambiguation\n        // for `import module from from;`.\n        type !== tt._from || this.lookaheadCharCode() === charCodes.lowercaseF\n      : // OK: import <phase> { x } from \"foo\";\n        // OK: import <phase> x from \"foo\";\n        // OK: import <phase> * as T from \"foo\";\n        // NO: import <phase> from \"foo\";\n        // OK: import <phase> \"foo\";\n        // The last one is invalid, we will continue parsing and throw\n        // an error later\n        type !== tt.comma;\n  }\n\n  // Parses import declaration.\n  // https://tc39.es/ecma262/#prod-ImportDeclaration\n\n  parseImport(this: Parser, node: Undone<N.ImportDeclaration>): N.AnyImport {\n    if (this.match(tt.string)) {\n      // import '...'\n      return this.parseImportSourceAndAttributes(node);\n    }\n\n    return this.parseImportSpecifiersAndAfter(\n      node,\n      this.parseMaybeImportPhase(node, /* isExport */ false),\n    );\n  }\n\n  parseImportSpecifiersAndAfter(\n    this: Parser,\n    node: Undone<N.ImportDeclaration>,\n    maybeDefaultIdentifier: N.Identifier | null,\n  ): N.AnyImport {\n    node.specifiers = [];\n\n    // check if we have a default import like\n    // import React from \"react\";\n    const hasDefault = this.maybeParseDefaultImportSpecifier(\n      node,\n      maybeDefaultIdentifier,\n    );\n    /* we are checking if we do not have a default import, then it is obvious that we need named imports\n     * import { get } from \"axios\";\n     * but if we do have a default import\n     * we need to check if we have a comma after that and\n     * that is where this `|| this.eat` condition comes into play\n     */\n    const parseNext = !hasDefault || this.eat(tt.comma);\n    // if we do have to parse the next set of specifiers, we first check for star imports\n    // import React, * from \"react\";\n    const hasStar = parseNext && this.maybeParseStarImportSpecifier(node);\n    // now we check if we need to parse the next imports\n    // but only if they are not importing * (everything)\n    if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node);\n    this.expectContextual(tt._from);\n\n    return this.parseImportSourceAndAttributes(node);\n  }\n\n  parseImportSourceAndAttributes(\n    this: Parser,\n    node: Undone<N.ImportDeclaration>,\n  ): N.AnyImport {\n    node.specifiers ??= [];\n    node.source = this.parseImportSource();\n    this.maybeParseImportAttributes(node);\n    this.checkImportReflection(node);\n    this.checkJSONModuleImport(node);\n\n    this.semicolon();\n    this.sawUnambiguousESM = true;\n    return this.finishNode(node, \"ImportDeclaration\");\n  }\n\n  parseImportSource(this: Parser): N.StringLiteral {\n    if (!this.match(tt.string)) this.unexpected();\n    return this.parseExprAtom() as N.StringLiteral;\n  }\n\n  parseImportSpecifierLocal<\n    T extends\n      | N.ImportSpecifier\n      | N.ImportDefaultSpecifier\n      | N.ImportNamespaceSpecifier,\n  >(\n    node: Undone<N.ImportDeclaration>,\n    specifier: Undone<T>,\n    type: T[\"type\"],\n  ): void {\n    specifier.local = this.parseIdentifier();\n    node.specifiers.push(this.finishImportSpecifier(specifier, type));\n  }\n\n  finishImportSpecifier<\n    T extends\n      | N.ImportSpecifier\n      | N.ImportDefaultSpecifier\n      | N.ImportNamespaceSpecifier,\n  >(\n    specifier: Undone<T>,\n    type: T[\"type\"],\n    bindingType: BindingFlag = BindingFlag.TYPE_LEXICAL,\n  ) {\n    this.checkLVal(specifier.local, { type }, bindingType);\n    return this.finishNode(specifier, type);\n  }\n\n  /**\n   * parse assert entries\n   *\n   * @see {@link https://tc39.es/proposal-import-attributes/#prod-WithEntries WithEntries}\n   */\n  parseImportAttributes(): N.ImportAttribute[] {\n    this.expect(tt.braceL);\n\n    const attrs = [];\n    const attrNames = new Set();\n\n    do {\n      if (this.match(tt.braceR)) {\n        break;\n      }\n\n      const node = this.startNode<N.ImportAttribute>();\n\n      // parse AssertionKey : IdentifierName, StringLiteral\n      const keyName = this.state.value;\n      // check if we already have an entry for an attribute\n      // if a duplicate entry is found, throw an error\n      // for now this logic will come into play only when someone declares `type` twice\n      if (attrNames.has(keyName)) {\n        this.raise(\n          Errors.ModuleAttributesWithDuplicateKeys,\n          this.state.startLoc,\n          {\n            key: keyName,\n          },\n        );\n      }\n      attrNames.add(keyName);\n      if (this.match(tt.string)) {\n        node.key = this.parseStringLiteral(keyName);\n      } else {\n        node.key = this.parseIdentifier(true);\n      }\n      this.expect(tt.colon);\n\n      if (!this.match(tt.string)) {\n        throw this.raise(\n          Errors.ModuleAttributeInvalidValue,\n          this.state.startLoc,\n        );\n      }\n      node.value = this.parseStringLiteral(this.state.value);\n      attrs.push(this.finishNode(node, \"ImportAttribute\"));\n    } while (this.eat(tt.comma));\n\n    this.expect(tt.braceR);\n\n    return attrs;\n  }\n\n  /**\n   * parse module attributes\n   * @deprecated It will be removed in Babel 8\n   */\n  parseModuleAttributes() {\n    const attrs: N.ImportAttribute[] = [];\n    const attributes = new Set();\n    do {\n      const node = this.startNode<N.ImportAttribute>();\n      node.key = this.parseIdentifier(true);\n\n      if (node.key.name !== \"type\") {\n        this.raise(Errors.ModuleAttributeDifferentFromType, node.key);\n      }\n\n      if (attributes.has(node.key.name)) {\n        this.raise(Errors.ModuleAttributesWithDuplicateKeys, node.key, {\n          key: node.key.name,\n        });\n      }\n      attributes.add(node.key.name);\n      this.expect(tt.colon);\n      if (!this.match(tt.string)) {\n        throw this.raise(\n          Errors.ModuleAttributeInvalidValue,\n          this.state.startLoc,\n        );\n      }\n      node.value = this.parseStringLiteral(this.state.value);\n      attrs.push(this.finishNode(node, \"ImportAttribute\"));\n    } while (this.eat(tt.comma));\n\n    return attrs;\n  }\n\n  maybeParseImportAttributes(\n    node: Undone<\n      N.ImportDeclaration | N.ExportNamedDeclaration | N.ExportAllDeclaration\n    >,\n  ) {\n    let attributes: N.ImportAttribute[];\n    if (!process.env.BABEL_8_BREAKING) {\n      // eslint-disable-next-line no-var\n      var useWith = false;\n    }\n\n    // https://tc39.es/proposal-import-attributes/#prod-WithClause\n    if (this.match(tt._with)) {\n      if (\n        this.hasPrecedingLineBreak() &&\n        this.lookaheadCharCode() === charCodes.leftParenthesis\n      ) {\n        // This will be parsed as a with statement, and we will throw a\n        // better error about it not being supported in strict mode.\n        return;\n      }\n\n      this.next(); // eat `with`\n\n      if (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"moduleAttributes\")) {\n        attributes = this.parseModuleAttributes();\n        this.addExtra(node, \"deprecatedWithLegacySyntax\", true);\n      } else {\n        attributes = this.parseImportAttributes();\n      }\n      if (!process.env.BABEL_8_BREAKING) {\n        useWith = true;\n      }\n    } else if (this.isContextual(tt._assert) && !this.hasPrecedingLineBreak()) {\n      if (\n        !this.hasPlugin(\"deprecatedImportAssert\") &&\n        (process.env.BABEL_8_BREAKING || !this.hasPlugin(\"importAssertions\"))\n      ) {\n        this.raise(Errors.ImportAttributesUseAssert, this.state.startLoc);\n      }\n      if (process.env.BABEL_8_BREAKING || !this.hasPlugin(\"importAssertions\")) {\n        this.addExtra(node, \"deprecatedAssertSyntax\", true);\n      }\n      this.next(); // eat `assert`\n      attributes = this.parseImportAttributes();\n    } else {\n      attributes = [];\n    }\n\n    if (\n      !process.env.BABEL_8_BREAKING &&\n      !useWith &&\n      this.hasPlugin(\"importAssertions\")\n    ) {\n      node.assertions = attributes;\n    } else {\n      node.attributes = attributes;\n    }\n  }\n\n  maybeParseDefaultImportSpecifier(\n    node: Undone<N.ImportDeclaration>,\n    maybeDefaultIdentifier: N.Identifier | null,\n  ): boolean {\n    // import defaultObj, { x, y as z } from '...'\n    if (maybeDefaultIdentifier) {\n      const specifier = this.startNodeAtNode<N.ImportDefaultSpecifier>(\n        maybeDefaultIdentifier,\n      );\n      specifier.local = maybeDefaultIdentifier;\n      node.specifiers.push(\n        this.finishImportSpecifier(specifier, \"ImportDefaultSpecifier\"),\n      );\n      return true;\n    } else if (\n      // We allow keywords, and parseImportSpecifierLocal will report a recoverable error\n      tokenIsKeywordOrIdentifier(this.state.type)\n    ) {\n      this.parseImportSpecifierLocal(\n        node,\n        this.startNode<N.ImportDefaultSpecifier>(),\n        \"ImportDefaultSpecifier\",\n      );\n      return true;\n    }\n    return false;\n  }\n\n  maybeParseStarImportSpecifier(node: Undone<N.ImportDeclaration>): boolean {\n    if (this.match(tt.star)) {\n      const specifier = this.startNode<N.ImportNamespaceSpecifier>();\n      this.next();\n      this.expectContextual(tt._as);\n\n      this.parseImportSpecifierLocal(\n        node,\n        specifier,\n        \"ImportNamespaceSpecifier\",\n      );\n      return true;\n    }\n    return false;\n  }\n\n  parseNamedImportSpecifiers(node: Undone<N.ImportDeclaration>) {\n    let first = true;\n    this.expect(tt.braceL);\n    while (!this.eat(tt.braceR)) {\n      if (first) {\n        first = false;\n      } else {\n        // Detect an attempt to deep destructure\n        if (this.eat(tt.colon)) {\n          throw this.raise(Errors.DestructureNamedImport, this.state.startLoc);\n        }\n\n        this.expect(tt.comma);\n        if (this.eat(tt.braceR)) break;\n      }\n\n      const specifier = this.startNode<N.ImportSpecifier>();\n      const importedIsString = this.match(tt.string);\n      const isMaybeTypeOnly = this.isContextual(tt._type);\n      specifier.imported = this.parseModuleExportName();\n      const importSpecifier = this.parseImportSpecifier(\n        specifier,\n        importedIsString,\n        node.importKind === \"type\" || node.importKind === \"typeof\",\n        isMaybeTypeOnly,\n        undefined,\n      );\n      node.specifiers.push(importSpecifier);\n    }\n  }\n\n  // https://tc39.es/ecma262/#prod-ImportSpecifier\n  parseImportSpecifier(\n    specifier: Undone<N.ImportSpecifier>,\n    importedIsString: boolean,\n    /* used in TypeScript and Flow parser */\n    isInTypeOnlyImport: boolean,\n    isMaybeTypeOnly: boolean,\n    bindingType: BindingFlag | undefined,\n  ): N.ImportSpecifier {\n    if (this.eatContextual(tt._as)) {\n      specifier.local = this.parseIdentifier();\n    } else {\n      const { imported } = specifier;\n      if (importedIsString) {\n        throw this.raise(Errors.ImportBindingIsString, specifier, {\n          importName: (imported as N.StringLiteral).value,\n        });\n      }\n      this.checkReservedWord(\n        (imported as N.Identifier).name,\n        specifier.loc.start,\n        true,\n        true,\n      );\n      if (!specifier.local) {\n        specifier.local = this.cloneIdentifier(imported as N.Identifier);\n      }\n    }\n    return this.finishImportSpecifier(\n      specifier,\n      \"ImportSpecifier\",\n      bindingType,\n    );\n  }\n\n  // This is used in flow and typescript plugin\n  // Determine whether a parameter is a this param\n  isThisParam(\n    param: N.Pattern | N.Identifier | N.TSParameterProperty,\n  ): boolean {\n    return param.type === \"Identifier\" && param.name === \"this\";\n  }\n}\n","import type { Options } from \"../options.ts\";\nimport type * as N from \"../types.ts\";\nimport { getOptions, OptionFlags } from \"../options.ts\";\nimport StatementParser from \"./statement.ts\";\nimport ScopeHandler from \"../util/scope.ts\";\n\nexport type PluginsMap = Map<\n  string,\n  {\n    [x: string]: any;\n  }\n>;\n\nexport default class Parser extends StatementParser {\n  // Forward-declaration so typescript plugin can override jsx plugin\n  // todo(flow->ts) - this probably can be removed\n  // abstract jsxParseOpeningElementAfterName(\n  //   node: N.JSXOpeningElement,\n  // ): N.JSXOpeningElement;\n\n  constructor(\n    options: Options | undefined | null,\n    input: string,\n    pluginsMap: PluginsMap,\n  ) {\n    options = getOptions(options);\n    super(options, input);\n\n    this.options = options;\n    this.initializeScopes();\n    this.plugins = pluginsMap;\n    this.filename = options.sourceFilename;\n    this.startIndex = options.startIndex;\n\n    let optionFlags = 0;\n    if (options.allowAwaitOutsideFunction) {\n      optionFlags |= OptionFlags.AllowAwaitOutsideFunction;\n    }\n    if (options.allowReturnOutsideFunction) {\n      optionFlags |= OptionFlags.AllowReturnOutsideFunction;\n    }\n    if (options.allowImportExportEverywhere) {\n      optionFlags |= OptionFlags.AllowImportExportEverywhere;\n    }\n    if (options.allowSuperOutsideMethod) {\n      optionFlags |= OptionFlags.AllowSuperOutsideMethod;\n    }\n    if (options.allowUndeclaredExports) {\n      optionFlags |= OptionFlags.AllowUndeclaredExports;\n    }\n    if (options.allowNewTargetOutsideFunction) {\n      optionFlags |= OptionFlags.AllowNewTargetOutsideFunction;\n    }\n    if (options.allowYieldOutsideFunction) {\n      optionFlags |= OptionFlags.AllowYieldOutsideFunction;\n    }\n    if (options.ranges) {\n      optionFlags |= OptionFlags.Ranges;\n    }\n    if (options.tokens) {\n      optionFlags |= OptionFlags.Tokens;\n    }\n    if (options.createImportExpressions) {\n      optionFlags |= OptionFlags.CreateImportExpressions;\n    }\n    if (options.createParenthesizedExpressions) {\n      optionFlags |= OptionFlags.CreateParenthesizedExpressions;\n    }\n    if (options.errorRecovery) {\n      optionFlags |= OptionFlags.ErrorRecovery;\n    }\n    if (options.attachComment) {\n      optionFlags |= OptionFlags.AttachComment;\n    }\n    if (options.annexB) {\n      optionFlags |= OptionFlags.AnnexB;\n    }\n\n    this.optionFlags = optionFlags;\n  }\n\n  // This can be overwritten, for example, by the TypeScript plugin.\n  getScopeHandler(): new (...args: any) => ScopeHandler {\n    return ScopeHandler;\n  }\n\n  parse(): N.File {\n    this.enterInitialScopes();\n    const file = this.startNode<N.File>();\n    const program = this.startNode<N.Program>();\n    this.nextToken();\n    file.errors = null;\n    this.parseTopLevel(file, program);\n    file.errors = this.state.errors;\n    file.comments.length = this.state.commentsLen;\n    return file as N.File;\n  }\n}\n","import type { Options } from \"./options.ts\";\nimport {\n  validatePlugins,\n  mixinPluginNames,\n  mixinPlugins,\n} from \"./plugin-utils.ts\";\nexport type {\n  PluginConfig as ParserPlugin,\n  DecoratorsPluginOptions,\n  FlowPluginOptions,\n  PipelineOperatorPluginOptions,\n  RecordAndTuplePluginOptions,\n  TypeScriptPluginOptions,\n} from \"./typings.ts\";\nimport Parser, { type PluginsMap } from \"./parser/index.ts\";\n\nimport type { ExportedTokenType } from \"./tokenizer/types.ts\";\nimport {\n  getExportedToken,\n  tt as internalTokenTypes,\n  type InternalTokenTypes,\n} from \"./tokenizer/types.ts\";\nexport type { Token } from \"./tokenizer/index.ts\";\n\n// TODO: Rather than type-casting the internal AST definitions to the\n// @babel/types one, we should actually unify them.\nimport type { Expression, File } from \"@babel/types\";\nexport type { Expression, File };\n\nexport type ParserOptions = Partial<Options>;\n\nexport interface ParseError {\n  code: string;\n  reasonCode: string;\n}\nexport type ParseResult<Result extends File | Expression = File> = Result & {\n  errors: null | ParseError[];\n};\n\n/**\n * Parse the provided code as an entire ECMAScript program.\n */\nexport function parse(\n  input: string,\n  options?: ParserOptions,\n): ParseResult<File> {\n  if (options?.sourceType === \"unambiguous\") {\n    options = {\n      ...options,\n    };\n    try {\n      options.sourceType = \"module\";\n      const parser = getParser(options, input);\n      const ast = parser.parse();\n\n      if (parser.sawUnambiguousESM) {\n        return ast as unknown as ParseResult<File>;\n      }\n\n      if (parser.ambiguousScriptDifferentAst) {\n        // Top level await introduces code which can be both a valid script and\n        // a valid module, but which produces different ASTs:\n        //    await\n        //    0\n        // can be parsed either as an AwaitExpression, or as two ExpressionStatements.\n        try {\n          options.sourceType = \"script\";\n          return getParser(\n            options,\n            input,\n          ).parse() as unknown as ParseResult<File>;\n        } catch {}\n      } else {\n        // This is both a valid module and a valid script, but\n        // we parse it as a script by default\n        ast.program.sourceType = \"script\";\n      }\n\n      return ast as unknown as ParseResult<File>;\n    } catch (moduleError) {\n      try {\n        options.sourceType = \"script\";\n        return getParser(\n          options,\n          input,\n        ).parse() as unknown as ParseResult<File>;\n      } catch {}\n\n      throw moduleError;\n    }\n  } else {\n    return getParser(options, input).parse() as unknown as ParseResult<File>;\n  }\n}\n\nexport function parseExpression(\n  input: string,\n  options?: ParserOptions,\n): ParseResult<Expression> {\n  const parser = getParser(options, input);\n  if (parser.options.strictMode) {\n    parser.state.strict = true;\n  }\n  return parser.getExpression() as unknown as ParseResult<Expression>;\n}\n\nfunction generateExportedTokenTypes(\n  internalTokenTypes: InternalTokenTypes,\n): Record<string, ExportedTokenType> {\n  const tokenTypes: Record<string, ExportedTokenType> = {};\n  for (const typeName of Object.keys(\n    internalTokenTypes,\n  ) as (keyof InternalTokenTypes)[]) {\n    tokenTypes[typeName] = getExportedToken(internalTokenTypes[typeName]);\n  }\n  return tokenTypes;\n}\n\nexport const tokTypes = generateExportedTokenTypes(internalTokenTypes);\n\nfunction getParser(options: Options | undefined | null, input: string): Parser {\n  let cls = Parser;\n  const pluginsMap: PluginsMap = new Map();\n  if (options?.plugins) {\n    for (const plugin of options.plugins) {\n      let name, opts;\n      if (typeof plugin === \"string\") {\n        name = plugin;\n      } else {\n        [name, opts] = plugin;\n      }\n      if (!pluginsMap.has(name)) {\n        pluginsMap.set(name, opts || {});\n      }\n    }\n    validatePlugins(pluginsMap);\n    cls = getParserClass(pluginsMap);\n  }\n\n  return new cls(options, input, pluginsMap);\n}\n\nconst parserClassCache = new Map<string, new (...args: any) => Parser>();\n\n/** Get a Parser class with plugins applied. */\nfunction getParserClass(\n  pluginsMap: Map<string, any>,\n): new (...args: any) => Parser {\n  const pluginList = [];\n  for (const name of mixinPluginNames) {\n    if (pluginsMap.has(name)) {\n      pluginList.push(name);\n    }\n  }\n  const key = pluginList.join(\"|\");\n  let cls = parserClassCache.get(key);\n  if (!cls) {\n    cls = Parser;\n    for (const plugin of pluginList) {\n      // @ts-expect-error todo(flow->ts)\n      cls = mixinPlugins[plugin](cls);\n    }\n    parserClassCache.set(key, cls);\n  }\n  return cls;\n}\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(global = global || self, factory(global.estreeWalker = {}));\n}(this, (function (exports) { 'use strict';\n\n\t// @ts-check\n\t/** @typedef { import('estree').BaseNode} BaseNode */\n\n\t/** @typedef {{\n\t\tskip: () => void;\n\t\tremove: () => void;\n\t\treplace: (node: BaseNode) => void;\n\t}} WalkerContext */\n\n\tclass WalkerBase {\n\t\tconstructor() {\n\t\t\t/** @type {boolean} */\n\t\t\tthis.should_skip = false;\n\n\t\t\t/** @type {boolean} */\n\t\t\tthis.should_remove = false;\n\n\t\t\t/** @type {BaseNode | null} */\n\t\t\tthis.replacement = null;\n\n\t\t\t/** @type {WalkerContext} */\n\t\t\tthis.context = {\n\t\t\t\tskip: () => (this.should_skip = true),\n\t\t\t\tremove: () => (this.should_remove = true),\n\t\t\t\treplace: (node) => (this.replacement = node)\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t *\n\t\t * @param {any} parent\n\t\t * @param {string} prop\n\t\t * @param {number} index\n\t\t * @param {BaseNode} node\n\t\t */\n\t\treplace(parent, prop, index, node) {\n\t\t\tif (parent) {\n\t\t\t\tif (index !== null) {\n\t\t\t\t\tparent[prop][index] = node;\n\t\t\t\t} else {\n\t\t\t\t\tparent[prop] = node;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t *\n\t\t * @param {any} parent\n\t\t * @param {string} prop\n\t\t * @param {number} index\n\t\t */\n\t\tremove(parent, prop, index) {\n\t\t\tif (parent) {\n\t\t\t\tif (index !== null) {\n\t\t\t\t\tparent[prop].splice(index, 1);\n\t\t\t\t} else {\n\t\t\t\t\tdelete parent[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// @ts-check\n\n\t/** @typedef { import('estree').BaseNode} BaseNode */\n\t/** @typedef { import('./walker.js').WalkerContext} WalkerContext */\n\n\t/** @typedef {(\n\t *    this: WalkerContext,\n\t *    node: BaseNode,\n\t *    parent: BaseNode,\n\t *    key: string,\n\t *    index: number\n\t * ) => void} SyncHandler */\n\n\tclass SyncWalker extends WalkerBase {\n\t\t/**\n\t\t *\n\t\t * @param {SyncHandler} enter\n\t\t * @param {SyncHandler} leave\n\t\t */\n\t\tconstructor(enter, leave) {\n\t\t\tsuper();\n\n\t\t\t/** @type {SyncHandler} */\n\t\t\tthis.enter = enter;\n\n\t\t\t/** @type {SyncHandler} */\n\t\t\tthis.leave = leave;\n\t\t}\n\n\t\t/**\n\t\t *\n\t\t * @param {BaseNode} node\n\t\t * @param {BaseNode} parent\n\t\t * @param {string} [prop]\n\t\t * @param {number} [index]\n\t\t * @returns {BaseNode}\n\t\t */\n\t\tvisit(node, parent, prop, index) {\n\t\t\tif (node) {\n\t\t\t\tif (this.enter) {\n\t\t\t\t\tconst _should_skip = this.should_skip;\n\t\t\t\t\tconst _should_remove = this.should_remove;\n\t\t\t\t\tconst _replacement = this.replacement;\n\t\t\t\t\tthis.should_skip = false;\n\t\t\t\t\tthis.should_remove = false;\n\t\t\t\t\tthis.replacement = null;\n\n\t\t\t\t\tthis.enter.call(this.context, node, parent, prop, index);\n\n\t\t\t\t\tif (this.replacement) {\n\t\t\t\t\t\tnode = this.replacement;\n\t\t\t\t\t\tthis.replace(parent, prop, index, node);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.should_remove) {\n\t\t\t\t\t\tthis.remove(parent, prop, index);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst skipped = this.should_skip;\n\t\t\t\t\tconst removed = this.should_remove;\n\n\t\t\t\t\tthis.should_skip = _should_skip;\n\t\t\t\t\tthis.should_remove = _should_remove;\n\t\t\t\t\tthis.replacement = _replacement;\n\n\t\t\t\t\tif (skipped) return node;\n\t\t\t\t\tif (removed) return null;\n\t\t\t\t}\n\n\t\t\t\tfor (const key in node) {\n\t\t\t\t\tconst value = node[key];\n\n\t\t\t\t\tif (typeof value !== \"object\") {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (Array.isArray(value)) {\n\t\t\t\t\t\tfor (let i = 0; i < value.length; i += 1) {\n\t\t\t\t\t\t\tif (value[i] !== null && typeof value[i].type === 'string') {\n\t\t\t\t\t\t\t\tif (!this.visit(value[i], node, key, i)) {\n\t\t\t\t\t\t\t\t\t// removed\n\t\t\t\t\t\t\t\t\ti--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (value !== null && typeof value.type === \"string\") {\n\t\t\t\t\t\tthis.visit(value, node, key, null);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.leave) {\n\t\t\t\t\tconst _replacement = this.replacement;\n\t\t\t\t\tconst _should_remove = this.should_remove;\n\t\t\t\t\tthis.replacement = null;\n\t\t\t\t\tthis.should_remove = false;\n\n\t\t\t\t\tthis.leave.call(this.context, node, parent, prop, index);\n\n\t\t\t\t\tif (this.replacement) {\n\t\t\t\t\t\tnode = this.replacement;\n\t\t\t\t\t\tthis.replace(parent, prop, index, node);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.should_remove) {\n\t\t\t\t\t\tthis.remove(parent, prop, index);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst removed = this.should_remove;\n\n\t\t\t\t\tthis.replacement = _replacement;\n\t\t\t\t\tthis.should_remove = _should_remove;\n\n\t\t\t\t\tif (removed) return null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn node;\n\t\t}\n\t}\n\n\t// @ts-check\n\n\t/** @typedef { import('estree').BaseNode} BaseNode */\n\t/** @typedef { import('./walker').WalkerContext} WalkerContext */\n\n\t/** @typedef {(\n\t *    this: WalkerContext,\n\t *    node: BaseNode,\n\t *    parent: BaseNode,\n\t *    key: string,\n\t *    index: number\n\t * ) => Promise<void>} AsyncHandler */\n\n\tclass AsyncWalker extends WalkerBase {\n\t\t/**\n\t\t *\n\t\t * @param {AsyncHandler} enter\n\t\t * @param {AsyncHandler} leave\n\t\t */\n\t\tconstructor(enter, leave) {\n\t\t\tsuper();\n\n\t\t\t/** @type {AsyncHandler} */\n\t\t\tthis.enter = enter;\n\n\t\t\t/** @type {AsyncHandler} */\n\t\t\tthis.leave = leave;\n\t\t}\n\n\t\t/**\n\t\t *\n\t\t * @param {BaseNode} node\n\t\t * @param {BaseNode} parent\n\t\t * @param {string} [prop]\n\t\t * @param {number} [index]\n\t\t * @returns {Promise<BaseNode>}\n\t\t */\n\t\tasync visit(node, parent, prop, index) {\n\t\t\tif (node) {\n\t\t\t\tif (this.enter) {\n\t\t\t\t\tconst _should_skip = this.should_skip;\n\t\t\t\t\tconst _should_remove = this.should_remove;\n\t\t\t\t\tconst _replacement = this.replacement;\n\t\t\t\t\tthis.should_skip = false;\n\t\t\t\t\tthis.should_remove = false;\n\t\t\t\t\tthis.replacement = null;\n\n\t\t\t\t\tawait this.enter.call(this.context, node, parent, prop, index);\n\n\t\t\t\t\tif (this.replacement) {\n\t\t\t\t\t\tnode = this.replacement;\n\t\t\t\t\t\tthis.replace(parent, prop, index, node);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.should_remove) {\n\t\t\t\t\t\tthis.remove(parent, prop, index);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst skipped = this.should_skip;\n\t\t\t\t\tconst removed = this.should_remove;\n\n\t\t\t\t\tthis.should_skip = _should_skip;\n\t\t\t\t\tthis.should_remove = _should_remove;\n\t\t\t\t\tthis.replacement = _replacement;\n\n\t\t\t\t\tif (skipped) return node;\n\t\t\t\t\tif (removed) return null;\n\t\t\t\t}\n\n\t\t\t\tfor (const key in node) {\n\t\t\t\t\tconst value = node[key];\n\n\t\t\t\t\tif (typeof value !== \"object\") {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (Array.isArray(value)) {\n\t\t\t\t\t\tfor (let i = 0; i < value.length; i += 1) {\n\t\t\t\t\t\t\tif (value[i] !== null && typeof value[i].type === 'string') {\n\t\t\t\t\t\t\t\tif (!(await this.visit(value[i], node, key, i))) {\n\t\t\t\t\t\t\t\t\t// removed\n\t\t\t\t\t\t\t\t\ti--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (value !== null && typeof value.type === \"string\") {\n\t\t\t\t\t\tawait this.visit(value, node, key, null);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.leave) {\n\t\t\t\t\tconst _replacement = this.replacement;\n\t\t\t\t\tconst _should_remove = this.should_remove;\n\t\t\t\t\tthis.replacement = null;\n\t\t\t\t\tthis.should_remove = false;\n\n\t\t\t\t\tawait this.leave.call(this.context, node, parent, prop, index);\n\n\t\t\t\t\tif (this.replacement) {\n\t\t\t\t\t\tnode = this.replacement;\n\t\t\t\t\t\tthis.replace(parent, prop, index, node);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.should_remove) {\n\t\t\t\t\t\tthis.remove(parent, prop, index);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst removed = this.should_remove;\n\n\t\t\t\t\tthis.replacement = _replacement;\n\t\t\t\t\tthis.should_remove = _should_remove;\n\n\t\t\t\t\tif (removed) return null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn node;\n\t\t}\n\t}\n\n\t// @ts-check\n\n\t/** @typedef { import('estree').BaseNode} BaseNode */\n\t/** @typedef { import('./sync.js').SyncHandler} SyncHandler */\n\t/** @typedef { import('./async.js').AsyncHandler} AsyncHandler */\n\n\t/**\n\t *\n\t * @param {BaseNode} ast\n\t * @param {{\n\t *   enter?: SyncHandler\n\t *   leave?: SyncHandler\n\t * }} walker\n\t * @returns {BaseNode}\n\t */\n\tfunction walk(ast, { enter, leave }) {\n\t\tconst instance = new SyncWalker(enter, leave);\n\t\treturn instance.visit(ast, null);\n\t}\n\n\t/**\n\t *\n\t * @param {BaseNode} ast\n\t * @param {{\n\t *   enter?: AsyncHandler\n\t *   leave?: AsyncHandler\n\t * }} walker\n\t * @returns {Promise<BaseNode>}\n\t */\n\tasync function asyncWalk(ast, { enter, leave }) {\n\t\tconst instance = new AsyncWalker(enter, leave);\n\t\treturn await instance.visit(ast, null);\n\t}\n\n\texports.asyncWalk = asyncWalk;\n\texports.walk = walk;\n\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n  if (0 <= number && number < intToCharMap.length) {\n    return intToCharMap[number];\n  }\n  throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n  var bigA = 65;     // 'A'\n  var bigZ = 90;     // 'Z'\n\n  var littleA = 97;  // 'a'\n  var littleZ = 122; // 'z'\n\n  var zero = 48;     // '0'\n  var nine = 57;     // '9'\n\n  var plus = 43;     // '+'\n  var slash = 47;    // '/'\n\n  var littleOffset = 26;\n  var numberOffset = 52;\n\n  // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n  if (bigA <= charCode && charCode <= bigZ) {\n    return (charCode - bigA);\n  }\n\n  // 26 - 51: abcdefghijklmnopqrstuvwxyz\n  if (littleA <= charCode && charCode <= littleZ) {\n    return (charCode - littleA + littleOffset);\n  }\n\n  // 52 - 61: 0123456789\n  if (zero <= charCode && charCode <= nine) {\n    return (charCode - zero + numberOffset);\n  }\n\n  // 62: +\n  if (charCode == plus) {\n    return 62;\n  }\n\n  // 63: /\n  if (charCode == slash) {\n    return 63;\n  }\n\n  // Invalid base64 digit.\n  return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n *  * Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n *  * Redistributions in binary form must reproduce the above\n *    copyright notice, this list of conditions and the following\n *    disclaimer in the documentation and/or other materials provided\n *    with the distribution.\n *  * Neither the name of Google Inc. nor the names of its\n *    contributors may be used to endorse or promote products derived\n *    from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n//   Continuation\n//   |    Sign\n//   |    |\n//   V    V\n//   101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit.  For example, as decimals:\n *   1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n *   2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n  return aValue < 0\n    ? ((-aValue) << 1) + 1\n    : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit.  For example, as decimals:\n *   2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n *   4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n  var isNegative = (aValue & 1) === 1;\n  var shifted = aValue >> 1;\n  return isNegative\n    ? -shifted\n    : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n  var encoded = \"\";\n  var digit;\n\n  var vlq = toVLQSigned(aValue);\n\n  do {\n    digit = vlq & VLQ_BASE_MASK;\n    vlq >>>= VLQ_BASE_SHIFT;\n    if (vlq > 0) {\n      // There are still more digits in this value, so we must make sure the\n      // continuation bit is marked.\n      digit |= VLQ_CONTINUATION_BIT;\n    }\n    encoded += base64.encode(digit);\n  } while (vlq > 0);\n\n  return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n  var strLen = aStr.length;\n  var result = 0;\n  var shift = 0;\n  var continuation, digit;\n\n  do {\n    if (aIndex >= strLen) {\n      throw new Error(\"Expected more digits in base 64 VLQ value.\");\n    }\n\n    digit = base64.decode(aStr.charCodeAt(aIndex++));\n    if (digit === -1) {\n      throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n    }\n\n    continuation = !!(digit & VLQ_CONTINUATION_BIT);\n    digit &= VLQ_BASE_MASK;\n    result = result + (digit << shift);\n    shift += VLQ_BASE_SHIFT;\n  } while (continuation);\n\n  aOutParam.value = fromVLQSigned(result);\n  aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n  if (aName in aArgs) {\n    return aArgs[aName];\n  } else if (arguments.length === 3) {\n    return aDefaultValue;\n  } else {\n    throw new Error('\"' + aName + '\" is a required argument.');\n  }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n  var match = aUrl.match(urlRegexp);\n  if (!match) {\n    return null;\n  }\n  return {\n    scheme: match[1],\n    auth: match[2],\n    host: match[3],\n    port: match[4],\n    path: match[5]\n  };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n  var url = '';\n  if (aParsedUrl.scheme) {\n    url += aParsedUrl.scheme + ':';\n  }\n  url += '//';\n  if (aParsedUrl.auth) {\n    url += aParsedUrl.auth + '@';\n  }\n  if (aParsedUrl.host) {\n    url += aParsedUrl.host;\n  }\n  if (aParsedUrl.port) {\n    url += \":\" + aParsedUrl.port\n  }\n  if (aParsedUrl.path) {\n    url += aParsedUrl.path;\n  }\n  return url;\n}\nexports.urlGenerate = urlGenerate;\n\nvar MAX_CACHED_INPUTS = 32;\n\n/**\n * Takes some function `f(input) -> result` and returns a memoized version of\n * `f`.\n *\n * We keep at most `MAX_CACHED_INPUTS` memoized results of `f` alive. The\n * memoization is a dumb-simple, linear least-recently-used cache.\n */\nfunction lruMemoize(f) {\n  var cache = [];\n\n  return function(input) {\n    for (var i = 0; i < cache.length; i++) {\n      if (cache[i].input === input) {\n        var temp = cache[0];\n        cache[0] = cache[i];\n        cache[i] = temp;\n        return cache[0].result;\n      }\n    }\n\n    var result = f(input);\n\n    cache.unshift({\n      input,\n      result,\n    });\n\n    if (cache.length > MAX_CACHED_INPUTS) {\n      cache.pop();\n    }\n\n    return result;\n  };\n}\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '<dir>/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nvar normalize = lruMemoize(function normalize(aPath) {\n  var path = aPath;\n  var url = urlParse(aPath);\n  if (url) {\n    if (!url.path) {\n      return aPath;\n    }\n    path = url.path;\n  }\n  var isAbsolute = exports.isAbsolute(path);\n  // Split the path into parts between `/` characters. This is much faster than\n  // using `.split(/\\/+/g)`.\n  var parts = [];\n  var start = 0;\n  var i = 0;\n  while (true) {\n    start = i;\n    i = path.indexOf(\"/\", start);\n    if (i === -1) {\n      parts.push(path.slice(start));\n      break;\n    } else {\n      parts.push(path.slice(start, i));\n      while (i < path.length && path[i] === \"/\") {\n        i++;\n      }\n    }\n  }\n\n  for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n    part = parts[i];\n    if (part === '.') {\n      parts.splice(i, 1);\n    } else if (part === '..') {\n      up++;\n    } else if (up > 0) {\n      if (part === '') {\n        // The first part is blank if the path is absolute. Trying to go\n        // above the root is a no-op. Therefore we can remove all '..' parts\n        // directly after the root.\n        parts.splice(i + 1, up);\n        up = 0;\n      } else {\n        parts.splice(i, 2);\n        up--;\n      }\n    }\n  }\n  path = parts.join('/');\n\n  if (path === '') {\n    path = isAbsolute ? '/' : '.';\n  }\n\n  if (url) {\n    url.path = path;\n    return urlGenerate(url);\n  }\n  return path;\n});\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n *   scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n *   first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n *   is updated with the result and aRoot is returned. Otherwise the result\n *   is returned.\n *   - If aPath is absolute, the result is aPath.\n *   - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n  if (aRoot === \"\") {\n    aRoot = \".\";\n  }\n  if (aPath === \"\") {\n    aPath = \".\";\n  }\n  var aPathUrl = urlParse(aPath);\n  var aRootUrl = urlParse(aRoot);\n  if (aRootUrl) {\n    aRoot = aRootUrl.path || '/';\n  }\n\n  // `join(foo, '//www.example.org')`\n  if (aPathUrl && !aPathUrl.scheme) {\n    if (aRootUrl) {\n      aPathUrl.scheme = aRootUrl.scheme;\n    }\n    return urlGenerate(aPathUrl);\n  }\n\n  if (aPathUrl || aPath.match(dataUrlRegexp)) {\n    return aPath;\n  }\n\n  // `join('http://', 'www.example.com')`\n  if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n    aRootUrl.host = aPath;\n    return urlGenerate(aRootUrl);\n  }\n\n  var joined = aPath.charAt(0) === '/'\n    ? aPath\n    : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n  if (aRootUrl) {\n    aRootUrl.path = joined;\n    return urlGenerate(aRootUrl);\n  }\n  return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n  return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n  if (aRoot === \"\") {\n    aRoot = \".\";\n  }\n\n  aRoot = aRoot.replace(/\\/$/, '');\n\n  // It is possible for the path to be above the root. In this case, simply\n  // checking whether the root is a prefix of the path won't work. Instead, we\n  // need to remove components from the root one by one, until either we find\n  // a prefix that fits, or we run out of components to remove.\n  var level = 0;\n  while (aPath.indexOf(aRoot + '/') !== 0) {\n    var index = aRoot.lastIndexOf(\"/\");\n    if (index < 0) {\n      return aPath;\n    }\n\n    // If the only part of the root that is left is the scheme (i.e. http://,\n    // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n    // have exhausted all components, so the path is not relative to the root.\n    aRoot = aRoot.slice(0, index);\n    if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n      return aPath;\n    }\n\n    ++level;\n  }\n\n  // Make sure we add a \"../\" for each component we removed from the root.\n  return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n  var obj = Object.create(null);\n  return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n  return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n  if (isProtoString(aStr)) {\n    return '$' + aStr;\n  }\n\n  return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n  if (isProtoString(aStr)) {\n    return aStr.slice(1);\n  }\n\n  return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n  if (!s) {\n    return false;\n  }\n\n  var length = s.length;\n\n  if (length < 9 /* \"__proto__\".length */) {\n    return false;\n  }\n\n  if (s.charCodeAt(length - 1) !== 95  /* '_' */ ||\n      s.charCodeAt(length - 2) !== 95  /* '_' */ ||\n      s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n      s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n      s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n      s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n      s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n      s.charCodeAt(length - 8) !== 95  /* '_' */ ||\n      s.charCodeAt(length - 9) !== 95  /* '_' */) {\n    return false;\n  }\n\n  for (var i = length - 10; i >= 0; i--) {\n    if (s.charCodeAt(i) !== 36 /* '$' */) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n  var cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0 || onlyCompareOriginal) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\nfunction compareByOriginalPositionsNoSource(mappingA, mappingB, onlyCompareOriginal) {\n  var cmp\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0 || onlyCompareOriginal) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositionsNoSource = compareByOriginalPositionsNoSource;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n  var cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0 || onlyCompareGenerated) {\n    return cmp;\n  }\n\n  cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction compareByGeneratedPositionsDeflatedNoLine(mappingA, mappingB, onlyCompareGenerated) {\n  var cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0 || onlyCompareGenerated) {\n    return cmp;\n  }\n\n  cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflatedNoLine = compareByGeneratedPositionsDeflatedNoLine;\n\nfunction strcmp(aStr1, aStr2) {\n  if (aStr1 === aStr2) {\n    return 0;\n  }\n\n  if (aStr1 === null) {\n    return 1; // aStr2 !== null\n  }\n\n  if (aStr2 === null) {\n    return -1; // aStr1 !== null\n  }\n\n  if (aStr1 > aStr2) {\n    return 1;\n  }\n\n  return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n  var cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n  return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n  sourceURL = sourceURL || '';\n\n  if (sourceRoot) {\n    // This follows what Chrome does.\n    if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n      sourceRoot += '/';\n    }\n    // The spec says:\n    //   Line 4: An optional source root, useful for relocating source\n    //   files on a server or removing repeated values in the\n    //   “sources” entry.  This value is prepended to the individual\n    //   entries in the “source” field.\n    sourceURL = sourceRoot + sourceURL;\n  }\n\n  // Historically, SourceMapConsumer did not take the sourceMapURL as\n  // a parameter.  This mode is still somewhat supported, which is why\n  // this code block is conditional.  However, it's preferable to pass\n  // the source map URL to SourceMapConsumer, so that this function\n  // can implement the source URL resolution algorithm as outlined in\n  // the spec.  This block is basically the equivalent of:\n  //    new URL(sourceURL, sourceMapURL).toString()\n  // ... except it avoids using URL, which wasn't available in the\n  // older releases of node still supported by this library.\n  //\n  // The spec says:\n  //   If the sources are not absolute URLs after prepending of the\n  //   “sourceRoot”, the sources are resolved relative to the\n  //   SourceMap (like resolving script src in a html document).\n  if (sourceMapURL) {\n    var parsed = urlParse(sourceMapURL);\n    if (!parsed) {\n      throw new Error(\"sourceMapURL could not be parsed\");\n    }\n    if (parsed.path) {\n      // Strip the last path component, but keep the \"/\".\n      var index = parsed.path.lastIndexOf('/');\n      if (index >= 0) {\n        parsed.path = parsed.path.substring(0, index + 1);\n      }\n    }\n    sourceURL = join(urlGenerate(parsed), sourceURL);\n  }\n\n  return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n  this._array = [];\n  this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n  var set = new ArraySet();\n  for (var i = 0, len = aArray.length; i < len; i++) {\n    set.add(aArray[i], aAllowDuplicates);\n  }\n  return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n  return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n  var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n  var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n  var idx = this._array.length;\n  if (!isDuplicate || aAllowDuplicates) {\n    this._array.push(aStr);\n  }\n  if (!isDuplicate) {\n    if (hasNativeMap) {\n      this._set.set(aStr, idx);\n    } else {\n      this._set[sStr] = idx;\n    }\n  }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n  if (hasNativeMap) {\n    return this._set.has(aStr);\n  } else {\n    var sStr = util.toSetString(aStr);\n    return has.call(this._set, sStr);\n  }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n  if (hasNativeMap) {\n    var idx = this._set.get(aStr);\n    if (idx >= 0) {\n        return idx;\n    }\n  } else {\n    var sStr = util.toSetString(aStr);\n    if (has.call(this._set, sStr)) {\n      return this._set[sStr];\n    }\n  }\n\n  throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n  if (aIdx >= 0 && aIdx < this._array.length) {\n    return this._array[aIdx];\n  }\n  throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n  return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n  // Optimized for most common case\n  var lineA = mappingA.generatedLine;\n  var lineB = mappingB.generatedLine;\n  var columnA = mappingA.generatedColumn;\n  var columnB = mappingB.generatedColumn;\n  return lineB > lineA || lineB == lineA && columnB >= columnA ||\n         util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n  this._array = [];\n  this._sorted = true;\n  // Serves as infimum\n  this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n  function MappingList_forEach(aCallback, aThisArg) {\n    this._array.forEach(aCallback, aThisArg);\n  };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n  if (generatedPositionAfter(this._last, aMapping)) {\n    this._last = aMapping;\n    this._array.push(aMapping);\n  } else {\n    this._sorted = false;\n    this._array.push(aMapping);\n  }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n  if (!this._sorted) {\n    this._array.sort(util.compareByGeneratedPositionsInflated);\n    this._sorted = true;\n  }\n  return this._array;\n};\n\nexports.MappingList = MappingList;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n *   - file: The filename of the generated source.\n *   - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n  if (!aArgs) {\n    aArgs = {};\n  }\n  this._file = util.getArg(aArgs, 'file', null);\n  this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n  this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n  this._ignoreInvalidMapping = util.getArg(aArgs, 'ignoreInvalidMapping', false);\n  this._sources = new ArraySet();\n  this._names = new ArraySet();\n  this._mappings = new MappingList();\n  this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n  function SourceMapGenerator_fromSourceMap(aSourceMapConsumer, generatorOps) {\n    var sourceRoot = aSourceMapConsumer.sourceRoot;\n    var generator = new SourceMapGenerator(Object.assign(generatorOps || {}, {\n      file: aSourceMapConsumer.file,\n      sourceRoot: sourceRoot\n    }));\n    aSourceMapConsumer.eachMapping(function (mapping) {\n      var newMapping = {\n        generated: {\n          line: mapping.generatedLine,\n          column: mapping.generatedColumn\n        }\n      };\n\n      if (mapping.source != null) {\n        newMapping.source = mapping.source;\n        if (sourceRoot != null) {\n          newMapping.source = util.relative(sourceRoot, newMapping.source);\n        }\n\n        newMapping.original = {\n          line: mapping.originalLine,\n          column: mapping.originalColumn\n        };\n\n        if (mapping.name != null) {\n          newMapping.name = mapping.name;\n        }\n      }\n\n      generator.addMapping(newMapping);\n    });\n    aSourceMapConsumer.sources.forEach(function (sourceFile) {\n      var sourceRelative = sourceFile;\n      if (sourceRoot !== null) {\n        sourceRelative = util.relative(sourceRoot, sourceFile);\n      }\n\n      if (!generator._sources.has(sourceRelative)) {\n        generator._sources.add(sourceRelative);\n      }\n\n      var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        generator.setSourceContent(sourceFile, content);\n      }\n    });\n    return generator;\n  };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n *   - generated: An object with the generated line and column positions.\n *   - original: An object with the original line and column positions.\n *   - source: The original source file (relative to the sourceRoot).\n *   - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n  function SourceMapGenerator_addMapping(aArgs) {\n    var generated = util.getArg(aArgs, 'generated');\n    var original = util.getArg(aArgs, 'original', null);\n    var source = util.getArg(aArgs, 'source', null);\n    var name = util.getArg(aArgs, 'name', null);\n\n    if (!this._skipValidation) {\n      if (this._validateMapping(generated, original, source, name) === false) {\n        return;\n      }\n    }\n\n    if (source != null) {\n      source = String(source);\n      if (!this._sources.has(source)) {\n        this._sources.add(source);\n      }\n    }\n\n    if (name != null) {\n      name = String(name);\n      if (!this._names.has(name)) {\n        this._names.add(name);\n      }\n    }\n\n    this._mappings.add({\n      generatedLine: generated.line,\n      generatedColumn: generated.column,\n      originalLine: original != null && original.line,\n      originalColumn: original != null && original.column,\n      source: source,\n      name: name\n    });\n  };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n  function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n    var source = aSourceFile;\n    if (this._sourceRoot != null) {\n      source = util.relative(this._sourceRoot, source);\n    }\n\n    if (aSourceContent != null) {\n      // Add the source content to the _sourcesContents map.\n      // Create a new _sourcesContents map if the property is null.\n      if (!this._sourcesContents) {\n        this._sourcesContents = Object.create(null);\n      }\n      this._sourcesContents[util.toSetString(source)] = aSourceContent;\n    } else if (this._sourcesContents) {\n      // Remove the source file from the _sourcesContents map.\n      // If the _sourcesContents map is empty, set the property to null.\n      delete this._sourcesContents[util.toSetString(source)];\n      if (Object.keys(this._sourcesContents).length === 0) {\n        this._sourcesContents = null;\n      }\n    }\n  };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n *        If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n *        to be applied. If relative, it is relative to the SourceMapConsumer.\n *        This parameter is needed when the two source maps aren't in the same\n *        directory, and the source map to be applied contains relative source\n *        paths. If so, those relative source paths need to be rewritten\n *        relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n  function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n    var sourceFile = aSourceFile;\n    // If aSourceFile is omitted, we will use the file property of the SourceMap\n    if (aSourceFile == null) {\n      if (aSourceMapConsumer.file == null) {\n        throw new Error(\n          'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n          'or the source map\\'s \"file\" property. Both were omitted.'\n        );\n      }\n      sourceFile = aSourceMapConsumer.file;\n    }\n    var sourceRoot = this._sourceRoot;\n    // Make \"sourceFile\" relative if an absolute Url is passed.\n    if (sourceRoot != null) {\n      sourceFile = util.relative(sourceRoot, sourceFile);\n    }\n    // Applying the SourceMap can add and remove items from the sources and\n    // the names array.\n    var newSources = new ArraySet();\n    var newNames = new ArraySet();\n\n    // Find mappings for the \"sourceFile\"\n    this._mappings.unsortedForEach(function (mapping) {\n      if (mapping.source === sourceFile && mapping.originalLine != null) {\n        // Check if it can be mapped by the source map, then update the mapping.\n        var original = aSourceMapConsumer.originalPositionFor({\n          line: mapping.originalLine,\n          column: mapping.originalColumn\n        });\n        if (original.source != null) {\n          // Copy mapping\n          mapping.source = original.source;\n          if (aSourceMapPath != null) {\n            mapping.source = util.join(aSourceMapPath, mapping.source)\n          }\n          if (sourceRoot != null) {\n            mapping.source = util.relative(sourceRoot, mapping.source);\n          }\n          mapping.originalLine = original.line;\n          mapping.originalColumn = original.column;\n          if (original.name != null) {\n            mapping.name = original.name;\n          }\n        }\n      }\n\n      var source = mapping.source;\n      if (source != null && !newSources.has(source)) {\n        newSources.add(source);\n      }\n\n      var name = mapping.name;\n      if (name != null && !newNames.has(name)) {\n        newNames.add(name);\n      }\n\n    }, this);\n    this._sources = newSources;\n    this._names = newNames;\n\n    // Copy sourcesContents of applied map.\n    aSourceMapConsumer.sources.forEach(function (sourceFile) {\n      var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        if (aSourceMapPath != null) {\n          sourceFile = util.join(aSourceMapPath, sourceFile);\n        }\n        if (sourceRoot != null) {\n          sourceFile = util.relative(sourceRoot, sourceFile);\n        }\n        this.setSourceContent(sourceFile, content);\n      }\n    }, this);\n  };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n *   1. Just the generated position.\n *   2. The Generated position, original position, and original source.\n *   3. Generated and original position, original source, as well as a name\n *      token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n  function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n                                              aName) {\n    // When aOriginal is truthy but has empty values for .line and .column,\n    // it is most likely a programmer error. In this case we throw a very\n    // specific error message to try to guide them the right way.\n    // For example: https://github.com/Polymer/polymer-bundler/pull/519\n    if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n      var message = 'original.line and original.column are not numbers -- you probably meant to omit ' +\n      'the original mapping entirely and only map the generated position. If so, pass ' +\n      'null for the original mapping instead of an object with empty or null values.'\n\n      if (this._ignoreInvalidMapping) {\n        if (typeof console !== 'undefined' && console.warn) {\n          console.warn(message);\n        }\n        return false;\n      } else {\n        throw new Error(message);\n      }\n    }\n\n    if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n        && aGenerated.line > 0 && aGenerated.column >= 0\n        && !aOriginal && !aSource && !aName) {\n      // Case 1.\n      return;\n    }\n    else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n             && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n             && aGenerated.line > 0 && aGenerated.column >= 0\n             && aOriginal.line > 0 && aOriginal.column >= 0\n             && aSource) {\n      // Cases 2 and 3.\n      return;\n    }\n    else {\n      var message = 'Invalid mapping: ' + JSON.stringify({\n        generated: aGenerated,\n        source: aSource,\n        original: aOriginal,\n        name: aName\n      });\n\n      if (this._ignoreInvalidMapping) {\n        if (typeof console !== 'undefined' && console.warn) {\n          console.warn(message);\n        }\n        return false;\n      } else {\n        throw new Error(message)\n      }\n    }\n  };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n  function SourceMapGenerator_serializeMappings() {\n    var previousGeneratedColumn = 0;\n    var previousGeneratedLine = 1;\n    var previousOriginalColumn = 0;\n    var previousOriginalLine = 0;\n    var previousName = 0;\n    var previousSource = 0;\n    var result = '';\n    var next;\n    var mapping;\n    var nameIdx;\n    var sourceIdx;\n\n    var mappings = this._mappings.toArray();\n    for (var i = 0, len = mappings.length; i < len; i++) {\n      mapping = mappings[i];\n      next = ''\n\n      if (mapping.generatedLine !== previousGeneratedLine) {\n        previousGeneratedColumn = 0;\n        while (mapping.generatedLine !== previousGeneratedLine) {\n          next += ';';\n          previousGeneratedLine++;\n        }\n      }\n      else {\n        if (i > 0) {\n          if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n            continue;\n          }\n          next += ',';\n        }\n      }\n\n      next += base64VLQ.encode(mapping.generatedColumn\n                                 - previousGeneratedColumn);\n      previousGeneratedColumn = mapping.generatedColumn;\n\n      if (mapping.source != null) {\n        sourceIdx = this._sources.indexOf(mapping.source);\n        next += base64VLQ.encode(sourceIdx - previousSource);\n        previousSource = sourceIdx;\n\n        // lines are stored 0-based in SourceMap spec version 3\n        next += base64VLQ.encode(mapping.originalLine - 1\n                                   - previousOriginalLine);\n        previousOriginalLine = mapping.originalLine - 1;\n\n        next += base64VLQ.encode(mapping.originalColumn\n                                   - previousOriginalColumn);\n        previousOriginalColumn = mapping.originalColumn;\n\n        if (mapping.name != null) {\n          nameIdx = this._names.indexOf(mapping.name);\n          next += base64VLQ.encode(nameIdx - previousName);\n          previousName = nameIdx;\n        }\n      }\n\n      result += next;\n    }\n\n    return result;\n  };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n  function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n    return aSources.map(function (source) {\n      if (!this._sourcesContents) {\n        return null;\n      }\n      if (aSourceRoot != null) {\n        source = util.relative(aSourceRoot, source);\n      }\n      var key = util.toSetString(source);\n      return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n        ? this._sourcesContents[key]\n        : null;\n    }, this);\n  };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n  function SourceMapGenerator_toJSON() {\n    var map = {\n      version: this._version,\n      sources: this._sources.toArray(),\n      names: this._names.toArray(),\n      mappings: this._serializeMappings()\n    };\n    if (this._file != null) {\n      map.file = this._file;\n    }\n    if (this._sourceRoot != null) {\n      map.sourceRoot = this._sourceRoot;\n    }\n    if (this._sourcesContents) {\n      map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n    }\n\n    return map;\n  };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n  function SourceMapGenerator_toString() {\n    return JSON.stringify(this.toJSON());\n  };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n *     'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n  // This function terminates when one of the following is true:\n  //\n  //   1. We find the exact element we are looking for.\n  //\n  //   2. We did not find the exact element, but we can return the index of\n  //      the next-closest element.\n  //\n  //   3. We did not find the exact element, and there is no next-closest\n  //      element than the one we are searching for, so we return -1.\n  var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n  var cmp = aCompare(aNeedle, aHaystack[mid], true);\n  if (cmp === 0) {\n    // Found the element we are looking for.\n    return mid;\n  }\n  else if (cmp > 0) {\n    // Our needle is greater than aHaystack[mid].\n    if (aHigh - mid > 1) {\n      // The element is in the upper half.\n      return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n    }\n\n    // The exact needle element was not found in this haystack. Determine if\n    // we are in termination case (3) or (2) and return the appropriate thing.\n    if (aBias == exports.LEAST_UPPER_BOUND) {\n      return aHigh < aHaystack.length ? aHigh : -1;\n    } else {\n      return mid;\n    }\n  }\n  else {\n    // Our needle is less than aHaystack[mid].\n    if (mid - aLow > 1) {\n      // The element is in the lower half.\n      return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n    }\n\n    // we are in termination case (3) or (2) and return the appropriate thing.\n    if (aBias == exports.LEAST_UPPER_BOUND) {\n      return mid;\n    } else {\n      return aLow < 0 ? -1 : aLow;\n    }\n  }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n *     array and returns -1, 0, or 1 depending on whether the needle is less\n *     than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n *     'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n *     Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n  if (aHaystack.length === 0) {\n    return -1;\n  }\n\n  var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n                              aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n  if (index < 0) {\n    return -1;\n  }\n\n  // We have found either the exact element, or the next-closest element than\n  // the one we are searching for. However, there may be more than one such\n  // element. Make sure we always return the smallest of these.\n  while (index - 1 >= 0) {\n    if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n      break;\n    }\n    --index;\n  }\n\n  return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\nfunction SortTemplate(comparator) {\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n *        The array.\n * @param {Number} x\n *        The index of the first item.\n * @param {Number} y\n *        The index of the second item.\n */\nfunction swap(ary, x, y) {\n  var temp = ary[x];\n  ary[x] = ary[y];\n  ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n *        The lower bound on the range.\n * @param {Number} high\n *        The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n  return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n *        An array to sort.\n * @param {function} comparator\n *        Function to use to compare two items.\n * @param {Number} p\n *        Start index of the array\n * @param {Number} r\n *        End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n  // If our lower bound is less than our upper bound, we (1) partition the\n  // array into two pieces and (2) recurse on each half. If it is not, this is\n  // the empty array and our base case.\n\n  if (p < r) {\n    // (1) Partitioning.\n    //\n    // The partitioning chooses a pivot between `p` and `r` and moves all\n    // elements that are less than or equal to the pivot to the before it, and\n    // all the elements that are greater than it after it. The effect is that\n    // once partition is done, the pivot is in the exact place it will be when\n    // the array is put in sorted order, and it will not need to be moved\n    // again. This runs in O(n) time.\n\n    // Always choose a random pivot so that an input array which is reverse\n    // sorted does not cause O(n^2) running time.\n    var pivotIndex = randomIntInRange(p, r);\n    var i = p - 1;\n\n    swap(ary, pivotIndex, r);\n    var pivot = ary[r];\n\n    // Immediately after `j` is incremented in this loop, the following hold\n    // true:\n    //\n    //   * Every element in `ary[p .. i]` is less than or equal to the pivot.\n    //\n    //   * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n    for (var j = p; j < r; j++) {\n      if (comparator(ary[j], pivot, false) <= 0) {\n        i += 1;\n        swap(ary, i, j);\n      }\n    }\n\n    swap(ary, i + 1, j);\n    var q = i + 1;\n\n    // (2) Recurse on each half.\n\n    doQuickSort(ary, comparator, p, q - 1);\n    doQuickSort(ary, comparator, q + 1, r);\n  }\n}\n\n  return doQuickSort;\n}\n\nfunction cloneSort(comparator) {\n  let template = SortTemplate.toString();\n  let templateFn = new Function(`return ${template}`)();\n  return templateFn(comparator);\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n *        An array to sort.\n * @param {function} comparator\n *        Function to use to compare two items.\n */\n\nlet sortCache = new WeakMap();\nexports.quickSort = function (ary, comparator, start = 0) {\n  let doQuickSort = sortCache.get(comparator);\n  if (doQuickSort === void 0) {\n    doQuickSort = cloneSort(comparator);\n    sortCache.set(comparator, doQuickSort);\n  }\n  doQuickSort(ary, comparator, start, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n  var sourceMap = aSourceMap;\n  if (typeof aSourceMap === 'string') {\n    sourceMap = util.parseSourceMapInput(aSourceMap);\n  }\n\n  return sourceMap.sections != null\n    ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n    : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n  return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n//     {\n//       generatedLine: The line number in the generated code,\n//       generatedColumn: The column number in the generated code,\n//       source: The path to the original source file that generated this\n//               chunk of code,\n//       originalLine: The line number in the original source that\n//                     corresponds to this chunk of generated code,\n//       originalColumn: The column number in the original source that\n//                       corresponds to this chunk of generated code,\n//       name: The name of the original symbol which generated this chunk of\n//             code.\n//     }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n  configurable: true,\n  enumerable: true,\n  get: function () {\n    if (!this.__generatedMappings) {\n      this._parseMappings(this._mappings, this.sourceRoot);\n    }\n\n    return this.__generatedMappings;\n  }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n  configurable: true,\n  enumerable: true,\n  get: function () {\n    if (!this.__originalMappings) {\n      this._parseMappings(this._mappings, this.sourceRoot);\n    }\n\n    return this.__originalMappings;\n  }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n  function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n    var c = aStr.charAt(index);\n    return c === \";\" || c === \",\";\n  };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n  function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n    throw new Error(\"Subclasses must implement _parseMappings\");\n  };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n *        The function that is called with each mapping.\n * @param Object aContext\n *        Optional. If specified, this object will be the value of `this` every\n *        time that `aCallback` is called.\n * @param aOrder\n *        Either `SourceMapConsumer.GENERATED_ORDER` or\n *        `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n *        iterate over the mappings sorted by the generated file's line/column\n *        order or the original's source/line/column order, respectively. Defaults to\n *        `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n  function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n    var context = aContext || null;\n    var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n    var mappings;\n    switch (order) {\n    case SourceMapConsumer.GENERATED_ORDER:\n      mappings = this._generatedMappings;\n      break;\n    case SourceMapConsumer.ORIGINAL_ORDER:\n      mappings = this._originalMappings;\n      break;\n    default:\n      throw new Error(\"Unknown order of iteration.\");\n    }\n\n    var sourceRoot = this.sourceRoot;\n    var boundCallback = aCallback.bind(context);\n    var names = this._names;\n    var sources = this._sources;\n    var sourceMapURL = this._sourceMapURL;\n\n    for (var i = 0, n = mappings.length; i < n; i++) {\n      var mapping = mappings[i];\n      var source = mapping.source === null ? null : sources.at(mapping.source);\n      if(source !== null) {\n        source = util.computeSourceURL(sourceRoot, source, sourceMapURL);\n      }\n      boundCallback({\n        source: source,\n        generatedLine: mapping.generatedLine,\n        generatedColumn: mapping.generatedColumn,\n        originalLine: mapping.originalLine,\n        originalColumn: mapping.originalColumn,\n        name: mapping.name === null ? null : names.at(mapping.name)\n      });\n    }\n  };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n *   - source: The filename of the original source.\n *   - line: The line number in the original source.  The line number is 1-based.\n *   - column: Optional. the column number in the original source.\n *    The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n *   - line: The line number in the generated source, or null.  The\n *    line number is 1-based.\n *   - column: The column number in the generated source, or null.\n *    The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n  function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n    var line = util.getArg(aArgs, 'line');\n\n    // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n    // returns the index of the closest mapping less than the needle. By\n    // setting needle.originalColumn to 0, we thus find the last mapping for\n    // the given line, provided such a mapping exists.\n    var needle = {\n      source: util.getArg(aArgs, 'source'),\n      originalLine: line,\n      originalColumn: util.getArg(aArgs, 'column', 0)\n    };\n\n    needle.source = this._findSourceIndex(needle.source);\n    if (needle.source < 0) {\n      return [];\n    }\n\n    var mappings = [];\n\n    var index = this._findMapping(needle,\n                                  this._originalMappings,\n                                  \"originalLine\",\n                                  \"originalColumn\",\n                                  util.compareByOriginalPositions,\n                                  binarySearch.LEAST_UPPER_BOUND);\n    if (index >= 0) {\n      var mapping = this._originalMappings[index];\n\n      if (aArgs.column === undefined) {\n        var originalLine = mapping.originalLine;\n\n        // Iterate until either we run out of mappings, or we run into\n        // a mapping for a different line than the one we found. Since\n        // mappings are sorted, this is guaranteed to find all mappings for\n        // the line we found.\n        while (mapping && mapping.originalLine === originalLine) {\n          mappings.push({\n            line: util.getArg(mapping, 'generatedLine', null),\n            column: util.getArg(mapping, 'generatedColumn', null),\n            lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n          });\n\n          mapping = this._originalMappings[++index];\n        }\n      } else {\n        var originalColumn = mapping.originalColumn;\n\n        // Iterate until either we run out of mappings, or we run into\n        // a mapping for a different line than the one we were searching for.\n        // Since mappings are sorted, this is guaranteed to find all mappings for\n        // the line we are searching for.\n        while (mapping &&\n               mapping.originalLine === line &&\n               mapping.originalColumn == originalColumn) {\n          mappings.push({\n            line: util.getArg(mapping, 'generatedLine', null),\n            column: util.getArg(mapping, 'generatedColumn', null),\n            lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n          });\n\n          mapping = this._originalMappings[++index];\n        }\n      }\n    }\n\n    return mappings;\n  };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n *   - version: Which version of the source map spec this map is following.\n *   - sources: An array of URLs to the original source files.\n *   - names: An array of identifiers which can be referrenced by individual mappings.\n *   - sourceRoot: Optional. The URL root from which all sources are relative.\n *   - sourcesContent: Optional. An array of contents of the original source files.\n *   - mappings: A string of base64 VLQs which contain the actual mappings.\n *   - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n *     {\n *       version : 3,\n *       file: \"out.js\",\n *       sourceRoot : \"\",\n *       sources: [\"foo.js\", \"bar.js\"],\n *       names: [\"src\", \"maps\", \"are\", \"fun\"],\n *       mappings: \"AA,AB;;ABCDE;\"\n *     }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found.  This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n  var sourceMap = aSourceMap;\n  if (typeof aSourceMap === 'string') {\n    sourceMap = util.parseSourceMapInput(aSourceMap);\n  }\n\n  var version = util.getArg(sourceMap, 'version');\n  var sources = util.getArg(sourceMap, 'sources');\n  // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n  // requires the array) to play nice here.\n  var names = util.getArg(sourceMap, 'names', []);\n  var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n  var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n  var mappings = util.getArg(sourceMap, 'mappings');\n  var file = util.getArg(sourceMap, 'file', null);\n\n  // Once again, Sass deviates from the spec and supplies the version as a\n  // string rather than a number, so we use loose equality checking here.\n  if (version != this._version) {\n    throw new Error('Unsupported version: ' + version);\n  }\n\n  if (sourceRoot) {\n    sourceRoot = util.normalize(sourceRoot);\n  }\n\n  sources = sources\n    .map(String)\n    // Some source maps produce relative source paths like \"./foo.js\" instead of\n    // \"foo.js\".  Normalize these first so that future comparisons will succeed.\n    // See bugzil.la/1090768.\n    .map(util.normalize)\n    // Always ensure that absolute sources are internally stored relative to\n    // the source root, if the source root is absolute. Not doing this would\n    // be particularly problematic when the source root is a prefix of the\n    // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n    .map(function (source) {\n      return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n        ? util.relative(sourceRoot, source)\n        : source;\n    });\n\n  // Pass `true` below to allow duplicate names and sources. While source maps\n  // are intended to be compressed and deduplicated, the TypeScript compiler\n  // sometimes generates source maps with duplicates in them. See Github issue\n  // #72 and bugzil.la/889492.\n  this._names = ArraySet.fromArray(names.map(String), true);\n  this._sources = ArraySet.fromArray(sources, true);\n\n  this._absoluteSources = this._sources.toArray().map(function (s) {\n    return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n  });\n\n  this.sourceRoot = sourceRoot;\n  this.sourcesContent = sourcesContent;\n  this._mappings = mappings;\n  this._sourceMapURL = aSourceMapURL;\n  this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source.  Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n  var relativeSource = aSource;\n  if (this.sourceRoot != null) {\n    relativeSource = util.relative(this.sourceRoot, relativeSource);\n  }\n\n  if (this._sources.has(relativeSource)) {\n    return this._sources.indexOf(relativeSource);\n  }\n\n  // Maybe aSource is an absolute URL as returned by |sources|.  In\n  // this case we can't simply undo the transform.\n  var i;\n  for (i = 0; i < this._absoluteSources.length; ++i) {\n    if (this._absoluteSources[i] == aSource) {\n      return i;\n    }\n  }\n\n  return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n *        The source map that will be consumed.\n * @param String aSourceMapURL\n *        The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n  function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n    var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n    var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n    var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n    smc.sourceRoot = aSourceMap._sourceRoot;\n    smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n                                                            smc.sourceRoot);\n    smc.file = aSourceMap._file;\n    smc._sourceMapURL = aSourceMapURL;\n    smc._absoluteSources = smc._sources.toArray().map(function (s) {\n      return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n    });\n\n    // Because we are modifying the entries (by converting string sources and\n    // names to indices into the sources and names ArraySets), we have to make\n    // a copy of the entry or else bad things happen. Shared mutable state\n    // strikes again! See github issue #191.\n\n    var generatedMappings = aSourceMap._mappings.toArray().slice();\n    var destGeneratedMappings = smc.__generatedMappings = [];\n    var destOriginalMappings = smc.__originalMappings = [];\n\n    for (var i = 0, length = generatedMappings.length; i < length; i++) {\n      var srcMapping = generatedMappings[i];\n      var destMapping = new Mapping;\n      destMapping.generatedLine = srcMapping.generatedLine;\n      destMapping.generatedColumn = srcMapping.generatedColumn;\n\n      if (srcMapping.source) {\n        destMapping.source = sources.indexOf(srcMapping.source);\n        destMapping.originalLine = srcMapping.originalLine;\n        destMapping.originalColumn = srcMapping.originalColumn;\n\n        if (srcMapping.name) {\n          destMapping.name = names.indexOf(srcMapping.name);\n        }\n\n        destOriginalMappings.push(destMapping);\n      }\n\n      destGeneratedMappings.push(destMapping);\n    }\n\n    quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n    return smc;\n  };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n  get: function () {\n    return this._absoluteSources.slice();\n  }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n  this.generatedLine = 0;\n  this.generatedColumn = 0;\n  this.source = null;\n  this.originalLine = null;\n  this.originalColumn = null;\n  this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\n\nconst compareGenerated = util.compareByGeneratedPositionsDeflatedNoLine;\nfunction sortGenerated(array, start) {\n  let l = array.length;\n  let n = array.length - start;\n  if (n <= 1) {\n    return;\n  } else if (n == 2) {\n    let a = array[start];\n    let b = array[start + 1];\n    if (compareGenerated(a, b) > 0) {\n      array[start] = b;\n      array[start + 1] = a;\n    }\n  } else if (n < 20) {\n    for (let i = start; i < l; i++) {\n      for (let j = i; j > start; j--) {\n        let a = array[j - 1];\n        let b = array[j];\n        if (compareGenerated(a, b) <= 0) {\n          break;\n        }\n        array[j - 1] = b;\n        array[j] = a;\n      }\n    }\n  } else {\n    quickSort(array, compareGenerated, start);\n  }\n}\nBasicSourceMapConsumer.prototype._parseMappings =\n  function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n    var generatedLine = 1;\n    var previousGeneratedColumn = 0;\n    var previousOriginalLine = 0;\n    var previousOriginalColumn = 0;\n    var previousSource = 0;\n    var previousName = 0;\n    var length = aStr.length;\n    var index = 0;\n    var cachedSegments = {};\n    var temp = {};\n    var originalMappings = [];\n    var generatedMappings = [];\n    var mapping, str, segment, end, value;\n\n    let subarrayStart = 0;\n    while (index < length) {\n      if (aStr.charAt(index) === ';') {\n        generatedLine++;\n        index++;\n        previousGeneratedColumn = 0;\n\n        sortGenerated(generatedMappings, subarrayStart);\n        subarrayStart = generatedMappings.length;\n      }\n      else if (aStr.charAt(index) === ',') {\n        index++;\n      }\n      else {\n        mapping = new Mapping();\n        mapping.generatedLine = generatedLine;\n\n        for (end = index; end < length; end++) {\n          if (this._charIsMappingSeparator(aStr, end)) {\n            break;\n          }\n        }\n        str = aStr.slice(index, end);\n\n        segment = [];\n        while (index < end) {\n          base64VLQ.decode(aStr, index, temp);\n          value = temp.value;\n          index = temp.rest;\n          segment.push(value);\n        }\n\n        if (segment.length === 2) {\n          throw new Error('Found a source, but no line and column');\n        }\n\n        if (segment.length === 3) {\n          throw new Error('Found a source and line, but no column');\n        }\n\n        // Generated column.\n        mapping.generatedColumn = previousGeneratedColumn + segment[0];\n        previousGeneratedColumn = mapping.generatedColumn;\n\n        if (segment.length > 1) {\n          // Original source.\n          mapping.source = previousSource + segment[1];\n          previousSource += segment[1];\n\n          // Original line.\n          mapping.originalLine = previousOriginalLine + segment[2];\n          previousOriginalLine = mapping.originalLine;\n          // Lines are stored 0-based\n          mapping.originalLine += 1;\n\n          // Original column.\n          mapping.originalColumn = previousOriginalColumn + segment[3];\n          previousOriginalColumn = mapping.originalColumn;\n\n          if (segment.length > 4) {\n            // Original name.\n            mapping.name = previousName + segment[4];\n            previousName += segment[4];\n          }\n        }\n\n        generatedMappings.push(mapping);\n        if (typeof mapping.originalLine === 'number') {\n          let currentSource = mapping.source;\n          while (originalMappings.length <= currentSource) {\n            originalMappings.push(null);\n          }\n          if (originalMappings[currentSource] === null) {\n            originalMappings[currentSource] = [];\n          }\n          originalMappings[currentSource].push(mapping);\n        }\n      }\n    }\n\n    sortGenerated(generatedMappings, subarrayStart);\n    this.__generatedMappings = generatedMappings;\n\n    for (var i = 0; i < originalMappings.length; i++) {\n      if (originalMappings[i] != null) {\n        quickSort(originalMappings[i], util.compareByOriginalPositionsNoSource);\n      }\n    }\n    this.__originalMappings = [].concat(...originalMappings);\n  };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n  function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n                                         aColumnName, aComparator, aBias) {\n    // To return the position we are searching for, we must first find the\n    // mapping for the given position and then return the opposite position it\n    // points to. Because the mappings are sorted, we can use binary search to\n    // find the best mapping.\n\n    if (aNeedle[aLineName] <= 0) {\n      throw new TypeError('Line must be greater than or equal to 1, got '\n                          + aNeedle[aLineName]);\n    }\n    if (aNeedle[aColumnName] < 0) {\n      throw new TypeError('Column must be greater than or equal to 0, got '\n                          + aNeedle[aColumnName]);\n    }\n\n    return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n  };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n  function SourceMapConsumer_computeColumnSpans() {\n    for (var index = 0; index < this._generatedMappings.length; ++index) {\n      var mapping = this._generatedMappings[index];\n\n      // Mappings do not contain a field for the last generated columnt. We\n      // can come up with an optimistic estimate, however, by assuming that\n      // mappings are contiguous (i.e. given two consecutive mappings, the\n      // first mapping ends where the second one starts).\n      if (index + 1 < this._generatedMappings.length) {\n        var nextMapping = this._generatedMappings[index + 1];\n\n        if (mapping.generatedLine === nextMapping.generatedLine) {\n          mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n          continue;\n        }\n      }\n\n      // The last mapping for each line spans the entire line.\n      mapping.lastGeneratedColumn = Infinity;\n    }\n  };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n *   - line: The line number in the generated source.  The line number\n *     is 1-based.\n *   - column: The column number in the generated source.  The column\n *     number is 0-based.\n *   - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n *     'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n *     Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n *   - source: The original source file, or null.\n *   - line: The line number in the original source, or null.  The\n *     line number is 1-based.\n *   - column: The column number in the original source, or null.  The\n *     column number is 0-based.\n *   - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n  function SourceMapConsumer_originalPositionFor(aArgs) {\n    var needle = {\n      generatedLine: util.getArg(aArgs, 'line'),\n      generatedColumn: util.getArg(aArgs, 'column')\n    };\n\n    var index = this._findMapping(\n      needle,\n      this._generatedMappings,\n      \"generatedLine\",\n      \"generatedColumn\",\n      util.compareByGeneratedPositionsDeflated,\n      util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n    );\n\n    if (index >= 0) {\n      var mapping = this._generatedMappings[index];\n\n      if (mapping.generatedLine === needle.generatedLine) {\n        var source = util.getArg(mapping, 'source', null);\n        if (source !== null) {\n          source = this._sources.at(source);\n          source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n        }\n        var name = util.getArg(mapping, 'name', null);\n        if (name !== null) {\n          name = this._names.at(name);\n        }\n        return {\n          source: source,\n          line: util.getArg(mapping, 'originalLine', null),\n          column: util.getArg(mapping, 'originalColumn', null),\n          name: name\n        };\n      }\n    }\n\n    return {\n      source: null,\n      line: null,\n      column: null,\n      name: null\n    };\n  };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n  function BasicSourceMapConsumer_hasContentsOfAllSources() {\n    if (!this.sourcesContent) {\n      return false;\n    }\n    return this.sourcesContent.length >= this._sources.size() &&\n      !this.sourcesContent.some(function (sc) { return sc == null; });\n  };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n  function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n    if (!this.sourcesContent) {\n      return null;\n    }\n\n    var index = this._findSourceIndex(aSource);\n    if (index >= 0) {\n      return this.sourcesContent[index];\n    }\n\n    var relativeSource = aSource;\n    if (this.sourceRoot != null) {\n      relativeSource = util.relative(this.sourceRoot, relativeSource);\n    }\n\n    var url;\n    if (this.sourceRoot != null\n        && (url = util.urlParse(this.sourceRoot))) {\n      // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n      // many users. We can help them out when they expect file:// URIs to\n      // behave like it would if they were running a local HTTP server. See\n      // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n      var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n      if (url.scheme == \"file\"\n          && this._sources.has(fileUriAbsPath)) {\n        return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n      }\n\n      if ((!url.path || url.path == \"/\")\n          && this._sources.has(\"/\" + relativeSource)) {\n        return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n      }\n    }\n\n    // This function is used recursively from\n    // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n    // don't want to throw if we can't find the source - we just want to\n    // return null, so we provide a flag to exit gracefully.\n    if (nullOnMissing) {\n      return null;\n    }\n    else {\n      throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n    }\n  };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n *   - source: The filename of the original source.\n *   - line: The line number in the original source.  The line number\n *     is 1-based.\n *   - column: The column number in the original source.  The column\n *     number is 0-based.\n *   - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n *     'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n *     Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n *   - line: The line number in the generated source, or null.  The\n *     line number is 1-based.\n *   - column: The column number in the generated source, or null.\n *     The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n  function SourceMapConsumer_generatedPositionFor(aArgs) {\n    var source = util.getArg(aArgs, 'source');\n    source = this._findSourceIndex(source);\n    if (source < 0) {\n      return {\n        line: null,\n        column: null,\n        lastColumn: null\n      };\n    }\n\n    var needle = {\n      source: source,\n      originalLine: util.getArg(aArgs, 'line'),\n      originalColumn: util.getArg(aArgs, 'column')\n    };\n\n    var index = this._findMapping(\n      needle,\n      this._originalMappings,\n      \"originalLine\",\n      \"originalColumn\",\n      util.compareByOriginalPositions,\n      util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n    );\n\n    if (index >= 0) {\n      var mapping = this._originalMappings[index];\n\n      if (mapping.source === needle.source) {\n        return {\n          line: util.getArg(mapping, 'generatedLine', null),\n          column: util.getArg(mapping, 'generatedColumn', null),\n          lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n        };\n      }\n    }\n\n    return {\n      line: null,\n      column: null,\n      lastColumn: null\n    };\n  };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n *   - version: Which version of the source map spec this map is following.\n *   - file: Optional. The generated file this source map is associated with.\n *   - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n *   - offset: The offset into the original specified at which this section\n *       begins to apply, defined as an object with a \"line\" and \"column\"\n *       field.\n *   - map: A source map definition. This source map could also be indexed,\n *       but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n *  {\n *    version : 3,\n *    file: \"app.js\",\n *    sections: [{\n *      offset: {line:100, column:10},\n *      map: {\n *        version : 3,\n *        file: \"section.js\",\n *        sources: [\"foo.js\", \"bar.js\"],\n *        names: [\"src\", \"maps\", \"are\", \"fun\"],\n *        mappings: \"AAAA,E;;ABCDE;\"\n *      }\n *    }],\n *  }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found.  This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n  var sourceMap = aSourceMap;\n  if (typeof aSourceMap === 'string') {\n    sourceMap = util.parseSourceMapInput(aSourceMap);\n  }\n\n  var version = util.getArg(sourceMap, 'version');\n  var sections = util.getArg(sourceMap, 'sections');\n\n  if (version != this._version) {\n    throw new Error('Unsupported version: ' + version);\n  }\n\n  this._sources = new ArraySet();\n  this._names = new ArraySet();\n\n  var lastOffset = {\n    line: -1,\n    column: 0\n  };\n  this._sections = sections.map(function (s) {\n    if (s.url) {\n      // The url field will require support for asynchronicity.\n      // See https://github.com/mozilla/source-map/issues/16\n      throw new Error('Support for url field in sections not implemented.');\n    }\n    var offset = util.getArg(s, 'offset');\n    var offsetLine = util.getArg(offset, 'line');\n    var offsetColumn = util.getArg(offset, 'column');\n\n    if (offsetLine < lastOffset.line ||\n        (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n      throw new Error('Section offsets must be ordered and non-overlapping.');\n    }\n    lastOffset = offset;\n\n    return {\n      generatedOffset: {\n        // The offset fields are 0-based, but we use 1-based indices when\n        // encoding/decoding from VLQ.\n        generatedLine: offsetLine + 1,\n        generatedColumn: offsetColumn + 1\n      },\n      consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n    }\n  });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n  get: function () {\n    var sources = [];\n    for (var i = 0; i < this._sections.length; i++) {\n      for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n        sources.push(this._sections[i].consumer.sources[j]);\n      }\n    }\n    return sources;\n  }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n *   - line: The line number in the generated source.  The line number\n *     is 1-based.\n *   - column: The column number in the generated source.  The column\n *     number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n *   - source: The original source file, or null.\n *   - line: The line number in the original source, or null.  The\n *     line number is 1-based.\n *   - column: The column number in the original source, or null.  The\n *     column number is 0-based.\n *   - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n  function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n    var needle = {\n      generatedLine: util.getArg(aArgs, 'line'),\n      generatedColumn: util.getArg(aArgs, 'column')\n    };\n\n    // Find the section containing the generated position we're trying to map\n    // to an original position.\n    var sectionIndex = binarySearch.search(needle, this._sections,\n      function(needle, section) {\n        var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n        if (cmp) {\n          return cmp;\n        }\n\n        return (needle.generatedColumn -\n                section.generatedOffset.generatedColumn);\n      });\n    var section = this._sections[sectionIndex];\n\n    if (!section) {\n      return {\n        source: null,\n        line: null,\n        column: null,\n        name: null\n      };\n    }\n\n    return section.consumer.originalPositionFor({\n      line: needle.generatedLine -\n        (section.generatedOffset.generatedLine - 1),\n      column: needle.generatedColumn -\n        (section.generatedOffset.generatedLine === needle.generatedLine\n         ? section.generatedOffset.generatedColumn - 1\n         : 0),\n      bias: aArgs.bias\n    });\n  };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n  function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n    return this._sections.every(function (s) {\n      return s.consumer.hasContentsOfAllSources();\n    });\n  };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n  function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n    for (var i = 0; i < this._sections.length; i++) {\n      var section = this._sections[i];\n\n      var content = section.consumer.sourceContentFor(aSource, true);\n      if (content || content === '') {\n        return content;\n      }\n    }\n    if (nullOnMissing) {\n      return null;\n    }\n    else {\n      throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n    }\n  };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n *   - source: The filename of the original source.\n *   - line: The line number in the original source.  The line number\n *     is 1-based.\n *   - column: The column number in the original source.  The column\n *     number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n *   - line: The line number in the generated source, or null.  The\n *     line number is 1-based. \n *   - column: The column number in the generated source, or null.\n *     The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n  function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n    for (var i = 0; i < this._sections.length; i++) {\n      var section = this._sections[i];\n\n      // Only consider this section if the requested source is in the list of\n      // sources of the consumer.\n      if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n        continue;\n      }\n      var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n      if (generatedPosition) {\n        var ret = {\n          line: generatedPosition.line +\n            (section.generatedOffset.generatedLine - 1),\n          column: generatedPosition.column +\n            (section.generatedOffset.generatedLine === generatedPosition.line\n             ? section.generatedOffset.generatedColumn - 1\n             : 0)\n        };\n        return ret;\n      }\n    }\n\n    return {\n      line: null,\n      column: null\n    };\n  };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n  function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n    this.__generatedMappings = [];\n    this.__originalMappings = [];\n    for (var i = 0; i < this._sections.length; i++) {\n      var section = this._sections[i];\n      var sectionMappings = section.consumer._generatedMappings;\n      for (var j = 0; j < sectionMappings.length; j++) {\n        var mapping = sectionMappings[j];\n\n        var source = section.consumer._sources.at(mapping.source);\n        if(source !== null) {\n          source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n        }\n        this._sources.add(source);\n        source = this._sources.indexOf(source);\n\n        var name = null;\n        if (mapping.name) {\n          name = section.consumer._names.at(mapping.name);\n          this._names.add(name);\n          name = this._names.indexOf(name);\n        }\n\n        // The mappings coming from the consumer for the section have\n        // generated positions relative to the start of the section, so we\n        // need to offset them to be relative to the start of the concatenated\n        // generated file.\n        var adjustedMapping = {\n          source: source,\n          generatedLine: mapping.generatedLine +\n            (section.generatedOffset.generatedLine - 1),\n          generatedColumn: mapping.generatedColumn +\n            (section.generatedOffset.generatedLine === mapping.generatedLine\n            ? section.generatedOffset.generatedColumn - 1\n            : 0),\n          originalLine: mapping.originalLine,\n          originalColumn: mapping.originalColumn,\n          name: name\n        };\n\n        this.__generatedMappings.push(adjustedMapping);\n        if (typeof adjustedMapping.originalLine === 'number') {\n          this.__originalMappings.push(adjustedMapping);\n        }\n      }\n    }\n\n    quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n    quickSort(this.__originalMappings, util.compareByOriginalPositions);\n  };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n *        generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n  this.children = [];\n  this.sourceContents = {};\n  this.line = aLine == null ? null : aLine;\n  this.column = aColumn == null ? null : aColumn;\n  this.source = aSource == null ? null : aSource;\n  this.name = aName == null ? null : aName;\n  this[isSourceNode] = true;\n  if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n *        SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n  function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n    // The SourceNode we want to fill with the generated code\n    // and the SourceMap\n    var node = new SourceNode();\n\n    // All even indices of this array are one line of the generated code,\n    // while all odd indices are the newlines between two adjacent lines\n    // (since `REGEX_NEWLINE` captures its match).\n    // Processed fragments are accessed by calling `shiftNextLine`.\n    var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n    var remainingLinesIndex = 0;\n    var shiftNextLine = function() {\n      var lineContents = getNextLine();\n      // The last line of a file might not have a newline.\n      var newLine = getNextLine() || \"\";\n      return lineContents + newLine;\n\n      function getNextLine() {\n        return remainingLinesIndex < remainingLines.length ?\n            remainingLines[remainingLinesIndex++] : undefined;\n      }\n    };\n\n    // We need to remember the position of \"remainingLines\"\n    var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n    // The generate SourceNodes we need a code range.\n    // To extract it current and last mapping is used.\n    // Here we store the last mapping.\n    var lastMapping = null;\n\n    aSourceMapConsumer.eachMapping(function (mapping) {\n      if (lastMapping !== null) {\n        // We add the code from \"lastMapping\" to \"mapping\":\n        // First check if there is a new line in between.\n        if (lastGeneratedLine < mapping.generatedLine) {\n          // Associate first line with \"lastMapping\"\n          addMappingWithCode(lastMapping, shiftNextLine());\n          lastGeneratedLine++;\n          lastGeneratedColumn = 0;\n          // The remaining code is added without mapping\n        } else {\n          // There is no new line in between.\n          // Associate the code between \"lastGeneratedColumn\" and\n          // \"mapping.generatedColumn\" with \"lastMapping\"\n          var nextLine = remainingLines[remainingLinesIndex] || '';\n          var code = nextLine.substr(0, mapping.generatedColumn -\n                                        lastGeneratedColumn);\n          remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n                                              lastGeneratedColumn);\n          lastGeneratedColumn = mapping.generatedColumn;\n          addMappingWithCode(lastMapping, code);\n          // No more remaining code, continue\n          lastMapping = mapping;\n          return;\n        }\n      }\n      // We add the generated code until the first mapping\n      // to the SourceNode without any mapping.\n      // Each line is added as separate string.\n      while (lastGeneratedLine < mapping.generatedLine) {\n        node.add(shiftNextLine());\n        lastGeneratedLine++;\n      }\n      if (lastGeneratedColumn < mapping.generatedColumn) {\n        var nextLine = remainingLines[remainingLinesIndex] || '';\n        node.add(nextLine.substr(0, mapping.generatedColumn));\n        remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n        lastGeneratedColumn = mapping.generatedColumn;\n      }\n      lastMapping = mapping;\n    }, this);\n    // We have processed all mappings.\n    if (remainingLinesIndex < remainingLines.length) {\n      if (lastMapping) {\n        // Associate the remaining code in the current line with \"lastMapping\"\n        addMappingWithCode(lastMapping, shiftNextLine());\n      }\n      // and add the remaining lines without any mapping\n      node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n    }\n\n    // Copy sourcesContent into SourceNode\n    aSourceMapConsumer.sources.forEach(function (sourceFile) {\n      var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        if (aRelativePath != null) {\n          sourceFile = util.join(aRelativePath, sourceFile);\n        }\n        node.setSourceContent(sourceFile, content);\n      }\n    });\n\n    return node;\n\n    function addMappingWithCode(mapping, code) {\n      if (mapping === null || mapping.source === undefined) {\n        node.add(code);\n      } else {\n        var source = aRelativePath\n          ? util.join(aRelativePath, mapping.source)\n          : mapping.source;\n        node.add(new SourceNode(mapping.originalLine,\n                                mapping.originalColumn,\n                                source,\n                                code,\n                                mapping.name));\n      }\n    }\n  };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n *        SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n  if (Array.isArray(aChunk)) {\n    aChunk.forEach(function (chunk) {\n      this.add(chunk);\n    }, this);\n  }\n  else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n    if (aChunk) {\n      this.children.push(aChunk);\n    }\n  }\n  else {\n    throw new TypeError(\n      \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n    );\n  }\n  return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n *        SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n  if (Array.isArray(aChunk)) {\n    for (var i = aChunk.length-1; i >= 0; i--) {\n      this.prepend(aChunk[i]);\n    }\n  }\n  else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n    this.children.unshift(aChunk);\n  }\n  else {\n    throw new TypeError(\n      \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n    );\n  }\n  return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n  var chunk;\n  for (var i = 0, len = this.children.length; i < len; i++) {\n    chunk = this.children[i];\n    if (chunk[isSourceNode]) {\n      chunk.walk(aFn);\n    }\n    else {\n      if (chunk !== '') {\n        aFn(chunk, { source: this.source,\n                     line: this.line,\n                     column: this.column,\n                     name: this.name });\n      }\n    }\n  }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n  var newChildren;\n  var i;\n  var len = this.children.length;\n  if (len > 0) {\n    newChildren = [];\n    for (i = 0; i < len-1; i++) {\n      newChildren.push(this.children[i]);\n      newChildren.push(aSep);\n    }\n    newChildren.push(this.children[i]);\n    this.children = newChildren;\n  }\n  return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n  var lastChild = this.children[this.children.length - 1];\n  if (lastChild[isSourceNode]) {\n    lastChild.replaceRight(aPattern, aReplacement);\n  }\n  else if (typeof lastChild === 'string') {\n    this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n  }\n  else {\n    this.children.push(''.replace(aPattern, aReplacement));\n  }\n  return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n  function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n    this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n  };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n  function SourceNode_walkSourceContents(aFn) {\n    for (var i = 0, len = this.children.length; i < len; i++) {\n      if (this.children[i][isSourceNode]) {\n        this.children[i].walkSourceContents(aFn);\n      }\n    }\n\n    var sources = Object.keys(this.sourceContents);\n    for (var i = 0, len = sources.length; i < len; i++) {\n      aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n    }\n  };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n  var str = \"\";\n  this.walk(function (chunk) {\n    str += chunk;\n  });\n  return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n  var generated = {\n    code: \"\",\n    line: 1,\n    column: 0\n  };\n  var map = new SourceMapGenerator(aArgs);\n  var sourceMappingActive = false;\n  var lastOriginalSource = null;\n  var lastOriginalLine = null;\n  var lastOriginalColumn = null;\n  var lastOriginalName = null;\n  this.walk(function (chunk, original) {\n    generated.code += chunk;\n    if (original.source !== null\n        && original.line !== null\n        && original.column !== null) {\n      if(lastOriginalSource !== original.source\n         || lastOriginalLine !== original.line\n         || lastOriginalColumn !== original.column\n         || lastOriginalName !== original.name) {\n        map.addMapping({\n          source: original.source,\n          original: {\n            line: original.line,\n            column: original.column\n          },\n          generated: {\n            line: generated.line,\n            column: generated.column\n          },\n          name: original.name\n        });\n      }\n      lastOriginalSource = original.source;\n      lastOriginalLine = original.line;\n      lastOriginalColumn = original.column;\n      lastOriginalName = original.name;\n      sourceMappingActive = true;\n    } else if (sourceMappingActive) {\n      map.addMapping({\n        generated: {\n          line: generated.line,\n          column: generated.column\n        }\n      });\n      lastOriginalSource = null;\n      sourceMappingActive = false;\n    }\n    for (var idx = 0, length = chunk.length; idx < length; idx++) {\n      if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n        generated.line++;\n        generated.column = 0;\n        // Mappings end at eol\n        if (idx + 1 === length) {\n          lastOriginalSource = null;\n          sourceMappingActive = false;\n        } else if (sourceMappingActive) {\n          map.addMapping({\n            source: original.source,\n            original: {\n              line: original.line,\n              column: original.column\n            },\n            generated: {\n              line: generated.line,\n              column: generated.column\n            },\n            name: original.name\n          });\n        }\n      } else {\n        generated.column++;\n      }\n    }\n  });\n  this.walkSourceContents(function (sourceFile, sourceContent) {\n    map.setSourceContent(sourceFile, sourceContent);\n  });\n\n  return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n","/**\n* @vue/compiler-core v3.5.18\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar shared = require('@vue/shared');\nvar decode_js = require('entities/lib/decode.js');\nvar parser = require('@babel/parser');\nvar estreeWalker = require('estree-walker');\nvar sourceMapJs = require('source-map-js');\n\nconst FRAGMENT = Symbol(``);\nconst TELEPORT = Symbol(``);\nconst SUSPENSE = Symbol(``);\nconst KEEP_ALIVE = Symbol(``);\nconst BASE_TRANSITION = Symbol(\n  ``\n);\nconst OPEN_BLOCK = Symbol(``);\nconst CREATE_BLOCK = Symbol(``);\nconst CREATE_ELEMENT_BLOCK = Symbol(\n  ``\n);\nconst CREATE_VNODE = Symbol(``);\nconst CREATE_ELEMENT_VNODE = Symbol(\n  ``\n);\nconst CREATE_COMMENT = Symbol(\n  ``\n);\nconst CREATE_TEXT = Symbol(\n  ``\n);\nconst CREATE_STATIC = Symbol(\n  ``\n);\nconst RESOLVE_COMPONENT = Symbol(\n  ``\n);\nconst RESOLVE_DYNAMIC_COMPONENT = Symbol(\n  ``\n);\nconst RESOLVE_DIRECTIVE = Symbol(\n  ``\n);\nconst RESOLVE_FILTER = Symbol(\n  ``\n);\nconst WITH_DIRECTIVES = Symbol(\n  ``\n);\nconst RENDER_LIST = Symbol(``);\nconst RENDER_SLOT = Symbol(``);\nconst CREATE_SLOTS = Symbol(``);\nconst TO_DISPLAY_STRING = Symbol(\n  ``\n);\nconst MERGE_PROPS = Symbol(``);\nconst NORMALIZE_CLASS = Symbol(\n  ``\n);\nconst NORMALIZE_STYLE = Symbol(\n  ``\n);\nconst NORMALIZE_PROPS = Symbol(\n  ``\n);\nconst GUARD_REACTIVE_PROPS = Symbol(\n  ``\n);\nconst TO_HANDLERS = Symbol(``);\nconst CAMELIZE = Symbol(``);\nconst CAPITALIZE = Symbol(``);\nconst TO_HANDLER_KEY = Symbol(\n  ``\n);\nconst SET_BLOCK_TRACKING = Symbol(\n  ``\n);\nconst PUSH_SCOPE_ID = Symbol(``);\nconst POP_SCOPE_ID = Symbol(``);\nconst WITH_CTX = Symbol(``);\nconst UNREF = Symbol(``);\nconst IS_REF = Symbol(``);\nconst WITH_MEMO = Symbol(``);\nconst IS_MEMO_SAME = Symbol(``);\nconst helperNameMap = {\n  [FRAGMENT]: `Fragment`,\n  [TELEPORT]: `Teleport`,\n  [SUSPENSE]: `Suspense`,\n  [KEEP_ALIVE]: `KeepAlive`,\n  [BASE_TRANSITION]: `BaseTransition`,\n  [OPEN_BLOCK]: `openBlock`,\n  [CREATE_BLOCK]: `createBlock`,\n  [CREATE_ELEMENT_BLOCK]: `createElementBlock`,\n  [CREATE_VNODE]: `createVNode`,\n  [CREATE_ELEMENT_VNODE]: `createElementVNode`,\n  [CREATE_COMMENT]: `createCommentVNode`,\n  [CREATE_TEXT]: `createTextVNode`,\n  [CREATE_STATIC]: `createStaticVNode`,\n  [RESOLVE_COMPONENT]: `resolveComponent`,\n  [RESOLVE_DYNAMIC_COMPONENT]: `resolveDynamicComponent`,\n  [RESOLVE_DIRECTIVE]: `resolveDirective`,\n  [RESOLVE_FILTER]: `resolveFilter`,\n  [WITH_DIRECTIVES]: `withDirectives`,\n  [RENDER_LIST]: `renderList`,\n  [RENDER_SLOT]: `renderSlot`,\n  [CREATE_SLOTS]: `createSlots`,\n  [TO_DISPLAY_STRING]: `toDisplayString`,\n  [MERGE_PROPS]: `mergeProps`,\n  [NORMALIZE_CLASS]: `normalizeClass`,\n  [NORMALIZE_STYLE]: `normalizeStyle`,\n  [NORMALIZE_PROPS]: `normalizeProps`,\n  [GUARD_REACTIVE_PROPS]: `guardReactiveProps`,\n  [TO_HANDLERS]: `toHandlers`,\n  [CAMELIZE]: `camelize`,\n  [CAPITALIZE]: `capitalize`,\n  [TO_HANDLER_KEY]: `toHandlerKey`,\n  [SET_BLOCK_TRACKING]: `setBlockTracking`,\n  [PUSH_SCOPE_ID]: `pushScopeId`,\n  [POP_SCOPE_ID]: `popScopeId`,\n  [WITH_CTX]: `withCtx`,\n  [UNREF]: `unref`,\n  [IS_REF]: `isRef`,\n  [WITH_MEMO]: `withMemo`,\n  [IS_MEMO_SAME]: `isMemoSame`\n};\nfunction registerRuntimeHelpers(helpers) {\n  Object.getOwnPropertySymbols(helpers).forEach((s) => {\n    helperNameMap[s] = helpers[s];\n  });\n}\n\nconst Namespaces = {\n  \"HTML\": 0,\n  \"0\": \"HTML\",\n  \"SVG\": 1,\n  \"1\": \"SVG\",\n  \"MATH_ML\": 2,\n  \"2\": \"MATH_ML\"\n};\nconst NodeTypes = {\n  \"ROOT\": 0,\n  \"0\": \"ROOT\",\n  \"ELEMENT\": 1,\n  \"1\": \"ELEMENT\",\n  \"TEXT\": 2,\n  \"2\": \"TEXT\",\n  \"COMMENT\": 3,\n  \"3\": \"COMMENT\",\n  \"SIMPLE_EXPRESSION\": 4,\n  \"4\": \"SIMPLE_EXPRESSION\",\n  \"INTERPOLATION\": 5,\n  \"5\": \"INTERPOLATION\",\n  \"ATTRIBUTE\": 6,\n  \"6\": \"ATTRIBUTE\",\n  \"DIRECTIVE\": 7,\n  \"7\": \"DIRECTIVE\",\n  \"COMPOUND_EXPRESSION\": 8,\n  \"8\": \"COMPOUND_EXPRESSION\",\n  \"IF\": 9,\n  \"9\": \"IF\",\n  \"IF_BRANCH\": 10,\n  \"10\": \"IF_BRANCH\",\n  \"FOR\": 11,\n  \"11\": \"FOR\",\n  \"TEXT_CALL\": 12,\n  \"12\": \"TEXT_CALL\",\n  \"VNODE_CALL\": 13,\n  \"13\": \"VNODE_CALL\",\n  \"JS_CALL_EXPRESSION\": 14,\n  \"14\": \"JS_CALL_EXPRESSION\",\n  \"JS_OBJECT_EXPRESSION\": 15,\n  \"15\": \"JS_OBJECT_EXPRESSION\",\n  \"JS_PROPERTY\": 16,\n  \"16\": \"JS_PROPERTY\",\n  \"JS_ARRAY_EXPRESSION\": 17,\n  \"17\": \"JS_ARRAY_EXPRESSION\",\n  \"JS_FUNCTION_EXPRESSION\": 18,\n  \"18\": \"JS_FUNCTION_EXPRESSION\",\n  \"JS_CONDITIONAL_EXPRESSION\": 19,\n  \"19\": \"JS_CONDITIONAL_EXPRESSION\",\n  \"JS_CACHE_EXPRESSION\": 20,\n  \"20\": \"JS_CACHE_EXPRESSION\",\n  \"JS_BLOCK_STATEMENT\": 21,\n  \"21\": \"JS_BLOCK_STATEMENT\",\n  \"JS_TEMPLATE_LITERAL\": 22,\n  \"22\": \"JS_TEMPLATE_LITERAL\",\n  \"JS_IF_STATEMENT\": 23,\n  \"23\": \"JS_IF_STATEMENT\",\n  \"JS_ASSIGNMENT_EXPRESSION\": 24,\n  \"24\": \"JS_ASSIGNMENT_EXPRESSION\",\n  \"JS_SEQUENCE_EXPRESSION\": 25,\n  \"25\": \"JS_SEQUENCE_EXPRESSION\",\n  \"JS_RETURN_STATEMENT\": 26,\n  \"26\": \"JS_RETURN_STATEMENT\"\n};\nconst ElementTypes = {\n  \"ELEMENT\": 0,\n  \"0\": \"ELEMENT\",\n  \"COMPONENT\": 1,\n  \"1\": \"COMPONENT\",\n  \"SLOT\": 2,\n  \"2\": \"SLOT\",\n  \"TEMPLATE\": 3,\n  \"3\": \"TEMPLATE\"\n};\nconst ConstantTypes = {\n  \"NOT_CONSTANT\": 0,\n  \"0\": \"NOT_CONSTANT\",\n  \"CAN_SKIP_PATCH\": 1,\n  \"1\": \"CAN_SKIP_PATCH\",\n  \"CAN_CACHE\": 2,\n  \"2\": \"CAN_CACHE\",\n  \"CAN_STRINGIFY\": 3,\n  \"3\": \"CAN_STRINGIFY\"\n};\nconst locStub = {\n  start: { line: 1, column: 1, offset: 0 },\n  end: { line: 1, column: 1, offset: 0 },\n  source: \"\"\n};\nfunction createRoot(children, source = \"\") {\n  return {\n    type: 0,\n    source,\n    children,\n    helpers: /* @__PURE__ */ new Set(),\n    components: [],\n    directives: [],\n    hoists: [],\n    imports: [],\n    cached: [],\n    temps: 0,\n    codegenNode: void 0,\n    loc: locStub\n  };\n}\nfunction createVNodeCall(context, tag, props, children, patchFlag, dynamicProps, directives, isBlock = false, disableTracking = false, isComponent = false, loc = locStub) {\n  if (context) {\n    if (isBlock) {\n      context.helper(OPEN_BLOCK);\n      context.helper(getVNodeBlockHelper(context.inSSR, isComponent));\n    } else {\n      context.helper(getVNodeHelper(context.inSSR, isComponent));\n    }\n    if (directives) {\n      context.helper(WITH_DIRECTIVES);\n    }\n  }\n  return {\n    type: 13,\n    tag,\n    props,\n    children,\n    patchFlag,\n    dynamicProps,\n    directives,\n    isBlock,\n    disableTracking,\n    isComponent,\n    loc\n  };\n}\nfunction createArrayExpression(elements, loc = locStub) {\n  return {\n    type: 17,\n    loc,\n    elements\n  };\n}\nfunction createObjectExpression(properties, loc = locStub) {\n  return {\n    type: 15,\n    loc,\n    properties\n  };\n}\nfunction createObjectProperty(key, value) {\n  return {\n    type: 16,\n    loc: locStub,\n    key: shared.isString(key) ? createSimpleExpression(key, true) : key,\n    value\n  };\n}\nfunction createSimpleExpression(content, isStatic = false, loc = locStub, constType = 0) {\n  return {\n    type: 4,\n    loc,\n    content,\n    isStatic,\n    constType: isStatic ? 3 : constType\n  };\n}\nfunction createInterpolation(content, loc) {\n  return {\n    type: 5,\n    loc,\n    content: shared.isString(content) ? createSimpleExpression(content, false, loc) : content\n  };\n}\nfunction createCompoundExpression(children, loc = locStub) {\n  return {\n    type: 8,\n    loc,\n    children\n  };\n}\nfunction createCallExpression(callee, args = [], loc = locStub) {\n  return {\n    type: 14,\n    loc,\n    callee,\n    arguments: args\n  };\n}\nfunction createFunctionExpression(params, returns = void 0, newline = false, isSlot = false, loc = locStub) {\n  return {\n    type: 18,\n    params,\n    returns,\n    newline,\n    isSlot,\n    loc\n  };\n}\nfunction createConditionalExpression(test, consequent, alternate, newline = true) {\n  return {\n    type: 19,\n    test,\n    consequent,\n    alternate,\n    newline,\n    loc: locStub\n  };\n}\nfunction createCacheExpression(index, value, needPauseTracking = false, inVOnce = false) {\n  return {\n    type: 20,\n    index,\n    value,\n    needPauseTracking,\n    inVOnce,\n    needArraySpread: false,\n    loc: locStub\n  };\n}\nfunction createBlockStatement(body) {\n  return {\n    type: 21,\n    body,\n    loc: locStub\n  };\n}\nfunction createTemplateLiteral(elements) {\n  return {\n    type: 22,\n    elements,\n    loc: locStub\n  };\n}\nfunction createIfStatement(test, consequent, alternate) {\n  return {\n    type: 23,\n    test,\n    consequent,\n    alternate,\n    loc: locStub\n  };\n}\nfunction createAssignmentExpression(left, right) {\n  return {\n    type: 24,\n    left,\n    right,\n    loc: locStub\n  };\n}\nfunction createSequenceExpression(expressions) {\n  return {\n    type: 25,\n    expressions,\n    loc: locStub\n  };\n}\nfunction createReturnStatement(returns) {\n  return {\n    type: 26,\n    returns,\n    loc: locStub\n  };\n}\nfunction getVNodeHelper(ssr, isComponent) {\n  return ssr || isComponent ? CREATE_VNODE : CREATE_ELEMENT_VNODE;\n}\nfunction getVNodeBlockHelper(ssr, isComponent) {\n  return ssr || isComponent ? CREATE_BLOCK : CREATE_ELEMENT_BLOCK;\n}\nfunction convertToBlock(node, { helper, removeHelper, inSSR }) {\n  if (!node.isBlock) {\n    node.isBlock = true;\n    removeHelper(getVNodeHelper(inSSR, node.isComponent));\n    helper(OPEN_BLOCK);\n    helper(getVNodeBlockHelper(inSSR, node.isComponent));\n  }\n}\n\nconst defaultDelimitersOpen = new Uint8Array([123, 123]);\nconst defaultDelimitersClose = new Uint8Array([125, 125]);\nfunction isTagStartChar(c) {\n  return c >= 97 && c <= 122 || c >= 65 && c <= 90;\n}\nfunction isWhitespace(c) {\n  return c === 32 || c === 10 || c === 9 || c === 12 || c === 13;\n}\nfunction isEndOfTagSection(c) {\n  return c === 47 || c === 62 || isWhitespace(c);\n}\nfunction toCharCodes(str) {\n  const ret = new Uint8Array(str.length);\n  for (let i = 0; i < str.length; i++) {\n    ret[i] = str.charCodeAt(i);\n  }\n  return ret;\n}\nconst Sequences = {\n  Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]),\n  // CDATA[\n  CdataEnd: new Uint8Array([93, 93, 62]),\n  // ]]>\n  CommentEnd: new Uint8Array([45, 45, 62]),\n  // `-->`\n  ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]),\n  // `<\\/script`\n  StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]),\n  // `</style`\n  TitleEnd: new Uint8Array([60, 47, 116, 105, 116, 108, 101]),\n  // `</title`\n  TextareaEnd: new Uint8Array([\n    60,\n    47,\n    116,\n    101,\n    120,\n    116,\n    97,\n    114,\n    101,\n    97\n  ])\n  // `</textarea\n};\nclass Tokenizer {\n  constructor(stack, cbs) {\n    this.stack = stack;\n    this.cbs = cbs;\n    /** The current state the tokenizer is in. */\n    this.state = 1;\n    /** The read buffer. */\n    this.buffer = \"\";\n    /** The beginning of the section that is currently being read. */\n    this.sectionStart = 0;\n    /** The index within the buffer that we are currently looking at. */\n    this.index = 0;\n    /** The start of the last entity. */\n    this.entityStart = 0;\n    /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */\n    this.baseState = 1;\n    /** For special parsing behavior inside of script and style tags. */\n    this.inRCDATA = false;\n    /** For disabling RCDATA tags handling */\n    this.inXML = false;\n    /** For disabling interpolation parsing in v-pre */\n    this.inVPre = false;\n    /** Record newline positions for fast line / column calculation */\n    this.newlines = [];\n    this.mode = 0;\n    this.delimiterOpen = defaultDelimitersOpen;\n    this.delimiterClose = defaultDelimitersClose;\n    this.delimiterIndex = -1;\n    this.currentSequence = void 0;\n    this.sequenceIndex = 0;\n    {\n      this.entityDecoder = new decode_js.EntityDecoder(\n        decode_js.htmlDecodeTree,\n        (cp, consumed) => this.emitCodePoint(cp, consumed)\n      );\n    }\n  }\n  get inSFCRoot() {\n    return this.mode === 2 && this.stack.length === 0;\n  }\n  reset() {\n    this.state = 1;\n    this.mode = 0;\n    this.buffer = \"\";\n    this.sectionStart = 0;\n    this.index = 0;\n    this.baseState = 1;\n    this.inRCDATA = false;\n    this.currentSequence = void 0;\n    this.newlines.length = 0;\n    this.delimiterOpen = defaultDelimitersOpen;\n    this.delimiterClose = defaultDelimitersClose;\n  }\n  /**\n   * Generate Position object with line / column information using recorded\n   * newline positions. We know the index is always going to be an already\n   * processed index, so all the newlines up to this index should have been\n   * recorded.\n   */\n  getPos(index) {\n    let line = 1;\n    let column = index + 1;\n    for (let i = this.newlines.length - 1; i >= 0; i--) {\n      const newlineIndex = this.newlines[i];\n      if (index > newlineIndex) {\n        line = i + 2;\n        column = index - newlineIndex;\n        break;\n      }\n    }\n    return {\n      column,\n      line,\n      offset: index\n    };\n  }\n  peek() {\n    return this.buffer.charCodeAt(this.index + 1);\n  }\n  stateText(c) {\n    if (c === 60) {\n      if (this.index > this.sectionStart) {\n        this.cbs.ontext(this.sectionStart, this.index);\n      }\n      this.state = 5;\n      this.sectionStart = this.index;\n    } else if (c === 38) {\n      this.startEntity();\n    } else if (!this.inVPre && c === this.delimiterOpen[0]) {\n      this.state = 2;\n      this.delimiterIndex = 0;\n      this.stateInterpolationOpen(c);\n    }\n  }\n  stateInterpolationOpen(c) {\n    if (c === this.delimiterOpen[this.delimiterIndex]) {\n      if (this.delimiterIndex === this.delimiterOpen.length - 1) {\n        const start = this.index + 1 - this.delimiterOpen.length;\n        if (start > this.sectionStart) {\n          this.cbs.ontext(this.sectionStart, start);\n        }\n        this.state = 3;\n        this.sectionStart = start;\n      } else {\n        this.delimiterIndex++;\n      }\n    } else if (this.inRCDATA) {\n      this.state = 32;\n      this.stateInRCDATA(c);\n    } else {\n      this.state = 1;\n      this.stateText(c);\n    }\n  }\n  stateInterpolation(c) {\n    if (c === this.delimiterClose[0]) {\n      this.state = 4;\n      this.delimiterIndex = 0;\n      this.stateInterpolationClose(c);\n    }\n  }\n  stateInterpolationClose(c) {\n    if (c === this.delimiterClose[this.delimiterIndex]) {\n      if (this.delimiterIndex === this.delimiterClose.length - 1) {\n        this.cbs.oninterpolation(this.sectionStart, this.index + 1);\n        if (this.inRCDATA) {\n          this.state = 32;\n        } else {\n          this.state = 1;\n        }\n        this.sectionStart = this.index + 1;\n      } else {\n        this.delimiterIndex++;\n      }\n    } else {\n      this.state = 3;\n      this.stateInterpolation(c);\n    }\n  }\n  stateSpecialStartSequence(c) {\n    const isEnd = this.sequenceIndex === this.currentSequence.length;\n    const isMatch = isEnd ? (\n      // If we are at the end of the sequence, make sure the tag name has ended\n      isEndOfTagSection(c)\n    ) : (\n      // Otherwise, do a case-insensitive comparison\n      (c | 32) === this.currentSequence[this.sequenceIndex]\n    );\n    if (!isMatch) {\n      this.inRCDATA = false;\n    } else if (!isEnd) {\n      this.sequenceIndex++;\n      return;\n    }\n    this.sequenceIndex = 0;\n    this.state = 6;\n    this.stateInTagName(c);\n  }\n  /** Look for an end tag. For <title> and <textarea>, also decode entities. */\n  stateInRCDATA(c) {\n    if (this.sequenceIndex === this.currentSequence.length) {\n      if (c === 62 || isWhitespace(c)) {\n        const endOfText = this.index - this.currentSequence.length;\n        if (this.sectionStart < endOfText) {\n          const actualIndex = this.index;\n          this.index = endOfText;\n          this.cbs.ontext(this.sectionStart, endOfText);\n          this.index = actualIndex;\n        }\n        this.sectionStart = endOfText + 2;\n        this.stateInClosingTagName(c);\n        this.inRCDATA = false;\n        return;\n      }\n      this.sequenceIndex = 0;\n    }\n    if ((c | 32) === this.currentSequence[this.sequenceIndex]) {\n      this.sequenceIndex += 1;\n    } else if (this.sequenceIndex === 0) {\n      if (this.currentSequence === Sequences.TitleEnd || this.currentSequence === Sequences.TextareaEnd && !this.inSFCRoot) {\n        if (c === 38) {\n          this.startEntity();\n        } else if (!this.inVPre && c === this.delimiterOpen[0]) {\n          this.state = 2;\n          this.delimiterIndex = 0;\n          this.stateInterpolationOpen(c);\n        }\n      } else if (this.fastForwardTo(60)) {\n        this.sequenceIndex = 1;\n      }\n    } else {\n      this.sequenceIndex = Number(c === 60);\n    }\n  }\n  stateCDATASequence(c) {\n    if (c === Sequences.Cdata[this.sequenceIndex]) {\n      if (++this.sequenceIndex === Sequences.Cdata.length) {\n        this.state = 28;\n        this.currentSequence = Sequences.CdataEnd;\n        this.sequenceIndex = 0;\n        this.sectionStart = this.index + 1;\n      }\n    } else {\n      this.sequenceIndex = 0;\n      this.state = 23;\n      this.stateInDeclaration(c);\n    }\n  }\n  /**\n   * When we wait for one specific character, we can speed things up\n   * by skipping through the buffer until we find it.\n   *\n   * @returns Whether the character was found.\n   */\n  fastForwardTo(c) {\n    while (++this.index < this.buffer.length) {\n      const cc = this.buffer.charCodeAt(this.index);\n      if (cc === 10) {\n        this.newlines.push(this.index);\n      }\n      if (cc === c) {\n        return true;\n      }\n    }\n    this.index = this.buffer.length - 1;\n    return false;\n  }\n  /**\n   * Comments and CDATA end with `-->` and `]]>`.\n   *\n   * Their common qualities are:\n   * - Their end sequences have a distinct character they start with.\n   * - That character is then repeated, so we have to check multiple repeats.\n   * - All characters but the start character of the sequence can be skipped.\n   */\n  stateInCommentLike(c) {\n    if (c === this.currentSequence[this.sequenceIndex]) {\n      if (++this.sequenceIndex === this.currentSequence.length) {\n        if (this.currentSequence === Sequences.CdataEnd) {\n          this.cbs.oncdata(this.sectionStart, this.index - 2);\n        } else {\n          this.cbs.oncomment(this.sectionStart, this.index - 2);\n        }\n        this.sequenceIndex = 0;\n        this.sectionStart = this.index + 1;\n        this.state = 1;\n      }\n    } else if (this.sequenceIndex === 0) {\n      if (this.fastForwardTo(this.currentSequence[0])) {\n        this.sequenceIndex = 1;\n      }\n    } else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n      this.sequenceIndex = 0;\n    }\n  }\n  startSpecial(sequence, offset) {\n    this.enterRCDATA(sequence, offset);\n    this.state = 31;\n  }\n  enterRCDATA(sequence, offset) {\n    this.inRCDATA = true;\n    this.currentSequence = sequence;\n    this.sequenceIndex = offset;\n  }\n  stateBeforeTagName(c) {\n    if (c === 33) {\n      this.state = 22;\n      this.sectionStart = this.index + 1;\n    } else if (c === 63) {\n      this.state = 24;\n      this.sectionStart = this.index + 1;\n    } else if (isTagStartChar(c)) {\n      this.sectionStart = this.index;\n      if (this.mode === 0) {\n        this.state = 6;\n      } else if (this.inSFCRoot) {\n        this.state = 34;\n      } else if (!this.inXML) {\n        if (c === 116) {\n          this.state = 30;\n        } else {\n          this.state = c === 115 ? 29 : 6;\n        }\n      } else {\n        this.state = 6;\n      }\n    } else if (c === 47) {\n      this.state = 8;\n    } else {\n      this.state = 1;\n      this.stateText(c);\n    }\n  }\n  stateInTagName(c) {\n    if (isEndOfTagSection(c)) {\n      this.handleTagName(c);\n    }\n  }\n  stateInSFCRootTagName(c) {\n    if (isEndOfTagSection(c)) {\n      const tag = this.buffer.slice(this.sectionStart, this.index);\n      if (tag !== \"template\") {\n        this.enterRCDATA(toCharCodes(`</` + tag), 0);\n      }\n      this.handleTagName(c);\n    }\n  }\n  handleTagName(c) {\n    this.cbs.onopentagname(this.sectionStart, this.index);\n    this.sectionStart = -1;\n    this.state = 11;\n    this.stateBeforeAttrName(c);\n  }\n  stateBeforeClosingTagName(c) {\n    if (isWhitespace(c)) ; else if (c === 62) {\n      {\n        this.cbs.onerr(14, this.index);\n      }\n      this.state = 1;\n      this.sectionStart = this.index + 1;\n    } else {\n      this.state = isTagStartChar(c) ? 9 : 27;\n      this.sectionStart = this.index;\n    }\n  }\n  stateInClosingTagName(c) {\n    if (c === 62 || isWhitespace(c)) {\n      this.cbs.onclosetag(this.sectionStart, this.index);\n      this.sectionStart = -1;\n      this.state = 10;\n      this.stateAfterClosingTagName(c);\n    }\n  }\n  stateAfterClosingTagName(c) {\n    if (c === 62) {\n      this.state = 1;\n      this.sectionStart = this.index + 1;\n    }\n  }\n  stateBeforeAttrName(c) {\n    if (c === 62) {\n      this.cbs.onopentagend(this.index);\n      if (this.inRCDATA) {\n        this.state = 32;\n      } else {\n        this.state = 1;\n      }\n      this.sectionStart = this.index + 1;\n    } else if (c === 47) {\n      this.state = 7;\n      if (this.peek() !== 62) {\n        this.cbs.onerr(22, this.index);\n      }\n    } else if (c === 60 && this.peek() === 47) {\n      this.cbs.onopentagend(this.index);\n      this.state = 5;\n      this.sectionStart = this.index;\n    } else if (!isWhitespace(c)) {\n      if (c === 61) {\n        this.cbs.onerr(\n          19,\n          this.index\n        );\n      }\n      this.handleAttrStart(c);\n    }\n  }\n  handleAttrStart(c) {\n    if (c === 118 && this.peek() === 45) {\n      this.state = 13;\n      this.sectionStart = this.index;\n    } else if (c === 46 || c === 58 || c === 64 || c === 35) {\n      this.cbs.ondirname(this.index, this.index + 1);\n      this.state = 14;\n      this.sectionStart = this.index + 1;\n    } else {\n      this.state = 12;\n      this.sectionStart = this.index;\n    }\n  }\n  stateInSelfClosingTag(c) {\n    if (c === 62) {\n      this.cbs.onselfclosingtag(this.index);\n      this.state = 1;\n      this.sectionStart = this.index + 1;\n      this.inRCDATA = false;\n    } else if (!isWhitespace(c)) {\n      this.state = 11;\n      this.stateBeforeAttrName(c);\n    }\n  }\n  stateInAttrName(c) {\n    if (c === 61 || isEndOfTagSection(c)) {\n      this.cbs.onattribname(this.sectionStart, this.index);\n      this.handleAttrNameEnd(c);\n    } else if (c === 34 || c === 39 || c === 60) {\n      this.cbs.onerr(\n        17,\n        this.index\n      );\n    }\n  }\n  stateInDirName(c) {\n    if (c === 61 || isEndOfTagSection(c)) {\n      this.cbs.ondirname(this.sectionStart, this.index);\n      this.handleAttrNameEnd(c);\n    } else if (c === 58) {\n      this.cbs.ondirname(this.sectionStart, this.index);\n      this.state = 14;\n      this.sectionStart = this.index + 1;\n    } else if (c === 46) {\n      this.cbs.ondirname(this.sectionStart, this.index);\n      this.state = 16;\n      this.sectionStart = this.index + 1;\n    }\n  }\n  stateInDirArg(c) {\n    if (c === 61 || isEndOfTagSection(c)) {\n      this.cbs.ondirarg(this.sectionStart, this.index);\n      this.handleAttrNameEnd(c);\n    } else if (c === 91) {\n      this.state = 15;\n    } else if (c === 46) {\n      this.cbs.ondirarg(this.sectionStart, this.index);\n      this.state = 16;\n      this.sectionStart = this.index + 1;\n    }\n  }\n  stateInDynamicDirArg(c) {\n    if (c === 93) {\n      this.state = 14;\n    } else if (c === 61 || isEndOfTagSection(c)) {\n      this.cbs.ondirarg(this.sectionStart, this.index + 1);\n      this.handleAttrNameEnd(c);\n      {\n        this.cbs.onerr(\n          27,\n          this.index\n        );\n      }\n    }\n  }\n  stateInDirModifier(c) {\n    if (c === 61 || isEndOfTagSection(c)) {\n      this.cbs.ondirmodifier(this.sectionStart, this.index);\n      this.handleAttrNameEnd(c);\n    } else if (c === 46) {\n      this.cbs.ondirmodifier(this.sectionStart, this.index);\n      this.sectionStart = this.index + 1;\n    }\n  }\n  handleAttrNameEnd(c) {\n    this.sectionStart = this.index;\n    this.state = 17;\n    this.cbs.onattribnameend(this.index);\n    this.stateAfterAttrName(c);\n  }\n  stateAfterAttrName(c) {\n    if (c === 61) {\n      this.state = 18;\n    } else if (c === 47 || c === 62) {\n      this.cbs.onattribend(0, this.sectionStart);\n      this.sectionStart = -1;\n      this.state = 11;\n      this.stateBeforeAttrName(c);\n    } else if (!isWhitespace(c)) {\n      this.cbs.onattribend(0, this.sectionStart);\n      this.handleAttrStart(c);\n    }\n  }\n  stateBeforeAttrValue(c) {\n    if (c === 34) {\n      this.state = 19;\n      this.sectionStart = this.index + 1;\n    } else if (c === 39) {\n      this.state = 20;\n      this.sectionStart = this.index + 1;\n    } else if (!isWhitespace(c)) {\n      this.sectionStart = this.index;\n      this.state = 21;\n      this.stateInAttrValueNoQuotes(c);\n    }\n  }\n  handleInAttrValue(c, quote) {\n    if (c === quote || false) {\n      this.cbs.onattribdata(this.sectionStart, this.index);\n      this.sectionStart = -1;\n      this.cbs.onattribend(\n        quote === 34 ? 3 : 2,\n        this.index + 1\n      );\n      this.state = 11;\n    } else if (c === 38) {\n      this.startEntity();\n    }\n  }\n  stateInAttrValueDoubleQuotes(c) {\n    this.handleInAttrValue(c, 34);\n  }\n  stateInAttrValueSingleQuotes(c) {\n    this.handleInAttrValue(c, 39);\n  }\n  stateInAttrValueNoQuotes(c) {\n    if (isWhitespace(c) || c === 62) {\n      this.cbs.onattribdata(this.sectionStart, this.index);\n      this.sectionStart = -1;\n      this.cbs.onattribend(1, this.index);\n      this.state = 11;\n      this.stateBeforeAttrName(c);\n    } else if (c === 34 || c === 39 || c === 60 || c === 61 || c === 96) {\n      this.cbs.onerr(\n        18,\n        this.index\n      );\n    } else if (c === 38) {\n      this.startEntity();\n    }\n  }\n  stateBeforeDeclaration(c) {\n    if (c === 91) {\n      this.state = 26;\n      this.sequenceIndex = 0;\n    } else {\n      this.state = c === 45 ? 25 : 23;\n    }\n  }\n  stateInDeclaration(c) {\n    if (c === 62 || this.fastForwardTo(62)) {\n      this.state = 1;\n      this.sectionStart = this.index + 1;\n    }\n  }\n  stateInProcessingInstruction(c) {\n    if (c === 62 || this.fastForwardTo(62)) {\n      this.cbs.onprocessinginstruction(this.sectionStart, this.index);\n      this.state = 1;\n      this.sectionStart = this.index + 1;\n    }\n  }\n  stateBeforeComment(c) {\n    if (c === 45) {\n      this.state = 28;\n      this.currentSequence = Sequences.CommentEnd;\n      this.sequenceIndex = 2;\n      this.sectionStart = this.index + 1;\n    } else {\n      this.state = 23;\n    }\n  }\n  stateInSpecialComment(c) {\n    if (c === 62 || this.fastForwardTo(62)) {\n      this.cbs.oncomment(this.sectionStart, this.index);\n      this.state = 1;\n      this.sectionStart = this.index + 1;\n    }\n  }\n  stateBeforeSpecialS(c) {\n    if (c === Sequences.ScriptEnd[3]) {\n      this.startSpecial(Sequences.ScriptEnd, 4);\n    } else if (c === Sequences.StyleEnd[3]) {\n      this.startSpecial(Sequences.StyleEnd, 4);\n    } else {\n      this.state = 6;\n      this.stateInTagName(c);\n    }\n  }\n  stateBeforeSpecialT(c) {\n    if (c === Sequences.TitleEnd[3]) {\n      this.startSpecial(Sequences.TitleEnd, 4);\n    } else if (c === Sequences.TextareaEnd[3]) {\n      this.startSpecial(Sequences.TextareaEnd, 4);\n    } else {\n      this.state = 6;\n      this.stateInTagName(c);\n    }\n  }\n  startEntity() {\n    {\n      this.baseState = this.state;\n      this.state = 33;\n      this.entityStart = this.index;\n      this.entityDecoder.startEntity(\n        this.baseState === 1 || this.baseState === 32 ? decode_js.DecodingMode.Legacy : decode_js.DecodingMode.Attribute\n      );\n    }\n  }\n  stateInEntity() {\n    {\n      const length = this.entityDecoder.write(this.buffer, this.index);\n      if (length >= 0) {\n        this.state = this.baseState;\n        if (length === 0) {\n          this.index = this.entityStart;\n        }\n      } else {\n        this.index = this.buffer.length - 1;\n      }\n    }\n  }\n  /**\n   * Iterates through the buffer, calling the function corresponding to the current state.\n   *\n   * States that are more likely to be hit are higher up, as a performance improvement.\n   */\n  parse(input) {\n    this.buffer = input;\n    while (this.index < this.buffer.length) {\n      const c = this.buffer.charCodeAt(this.index);\n      if (c === 10 && this.state !== 33) {\n        this.newlines.push(this.index);\n      }\n      switch (this.state) {\n        case 1: {\n          this.stateText(c);\n          break;\n        }\n        case 2: {\n          this.stateInterpolationOpen(c);\n          break;\n        }\n        case 3: {\n          this.stateInterpolation(c);\n          break;\n        }\n        case 4: {\n          this.stateInterpolationClose(c);\n          break;\n        }\n        case 31: {\n          this.stateSpecialStartSequence(c);\n          break;\n        }\n        case 32: {\n          this.stateInRCDATA(c);\n          break;\n        }\n        case 26: {\n          this.stateCDATASequence(c);\n          break;\n        }\n        case 19: {\n          this.stateInAttrValueDoubleQuotes(c);\n          break;\n        }\n        case 12: {\n          this.stateInAttrName(c);\n          break;\n        }\n        case 13: {\n          this.stateInDirName(c);\n          break;\n        }\n        case 14: {\n          this.stateInDirArg(c);\n          break;\n        }\n        case 15: {\n          this.stateInDynamicDirArg(c);\n          break;\n        }\n        case 16: {\n          this.stateInDirModifier(c);\n          break;\n        }\n        case 28: {\n          this.stateInCommentLike(c);\n          break;\n        }\n        case 27: {\n          this.stateInSpecialComment(c);\n          break;\n        }\n        case 11: {\n          this.stateBeforeAttrName(c);\n          break;\n        }\n        case 6: {\n          this.stateInTagName(c);\n          break;\n        }\n        case 34: {\n          this.stateInSFCRootTagName(c);\n          break;\n        }\n        case 9: {\n          this.stateInClosingTagName(c);\n          break;\n        }\n        case 5: {\n          this.stateBeforeTagName(c);\n          break;\n        }\n        case 17: {\n          this.stateAfterAttrName(c);\n          break;\n        }\n        case 20: {\n          this.stateInAttrValueSingleQuotes(c);\n          break;\n        }\n        case 18: {\n          this.stateBeforeAttrValue(c);\n          break;\n        }\n        case 8: {\n          this.stateBeforeClosingTagName(c);\n          break;\n        }\n        case 10: {\n          this.stateAfterClosingTagName(c);\n          break;\n        }\n        case 29: {\n          this.stateBeforeSpecialS(c);\n          break;\n        }\n        case 30: {\n          this.stateBeforeSpecialT(c);\n          break;\n        }\n        case 21: {\n          this.stateInAttrValueNoQuotes(c);\n          break;\n        }\n        case 7: {\n          this.stateInSelfClosingTag(c);\n          break;\n        }\n        case 23: {\n          this.stateInDeclaration(c);\n          break;\n        }\n        case 22: {\n          this.stateBeforeDeclaration(c);\n          break;\n        }\n        case 25: {\n          this.stateBeforeComment(c);\n          break;\n        }\n        case 24: {\n          this.stateInProcessingInstruction(c);\n          break;\n        }\n        case 33: {\n          this.stateInEntity();\n          break;\n        }\n      }\n      this.index++;\n    }\n    this.cleanup();\n    this.finish();\n  }\n  /**\n   * Remove data that has already been consumed from the buffer.\n   */\n  cleanup() {\n    if (this.sectionStart !== this.index) {\n      if (this.state === 1 || this.state === 32 && this.sequenceIndex === 0) {\n        this.cbs.ontext(this.sectionStart, this.index);\n        this.sectionStart = this.index;\n      } else if (this.state === 19 || this.state === 20 || this.state === 21) {\n        this.cbs.onattribdata(this.sectionStart, this.index);\n        this.sectionStart = this.index;\n      }\n    }\n  }\n  finish() {\n    if (this.state === 33) {\n      this.entityDecoder.end();\n      this.state = this.baseState;\n    }\n    this.handleTrailingData();\n    this.cbs.onend();\n  }\n  /** Handle any trailing data. */\n  handleTrailingData() {\n    const endIndex = this.buffer.length;\n    if (this.sectionStart >= endIndex) {\n      return;\n    }\n    if (this.state === 28) {\n      if (this.currentSequence === Sequences.CdataEnd) {\n        this.cbs.oncdata(this.sectionStart, endIndex);\n      } else {\n        this.cbs.oncomment(this.sectionStart, endIndex);\n      }\n    } else if (this.state === 6 || this.state === 11 || this.state === 18 || this.state === 17 || this.state === 12 || this.state === 13 || this.state === 14 || this.state === 15 || this.state === 16 || this.state === 20 || this.state === 19 || this.state === 21 || this.state === 9) ; else {\n      this.cbs.ontext(this.sectionStart, endIndex);\n    }\n  }\n  emitCodePoint(cp, consumed) {\n    {\n      if (this.baseState !== 1 && this.baseState !== 32) {\n        if (this.sectionStart < this.entityStart) {\n          this.cbs.onattribdata(this.sectionStart, this.entityStart);\n        }\n        this.sectionStart = this.entityStart + consumed;\n        this.index = this.sectionStart - 1;\n        this.cbs.onattribentity(\n          decode_js.fromCodePoint(cp),\n          this.entityStart,\n          this.sectionStart\n        );\n      } else {\n        if (this.sectionStart < this.entityStart) {\n          this.cbs.ontext(this.sectionStart, this.entityStart);\n        }\n        this.sectionStart = this.entityStart + consumed;\n        this.index = this.sectionStart - 1;\n        this.cbs.ontextentity(\n          decode_js.fromCodePoint(cp),\n          this.entityStart,\n          this.sectionStart\n        );\n      }\n    }\n  }\n}\n\nconst CompilerDeprecationTypes = {\n  \"COMPILER_IS_ON_ELEMENT\": \"COMPILER_IS_ON_ELEMENT\",\n  \"COMPILER_V_BIND_SYNC\": \"COMPILER_V_BIND_SYNC\",\n  \"COMPILER_V_BIND_OBJECT_ORDER\": \"COMPILER_V_BIND_OBJECT_ORDER\",\n  \"COMPILER_V_ON_NATIVE\": \"COMPILER_V_ON_NATIVE\",\n  \"COMPILER_V_IF_V_FOR_PRECEDENCE\": \"COMPILER_V_IF_V_FOR_PRECEDENCE\",\n  \"COMPILER_NATIVE_TEMPLATE\": \"COMPILER_NATIVE_TEMPLATE\",\n  \"COMPILER_INLINE_TEMPLATE\": \"COMPILER_INLINE_TEMPLATE\",\n  \"COMPILER_FILTERS\": \"COMPILER_FILTERS\"\n};\nconst deprecationData = {\n  [\"COMPILER_IS_ON_ELEMENT\"]: {\n    message: `Platform-native elements with \"is\" prop will no longer be treated as components in Vue 3 unless the \"is\" value is explicitly prefixed with \"vue:\".`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html`\n  },\n  [\"COMPILER_V_BIND_SYNC\"]: {\n    message: (key) => `.sync modifier for v-bind has been removed. Use v-model with argument instead. \\`v-bind:${key}.sync\\` should be changed to \\`v-model:${key}\\`.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`\n  },\n  [\"COMPILER_V_BIND_OBJECT_ORDER\"]: {\n    message: `v-bind=\"obj\" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html`\n  },\n  [\"COMPILER_V_ON_NATIVE\"]: {\n    message: `.native modifier for v-on has been removed as is no longer necessary.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html`\n  },\n  [\"COMPILER_V_IF_V_FOR_PRECEDENCE\"]: {\n    message: `v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with <template> tags or use a computed property that filters v-for data source.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html`\n  },\n  [\"COMPILER_NATIVE_TEMPLATE\"]: {\n    message: `<template> with no special directives will render as a native template element instead of its inner content in Vue 3.`\n  },\n  [\"COMPILER_INLINE_TEMPLATE\"]: {\n    message: `\"inline-template\" has been removed in Vue 3.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html`\n  },\n  [\"COMPILER_FILTERS\"]: {\n    message: `filters have been removed in Vue 3. The \"|\" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.`,\n    link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`\n  }\n};\nfunction getCompatValue(key, { compatConfig }) {\n  const value = compatConfig && compatConfig[key];\n  if (key === \"MODE\") {\n    return value || 3;\n  } else {\n    return value;\n  }\n}\nfunction isCompatEnabled(key, context) {\n  const mode = getCompatValue(\"MODE\", context);\n  const value = getCompatValue(key, context);\n  return mode === 3 ? value === true : value !== false;\n}\nfunction checkCompatEnabled(key, context, loc, ...args) {\n  const enabled = isCompatEnabled(key, context);\n  return enabled;\n}\nfunction warnDeprecation(key, context, loc, ...args) {\n  const val = getCompatValue(key, context);\n  if (val === \"suppress-warning\") {\n    return;\n  }\n  const { message, link } = deprecationData[key];\n  const msg = `(deprecation ${key}) ${typeof message === \"function\" ? message(...args) : message}${link ? `\n  Details: ${link}` : ``}`;\n  const err = new SyntaxError(msg);\n  err.code = key;\n  if (loc) err.loc = loc;\n  context.onWarn(err);\n}\n\nfunction defaultOnError(error) {\n  throw error;\n}\nfunction defaultOnWarn(msg) {\n}\nfunction createCompilerError(code, loc, messages, additionalMessage) {\n  const msg = (messages || errorMessages)[code] + (additionalMessage || ``) ;\n  const error = new SyntaxError(String(msg));\n  error.code = code;\n  error.loc = loc;\n  return error;\n}\nconst ErrorCodes = {\n  \"ABRUPT_CLOSING_OF_EMPTY_COMMENT\": 0,\n  \"0\": \"ABRUPT_CLOSING_OF_EMPTY_COMMENT\",\n  \"CDATA_IN_HTML_CONTENT\": 1,\n  \"1\": \"CDATA_IN_HTML_CONTENT\",\n  \"DUPLICATE_ATTRIBUTE\": 2,\n  \"2\": \"DUPLICATE_ATTRIBUTE\",\n  \"END_TAG_WITH_ATTRIBUTES\": 3,\n  \"3\": \"END_TAG_WITH_ATTRIBUTES\",\n  \"END_TAG_WITH_TRAILING_SOLIDUS\": 4,\n  \"4\": \"END_TAG_WITH_TRAILING_SOLIDUS\",\n  \"EOF_BEFORE_TAG_NAME\": 5,\n  \"5\": \"EOF_BEFORE_TAG_NAME\",\n  \"EOF_IN_CDATA\": 6,\n  \"6\": \"EOF_IN_CDATA\",\n  \"EOF_IN_COMMENT\": 7,\n  \"7\": \"EOF_IN_COMMENT\",\n  \"EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT\": 8,\n  \"8\": \"EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT\",\n  \"EOF_IN_TAG\": 9,\n  \"9\": \"EOF_IN_TAG\",\n  \"INCORRECTLY_CLOSED_COMMENT\": 10,\n  \"10\": \"INCORRECTLY_CLOSED_COMMENT\",\n  \"INCORRECTLY_OPENED_COMMENT\": 11,\n  \"11\": \"INCORRECTLY_OPENED_COMMENT\",\n  \"INVALID_FIRST_CHARACTER_OF_TAG_NAME\": 12,\n  \"12\": \"INVALID_FIRST_CHARACTER_OF_TAG_NAME\",\n  \"MISSING_ATTRIBUTE_VALUE\": 13,\n  \"13\": \"MISSING_ATTRIBUTE_VALUE\",\n  \"MISSING_END_TAG_NAME\": 14,\n  \"14\": \"MISSING_END_TAG_NAME\",\n  \"MISSING_WHITESPACE_BETWEEN_ATTRIBUTES\": 15,\n  \"15\": \"MISSING_WHITESPACE_BETWEEN_ATTRIBUTES\",\n  \"NESTED_COMMENT\": 16,\n  \"16\": \"NESTED_COMMENT\",\n  \"UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME\": 17,\n  \"17\": \"UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME\",\n  \"UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE\": 18,\n  \"18\": \"UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE\",\n  \"UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME\": 19,\n  \"19\": \"UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME\",\n  \"UNEXPECTED_NULL_CHARACTER\": 20,\n  \"20\": \"UNEXPECTED_NULL_CHARACTER\",\n  \"UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME\": 21,\n  \"21\": \"UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME\",\n  \"UNEXPECTED_SOLIDUS_IN_TAG\": 22,\n  \"22\": \"UNEXPECTED_SOLIDUS_IN_TAG\",\n  \"X_INVALID_END_TAG\": 23,\n  \"23\": \"X_INVALID_END_TAG\",\n  \"X_MISSING_END_TAG\": 24,\n  \"24\": \"X_MISSING_END_TAG\",\n  \"X_MISSING_INTERPOLATION_END\": 25,\n  \"25\": \"X_MISSING_INTERPOLATION_END\",\n  \"X_MISSING_DIRECTIVE_NAME\": 26,\n  \"26\": \"X_MISSING_DIRECTIVE_NAME\",\n  \"X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END\": 27,\n  \"27\": \"X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END\",\n  \"X_V_IF_NO_EXPRESSION\": 28,\n  \"28\": \"X_V_IF_NO_EXPRESSION\",\n  \"X_V_IF_SAME_KEY\": 29,\n  \"29\": \"X_V_IF_SAME_KEY\",\n  \"X_V_ELSE_NO_ADJACENT_IF\": 30,\n  \"30\": \"X_V_ELSE_NO_ADJACENT_IF\",\n  \"X_V_FOR_NO_EXPRESSION\": 31,\n  \"31\": \"X_V_FOR_NO_EXPRESSION\",\n  \"X_V_FOR_MALFORMED_EXPRESSION\": 32,\n  \"32\": \"X_V_FOR_MALFORMED_EXPRESSION\",\n  \"X_V_FOR_TEMPLATE_KEY_PLACEMENT\": 33,\n  \"33\": \"X_V_FOR_TEMPLATE_KEY_PLACEMENT\",\n  \"X_V_BIND_NO_EXPRESSION\": 34,\n  \"34\": \"X_V_BIND_NO_EXPRESSION\",\n  \"X_V_ON_NO_EXPRESSION\": 35,\n  \"35\": \"X_V_ON_NO_EXPRESSION\",\n  \"X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET\": 36,\n  \"36\": \"X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET\",\n  \"X_V_SLOT_MIXED_SLOT_USAGE\": 37,\n  \"37\": \"X_V_SLOT_MIXED_SLOT_USAGE\",\n  \"X_V_SLOT_DUPLICATE_SLOT_NAMES\": 38,\n  \"38\": \"X_V_SLOT_DUPLICATE_SLOT_NAMES\",\n  \"X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN\": 39,\n  \"39\": \"X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN\",\n  \"X_V_SLOT_MISPLACED\": 40,\n  \"40\": \"X_V_SLOT_MISPLACED\",\n  \"X_V_MODEL_NO_EXPRESSION\": 41,\n  \"41\": \"X_V_MODEL_NO_EXPRESSION\",\n  \"X_V_MODEL_MALFORMED_EXPRESSION\": 42,\n  \"42\": \"X_V_MODEL_MALFORMED_EXPRESSION\",\n  \"X_V_MODEL_ON_SCOPE_VARIABLE\": 43,\n  \"43\": \"X_V_MODEL_ON_SCOPE_VARIABLE\",\n  \"X_V_MODEL_ON_PROPS\": 44,\n  \"44\": \"X_V_MODEL_ON_PROPS\",\n  \"X_INVALID_EXPRESSION\": 45,\n  \"45\": \"X_INVALID_EXPRESSION\",\n  \"X_KEEP_ALIVE_INVALID_CHILDREN\": 46,\n  \"46\": \"X_KEEP_ALIVE_INVALID_CHILDREN\",\n  \"X_PREFIX_ID_NOT_SUPPORTED\": 47,\n  \"47\": \"X_PREFIX_ID_NOT_SUPPORTED\",\n  \"X_MODULE_MODE_NOT_SUPPORTED\": 48,\n  \"48\": \"X_MODULE_MODE_NOT_SUPPORTED\",\n  \"X_CACHE_HANDLER_NOT_SUPPORTED\": 49,\n  \"49\": \"X_CACHE_HANDLER_NOT_SUPPORTED\",\n  \"X_SCOPE_ID_NOT_SUPPORTED\": 50,\n  \"50\": \"X_SCOPE_ID_NOT_SUPPORTED\",\n  \"X_VNODE_HOOKS\": 51,\n  \"51\": \"X_VNODE_HOOKS\",\n  \"X_V_BIND_INVALID_SAME_NAME_ARGUMENT\": 52,\n  \"52\": \"X_V_BIND_INVALID_SAME_NAME_ARGUMENT\",\n  \"__EXTEND_POINT__\": 53,\n  \"53\": \"__EXTEND_POINT__\"\n};\nconst errorMessages = {\n  // parse errors\n  [0]: \"Illegal comment.\",\n  [1]: \"CDATA section is allowed only in XML context.\",\n  [2]: \"Duplicate attribute.\",\n  [3]: \"End tag cannot have attributes.\",\n  [4]: \"Illegal '/' in tags.\",\n  [5]: \"Unexpected EOF in tag.\",\n  [6]: \"Unexpected EOF in CDATA section.\",\n  [7]: \"Unexpected EOF in comment.\",\n  [8]: \"Unexpected EOF in script.\",\n  [9]: \"Unexpected EOF in tag.\",\n  [10]: \"Incorrectly closed comment.\",\n  [11]: \"Incorrectly opened comment.\",\n  [12]: \"Illegal tag name. Use '&lt;' to print '<'.\",\n  [13]: \"Attribute value was expected.\",\n  [14]: \"End tag name was expected.\",\n  [15]: \"Whitespace was expected.\",\n  [16]: \"Unexpected '<!--' in comment.\",\n  [17]: `Attribute name cannot contain U+0022 (\"), U+0027 ('), and U+003C (<).`,\n  [18]: \"Unquoted attribute value cannot contain U+0022 (\\\"), U+0027 ('), U+003C (<), U+003D (=), and U+0060 (`).\",\n  [19]: \"Attribute name cannot start with '='.\",\n  [21]: \"'<?' is allowed only in XML context.\",\n  [20]: `Unexpected null character.`,\n  [22]: \"Illegal '/' in tags.\",\n  // Vue-specific parse errors\n  [23]: \"Invalid end tag.\",\n  [24]: \"Element is missing end tag.\",\n  [25]: \"Interpolation end sign was not found.\",\n  [27]: \"End bracket for dynamic directive argument was not found. Note that dynamic directive argument cannot contain spaces.\",\n  [26]: \"Legal directive name was expected.\",\n  // transform errors\n  [28]: `v-if/v-else-if is missing expression.`,\n  [29]: `v-if/else branches must use unique keys.`,\n  [30]: `v-else/v-else-if has no adjacent v-if or v-else-if.`,\n  [31]: `v-for is missing expression.`,\n  [32]: `v-for has invalid expression.`,\n  [33]: `<template v-for> key should be placed on the <template> tag.`,\n  [34]: `v-bind is missing expression.`,\n  [52]: `v-bind with same-name shorthand only allows static argument.`,\n  [35]: `v-on is missing expression.`,\n  [36]: `Unexpected custom directive on <slot> outlet.`,\n  [37]: `Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.`,\n  [38]: `Duplicate slot names found. `,\n  [39]: `Extraneous children found when component already has explicitly named default slot. These children will be ignored.`,\n  [40]: `v-slot can only be used on components or <template> tags.`,\n  [41]: `v-model is missing expression.`,\n  [42]: `v-model value must be a valid JavaScript member expression.`,\n  [43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`,\n  [44]: `v-model cannot be used on a prop, because local prop bindings are not writable.\nUse a v-bind binding combined with a v-on listener that emits update:x event instead.`,\n  [45]: `Error parsing JavaScript expression: `,\n  [46]: `<KeepAlive> expects exactly one child component.`,\n  [51]: `@vnode-* hooks in templates are no longer supported. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support has been removed in 3.4.`,\n  // generic errors\n  [47]: `\"prefixIdentifiers\" option is not supported in this build of compiler.`,\n  [48]: `ES module mode is not supported in this build of compiler.`,\n  [49]: `\"cacheHandlers\" option is only supported when the \"prefixIdentifiers\" option is enabled.`,\n  [50]: `\"scopeId\" option is only supported in module mode.`,\n  // just to fulfill types\n  [53]: ``\n};\n\nfunction walkIdentifiers(root, onIdentifier, includeAll = false, parentStack = [], knownIds = /* @__PURE__ */ Object.create(null)) {\n  const rootExp = root.type === \"Program\" ? root.body[0].type === \"ExpressionStatement\" && root.body[0].expression : root;\n  estreeWalker.walk(root, {\n    enter(node, parent) {\n      parent && parentStack.push(parent);\n      if (parent && parent.type.startsWith(\"TS\") && !TS_NODE_TYPES.includes(parent.type)) {\n        return this.skip();\n      }\n      if (node.type === \"Identifier\") {\n        const isLocal = !!knownIds[node.name];\n        const isRefed = isReferencedIdentifier(node, parent, parentStack);\n        if (includeAll || isRefed && !isLocal) {\n          onIdentifier(node, parent, parentStack, isRefed, isLocal);\n        }\n      } else if (node.type === \"ObjectProperty\" && // eslint-disable-next-line no-restricted-syntax\n      (parent == null ? void 0 : parent.type) === \"ObjectPattern\") {\n        node.inPattern = true;\n      } else if (isFunctionType(node)) {\n        if (node.scopeIds) {\n          node.scopeIds.forEach((id) => markKnownIds(id, knownIds));\n        } else {\n          walkFunctionParams(\n            node,\n            (id) => markScopeIdentifier(node, id, knownIds)\n          );\n        }\n      } else if (node.type === \"BlockStatement\") {\n        if (node.scopeIds) {\n          node.scopeIds.forEach((id) => markKnownIds(id, knownIds));\n        } else {\n          walkBlockDeclarations(\n            node,\n            (id) => markScopeIdentifier(node, id, knownIds)\n          );\n        }\n      } else if (node.type === \"CatchClause\" && node.param) {\n        for (const id of extractIdentifiers(node.param)) {\n          markScopeIdentifier(node, id, knownIds);\n        }\n      } else if (isForStatement(node)) {\n        walkForStatement(\n          node,\n          false,\n          (id) => markScopeIdentifier(node, id, knownIds)\n        );\n      }\n    },\n    leave(node, parent) {\n      parent && parentStack.pop();\n      if (node !== rootExp && node.scopeIds) {\n        for (const id of node.scopeIds) {\n          knownIds[id]--;\n          if (knownIds[id] === 0) {\n            delete knownIds[id];\n          }\n        }\n      }\n    }\n  });\n}\nfunction isReferencedIdentifier(id, parent, parentStack) {\n  if (!parent) {\n    return true;\n  }\n  if (id.name === \"arguments\") {\n    return false;\n  }\n  if (isReferenced(id, parent, parentStack[parentStack.length - 2])) {\n    return true;\n  }\n  switch (parent.type) {\n    case \"AssignmentExpression\":\n    case \"AssignmentPattern\":\n      return true;\n    case \"ObjectProperty\":\n      return parent.key !== id && isInDestructureAssignment(parent, parentStack);\n    case \"ArrayPattern\":\n      return isInDestructureAssignment(parent, parentStack);\n  }\n  return false;\n}\nfunction isInDestructureAssignment(parent, parentStack) {\n  if (parent && (parent.type === \"ObjectProperty\" || parent.type === \"ArrayPattern\")) {\n    let i = parentStack.length;\n    while (i--) {\n      const p = parentStack[i];\n      if (p.type === \"AssignmentExpression\") {\n        return true;\n      } else if (p.type !== \"ObjectProperty\" && !p.type.endsWith(\"Pattern\")) {\n        break;\n      }\n    }\n  }\n  return false;\n}\nfunction isInNewExpression(parentStack) {\n  let i = parentStack.length;\n  while (i--) {\n    const p = parentStack[i];\n    if (p.type === \"NewExpression\") {\n      return true;\n    } else if (p.type !== \"MemberExpression\") {\n      break;\n    }\n  }\n  return false;\n}\nfunction walkFunctionParams(node, onIdent) {\n  for (const p of node.params) {\n    for (const id of extractIdentifiers(p)) {\n      onIdent(id);\n    }\n  }\n}\nfunction walkBlockDeclarations(block, onIdent) {\n  for (const stmt of block.body) {\n    if (stmt.type === \"VariableDeclaration\") {\n      if (stmt.declare) continue;\n      for (const decl of stmt.declarations) {\n        for (const id of extractIdentifiers(decl.id)) {\n          onIdent(id);\n        }\n      }\n    } else if (stmt.type === \"FunctionDeclaration\" || stmt.type === \"ClassDeclaration\") {\n      if (stmt.declare || !stmt.id) continue;\n      onIdent(stmt.id);\n    } else if (isForStatement(stmt)) {\n      walkForStatement(stmt, true, onIdent);\n    }\n  }\n}\nfunction isForStatement(stmt) {\n  return stmt.type === \"ForOfStatement\" || stmt.type === \"ForInStatement\" || stmt.type === \"ForStatement\";\n}\nfunction walkForStatement(stmt, isVar, onIdent) {\n  const variable = stmt.type === \"ForStatement\" ? stmt.init : stmt.left;\n  if (variable && variable.type === \"VariableDeclaration\" && (variable.kind === \"var\" ? isVar : !isVar)) {\n    for (const decl of variable.declarations) {\n      for (const id of extractIdentifiers(decl.id)) {\n        onIdent(id);\n      }\n    }\n  }\n}\nfunction extractIdentifiers(param, nodes = []) {\n  switch (param.type) {\n    case \"Identifier\":\n      nodes.push(param);\n      break;\n    case \"MemberExpression\":\n      let object = param;\n      while (object.type === \"MemberExpression\") {\n        object = object.object;\n      }\n      nodes.push(object);\n      break;\n    case \"ObjectPattern\":\n      for (const prop of param.properties) {\n        if (prop.type === \"RestElement\") {\n          extractIdentifiers(prop.argument, nodes);\n        } else {\n          extractIdentifiers(prop.value, nodes);\n        }\n      }\n      break;\n    case \"ArrayPattern\":\n      param.elements.forEach((element) => {\n        if (element) extractIdentifiers(element, nodes);\n      });\n      break;\n    case \"RestElement\":\n      extractIdentifiers(param.argument, nodes);\n      break;\n    case \"AssignmentPattern\":\n      extractIdentifiers(param.left, nodes);\n      break;\n  }\n  return nodes;\n}\nfunction markKnownIds(name, knownIds) {\n  if (name in knownIds) {\n    knownIds[name]++;\n  } else {\n    knownIds[name] = 1;\n  }\n}\nfunction markScopeIdentifier(node, child, knownIds) {\n  const { name } = child;\n  if (node.scopeIds && node.scopeIds.has(name)) {\n    return;\n  }\n  markKnownIds(name, knownIds);\n  (node.scopeIds || (node.scopeIds = /* @__PURE__ */ new Set())).add(name);\n}\nconst isFunctionType = (node) => {\n  return /Function(?:Expression|Declaration)$|Method$/.test(node.type);\n};\nconst isStaticProperty = (node) => node && (node.type === \"ObjectProperty\" || node.type === \"ObjectMethod\") && !node.computed;\nconst isStaticPropertyKey = (node, parent) => isStaticProperty(parent) && parent.key === node;\nfunction isReferenced(node, parent, grandparent) {\n  switch (parent.type) {\n    // yes: PARENT[NODE]\n    // yes: NODE.child\n    // no: parent.NODE\n    case \"MemberExpression\":\n    case \"OptionalMemberExpression\":\n      if (parent.property === node) {\n        return !!parent.computed;\n      }\n      return parent.object === node;\n    case \"JSXMemberExpression\":\n      return parent.object === node;\n    // no: let NODE = init;\n    // yes: let id = NODE;\n    case \"VariableDeclarator\":\n      return parent.init === node;\n    // yes: () => NODE\n    // no: (NODE) => {}\n    case \"ArrowFunctionExpression\":\n      return parent.body === node;\n    // no: class { #NODE; }\n    // no: class { get #NODE() {} }\n    // no: class { #NODE() {} }\n    // no: class { fn() { return this.#NODE; } }\n    case \"PrivateName\":\n      return false;\n    // no: class { NODE() {} }\n    // yes: class { [NODE]() {} }\n    // no: class { foo(NODE) {} }\n    case \"ClassMethod\":\n    case \"ClassPrivateMethod\":\n    case \"ObjectMethod\":\n      if (parent.key === node) {\n        return !!parent.computed;\n      }\n      return false;\n    // yes: { [NODE]: \"\" }\n    // no: { NODE: \"\" }\n    // depends: { NODE }\n    // depends: { key: NODE }\n    case \"ObjectProperty\":\n      if (parent.key === node) {\n        return !!parent.computed;\n      }\n      return !grandparent || grandparent.type !== \"ObjectPattern\";\n    // no: class { NODE = value; }\n    // yes: class { [NODE] = value; }\n    // yes: class { key = NODE; }\n    case \"ClassProperty\":\n      if (parent.key === node) {\n        return !!parent.computed;\n      }\n      return true;\n    case \"ClassPrivateProperty\":\n      return parent.key !== node;\n    // no: class NODE {}\n    // yes: class Foo extends NODE {}\n    case \"ClassDeclaration\":\n    case \"ClassExpression\":\n      return parent.superClass === node;\n    // yes: left = NODE;\n    // no: NODE = right;\n    case \"AssignmentExpression\":\n      return parent.right === node;\n    // no: [NODE = foo] = [];\n    // yes: [foo = NODE] = [];\n    case \"AssignmentPattern\":\n      return parent.right === node;\n    // no: NODE: for (;;) {}\n    case \"LabeledStatement\":\n      return false;\n    // no: try {} catch (NODE) {}\n    case \"CatchClause\":\n      return false;\n    // no: function foo(...NODE) {}\n    case \"RestElement\":\n      return false;\n    case \"BreakStatement\":\n    case \"ContinueStatement\":\n      return false;\n    // no: function NODE() {}\n    // no: function foo(NODE) {}\n    case \"FunctionDeclaration\":\n    case \"FunctionExpression\":\n      return false;\n    // no: export NODE from \"foo\";\n    // no: export * as NODE from \"foo\";\n    case \"ExportNamespaceSpecifier\":\n    case \"ExportDefaultSpecifier\":\n      return false;\n    // no: export { foo as NODE };\n    // yes: export { NODE as foo };\n    // no: export { NODE as foo } from \"foo\";\n    case \"ExportSpecifier\":\n      if (grandparent == null ? void 0 : grandparent.source) {\n        return false;\n      }\n      return parent.local === node;\n    // no: import NODE from \"foo\";\n    // no: import * as NODE from \"foo\";\n    // no: import { NODE as foo } from \"foo\";\n    // no: import { foo as NODE } from \"foo\";\n    // no: import NODE from \"bar\";\n    case \"ImportDefaultSpecifier\":\n    case \"ImportNamespaceSpecifier\":\n    case \"ImportSpecifier\":\n      return false;\n    // no: import \"foo\" assert { NODE: \"json\" }\n    case \"ImportAttribute\":\n      return false;\n    // no: <div NODE=\"foo\" />\n    case \"JSXAttribute\":\n      return false;\n    // no: [NODE] = [];\n    // no: ({ NODE }) = [];\n    case \"ObjectPattern\":\n    case \"ArrayPattern\":\n      return false;\n    // no: new.NODE\n    // no: NODE.target\n    case \"MetaProperty\":\n      return false;\n    // yes: type X = { someProperty: NODE }\n    // no: type X = { NODE: OtherType }\n    case \"ObjectTypeProperty\":\n      return parent.key !== node;\n    // yes: enum X { Foo = NODE }\n    // no: enum X { NODE }\n    case \"TSEnumMember\":\n      return parent.id !== node;\n    // yes: { [NODE]: value }\n    // no: { NODE: value }\n    case \"TSPropertySignature\":\n      if (parent.key === node) {\n        return !!parent.computed;\n      }\n      return true;\n  }\n  return true;\n}\nconst TS_NODE_TYPES = [\n  \"TSAsExpression\",\n  // foo as number\n  \"TSTypeAssertion\",\n  // (<number>foo)\n  \"TSNonNullExpression\",\n  // foo!\n  \"TSInstantiationExpression\",\n  // foo<string>\n  \"TSSatisfiesExpression\"\n  // foo satisfies T\n];\nfunction unwrapTSNode(node) {\n  if (TS_NODE_TYPES.includes(node.type)) {\n    return unwrapTSNode(node.expression);\n  } else {\n    return node;\n  }\n}\n\nconst isStaticExp = (p) => p.type === 4 && p.isStatic;\nfunction isCoreComponent(tag) {\n  switch (tag) {\n    case \"Teleport\":\n    case \"teleport\":\n      return TELEPORT;\n    case \"Suspense\":\n    case \"suspense\":\n      return SUSPENSE;\n    case \"KeepAlive\":\n    case \"keep-alive\":\n      return KEEP_ALIVE;\n    case \"BaseTransition\":\n    case \"base-transition\":\n      return BASE_TRANSITION;\n  }\n}\nconst nonIdentifierRE = /^$|^\\d|[^\\$\\w\\xA0-\\uFFFF]/;\nconst isSimpleIdentifier = (name) => !nonIdentifierRE.test(name);\nconst validFirstIdentCharRE = /[A-Za-z_$\\xA0-\\uFFFF]/;\nconst validIdentCharRE = /[\\.\\?\\w$\\xA0-\\uFFFF]/;\nconst whitespaceRE = /\\s+[.[]\\s*|\\s*[.[]\\s+/g;\nconst getExpSource = (exp) => exp.type === 4 ? exp.content : exp.loc.source;\nconst isMemberExpressionBrowser = (exp) => {\n  const path = getExpSource(exp).trim().replace(whitespaceRE, (s) => s.trim());\n  let state = 0 /* inMemberExp */;\n  let stateStack = [];\n  let currentOpenBracketCount = 0;\n  let currentOpenParensCount = 0;\n  let currentStringType = null;\n  for (let i = 0; i < path.length; i++) {\n    const char = path.charAt(i);\n    switch (state) {\n      case 0 /* inMemberExp */:\n        if (char === \"[\") {\n          stateStack.push(state);\n          state = 1 /* inBrackets */;\n          currentOpenBracketCount++;\n        } else if (char === \"(\") {\n          stateStack.push(state);\n          state = 2 /* inParens */;\n          currentOpenParensCount++;\n        } else if (!(i === 0 ? validFirstIdentCharRE : validIdentCharRE).test(char)) {\n          return false;\n        }\n        break;\n      case 1 /* inBrackets */:\n        if (char === `'` || char === `\"` || char === \"`\") {\n          stateStack.push(state);\n          state = 3 /* inString */;\n          currentStringType = char;\n        } else if (char === `[`) {\n          currentOpenBracketCount++;\n        } else if (char === `]`) {\n          if (!--currentOpenBracketCount) {\n            state = stateStack.pop();\n          }\n        }\n        break;\n      case 2 /* inParens */:\n        if (char === `'` || char === `\"` || char === \"`\") {\n          stateStack.push(state);\n          state = 3 /* inString */;\n          currentStringType = char;\n        } else if (char === `(`) {\n          currentOpenParensCount++;\n        } else if (char === `)`) {\n          if (i === path.length - 1) {\n            return false;\n          }\n          if (!--currentOpenParensCount) {\n            state = stateStack.pop();\n          }\n        }\n        break;\n      case 3 /* inString */:\n        if (char === currentStringType) {\n          state = stateStack.pop();\n          currentStringType = null;\n        }\n        break;\n    }\n  }\n  return !currentOpenBracketCount && !currentOpenParensCount;\n};\nconst isMemberExpressionNode = (exp, context) => {\n  try {\n    let ret = exp.ast || parser.parseExpression(getExpSource(exp), {\n      plugins: context.expressionPlugins ? [...context.expressionPlugins, \"typescript\"] : [\"typescript\"]\n    });\n    ret = unwrapTSNode(ret);\n    return ret.type === \"MemberExpression\" || ret.type === \"OptionalMemberExpression\" || ret.type === \"Identifier\" && ret.name !== \"undefined\";\n  } catch (e) {\n    return false;\n  }\n};\nconst isMemberExpression = isMemberExpressionNode;\nconst fnExpRE = /^\\s*(async\\s*)?(\\([^)]*?\\)|[\\w$_]+)\\s*(:[^=]+)?=>|^\\s*(async\\s+)?function(?:\\s+[\\w$]+)?\\s*\\(/;\nconst isFnExpressionBrowser = (exp) => fnExpRE.test(getExpSource(exp));\nconst isFnExpressionNode = (exp, context) => {\n  try {\n    let ret = exp.ast || parser.parseExpression(getExpSource(exp), {\n      plugins: context.expressionPlugins ? [...context.expressionPlugins, \"typescript\"] : [\"typescript\"]\n    });\n    if (ret.type === \"Program\") {\n      ret = ret.body[0];\n      if (ret.type === \"ExpressionStatement\") {\n        ret = ret.expression;\n      }\n    }\n    ret = unwrapTSNode(ret);\n    return ret.type === \"FunctionExpression\" || ret.type === \"ArrowFunctionExpression\";\n  } catch (e) {\n    return false;\n  }\n};\nconst isFnExpression = isFnExpressionNode;\nfunction advancePositionWithClone(pos, source, numberOfCharacters = source.length) {\n  return advancePositionWithMutation(\n    {\n      offset: pos.offset,\n      line: pos.line,\n      column: pos.column\n    },\n    source,\n    numberOfCharacters\n  );\n}\nfunction advancePositionWithMutation(pos, source, numberOfCharacters = source.length) {\n  let linesCount = 0;\n  let lastNewLinePos = -1;\n  for (let i = 0; i < numberOfCharacters; i++) {\n    if (source.charCodeAt(i) === 10) {\n      linesCount++;\n      lastNewLinePos = i;\n    }\n  }\n  pos.offset += numberOfCharacters;\n  pos.line += linesCount;\n  pos.column = lastNewLinePos === -1 ? pos.column + numberOfCharacters : numberOfCharacters - lastNewLinePos;\n  return pos;\n}\nfunction assert(condition, msg) {\n  if (!condition) {\n    throw new Error(msg || `unexpected compiler condition`);\n  }\n}\nfunction findDir(node, name, allowEmpty = false) {\n  for (let i = 0; i < node.props.length; i++) {\n    const p = node.props[i];\n    if (p.type === 7 && (allowEmpty || p.exp) && (shared.isString(name) ? p.name === name : name.test(p.name))) {\n      return p;\n    }\n  }\n}\nfunction findProp(node, name, dynamicOnly = false, allowEmpty = false) {\n  for (let i = 0; i < node.props.length; i++) {\n    const p = node.props[i];\n    if (p.type === 6) {\n      if (dynamicOnly) continue;\n      if (p.name === name && (p.value || allowEmpty)) {\n        return p;\n      }\n    } else if (p.name === \"bind\" && (p.exp || allowEmpty) && isStaticArgOf(p.arg, name)) {\n      return p;\n    }\n  }\n}\nfunction isStaticArgOf(arg, name) {\n  return !!(arg && isStaticExp(arg) && arg.content === name);\n}\nfunction hasDynamicKeyVBind(node) {\n  return node.props.some(\n    (p) => p.type === 7 && p.name === \"bind\" && (!p.arg || // v-bind=\"obj\"\n    p.arg.type !== 4 || // v-bind:[_ctx.foo]\n    !p.arg.isStatic)\n    // v-bind:[foo]\n  );\n}\nfunction isText$1(node) {\n  return node.type === 5 || node.type === 2;\n}\nfunction isVPre(p) {\n  return p.type === 7 && p.name === \"pre\";\n}\nfunction isVSlot(p) {\n  return p.type === 7 && p.name === \"slot\";\n}\nfunction isTemplateNode(node) {\n  return node.type === 1 && node.tagType === 3;\n}\nfunction isSlotOutlet(node) {\n  return node.type === 1 && node.tagType === 2;\n}\nconst propsHelperSet = /* @__PURE__ */ new Set([NORMALIZE_PROPS, GUARD_REACTIVE_PROPS]);\nfunction getUnnormalizedProps(props, callPath = []) {\n  if (props && !shared.isString(props) && props.type === 14) {\n    const callee = props.callee;\n    if (!shared.isString(callee) && propsHelperSet.has(callee)) {\n      return getUnnormalizedProps(\n        props.arguments[0],\n        callPath.concat(props)\n      );\n    }\n  }\n  return [props, callPath];\n}\nfunction injectProp(node, prop, context) {\n  let propsWithInjection;\n  let props = node.type === 13 ? node.props : node.arguments[2];\n  let callPath = [];\n  let parentCall;\n  if (props && !shared.isString(props) && props.type === 14) {\n    const ret = getUnnormalizedProps(props);\n    props = ret[0];\n    callPath = ret[1];\n    parentCall = callPath[callPath.length - 1];\n  }\n  if (props == null || shared.isString(props)) {\n    propsWithInjection = createObjectExpression([prop]);\n  } else if (props.type === 14) {\n    const first = props.arguments[0];\n    if (!shared.isString(first) && first.type === 15) {\n      if (!hasProp(prop, first)) {\n        first.properties.unshift(prop);\n      }\n    } else {\n      if (props.callee === TO_HANDLERS) {\n        propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [\n          createObjectExpression([prop]),\n          props\n        ]);\n      } else {\n        props.arguments.unshift(createObjectExpression([prop]));\n      }\n    }\n    !propsWithInjection && (propsWithInjection = props);\n  } else if (props.type === 15) {\n    if (!hasProp(prop, props)) {\n      props.properties.unshift(prop);\n    }\n    propsWithInjection = props;\n  } else {\n    propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [\n      createObjectExpression([prop]),\n      props\n    ]);\n    if (parentCall && parentCall.callee === GUARD_REACTIVE_PROPS) {\n      parentCall = callPath[callPath.length - 2];\n    }\n  }\n  if (node.type === 13) {\n    if (parentCall) {\n      parentCall.arguments[0] = propsWithInjection;\n    } else {\n      node.props = propsWithInjection;\n    }\n  } else {\n    if (parentCall) {\n      parentCall.arguments[0] = propsWithInjection;\n    } else {\n      node.arguments[2] = propsWithInjection;\n    }\n  }\n}\nfunction hasProp(prop, props) {\n  let result = false;\n  if (prop.key.type === 4) {\n    const propKeyName = prop.key.content;\n    result = props.properties.some(\n      (p) => p.key.type === 4 && p.key.content === propKeyName\n    );\n  }\n  return result;\n}\nfunction toValidAssetId(name, type) {\n  return `_${type}_${name.replace(/[^\\w]/g, (searchValue, replaceValue) => {\n    return searchValue === \"-\" ? \"_\" : name.charCodeAt(replaceValue).toString();\n  })}`;\n}\nfunction hasScopeRef(node, ids) {\n  if (!node || Object.keys(ids).length === 0) {\n    return false;\n  }\n  switch (node.type) {\n    case 1:\n      for (let i = 0; i < node.props.length; i++) {\n        const p = node.props[i];\n        if (p.type === 7 && (hasScopeRef(p.arg, ids) || hasScopeRef(p.exp, ids))) {\n          return true;\n        }\n      }\n      return node.children.some((c) => hasScopeRef(c, ids));\n    case 11:\n      if (hasScopeRef(node.source, ids)) {\n        return true;\n      }\n      return node.children.some((c) => hasScopeRef(c, ids));\n    case 9:\n      return node.branches.some((b) => hasScopeRef(b, ids));\n    case 10:\n      if (hasScopeRef(node.condition, ids)) {\n        return true;\n      }\n      return node.children.some((c) => hasScopeRef(c, ids));\n    case 4:\n      return !node.isStatic && isSimpleIdentifier(node.content) && !!ids[node.content];\n    case 8:\n      return node.children.some((c) => shared.isObject(c) && hasScopeRef(c, ids));\n    case 5:\n    case 12:\n      return hasScopeRef(node.content, ids);\n    case 2:\n    case 3:\n    case 20:\n      return false;\n    default:\n      return false;\n  }\n}\nfunction getMemoedVNodeCall(node) {\n  if (node.type === 14 && node.callee === WITH_MEMO) {\n    return node.arguments[1].returns;\n  } else {\n    return node;\n  }\n}\nconst forAliasRE = /([\\s\\S]*?)\\s+(?:in|of)\\s+(\\S[\\s\\S]*)/;\n\nconst defaultParserOptions = {\n  parseMode: \"base\",\n  ns: 0,\n  delimiters: [`{{`, `}}`],\n  getNamespace: () => 0,\n  isVoidTag: shared.NO,\n  isPreTag: shared.NO,\n  isIgnoreNewlineTag: shared.NO,\n  isCustomElement: shared.NO,\n  onError: defaultOnError,\n  onWarn: defaultOnWarn,\n  comments: false,\n  prefixIdentifiers: false\n};\nlet currentOptions = defaultParserOptions;\nlet currentRoot = null;\nlet currentInput = \"\";\nlet currentOpenTag = null;\nlet currentProp = null;\nlet currentAttrValue = \"\";\nlet currentAttrStartIndex = -1;\nlet currentAttrEndIndex = -1;\nlet inPre = 0;\nlet inVPre = false;\nlet currentVPreBoundary = null;\nconst stack = [];\nconst tokenizer = new Tokenizer(stack, {\n  onerr: emitError,\n  ontext(start, end) {\n    onText(getSlice(start, end), start, end);\n  },\n  ontextentity(char, start, end) {\n    onText(char, start, end);\n  },\n  oninterpolation(start, end) {\n    if (inVPre) {\n      return onText(getSlice(start, end), start, end);\n    }\n    let innerStart = start + tokenizer.delimiterOpen.length;\n    let innerEnd = end - tokenizer.delimiterClose.length;\n    while (isWhitespace(currentInput.charCodeAt(innerStart))) {\n      innerStart++;\n    }\n    while (isWhitespace(currentInput.charCodeAt(innerEnd - 1))) {\n      innerEnd--;\n    }\n    let exp = getSlice(innerStart, innerEnd);\n    if (exp.includes(\"&\")) {\n      {\n        exp = decode_js.decodeHTML(exp);\n      }\n    }\n    addNode({\n      type: 5,\n      content: createExp(exp, false, getLoc(innerStart, innerEnd)),\n      loc: getLoc(start, end)\n    });\n  },\n  onopentagname(start, end) {\n    const name = getSlice(start, end);\n    currentOpenTag = {\n      type: 1,\n      tag: name,\n      ns: currentOptions.getNamespace(name, stack[0], currentOptions.ns),\n      tagType: 0,\n      // will be refined on tag close\n      props: [],\n      children: [],\n      loc: getLoc(start - 1, end),\n      codegenNode: void 0\n    };\n  },\n  onopentagend(end) {\n    endOpenTag(end);\n  },\n  onclosetag(start, end) {\n    const name = getSlice(start, end);\n    if (!currentOptions.isVoidTag(name)) {\n      let found = false;\n      for (let i = 0; i < stack.length; i++) {\n        const e = stack[i];\n        if (e.tag.toLowerCase() === name.toLowerCase()) {\n          found = true;\n          if (i > 0) {\n            emitError(24, stack[0].loc.start.offset);\n          }\n          for (let j = 0; j <= i; j++) {\n            const el = stack.shift();\n            onCloseTag(el, end, j < i);\n          }\n          break;\n        }\n      }\n      if (!found) {\n        emitError(23, backTrack(start, 60));\n      }\n    }\n  },\n  onselfclosingtag(end) {\n    const name = currentOpenTag.tag;\n    currentOpenTag.isSelfClosing = true;\n    endOpenTag(end);\n    if (stack[0] && stack[0].tag === name) {\n      onCloseTag(stack.shift(), end);\n    }\n  },\n  onattribname(start, end) {\n    currentProp = {\n      type: 6,\n      name: getSlice(start, end),\n      nameLoc: getLoc(start, end),\n      value: void 0,\n      loc: getLoc(start)\n    };\n  },\n  ondirname(start, end) {\n    const raw = getSlice(start, end);\n    const name = raw === \".\" || raw === \":\" ? \"bind\" : raw === \"@\" ? \"on\" : raw === \"#\" ? \"slot\" : raw.slice(2);\n    if (!inVPre && name === \"\") {\n      emitError(26, start);\n    }\n    if (inVPre || name === \"\") {\n      currentProp = {\n        type: 6,\n        name: raw,\n        nameLoc: getLoc(start, end),\n        value: void 0,\n        loc: getLoc(start)\n      };\n    } else {\n      currentProp = {\n        type: 7,\n        name,\n        rawName: raw,\n        exp: void 0,\n        arg: void 0,\n        modifiers: raw === \".\" ? [createSimpleExpression(\"prop\")] : [],\n        loc: getLoc(start)\n      };\n      if (name === \"pre\") {\n        inVPre = tokenizer.inVPre = true;\n        currentVPreBoundary = currentOpenTag;\n        const props = currentOpenTag.props;\n        for (let i = 0; i < props.length; i++) {\n          if (props[i].type === 7) {\n            props[i] = dirToAttr(props[i]);\n          }\n        }\n      }\n    }\n  },\n  ondirarg(start, end) {\n    if (start === end) return;\n    const arg = getSlice(start, end);\n    if (inVPre && !isVPre(currentProp)) {\n      currentProp.name += arg;\n      setLocEnd(currentProp.nameLoc, end);\n    } else {\n      const isStatic = arg[0] !== `[`;\n      currentProp.arg = createExp(\n        isStatic ? arg : arg.slice(1, -1),\n        isStatic,\n        getLoc(start, end),\n        isStatic ? 3 : 0\n      );\n    }\n  },\n  ondirmodifier(start, end) {\n    const mod = getSlice(start, end);\n    if (inVPre && !isVPre(currentProp)) {\n      currentProp.name += \".\" + mod;\n      setLocEnd(currentProp.nameLoc, end);\n    } else if (currentProp.name === \"slot\") {\n      const arg = currentProp.arg;\n      if (arg) {\n        arg.content += \".\" + mod;\n        setLocEnd(arg.loc, end);\n      }\n    } else {\n      const exp = createSimpleExpression(mod, true, getLoc(start, end));\n      currentProp.modifiers.push(exp);\n    }\n  },\n  onattribdata(start, end) {\n    currentAttrValue += getSlice(start, end);\n    if (currentAttrStartIndex < 0) currentAttrStartIndex = start;\n    currentAttrEndIndex = end;\n  },\n  onattribentity(char, start, end) {\n    currentAttrValue += char;\n    if (currentAttrStartIndex < 0) currentAttrStartIndex = start;\n    currentAttrEndIndex = end;\n  },\n  onattribnameend(end) {\n    const start = currentProp.loc.start.offset;\n    const name = getSlice(start, end);\n    if (currentProp.type === 7) {\n      currentProp.rawName = name;\n    }\n    if (currentOpenTag.props.some(\n      (p) => (p.type === 7 ? p.rawName : p.name) === name\n    )) {\n      emitError(2, start);\n    }\n  },\n  onattribend(quote, end) {\n    if (currentOpenTag && currentProp) {\n      setLocEnd(currentProp.loc, end);\n      if (quote !== 0) {\n        if (currentProp.type === 6) {\n          if (currentProp.name === \"class\") {\n            currentAttrValue = condense(currentAttrValue).trim();\n          }\n          if (quote === 1 && !currentAttrValue) {\n            emitError(13, end);\n          }\n          currentProp.value = {\n            type: 2,\n            content: currentAttrValue,\n            loc: quote === 1 ? getLoc(currentAttrStartIndex, currentAttrEndIndex) : getLoc(currentAttrStartIndex - 1, currentAttrEndIndex + 1)\n          };\n          if (tokenizer.inSFCRoot && currentOpenTag.tag === \"template\" && currentProp.name === \"lang\" && currentAttrValue && currentAttrValue !== \"html\") {\n            tokenizer.enterRCDATA(toCharCodes(`</template`), 0);\n          }\n        } else {\n          let expParseMode = 0 /* Normal */;\n          {\n            if (currentProp.name === \"for\") {\n              expParseMode = 3 /* Skip */;\n            } else if (currentProp.name === \"slot\") {\n              expParseMode = 1 /* Params */;\n            } else if (currentProp.name === \"on\" && currentAttrValue.includes(\";\")) {\n              expParseMode = 2 /* Statements */;\n            }\n          }\n          currentProp.exp = createExp(\n            currentAttrValue,\n            false,\n            getLoc(currentAttrStartIndex, currentAttrEndIndex),\n            0,\n            expParseMode\n          );\n          if (currentProp.name === \"for\") {\n            currentProp.forParseResult = parseForExpression(currentProp.exp);\n          }\n          let syncIndex = -1;\n          if (currentProp.name === \"bind\" && (syncIndex = currentProp.modifiers.findIndex(\n            (mod) => mod.content === \"sync\"\n          )) > -1 && checkCompatEnabled(\n            \"COMPILER_V_BIND_SYNC\",\n            currentOptions,\n            currentProp.loc,\n            currentProp.arg.loc.source\n          )) {\n            currentProp.name = \"model\";\n            currentProp.modifiers.splice(syncIndex, 1);\n          }\n        }\n      }\n      if (currentProp.type !== 7 || currentProp.name !== \"pre\") {\n        currentOpenTag.props.push(currentProp);\n      }\n    }\n    currentAttrValue = \"\";\n    currentAttrStartIndex = currentAttrEndIndex = -1;\n  },\n  oncomment(start, end) {\n    if (currentOptions.comments) {\n      addNode({\n        type: 3,\n        content: getSlice(start, end),\n        loc: getLoc(start - 4, end + 3)\n      });\n    }\n  },\n  onend() {\n    const end = currentInput.length;\n    if (tokenizer.state !== 1) {\n      switch (tokenizer.state) {\n        case 5:\n        case 8:\n          emitError(5, end);\n          break;\n        case 3:\n        case 4:\n          emitError(\n            25,\n            tokenizer.sectionStart\n          );\n          break;\n        case 28:\n          if (tokenizer.currentSequence === Sequences.CdataEnd) {\n            emitError(6, end);\n          } else {\n            emitError(7, end);\n          }\n          break;\n        case 6:\n        case 7:\n        case 9:\n        case 11:\n        case 12:\n        case 13:\n        case 14:\n        case 15:\n        case 16:\n        case 17:\n        case 18:\n        case 19:\n        // \"\n        case 20:\n        // '\n        case 21:\n          emitError(9, end);\n          break;\n      }\n    }\n    for (let index = 0; index < stack.length; index++) {\n      onCloseTag(stack[index], end - 1);\n      emitError(24, stack[index].loc.start.offset);\n    }\n  },\n  oncdata(start, end) {\n    if (stack[0].ns !== 0) {\n      onText(getSlice(start, end), start, end);\n    } else {\n      emitError(1, start - 9);\n    }\n  },\n  onprocessinginstruction(start) {\n    if ((stack[0] ? stack[0].ns : currentOptions.ns) === 0) {\n      emitError(\n        21,\n        start - 1\n      );\n    }\n  }\n});\nconst forIteratorRE = /,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/;\nconst stripParensRE = /^\\(|\\)$/g;\nfunction parseForExpression(input) {\n  const loc = input.loc;\n  const exp = input.content;\n  const inMatch = exp.match(forAliasRE);\n  if (!inMatch) return;\n  const [, LHS, RHS] = inMatch;\n  const createAliasExpression = (content, offset, asParam = false) => {\n    const start = loc.start.offset + offset;\n    const end = start + content.length;\n    return createExp(\n      content,\n      false,\n      getLoc(start, end),\n      0,\n      asParam ? 1 /* Params */ : 0 /* Normal */\n    );\n  };\n  const result = {\n    source: createAliasExpression(RHS.trim(), exp.indexOf(RHS, LHS.length)),\n    value: void 0,\n    key: void 0,\n    index: void 0,\n    finalized: false\n  };\n  let valueContent = LHS.trim().replace(stripParensRE, \"\").trim();\n  const trimmedOffset = LHS.indexOf(valueContent);\n  const iteratorMatch = valueContent.match(forIteratorRE);\n  if (iteratorMatch) {\n    valueContent = valueContent.replace(forIteratorRE, \"\").trim();\n    const keyContent = iteratorMatch[1].trim();\n    let keyOffset;\n    if (keyContent) {\n      keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length);\n      result.key = createAliasExpression(keyContent, keyOffset, true);\n    }\n    if (iteratorMatch[2]) {\n      const indexContent = iteratorMatch[2].trim();\n      if (indexContent) {\n        result.index = createAliasExpression(\n          indexContent,\n          exp.indexOf(\n            indexContent,\n            result.key ? keyOffset + keyContent.length : trimmedOffset + valueContent.length\n          ),\n          true\n        );\n      }\n    }\n  }\n  if (valueContent) {\n    result.value = createAliasExpression(valueContent, trimmedOffset, true);\n  }\n  return result;\n}\nfunction getSlice(start, end) {\n  return currentInput.slice(start, end);\n}\nfunction endOpenTag(end) {\n  if (tokenizer.inSFCRoot) {\n    currentOpenTag.innerLoc = getLoc(end + 1, end + 1);\n  }\n  addNode(currentOpenTag);\n  const { tag, ns } = currentOpenTag;\n  if (ns === 0 && currentOptions.isPreTag(tag)) {\n    inPre++;\n  }\n  if (currentOptions.isVoidTag(tag)) {\n    onCloseTag(currentOpenTag, end);\n  } else {\n    stack.unshift(currentOpenTag);\n    if (ns === 1 || ns === 2) {\n      tokenizer.inXML = true;\n    }\n  }\n  currentOpenTag = null;\n}\nfunction onText(content, start, end) {\n  const parent = stack[0] || currentRoot;\n  const lastNode = parent.children[parent.children.length - 1];\n  if (lastNode && lastNode.type === 2) {\n    lastNode.content += content;\n    setLocEnd(lastNode.loc, end);\n  } else {\n    parent.children.push({\n      type: 2,\n      content,\n      loc: getLoc(start, end)\n    });\n  }\n}\nfunction onCloseTag(el, end, isImplied = false) {\n  if (isImplied) {\n    setLocEnd(el.loc, backTrack(end, 60));\n  } else {\n    setLocEnd(el.loc, lookAhead(end, 62) + 1);\n  }\n  if (tokenizer.inSFCRoot) {\n    if (el.children.length) {\n      el.innerLoc.end = shared.extend({}, el.children[el.children.length - 1].loc.end);\n    } else {\n      el.innerLoc.end = shared.extend({}, el.innerLoc.start);\n    }\n    el.innerLoc.source = getSlice(\n      el.innerLoc.start.offset,\n      el.innerLoc.end.offset\n    );\n  }\n  const { tag, ns, children } = el;\n  if (!inVPre) {\n    if (tag === \"slot\") {\n      el.tagType = 2;\n    } else if (isFragmentTemplate(el)) {\n      el.tagType = 3;\n    } else if (isComponent(el)) {\n      el.tagType = 1;\n    }\n  }\n  if (!tokenizer.inRCDATA) {\n    el.children = condenseWhitespace(children);\n  }\n  if (ns === 0 && currentOptions.isIgnoreNewlineTag(tag)) {\n    const first = children[0];\n    if (first && first.type === 2) {\n      first.content = first.content.replace(/^\\r?\\n/, \"\");\n    }\n  }\n  if (ns === 0 && currentOptions.isPreTag(tag)) {\n    inPre--;\n  }\n  if (currentVPreBoundary === el) {\n    inVPre = tokenizer.inVPre = false;\n    currentVPreBoundary = null;\n  }\n  if (tokenizer.inXML && (stack[0] ? stack[0].ns : currentOptions.ns) === 0) {\n    tokenizer.inXML = false;\n  }\n  {\n    const props = el.props;\n    if (!tokenizer.inSFCRoot && isCompatEnabled(\n      \"COMPILER_NATIVE_TEMPLATE\",\n      currentOptions\n    ) && el.tag === \"template\" && !isFragmentTemplate(el)) {\n      const parent = stack[0] || currentRoot;\n      const index = parent.children.indexOf(el);\n      parent.children.splice(index, 1, ...el.children);\n    }\n    const inlineTemplateProp = props.find(\n      (p) => p.type === 6 && p.name === \"inline-template\"\n    );\n    if (inlineTemplateProp && checkCompatEnabled(\n      \"COMPILER_INLINE_TEMPLATE\",\n      currentOptions,\n      inlineTemplateProp.loc\n    ) && el.children.length) {\n      inlineTemplateProp.value = {\n        type: 2,\n        content: getSlice(\n          el.children[0].loc.start.offset,\n          el.children[el.children.length - 1].loc.end.offset\n        ),\n        loc: inlineTemplateProp.loc\n      };\n    }\n  }\n}\nfunction lookAhead(index, c) {\n  let i = index;\n  while (currentInput.charCodeAt(i) !== c && i < currentInput.length - 1) i++;\n  return i;\n}\nfunction backTrack(index, c) {\n  let i = index;\n  while (currentInput.charCodeAt(i) !== c && i >= 0) i--;\n  return i;\n}\nconst specialTemplateDir = /* @__PURE__ */ new Set([\"if\", \"else\", \"else-if\", \"for\", \"slot\"]);\nfunction isFragmentTemplate({ tag, props }) {\n  if (tag === \"template\") {\n    for (let i = 0; i < props.length; i++) {\n      if (props[i].type === 7 && specialTemplateDir.has(props[i].name)) {\n        return true;\n      }\n    }\n  }\n  return false;\n}\nfunction isComponent({ tag, props }) {\n  if (currentOptions.isCustomElement(tag)) {\n    return false;\n  }\n  if (tag === \"component\" || isUpperCase(tag.charCodeAt(0)) || isCoreComponent(tag) || currentOptions.isBuiltInComponent && currentOptions.isBuiltInComponent(tag) || currentOptions.isNativeTag && !currentOptions.isNativeTag(tag)) {\n    return true;\n  }\n  for (let i = 0; i < props.length; i++) {\n    const p = props[i];\n    if (p.type === 6) {\n      if (p.name === \"is\" && p.value) {\n        if (p.value.content.startsWith(\"vue:\")) {\n          return true;\n        } else if (checkCompatEnabled(\n          \"COMPILER_IS_ON_ELEMENT\",\n          currentOptions,\n          p.loc\n        )) {\n          return true;\n        }\n      }\n    } else if (// :is on plain element - only treat as component in compat mode\n    p.name === \"bind\" && isStaticArgOf(p.arg, \"is\") && checkCompatEnabled(\n      \"COMPILER_IS_ON_ELEMENT\",\n      currentOptions,\n      p.loc\n    )) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction isUpperCase(c) {\n  return c > 64 && c < 91;\n}\nconst windowsNewlineRE = /\\r\\n/g;\nfunction condenseWhitespace(nodes) {\n  const shouldCondense = currentOptions.whitespace !== \"preserve\";\n  let removedWhitespace = false;\n  for (let i = 0; i < nodes.length; i++) {\n    const node = nodes[i];\n    if (node.type === 2) {\n      if (!inPre) {\n        if (isAllWhitespace(node.content)) {\n          const prev = nodes[i - 1] && nodes[i - 1].type;\n          const next = nodes[i + 1] && nodes[i + 1].type;\n          if (!prev || !next || shouldCondense && (prev === 3 && (next === 3 || next === 1) || prev === 1 && (next === 3 || next === 1 && hasNewlineChar(node.content)))) {\n            removedWhitespace = true;\n            nodes[i] = null;\n          } else {\n            node.content = \" \";\n          }\n        } else if (shouldCondense) {\n          node.content = condense(node.content);\n        }\n      } else {\n        node.content = node.content.replace(windowsNewlineRE, \"\\n\");\n      }\n    }\n  }\n  return removedWhitespace ? nodes.filter(Boolean) : nodes;\n}\nfunction isAllWhitespace(str) {\n  for (let i = 0; i < str.length; i++) {\n    if (!isWhitespace(str.charCodeAt(i))) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction hasNewlineChar(str) {\n  for (let i = 0; i < str.length; i++) {\n    const c = str.charCodeAt(i);\n    if (c === 10 || c === 13) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction condense(str) {\n  let ret = \"\";\n  let prevCharIsWhitespace = false;\n  for (let i = 0; i < str.length; i++) {\n    if (isWhitespace(str.charCodeAt(i))) {\n      if (!prevCharIsWhitespace) {\n        ret += \" \";\n        prevCharIsWhitespace = true;\n      }\n    } else {\n      ret += str[i];\n      prevCharIsWhitespace = false;\n    }\n  }\n  return ret;\n}\nfunction addNode(node) {\n  (stack[0] || currentRoot).children.push(node);\n}\nfunction getLoc(start, end) {\n  return {\n    start: tokenizer.getPos(start),\n    // @ts-expect-error allow late attachment\n    end: end == null ? end : tokenizer.getPos(end),\n    // @ts-expect-error allow late attachment\n    source: end == null ? end : getSlice(start, end)\n  };\n}\nfunction cloneLoc(loc) {\n  return getLoc(loc.start.offset, loc.end.offset);\n}\nfunction setLocEnd(loc, end) {\n  loc.end = tokenizer.getPos(end);\n  loc.source = getSlice(loc.start.offset, end);\n}\nfunction dirToAttr(dir) {\n  const attr = {\n    type: 6,\n    name: dir.rawName,\n    nameLoc: getLoc(\n      dir.loc.start.offset,\n      dir.loc.start.offset + dir.rawName.length\n    ),\n    value: void 0,\n    loc: dir.loc\n  };\n  if (dir.exp) {\n    const loc = dir.exp.loc;\n    if (loc.end.offset < dir.loc.end.offset) {\n      loc.start.offset--;\n      loc.start.column--;\n      loc.end.offset++;\n      loc.end.column++;\n    }\n    attr.value = {\n      type: 2,\n      content: dir.exp.content,\n      loc\n    };\n  }\n  return attr;\n}\nfunction createExp(content, isStatic = false, loc, constType = 0, parseMode = 0 /* Normal */) {\n  const exp = createSimpleExpression(content, isStatic, loc, constType);\n  if (!isStatic && currentOptions.prefixIdentifiers && parseMode !== 3 /* Skip */ && content.trim()) {\n    if (isSimpleIdentifier(content)) {\n      exp.ast = null;\n      return exp;\n    }\n    try {\n      const plugins = currentOptions.expressionPlugins;\n      const options = {\n        plugins: plugins ? [...plugins, \"typescript\"] : [\"typescript\"]\n      };\n      if (parseMode === 2 /* Statements */) {\n        exp.ast = parser.parse(` ${content} `, options).program;\n      } else if (parseMode === 1 /* Params */) {\n        exp.ast = parser.parseExpression(`(${content})=>{}`, options);\n      } else {\n        exp.ast = parser.parseExpression(`(${content})`, options);\n      }\n    } catch (e) {\n      exp.ast = false;\n      emitError(45, loc.start.offset, e.message);\n    }\n  }\n  return exp;\n}\nfunction emitError(code, index, message) {\n  currentOptions.onError(\n    createCompilerError(code, getLoc(index, index), void 0, message)\n  );\n}\nfunction reset() {\n  tokenizer.reset();\n  currentOpenTag = null;\n  currentProp = null;\n  currentAttrValue = \"\";\n  currentAttrStartIndex = -1;\n  currentAttrEndIndex = -1;\n  stack.length = 0;\n}\nfunction baseParse(input, options) {\n  reset();\n  currentInput = input;\n  currentOptions = shared.extend({}, defaultParserOptions);\n  if (options) {\n    let key;\n    for (key in options) {\n      if (options[key] != null) {\n        currentOptions[key] = options[key];\n      }\n    }\n  }\n  tokenizer.mode = currentOptions.parseMode === \"html\" ? 1 : currentOptions.parseMode === \"sfc\" ? 2 : 0;\n  tokenizer.inXML = currentOptions.ns === 1 || currentOptions.ns === 2;\n  const delimiters = options && options.delimiters;\n  if (delimiters) {\n    tokenizer.delimiterOpen = toCharCodes(delimiters[0]);\n    tokenizer.delimiterClose = toCharCodes(delimiters[1]);\n  }\n  const root = currentRoot = createRoot([], input);\n  tokenizer.parse(currentInput);\n  root.loc = getLoc(0, input.length);\n  root.children = condenseWhitespace(root.children);\n  currentRoot = null;\n  return root;\n}\n\nfunction cacheStatic(root, context) {\n  walk(\n    root,\n    void 0,\n    context,\n    // Root node is unfortunately non-hoistable due to potential parent\n    // fallthrough attributes.\n    !!getSingleElementRoot(root)\n  );\n}\nfunction getSingleElementRoot(root) {\n  const children = root.children.filter((x) => x.type !== 3);\n  return children.length === 1 && children[0].type === 1 && !isSlotOutlet(children[0]) ? children[0] : null;\n}\nfunction walk(node, parent, context, doNotHoistNode = false, inFor = false) {\n  const { children } = node;\n  const toCache = [];\n  for (let i = 0; i < children.length; i++) {\n    const child = children[i];\n    if (child.type === 1 && child.tagType === 0) {\n      const constantType = doNotHoistNode ? 0 : getConstantType(child, context);\n      if (constantType > 0) {\n        if (constantType >= 2) {\n          child.codegenNode.patchFlag = -1;\n          toCache.push(child);\n          continue;\n        }\n      } else {\n        const codegenNode = child.codegenNode;\n        if (codegenNode.type === 13) {\n          const flag = codegenNode.patchFlag;\n          if ((flag === void 0 || flag === 512 || flag === 1) && getGeneratedPropsConstantType(child, context) >= 2) {\n            const props = getNodeProps(child);\n            if (props) {\n              codegenNode.props = context.hoist(props);\n            }\n          }\n          if (codegenNode.dynamicProps) {\n            codegenNode.dynamicProps = context.hoist(codegenNode.dynamicProps);\n          }\n        }\n      }\n    } else if (child.type === 12) {\n      const constantType = doNotHoistNode ? 0 : getConstantType(child, context);\n      if (constantType >= 2) {\n        if (child.codegenNode.type === 14 && child.codegenNode.arguments.length > 0) {\n          child.codegenNode.arguments.push(\n            -1 + (``)\n          );\n        }\n        toCache.push(child);\n        continue;\n      }\n    }\n    if (child.type === 1) {\n      const isComponent = child.tagType === 1;\n      if (isComponent) {\n        context.scopes.vSlot++;\n      }\n      walk(child, node, context, false, inFor);\n      if (isComponent) {\n        context.scopes.vSlot--;\n      }\n    } else if (child.type === 11) {\n      walk(child, node, context, child.children.length === 1, true);\n    } else if (child.type === 9) {\n      for (let i2 = 0; i2 < child.branches.length; i2++) {\n        walk(\n          child.branches[i2],\n          node,\n          context,\n          child.branches[i2].children.length === 1,\n          inFor\n        );\n      }\n    }\n  }\n  let cachedAsArray = false;\n  const slotCacheKeys = [];\n  if (toCache.length === children.length && node.type === 1) {\n    if (node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && shared.isArray(node.codegenNode.children)) {\n      node.codegenNode.children = getCacheExpression(\n        createArrayExpression(node.codegenNode.children)\n      );\n      cachedAsArray = true;\n    } else if (node.tagType === 1 && node.codegenNode && node.codegenNode.type === 13 && node.codegenNode.children && !shared.isArray(node.codegenNode.children) && node.codegenNode.children.type === 15) {\n      const slot = getSlotNode(node.codegenNode, \"default\");\n      if (slot) {\n        slotCacheKeys.push(context.cached.length);\n        slot.returns = getCacheExpression(\n          createArrayExpression(slot.returns)\n        );\n        cachedAsArray = true;\n      }\n    } else if (node.tagType === 3 && parent && parent.type === 1 && parent.tagType === 1 && parent.codegenNode && parent.codegenNode.type === 13 && parent.codegenNode.children && !shared.isArray(parent.codegenNode.children) && parent.codegenNode.children.type === 15) {\n      const slotName = findDir(node, \"slot\", true);\n      const slot = slotName && slotName.arg && getSlotNode(parent.codegenNode, slotName.arg);\n      if (slot) {\n        slotCacheKeys.push(context.cached.length);\n        slot.returns = getCacheExpression(\n          createArrayExpression(slot.returns)\n        );\n        cachedAsArray = true;\n      }\n    }\n  }\n  if (!cachedAsArray) {\n    for (const child of toCache) {\n      slotCacheKeys.push(context.cached.length);\n      child.codegenNode = context.cache(child.codegenNode);\n    }\n  }\n  if (slotCacheKeys.length && node.type === 1 && node.tagType === 1 && node.codegenNode && node.codegenNode.type === 13 && node.codegenNode.children && !shared.isArray(node.codegenNode.children) && node.codegenNode.children.type === 15) {\n    node.codegenNode.children.properties.push(\n      createObjectProperty(\n        `__`,\n        createSimpleExpression(JSON.stringify(slotCacheKeys), false)\n      )\n    );\n  }\n  function getCacheExpression(value) {\n    const exp = context.cache(value);\n    if (inFor && context.hmr) {\n      exp.needArraySpread = true;\n    }\n    return exp;\n  }\n  function getSlotNode(node2, name) {\n    if (node2.children && !shared.isArray(node2.children) && node2.children.type === 15) {\n      const slot = node2.children.properties.find(\n        (p) => p.key === name || p.key.content === name\n      );\n      return slot && slot.value;\n    }\n  }\n  if (toCache.length && context.transformHoist) {\n    context.transformHoist(children, context, node);\n  }\n}\nfunction getConstantType(node, context) {\n  const { constantCache } = context;\n  switch (node.type) {\n    case 1:\n      if (node.tagType !== 0) {\n        return 0;\n      }\n      const cached = constantCache.get(node);\n      if (cached !== void 0) {\n        return cached;\n      }\n      const codegenNode = node.codegenNode;\n      if (codegenNode.type !== 13) {\n        return 0;\n      }\n      if (codegenNode.isBlock && node.tag !== \"svg\" && node.tag !== \"foreignObject\" && node.tag !== \"math\") {\n        return 0;\n      }\n      if (codegenNode.patchFlag === void 0) {\n        let returnType2 = 3;\n        const generatedPropsType = getGeneratedPropsConstantType(node, context);\n        if (generatedPropsType === 0) {\n          constantCache.set(node, 0);\n          return 0;\n        }\n        if (generatedPropsType < returnType2) {\n          returnType2 = generatedPropsType;\n        }\n        for (let i = 0; i < node.children.length; i++) {\n          const childType = getConstantType(node.children[i], context);\n          if (childType === 0) {\n            constantCache.set(node, 0);\n            return 0;\n          }\n          if (childType < returnType2) {\n            returnType2 = childType;\n          }\n        }\n        if (returnType2 > 1) {\n          for (let i = 0; i < node.props.length; i++) {\n            const p = node.props[i];\n            if (p.type === 7 && p.name === \"bind\" && p.exp) {\n              const expType = getConstantType(p.exp, context);\n              if (expType === 0) {\n                constantCache.set(node, 0);\n                return 0;\n              }\n              if (expType < returnType2) {\n                returnType2 = expType;\n              }\n            }\n          }\n        }\n        if (codegenNode.isBlock) {\n          for (let i = 0; i < node.props.length; i++) {\n            const p = node.props[i];\n            if (p.type === 7) {\n              constantCache.set(node, 0);\n              return 0;\n            }\n          }\n          context.removeHelper(OPEN_BLOCK);\n          context.removeHelper(\n            getVNodeBlockHelper(context.inSSR, codegenNode.isComponent)\n          );\n          codegenNode.isBlock = false;\n          context.helper(getVNodeHelper(context.inSSR, codegenNode.isComponent));\n        }\n        constantCache.set(node, returnType2);\n        return returnType2;\n      } else {\n        constantCache.set(node, 0);\n        return 0;\n      }\n    case 2:\n    case 3:\n      return 3;\n    case 9:\n    case 11:\n    case 10:\n      return 0;\n    case 5:\n    case 12:\n      return getConstantType(node.content, context);\n    case 4:\n      return node.constType;\n    case 8:\n      let returnType = 3;\n      for (let i = 0; i < node.children.length; i++) {\n        const child = node.children[i];\n        if (shared.isString(child) || shared.isSymbol(child)) {\n          continue;\n        }\n        const childType = getConstantType(child, context);\n        if (childType === 0) {\n          return 0;\n        } else if (childType < returnType) {\n          returnType = childType;\n        }\n      }\n      return returnType;\n    case 20:\n      return 2;\n    default:\n      return 0;\n  }\n}\nconst allowHoistedHelperSet = /* @__PURE__ */ new Set([\n  NORMALIZE_CLASS,\n  NORMALIZE_STYLE,\n  NORMALIZE_PROPS,\n  GUARD_REACTIVE_PROPS\n]);\nfunction getConstantTypeOfHelperCall(value, context) {\n  if (value.type === 14 && !shared.isString(value.callee) && allowHoistedHelperSet.has(value.callee)) {\n    const arg = value.arguments[0];\n    if (arg.type === 4) {\n      return getConstantType(arg, context);\n    } else if (arg.type === 14) {\n      return getConstantTypeOfHelperCall(arg, context);\n    }\n  }\n  return 0;\n}\nfunction getGeneratedPropsConstantType(node, context) {\n  let returnType = 3;\n  const props = getNodeProps(node);\n  if (props && props.type === 15) {\n    const { properties } = props;\n    for (let i = 0; i < properties.length; i++) {\n      const { key, value } = properties[i];\n      const keyType = getConstantType(key, context);\n      if (keyType === 0) {\n        return keyType;\n      }\n      if (keyType < returnType) {\n        returnType = keyType;\n      }\n      let valueType;\n      if (value.type === 4) {\n        valueType = getConstantType(value, context);\n      } else if (value.type === 14) {\n        valueType = getConstantTypeOfHelperCall(value, context);\n      } else {\n        valueType = 0;\n      }\n      if (valueType === 0) {\n        return valueType;\n      }\n      if (valueType < returnType) {\n        returnType = valueType;\n      }\n    }\n  }\n  return returnType;\n}\nfunction getNodeProps(node) {\n  const codegenNode = node.codegenNode;\n  if (codegenNode.type === 13) {\n    return codegenNode.props;\n  }\n}\n\nfunction createTransformContext(root, {\n  filename = \"\",\n  prefixIdentifiers = false,\n  hoistStatic = false,\n  hmr = false,\n  cacheHandlers = false,\n  nodeTransforms = [],\n  directiveTransforms = {},\n  transformHoist = null,\n  isBuiltInComponent = shared.NOOP,\n  isCustomElement = shared.NOOP,\n  expressionPlugins = [],\n  scopeId = null,\n  slotted = true,\n  ssr = false,\n  inSSR = false,\n  ssrCssVars = ``,\n  bindingMetadata = shared.EMPTY_OBJ,\n  inline = false,\n  isTS = false,\n  onError = defaultOnError,\n  onWarn = defaultOnWarn,\n  compatConfig\n}) {\n  const nameMatch = filename.replace(/\\?.*$/, \"\").match(/([^/\\\\]+)\\.\\w+$/);\n  const context = {\n    // options\n    filename,\n    selfName: nameMatch && shared.capitalize(shared.camelize(nameMatch[1])),\n    prefixIdentifiers,\n    hoistStatic,\n    hmr,\n    cacheHandlers,\n    nodeTransforms,\n    directiveTransforms,\n    transformHoist,\n    isBuiltInComponent,\n    isCustomElement,\n    expressionPlugins,\n    scopeId,\n    slotted,\n    ssr,\n    inSSR,\n    ssrCssVars,\n    bindingMetadata,\n    inline,\n    isTS,\n    onError,\n    onWarn,\n    compatConfig,\n    // state\n    root,\n    helpers: /* @__PURE__ */ new Map(),\n    components: /* @__PURE__ */ new Set(),\n    directives: /* @__PURE__ */ new Set(),\n    hoists: [],\n    imports: [],\n    cached: [],\n    constantCache: /* @__PURE__ */ new WeakMap(),\n    temps: 0,\n    identifiers: /* @__PURE__ */ Object.create(null),\n    scopes: {\n      vFor: 0,\n      vSlot: 0,\n      vPre: 0,\n      vOnce: 0\n    },\n    parent: null,\n    grandParent: null,\n    currentNode: root,\n    childIndex: 0,\n    inVOnce: false,\n    // methods\n    helper(name) {\n      const count = context.helpers.get(name) || 0;\n      context.helpers.set(name, count + 1);\n      return name;\n    },\n    removeHelper(name) {\n      const count = context.helpers.get(name);\n      if (count) {\n        const currentCount = count - 1;\n        if (!currentCount) {\n          context.helpers.delete(name);\n        } else {\n          context.helpers.set(name, currentCount);\n        }\n      }\n    },\n    helperString(name) {\n      return `_${helperNameMap[context.helper(name)]}`;\n    },\n    replaceNode(node) {\n      context.parent.children[context.childIndex] = context.currentNode = node;\n    },\n    removeNode(node) {\n      const list = context.parent.children;\n      const removalIndex = node ? list.indexOf(node) : context.currentNode ? context.childIndex : -1;\n      if (!node || node === context.currentNode) {\n        context.currentNode = null;\n        context.onNodeRemoved();\n      } else {\n        if (context.childIndex > removalIndex) {\n          context.childIndex--;\n          context.onNodeRemoved();\n        }\n      }\n      context.parent.children.splice(removalIndex, 1);\n    },\n    onNodeRemoved: shared.NOOP,\n    addIdentifiers(exp) {\n      {\n        if (shared.isString(exp)) {\n          addId(exp);\n        } else if (exp.identifiers) {\n          exp.identifiers.forEach(addId);\n        } else if (exp.type === 4) {\n          addId(exp.content);\n        }\n      }\n    },\n    removeIdentifiers(exp) {\n      {\n        if (shared.isString(exp)) {\n          removeId(exp);\n        } else if (exp.identifiers) {\n          exp.identifiers.forEach(removeId);\n        } else if (exp.type === 4) {\n          removeId(exp.content);\n        }\n      }\n    },\n    hoist(exp) {\n      if (shared.isString(exp)) exp = createSimpleExpression(exp);\n      context.hoists.push(exp);\n      const identifier = createSimpleExpression(\n        `_hoisted_${context.hoists.length}`,\n        false,\n        exp.loc,\n        2\n      );\n      identifier.hoisted = exp;\n      return identifier;\n    },\n    cache(exp, isVNode = false, inVOnce = false) {\n      const cacheExp = createCacheExpression(\n        context.cached.length,\n        exp,\n        isVNode,\n        inVOnce\n      );\n      context.cached.push(cacheExp);\n      return cacheExp;\n    }\n  };\n  {\n    context.filters = /* @__PURE__ */ new Set();\n  }\n  function addId(id) {\n    const { identifiers } = context;\n    if (identifiers[id] === void 0) {\n      identifiers[id] = 0;\n    }\n    identifiers[id]++;\n  }\n  function removeId(id) {\n    context.identifiers[id]--;\n  }\n  return context;\n}\nfunction transform(root, options) {\n  const context = createTransformContext(root, options);\n  traverseNode(root, context);\n  if (options.hoistStatic) {\n    cacheStatic(root, context);\n  }\n  if (!options.ssr) {\n    createRootCodegen(root, context);\n  }\n  root.helpers = /* @__PURE__ */ new Set([...context.helpers.keys()]);\n  root.components = [...context.components];\n  root.directives = [...context.directives];\n  root.imports = context.imports;\n  root.hoists = context.hoists;\n  root.temps = context.temps;\n  root.cached = context.cached;\n  root.transformed = true;\n  {\n    root.filters = [...context.filters];\n  }\n}\nfunction createRootCodegen(root, context) {\n  const { helper } = context;\n  const { children } = root;\n  if (children.length === 1) {\n    const singleElementRootChild = getSingleElementRoot(root);\n    if (singleElementRootChild && singleElementRootChild.codegenNode) {\n      const codegenNode = singleElementRootChild.codegenNode;\n      if (codegenNode.type === 13) {\n        convertToBlock(codegenNode, context);\n      }\n      root.codegenNode = codegenNode;\n    } else {\n      root.codegenNode = children[0];\n    }\n  } else if (children.length > 1) {\n    let patchFlag = 64;\n    root.codegenNode = createVNodeCall(\n      context,\n      helper(FRAGMENT),\n      void 0,\n      root.children,\n      patchFlag,\n      void 0,\n      void 0,\n      true,\n      void 0,\n      false\n    );\n  } else ;\n}\nfunction traverseChildren(parent, context) {\n  let i = 0;\n  const nodeRemoved = () => {\n    i--;\n  };\n  for (; i < parent.children.length; i++) {\n    const child = parent.children[i];\n    if (shared.isString(child)) continue;\n    context.grandParent = context.parent;\n    context.parent = parent;\n    context.childIndex = i;\n    context.onNodeRemoved = nodeRemoved;\n    traverseNode(child, context);\n  }\n}\nfunction traverseNode(node, context) {\n  context.currentNode = node;\n  const { nodeTransforms } = context;\n  const exitFns = [];\n  for (let i2 = 0; i2 < nodeTransforms.length; i2++) {\n    const onExit = nodeTransforms[i2](node, context);\n    if (onExit) {\n      if (shared.isArray(onExit)) {\n        exitFns.push(...onExit);\n      } else {\n        exitFns.push(onExit);\n      }\n    }\n    if (!context.currentNode) {\n      return;\n    } else {\n      node = context.currentNode;\n    }\n  }\n  switch (node.type) {\n    case 3:\n      if (!context.ssr) {\n        context.helper(CREATE_COMMENT);\n      }\n      break;\n    case 5:\n      if (!context.ssr) {\n        context.helper(TO_DISPLAY_STRING);\n      }\n      break;\n    // for container types, further traverse downwards\n    case 9:\n      for (let i2 = 0; i2 < node.branches.length; i2++) {\n        traverseNode(node.branches[i2], context);\n      }\n      break;\n    case 10:\n    case 11:\n    case 1:\n    case 0:\n      traverseChildren(node, context);\n      break;\n  }\n  context.currentNode = node;\n  let i = exitFns.length;\n  while (i--) {\n    exitFns[i]();\n  }\n}\nfunction createStructuralDirectiveTransform(name, fn) {\n  const matches = shared.isString(name) ? (n) => n === name : (n) => name.test(n);\n  return (node, context) => {\n    if (node.type === 1) {\n      const { props } = node;\n      if (node.tagType === 3 && props.some(isVSlot)) {\n        return;\n      }\n      const exitFns = [];\n      for (let i = 0; i < props.length; i++) {\n        const prop = props[i];\n        if (prop.type === 7 && matches(prop.name)) {\n          props.splice(i, 1);\n          i--;\n          const onExit = fn(node, prop, context);\n          if (onExit) exitFns.push(onExit);\n        }\n      }\n      return exitFns;\n    }\n  };\n}\n\nconst PURE_ANNOTATION = `/*@__PURE__*/`;\nconst aliasHelper = (s) => `${helperNameMap[s]}: _${helperNameMap[s]}`;\nfunction createCodegenContext(ast, {\n  mode = \"function\",\n  prefixIdentifiers = mode === \"module\",\n  sourceMap = false,\n  filename = `template.vue.html`,\n  scopeId = null,\n  optimizeImports = false,\n  runtimeGlobalName = `Vue`,\n  runtimeModuleName = `vue`,\n  ssrRuntimeModuleName = \"vue/server-renderer\",\n  ssr = false,\n  isTS = false,\n  inSSR = false\n}) {\n  const context = {\n    mode,\n    prefixIdentifiers,\n    sourceMap,\n    filename,\n    scopeId,\n    optimizeImports,\n    runtimeGlobalName,\n    runtimeModuleName,\n    ssrRuntimeModuleName,\n    ssr,\n    isTS,\n    inSSR,\n    source: ast.source,\n    code: ``,\n    column: 1,\n    line: 1,\n    offset: 0,\n    indentLevel: 0,\n    pure: false,\n    map: void 0,\n    helper(key) {\n      return `_${helperNameMap[key]}`;\n    },\n    push(code, newlineIndex = -2 /* None */, node) {\n      context.code += code;\n      if (context.map) {\n        if (node) {\n          let name;\n          if (node.type === 4 && !node.isStatic) {\n            const content = node.content.replace(/^_ctx\\./, \"\");\n            if (content !== node.content && isSimpleIdentifier(content)) {\n              name = content;\n            }\n          }\n          if (node.loc.source) {\n            addMapping(node.loc.start, name);\n          }\n        }\n        if (newlineIndex === -3 /* Unknown */) {\n          advancePositionWithMutation(context, code);\n        } else {\n          context.offset += code.length;\n          if (newlineIndex === -2 /* None */) {\n            context.column += code.length;\n          } else {\n            if (newlineIndex === -1 /* End */) {\n              newlineIndex = code.length - 1;\n            }\n            context.line++;\n            context.column = code.length - newlineIndex;\n          }\n        }\n        if (node && node.loc !== locStub && node.loc.source) {\n          addMapping(node.loc.end);\n        }\n      }\n    },\n    indent() {\n      newline(++context.indentLevel);\n    },\n    deindent(withoutNewLine = false) {\n      if (withoutNewLine) {\n        --context.indentLevel;\n      } else {\n        newline(--context.indentLevel);\n      }\n    },\n    newline() {\n      newline(context.indentLevel);\n    }\n  };\n  function newline(n) {\n    context.push(\"\\n\" + `  `.repeat(n), 0 /* Start */);\n  }\n  function addMapping(loc, name = null) {\n    const { _names, _mappings } = context.map;\n    if (name !== null && !_names.has(name)) _names.add(name);\n    _mappings.add({\n      originalLine: loc.line,\n      originalColumn: loc.column - 1,\n      // source-map column is 0 based\n      generatedLine: context.line,\n      generatedColumn: context.column - 1,\n      source: filename,\n      name\n    });\n  }\n  if (sourceMap) {\n    context.map = new sourceMapJs.SourceMapGenerator();\n    context.map.setSourceContent(filename, context.source);\n    context.map._sources.add(filename);\n  }\n  return context;\n}\nfunction generate(ast, options = {}) {\n  const context = createCodegenContext(ast, options);\n  if (options.onContextCreated) options.onContextCreated(context);\n  const {\n    mode,\n    push,\n    prefixIdentifiers,\n    indent,\n    deindent,\n    newline,\n    scopeId,\n    ssr\n  } = context;\n  const helpers = Array.from(ast.helpers);\n  const hasHelpers = helpers.length > 0;\n  const useWithBlock = !prefixIdentifiers && mode !== \"module\";\n  const genScopeId = scopeId != null && mode === \"module\";\n  const isSetupInlined = !!options.inline;\n  const preambleContext = isSetupInlined ? createCodegenContext(ast, options) : context;\n  if (mode === \"module\") {\n    genModulePreamble(ast, preambleContext, genScopeId, isSetupInlined);\n  } else {\n    genFunctionPreamble(ast, preambleContext);\n  }\n  const functionName = ssr ? `ssrRender` : `render`;\n  const args = ssr ? [\"_ctx\", \"_push\", \"_parent\", \"_attrs\"] : [\"_ctx\", \"_cache\"];\n  if (options.bindingMetadata && !options.inline) {\n    args.push(\"$props\", \"$setup\", \"$data\", \"$options\");\n  }\n  const signature = options.isTS ? args.map((arg) => `${arg}: any`).join(\",\") : args.join(\", \");\n  if (isSetupInlined) {\n    push(`(${signature}) => {`);\n  } else {\n    push(`function ${functionName}(${signature}) {`);\n  }\n  indent();\n  if (useWithBlock) {\n    push(`with (_ctx) {`);\n    indent();\n    if (hasHelpers) {\n      push(\n        `const { ${helpers.map(aliasHelper).join(\", \")} } = _Vue\n`,\n        -1 /* End */\n      );\n      newline();\n    }\n  }\n  if (ast.components.length) {\n    genAssets(ast.components, \"component\", context);\n    if (ast.directives.length || ast.temps > 0) {\n      newline();\n    }\n  }\n  if (ast.directives.length) {\n    genAssets(ast.directives, \"directive\", context);\n    if (ast.temps > 0) {\n      newline();\n    }\n  }\n  if (ast.filters && ast.filters.length) {\n    newline();\n    genAssets(ast.filters, \"filter\", context);\n    newline();\n  }\n  if (ast.temps > 0) {\n    push(`let `);\n    for (let i = 0; i < ast.temps; i++) {\n      push(`${i > 0 ? `, ` : ``}_temp${i}`);\n    }\n  }\n  if (ast.components.length || ast.directives.length || ast.temps) {\n    push(`\n`, 0 /* Start */);\n    newline();\n  }\n  if (!ssr) {\n    push(`return `);\n  }\n  if (ast.codegenNode) {\n    genNode(ast.codegenNode, context);\n  } else {\n    push(`null`);\n  }\n  if (useWithBlock) {\n    deindent();\n    push(`}`);\n  }\n  deindent();\n  push(`}`);\n  return {\n    ast,\n    code: context.code,\n    preamble: isSetupInlined ? preambleContext.code : ``,\n    map: context.map ? context.map.toJSON() : void 0\n  };\n}\nfunction genFunctionPreamble(ast, context) {\n  const {\n    ssr,\n    prefixIdentifiers,\n    push,\n    newline,\n    runtimeModuleName,\n    runtimeGlobalName,\n    ssrRuntimeModuleName\n  } = context;\n  const VueBinding = ssr ? `require(${JSON.stringify(runtimeModuleName)})` : runtimeGlobalName;\n  const helpers = Array.from(ast.helpers);\n  if (helpers.length > 0) {\n    if (prefixIdentifiers) {\n      push(\n        `const { ${helpers.map(aliasHelper).join(\", \")} } = ${VueBinding}\n`,\n        -1 /* End */\n      );\n    } else {\n      push(`const _Vue = ${VueBinding}\n`, -1 /* End */);\n      if (ast.hoists.length) {\n        const staticHelpers = [\n          CREATE_VNODE,\n          CREATE_ELEMENT_VNODE,\n          CREATE_COMMENT,\n          CREATE_TEXT,\n          CREATE_STATIC\n        ].filter((helper) => helpers.includes(helper)).map(aliasHelper).join(\", \");\n        push(`const { ${staticHelpers} } = _Vue\n`, -1 /* End */);\n      }\n    }\n  }\n  if (ast.ssrHelpers && ast.ssrHelpers.length) {\n    push(\n      `const { ${ast.ssrHelpers.map(aliasHelper).join(\", \")} } = require(\"${ssrRuntimeModuleName}\")\n`,\n      -1 /* End */\n    );\n  }\n  genHoists(ast.hoists, context);\n  newline();\n  push(`return `);\n}\nfunction genModulePreamble(ast, context, genScopeId, inline) {\n  const {\n    push,\n    newline,\n    optimizeImports,\n    runtimeModuleName,\n    ssrRuntimeModuleName\n  } = context;\n  if (ast.helpers.size) {\n    const helpers = Array.from(ast.helpers);\n    if (optimizeImports) {\n      push(\n        `import { ${helpers.map((s) => helperNameMap[s]).join(\", \")} } from ${JSON.stringify(runtimeModuleName)}\n`,\n        -1 /* End */\n      );\n      push(\n        `\n// Binding optimization for webpack code-split\nconst ${helpers.map((s) => `_${helperNameMap[s]} = ${helperNameMap[s]}`).join(\", \")}\n`,\n        -1 /* End */\n      );\n    } else {\n      push(\n        `import { ${helpers.map((s) => `${helperNameMap[s]} as _${helperNameMap[s]}`).join(\", \")} } from ${JSON.stringify(runtimeModuleName)}\n`,\n        -1 /* End */\n      );\n    }\n  }\n  if (ast.ssrHelpers && ast.ssrHelpers.length) {\n    push(\n      `import { ${ast.ssrHelpers.map((s) => `${helperNameMap[s]} as _${helperNameMap[s]}`).join(\", \")} } from \"${ssrRuntimeModuleName}\"\n`,\n      -1 /* End */\n    );\n  }\n  if (ast.imports.length) {\n    genImports(ast.imports, context);\n    newline();\n  }\n  genHoists(ast.hoists, context);\n  newline();\n  if (!inline) {\n    push(`export `);\n  }\n}\nfunction genAssets(assets, type, { helper, push, newline, isTS }) {\n  const resolver = helper(\n    type === \"filter\" ? RESOLVE_FILTER : type === \"component\" ? RESOLVE_COMPONENT : RESOLVE_DIRECTIVE\n  );\n  for (let i = 0; i < assets.length; i++) {\n    let id = assets[i];\n    const maybeSelfReference = id.endsWith(\"__self\");\n    if (maybeSelfReference) {\n      id = id.slice(0, -6);\n    }\n    push(\n      `const ${toValidAssetId(id, type)} = ${resolver}(${JSON.stringify(id)}${maybeSelfReference ? `, true` : ``})${isTS ? `!` : ``}`\n    );\n    if (i < assets.length - 1) {\n      newline();\n    }\n  }\n}\nfunction genHoists(hoists, context) {\n  if (!hoists.length) {\n    return;\n  }\n  context.pure = true;\n  const { push, newline } = context;\n  newline();\n  for (let i = 0; i < hoists.length; i++) {\n    const exp = hoists[i];\n    if (exp) {\n      push(`const _hoisted_${i + 1} = `);\n      genNode(exp, context);\n      newline();\n    }\n  }\n  context.pure = false;\n}\nfunction genImports(importsOptions, context) {\n  if (!importsOptions.length) {\n    return;\n  }\n  importsOptions.forEach((imports) => {\n    context.push(`import `);\n    genNode(imports.exp, context);\n    context.push(` from '${imports.path}'`);\n    context.newline();\n  });\n}\nfunction isText(n) {\n  return shared.isString(n) || n.type === 4 || n.type === 2 || n.type === 5 || n.type === 8;\n}\nfunction genNodeListAsArray(nodes, context) {\n  const multilines = nodes.length > 3 || nodes.some((n) => shared.isArray(n) || !isText(n));\n  context.push(`[`);\n  multilines && context.indent();\n  genNodeList(nodes, context, multilines);\n  multilines && context.deindent();\n  context.push(`]`);\n}\nfunction genNodeList(nodes, context, multilines = false, comma = true) {\n  const { push, newline } = context;\n  for (let i = 0; i < nodes.length; i++) {\n    const node = nodes[i];\n    if (shared.isString(node)) {\n      push(node, -3 /* Unknown */);\n    } else if (shared.isArray(node)) {\n      genNodeListAsArray(node, context);\n    } else {\n      genNode(node, context);\n    }\n    if (i < nodes.length - 1) {\n      if (multilines) {\n        comma && push(\",\");\n        newline();\n      } else {\n        comma && push(\", \");\n      }\n    }\n  }\n}\nfunction genNode(node, context) {\n  if (shared.isString(node)) {\n    context.push(node, -3 /* Unknown */);\n    return;\n  }\n  if (shared.isSymbol(node)) {\n    context.push(context.helper(node));\n    return;\n  }\n  switch (node.type) {\n    case 1:\n    case 9:\n    case 11:\n      genNode(node.codegenNode, context);\n      break;\n    case 2:\n      genText(node, context);\n      break;\n    case 4:\n      genExpression(node, context);\n      break;\n    case 5:\n      genInterpolation(node, context);\n      break;\n    case 12:\n      genNode(node.codegenNode, context);\n      break;\n    case 8:\n      genCompoundExpression(node, context);\n      break;\n    case 3:\n      genComment(node, context);\n      break;\n    case 13:\n      genVNodeCall(node, context);\n      break;\n    case 14:\n      genCallExpression(node, context);\n      break;\n    case 15:\n      genObjectExpression(node, context);\n      break;\n    case 17:\n      genArrayExpression(node, context);\n      break;\n    case 18:\n      genFunctionExpression(node, context);\n      break;\n    case 19:\n      genConditionalExpression(node, context);\n      break;\n    case 20:\n      genCacheExpression(node, context);\n      break;\n    case 21:\n      genNodeList(node.body, context, true, false);\n      break;\n    // SSR only types\n    case 22:\n      genTemplateLiteral(node, context);\n      break;\n    case 23:\n      genIfStatement(node, context);\n      break;\n    case 24:\n      genAssignmentExpression(node, context);\n      break;\n    case 25:\n      genSequenceExpression(node, context);\n      break;\n    case 26:\n      genReturnStatement(node, context);\n      break;\n  }\n}\nfunction genText(node, context) {\n  context.push(JSON.stringify(node.content), -3 /* Unknown */, node);\n}\nfunction genExpression(node, context) {\n  const { content, isStatic } = node;\n  context.push(\n    isStatic ? JSON.stringify(content) : content,\n    -3 /* Unknown */,\n    node\n  );\n}\nfunction genInterpolation(node, context) {\n  const { push, helper, pure } = context;\n  if (pure) push(PURE_ANNOTATION);\n  push(`${helper(TO_DISPLAY_STRING)}(`);\n  genNode(node.content, context);\n  push(`)`);\n}\nfunction genCompoundExpression(node, context) {\n  for (let i = 0; i < node.children.length; i++) {\n    const child = node.children[i];\n    if (shared.isString(child)) {\n      context.push(child, -3 /* Unknown */);\n    } else {\n      genNode(child, context);\n    }\n  }\n}\nfunction genExpressionAsPropertyKey(node, context) {\n  const { push } = context;\n  if (node.type === 8) {\n    push(`[`);\n    genCompoundExpression(node, context);\n    push(`]`);\n  } else if (node.isStatic) {\n    const text = isSimpleIdentifier(node.content) ? node.content : JSON.stringify(node.content);\n    push(text, -2 /* None */, node);\n  } else {\n    push(`[${node.content}]`, -3 /* Unknown */, node);\n  }\n}\nfunction genComment(node, context) {\n  const { push, helper, pure } = context;\n  if (pure) {\n    push(PURE_ANNOTATION);\n  }\n  push(\n    `${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`,\n    -3 /* Unknown */,\n    node\n  );\n}\nfunction genVNodeCall(node, context) {\n  const { push, helper, pure } = context;\n  const {\n    tag,\n    props,\n    children,\n    patchFlag,\n    dynamicProps,\n    directives,\n    isBlock,\n    disableTracking,\n    isComponent\n  } = node;\n  let patchFlagString;\n  if (patchFlag) {\n    {\n      patchFlagString = String(patchFlag);\n    }\n  }\n  if (directives) {\n    push(helper(WITH_DIRECTIVES) + `(`);\n  }\n  if (isBlock) {\n    push(`(${helper(OPEN_BLOCK)}(${disableTracking ? `true` : ``}), `);\n  }\n  if (pure) {\n    push(PURE_ANNOTATION);\n  }\n  const callHelper = isBlock ? getVNodeBlockHelper(context.inSSR, isComponent) : getVNodeHelper(context.inSSR, isComponent);\n  push(helper(callHelper) + `(`, -2 /* None */, node);\n  genNodeList(\n    genNullableArgs([tag, props, children, patchFlagString, dynamicProps]),\n    context\n  );\n  push(`)`);\n  if (isBlock) {\n    push(`)`);\n  }\n  if (directives) {\n    push(`, `);\n    genNode(directives, context);\n    push(`)`);\n  }\n}\nfunction genNullableArgs(args) {\n  let i = args.length;\n  while (i--) {\n    if (args[i] != null) break;\n  }\n  return args.slice(0, i + 1).map((arg) => arg || `null`);\n}\nfunction genCallExpression(node, context) {\n  const { push, helper, pure } = context;\n  const callee = shared.isString(node.callee) ? node.callee : helper(node.callee);\n  if (pure) {\n    push(PURE_ANNOTATION);\n  }\n  push(callee + `(`, -2 /* None */, node);\n  genNodeList(node.arguments, context);\n  push(`)`);\n}\nfunction genObjectExpression(node, context) {\n  const { push, indent, deindent, newline } = context;\n  const { properties } = node;\n  if (!properties.length) {\n    push(`{}`, -2 /* None */, node);\n    return;\n  }\n  const multilines = properties.length > 1 || properties.some((p) => p.value.type !== 4);\n  push(multilines ? `{` : `{ `);\n  multilines && indent();\n  for (let i = 0; i < properties.length; i++) {\n    const { key, value } = properties[i];\n    genExpressionAsPropertyKey(key, context);\n    push(`: `);\n    genNode(value, context);\n    if (i < properties.length - 1) {\n      push(`,`);\n      newline();\n    }\n  }\n  multilines && deindent();\n  push(multilines ? `}` : ` }`);\n}\nfunction genArrayExpression(node, context) {\n  genNodeListAsArray(node.elements, context);\n}\nfunction genFunctionExpression(node, context) {\n  const { push, indent, deindent } = context;\n  const { params, returns, body, newline, isSlot } = node;\n  if (isSlot) {\n    push(`_${helperNameMap[WITH_CTX]}(`);\n  }\n  push(`(`, -2 /* None */, node);\n  if (shared.isArray(params)) {\n    genNodeList(params, context);\n  } else if (params) {\n    genNode(params, context);\n  }\n  push(`) => `);\n  if (newline || body) {\n    push(`{`);\n    indent();\n  }\n  if (returns) {\n    if (newline) {\n      push(`return `);\n    }\n    if (shared.isArray(returns)) {\n      genNodeListAsArray(returns, context);\n    } else {\n      genNode(returns, context);\n    }\n  } else if (body) {\n    genNode(body, context);\n  }\n  if (newline || body) {\n    deindent();\n    push(`}`);\n  }\n  if (isSlot) {\n    if (node.isNonScopedSlot) {\n      push(`, undefined, true`);\n    }\n    push(`)`);\n  }\n}\nfunction genConditionalExpression(node, context) {\n  const { test, consequent, alternate, newline: needNewline } = node;\n  const { push, indent, deindent, newline } = context;\n  if (test.type === 4) {\n    const needsParens = !isSimpleIdentifier(test.content);\n    needsParens && push(`(`);\n    genExpression(test, context);\n    needsParens && push(`)`);\n  } else {\n    push(`(`);\n    genNode(test, context);\n    push(`)`);\n  }\n  needNewline && indent();\n  context.indentLevel++;\n  needNewline || push(` `);\n  push(`? `);\n  genNode(consequent, context);\n  context.indentLevel--;\n  needNewline && newline();\n  needNewline || push(` `);\n  push(`: `);\n  const isNested = alternate.type === 19;\n  if (!isNested) {\n    context.indentLevel++;\n  }\n  genNode(alternate, context);\n  if (!isNested) {\n    context.indentLevel--;\n  }\n  needNewline && deindent(\n    true\n    /* without newline */\n  );\n}\nfunction genCacheExpression(node, context) {\n  const { push, helper, indent, deindent, newline } = context;\n  const { needPauseTracking, needArraySpread } = node;\n  if (needArraySpread) {\n    push(`[...(`);\n  }\n  push(`_cache[${node.index}] || (`);\n  if (needPauseTracking) {\n    indent();\n    push(`${helper(SET_BLOCK_TRACKING)}(-1`);\n    if (node.inVOnce) push(`, true`);\n    push(`),`);\n    newline();\n    push(`(`);\n  }\n  push(`_cache[${node.index}] = `);\n  genNode(node.value, context);\n  if (needPauseTracking) {\n    push(`).cacheIndex = ${node.index},`);\n    newline();\n    push(`${helper(SET_BLOCK_TRACKING)}(1),`);\n    newline();\n    push(`_cache[${node.index}]`);\n    deindent();\n  }\n  push(`)`);\n  if (needArraySpread) {\n    push(`)]`);\n  }\n}\nfunction genTemplateLiteral(node, context) {\n  const { push, indent, deindent } = context;\n  push(\"`\");\n  const l = node.elements.length;\n  const multilines = l > 3;\n  for (let i = 0; i < l; i++) {\n    const e = node.elements[i];\n    if (shared.isString(e)) {\n      push(e.replace(/(`|\\$|\\\\)/g, \"\\\\$1\"), -3 /* Unknown */);\n    } else {\n      push(\"${\");\n      if (multilines) indent();\n      genNode(e, context);\n      if (multilines) deindent();\n      push(\"}\");\n    }\n  }\n  push(\"`\");\n}\nfunction genIfStatement(node, context) {\n  const { push, indent, deindent } = context;\n  const { test, consequent, alternate } = node;\n  push(`if (`);\n  genNode(test, context);\n  push(`) {`);\n  indent();\n  genNode(consequent, context);\n  deindent();\n  push(`}`);\n  if (alternate) {\n    push(` else `);\n    if (alternate.type === 23) {\n      genIfStatement(alternate, context);\n    } else {\n      push(`{`);\n      indent();\n      genNode(alternate, context);\n      deindent();\n      push(`}`);\n    }\n  }\n}\nfunction genAssignmentExpression(node, context) {\n  genNode(node.left, context);\n  context.push(` = `);\n  genNode(node.right, context);\n}\nfunction genSequenceExpression(node, context) {\n  context.push(`(`);\n  genNodeList(node.expressions, context);\n  context.push(`)`);\n}\nfunction genReturnStatement({ returns }, context) {\n  context.push(`return `);\n  if (shared.isArray(returns)) {\n    genNodeListAsArray(returns, context);\n  } else {\n    genNode(returns, context);\n  }\n}\n\nconst isLiteralWhitelisted = /* @__PURE__ */ shared.makeMap(\"true,false,null,this\");\nconst transformExpression = (node, context) => {\n  if (node.type === 5) {\n    node.content = processExpression(\n      node.content,\n      context\n    );\n  } else if (node.type === 1) {\n    const memo = findDir(node, \"memo\");\n    for (let i = 0; i < node.props.length; i++) {\n      const dir = node.props[i];\n      if (dir.type === 7 && dir.name !== \"for\") {\n        const exp = dir.exp;\n        const arg = dir.arg;\n        if (exp && exp.type === 4 && !(dir.name === \"on\" && arg) && // key has been processed in transformFor(vMemo + vFor)\n        !(memo && arg && arg.type === 4 && arg.content === \"key\")) {\n          dir.exp = processExpression(\n            exp,\n            context,\n            // slot args must be processed as function params\n            dir.name === \"slot\"\n          );\n        }\n        if (arg && arg.type === 4 && !arg.isStatic) {\n          dir.arg = processExpression(arg, context);\n        }\n      }\n    }\n  }\n};\nfunction processExpression(node, context, asParams = false, asRawStatements = false, localVars = Object.create(context.identifiers)) {\n  if (!context.prefixIdentifiers || !node.content.trim()) {\n    return node;\n  }\n  const { inline, bindingMetadata } = context;\n  const rewriteIdentifier = (raw, parent, id) => {\n    const type = shared.hasOwn(bindingMetadata, raw) && bindingMetadata[raw];\n    if (inline) {\n      const isAssignmentLVal = parent && parent.type === \"AssignmentExpression\" && parent.left === id;\n      const isUpdateArg = parent && parent.type === \"UpdateExpression\" && parent.argument === id;\n      const isDestructureAssignment = parent && isInDestructureAssignment(parent, parentStack);\n      const isNewExpression = parent && isInNewExpression(parentStack);\n      const wrapWithUnref = (raw2) => {\n        const wrapped = `${context.helperString(UNREF)}(${raw2})`;\n        return isNewExpression ? `(${wrapped})` : wrapped;\n      };\n      if (isConst(type) || type === \"setup-reactive-const\" || localVars[raw]) {\n        return raw;\n      } else if (type === \"setup-ref\") {\n        return `${raw}.value`;\n      } else if (type === \"setup-maybe-ref\") {\n        return isAssignmentLVal || isUpdateArg || isDestructureAssignment ? `${raw}.value` : wrapWithUnref(raw);\n      } else if (type === \"setup-let\") {\n        if (isAssignmentLVal) {\n          const { right: rVal, operator } = parent;\n          const rExp = rawExp.slice(rVal.start - 1, rVal.end - 1);\n          const rExpString = stringifyExpression(\n            processExpression(\n              createSimpleExpression(rExp, false),\n              context,\n              false,\n              false,\n              knownIds\n            )\n          );\n          return `${context.helperString(IS_REF)}(${raw})${context.isTS ? ` //@ts-ignore\n` : ``} ? ${raw}.value ${operator} ${rExpString} : ${raw}`;\n        } else if (isUpdateArg) {\n          id.start = parent.start;\n          id.end = parent.end;\n          const { prefix: isPrefix, operator } = parent;\n          const prefix = isPrefix ? operator : ``;\n          const postfix = isPrefix ? `` : operator;\n          return `${context.helperString(IS_REF)}(${raw})${context.isTS ? ` //@ts-ignore\n` : ``} ? ${prefix}${raw}.value${postfix} : ${prefix}${raw}${postfix}`;\n        } else if (isDestructureAssignment) {\n          return raw;\n        } else {\n          return wrapWithUnref(raw);\n        }\n      } else if (type === \"props\") {\n        return shared.genPropsAccessExp(raw);\n      } else if (type === \"props-aliased\") {\n        return shared.genPropsAccessExp(bindingMetadata.__propsAliases[raw]);\n      }\n    } else {\n      if (type && type.startsWith(\"setup\") || type === \"literal-const\") {\n        return `$setup.${raw}`;\n      } else if (type === \"props-aliased\") {\n        return `$props['${bindingMetadata.__propsAliases[raw]}']`;\n      } else if (type) {\n        return `$${type}.${raw}`;\n      }\n    }\n    return `_ctx.${raw}`;\n  };\n  const rawExp = node.content;\n  let ast = node.ast;\n  if (ast === false) {\n    return node;\n  }\n  if (ast === null || !ast && isSimpleIdentifier(rawExp)) {\n    const isScopeVarReference = context.identifiers[rawExp];\n    const isAllowedGlobal = shared.isGloballyAllowed(rawExp);\n    const isLiteral = isLiteralWhitelisted(rawExp);\n    if (!asParams && !isScopeVarReference && !isLiteral && (!isAllowedGlobal || bindingMetadata[rawExp])) {\n      if (isConst(bindingMetadata[rawExp])) {\n        node.constType = 1;\n      }\n      node.content = rewriteIdentifier(rawExp);\n    } else if (!isScopeVarReference) {\n      if (isLiteral) {\n        node.constType = 3;\n      } else {\n        node.constType = 2;\n      }\n    }\n    return node;\n  }\n  if (!ast) {\n    const source = asRawStatements ? ` ${rawExp} ` : `(${rawExp})${asParams ? `=>{}` : ``}`;\n    try {\n      ast = parser.parseExpression(source, {\n        sourceType: \"module\",\n        plugins: context.expressionPlugins\n      });\n    } catch (e) {\n      context.onError(\n        createCompilerError(\n          45,\n          node.loc,\n          void 0,\n          e.message\n        )\n      );\n      return node;\n    }\n  }\n  const ids = [];\n  const parentStack = [];\n  const knownIds = Object.create(context.identifiers);\n  walkIdentifiers(\n    ast,\n    (node2, parent, _, isReferenced, isLocal) => {\n      if (isStaticPropertyKey(node2, parent)) {\n        return;\n      }\n      if (node2.name.startsWith(\"_filter_\")) {\n        return;\n      }\n      const needPrefix = isReferenced && canPrefix(node2);\n      if (needPrefix && !isLocal) {\n        if (isStaticProperty(parent) && parent.shorthand) {\n          node2.prefix = `${node2.name}: `;\n        }\n        node2.name = rewriteIdentifier(node2.name, parent, node2);\n        ids.push(node2);\n      } else {\n        if (!(needPrefix && isLocal) && (!parent || parent.type !== \"CallExpression\" && parent.type !== \"NewExpression\" && parent.type !== \"MemberExpression\")) {\n          node2.isConstant = true;\n        }\n        ids.push(node2);\n      }\n    },\n    true,\n    // invoke on ALL identifiers\n    parentStack,\n    knownIds\n  );\n  const children = [];\n  ids.sort((a, b) => a.start - b.start);\n  ids.forEach((id, i) => {\n    const start = id.start - 1;\n    const end = id.end - 1;\n    const last = ids[i - 1];\n    const leadingText = rawExp.slice(last ? last.end - 1 : 0, start);\n    if (leadingText.length || id.prefix) {\n      children.push(leadingText + (id.prefix || ``));\n    }\n    const source = rawExp.slice(start, end);\n    children.push(\n      createSimpleExpression(\n        id.name,\n        false,\n        {\n          start: advancePositionWithClone(node.loc.start, source, start),\n          end: advancePositionWithClone(node.loc.start, source, end),\n          source\n        },\n        id.isConstant ? 3 : 0\n      )\n    );\n    if (i === ids.length - 1 && end < rawExp.length) {\n      children.push(rawExp.slice(end));\n    }\n  });\n  let ret;\n  if (children.length) {\n    ret = createCompoundExpression(children, node.loc);\n    ret.ast = ast;\n  } else {\n    ret = node;\n    ret.constType = 3;\n  }\n  ret.identifiers = Object.keys(knownIds);\n  return ret;\n}\nfunction canPrefix(id) {\n  if (shared.isGloballyAllowed(id.name)) {\n    return false;\n  }\n  if (id.name === \"require\") {\n    return false;\n  }\n  return true;\n}\nfunction stringifyExpression(exp) {\n  if (shared.isString(exp)) {\n    return exp;\n  } else if (exp.type === 4) {\n    return exp.content;\n  } else {\n    return exp.children.map(stringifyExpression).join(\"\");\n  }\n}\nfunction isConst(type) {\n  return type === \"setup-const\" || type === \"literal-const\";\n}\n\nconst transformIf = createStructuralDirectiveTransform(\n  /^(if|else|else-if)$/,\n  (node, dir, context) => {\n    return processIf(node, dir, context, (ifNode, branch, isRoot) => {\n      const siblings = context.parent.children;\n      let i = siblings.indexOf(ifNode);\n      let key = 0;\n      while (i-- >= 0) {\n        const sibling = siblings[i];\n        if (sibling && sibling.type === 9) {\n          key += sibling.branches.length;\n        }\n      }\n      return () => {\n        if (isRoot) {\n          ifNode.codegenNode = createCodegenNodeForBranch(\n            branch,\n            key,\n            context\n          );\n        } else {\n          const parentCondition = getParentCondition(ifNode.codegenNode);\n          parentCondition.alternate = createCodegenNodeForBranch(\n            branch,\n            key + ifNode.branches.length - 1,\n            context\n          );\n        }\n      };\n    });\n  }\n);\nfunction processIf(node, dir, context, processCodegen) {\n  if (dir.name !== \"else\" && (!dir.exp || !dir.exp.content.trim())) {\n    const loc = dir.exp ? dir.exp.loc : node.loc;\n    context.onError(\n      createCompilerError(28, dir.loc)\n    );\n    dir.exp = createSimpleExpression(`true`, false, loc);\n  }\n  if (context.prefixIdentifiers && dir.exp) {\n    dir.exp = processExpression(dir.exp, context);\n  }\n  if (dir.name === \"if\") {\n    const branch = createIfBranch(node, dir);\n    const ifNode = {\n      type: 9,\n      loc: cloneLoc(node.loc),\n      branches: [branch]\n    };\n    context.replaceNode(ifNode);\n    if (processCodegen) {\n      return processCodegen(ifNode, branch, true);\n    }\n  } else {\n    const siblings = context.parent.children;\n    let i = siblings.indexOf(node);\n    while (i-- >= -1) {\n      const sibling = siblings[i];\n      if (sibling && sibling.type === 3) {\n        context.removeNode(sibling);\n        continue;\n      }\n      if (sibling && sibling.type === 2 && !sibling.content.trim().length) {\n        context.removeNode(sibling);\n        continue;\n      }\n      if (sibling && sibling.type === 9) {\n        if (dir.name === \"else-if\" && sibling.branches[sibling.branches.length - 1].condition === void 0) {\n          context.onError(\n            createCompilerError(30, node.loc)\n          );\n        }\n        context.removeNode();\n        const branch = createIfBranch(node, dir);\n        {\n          const key = branch.userKey;\n          if (key) {\n            sibling.branches.forEach(({ userKey }) => {\n              if (isSameKey(userKey, key)) {\n                context.onError(\n                  createCompilerError(\n                    29,\n                    branch.userKey.loc\n                  )\n                );\n              }\n            });\n          }\n        }\n        sibling.branches.push(branch);\n        const onExit = processCodegen && processCodegen(sibling, branch, false);\n        traverseNode(branch, context);\n        if (onExit) onExit();\n        context.currentNode = null;\n      } else {\n        context.onError(\n          createCompilerError(30, node.loc)\n        );\n      }\n      break;\n    }\n  }\n}\nfunction createIfBranch(node, dir) {\n  const isTemplateIf = node.tagType === 3;\n  return {\n    type: 10,\n    loc: node.loc,\n    condition: dir.name === \"else\" ? void 0 : dir.exp,\n    children: isTemplateIf && !findDir(node, \"for\") ? node.children : [node],\n    userKey: findProp(node, `key`),\n    isTemplateIf\n  };\n}\nfunction createCodegenNodeForBranch(branch, keyIndex, context) {\n  if (branch.condition) {\n    return createConditionalExpression(\n      branch.condition,\n      createChildrenCodegenNode(branch, keyIndex, context),\n      // make sure to pass in asBlock: true so that the comment node call\n      // closes the current block.\n      createCallExpression(context.helper(CREATE_COMMENT), [\n        '\"\"',\n        \"true\"\n      ])\n    );\n  } else {\n    return createChildrenCodegenNode(branch, keyIndex, context);\n  }\n}\nfunction createChildrenCodegenNode(branch, keyIndex, context) {\n  const { helper } = context;\n  const keyProperty = createObjectProperty(\n    `key`,\n    createSimpleExpression(\n      `${keyIndex}`,\n      false,\n      locStub,\n      2\n    )\n  );\n  const { children } = branch;\n  const firstChild = children[0];\n  const needFragmentWrapper = children.length !== 1 || firstChild.type !== 1;\n  if (needFragmentWrapper) {\n    if (children.length === 1 && firstChild.type === 11) {\n      const vnodeCall = firstChild.codegenNode;\n      injectProp(vnodeCall, keyProperty, context);\n      return vnodeCall;\n    } else {\n      let patchFlag = 64;\n      return createVNodeCall(\n        context,\n        helper(FRAGMENT),\n        createObjectExpression([keyProperty]),\n        children,\n        patchFlag,\n        void 0,\n        void 0,\n        true,\n        false,\n        false,\n        branch.loc\n      );\n    }\n  } else {\n    const ret = firstChild.codegenNode;\n    const vnodeCall = getMemoedVNodeCall(ret);\n    if (vnodeCall.type === 13) {\n      convertToBlock(vnodeCall, context);\n    }\n    injectProp(vnodeCall, keyProperty, context);\n    return ret;\n  }\n}\nfunction isSameKey(a, b) {\n  if (!a || a.type !== b.type) {\n    return false;\n  }\n  if (a.type === 6) {\n    if (a.value.content !== b.value.content) {\n      return false;\n    }\n  } else {\n    const exp = a.exp;\n    const branchExp = b.exp;\n    if (exp.type !== branchExp.type) {\n      return false;\n    }\n    if (exp.type !== 4 || exp.isStatic !== branchExp.isStatic || exp.content !== branchExp.content) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction getParentCondition(node) {\n  while (true) {\n    if (node.type === 19) {\n      if (node.alternate.type === 19) {\n        node = node.alternate;\n      } else {\n        return node;\n      }\n    } else if (node.type === 20) {\n      node = node.value;\n    }\n  }\n}\n\nconst transformBind = (dir, _node, context) => {\n  const { modifiers, loc } = dir;\n  const arg = dir.arg;\n  let { exp } = dir;\n  if (exp && exp.type === 4 && !exp.content.trim()) {\n    {\n      context.onError(\n        createCompilerError(34, loc)\n      );\n      return {\n        props: [\n          createObjectProperty(arg, createSimpleExpression(\"\", true, loc))\n        ]\n      };\n    }\n  }\n  if (!exp) {\n    if (arg.type !== 4 || !arg.isStatic) {\n      context.onError(\n        createCompilerError(\n          52,\n          arg.loc\n        )\n      );\n      return {\n        props: [\n          createObjectProperty(arg, createSimpleExpression(\"\", true, loc))\n        ]\n      };\n    }\n    transformBindShorthand(dir, context);\n    exp = dir.exp;\n  }\n  if (arg.type !== 4) {\n    arg.children.unshift(`(`);\n    arg.children.push(`) || \"\"`);\n  } else if (!arg.isStatic) {\n    arg.content = arg.content ? `${arg.content} || \"\"` : `\"\"`;\n  }\n  if (modifiers.some((mod) => mod.content === \"camel\")) {\n    if (arg.type === 4) {\n      if (arg.isStatic) {\n        arg.content = shared.camelize(arg.content);\n      } else {\n        arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`;\n      }\n    } else {\n      arg.children.unshift(`${context.helperString(CAMELIZE)}(`);\n      arg.children.push(`)`);\n    }\n  }\n  if (!context.inSSR) {\n    if (modifiers.some((mod) => mod.content === \"prop\")) {\n      injectPrefix(arg, \".\");\n    }\n    if (modifiers.some((mod) => mod.content === \"attr\")) {\n      injectPrefix(arg, \"^\");\n    }\n  }\n  return {\n    props: [createObjectProperty(arg, exp)]\n  };\n};\nconst transformBindShorthand = (dir, context) => {\n  const arg = dir.arg;\n  const propName = shared.camelize(arg.content);\n  dir.exp = createSimpleExpression(propName, false, arg.loc);\n  {\n    dir.exp = processExpression(dir.exp, context);\n  }\n};\nconst injectPrefix = (arg, prefix) => {\n  if (arg.type === 4) {\n    if (arg.isStatic) {\n      arg.content = prefix + arg.content;\n    } else {\n      arg.content = `\\`${prefix}\\${${arg.content}}\\``;\n    }\n  } else {\n    arg.children.unshift(`'${prefix}' + (`);\n    arg.children.push(`)`);\n  }\n};\n\nconst transformFor = createStructuralDirectiveTransform(\n  \"for\",\n  (node, dir, context) => {\n    const { helper, removeHelper } = context;\n    return processFor(node, dir, context, (forNode) => {\n      const renderExp = createCallExpression(helper(RENDER_LIST), [\n        forNode.source\n      ]);\n      const isTemplate = isTemplateNode(node);\n      const memo = findDir(node, \"memo\");\n      const keyProp = findProp(node, `key`, false, true);\n      const isDirKey = keyProp && keyProp.type === 7;\n      if (isDirKey && !keyProp.exp) {\n        transformBindShorthand(keyProp, context);\n      }\n      let keyExp = keyProp && (keyProp.type === 6 ? keyProp.value ? createSimpleExpression(keyProp.value.content, true) : void 0 : keyProp.exp);\n      if (memo && keyExp && isDirKey) {\n        {\n          keyProp.exp = keyExp = processExpression(\n            keyExp,\n            context\n          );\n        }\n      }\n      const keyProperty = keyProp && keyExp ? createObjectProperty(`key`, keyExp) : null;\n      if (isTemplate) {\n        if (memo) {\n          memo.exp = processExpression(\n            memo.exp,\n            context\n          );\n        }\n        if (keyProperty && keyProp.type !== 6) {\n          keyProperty.value = processExpression(\n            keyProperty.value,\n            context\n          );\n        }\n      }\n      const isStableFragment = forNode.source.type === 4 && forNode.source.constType > 0;\n      const fragmentFlag = isStableFragment ? 64 : keyProp ? 128 : 256;\n      forNode.codegenNode = createVNodeCall(\n        context,\n        helper(FRAGMENT),\n        void 0,\n        renderExp,\n        fragmentFlag,\n        void 0,\n        void 0,\n        true,\n        !isStableFragment,\n        false,\n        node.loc\n      );\n      return () => {\n        let childBlock;\n        const { children } = forNode;\n        if (isTemplate) {\n          node.children.some((c) => {\n            if (c.type === 1) {\n              const key = findProp(c, \"key\");\n              if (key) {\n                context.onError(\n                  createCompilerError(\n                    33,\n                    key.loc\n                  )\n                );\n                return true;\n              }\n            }\n          });\n        }\n        const needFragmentWrapper = children.length !== 1 || children[0].type !== 1;\n        const slotOutlet = isSlotOutlet(node) ? node : isTemplate && node.children.length === 1 && isSlotOutlet(node.children[0]) ? node.children[0] : null;\n        if (slotOutlet) {\n          childBlock = slotOutlet.codegenNode;\n          if (isTemplate && keyProperty) {\n            injectProp(childBlock, keyProperty, context);\n          }\n        } else if (needFragmentWrapper) {\n          childBlock = createVNodeCall(\n            context,\n            helper(FRAGMENT),\n            keyProperty ? createObjectExpression([keyProperty]) : void 0,\n            node.children,\n            64,\n            void 0,\n            void 0,\n            true,\n            void 0,\n            false\n          );\n        } else {\n          childBlock = children[0].codegenNode;\n          if (isTemplate && keyProperty) {\n            injectProp(childBlock, keyProperty, context);\n          }\n          if (childBlock.isBlock !== !isStableFragment) {\n            if (childBlock.isBlock) {\n              removeHelper(OPEN_BLOCK);\n              removeHelper(\n                getVNodeBlockHelper(context.inSSR, childBlock.isComponent)\n              );\n            } else {\n              removeHelper(\n                getVNodeHelper(context.inSSR, childBlock.isComponent)\n              );\n            }\n          }\n          childBlock.isBlock = !isStableFragment;\n          if (childBlock.isBlock) {\n            helper(OPEN_BLOCK);\n            helper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent));\n          } else {\n            helper(getVNodeHelper(context.inSSR, childBlock.isComponent));\n          }\n        }\n        if (memo) {\n          const loop = createFunctionExpression(\n            createForLoopParams(forNode.parseResult, [\n              createSimpleExpression(`_cached`)\n            ])\n          );\n          loop.body = createBlockStatement([\n            createCompoundExpression([`const _memo = (`, memo.exp, `)`]),\n            createCompoundExpression([\n              `if (_cached`,\n              ...keyExp ? [` && _cached.key === `, keyExp] : [],\n              ` && ${context.helperString(\n                IS_MEMO_SAME\n              )}(_cached, _memo)) return _cached`\n            ]),\n            createCompoundExpression([`const _item = `, childBlock]),\n            createSimpleExpression(`_item.memo = _memo`),\n            createSimpleExpression(`return _item`)\n          ]);\n          renderExp.arguments.push(\n            loop,\n            createSimpleExpression(`_cache`),\n            createSimpleExpression(String(context.cached.length))\n          );\n          context.cached.push(null);\n        } else {\n          renderExp.arguments.push(\n            createFunctionExpression(\n              createForLoopParams(forNode.parseResult),\n              childBlock,\n              true\n            )\n          );\n        }\n      };\n    });\n  }\n);\nfunction processFor(node, dir, context, processCodegen) {\n  if (!dir.exp) {\n    context.onError(\n      createCompilerError(31, dir.loc)\n    );\n    return;\n  }\n  const parseResult = dir.forParseResult;\n  if (!parseResult) {\n    context.onError(\n      createCompilerError(32, dir.loc)\n    );\n    return;\n  }\n  finalizeForParseResult(parseResult, context);\n  const { addIdentifiers, removeIdentifiers, scopes } = context;\n  const { source, value, key, index } = parseResult;\n  const forNode = {\n    type: 11,\n    loc: dir.loc,\n    source,\n    valueAlias: value,\n    keyAlias: key,\n    objectIndexAlias: index,\n    parseResult,\n    children: isTemplateNode(node) ? node.children : [node]\n  };\n  context.replaceNode(forNode);\n  scopes.vFor++;\n  if (context.prefixIdentifiers) {\n    value && addIdentifiers(value);\n    key && addIdentifiers(key);\n    index && addIdentifiers(index);\n  }\n  const onExit = processCodegen && processCodegen(forNode);\n  return () => {\n    scopes.vFor--;\n    if (context.prefixIdentifiers) {\n      value && removeIdentifiers(value);\n      key && removeIdentifiers(key);\n      index && removeIdentifiers(index);\n    }\n    if (onExit) onExit();\n  };\n}\nfunction finalizeForParseResult(result, context) {\n  if (result.finalized) return;\n  if (context.prefixIdentifiers) {\n    result.source = processExpression(\n      result.source,\n      context\n    );\n    if (result.key) {\n      result.key = processExpression(\n        result.key,\n        context,\n        true\n      );\n    }\n    if (result.index) {\n      result.index = processExpression(\n        result.index,\n        context,\n        true\n      );\n    }\n    if (result.value) {\n      result.value = processExpression(\n        result.value,\n        context,\n        true\n      );\n    }\n  }\n  result.finalized = true;\n}\nfunction createForLoopParams({ value, key, index }, memoArgs = []) {\n  return createParamsList([value, key, index, ...memoArgs]);\n}\nfunction createParamsList(args) {\n  let i = args.length;\n  while (i--) {\n    if (args[i]) break;\n  }\n  return args.slice(0, i + 1).map((arg, i2) => arg || createSimpleExpression(`_`.repeat(i2 + 1), false));\n}\n\nconst defaultFallback = createSimpleExpression(`undefined`, false);\nconst trackSlotScopes = (node, context) => {\n  if (node.type === 1 && (node.tagType === 1 || node.tagType === 3)) {\n    const vSlot = findDir(node, \"slot\");\n    if (vSlot) {\n      const slotProps = vSlot.exp;\n      if (context.prefixIdentifiers) {\n        slotProps && context.addIdentifiers(slotProps);\n      }\n      context.scopes.vSlot++;\n      return () => {\n        if (context.prefixIdentifiers) {\n          slotProps && context.removeIdentifiers(slotProps);\n        }\n        context.scopes.vSlot--;\n      };\n    }\n  }\n};\nconst trackVForSlotScopes = (node, context) => {\n  let vFor;\n  if (isTemplateNode(node) && node.props.some(isVSlot) && (vFor = findDir(node, \"for\"))) {\n    const result = vFor.forParseResult;\n    if (result) {\n      finalizeForParseResult(result, context);\n      const { value, key, index } = result;\n      const { addIdentifiers, removeIdentifiers } = context;\n      value && addIdentifiers(value);\n      key && addIdentifiers(key);\n      index && addIdentifiers(index);\n      return () => {\n        value && removeIdentifiers(value);\n        key && removeIdentifiers(key);\n        index && removeIdentifiers(index);\n      };\n    }\n  }\n};\nconst buildClientSlotFn = (props, _vForExp, children, loc) => createFunctionExpression(\n  props,\n  children,\n  false,\n  true,\n  children.length ? children[0].loc : loc\n);\nfunction buildSlots(node, context, buildSlotFn = buildClientSlotFn) {\n  context.helper(WITH_CTX);\n  const { children, loc } = node;\n  const slotsProperties = [];\n  const dynamicSlots = [];\n  let hasDynamicSlots = context.scopes.vSlot > 0 || context.scopes.vFor > 0;\n  if (!context.ssr && context.prefixIdentifiers) {\n    hasDynamicSlots = hasScopeRef(node, context.identifiers);\n  }\n  const onComponentSlot = findDir(node, \"slot\", true);\n  if (onComponentSlot) {\n    const { arg, exp } = onComponentSlot;\n    if (arg && !isStaticExp(arg)) {\n      hasDynamicSlots = true;\n    }\n    slotsProperties.push(\n      createObjectProperty(\n        arg || createSimpleExpression(\"default\", true),\n        buildSlotFn(exp, void 0, children, loc)\n      )\n    );\n  }\n  let hasTemplateSlots = false;\n  let hasNamedDefaultSlot = false;\n  const implicitDefaultChildren = [];\n  const seenSlotNames = /* @__PURE__ */ new Set();\n  let conditionalBranchIndex = 0;\n  for (let i = 0; i < children.length; i++) {\n    const slotElement = children[i];\n    let slotDir;\n    if (!isTemplateNode(slotElement) || !(slotDir = findDir(slotElement, \"slot\", true))) {\n      if (slotElement.type !== 3) {\n        implicitDefaultChildren.push(slotElement);\n      }\n      continue;\n    }\n    if (onComponentSlot) {\n      context.onError(\n        createCompilerError(37, slotDir.loc)\n      );\n      break;\n    }\n    hasTemplateSlots = true;\n    const { children: slotChildren, loc: slotLoc } = slotElement;\n    const {\n      arg: slotName = createSimpleExpression(`default`, true),\n      exp: slotProps,\n      loc: dirLoc\n    } = slotDir;\n    let staticSlotName;\n    if (isStaticExp(slotName)) {\n      staticSlotName = slotName ? slotName.content : `default`;\n    } else {\n      hasDynamicSlots = true;\n    }\n    const vFor = findDir(slotElement, \"for\");\n    const slotFunction = buildSlotFn(slotProps, vFor, slotChildren, slotLoc);\n    let vIf;\n    let vElse;\n    if (vIf = findDir(slotElement, \"if\")) {\n      hasDynamicSlots = true;\n      dynamicSlots.push(\n        createConditionalExpression(\n          vIf.exp,\n          buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++),\n          defaultFallback\n        )\n      );\n    } else if (vElse = findDir(\n      slotElement,\n      /^else(-if)?$/,\n      true\n      /* allowEmpty */\n    )) {\n      let j = i;\n      let prev;\n      while (j--) {\n        prev = children[j];\n        if (prev.type !== 3 && isNonWhitespaceContent(prev)) {\n          break;\n        }\n      }\n      if (prev && isTemplateNode(prev) && findDir(prev, /^(else-)?if$/)) {\n        let conditional = dynamicSlots[dynamicSlots.length - 1];\n        while (conditional.alternate.type === 19) {\n          conditional = conditional.alternate;\n        }\n        conditional.alternate = vElse.exp ? createConditionalExpression(\n          vElse.exp,\n          buildDynamicSlot(\n            slotName,\n            slotFunction,\n            conditionalBranchIndex++\n          ),\n          defaultFallback\n        ) : buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++);\n      } else {\n        context.onError(\n          createCompilerError(30, vElse.loc)\n        );\n      }\n    } else if (vFor) {\n      hasDynamicSlots = true;\n      const parseResult = vFor.forParseResult;\n      if (parseResult) {\n        finalizeForParseResult(parseResult, context);\n        dynamicSlots.push(\n          createCallExpression(context.helper(RENDER_LIST), [\n            parseResult.source,\n            createFunctionExpression(\n              createForLoopParams(parseResult),\n              buildDynamicSlot(slotName, slotFunction),\n              true\n            )\n          ])\n        );\n      } else {\n        context.onError(\n          createCompilerError(\n            32,\n            vFor.loc\n          )\n        );\n      }\n    } else {\n      if (staticSlotName) {\n        if (seenSlotNames.has(staticSlotName)) {\n          context.onError(\n            createCompilerError(\n              38,\n              dirLoc\n            )\n          );\n          continue;\n        }\n        seenSlotNames.add(staticSlotName);\n        if (staticSlotName === \"default\") {\n          hasNamedDefaultSlot = true;\n        }\n      }\n      slotsProperties.push(createObjectProperty(slotName, slotFunction));\n    }\n  }\n  if (!onComponentSlot) {\n    const buildDefaultSlotProperty = (props, children2) => {\n      const fn = buildSlotFn(props, void 0, children2, loc);\n      if (context.compatConfig) {\n        fn.isNonScopedSlot = true;\n      }\n      return createObjectProperty(`default`, fn);\n    };\n    if (!hasTemplateSlots) {\n      slotsProperties.push(buildDefaultSlotProperty(void 0, children));\n    } else if (implicitDefaultChildren.length && // #3766\n    // with whitespace: 'preserve', whitespaces between slots will end up in\n    // implicitDefaultChildren. Ignore if all implicit children are whitespaces.\n    implicitDefaultChildren.some((node2) => isNonWhitespaceContent(node2))) {\n      if (hasNamedDefaultSlot) {\n        context.onError(\n          createCompilerError(\n            39,\n            implicitDefaultChildren[0].loc\n          )\n        );\n      } else {\n        slotsProperties.push(\n          buildDefaultSlotProperty(void 0, implicitDefaultChildren)\n        );\n      }\n    }\n  }\n  const slotFlag = hasDynamicSlots ? 2 : hasForwardedSlots(node.children) ? 3 : 1;\n  let slots = createObjectExpression(\n    slotsProperties.concat(\n      createObjectProperty(\n        `_`,\n        // 2 = compiled but dynamic = can skip normalization, but must run diff\n        // 1 = compiled and static = can skip normalization AND diff as optimized\n        createSimpleExpression(\n          slotFlag + (``),\n          false\n        )\n      )\n    ),\n    loc\n  );\n  if (dynamicSlots.length) {\n    slots = createCallExpression(context.helper(CREATE_SLOTS), [\n      slots,\n      createArrayExpression(dynamicSlots)\n    ]);\n  }\n  return {\n    slots,\n    hasDynamicSlots\n  };\n}\nfunction buildDynamicSlot(name, fn, index) {\n  const props = [\n    createObjectProperty(`name`, name),\n    createObjectProperty(`fn`, fn)\n  ];\n  if (index != null) {\n    props.push(\n      createObjectProperty(`key`, createSimpleExpression(String(index), true))\n    );\n  }\n  return createObjectExpression(props);\n}\nfunction hasForwardedSlots(children) {\n  for (let i = 0; i < children.length; i++) {\n    const child = children[i];\n    switch (child.type) {\n      case 1:\n        if (child.tagType === 2 || hasForwardedSlots(child.children)) {\n          return true;\n        }\n        break;\n      case 9:\n        if (hasForwardedSlots(child.branches)) return true;\n        break;\n      case 10:\n      case 11:\n        if (hasForwardedSlots(child.children)) return true;\n        break;\n    }\n  }\n  return false;\n}\nfunction isNonWhitespaceContent(node) {\n  if (node.type !== 2 && node.type !== 12)\n    return true;\n  return node.type === 2 ? !!node.content.trim() : isNonWhitespaceContent(node.content);\n}\n\nconst directiveImportMap = /* @__PURE__ */ new WeakMap();\nconst transformElement = (node, context) => {\n  return function postTransformElement() {\n    node = context.currentNode;\n    if (!(node.type === 1 && (node.tagType === 0 || node.tagType === 1))) {\n      return;\n    }\n    const { tag, props } = node;\n    const isComponent = node.tagType === 1;\n    let vnodeTag = isComponent ? resolveComponentType(node, context) : `\"${tag}\"`;\n    const isDynamicComponent = shared.isObject(vnodeTag) && vnodeTag.callee === RESOLVE_DYNAMIC_COMPONENT;\n    let vnodeProps;\n    let vnodeChildren;\n    let patchFlag = 0;\n    let vnodeDynamicProps;\n    let dynamicPropNames;\n    let vnodeDirectives;\n    let shouldUseBlock = (\n      // dynamic component may resolve to plain elements\n      isDynamicComponent || vnodeTag === TELEPORT || vnodeTag === SUSPENSE || !isComponent && // <svg> and <foreignObject> must be forced into blocks so that block\n      // updates inside get proper isSVG flag at runtime. (#639, #643)\n      // This is technically web-specific, but splitting the logic out of core\n      // leads to too much unnecessary complexity.\n      (tag === \"svg\" || tag === \"foreignObject\" || tag === \"math\")\n    );\n    if (props.length > 0) {\n      const propsBuildResult = buildProps(\n        node,\n        context,\n        void 0,\n        isComponent,\n        isDynamicComponent\n      );\n      vnodeProps = propsBuildResult.props;\n      patchFlag = propsBuildResult.patchFlag;\n      dynamicPropNames = propsBuildResult.dynamicPropNames;\n      const directives = propsBuildResult.directives;\n      vnodeDirectives = directives && directives.length ? createArrayExpression(\n        directives.map((dir) => buildDirectiveArgs(dir, context))\n      ) : void 0;\n      if (propsBuildResult.shouldUseBlock) {\n        shouldUseBlock = true;\n      }\n    }\n    if (node.children.length > 0) {\n      if (vnodeTag === KEEP_ALIVE) {\n        shouldUseBlock = true;\n        patchFlag |= 1024;\n      }\n      const shouldBuildAsSlots = isComponent && // Teleport is not a real component and has dedicated runtime handling\n      vnodeTag !== TELEPORT && // explained above.\n      vnodeTag !== KEEP_ALIVE;\n      if (shouldBuildAsSlots) {\n        const { slots, hasDynamicSlots } = buildSlots(node, context);\n        vnodeChildren = slots;\n        if (hasDynamicSlots) {\n          patchFlag |= 1024;\n        }\n      } else if (node.children.length === 1 && vnodeTag !== TELEPORT) {\n        const child = node.children[0];\n        const type = child.type;\n        const hasDynamicTextChild = type === 5 || type === 8;\n        if (hasDynamicTextChild && getConstantType(child, context) === 0) {\n          patchFlag |= 1;\n        }\n        if (hasDynamicTextChild || type === 2) {\n          vnodeChildren = child;\n        } else {\n          vnodeChildren = node.children;\n        }\n      } else {\n        vnodeChildren = node.children;\n      }\n    }\n    if (dynamicPropNames && dynamicPropNames.length) {\n      vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames);\n    }\n    node.codegenNode = createVNodeCall(\n      context,\n      vnodeTag,\n      vnodeProps,\n      vnodeChildren,\n      patchFlag === 0 ? void 0 : patchFlag,\n      vnodeDynamicProps,\n      vnodeDirectives,\n      !!shouldUseBlock,\n      false,\n      isComponent,\n      node.loc\n    );\n  };\n};\nfunction resolveComponentType(node, context, ssr = false) {\n  let { tag } = node;\n  const isExplicitDynamic = isComponentTag(tag);\n  const isProp = findProp(\n    node,\n    \"is\",\n    false,\n    true\n    /* allow empty */\n  );\n  if (isProp) {\n    if (isExplicitDynamic || isCompatEnabled(\n      \"COMPILER_IS_ON_ELEMENT\",\n      context\n    )) {\n      let exp;\n      if (isProp.type === 6) {\n        exp = isProp.value && createSimpleExpression(isProp.value.content, true);\n      } else {\n        exp = isProp.exp;\n        if (!exp) {\n          exp = createSimpleExpression(`is`, false, isProp.arg.loc);\n          {\n            exp = isProp.exp = processExpression(exp, context);\n          }\n        }\n      }\n      if (exp) {\n        return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [\n          exp\n        ]);\n      }\n    } else if (isProp.type === 6 && isProp.value.content.startsWith(\"vue:\")) {\n      tag = isProp.value.content.slice(4);\n    }\n  }\n  const builtIn = isCoreComponent(tag) || context.isBuiltInComponent(tag);\n  if (builtIn) {\n    if (!ssr) context.helper(builtIn);\n    return builtIn;\n  }\n  {\n    const fromSetup = resolveSetupReference(tag, context);\n    if (fromSetup) {\n      return fromSetup;\n    }\n    const dotIndex = tag.indexOf(\".\");\n    if (dotIndex > 0) {\n      const ns = resolveSetupReference(tag.slice(0, dotIndex), context);\n      if (ns) {\n        return ns + tag.slice(dotIndex);\n      }\n    }\n  }\n  if (context.selfName && shared.capitalize(shared.camelize(tag)) === context.selfName) {\n    context.helper(RESOLVE_COMPONENT);\n    context.components.add(tag + `__self`);\n    return toValidAssetId(tag, `component`);\n  }\n  context.helper(RESOLVE_COMPONENT);\n  context.components.add(tag);\n  return toValidAssetId(tag, `component`);\n}\nfunction resolveSetupReference(name, context) {\n  const bindings = context.bindingMetadata;\n  if (!bindings || bindings.__isScriptSetup === false) {\n    return;\n  }\n  const camelName = shared.camelize(name);\n  const PascalName = shared.capitalize(camelName);\n  const checkType = (type) => {\n    if (bindings[name] === type) {\n      return name;\n    }\n    if (bindings[camelName] === type) {\n      return camelName;\n    }\n    if (bindings[PascalName] === type) {\n      return PascalName;\n    }\n  };\n  const fromConst = checkType(\"setup-const\") || checkType(\"setup-reactive-const\") || checkType(\"literal-const\");\n  if (fromConst) {\n    return context.inline ? (\n      // in inline mode, const setup bindings (e.g. imports) can be used as-is\n      fromConst\n    ) : `$setup[${JSON.stringify(fromConst)}]`;\n  }\n  const fromMaybeRef = checkType(\"setup-let\") || checkType(\"setup-ref\") || checkType(\"setup-maybe-ref\");\n  if (fromMaybeRef) {\n    return context.inline ? (\n      // setup scope bindings that may be refs need to be unrefed\n      `${context.helperString(UNREF)}(${fromMaybeRef})`\n    ) : `$setup[${JSON.stringify(fromMaybeRef)}]`;\n  }\n  const fromProps = checkType(\"props\");\n  if (fromProps) {\n    return `${context.helperString(UNREF)}(${context.inline ? \"__props\" : \"$props\"}[${JSON.stringify(fromProps)}])`;\n  }\n}\nfunction buildProps(node, context, props = node.props, isComponent, isDynamicComponent, ssr = false) {\n  const { tag, loc: elementLoc, children } = node;\n  let properties = [];\n  const mergeArgs = [];\n  const runtimeDirectives = [];\n  const hasChildren = children.length > 0;\n  let shouldUseBlock = false;\n  let patchFlag = 0;\n  let hasRef = false;\n  let hasClassBinding = false;\n  let hasStyleBinding = false;\n  let hasHydrationEventBinding = false;\n  let hasDynamicKeys = false;\n  let hasVnodeHook = false;\n  const dynamicPropNames = [];\n  const pushMergeArg = (arg) => {\n    if (properties.length) {\n      mergeArgs.push(\n        createObjectExpression(dedupeProperties(properties), elementLoc)\n      );\n      properties = [];\n    }\n    if (arg) mergeArgs.push(arg);\n  };\n  const pushRefVForMarker = () => {\n    if (context.scopes.vFor > 0) {\n      properties.push(\n        createObjectProperty(\n          createSimpleExpression(\"ref_for\", true),\n          createSimpleExpression(\"true\")\n        )\n      );\n    }\n  };\n  const analyzePatchFlag = ({ key, value }) => {\n    if (isStaticExp(key)) {\n      const name = key.content;\n      const isEventHandler = shared.isOn(name);\n      if (isEventHandler && (!isComponent || isDynamicComponent) && // omit the flag for click handlers because hydration gives click\n      // dedicated fast path.\n      name.toLowerCase() !== \"onclick\" && // omit v-model handlers\n      name !== \"onUpdate:modelValue\" && // omit onVnodeXXX hooks\n      !shared.isReservedProp(name)) {\n        hasHydrationEventBinding = true;\n      }\n      if (isEventHandler && shared.isReservedProp(name)) {\n        hasVnodeHook = true;\n      }\n      if (isEventHandler && value.type === 14) {\n        value = value.arguments[0];\n      }\n      if (value.type === 20 || (value.type === 4 || value.type === 8) && getConstantType(value, context) > 0) {\n        return;\n      }\n      if (name === \"ref\") {\n        hasRef = true;\n      } else if (name === \"class\") {\n        hasClassBinding = true;\n      } else if (name === \"style\") {\n        hasStyleBinding = true;\n      } else if (name !== \"key\" && !dynamicPropNames.includes(name)) {\n        dynamicPropNames.push(name);\n      }\n      if (isComponent && (name === \"class\" || name === \"style\") && !dynamicPropNames.includes(name)) {\n        dynamicPropNames.push(name);\n      }\n    } else {\n      hasDynamicKeys = true;\n    }\n  };\n  for (let i = 0; i < props.length; i++) {\n    const prop = props[i];\n    if (prop.type === 6) {\n      const { loc, name, nameLoc, value } = prop;\n      let isStatic = true;\n      if (name === \"ref\") {\n        hasRef = true;\n        pushRefVForMarker();\n        if (value && context.inline) {\n          const binding = context.bindingMetadata[value.content];\n          if (binding === \"setup-let\" || binding === \"setup-ref\" || binding === \"setup-maybe-ref\") {\n            isStatic = false;\n            properties.push(\n              createObjectProperty(\n                createSimpleExpression(\"ref_key\", true),\n                createSimpleExpression(value.content, true, value.loc)\n              )\n            );\n          }\n        }\n      }\n      if (name === \"is\" && (isComponentTag(tag) || value && value.content.startsWith(\"vue:\") || isCompatEnabled(\n        \"COMPILER_IS_ON_ELEMENT\",\n        context\n      ))) {\n        continue;\n      }\n      properties.push(\n        createObjectProperty(\n          createSimpleExpression(name, true, nameLoc),\n          createSimpleExpression(\n            value ? value.content : \"\",\n            isStatic,\n            value ? value.loc : loc\n          )\n        )\n      );\n    } else {\n      const { name, arg, exp, loc, modifiers } = prop;\n      const isVBind = name === \"bind\";\n      const isVOn = name === \"on\";\n      if (name === \"slot\") {\n        if (!isComponent) {\n          context.onError(\n            createCompilerError(40, loc)\n          );\n        }\n        continue;\n      }\n      if (name === \"once\" || name === \"memo\") {\n        continue;\n      }\n      if (name === \"is\" || isVBind && isStaticArgOf(arg, \"is\") && (isComponentTag(tag) || isCompatEnabled(\n        \"COMPILER_IS_ON_ELEMENT\",\n        context\n      ))) {\n        continue;\n      }\n      if (isVOn && ssr) {\n        continue;\n      }\n      if (\n        // #938: elements with dynamic keys should be forced into blocks\n        isVBind && isStaticArgOf(arg, \"key\") || // inline before-update hooks need to force block so that it is invoked\n        // before children\n        isVOn && hasChildren && isStaticArgOf(arg, \"vue:before-update\")\n      ) {\n        shouldUseBlock = true;\n      }\n      if (isVBind && isStaticArgOf(arg, \"ref\")) {\n        pushRefVForMarker();\n      }\n      if (!arg && (isVBind || isVOn)) {\n        hasDynamicKeys = true;\n        if (exp) {\n          if (isVBind) {\n            {\n              pushMergeArg();\n              if (isCompatEnabled(\n                \"COMPILER_V_BIND_OBJECT_ORDER\",\n                context\n              )) {\n                mergeArgs.unshift(exp);\n                continue;\n              }\n            }\n            pushRefVForMarker();\n            pushMergeArg();\n            mergeArgs.push(exp);\n          } else {\n            pushMergeArg({\n              type: 14,\n              loc,\n              callee: context.helper(TO_HANDLERS),\n              arguments: isComponent ? [exp] : [exp, `true`]\n            });\n          }\n        } else {\n          context.onError(\n            createCompilerError(\n              isVBind ? 34 : 35,\n              loc\n            )\n          );\n        }\n        continue;\n      }\n      if (isVBind && modifiers.some((mod) => mod.content === \"prop\")) {\n        patchFlag |= 32;\n      }\n      const directiveTransform = context.directiveTransforms[name];\n      if (directiveTransform) {\n        const { props: props2, needRuntime } = directiveTransform(prop, node, context);\n        !ssr && props2.forEach(analyzePatchFlag);\n        if (isVOn && arg && !isStaticExp(arg)) {\n          pushMergeArg(createObjectExpression(props2, elementLoc));\n        } else {\n          properties.push(...props2);\n        }\n        if (needRuntime) {\n          runtimeDirectives.push(prop);\n          if (shared.isSymbol(needRuntime)) {\n            directiveImportMap.set(prop, needRuntime);\n          }\n        }\n      } else if (!shared.isBuiltInDirective(name)) {\n        runtimeDirectives.push(prop);\n        if (hasChildren) {\n          shouldUseBlock = true;\n        }\n      }\n    }\n  }\n  let propsExpression = void 0;\n  if (mergeArgs.length) {\n    pushMergeArg();\n    if (mergeArgs.length > 1) {\n      propsExpression = createCallExpression(\n        context.helper(MERGE_PROPS),\n        mergeArgs,\n        elementLoc\n      );\n    } else {\n      propsExpression = mergeArgs[0];\n    }\n  } else if (properties.length) {\n    propsExpression = createObjectExpression(\n      dedupeProperties(properties),\n      elementLoc\n    );\n  }\n  if (hasDynamicKeys) {\n    patchFlag |= 16;\n  } else {\n    if (hasClassBinding && !isComponent) {\n      patchFlag |= 2;\n    }\n    if (hasStyleBinding && !isComponent) {\n      patchFlag |= 4;\n    }\n    if (dynamicPropNames.length) {\n      patchFlag |= 8;\n    }\n    if (hasHydrationEventBinding) {\n      patchFlag |= 32;\n    }\n  }\n  if (!shouldUseBlock && (patchFlag === 0 || patchFlag === 32) && (hasRef || hasVnodeHook || runtimeDirectives.length > 0)) {\n    patchFlag |= 512;\n  }\n  if (!context.inSSR && propsExpression) {\n    switch (propsExpression.type) {\n      case 15:\n        let classKeyIndex = -1;\n        let styleKeyIndex = -1;\n        let hasDynamicKey = false;\n        for (let i = 0; i < propsExpression.properties.length; i++) {\n          const key = propsExpression.properties[i].key;\n          if (isStaticExp(key)) {\n            if (key.content === \"class\") {\n              classKeyIndex = i;\n            } else if (key.content === \"style\") {\n              styleKeyIndex = i;\n            }\n          } else if (!key.isHandlerKey) {\n            hasDynamicKey = true;\n          }\n        }\n        const classProp = propsExpression.properties[classKeyIndex];\n        const styleProp = propsExpression.properties[styleKeyIndex];\n        if (!hasDynamicKey) {\n          if (classProp && !isStaticExp(classProp.value)) {\n            classProp.value = createCallExpression(\n              context.helper(NORMALIZE_CLASS),\n              [classProp.value]\n            );\n          }\n          if (styleProp && // the static style is compiled into an object,\n          // so use `hasStyleBinding` to ensure that it is a dynamic style binding\n          (hasStyleBinding || styleProp.value.type === 4 && styleProp.value.content.trim()[0] === `[` || // v-bind:style and style both exist,\n          // v-bind:style with static literal object\n          styleProp.value.type === 17)) {\n            styleProp.value = createCallExpression(\n              context.helper(NORMALIZE_STYLE),\n              [styleProp.value]\n            );\n          }\n        } else {\n          propsExpression = createCallExpression(\n            context.helper(NORMALIZE_PROPS),\n            [propsExpression]\n          );\n        }\n        break;\n      case 14:\n        break;\n      default:\n        propsExpression = createCallExpression(\n          context.helper(NORMALIZE_PROPS),\n          [\n            createCallExpression(context.helper(GUARD_REACTIVE_PROPS), [\n              propsExpression\n            ])\n          ]\n        );\n        break;\n    }\n  }\n  return {\n    props: propsExpression,\n    directives: runtimeDirectives,\n    patchFlag,\n    dynamicPropNames,\n    shouldUseBlock\n  };\n}\nfunction dedupeProperties(properties) {\n  const knownProps = /* @__PURE__ */ new Map();\n  const deduped = [];\n  for (let i = 0; i < properties.length; i++) {\n    const prop = properties[i];\n    if (prop.key.type === 8 || !prop.key.isStatic) {\n      deduped.push(prop);\n      continue;\n    }\n    const name = prop.key.content;\n    const existing = knownProps.get(name);\n    if (existing) {\n      if (name === \"style\" || name === \"class\" || shared.isOn(name)) {\n        mergeAsArray(existing, prop);\n      }\n    } else {\n      knownProps.set(name, prop);\n      deduped.push(prop);\n    }\n  }\n  return deduped;\n}\nfunction mergeAsArray(existing, incoming) {\n  if (existing.value.type === 17) {\n    existing.value.elements.push(incoming.value);\n  } else {\n    existing.value = createArrayExpression(\n      [existing.value, incoming.value],\n      existing.loc\n    );\n  }\n}\nfunction buildDirectiveArgs(dir, context) {\n  const dirArgs = [];\n  const runtime = directiveImportMap.get(dir);\n  if (runtime) {\n    dirArgs.push(context.helperString(runtime));\n  } else {\n    const fromSetup = resolveSetupReference(\"v-\" + dir.name, context);\n    if (fromSetup) {\n      dirArgs.push(fromSetup);\n    } else {\n      context.helper(RESOLVE_DIRECTIVE);\n      context.directives.add(dir.name);\n      dirArgs.push(toValidAssetId(dir.name, `directive`));\n    }\n  }\n  const { loc } = dir;\n  if (dir.exp) dirArgs.push(dir.exp);\n  if (dir.arg) {\n    if (!dir.exp) {\n      dirArgs.push(`void 0`);\n    }\n    dirArgs.push(dir.arg);\n  }\n  if (Object.keys(dir.modifiers).length) {\n    if (!dir.arg) {\n      if (!dir.exp) {\n        dirArgs.push(`void 0`);\n      }\n      dirArgs.push(`void 0`);\n    }\n    const trueExpression = createSimpleExpression(`true`, false, loc);\n    dirArgs.push(\n      createObjectExpression(\n        dir.modifiers.map(\n          (modifier) => createObjectProperty(modifier, trueExpression)\n        ),\n        loc\n      )\n    );\n  }\n  return createArrayExpression(dirArgs, dir.loc);\n}\nfunction stringifyDynamicPropNames(props) {\n  let propsNamesString = `[`;\n  for (let i = 0, l = props.length; i < l; i++) {\n    propsNamesString += JSON.stringify(props[i]);\n    if (i < l - 1) propsNamesString += \", \";\n  }\n  return propsNamesString + `]`;\n}\nfunction isComponentTag(tag) {\n  return tag === \"component\" || tag === \"Component\";\n}\n\nconst transformSlotOutlet = (node, context) => {\n  if (isSlotOutlet(node)) {\n    const { children, loc } = node;\n    const { slotName, slotProps } = processSlotOutlet(node, context);\n    const slotArgs = [\n      context.prefixIdentifiers ? `_ctx.$slots` : `$slots`,\n      slotName,\n      \"{}\",\n      \"undefined\",\n      \"true\"\n    ];\n    let expectedLen = 2;\n    if (slotProps) {\n      slotArgs[2] = slotProps;\n      expectedLen = 3;\n    }\n    if (children.length) {\n      slotArgs[3] = createFunctionExpression([], children, false, false, loc);\n      expectedLen = 4;\n    }\n    if (context.scopeId && !context.slotted) {\n      expectedLen = 5;\n    }\n    slotArgs.splice(expectedLen);\n    node.codegenNode = createCallExpression(\n      context.helper(RENDER_SLOT),\n      slotArgs,\n      loc\n    );\n  }\n};\nfunction processSlotOutlet(node, context) {\n  let slotName = `\"default\"`;\n  let slotProps = void 0;\n  const nonNameProps = [];\n  for (let i = 0; i < node.props.length; i++) {\n    const p = node.props[i];\n    if (p.type === 6) {\n      if (p.value) {\n        if (p.name === \"name\") {\n          slotName = JSON.stringify(p.value.content);\n        } else {\n          p.name = shared.camelize(p.name);\n          nonNameProps.push(p);\n        }\n      }\n    } else {\n      if (p.name === \"bind\" && isStaticArgOf(p.arg, \"name\")) {\n        if (p.exp) {\n          slotName = p.exp;\n        } else if (p.arg && p.arg.type === 4) {\n          const name = shared.camelize(p.arg.content);\n          slotName = p.exp = createSimpleExpression(name, false, p.arg.loc);\n          {\n            slotName = p.exp = processExpression(p.exp, context);\n          }\n        }\n      } else {\n        if (p.name === \"bind\" && p.arg && isStaticExp(p.arg)) {\n          p.arg.content = shared.camelize(p.arg.content);\n        }\n        nonNameProps.push(p);\n      }\n    }\n  }\n  if (nonNameProps.length > 0) {\n    const { props, directives } = buildProps(\n      node,\n      context,\n      nonNameProps,\n      false,\n      false\n    );\n    slotProps = props;\n    if (directives.length) {\n      context.onError(\n        createCompilerError(\n          36,\n          directives[0].loc\n        )\n      );\n    }\n  }\n  return {\n    slotName,\n    slotProps\n  };\n}\n\nconst transformOn = (dir, node, context, augmentor) => {\n  const { loc, modifiers, arg } = dir;\n  if (!dir.exp && !modifiers.length) {\n    context.onError(createCompilerError(35, loc));\n  }\n  let eventName;\n  if (arg.type === 4) {\n    if (arg.isStatic) {\n      let rawName = arg.content;\n      if (rawName.startsWith(\"vue:\")) {\n        rawName = `vnode-${rawName.slice(4)}`;\n      }\n      const eventString = node.tagType !== 0 || rawName.startsWith(\"vnode\") || !/[A-Z]/.test(rawName) ? (\n        // for non-element and vnode lifecycle event listeners, auto convert\n        // it to camelCase. See issue #2249\n        shared.toHandlerKey(shared.camelize(rawName))\n      ) : (\n        // preserve case for plain element listeners that have uppercase\n        // letters, as these may be custom elements' custom events\n        `on:${rawName}`\n      );\n      eventName = createSimpleExpression(eventString, true, arg.loc);\n    } else {\n      eventName = createCompoundExpression([\n        `${context.helperString(TO_HANDLER_KEY)}(`,\n        arg,\n        `)`\n      ]);\n    }\n  } else {\n    eventName = arg;\n    eventName.children.unshift(`${context.helperString(TO_HANDLER_KEY)}(`);\n    eventName.children.push(`)`);\n  }\n  let exp = dir.exp;\n  if (exp && !exp.content.trim()) {\n    exp = void 0;\n  }\n  let shouldCache = context.cacheHandlers && !exp && !context.inVOnce;\n  if (exp) {\n    const isMemberExp = isMemberExpression(exp, context);\n    const isInlineStatement = !(isMemberExp || isFnExpression(exp, context));\n    const hasMultipleStatements = exp.content.includes(`;`);\n    if (context.prefixIdentifiers) {\n      isInlineStatement && context.addIdentifiers(`$event`);\n      exp = dir.exp = processExpression(\n        exp,\n        context,\n        false,\n        hasMultipleStatements\n      );\n      isInlineStatement && context.removeIdentifiers(`$event`);\n      shouldCache = context.cacheHandlers && // unnecessary to cache inside v-once\n      !context.inVOnce && // runtime constants don't need to be cached\n      // (this is analyzed by compileScript in SFC <script setup>)\n      !(exp.type === 4 && exp.constType > 0) && // #1541 bail if this is a member exp handler passed to a component -\n      // we need to use the original function to preserve arity,\n      // e.g. <transition> relies on checking cb.length to determine\n      // transition end handling. Inline function is ok since its arity\n      // is preserved even when cached.\n      !(isMemberExp && node.tagType === 1) && // bail if the function references closure variables (v-for, v-slot)\n      // it must be passed fresh to avoid stale values.\n      !hasScopeRef(exp, context.identifiers);\n      if (shouldCache && isMemberExp) {\n        if (exp.type === 4) {\n          exp.content = `${exp.content} && ${exp.content}(...args)`;\n        } else {\n          exp.children = [...exp.children, ` && `, ...exp.children, `(...args)`];\n        }\n      }\n    }\n    if (isInlineStatement || shouldCache && isMemberExp) {\n      exp = createCompoundExpression([\n        `${isInlineStatement ? context.isTS ? `($event: any)` : `$event` : `${context.isTS ? `\n//@ts-ignore\n` : ``}(...args)`} => ${hasMultipleStatements ? `{` : `(`}`,\n        exp,\n        hasMultipleStatements ? `}` : `)`\n      ]);\n    }\n  }\n  let ret = {\n    props: [\n      createObjectProperty(\n        eventName,\n        exp || createSimpleExpression(`() => {}`, false, loc)\n      )\n    ]\n  };\n  if (augmentor) {\n    ret = augmentor(ret);\n  }\n  if (shouldCache) {\n    ret.props[0].value = context.cache(ret.props[0].value);\n  }\n  ret.props.forEach((p) => p.key.isHandlerKey = true);\n  return ret;\n};\n\nconst transformText = (node, context) => {\n  if (node.type === 0 || node.type === 1 || node.type === 11 || node.type === 10) {\n    return () => {\n      const children = node.children;\n      let currentContainer = void 0;\n      let hasText = false;\n      for (let i = 0; i < children.length; i++) {\n        const child = children[i];\n        if (isText$1(child)) {\n          hasText = true;\n          for (let j = i + 1; j < children.length; j++) {\n            const next = children[j];\n            if (isText$1(next)) {\n              if (!currentContainer) {\n                currentContainer = children[i] = createCompoundExpression(\n                  [child],\n                  child.loc\n                );\n              }\n              currentContainer.children.push(` + `, next);\n              children.splice(j, 1);\n              j--;\n            } else {\n              currentContainer = void 0;\n              break;\n            }\n          }\n        }\n      }\n      if (!hasText || // if this is a plain element with a single text child, leave it\n      // as-is since the runtime has dedicated fast path for this by directly\n      // setting textContent of the element.\n      // for component root it's always normalized anyway.\n      children.length === 1 && (node.type === 0 || node.type === 1 && node.tagType === 0 && // #3756\n      // custom directives can potentially add DOM elements arbitrarily,\n      // we need to avoid setting textContent of the element at runtime\n      // to avoid accidentally overwriting the DOM elements added\n      // by the user through custom directives.\n      !node.props.find(\n        (p) => p.type === 7 && !context.directiveTransforms[p.name]\n      ) && // in compat mode, <template> tags with no special directives\n      // will be rendered as a fragment so its children must be\n      // converted into vnodes.\n      !(node.tag === \"template\"))) {\n        return;\n      }\n      for (let i = 0; i < children.length; i++) {\n        const child = children[i];\n        if (isText$1(child) || child.type === 8) {\n          const callArgs = [];\n          if (child.type !== 2 || child.content !== \" \") {\n            callArgs.push(child);\n          }\n          if (!context.ssr && getConstantType(child, context) === 0) {\n            callArgs.push(\n              1 + (``)\n            );\n          }\n          children[i] = {\n            type: 12,\n            content: child,\n            loc: child.loc,\n            codegenNode: createCallExpression(\n              context.helper(CREATE_TEXT),\n              callArgs\n            )\n          };\n        }\n      }\n    };\n  }\n};\n\nconst seen$1 = /* @__PURE__ */ new WeakSet();\nconst transformOnce = (node, context) => {\n  if (node.type === 1 && findDir(node, \"once\", true)) {\n    if (seen$1.has(node) || context.inVOnce || context.inSSR) {\n      return;\n    }\n    seen$1.add(node);\n    context.inVOnce = true;\n    context.helper(SET_BLOCK_TRACKING);\n    return () => {\n      context.inVOnce = false;\n      const cur = context.currentNode;\n      if (cur.codegenNode) {\n        cur.codegenNode = context.cache(\n          cur.codegenNode,\n          true,\n          true\n        );\n      }\n    };\n  }\n};\n\nconst transformModel = (dir, node, context) => {\n  const { exp, arg } = dir;\n  if (!exp) {\n    context.onError(\n      createCompilerError(41, dir.loc)\n    );\n    return createTransformProps();\n  }\n  const rawExp = exp.loc.source.trim();\n  const expString = exp.type === 4 ? exp.content : rawExp;\n  const bindingType = context.bindingMetadata[rawExp];\n  if (bindingType === \"props\" || bindingType === \"props-aliased\") {\n    context.onError(createCompilerError(44, exp.loc));\n    return createTransformProps();\n  }\n  const maybeRef = context.inline && (bindingType === \"setup-let\" || bindingType === \"setup-ref\" || bindingType === \"setup-maybe-ref\");\n  if (!expString.trim() || !isMemberExpression(exp, context) && !maybeRef) {\n    context.onError(\n      createCompilerError(42, exp.loc)\n    );\n    return createTransformProps();\n  }\n  if (context.prefixIdentifiers && isSimpleIdentifier(expString) && context.identifiers[expString]) {\n    context.onError(\n      createCompilerError(43, exp.loc)\n    );\n    return createTransformProps();\n  }\n  const propName = arg ? arg : createSimpleExpression(\"modelValue\", true);\n  const eventName = arg ? isStaticExp(arg) ? `onUpdate:${shared.camelize(arg.content)}` : createCompoundExpression(['\"onUpdate:\" + ', arg]) : `onUpdate:modelValue`;\n  let assignmentExp;\n  const eventArg = context.isTS ? `($event: any)` : `$event`;\n  if (maybeRef) {\n    if (bindingType === \"setup-ref\") {\n      assignmentExp = createCompoundExpression([\n        `${eventArg} => ((`,\n        createSimpleExpression(rawExp, false, exp.loc),\n        `).value = $event)`\n      ]);\n    } else {\n      const altAssignment = bindingType === \"setup-let\" ? `${rawExp} = $event` : `null`;\n      assignmentExp = createCompoundExpression([\n        `${eventArg} => (${context.helperString(IS_REF)}(${rawExp}) ? (`,\n        createSimpleExpression(rawExp, false, exp.loc),\n        `).value = $event : ${altAssignment})`\n      ]);\n    }\n  } else {\n    assignmentExp = createCompoundExpression([\n      `${eventArg} => ((`,\n      exp,\n      `) = $event)`\n    ]);\n  }\n  const props = [\n    // modelValue: foo\n    createObjectProperty(propName, dir.exp),\n    // \"onUpdate:modelValue\": $event => (foo = $event)\n    createObjectProperty(eventName, assignmentExp)\n  ];\n  if (context.prefixIdentifiers && !context.inVOnce && context.cacheHandlers && !hasScopeRef(exp, context.identifiers)) {\n    props[1].value = context.cache(props[1].value);\n  }\n  if (dir.modifiers.length && node.tagType === 1) {\n    const modifiers = dir.modifiers.map((m) => m.content).map((m) => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`).join(`, `);\n    const modifiersKey = arg ? isStaticExp(arg) ? `${arg.content}Modifiers` : createCompoundExpression([arg, ' + \"Modifiers\"']) : `modelModifiers`;\n    props.push(\n      createObjectProperty(\n        modifiersKey,\n        createSimpleExpression(\n          `{ ${modifiers} }`,\n          false,\n          dir.loc,\n          2\n        )\n      )\n    );\n  }\n  return createTransformProps(props);\n};\nfunction createTransformProps(props = []) {\n  return { props };\n}\n\nconst validDivisionCharRE = /[\\w).+\\-_$\\]]/;\nconst transformFilter = (node, context) => {\n  if (!isCompatEnabled(\"COMPILER_FILTERS\", context)) {\n    return;\n  }\n  if (node.type === 5) {\n    rewriteFilter(node.content, context);\n  } else if (node.type === 1) {\n    node.props.forEach((prop) => {\n      if (prop.type === 7 && prop.name !== \"for\" && prop.exp) {\n        rewriteFilter(prop.exp, context);\n      }\n    });\n  }\n};\nfunction rewriteFilter(node, context) {\n  if (node.type === 4) {\n    parseFilter(node, context);\n  } else {\n    for (let i = 0; i < node.children.length; i++) {\n      const child = node.children[i];\n      if (typeof child !== \"object\") continue;\n      if (child.type === 4) {\n        parseFilter(child, context);\n      } else if (child.type === 8) {\n        rewriteFilter(node, context);\n      } else if (child.type === 5) {\n        rewriteFilter(child.content, context);\n      }\n    }\n  }\n}\nfunction parseFilter(node, context) {\n  const exp = node.content;\n  let inSingle = false;\n  let inDouble = false;\n  let inTemplateString = false;\n  let inRegex = false;\n  let curly = 0;\n  let square = 0;\n  let paren = 0;\n  let lastFilterIndex = 0;\n  let c, prev, i, expression, filters = [];\n  for (i = 0; i < exp.length; i++) {\n    prev = c;\n    c = exp.charCodeAt(i);\n    if (inSingle) {\n      if (c === 39 && prev !== 92) inSingle = false;\n    } else if (inDouble) {\n      if (c === 34 && prev !== 92) inDouble = false;\n    } else if (inTemplateString) {\n      if (c === 96 && prev !== 92) inTemplateString = false;\n    } else if (inRegex) {\n      if (c === 47 && prev !== 92) inRegex = false;\n    } else if (c === 124 && // pipe\n    exp.charCodeAt(i + 1) !== 124 && exp.charCodeAt(i - 1) !== 124 && !curly && !square && !paren) {\n      if (expression === void 0) {\n        lastFilterIndex = i + 1;\n        expression = exp.slice(0, i).trim();\n      } else {\n        pushFilter();\n      }\n    } else {\n      switch (c) {\n        case 34:\n          inDouble = true;\n          break;\n        // \"\n        case 39:\n          inSingle = true;\n          break;\n        // '\n        case 96:\n          inTemplateString = true;\n          break;\n        // `\n        case 40:\n          paren++;\n          break;\n        // (\n        case 41:\n          paren--;\n          break;\n        // )\n        case 91:\n          square++;\n          break;\n        // [\n        case 93:\n          square--;\n          break;\n        // ]\n        case 123:\n          curly++;\n          break;\n        // {\n        case 125:\n          curly--;\n          break;\n      }\n      if (c === 47) {\n        let j = i - 1;\n        let p;\n        for (; j >= 0; j--) {\n          p = exp.charAt(j);\n          if (p !== \" \") break;\n        }\n        if (!p || !validDivisionCharRE.test(p)) {\n          inRegex = true;\n        }\n      }\n    }\n  }\n  if (expression === void 0) {\n    expression = exp.slice(0, i).trim();\n  } else if (lastFilterIndex !== 0) {\n    pushFilter();\n  }\n  function pushFilter() {\n    filters.push(exp.slice(lastFilterIndex, i).trim());\n    lastFilterIndex = i + 1;\n  }\n  if (filters.length) {\n    for (i = 0; i < filters.length; i++) {\n      expression = wrapFilter(expression, filters[i], context);\n    }\n    node.content = expression;\n    node.ast = void 0;\n  }\n}\nfunction wrapFilter(exp, filter, context) {\n  context.helper(RESOLVE_FILTER);\n  const i = filter.indexOf(\"(\");\n  if (i < 0) {\n    context.filters.add(filter);\n    return `${toValidAssetId(filter, \"filter\")}(${exp})`;\n  } else {\n    const name = filter.slice(0, i);\n    const args = filter.slice(i + 1);\n    context.filters.add(name);\n    return `${toValidAssetId(name, \"filter\")}(${exp}${args !== \")\" ? \",\" + args : args}`;\n  }\n}\n\nconst seen = /* @__PURE__ */ new WeakSet();\nconst transformMemo = (node, context) => {\n  if (node.type === 1) {\n    const dir = findDir(node, \"memo\");\n    if (!dir || seen.has(node)) {\n      return;\n    }\n    seen.add(node);\n    return () => {\n      const codegenNode = node.codegenNode || context.currentNode.codegenNode;\n      if (codegenNode && codegenNode.type === 13) {\n        if (node.tagType !== 1) {\n          convertToBlock(codegenNode, context);\n        }\n        node.codegenNode = createCallExpression(context.helper(WITH_MEMO), [\n          dir.exp,\n          createFunctionExpression(void 0, codegenNode),\n          `_cache`,\n          String(context.cached.length)\n        ]);\n        context.cached.push(null);\n      }\n    };\n  }\n};\n\nfunction getBaseTransformPreset(prefixIdentifiers) {\n  return [\n    [\n      transformOnce,\n      transformIf,\n      transformMemo,\n      transformFor,\n      ...[transformFilter] ,\n      ...prefixIdentifiers ? [\n        // order is important\n        trackVForSlotScopes,\n        transformExpression\n      ] : [],\n      transformSlotOutlet,\n      transformElement,\n      trackSlotScopes,\n      transformText\n    ],\n    {\n      on: transformOn,\n      bind: transformBind,\n      model: transformModel\n    }\n  ];\n}\nfunction baseCompile(source, options = {}) {\n  const onError = options.onError || defaultOnError;\n  const isModuleMode = options.mode === \"module\";\n  const prefixIdentifiers = options.prefixIdentifiers === true || isModuleMode;\n  if (!prefixIdentifiers && options.cacheHandlers) {\n    onError(createCompilerError(49));\n  }\n  if (options.scopeId && !isModuleMode) {\n    onError(createCompilerError(50));\n  }\n  const resolvedOptions = shared.extend({}, options, {\n    prefixIdentifiers\n  });\n  const ast = shared.isString(source) ? baseParse(source, resolvedOptions) : source;\n  const [nodeTransforms, directiveTransforms] = getBaseTransformPreset(prefixIdentifiers);\n  if (options.isTS) {\n    const { expressionPlugins } = options;\n    if (!expressionPlugins || !expressionPlugins.includes(\"typescript\")) {\n      options.expressionPlugins = [...expressionPlugins || [], \"typescript\"];\n    }\n  }\n  transform(\n    ast,\n    shared.extend({}, resolvedOptions, {\n      nodeTransforms: [\n        ...nodeTransforms,\n        ...options.nodeTransforms || []\n        // user transforms\n      ],\n      directiveTransforms: shared.extend(\n        {},\n        directiveTransforms,\n        options.directiveTransforms || {}\n        // user transforms\n      )\n    })\n  );\n  return generate(ast, resolvedOptions);\n}\n\nconst BindingTypes = {\n  \"DATA\": \"data\",\n  \"PROPS\": \"props\",\n  \"PROPS_ALIASED\": \"props-aliased\",\n  \"SETUP_LET\": \"setup-let\",\n  \"SETUP_CONST\": \"setup-const\",\n  \"SETUP_REACTIVE_CONST\": \"setup-reactive-const\",\n  \"SETUP_MAYBE_REF\": \"setup-maybe-ref\",\n  \"SETUP_REF\": \"setup-ref\",\n  \"OPTIONS\": \"options\",\n  \"LITERAL_CONST\": \"literal-const\"\n};\n\nconst noopDirectiveTransform = () => ({ props: [] });\n\nexports.generateCodeFrame = shared.generateCodeFrame;\nexports.BASE_TRANSITION = BASE_TRANSITION;\nexports.BindingTypes = BindingTypes;\nexports.CAMELIZE = CAMELIZE;\nexports.CAPITALIZE = CAPITALIZE;\nexports.CREATE_BLOCK = CREATE_BLOCK;\nexports.CREATE_COMMENT = CREATE_COMMENT;\nexports.CREATE_ELEMENT_BLOCK = CREATE_ELEMENT_BLOCK;\nexports.CREATE_ELEMENT_VNODE = CREATE_ELEMENT_VNODE;\nexports.CREATE_SLOTS = CREATE_SLOTS;\nexports.CREATE_STATIC = CREATE_STATIC;\nexports.CREATE_TEXT = CREATE_TEXT;\nexports.CREATE_VNODE = CREATE_VNODE;\nexports.CompilerDeprecationTypes = CompilerDeprecationTypes;\nexports.ConstantTypes = ConstantTypes;\nexports.ElementTypes = ElementTypes;\nexports.ErrorCodes = ErrorCodes;\nexports.FRAGMENT = FRAGMENT;\nexports.GUARD_REACTIVE_PROPS = GUARD_REACTIVE_PROPS;\nexports.IS_MEMO_SAME = IS_MEMO_SAME;\nexports.IS_REF = IS_REF;\nexports.KEEP_ALIVE = KEEP_ALIVE;\nexports.MERGE_PROPS = MERGE_PROPS;\nexports.NORMALIZE_CLASS = NORMALIZE_CLASS;\nexports.NORMALIZE_PROPS = NORMALIZE_PROPS;\nexports.NORMALIZE_STYLE = NORMALIZE_STYLE;\nexports.Namespaces = Namespaces;\nexports.NodeTypes = NodeTypes;\nexports.OPEN_BLOCK = OPEN_BLOCK;\nexports.POP_SCOPE_ID = POP_SCOPE_ID;\nexports.PUSH_SCOPE_ID = PUSH_SCOPE_ID;\nexports.RENDER_LIST = RENDER_LIST;\nexports.RENDER_SLOT = RENDER_SLOT;\nexports.RESOLVE_COMPONENT = RESOLVE_COMPONENT;\nexports.RESOLVE_DIRECTIVE = RESOLVE_DIRECTIVE;\nexports.RESOLVE_DYNAMIC_COMPONENT = RESOLVE_DYNAMIC_COMPONENT;\nexports.RESOLVE_FILTER = RESOLVE_FILTER;\nexports.SET_BLOCK_TRACKING = SET_BLOCK_TRACKING;\nexports.SUSPENSE = SUSPENSE;\nexports.TELEPORT = TELEPORT;\nexports.TO_DISPLAY_STRING = TO_DISPLAY_STRING;\nexports.TO_HANDLERS = TO_HANDLERS;\nexports.TO_HANDLER_KEY = TO_HANDLER_KEY;\nexports.TS_NODE_TYPES = TS_NODE_TYPES;\nexports.UNREF = UNREF;\nexports.WITH_CTX = WITH_CTX;\nexports.WITH_DIRECTIVES = WITH_DIRECTIVES;\nexports.WITH_MEMO = WITH_MEMO;\nexports.advancePositionWithClone = advancePositionWithClone;\nexports.advancePositionWithMutation = advancePositionWithMutation;\nexports.assert = assert;\nexports.baseCompile = baseCompile;\nexports.baseParse = baseParse;\nexports.buildDirectiveArgs = buildDirectiveArgs;\nexports.buildProps = buildProps;\nexports.buildSlots = buildSlots;\nexports.checkCompatEnabled = checkCompatEnabled;\nexports.convertToBlock = convertToBlock;\nexports.createArrayExpression = createArrayExpression;\nexports.createAssignmentExpression = createAssignmentExpression;\nexports.createBlockStatement = createBlockStatement;\nexports.createCacheExpression = createCacheExpression;\nexports.createCallExpression = createCallExpression;\nexports.createCompilerError = createCompilerError;\nexports.createCompoundExpression = createCompoundExpression;\nexports.createConditionalExpression = createConditionalExpression;\nexports.createForLoopParams = createForLoopParams;\nexports.createFunctionExpression = createFunctionExpression;\nexports.createIfStatement = createIfStatement;\nexports.createInterpolation = createInterpolation;\nexports.createObjectExpression = createObjectExpression;\nexports.createObjectProperty = createObjectProperty;\nexports.createReturnStatement = createReturnStatement;\nexports.createRoot = createRoot;\nexports.createSequenceExpression = createSequenceExpression;\nexports.createSimpleExpression = createSimpleExpression;\nexports.createStructuralDirectiveTransform = createStructuralDirectiveTransform;\nexports.createTemplateLiteral = createTemplateLiteral;\nexports.createTransformContext = createTransformContext;\nexports.createVNodeCall = createVNodeCall;\nexports.errorMessages = errorMessages;\nexports.extractIdentifiers = extractIdentifiers;\nexports.findDir = findDir;\nexports.findProp = findProp;\nexports.forAliasRE = forAliasRE;\nexports.generate = generate;\nexports.getBaseTransformPreset = getBaseTransformPreset;\nexports.getConstantType = getConstantType;\nexports.getMemoedVNodeCall = getMemoedVNodeCall;\nexports.getVNodeBlockHelper = getVNodeBlockHelper;\nexports.getVNodeHelper = getVNodeHelper;\nexports.hasDynamicKeyVBind = hasDynamicKeyVBind;\nexports.hasScopeRef = hasScopeRef;\nexports.helperNameMap = helperNameMap;\nexports.injectProp = injectProp;\nexports.isCoreComponent = isCoreComponent;\nexports.isFnExpression = isFnExpression;\nexports.isFnExpressionBrowser = isFnExpressionBrowser;\nexports.isFnExpressionNode = isFnExpressionNode;\nexports.isFunctionType = isFunctionType;\nexports.isInDestructureAssignment = isInDestructureAssignment;\nexports.isInNewExpression = isInNewExpression;\nexports.isMemberExpression = isMemberExpression;\nexports.isMemberExpressionBrowser = isMemberExpressionBrowser;\nexports.isMemberExpressionNode = isMemberExpressionNode;\nexports.isReferencedIdentifier = isReferencedIdentifier;\nexports.isSimpleIdentifier = isSimpleIdentifier;\nexports.isSlotOutlet = isSlotOutlet;\nexports.isStaticArgOf = isStaticArgOf;\nexports.isStaticExp = isStaticExp;\nexports.isStaticProperty = isStaticProperty;\nexports.isStaticPropertyKey = isStaticPropertyKey;\nexports.isTemplateNode = isTemplateNode;\nexports.isText = isText$1;\nexports.isVPre = isVPre;\nexports.isVSlot = isVSlot;\nexports.locStub = locStub;\nexports.noopDirectiveTransform = noopDirectiveTransform;\nexports.processExpression = processExpression;\nexports.processFor = processFor;\nexports.processIf = processIf;\nexports.processSlotOutlet = processSlotOutlet;\nexports.registerRuntimeHelpers = registerRuntimeHelpers;\nexports.resolveComponentType = resolveComponentType;\nexports.stringifyExpression = stringifyExpression;\nexports.toValidAssetId = toValidAssetId;\nexports.trackSlotScopes = trackSlotScopes;\nexports.trackVForSlotScopes = trackVForSlotScopes;\nexports.transform = transform;\nexports.transformBind = transformBind;\nexports.transformElement = transformElement;\nexports.transformExpression = transformExpression;\nexports.transformModel = transformModel;\nexports.transformOn = transformOn;\nexports.traverseNode = traverseNode;\nexports.unwrapTSNode = unwrapTSNode;\nexports.walkBlockDeclarations = walkBlockDeclarations;\nexports.walkFunctionParams = walkFunctionParams;\nexports.walkIdentifiers = walkIdentifiers;\nexports.warnDeprecation = warnDeprecation;\n","'use strict'\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./dist/compiler-core.cjs.prod.js')\n} else {\n  module.exports = require('./dist/compiler-core.cjs.js')\n}\n","/**\n* @vue/compiler-dom v3.5.18\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar compilerCore = require('@vue/compiler-core');\nvar shared = require('@vue/shared');\n\nconst V_MODEL_RADIO = Symbol(``);\nconst V_MODEL_CHECKBOX = Symbol(\n  ``\n);\nconst V_MODEL_TEXT = Symbol(``);\nconst V_MODEL_SELECT = Symbol(\n  ``\n);\nconst V_MODEL_DYNAMIC = Symbol(\n  ``\n);\nconst V_ON_WITH_MODIFIERS = Symbol(\n  ``\n);\nconst V_ON_WITH_KEYS = Symbol(\n  ``\n);\nconst V_SHOW = Symbol(``);\nconst TRANSITION = Symbol(``);\nconst TRANSITION_GROUP = Symbol(\n  ``\n);\ncompilerCore.registerRuntimeHelpers({\n  [V_MODEL_RADIO]: `vModelRadio`,\n  [V_MODEL_CHECKBOX]: `vModelCheckbox`,\n  [V_MODEL_TEXT]: `vModelText`,\n  [V_MODEL_SELECT]: `vModelSelect`,\n  [V_MODEL_DYNAMIC]: `vModelDynamic`,\n  [V_ON_WITH_MODIFIERS]: `withModifiers`,\n  [V_ON_WITH_KEYS]: `withKeys`,\n  [V_SHOW]: `vShow`,\n  [TRANSITION]: `Transition`,\n  [TRANSITION_GROUP]: `TransitionGroup`\n});\n\nconst parserOptions = {\n  parseMode: \"html\",\n  isVoidTag: shared.isVoidTag,\n  isNativeTag: (tag) => shared.isHTMLTag(tag) || shared.isSVGTag(tag) || shared.isMathMLTag(tag),\n  isPreTag: (tag) => tag === \"pre\",\n  isIgnoreNewlineTag: (tag) => tag === \"pre\" || tag === \"textarea\",\n  decodeEntities: void 0,\n  isBuiltInComponent: (tag) => {\n    if (tag === \"Transition\" || tag === \"transition\") {\n      return TRANSITION;\n    } else if (tag === \"TransitionGroup\" || tag === \"transition-group\") {\n      return TRANSITION_GROUP;\n    }\n  },\n  // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher\n  getNamespace(tag, parent, rootNamespace) {\n    let ns = parent ? parent.ns : rootNamespace;\n    if (parent && ns === 2) {\n      if (parent.tag === \"annotation-xml\") {\n        if (tag === \"svg\") {\n          return 1;\n        }\n        if (parent.props.some(\n          (a) => a.type === 6 && a.name === \"encoding\" && a.value != null && (a.value.content === \"text/html\" || a.value.content === \"application/xhtml+xml\")\n        )) {\n          ns = 0;\n        }\n      } else if (/^m(?:[ions]|text)$/.test(parent.tag) && tag !== \"mglyph\" && tag !== \"malignmark\") {\n        ns = 0;\n      }\n    } else if (parent && ns === 1) {\n      if (parent.tag === \"foreignObject\" || parent.tag === \"desc\" || parent.tag === \"title\") {\n        ns = 0;\n      }\n    }\n    if (ns === 0) {\n      if (tag === \"svg\") {\n        return 1;\n      }\n      if (tag === \"math\") {\n        return 2;\n      }\n    }\n    return ns;\n  }\n};\n\nconst transformStyle = (node) => {\n  if (node.type === 1) {\n    node.props.forEach((p, i) => {\n      if (p.type === 6 && p.name === \"style\" && p.value) {\n        node.props[i] = {\n          type: 7,\n          name: `bind`,\n          arg: compilerCore.createSimpleExpression(`style`, true, p.loc),\n          exp: parseInlineCSS(p.value.content, p.loc),\n          modifiers: [],\n          loc: p.loc\n        };\n      }\n    });\n  }\n};\nconst parseInlineCSS = (cssText, loc) => {\n  const normalized = shared.parseStringStyle(cssText);\n  return compilerCore.createSimpleExpression(\n    JSON.stringify(normalized),\n    false,\n    loc,\n    3\n  );\n};\n\nfunction createDOMCompilerError(code, loc) {\n  return compilerCore.createCompilerError(\n    code,\n    loc,\n    DOMErrorMessages \n  );\n}\nconst DOMErrorCodes = {\n  \"X_V_HTML_NO_EXPRESSION\": 53,\n  \"53\": \"X_V_HTML_NO_EXPRESSION\",\n  \"X_V_HTML_WITH_CHILDREN\": 54,\n  \"54\": \"X_V_HTML_WITH_CHILDREN\",\n  \"X_V_TEXT_NO_EXPRESSION\": 55,\n  \"55\": \"X_V_TEXT_NO_EXPRESSION\",\n  \"X_V_TEXT_WITH_CHILDREN\": 56,\n  \"56\": \"X_V_TEXT_WITH_CHILDREN\",\n  \"X_V_MODEL_ON_INVALID_ELEMENT\": 57,\n  \"57\": \"X_V_MODEL_ON_INVALID_ELEMENT\",\n  \"X_V_MODEL_ARG_ON_ELEMENT\": 58,\n  \"58\": \"X_V_MODEL_ARG_ON_ELEMENT\",\n  \"X_V_MODEL_ON_FILE_INPUT_ELEMENT\": 59,\n  \"59\": \"X_V_MODEL_ON_FILE_INPUT_ELEMENT\",\n  \"X_V_MODEL_UNNECESSARY_VALUE\": 60,\n  \"60\": \"X_V_MODEL_UNNECESSARY_VALUE\",\n  \"X_V_SHOW_NO_EXPRESSION\": 61,\n  \"61\": \"X_V_SHOW_NO_EXPRESSION\",\n  \"X_TRANSITION_INVALID_CHILDREN\": 62,\n  \"62\": \"X_TRANSITION_INVALID_CHILDREN\",\n  \"X_IGNORED_SIDE_EFFECT_TAG\": 63,\n  \"63\": \"X_IGNORED_SIDE_EFFECT_TAG\",\n  \"__EXTEND_POINT__\": 64,\n  \"64\": \"__EXTEND_POINT__\"\n};\nconst DOMErrorMessages = {\n  [53]: `v-html is missing expression.`,\n  [54]: `v-html will override element children.`,\n  [55]: `v-text is missing expression.`,\n  [56]: `v-text will override element children.`,\n  [57]: `v-model can only be used on <input>, <textarea> and <select> elements.`,\n  [58]: `v-model argument is not supported on plain elements.`,\n  [59]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`,\n  [60]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`,\n  [61]: `v-show is missing expression.`,\n  [62]: `<Transition> expects exactly one child element or component.`,\n  [63]: `Tags with side effect (<script> and <style>) are ignored in client component templates.`\n};\n\nconst transformVHtml = (dir, node, context) => {\n  const { exp, loc } = dir;\n  if (!exp) {\n    context.onError(\n      createDOMCompilerError(53, loc)\n    );\n  }\n  if (node.children.length) {\n    context.onError(\n      createDOMCompilerError(54, loc)\n    );\n    node.children.length = 0;\n  }\n  return {\n    props: [\n      compilerCore.createObjectProperty(\n        compilerCore.createSimpleExpression(`innerHTML`, true, loc),\n        exp || compilerCore.createSimpleExpression(\"\", true)\n      )\n    ]\n  };\n};\n\nconst transformVText = (dir, node, context) => {\n  const { exp, loc } = dir;\n  if (!exp) {\n    context.onError(\n      createDOMCompilerError(55, loc)\n    );\n  }\n  if (node.children.length) {\n    context.onError(\n      createDOMCompilerError(56, loc)\n    );\n    node.children.length = 0;\n  }\n  return {\n    props: [\n      compilerCore.createObjectProperty(\n        compilerCore.createSimpleExpression(`textContent`, true),\n        exp ? compilerCore.getConstantType(exp, context) > 0 ? exp : compilerCore.createCallExpression(\n          context.helperString(compilerCore.TO_DISPLAY_STRING),\n          [exp],\n          loc\n        ) : compilerCore.createSimpleExpression(\"\", true)\n      )\n    ]\n  };\n};\n\nconst transformModel = (dir, node, context) => {\n  const baseResult = compilerCore.transformModel(dir, node, context);\n  if (!baseResult.props.length || node.tagType === 1) {\n    return baseResult;\n  }\n  if (dir.arg) {\n    context.onError(\n      createDOMCompilerError(\n        58,\n        dir.arg.loc\n      )\n    );\n  }\n  const { tag } = node;\n  const isCustomElement = context.isCustomElement(tag);\n  if (tag === \"input\" || tag === \"textarea\" || tag === \"select\" || isCustomElement) {\n    let directiveToUse = V_MODEL_TEXT;\n    let isInvalidType = false;\n    if (tag === \"input\" || isCustomElement) {\n      const type = compilerCore.findProp(node, `type`);\n      if (type) {\n        if (type.type === 7) {\n          directiveToUse = V_MODEL_DYNAMIC;\n        } else if (type.value) {\n          switch (type.value.content) {\n            case \"radio\":\n              directiveToUse = V_MODEL_RADIO;\n              break;\n            case \"checkbox\":\n              directiveToUse = V_MODEL_CHECKBOX;\n              break;\n            case \"file\":\n              isInvalidType = true;\n              context.onError(\n                createDOMCompilerError(\n                  59,\n                  dir.loc\n                )\n              );\n              break;\n          }\n        }\n      } else if (compilerCore.hasDynamicKeyVBind(node)) {\n        directiveToUse = V_MODEL_DYNAMIC;\n      } else ;\n    } else if (tag === \"select\") {\n      directiveToUse = V_MODEL_SELECT;\n    } else ;\n    if (!isInvalidType) {\n      baseResult.needRuntime = context.helper(directiveToUse);\n    }\n  } else {\n    context.onError(\n      createDOMCompilerError(\n        57,\n        dir.loc\n      )\n    );\n  }\n  baseResult.props = baseResult.props.filter(\n    (p) => !(p.key.type === 4 && p.key.content === \"modelValue\")\n  );\n  return baseResult;\n};\n\nconst isEventOptionModifier = /* @__PURE__ */ shared.makeMap(`passive,once,capture`);\nconst isNonKeyModifier = /* @__PURE__ */ shared.makeMap(\n  // event propagation management\n  `stop,prevent,self,ctrl,shift,alt,meta,exact,middle`\n);\nconst maybeKeyModifier = /* @__PURE__ */ shared.makeMap(\"left,right\");\nconst isKeyboardEvent = /* @__PURE__ */ shared.makeMap(`onkeyup,onkeydown,onkeypress`);\nconst resolveModifiers = (key, modifiers, context, loc) => {\n  const keyModifiers = [];\n  const nonKeyModifiers = [];\n  const eventOptionModifiers = [];\n  for (let i = 0; i < modifiers.length; i++) {\n    const modifier = modifiers[i].content;\n    if (modifier === \"native\" && compilerCore.checkCompatEnabled(\n      \"COMPILER_V_ON_NATIVE\",\n      context,\n      loc\n    )) {\n      eventOptionModifiers.push(modifier);\n    } else if (isEventOptionModifier(modifier)) {\n      eventOptionModifiers.push(modifier);\n    } else {\n      if (maybeKeyModifier(modifier)) {\n        if (compilerCore.isStaticExp(key)) {\n          if (isKeyboardEvent(key.content.toLowerCase())) {\n            keyModifiers.push(modifier);\n          } else {\n            nonKeyModifiers.push(modifier);\n          }\n        } else {\n          keyModifiers.push(modifier);\n          nonKeyModifiers.push(modifier);\n        }\n      } else {\n        if (isNonKeyModifier(modifier)) {\n          nonKeyModifiers.push(modifier);\n        } else {\n          keyModifiers.push(modifier);\n        }\n      }\n    }\n  }\n  return {\n    keyModifiers,\n    nonKeyModifiers,\n    eventOptionModifiers\n  };\n};\nconst transformClick = (key, event) => {\n  const isStaticClick = compilerCore.isStaticExp(key) && key.content.toLowerCase() === \"onclick\";\n  return isStaticClick ? compilerCore.createSimpleExpression(event, true) : key.type !== 4 ? compilerCore.createCompoundExpression([\n    `(`,\n    key,\n    `) === \"onClick\" ? \"${event}\" : (`,\n    key,\n    `)`\n  ]) : key;\n};\nconst transformOn = (dir, node, context) => {\n  return compilerCore.transformOn(dir, node, context, (baseResult) => {\n    const { modifiers } = dir;\n    if (!modifiers.length) return baseResult;\n    let { key, value: handlerExp } = baseResult.props[0];\n    const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc);\n    if (nonKeyModifiers.includes(\"right\")) {\n      key = transformClick(key, `onContextmenu`);\n    }\n    if (nonKeyModifiers.includes(\"middle\")) {\n      key = transformClick(key, `onMouseup`);\n    }\n    if (nonKeyModifiers.length) {\n      handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [\n        handlerExp,\n        JSON.stringify(nonKeyModifiers)\n      ]);\n    }\n    if (keyModifiers.length && // if event name is dynamic, always wrap with keys guard\n    (!compilerCore.isStaticExp(key) || isKeyboardEvent(key.content.toLowerCase()))) {\n      handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_KEYS), [\n        handlerExp,\n        JSON.stringify(keyModifiers)\n      ]);\n    }\n    if (eventOptionModifiers.length) {\n      const modifierPostfix = eventOptionModifiers.map(shared.capitalize).join(\"\");\n      key = compilerCore.isStaticExp(key) ? compilerCore.createSimpleExpression(`${key.content}${modifierPostfix}`, true) : compilerCore.createCompoundExpression([`(`, key, `) + \"${modifierPostfix}\"`]);\n    }\n    return {\n      props: [compilerCore.createObjectProperty(key, handlerExp)]\n    };\n  });\n};\n\nconst transformShow = (dir, node, context) => {\n  const { exp, loc } = dir;\n  if (!exp) {\n    context.onError(\n      createDOMCompilerError(61, loc)\n    );\n  }\n  return {\n    props: [],\n    needRuntime: context.helper(V_SHOW)\n  };\n};\n\nconst expReplaceRE = /__VUE_EXP_START__(.*?)__VUE_EXP_END__/g;\nconst stringifyStatic = (children, context, parent) => {\n  if (context.scopes.vSlot > 0) {\n    return;\n  }\n  const isParentCached = parent.type === 1 && parent.codegenNode && parent.codegenNode.type === 13 && parent.codegenNode.children && !shared.isArray(parent.codegenNode.children) && parent.codegenNode.children.type === 20;\n  let nc = 0;\n  let ec = 0;\n  const currentChunk = [];\n  const stringifyCurrentChunk = (currentIndex) => {\n    if (nc >= 20 || ec >= 5) {\n      const staticCall = compilerCore.createCallExpression(context.helper(compilerCore.CREATE_STATIC), [\n        JSON.stringify(\n          currentChunk.map((node) => stringifyNode(node, context)).join(\"\")\n        ).replace(expReplaceRE, `\" + $1 + \"`),\n        // the 2nd argument indicates the number of DOM nodes this static vnode\n        // will insert / hydrate\n        String(currentChunk.length)\n      ]);\n      const deleteCount = currentChunk.length - 1;\n      if (isParentCached) {\n        children.splice(\n          currentIndex - currentChunk.length,\n          currentChunk.length,\n          // @ts-expect-error\n          staticCall\n        );\n      } else {\n        currentChunk[0].codegenNode.value = staticCall;\n        if (currentChunk.length > 1) {\n          children.splice(currentIndex - currentChunk.length + 1, deleteCount);\n          const cacheIndex = context.cached.indexOf(\n            currentChunk[currentChunk.length - 1].codegenNode\n          );\n          if (cacheIndex > -1) {\n            for (let i2 = cacheIndex; i2 < context.cached.length; i2++) {\n              const c = context.cached[i2];\n              if (c) c.index -= deleteCount;\n            }\n            context.cached.splice(cacheIndex - deleteCount + 1, deleteCount);\n          }\n        }\n      }\n      return deleteCount;\n    }\n    return 0;\n  };\n  let i = 0;\n  for (; i < children.length; i++) {\n    const child = children[i];\n    const isCached = isParentCached || getCachedNode(child);\n    if (isCached) {\n      const result = analyzeNode(child);\n      if (result) {\n        nc += result[0];\n        ec += result[1];\n        currentChunk.push(child);\n        continue;\n      }\n    }\n    i -= stringifyCurrentChunk(i);\n    nc = 0;\n    ec = 0;\n    currentChunk.length = 0;\n  }\n  stringifyCurrentChunk(i);\n};\nconst getCachedNode = (node) => {\n  if ((node.type === 1 && node.tagType === 0 || node.type === 12) && node.codegenNode && node.codegenNode.type === 20) {\n    return node.codegenNode;\n  }\n};\nconst dataAriaRE = /^(data|aria)-/;\nconst isStringifiableAttr = (name, ns) => {\n  return (ns === 0 ? shared.isKnownHtmlAttr(name) : ns === 1 ? shared.isKnownSvgAttr(name) : ns === 2 ? shared.isKnownMathMLAttr(name) : false) || dataAriaRE.test(name);\n};\nconst isNonStringifiable = /* @__PURE__ */ shared.makeMap(\n  `caption,thead,tr,th,tbody,td,tfoot,colgroup,col`\n);\nfunction analyzeNode(node) {\n  if (node.type === 1 && isNonStringifiable(node.tag)) {\n    return false;\n  }\n  if (node.type === 12) {\n    return [1, 0];\n  }\n  let nc = 1;\n  let ec = node.props.length > 0 ? 1 : 0;\n  let bailed = false;\n  const bail = () => {\n    bailed = true;\n    return false;\n  };\n  function walk(node2) {\n    const isOptionTag = node2.tag === \"option\" && node2.ns === 0;\n    for (let i = 0; i < node2.props.length; i++) {\n      const p = node2.props[i];\n      if (p.type === 6 && !isStringifiableAttr(p.name, node2.ns)) {\n        return bail();\n      }\n      if (p.type === 7 && p.name === \"bind\") {\n        if (p.arg && (p.arg.type === 8 || p.arg.isStatic && !isStringifiableAttr(p.arg.content, node2.ns))) {\n          return bail();\n        }\n        if (p.exp && (p.exp.type === 8 || p.exp.constType < 3)) {\n          return bail();\n        }\n        if (isOptionTag && compilerCore.isStaticArgOf(p.arg, \"value\") && p.exp && !p.exp.isStatic) {\n          return bail();\n        }\n      }\n    }\n    for (let i = 0; i < node2.children.length; i++) {\n      nc++;\n      const child = node2.children[i];\n      if (child.type === 1) {\n        if (child.props.length > 0) {\n          ec++;\n        }\n        walk(child);\n        if (bailed) {\n          return false;\n        }\n      }\n    }\n    return true;\n  }\n  return walk(node) ? [nc, ec] : false;\n}\nfunction stringifyNode(node, context) {\n  if (shared.isString(node)) {\n    return node;\n  }\n  if (shared.isSymbol(node)) {\n    return ``;\n  }\n  switch (node.type) {\n    case 1:\n      return stringifyElement(node, context);\n    case 2:\n      return shared.escapeHtml(node.content);\n    case 3:\n      return `<!--${shared.escapeHtml(node.content)}-->`;\n    case 5:\n      return shared.escapeHtml(shared.toDisplayString(evaluateConstant(node.content)));\n    case 8:\n      return shared.escapeHtml(evaluateConstant(node));\n    case 12:\n      return stringifyNode(node.content, context);\n    default:\n      return \"\";\n  }\n}\nfunction stringifyElement(node, context) {\n  let res = `<${node.tag}`;\n  let innerHTML = \"\";\n  for (let i = 0; i < node.props.length; i++) {\n    const p = node.props[i];\n    if (p.type === 6) {\n      res += ` ${p.name}`;\n      if (p.value) {\n        res += `=\"${shared.escapeHtml(p.value.content)}\"`;\n      }\n    } else if (p.type === 7) {\n      if (p.name === \"bind\") {\n        const exp = p.exp;\n        if (exp.content[0] === \"_\") {\n          res += ` ${p.arg.content}=\"__VUE_EXP_START__${exp.content}__VUE_EXP_END__\"`;\n          continue;\n        }\n        if (shared.isBooleanAttr(p.arg.content) && exp.content === \"false\") {\n          continue;\n        }\n        let evaluated = evaluateConstant(exp);\n        if (evaluated != null) {\n          const arg = p.arg && p.arg.content;\n          if (arg === \"class\") {\n            evaluated = shared.normalizeClass(evaluated);\n          } else if (arg === \"style\") {\n            evaluated = shared.stringifyStyle(shared.normalizeStyle(evaluated));\n          }\n          res += ` ${p.arg.content}=\"${shared.escapeHtml(\n            evaluated\n          )}\"`;\n        }\n      } else if (p.name === \"html\") {\n        innerHTML = evaluateConstant(p.exp);\n      } else if (p.name === \"text\") {\n        innerHTML = shared.escapeHtml(\n          shared.toDisplayString(evaluateConstant(p.exp))\n        );\n      }\n    }\n  }\n  if (context.scopeId) {\n    res += ` ${context.scopeId}`;\n  }\n  res += `>`;\n  if (innerHTML) {\n    res += innerHTML;\n  } else {\n    for (let i = 0; i < node.children.length; i++) {\n      res += stringifyNode(node.children[i], context);\n    }\n  }\n  if (!shared.isVoidTag(node.tag)) {\n    res += `</${node.tag}>`;\n  }\n  return res;\n}\nfunction evaluateConstant(exp) {\n  if (exp.type === 4) {\n    return new Function(`return (${exp.content})`)();\n  } else {\n    let res = ``;\n    exp.children.forEach((c) => {\n      if (shared.isString(c) || shared.isSymbol(c)) {\n        return;\n      }\n      if (c.type === 2) {\n        res += c.content;\n      } else if (c.type === 5) {\n        res += shared.toDisplayString(evaluateConstant(c.content));\n      } else {\n        res += evaluateConstant(c);\n      }\n    });\n    return res;\n  }\n}\n\nconst ignoreSideEffectTags = (node, context) => {\n  if (node.type === 1 && node.tagType === 0 && (node.tag === \"script\" || node.tag === \"style\")) {\n    context.removeNode();\n  }\n};\n\nconst DOMNodeTransforms = [\n  transformStyle,\n  ...[]\n];\nconst DOMDirectiveTransforms = {\n  cloak: compilerCore.noopDirectiveTransform,\n  html: transformVHtml,\n  text: transformVText,\n  model: transformModel,\n  // override compiler-core\n  on: transformOn,\n  // override compiler-core\n  show: transformShow\n};\nfunction compile(src, options = {}) {\n  return compilerCore.baseCompile(\n    src,\n    shared.extend({}, parserOptions, options, {\n      nodeTransforms: [\n        // ignore <script> and <tag>\n        // this is not put inside DOMNodeTransforms because that list is used\n        // by compiler-ssr to generate vnode fallback branches\n        ignoreSideEffectTags,\n        ...DOMNodeTransforms,\n        ...options.nodeTransforms || []\n      ],\n      directiveTransforms: shared.extend(\n        {},\n        DOMDirectiveTransforms,\n        options.directiveTransforms || {}\n      ),\n      transformHoist: stringifyStatic\n    })\n  );\n}\nfunction parse(template, options = {}) {\n  return compilerCore.baseParse(template, shared.extend({}, parserOptions, options));\n}\n\nexports.DOMDirectiveTransforms = DOMDirectiveTransforms;\nexports.DOMErrorCodes = DOMErrorCodes;\nexports.DOMErrorMessages = DOMErrorMessages;\nexports.DOMNodeTransforms = DOMNodeTransforms;\nexports.TRANSITION = TRANSITION;\nexports.TRANSITION_GROUP = TRANSITION_GROUP;\nexports.V_MODEL_CHECKBOX = V_MODEL_CHECKBOX;\nexports.V_MODEL_DYNAMIC = V_MODEL_DYNAMIC;\nexports.V_MODEL_RADIO = V_MODEL_RADIO;\nexports.V_MODEL_SELECT = V_MODEL_SELECT;\nexports.V_MODEL_TEXT = V_MODEL_TEXT;\nexports.V_ON_WITH_KEYS = V_ON_WITH_KEYS;\nexports.V_ON_WITH_MODIFIERS = V_ON_WITH_MODIFIERS;\nexports.V_SHOW = V_SHOW;\nexports.compile = compile;\nexports.createDOMCompilerError = createDOMCompilerError;\nexports.parse = parse;\nexports.parserOptions = parserOptions;\nexports.transformStyle = transformStyle;\nObject.keys(compilerCore).forEach(function (k) {\n  if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = compilerCore[k];\n});\n","'use strict'\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./dist/compiler-dom.cjs.prod.js')\n} else {\n  module.exports = require('./dist/compiler-dom.cjs.js')\n}\n","/**\n* @vue/reactivity v3.5.18\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar shared = require('@vue/shared');\n\nlet activeEffectScope;\nclass EffectScope {\n  constructor(detached = false) {\n    this.detached = detached;\n    /**\n     * @internal\n     */\n    this._active = true;\n    /**\n     * @internal track `on` calls, allow `on` call multiple times\n     */\n    this._on = 0;\n    /**\n     * @internal\n     */\n    this.effects = [];\n    /**\n     * @internal\n     */\n    this.cleanups = [];\n    this._isPaused = false;\n    this.parent = activeEffectScope;\n    if (!detached && activeEffectScope) {\n      this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n        this\n      ) - 1;\n    }\n  }\n  get active() {\n    return this._active;\n  }\n  pause() {\n    if (this._active) {\n      this._isPaused = true;\n      let i, l;\n      if (this.scopes) {\n        for (i = 0, l = this.scopes.length; i < l; i++) {\n          this.scopes[i].pause();\n        }\n      }\n      for (i = 0, l = this.effects.length; i < l; i++) {\n        this.effects[i].pause();\n      }\n    }\n  }\n  /**\n   * Resumes the effect scope, including all child scopes and effects.\n   */\n  resume() {\n    if (this._active) {\n      if (this._isPaused) {\n        this._isPaused = false;\n        let i, l;\n        if (this.scopes) {\n          for (i = 0, l = this.scopes.length; i < l; i++) {\n            this.scopes[i].resume();\n          }\n        }\n        for (i = 0, l = this.effects.length; i < l; i++) {\n          this.effects[i].resume();\n        }\n      }\n    }\n  }\n  run(fn) {\n    if (this._active) {\n      const currentEffectScope = activeEffectScope;\n      try {\n        activeEffectScope = this;\n        return fn();\n      } finally {\n        activeEffectScope = currentEffectScope;\n      }\n    }\n  }\n  /**\n   * This should only be called on non-detached scopes\n   * @internal\n   */\n  on() {\n    if (++this._on === 1) {\n      this.prevScope = activeEffectScope;\n      activeEffectScope = this;\n    }\n  }\n  /**\n   * This should only be called on non-detached scopes\n   * @internal\n   */\n  off() {\n    if (this._on > 0 && --this._on === 0) {\n      activeEffectScope = this.prevScope;\n      this.prevScope = void 0;\n    }\n  }\n  stop(fromParent) {\n    if (this._active) {\n      this._active = false;\n      let i, l;\n      for (i = 0, l = this.effects.length; i < l; i++) {\n        this.effects[i].stop();\n      }\n      this.effects.length = 0;\n      for (i = 0, l = this.cleanups.length; i < l; i++) {\n        this.cleanups[i]();\n      }\n      this.cleanups.length = 0;\n      if (this.scopes) {\n        for (i = 0, l = this.scopes.length; i < l; i++) {\n          this.scopes[i].stop(true);\n        }\n        this.scopes.length = 0;\n      }\n      if (!this.detached && this.parent && !fromParent) {\n        const last = this.parent.scopes.pop();\n        if (last && last !== this) {\n          this.parent.scopes[this.index] = last;\n          last.index = this.index;\n        }\n      }\n      this.parent = void 0;\n    }\n  }\n}\nfunction effectScope(detached) {\n  return new EffectScope(detached);\n}\nfunction getCurrentScope() {\n  return activeEffectScope;\n}\nfunction onScopeDispose(fn, failSilently = false) {\n  if (activeEffectScope) {\n    activeEffectScope.cleanups.push(fn);\n  }\n}\n\nlet activeSub;\nconst EffectFlags = {\n  \"ACTIVE\": 1,\n  \"1\": \"ACTIVE\",\n  \"RUNNING\": 2,\n  \"2\": \"RUNNING\",\n  \"TRACKING\": 4,\n  \"4\": \"TRACKING\",\n  \"NOTIFIED\": 8,\n  \"8\": \"NOTIFIED\",\n  \"DIRTY\": 16,\n  \"16\": \"DIRTY\",\n  \"ALLOW_RECURSE\": 32,\n  \"32\": \"ALLOW_RECURSE\",\n  \"PAUSED\": 64,\n  \"64\": \"PAUSED\",\n  \"EVALUATED\": 128,\n  \"128\": \"EVALUATED\"\n};\nconst pausedQueueEffects = /* @__PURE__ */ new WeakSet();\nclass ReactiveEffect {\n  constructor(fn) {\n    this.fn = fn;\n    /**\n     * @internal\n     */\n    this.deps = void 0;\n    /**\n     * @internal\n     */\n    this.depsTail = void 0;\n    /**\n     * @internal\n     */\n    this.flags = 1 | 4;\n    /**\n     * @internal\n     */\n    this.next = void 0;\n    /**\n     * @internal\n     */\n    this.cleanup = void 0;\n    this.scheduler = void 0;\n    if (activeEffectScope && activeEffectScope.active) {\n      activeEffectScope.effects.push(this);\n    }\n  }\n  pause() {\n    this.flags |= 64;\n  }\n  resume() {\n    if (this.flags & 64) {\n      this.flags &= -65;\n      if (pausedQueueEffects.has(this)) {\n        pausedQueueEffects.delete(this);\n        this.trigger();\n      }\n    }\n  }\n  /**\n   * @internal\n   */\n  notify() {\n    if (this.flags & 2 && !(this.flags & 32)) {\n      return;\n    }\n    if (!(this.flags & 8)) {\n      batch(this);\n    }\n  }\n  run() {\n    if (!(this.flags & 1)) {\n      return this.fn();\n    }\n    this.flags |= 2;\n    cleanupEffect(this);\n    prepareDeps(this);\n    const prevEffect = activeSub;\n    const prevShouldTrack = shouldTrack;\n    activeSub = this;\n    shouldTrack = true;\n    try {\n      return this.fn();\n    } finally {\n      cleanupDeps(this);\n      activeSub = prevEffect;\n      shouldTrack = prevShouldTrack;\n      this.flags &= -3;\n    }\n  }\n  stop() {\n    if (this.flags & 1) {\n      for (let link = this.deps; link; link = link.nextDep) {\n        removeSub(link);\n      }\n      this.deps = this.depsTail = void 0;\n      cleanupEffect(this);\n      this.onStop && this.onStop();\n      this.flags &= -2;\n    }\n  }\n  trigger() {\n    if (this.flags & 64) {\n      pausedQueueEffects.add(this);\n    } else if (this.scheduler) {\n      this.scheduler();\n    } else {\n      this.runIfDirty();\n    }\n  }\n  /**\n   * @internal\n   */\n  runIfDirty() {\n    if (isDirty(this)) {\n      this.run();\n    }\n  }\n  get dirty() {\n    return isDirty(this);\n  }\n}\nlet batchDepth = 0;\nlet batchedSub;\nlet batchedComputed;\nfunction batch(sub, isComputed = false) {\n  sub.flags |= 8;\n  if (isComputed) {\n    sub.next = batchedComputed;\n    batchedComputed = sub;\n    return;\n  }\n  sub.next = batchedSub;\n  batchedSub = sub;\n}\nfunction startBatch() {\n  batchDepth++;\n}\nfunction endBatch() {\n  if (--batchDepth > 0) {\n    return;\n  }\n  if (batchedComputed) {\n    let e = batchedComputed;\n    batchedComputed = void 0;\n    while (e) {\n      const next = e.next;\n      e.next = void 0;\n      e.flags &= -9;\n      e = next;\n    }\n  }\n  let error;\n  while (batchedSub) {\n    let e = batchedSub;\n    batchedSub = void 0;\n    while (e) {\n      const next = e.next;\n      e.next = void 0;\n      e.flags &= -9;\n      if (e.flags & 1) {\n        try {\n          ;\n          e.trigger();\n        } catch (err) {\n          if (!error) error = err;\n        }\n      }\n      e = next;\n    }\n  }\n  if (error) throw error;\n}\nfunction prepareDeps(sub) {\n  for (let link = sub.deps; link; link = link.nextDep) {\n    link.version = -1;\n    link.prevActiveLink = link.dep.activeLink;\n    link.dep.activeLink = link;\n  }\n}\nfunction cleanupDeps(sub) {\n  let head;\n  let tail = sub.depsTail;\n  let link = tail;\n  while (link) {\n    const prev = link.prevDep;\n    if (link.version === -1) {\n      if (link === tail) tail = prev;\n      removeSub(link);\n      removeDep(link);\n    } else {\n      head = link;\n    }\n    link.dep.activeLink = link.prevActiveLink;\n    link.prevActiveLink = void 0;\n    link = prev;\n  }\n  sub.deps = head;\n  sub.depsTail = tail;\n}\nfunction isDirty(sub) {\n  for (let link = sub.deps; link; link = link.nextDep) {\n    if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) {\n      return true;\n    }\n  }\n  if (sub._dirty) {\n    return true;\n  }\n  return false;\n}\nfunction refreshComputed(computed) {\n  if (computed.flags & 4 && !(computed.flags & 16)) {\n    return;\n  }\n  computed.flags &= -17;\n  if (computed.globalVersion === globalVersion) {\n    return;\n  }\n  computed.globalVersion = globalVersion;\n  if (!computed.isSSR && computed.flags & 128 && (!computed.deps && !computed._dirty || !isDirty(computed))) {\n    return;\n  }\n  computed.flags |= 2;\n  const dep = computed.dep;\n  const prevSub = activeSub;\n  const prevShouldTrack = shouldTrack;\n  activeSub = computed;\n  shouldTrack = true;\n  try {\n    prepareDeps(computed);\n    const value = computed.fn(computed._value);\n    if (dep.version === 0 || shared.hasChanged(value, computed._value)) {\n      computed.flags |= 128;\n      computed._value = value;\n      dep.version++;\n    }\n  } catch (err) {\n    dep.version++;\n    throw err;\n  } finally {\n    activeSub = prevSub;\n    shouldTrack = prevShouldTrack;\n    cleanupDeps(computed);\n    computed.flags &= -3;\n  }\n}\nfunction removeSub(link, soft = false) {\n  const { dep, prevSub, nextSub } = link;\n  if (prevSub) {\n    prevSub.nextSub = nextSub;\n    link.prevSub = void 0;\n  }\n  if (nextSub) {\n    nextSub.prevSub = prevSub;\n    link.nextSub = void 0;\n  }\n  if (dep.subs === link) {\n    dep.subs = prevSub;\n    if (!prevSub && dep.computed) {\n      dep.computed.flags &= -5;\n      for (let l = dep.computed.deps; l; l = l.nextDep) {\n        removeSub(l, true);\n      }\n    }\n  }\n  if (!soft && !--dep.sc && dep.map) {\n    dep.map.delete(dep.key);\n  }\n}\nfunction removeDep(link) {\n  const { prevDep, nextDep } = link;\n  if (prevDep) {\n    prevDep.nextDep = nextDep;\n    link.prevDep = void 0;\n  }\n  if (nextDep) {\n    nextDep.prevDep = prevDep;\n    link.nextDep = void 0;\n  }\n}\nfunction effect(fn, options) {\n  if (fn.effect instanceof ReactiveEffect) {\n    fn = fn.effect.fn;\n  }\n  const e = new ReactiveEffect(fn);\n  if (options) {\n    shared.extend(e, options);\n  }\n  try {\n    e.run();\n  } catch (err) {\n    e.stop();\n    throw err;\n  }\n  const runner = e.run.bind(e);\n  runner.effect = e;\n  return runner;\n}\nfunction stop(runner) {\n  runner.effect.stop();\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n  trackStack.push(shouldTrack);\n  shouldTrack = false;\n}\nfunction enableTracking() {\n  trackStack.push(shouldTrack);\n  shouldTrack = true;\n}\nfunction resetTracking() {\n  const last = trackStack.pop();\n  shouldTrack = last === void 0 ? true : last;\n}\nfunction onEffectCleanup(fn, failSilently = false) {\n  if (activeSub instanceof ReactiveEffect) {\n    activeSub.cleanup = fn;\n  }\n}\nfunction cleanupEffect(e) {\n  const { cleanup } = e;\n  e.cleanup = void 0;\n  if (cleanup) {\n    const prevSub = activeSub;\n    activeSub = void 0;\n    try {\n      cleanup();\n    } finally {\n      activeSub = prevSub;\n    }\n  }\n}\n\nlet globalVersion = 0;\nclass Link {\n  constructor(sub, dep) {\n    this.sub = sub;\n    this.dep = dep;\n    this.version = dep.version;\n    this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0;\n  }\n}\nclass Dep {\n  // TODO isolatedDeclarations \"__v_skip\"\n  constructor(computed) {\n    this.computed = computed;\n    this.version = 0;\n    /**\n     * Link between this dep and the current active effect\n     */\n    this.activeLink = void 0;\n    /**\n     * Doubly linked list representing the subscribing effects (tail)\n     */\n    this.subs = void 0;\n    /**\n     * For object property deps cleanup\n     */\n    this.map = void 0;\n    this.key = void 0;\n    /**\n     * Subscriber counter\n     */\n    this.sc = 0;\n    /**\n     * @internal\n     */\n    this.__v_skip = true;\n  }\n  track(debugInfo) {\n    if (!activeSub || !shouldTrack || activeSub === this.computed) {\n      return;\n    }\n    let link = this.activeLink;\n    if (link === void 0 || link.sub !== activeSub) {\n      link = this.activeLink = new Link(activeSub, this);\n      if (!activeSub.deps) {\n        activeSub.deps = activeSub.depsTail = link;\n      } else {\n        link.prevDep = activeSub.depsTail;\n        activeSub.depsTail.nextDep = link;\n        activeSub.depsTail = link;\n      }\n      addSub(link);\n    } else if (link.version === -1) {\n      link.version = this.version;\n      if (link.nextDep) {\n        const next = link.nextDep;\n        next.prevDep = link.prevDep;\n        if (link.prevDep) {\n          link.prevDep.nextDep = next;\n        }\n        link.prevDep = activeSub.depsTail;\n        link.nextDep = void 0;\n        activeSub.depsTail.nextDep = link;\n        activeSub.depsTail = link;\n        if (activeSub.deps === link) {\n          activeSub.deps = next;\n        }\n      }\n    }\n    return link;\n  }\n  trigger(debugInfo) {\n    this.version++;\n    globalVersion++;\n    this.notify(debugInfo);\n  }\n  notify(debugInfo) {\n    startBatch();\n    try {\n      if (false) ;\n      for (let link = this.subs; link; link = link.prevSub) {\n        if (link.sub.notify()) {\n          ;\n          link.sub.dep.notify();\n        }\n      }\n    } finally {\n      endBatch();\n    }\n  }\n}\nfunction addSub(link) {\n  link.dep.sc++;\n  if (link.sub.flags & 4) {\n    const computed = link.dep.computed;\n    if (computed && !link.dep.subs) {\n      computed.flags |= 4 | 16;\n      for (let l = computed.deps; l; l = l.nextDep) {\n        addSub(l);\n      }\n    }\n    const currentTail = link.dep.subs;\n    if (currentTail !== link) {\n      link.prevSub = currentTail;\n      if (currentTail) currentTail.nextSub = link;\n    }\n    link.dep.subs = link;\n  }\n}\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = Symbol(\n  \"\"\n);\nconst MAP_KEY_ITERATE_KEY = Symbol(\n  \"\"\n);\nconst ARRAY_ITERATE_KEY = Symbol(\n  \"\"\n);\nfunction track(target, type, key) {\n  if (shouldTrack && activeSub) {\n    let depsMap = targetMap.get(target);\n    if (!depsMap) {\n      targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n    }\n    let dep = depsMap.get(key);\n    if (!dep) {\n      depsMap.set(key, dep = new Dep());\n      dep.map = depsMap;\n      dep.key = key;\n    }\n    {\n      dep.track();\n    }\n  }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n  const depsMap = targetMap.get(target);\n  if (!depsMap) {\n    globalVersion++;\n    return;\n  }\n  const run = (dep) => {\n    if (dep) {\n      {\n        dep.trigger();\n      }\n    }\n  };\n  startBatch();\n  if (type === \"clear\") {\n    depsMap.forEach(run);\n  } else {\n    const targetIsArray = shared.isArray(target);\n    const isArrayIndex = targetIsArray && shared.isIntegerKey(key);\n    if (targetIsArray && key === \"length\") {\n      const newLength = Number(newValue);\n      depsMap.forEach((dep, key2) => {\n        if (key2 === \"length\" || key2 === ARRAY_ITERATE_KEY || !shared.isSymbol(key2) && key2 >= newLength) {\n          run(dep);\n        }\n      });\n    } else {\n      if (key !== void 0 || depsMap.has(void 0)) {\n        run(depsMap.get(key));\n      }\n      if (isArrayIndex) {\n        run(depsMap.get(ARRAY_ITERATE_KEY));\n      }\n      switch (type) {\n        case \"add\":\n          if (!targetIsArray) {\n            run(depsMap.get(ITERATE_KEY));\n            if (shared.isMap(target)) {\n              run(depsMap.get(MAP_KEY_ITERATE_KEY));\n            }\n          } else if (isArrayIndex) {\n            run(depsMap.get(\"length\"));\n          }\n          break;\n        case \"delete\":\n          if (!targetIsArray) {\n            run(depsMap.get(ITERATE_KEY));\n            if (shared.isMap(target)) {\n              run(depsMap.get(MAP_KEY_ITERATE_KEY));\n            }\n          }\n          break;\n        case \"set\":\n          if (shared.isMap(target)) {\n            run(depsMap.get(ITERATE_KEY));\n          }\n          break;\n      }\n    }\n  }\n  endBatch();\n}\nfunction getDepFromReactive(object, key) {\n  const depMap = targetMap.get(object);\n  return depMap && depMap.get(key);\n}\n\nfunction reactiveReadArray(array) {\n  const raw = toRaw(array);\n  if (raw === array) return raw;\n  track(raw, \"iterate\", ARRAY_ITERATE_KEY);\n  return isShallow(array) ? raw : raw.map(toReactive);\n}\nfunction shallowReadArray(arr) {\n  track(arr = toRaw(arr), \"iterate\", ARRAY_ITERATE_KEY);\n  return arr;\n}\nconst arrayInstrumentations = {\n  __proto__: null,\n  [Symbol.iterator]() {\n    return iterator(this, Symbol.iterator, toReactive);\n  },\n  concat(...args) {\n    return reactiveReadArray(this).concat(\n      ...args.map((x) => shared.isArray(x) ? reactiveReadArray(x) : x)\n    );\n  },\n  entries() {\n    return iterator(this, \"entries\", (value) => {\n      value[1] = toReactive(value[1]);\n      return value;\n    });\n  },\n  every(fn, thisArg) {\n    return apply(this, \"every\", fn, thisArg, void 0, arguments);\n  },\n  filter(fn, thisArg) {\n    return apply(this, \"filter\", fn, thisArg, (v) => v.map(toReactive), arguments);\n  },\n  find(fn, thisArg) {\n    return apply(this, \"find\", fn, thisArg, toReactive, arguments);\n  },\n  findIndex(fn, thisArg) {\n    return apply(this, \"findIndex\", fn, thisArg, void 0, arguments);\n  },\n  findLast(fn, thisArg) {\n    return apply(this, \"findLast\", fn, thisArg, toReactive, arguments);\n  },\n  findLastIndex(fn, thisArg) {\n    return apply(this, \"findLastIndex\", fn, thisArg, void 0, arguments);\n  },\n  // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement\n  forEach(fn, thisArg) {\n    return apply(this, \"forEach\", fn, thisArg, void 0, arguments);\n  },\n  includes(...args) {\n    return searchProxy(this, \"includes\", args);\n  },\n  indexOf(...args) {\n    return searchProxy(this, \"indexOf\", args);\n  },\n  join(separator) {\n    return reactiveReadArray(this).join(separator);\n  },\n  // keys() iterator only reads `length`, no optimisation required\n  lastIndexOf(...args) {\n    return searchProxy(this, \"lastIndexOf\", args);\n  },\n  map(fn, thisArg) {\n    return apply(this, \"map\", fn, thisArg, void 0, arguments);\n  },\n  pop() {\n    return noTracking(this, \"pop\");\n  },\n  push(...args) {\n    return noTracking(this, \"push\", args);\n  },\n  reduce(fn, ...args) {\n    return reduce(this, \"reduce\", fn, args);\n  },\n  reduceRight(fn, ...args) {\n    return reduce(this, \"reduceRight\", fn, args);\n  },\n  shift() {\n    return noTracking(this, \"shift\");\n  },\n  // slice could use ARRAY_ITERATE but also seems to beg for range tracking\n  some(fn, thisArg) {\n    return apply(this, \"some\", fn, thisArg, void 0, arguments);\n  },\n  splice(...args) {\n    return noTracking(this, \"splice\", args);\n  },\n  toReversed() {\n    return reactiveReadArray(this).toReversed();\n  },\n  toSorted(comparer) {\n    return reactiveReadArray(this).toSorted(comparer);\n  },\n  toSpliced(...args) {\n    return reactiveReadArray(this).toSpliced(...args);\n  },\n  unshift(...args) {\n    return noTracking(this, \"unshift\", args);\n  },\n  values() {\n    return iterator(this, \"values\", toReactive);\n  }\n};\nfunction iterator(self, method, wrapValue) {\n  const arr = shallowReadArray(self);\n  const iter = arr[method]();\n  if (arr !== self && !isShallow(self)) {\n    iter._next = iter.next;\n    iter.next = () => {\n      const result = iter._next();\n      if (result.value) {\n        result.value = wrapValue(result.value);\n      }\n      return result;\n    };\n  }\n  return iter;\n}\nconst arrayProto = Array.prototype;\nfunction apply(self, method, fn, thisArg, wrappedRetFn, args) {\n  const arr = shallowReadArray(self);\n  const needsWrap = arr !== self && !isShallow(self);\n  const methodFn = arr[method];\n  if (methodFn !== arrayProto[method]) {\n    const result2 = methodFn.apply(self, args);\n    return needsWrap ? toReactive(result2) : result2;\n  }\n  let wrappedFn = fn;\n  if (arr !== self) {\n    if (needsWrap) {\n      wrappedFn = function(item, index) {\n        return fn.call(this, toReactive(item), index, self);\n      };\n    } else if (fn.length > 2) {\n      wrappedFn = function(item, index) {\n        return fn.call(this, item, index, self);\n      };\n    }\n  }\n  const result = methodFn.call(arr, wrappedFn, thisArg);\n  return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result;\n}\nfunction reduce(self, method, fn, args) {\n  const arr = shallowReadArray(self);\n  let wrappedFn = fn;\n  if (arr !== self) {\n    if (!isShallow(self)) {\n      wrappedFn = function(acc, item, index) {\n        return fn.call(this, acc, toReactive(item), index, self);\n      };\n    } else if (fn.length > 3) {\n      wrappedFn = function(acc, item, index) {\n        return fn.call(this, acc, item, index, self);\n      };\n    }\n  }\n  return arr[method](wrappedFn, ...args);\n}\nfunction searchProxy(self, method, args) {\n  const arr = toRaw(self);\n  track(arr, \"iterate\", ARRAY_ITERATE_KEY);\n  const res = arr[method](...args);\n  if ((res === -1 || res === false) && isProxy(args[0])) {\n    args[0] = toRaw(args[0]);\n    return arr[method](...args);\n  }\n  return res;\n}\nfunction noTracking(self, method, args = []) {\n  pauseTracking();\n  startBatch();\n  const res = toRaw(self)[method].apply(self, args);\n  endBatch();\n  resetTracking();\n  return res;\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ shared.makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n  /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(shared.isSymbol)\n);\nfunction hasOwnProperty(key) {\n  if (!shared.isSymbol(key)) key = String(key);\n  const obj = toRaw(this);\n  track(obj, \"has\", key);\n  return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n  constructor(_isReadonly = false, _isShallow = false) {\n    this._isReadonly = _isReadonly;\n    this._isShallow = _isShallow;\n  }\n  get(target, key, receiver) {\n    if (key === \"__v_skip\") return target[\"__v_skip\"];\n    const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;\n    if (key === \"__v_isReactive\") {\n      return !isReadonly2;\n    } else if (key === \"__v_isReadonly\") {\n      return isReadonly2;\n    } else if (key === \"__v_isShallow\") {\n      return isShallow2;\n    } else if (key === \"__v_raw\") {\n      if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n      // this means the receiver is a user proxy of the reactive proxy\n      Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n        return target;\n      }\n      return;\n    }\n    const targetIsArray = shared.isArray(target);\n    if (!isReadonly2) {\n      let fn;\n      if (targetIsArray && (fn = arrayInstrumentations[key])) {\n        return fn;\n      }\n      if (key === \"hasOwnProperty\") {\n        return hasOwnProperty;\n      }\n    }\n    const res = Reflect.get(\n      target,\n      key,\n      // if this is a proxy wrapping a ref, return methods using the raw ref\n      // as receiver so that we don't have to call `toRaw` on the ref in all\n      // its class methods\n      isRef(target) ? target : receiver\n    );\n    if (shared.isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n      return res;\n    }\n    if (!isReadonly2) {\n      track(target, \"get\", key);\n    }\n    if (isShallow2) {\n      return res;\n    }\n    if (isRef(res)) {\n      return targetIsArray && shared.isIntegerKey(key) ? res : res.value;\n    }\n    if (shared.isObject(res)) {\n      return isReadonly2 ? readonly(res) : reactive(res);\n    }\n    return res;\n  }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n  constructor(isShallow2 = false) {\n    super(false, isShallow2);\n  }\n  set(target, key, value, receiver) {\n    let oldValue = target[key];\n    if (!this._isShallow) {\n      const isOldValueReadonly = isReadonly(oldValue);\n      if (!isShallow(value) && !isReadonly(value)) {\n        oldValue = toRaw(oldValue);\n        value = toRaw(value);\n      }\n      if (!shared.isArray(target) && isRef(oldValue) && !isRef(value)) {\n        if (isOldValueReadonly) {\n          return false;\n        } else {\n          oldValue.value = value;\n          return true;\n        }\n      }\n    }\n    const hadKey = shared.isArray(target) && shared.isIntegerKey(key) ? Number(key) < target.length : shared.hasOwn(target, key);\n    const result = Reflect.set(\n      target,\n      key,\n      value,\n      isRef(target) ? target : receiver\n    );\n    if (target === toRaw(receiver)) {\n      if (!hadKey) {\n        trigger(target, \"add\", key, value);\n      } else if (shared.hasChanged(value, oldValue)) {\n        trigger(target, \"set\", key, value);\n      }\n    }\n    return result;\n  }\n  deleteProperty(target, key) {\n    const hadKey = shared.hasOwn(target, key);\n    target[key];\n    const result = Reflect.deleteProperty(target, key);\n    if (result && hadKey) {\n      trigger(target, \"delete\", key, void 0);\n    }\n    return result;\n  }\n  has(target, key) {\n    const result = Reflect.has(target, key);\n    if (!shared.isSymbol(key) || !builtInSymbols.has(key)) {\n      track(target, \"has\", key);\n    }\n    return result;\n  }\n  ownKeys(target) {\n    track(\n      target,\n      \"iterate\",\n      shared.isArray(target) ? \"length\" : ITERATE_KEY\n    );\n    return Reflect.ownKeys(target);\n  }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n  constructor(isShallow2 = false) {\n    super(true, isShallow2);\n  }\n  set(target, key) {\n    return true;\n  }\n  deleteProperty(target, key) {\n    return true;\n  }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction createIterableMethod(method, isReadonly2, isShallow2) {\n  return function(...args) {\n    const target = this[\"__v_raw\"];\n    const rawTarget = toRaw(target);\n    const targetIsMap = shared.isMap(rawTarget);\n    const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n    const isKeyOnly = method === \"keys\" && targetIsMap;\n    const innerIterator = target[method](...args);\n    const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;\n    !isReadonly2 && track(\n      rawTarget,\n      \"iterate\",\n      isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n    );\n    return {\n      // iterator protocol\n      next() {\n        const { value, done } = innerIterator.next();\n        return done ? { value, done } : {\n          value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n          done\n        };\n      },\n      // iterable protocol\n      [Symbol.iterator]() {\n        return this;\n      }\n    };\n  };\n}\nfunction createReadonlyMethod(type) {\n  return function(...args) {\n    return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n  };\n}\nfunction createInstrumentations(readonly, shallow) {\n  const instrumentations = {\n    get(key) {\n      const target = this[\"__v_raw\"];\n      const rawTarget = toRaw(target);\n      const rawKey = toRaw(key);\n      if (!readonly) {\n        if (shared.hasChanged(key, rawKey)) {\n          track(rawTarget, \"get\", key);\n        }\n        track(rawTarget, \"get\", rawKey);\n      }\n      const { has } = getProto(rawTarget);\n      const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;\n      if (has.call(rawTarget, key)) {\n        return wrap(target.get(key));\n      } else if (has.call(rawTarget, rawKey)) {\n        return wrap(target.get(rawKey));\n      } else if (target !== rawTarget) {\n        target.get(key);\n      }\n    },\n    get size() {\n      const target = this[\"__v_raw\"];\n      !readonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n      return Reflect.get(target, \"size\", target);\n    },\n    has(key) {\n      const target = this[\"__v_raw\"];\n      const rawTarget = toRaw(target);\n      const rawKey = toRaw(key);\n      if (!readonly) {\n        if (shared.hasChanged(key, rawKey)) {\n          track(rawTarget, \"has\", key);\n        }\n        track(rawTarget, \"has\", rawKey);\n      }\n      return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n    },\n    forEach(callback, thisArg) {\n      const observed = this;\n      const target = observed[\"__v_raw\"];\n      const rawTarget = toRaw(target);\n      const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;\n      !readonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n      return target.forEach((value, key) => {\n        return callback.call(thisArg, wrap(value), wrap(key), observed);\n      });\n    }\n  };\n  shared.extend(\n    instrumentations,\n    readonly ? {\n      add: createReadonlyMethod(\"add\"),\n      set: createReadonlyMethod(\"set\"),\n      delete: createReadonlyMethod(\"delete\"),\n      clear: createReadonlyMethod(\"clear\")\n    } : {\n      add(value) {\n        if (!shallow && !isShallow(value) && !isReadonly(value)) {\n          value = toRaw(value);\n        }\n        const target = toRaw(this);\n        const proto = getProto(target);\n        const hadKey = proto.has.call(target, value);\n        if (!hadKey) {\n          target.add(value);\n          trigger(target, \"add\", value, value);\n        }\n        return this;\n      },\n      set(key, value) {\n        if (!shallow && !isShallow(value) && !isReadonly(value)) {\n          value = toRaw(value);\n        }\n        const target = toRaw(this);\n        const { has, get } = getProto(target);\n        let hadKey = has.call(target, key);\n        if (!hadKey) {\n          key = toRaw(key);\n          hadKey = has.call(target, key);\n        }\n        const oldValue = get.call(target, key);\n        target.set(key, value);\n        if (!hadKey) {\n          trigger(target, \"add\", key, value);\n        } else if (shared.hasChanged(value, oldValue)) {\n          trigger(target, \"set\", key, value);\n        }\n        return this;\n      },\n      delete(key) {\n        const target = toRaw(this);\n        const { has, get } = getProto(target);\n        let hadKey = has.call(target, key);\n        if (!hadKey) {\n          key = toRaw(key);\n          hadKey = has.call(target, key);\n        }\n        get ? get.call(target, key) : void 0;\n        const result = target.delete(key);\n        if (hadKey) {\n          trigger(target, \"delete\", key, void 0);\n        }\n        return result;\n      },\n      clear() {\n        const target = toRaw(this);\n        const hadItems = target.size !== 0;\n        const result = target.clear();\n        if (hadItems) {\n          trigger(\n            target,\n            \"clear\",\n            void 0,\n            void 0);\n        }\n        return result;\n      }\n    }\n  );\n  const iteratorMethods = [\n    \"keys\",\n    \"values\",\n    \"entries\",\n    Symbol.iterator\n  ];\n  iteratorMethods.forEach((method) => {\n    instrumentations[method] = createIterableMethod(method, readonly, shallow);\n  });\n  return instrumentations;\n}\nfunction createInstrumentationGetter(isReadonly2, shallow) {\n  const instrumentations = createInstrumentations(isReadonly2, shallow);\n  return (target, key, receiver) => {\n    if (key === \"__v_isReactive\") {\n      return !isReadonly2;\n    } else if (key === \"__v_isReadonly\") {\n      return isReadonly2;\n    } else if (key === \"__v_raw\") {\n      return target;\n    }\n    return Reflect.get(\n      shared.hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n      key,\n      receiver\n    );\n  };\n}\nconst mutableCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n  switch (rawType) {\n    case \"Object\":\n    case \"Array\":\n      return 1 /* COMMON */;\n    case \"Map\":\n    case \"Set\":\n    case \"WeakMap\":\n    case \"WeakSet\":\n      return 2 /* COLLECTION */;\n    default:\n      return 0 /* INVALID */;\n  }\n}\nfunction getTargetType(value) {\n  return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(shared.toRawType(value));\n}\nfunction reactive(target) {\n  if (isReadonly(target)) {\n    return target;\n  }\n  return createReactiveObject(\n    target,\n    false,\n    mutableHandlers,\n    mutableCollectionHandlers,\n    reactiveMap\n  );\n}\nfunction shallowReactive(target) {\n  return createReactiveObject(\n    target,\n    false,\n    shallowReactiveHandlers,\n    shallowCollectionHandlers,\n    shallowReactiveMap\n  );\n}\nfunction readonly(target) {\n  return createReactiveObject(\n    target,\n    true,\n    readonlyHandlers,\n    readonlyCollectionHandlers,\n    readonlyMap\n  );\n}\nfunction shallowReadonly(target) {\n  return createReactiveObject(\n    target,\n    true,\n    shallowReadonlyHandlers,\n    shallowReadonlyCollectionHandlers,\n    shallowReadonlyMap\n  );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n  if (!shared.isObject(target)) {\n    return target;\n  }\n  if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n    return target;\n  }\n  const targetType = getTargetType(target);\n  if (targetType === 0 /* INVALID */) {\n    return target;\n  }\n  const existingProxy = proxyMap.get(target);\n  if (existingProxy) {\n    return existingProxy;\n  }\n  const proxy = new Proxy(\n    target,\n    targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n  );\n  proxyMap.set(target, proxy);\n  return proxy;\n}\nfunction isReactive(value) {\n  if (isReadonly(value)) {\n    return isReactive(value[\"__v_raw\"]);\n  }\n  return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n  return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n  return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n  return value ? !!value[\"__v_raw\"] : false;\n}\nfunction toRaw(observed) {\n  const raw = observed && observed[\"__v_raw\"];\n  return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n  if (!shared.hasOwn(value, \"__v_skip\") && Object.isExtensible(value)) {\n    shared.def(value, \"__v_skip\", true);\n  }\n  return value;\n}\nconst toReactive = (value) => shared.isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => shared.isObject(value) ? readonly(value) : value;\n\nfunction isRef(r) {\n  return r ? r[\"__v_isRef\"] === true : false;\n}\nfunction ref(value) {\n  return createRef(value, false);\n}\nfunction shallowRef(value) {\n  return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n  if (isRef(rawValue)) {\n    return rawValue;\n  }\n  return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n  constructor(value, isShallow2) {\n    this.dep = new Dep();\n    this[\"__v_isRef\"] = true;\n    this[\"__v_isShallow\"] = false;\n    this._rawValue = isShallow2 ? value : toRaw(value);\n    this._value = isShallow2 ? value : toReactive(value);\n    this[\"__v_isShallow\"] = isShallow2;\n  }\n  get value() {\n    {\n      this.dep.track();\n    }\n    return this._value;\n  }\n  set value(newValue) {\n    const oldValue = this._rawValue;\n    const useDirectValue = this[\"__v_isShallow\"] || isShallow(newValue) || isReadonly(newValue);\n    newValue = useDirectValue ? newValue : toRaw(newValue);\n    if (shared.hasChanged(newValue, oldValue)) {\n      this._rawValue = newValue;\n      this._value = useDirectValue ? newValue : toReactive(newValue);\n      {\n        this.dep.trigger();\n      }\n    }\n  }\n}\nfunction triggerRef(ref2) {\n  if (ref2.dep) {\n    {\n      ref2.dep.trigger();\n    }\n  }\n}\nfunction unref(ref2) {\n  return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n  return shared.isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n  get: (target, key, receiver) => key === \"__v_raw\" ? target : unref(Reflect.get(target, key, receiver)),\n  set: (target, key, value, receiver) => {\n    const oldValue = target[key];\n    if (isRef(oldValue) && !isRef(value)) {\n      oldValue.value = value;\n      return true;\n    } else {\n      return Reflect.set(target, key, value, receiver);\n    }\n  }\n};\nfunction proxyRefs(objectWithRefs) {\n  return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n  constructor(factory) {\n    this[\"__v_isRef\"] = true;\n    this._value = void 0;\n    const dep = this.dep = new Dep();\n    const { get, set } = factory(dep.track.bind(dep), dep.trigger.bind(dep));\n    this._get = get;\n    this._set = set;\n  }\n  get value() {\n    return this._value = this._get();\n  }\n  set value(newVal) {\n    this._set(newVal);\n  }\n}\nfunction customRef(factory) {\n  return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n  const ret = shared.isArray(object) ? new Array(object.length) : {};\n  for (const key in object) {\n    ret[key] = propertyToRef(object, key);\n  }\n  return ret;\n}\nclass ObjectRefImpl {\n  constructor(_object, _key, _defaultValue) {\n    this._object = _object;\n    this._key = _key;\n    this._defaultValue = _defaultValue;\n    this[\"__v_isRef\"] = true;\n    this._value = void 0;\n  }\n  get value() {\n    const val = this._object[this._key];\n    return this._value = val === void 0 ? this._defaultValue : val;\n  }\n  set value(newVal) {\n    this._object[this._key] = newVal;\n  }\n  get dep() {\n    return getDepFromReactive(toRaw(this._object), this._key);\n  }\n}\nclass GetterRefImpl {\n  constructor(_getter) {\n    this._getter = _getter;\n    this[\"__v_isRef\"] = true;\n    this[\"__v_isReadonly\"] = true;\n    this._value = void 0;\n  }\n  get value() {\n    return this._value = this._getter();\n  }\n}\nfunction toRef(source, key, defaultValue) {\n  if (isRef(source)) {\n    return source;\n  } else if (shared.isFunction(source)) {\n    return new GetterRefImpl(source);\n  } else if (shared.isObject(source) && arguments.length > 1) {\n    return propertyToRef(source, key, defaultValue);\n  } else {\n    return ref(source);\n  }\n}\nfunction propertyToRef(source, key, defaultValue) {\n  const val = source[key];\n  return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);\n}\n\nclass ComputedRefImpl {\n  constructor(fn, setter, isSSR) {\n    this.fn = fn;\n    this.setter = setter;\n    /**\n     * @internal\n     */\n    this._value = void 0;\n    /**\n     * @internal\n     */\n    this.dep = new Dep(this);\n    /**\n     * @internal\n     */\n    this.__v_isRef = true;\n    // TODO isolatedDeclarations \"__v_isReadonly\"\n    // A computed is also a subscriber that tracks other deps\n    /**\n     * @internal\n     */\n    this.deps = void 0;\n    /**\n     * @internal\n     */\n    this.depsTail = void 0;\n    /**\n     * @internal\n     */\n    this.flags = 16;\n    /**\n     * @internal\n     */\n    this.globalVersion = globalVersion - 1;\n    /**\n     * @internal\n     */\n    this.next = void 0;\n    // for backwards compat\n    this.effect = this;\n    this[\"__v_isReadonly\"] = !setter;\n    this.isSSR = isSSR;\n  }\n  /**\n   * @internal\n   */\n  notify() {\n    this.flags |= 16;\n    if (!(this.flags & 8) && // avoid infinite self recursion\n    activeSub !== this) {\n      batch(this, true);\n      return true;\n    }\n  }\n  get value() {\n    const link = this.dep.track();\n    refreshComputed(this);\n    if (link) {\n      link.version = this.dep.version;\n    }\n    return this._value;\n  }\n  set value(newValue) {\n    if (this.setter) {\n      this.setter(newValue);\n    }\n  }\n}\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n  let getter;\n  let setter;\n  if (shared.isFunction(getterOrOptions)) {\n    getter = getterOrOptions;\n  } else {\n    getter = getterOrOptions.get;\n    setter = getterOrOptions.set;\n  }\n  const cRef = new ComputedRefImpl(getter, setter, isSSR);\n  return cRef;\n}\n\nconst TrackOpTypes = {\n  \"GET\": \"get\",\n  \"HAS\": \"has\",\n  \"ITERATE\": \"iterate\"\n};\nconst TriggerOpTypes = {\n  \"SET\": \"set\",\n  \"ADD\": \"add\",\n  \"DELETE\": \"delete\",\n  \"CLEAR\": \"clear\"\n};\nconst ReactiveFlags = {\n  \"SKIP\": \"__v_skip\",\n  \"IS_REACTIVE\": \"__v_isReactive\",\n  \"IS_READONLY\": \"__v_isReadonly\",\n  \"IS_SHALLOW\": \"__v_isShallow\",\n  \"RAW\": \"__v_raw\",\n  \"IS_REF\": \"__v_isRef\"\n};\n\nconst WatchErrorCodes = {\n  \"WATCH_GETTER\": 2,\n  \"2\": \"WATCH_GETTER\",\n  \"WATCH_CALLBACK\": 3,\n  \"3\": \"WATCH_CALLBACK\",\n  \"WATCH_CLEANUP\": 4,\n  \"4\": \"WATCH_CLEANUP\"\n};\nconst INITIAL_WATCHER_VALUE = {};\nconst cleanupMap = /* @__PURE__ */ new WeakMap();\nlet activeWatcher = void 0;\nfunction getCurrentWatcher() {\n  return activeWatcher;\n}\nfunction onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) {\n  if (owner) {\n    let cleanups = cleanupMap.get(owner);\n    if (!cleanups) cleanupMap.set(owner, cleanups = []);\n    cleanups.push(cleanupFn);\n  }\n}\nfunction watch(source, cb, options = shared.EMPTY_OBJ) {\n  const { immediate, deep, once, scheduler, augmentJob, call } = options;\n  const reactiveGetter = (source2) => {\n    if (deep) return source2;\n    if (isShallow(source2) || deep === false || deep === 0)\n      return traverse(source2, 1);\n    return traverse(source2);\n  };\n  let effect;\n  let getter;\n  let cleanup;\n  let boundCleanup;\n  let forceTrigger = false;\n  let isMultiSource = false;\n  if (isRef(source)) {\n    getter = () => source.value;\n    forceTrigger = isShallow(source);\n  } else if (isReactive(source)) {\n    getter = () => reactiveGetter(source);\n    forceTrigger = true;\n  } else if (shared.isArray(source)) {\n    isMultiSource = true;\n    forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n    getter = () => source.map((s) => {\n      if (isRef(s)) {\n        return s.value;\n      } else if (isReactive(s)) {\n        return reactiveGetter(s);\n      } else if (shared.isFunction(s)) {\n        return call ? call(s, 2) : s();\n      } else ;\n    });\n  } else if (shared.isFunction(source)) {\n    if (cb) {\n      getter = call ? () => call(source, 2) : source;\n    } else {\n      getter = () => {\n        if (cleanup) {\n          pauseTracking();\n          try {\n            cleanup();\n          } finally {\n            resetTracking();\n          }\n        }\n        const currentEffect = activeWatcher;\n        activeWatcher = effect;\n        try {\n          return call ? call(source, 3, [boundCleanup]) : source(boundCleanup);\n        } finally {\n          activeWatcher = currentEffect;\n        }\n      };\n    }\n  } else {\n    getter = shared.NOOP;\n  }\n  if (cb && deep) {\n    const baseGetter = getter;\n    const depth = deep === true ? Infinity : deep;\n    getter = () => traverse(baseGetter(), depth);\n  }\n  const scope = getCurrentScope();\n  const watchHandle = () => {\n    effect.stop();\n    if (scope && scope.active) {\n      shared.remove(scope.effects, effect);\n    }\n  };\n  if (once && cb) {\n    const _cb = cb;\n    cb = (...args) => {\n      _cb(...args);\n      watchHandle();\n    };\n  }\n  let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n  const job = (immediateFirstRun) => {\n    if (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) {\n      return;\n    }\n    if (cb) {\n      const newValue = effect.run();\n      if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => shared.hasChanged(v, oldValue[i])) : shared.hasChanged(newValue, oldValue))) {\n        if (cleanup) {\n          cleanup();\n        }\n        const currentWatcher = activeWatcher;\n        activeWatcher = effect;\n        try {\n          const args = [\n            newValue,\n            // pass undefined as the old value when it's changed for the first time\n            oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n            boundCleanup\n          ];\n          oldValue = newValue;\n          call ? call(cb, 3, args) : (\n            // @ts-expect-error\n            cb(...args)\n          );\n        } finally {\n          activeWatcher = currentWatcher;\n        }\n      }\n    } else {\n      effect.run();\n    }\n  };\n  if (augmentJob) {\n    augmentJob(job);\n  }\n  effect = new ReactiveEffect(getter);\n  effect.scheduler = scheduler ? () => scheduler(job, false) : job;\n  boundCleanup = (fn) => onWatcherCleanup(fn, false, effect);\n  cleanup = effect.onStop = () => {\n    const cleanups = cleanupMap.get(effect);\n    if (cleanups) {\n      if (call) {\n        call(cleanups, 4);\n      } else {\n        for (const cleanup2 of cleanups) cleanup2();\n      }\n      cleanupMap.delete(effect);\n    }\n  };\n  if (cb) {\n    if (immediate) {\n      job(true);\n    } else {\n      oldValue = effect.run();\n    }\n  } else if (scheduler) {\n    scheduler(job.bind(null, true), true);\n  } else {\n    effect.run();\n  }\n  watchHandle.pause = effect.pause.bind(effect);\n  watchHandle.resume = effect.resume.bind(effect);\n  watchHandle.stop = watchHandle;\n  return watchHandle;\n}\nfunction traverse(value, depth = Infinity, seen) {\n  if (depth <= 0 || !shared.isObject(value) || value[\"__v_skip\"]) {\n    return value;\n  }\n  seen = seen || /* @__PURE__ */ new Set();\n  if (seen.has(value)) {\n    return value;\n  }\n  seen.add(value);\n  depth--;\n  if (isRef(value)) {\n    traverse(value.value, depth, seen);\n  } else if (shared.isArray(value)) {\n    for (let i = 0; i < value.length; i++) {\n      traverse(value[i], depth, seen);\n    }\n  } else if (shared.isSet(value) || shared.isMap(value)) {\n    value.forEach((v) => {\n      traverse(v, depth, seen);\n    });\n  } else if (shared.isPlainObject(value)) {\n    for (const key in value) {\n      traverse(value[key], depth, seen);\n    }\n    for (const key of Object.getOwnPropertySymbols(value)) {\n      if (Object.prototype.propertyIsEnumerable.call(value, key)) {\n        traverse(value[key], depth, seen);\n      }\n    }\n  }\n  return value;\n}\n\nexports.ARRAY_ITERATE_KEY = ARRAY_ITERATE_KEY;\nexports.EffectFlags = EffectFlags;\nexports.EffectScope = EffectScope;\nexports.ITERATE_KEY = ITERATE_KEY;\nexports.MAP_KEY_ITERATE_KEY = MAP_KEY_ITERATE_KEY;\nexports.ReactiveEffect = ReactiveEffect;\nexports.ReactiveFlags = ReactiveFlags;\nexports.TrackOpTypes = TrackOpTypes;\nexports.TriggerOpTypes = TriggerOpTypes;\nexports.WatchErrorCodes = WatchErrorCodes;\nexports.computed = computed;\nexports.customRef = customRef;\nexports.effect = effect;\nexports.effectScope = effectScope;\nexports.enableTracking = enableTracking;\nexports.getCurrentScope = getCurrentScope;\nexports.getCurrentWatcher = getCurrentWatcher;\nexports.isProxy = isProxy;\nexports.isReactive = isReactive;\nexports.isReadonly = isReadonly;\nexports.isRef = isRef;\nexports.isShallow = isShallow;\nexports.markRaw = markRaw;\nexports.onEffectCleanup = onEffectCleanup;\nexports.onScopeDispose = onScopeDispose;\nexports.onWatcherCleanup = onWatcherCleanup;\nexports.pauseTracking = pauseTracking;\nexports.proxyRefs = proxyRefs;\nexports.reactive = reactive;\nexports.reactiveReadArray = reactiveReadArray;\nexports.readonly = readonly;\nexports.ref = ref;\nexports.resetTracking = resetTracking;\nexports.shallowReactive = shallowReactive;\nexports.shallowReadArray = shallowReadArray;\nexports.shallowReadonly = shallowReadonly;\nexports.shallowRef = shallowRef;\nexports.stop = stop;\nexports.toRaw = toRaw;\nexports.toReactive = toReactive;\nexports.toReadonly = toReadonly;\nexports.toRef = toRef;\nexports.toRefs = toRefs;\nexports.toValue = toValue;\nexports.track = track;\nexports.traverse = traverse;\nexports.trigger = trigger;\nexports.triggerRef = triggerRef;\nexports.unref = unref;\nexports.watch = watch;\n","'use strict'\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./dist/reactivity.cjs.prod.js')\n} else {\n  module.exports = require('./dist/reactivity.cjs.js')\n}\n","/**\n* @vue/runtime-core v3.5.18\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar reactivity = require('@vue/reactivity');\nvar shared = require('@vue/shared');\n\nfunction pushWarningContext(vnode) {\n}\nfunction popWarningContext() {\n}\nfunction assertNumber(val, type) {\n  return;\n}\n\nconst ErrorCodes = {\n  \"SETUP_FUNCTION\": 0,\n  \"0\": \"SETUP_FUNCTION\",\n  \"RENDER_FUNCTION\": 1,\n  \"1\": \"RENDER_FUNCTION\",\n  \"NATIVE_EVENT_HANDLER\": 5,\n  \"5\": \"NATIVE_EVENT_HANDLER\",\n  \"COMPONENT_EVENT_HANDLER\": 6,\n  \"6\": \"COMPONENT_EVENT_HANDLER\",\n  \"VNODE_HOOK\": 7,\n  \"7\": \"VNODE_HOOK\",\n  \"DIRECTIVE_HOOK\": 8,\n  \"8\": \"DIRECTIVE_HOOK\",\n  \"TRANSITION_HOOK\": 9,\n  \"9\": \"TRANSITION_HOOK\",\n  \"APP_ERROR_HANDLER\": 10,\n  \"10\": \"APP_ERROR_HANDLER\",\n  \"APP_WARN_HANDLER\": 11,\n  \"11\": \"APP_WARN_HANDLER\",\n  \"FUNCTION_REF\": 12,\n  \"12\": \"FUNCTION_REF\",\n  \"ASYNC_COMPONENT_LOADER\": 13,\n  \"13\": \"ASYNC_COMPONENT_LOADER\",\n  \"SCHEDULER\": 14,\n  \"14\": \"SCHEDULER\",\n  \"COMPONENT_UPDATE\": 15,\n  \"15\": \"COMPONENT_UPDATE\",\n  \"APP_UNMOUNT_CLEANUP\": 16,\n  \"16\": \"APP_UNMOUNT_CLEANUP\"\n};\nconst ErrorTypeStrings$1 = {\n  [\"sp\"]: \"serverPrefetch hook\",\n  [\"bc\"]: \"beforeCreate hook\",\n  [\"c\"]: \"created hook\",\n  [\"bm\"]: \"beforeMount hook\",\n  [\"m\"]: \"mounted hook\",\n  [\"bu\"]: \"beforeUpdate hook\",\n  [\"u\"]: \"updated\",\n  [\"bum\"]: \"beforeUnmount hook\",\n  [\"um\"]: \"unmounted hook\",\n  [\"a\"]: \"activated hook\",\n  [\"da\"]: \"deactivated hook\",\n  [\"ec\"]: \"errorCaptured hook\",\n  [\"rtc\"]: \"renderTracked hook\",\n  [\"rtg\"]: \"renderTriggered hook\",\n  [0]: \"setup function\",\n  [1]: \"render function\",\n  [2]: \"watcher getter\",\n  [3]: \"watcher callback\",\n  [4]: \"watcher cleanup function\",\n  [5]: \"native event handler\",\n  [6]: \"component event handler\",\n  [7]: \"vnode hook\",\n  [8]: \"directive hook\",\n  [9]: \"transition hook\",\n  [10]: \"app errorHandler\",\n  [11]: \"app warnHandler\",\n  [12]: \"ref function\",\n  [13]: \"async component loader\",\n  [14]: \"scheduler flush\",\n  [15]: \"component update\",\n  [16]: \"app unmount cleanup function\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n  try {\n    return args ? fn(...args) : fn();\n  } catch (err) {\n    handleError(err, instance, type);\n  }\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n  if (shared.isFunction(fn)) {\n    const res = callWithErrorHandling(fn, instance, type, args);\n    if (res && shared.isPromise(res)) {\n      res.catch((err) => {\n        handleError(err, instance, type);\n      });\n    }\n    return res;\n  }\n  if (shared.isArray(fn)) {\n    const values = [];\n    for (let i = 0; i < fn.length; i++) {\n      values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n    }\n    return values;\n  }\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n  const contextVNode = instance ? instance.vnode : null;\n  const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || shared.EMPTY_OBJ;\n  if (instance) {\n    let cur = instance.parent;\n    const exposedInstance = instance.proxy;\n    const errorInfo = `https://vuejs.org/error-reference/#runtime-${type}`;\n    while (cur) {\n      const errorCapturedHooks = cur.ec;\n      if (errorCapturedHooks) {\n        for (let i = 0; i < errorCapturedHooks.length; i++) {\n          if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n            return;\n          }\n        }\n      }\n      cur = cur.parent;\n    }\n    if (errorHandler) {\n      reactivity.pauseTracking();\n      callWithErrorHandling(errorHandler, null, 10, [\n        err,\n        exposedInstance,\n        errorInfo\n      ]);\n      reactivity.resetTracking();\n      return;\n    }\n  }\n  logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction);\n}\nfunction logError(err, type, contextVNode, throwInDev = true, throwInProd = false) {\n  if (throwInProd) {\n    throw err;\n  } else {\n    console.error(err);\n  }\n}\n\nconst queue = [];\nlet flushIndex = -1;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nfunction nextTick(fn) {\n  const p = currentFlushPromise || resolvedPromise;\n  return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n  let start = flushIndex + 1;\n  let end = queue.length;\n  while (start < end) {\n    const middle = start + end >>> 1;\n    const middleJob = queue[middle];\n    const middleJobId = getId(middleJob);\n    if (middleJobId < id || middleJobId === id && middleJob.flags & 2) {\n      start = middle + 1;\n    } else {\n      end = middle;\n    }\n  }\n  return start;\n}\nfunction queueJob(job) {\n  if (!(job.flags & 1)) {\n    const jobId = getId(job);\n    const lastJob = queue[queue.length - 1];\n    if (!lastJob || // fast path when the job id is larger than the tail\n    !(job.flags & 2) && jobId >= getId(lastJob)) {\n      queue.push(job);\n    } else {\n      queue.splice(findInsertionIndex(jobId), 0, job);\n    }\n    job.flags |= 1;\n    queueFlush();\n  }\n}\nfunction queueFlush() {\n  if (!currentFlushPromise) {\n    currentFlushPromise = resolvedPromise.then(flushJobs);\n  }\n}\nfunction queuePostFlushCb(cb) {\n  if (!shared.isArray(cb)) {\n    if (activePostFlushCbs && cb.id === -1) {\n      activePostFlushCbs.splice(postFlushIndex + 1, 0, cb);\n    } else if (!(cb.flags & 1)) {\n      pendingPostFlushCbs.push(cb);\n      cb.flags |= 1;\n    }\n  } else {\n    pendingPostFlushCbs.push(...cb);\n  }\n  queueFlush();\n}\nfunction flushPreFlushCbs(instance, seen, i = flushIndex + 1) {\n  for (; i < queue.length; i++) {\n    const cb = queue[i];\n    if (cb && cb.flags & 2) {\n      if (instance && cb.id !== instance.uid) {\n        continue;\n      }\n      queue.splice(i, 1);\n      i--;\n      if (cb.flags & 4) {\n        cb.flags &= -2;\n      }\n      cb();\n      if (!(cb.flags & 4)) {\n        cb.flags &= -2;\n      }\n    }\n  }\n}\nfunction flushPostFlushCbs(seen) {\n  if (pendingPostFlushCbs.length) {\n    const deduped = [...new Set(pendingPostFlushCbs)].sort(\n      (a, b) => getId(a) - getId(b)\n    );\n    pendingPostFlushCbs.length = 0;\n    if (activePostFlushCbs) {\n      activePostFlushCbs.push(...deduped);\n      return;\n    }\n    activePostFlushCbs = deduped;\n    for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n      const cb = activePostFlushCbs[postFlushIndex];\n      if (cb.flags & 4) {\n        cb.flags &= -2;\n      }\n      if (!(cb.flags & 8)) cb();\n      cb.flags &= -2;\n    }\n    activePostFlushCbs = null;\n    postFlushIndex = 0;\n  }\n}\nconst getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id;\nfunction flushJobs(seen) {\n  try {\n    for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n      const job = queue[flushIndex];\n      if (job && !(job.flags & 8)) {\n        if (false) ;\n        if (job.flags & 4) {\n          job.flags &= ~1;\n        }\n        callWithErrorHandling(\n          job,\n          job.i,\n          job.i ? 15 : 14\n        );\n        if (!(job.flags & 4)) {\n          job.flags &= ~1;\n        }\n      }\n    }\n  } finally {\n    for (; flushIndex < queue.length; flushIndex++) {\n      const job = queue[flushIndex];\n      if (job) {\n        job.flags &= -2;\n      }\n    }\n    flushIndex = -1;\n    queue.length = 0;\n    flushPostFlushCbs();\n    currentFlushPromise = null;\n    if (queue.length || pendingPostFlushCbs.length) {\n      flushJobs();\n    }\n  }\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n  const prev = currentRenderingInstance;\n  currentRenderingInstance = instance;\n  currentScopeId = instance && instance.type.__scopeId || null;\n  return prev;\n}\nfunction pushScopeId(id) {\n  currentScopeId = id;\n}\nfunction popScopeId() {\n  currentScopeId = null;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n  if (!ctx) return fn;\n  if (fn._n) {\n    return fn;\n  }\n  const renderFnWithContext = (...args) => {\n    if (renderFnWithContext._d) {\n      setBlockTracking(-1);\n    }\n    const prevInstance = setCurrentRenderingInstance(ctx);\n    let res;\n    try {\n      res = fn(...args);\n    } finally {\n      setCurrentRenderingInstance(prevInstance);\n      if (renderFnWithContext._d) {\n        setBlockTracking(1);\n      }\n    }\n    return res;\n  };\n  renderFnWithContext._n = true;\n  renderFnWithContext._c = true;\n  renderFnWithContext._d = true;\n  return renderFnWithContext;\n}\n\nfunction withDirectives(vnode, directives) {\n  if (currentRenderingInstance === null) {\n    return vnode;\n  }\n  const instance = getComponentPublicInstance(currentRenderingInstance);\n  const bindings = vnode.dirs || (vnode.dirs = []);\n  for (let i = 0; i < directives.length; i++) {\n    let [dir, value, arg, modifiers = shared.EMPTY_OBJ] = directives[i];\n    if (dir) {\n      if (shared.isFunction(dir)) {\n        dir = {\n          mounted: dir,\n          updated: dir\n        };\n      }\n      if (dir.deep) {\n        reactivity.traverse(value);\n      }\n      bindings.push({\n        dir,\n        instance,\n        value,\n        oldValue: void 0,\n        arg,\n        modifiers\n      });\n    }\n  }\n  return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n  const bindings = vnode.dirs;\n  const oldBindings = prevVNode && prevVNode.dirs;\n  for (let i = 0; i < bindings.length; i++) {\n    const binding = bindings[i];\n    if (oldBindings) {\n      binding.oldValue = oldBindings[i].value;\n    }\n    let hook = binding.dir[name];\n    if (hook) {\n      reactivity.pauseTracking();\n      callWithAsyncErrorHandling(hook, instance, 8, [\n        vnode.el,\n        binding,\n        vnode,\n        prevVNode\n      ]);\n      reactivity.resetTracking();\n    }\n  }\n}\n\nconst TeleportEndKey = Symbol(\"_vte\");\nconst isTeleport = (type) => type.__isTeleport;\nconst isTeleportDisabled = (props) => props && (props.disabled || props.disabled === \"\");\nconst isTeleportDeferred = (props) => props && (props.defer || props.defer === \"\");\nconst isTargetSVG = (target) => typeof SVGElement !== \"undefined\" && target instanceof SVGElement;\nconst isTargetMathML = (target) => typeof MathMLElement === \"function\" && target instanceof MathMLElement;\nconst resolveTarget = (props, select) => {\n  const targetSelector = props && props.to;\n  if (shared.isString(targetSelector)) {\n    if (!select) {\n      return null;\n    } else {\n      const target = select(targetSelector);\n      return target;\n    }\n  } else {\n    return targetSelector;\n  }\n};\nconst TeleportImpl = {\n  name: \"Teleport\",\n  __isTeleport: true,\n  process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) {\n    const {\n      mc: mountChildren,\n      pc: patchChildren,\n      pbc: patchBlockChildren,\n      o: { insert, querySelector, createText, createComment }\n    } = internals;\n    const disabled = isTeleportDisabled(n2.props);\n    let { shapeFlag, children, dynamicChildren } = n2;\n    if (n1 == null) {\n      const placeholder = n2.el = createText(\"\");\n      const mainAnchor = n2.anchor = createText(\"\");\n      insert(placeholder, container, anchor);\n      insert(mainAnchor, container, anchor);\n      const mount = (container2, anchor2) => {\n        if (shapeFlag & 16) {\n          if (parentComponent && parentComponent.isCE) {\n            parentComponent.ce._teleportTarget = container2;\n          }\n          mountChildren(\n            children,\n            container2,\n            anchor2,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        }\n      };\n      const mountToTarget = () => {\n        const target = n2.target = resolveTarget(n2.props, querySelector);\n        const targetAnchor = prepareAnchor(target, n2, createText, insert);\n        if (target) {\n          if (namespace !== \"svg\" && isTargetSVG(target)) {\n            namespace = \"svg\";\n          } else if (namespace !== \"mathml\" && isTargetMathML(target)) {\n            namespace = \"mathml\";\n          }\n          if (!disabled) {\n            mount(target, targetAnchor);\n            updateCssVars(n2, false);\n          }\n        }\n      };\n      if (disabled) {\n        mount(container, mainAnchor);\n        updateCssVars(n2, true);\n      }\n      if (isTeleportDeferred(n2.props)) {\n        n2.el.__isMounted = false;\n        queuePostRenderEffect(() => {\n          mountToTarget();\n          delete n2.el.__isMounted;\n        }, parentSuspense);\n      } else {\n        mountToTarget();\n      }\n    } else {\n      if (isTeleportDeferred(n2.props) && n1.el.__isMounted === false) {\n        queuePostRenderEffect(() => {\n          TeleportImpl.process(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized,\n            internals\n          );\n        }, parentSuspense);\n        return;\n      }\n      n2.el = n1.el;\n      n2.targetStart = n1.targetStart;\n      const mainAnchor = n2.anchor = n1.anchor;\n      const target = n2.target = n1.target;\n      const targetAnchor = n2.targetAnchor = n1.targetAnchor;\n      const wasDisabled = isTeleportDisabled(n1.props);\n      const currentContainer = wasDisabled ? container : target;\n      const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;\n      if (namespace === \"svg\" || isTargetSVG(target)) {\n        namespace = \"svg\";\n      } else if (namespace === \"mathml\" || isTargetMathML(target)) {\n        namespace = \"mathml\";\n      }\n      if (dynamicChildren) {\n        patchBlockChildren(\n          n1.dynamicChildren,\n          dynamicChildren,\n          currentContainer,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds\n        );\n        traverseStaticChildren(n1, n2, true);\n      } else if (!optimized) {\n        patchChildren(\n          n1,\n          n2,\n          currentContainer,\n          currentAnchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          false\n        );\n      }\n      if (disabled) {\n        if (!wasDisabled) {\n          moveTeleport(\n            n2,\n            container,\n            mainAnchor,\n            internals,\n            1\n          );\n        } else {\n          if (n2.props && n1.props && n2.props.to !== n1.props.to) {\n            n2.props.to = n1.props.to;\n          }\n        }\n      } else {\n        if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {\n          const nextTarget = n2.target = resolveTarget(\n            n2.props,\n            querySelector\n          );\n          if (nextTarget) {\n            moveTeleport(\n              n2,\n              nextTarget,\n              null,\n              internals,\n              0\n            );\n          }\n        } else if (wasDisabled) {\n          moveTeleport(\n            n2,\n            target,\n            targetAnchor,\n            internals,\n            1\n          );\n        }\n      }\n      updateCssVars(n2, disabled);\n    }\n  },\n  remove(vnode, parentComponent, parentSuspense, { um: unmount, o: { remove: hostRemove } }, doRemove) {\n    const {\n      shapeFlag,\n      children,\n      anchor,\n      targetStart,\n      targetAnchor,\n      target,\n      props\n    } = vnode;\n    if (target) {\n      hostRemove(targetStart);\n      hostRemove(targetAnchor);\n    }\n    doRemove && hostRemove(anchor);\n    if (shapeFlag & 16) {\n      const shouldRemove = doRemove || !isTeleportDisabled(props);\n      for (let i = 0; i < children.length; i++) {\n        const child = children[i];\n        unmount(\n          child,\n          parentComponent,\n          parentSuspense,\n          shouldRemove,\n          !!child.dynamicChildren\n        );\n      }\n    }\n  },\n  move: moveTeleport,\n  hydrate: hydrateTeleport\n};\nfunction moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) {\n  if (moveType === 0) {\n    insert(vnode.targetAnchor, container, parentAnchor);\n  }\n  const { el, anchor, shapeFlag, children, props } = vnode;\n  const isReorder = moveType === 2;\n  if (isReorder) {\n    insert(el, container, parentAnchor);\n  }\n  if (!isReorder || isTeleportDisabled(props)) {\n    if (shapeFlag & 16) {\n      for (let i = 0; i < children.length; i++) {\n        move(\n          children[i],\n          container,\n          parentAnchor,\n          2\n        );\n      }\n    }\n  }\n  if (isReorder) {\n    insert(anchor, container, parentAnchor);\n  }\n}\nfunction hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {\n  o: { nextSibling, parentNode, querySelector, insert, createText }\n}, hydrateChildren) {\n  const target = vnode.target = resolveTarget(\n    vnode.props,\n    querySelector\n  );\n  if (target) {\n    const disabled = isTeleportDisabled(vnode.props);\n    const targetNode = target._lpa || target.firstChild;\n    if (vnode.shapeFlag & 16) {\n      if (disabled) {\n        vnode.anchor = hydrateChildren(\n          nextSibling(node),\n          vnode,\n          parentNode(node),\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n        vnode.targetStart = targetNode;\n        vnode.targetAnchor = targetNode && nextSibling(targetNode);\n      } else {\n        vnode.anchor = nextSibling(node);\n        let targetAnchor = targetNode;\n        while (targetAnchor) {\n          if (targetAnchor && targetAnchor.nodeType === 8) {\n            if (targetAnchor.data === \"teleport start anchor\") {\n              vnode.targetStart = targetAnchor;\n            } else if (targetAnchor.data === \"teleport anchor\") {\n              vnode.targetAnchor = targetAnchor;\n              target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);\n              break;\n            }\n          }\n          targetAnchor = nextSibling(targetAnchor);\n        }\n        if (!vnode.targetAnchor) {\n          prepareAnchor(target, vnode, createText, insert);\n        }\n        hydrateChildren(\n          targetNode && nextSibling(targetNode),\n          vnode,\n          target,\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n      }\n    }\n    updateCssVars(vnode, disabled);\n  }\n  return vnode.anchor && nextSibling(vnode.anchor);\n}\nconst Teleport = TeleportImpl;\nfunction updateCssVars(vnode, isDisabled) {\n  const ctx = vnode.ctx;\n  if (ctx && ctx.ut) {\n    let node, anchor;\n    if (isDisabled) {\n      node = vnode.el;\n      anchor = vnode.anchor;\n    } else {\n      node = vnode.targetStart;\n      anchor = vnode.targetAnchor;\n    }\n    while (node && node !== anchor) {\n      if (node.nodeType === 1) node.setAttribute(\"data-v-owner\", ctx.uid);\n      node = node.nextSibling;\n    }\n    ctx.ut();\n  }\n}\nfunction prepareAnchor(target, vnode, createText, insert) {\n  const targetStart = vnode.targetStart = createText(\"\");\n  const targetAnchor = vnode.targetAnchor = createText(\"\");\n  targetStart[TeleportEndKey] = targetAnchor;\n  if (target) {\n    insert(targetStart, target);\n    insert(targetAnchor, target);\n  }\n  return targetAnchor;\n}\n\nconst leaveCbKey = Symbol(\"_leaveCb\");\nconst enterCbKey = Symbol(\"_enterCb\");\nfunction useTransitionState() {\n  const state = {\n    isMounted: false,\n    isLeaving: false,\n    isUnmounting: false,\n    leavingVNodes: /* @__PURE__ */ new Map()\n  };\n  onMounted(() => {\n    state.isMounted = true;\n  });\n  onBeforeUnmount(() => {\n    state.isUnmounting = true;\n  });\n  return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionPropsValidators = {\n  mode: String,\n  appear: Boolean,\n  persisted: Boolean,\n  // enter\n  onBeforeEnter: TransitionHookValidator,\n  onEnter: TransitionHookValidator,\n  onAfterEnter: TransitionHookValidator,\n  onEnterCancelled: TransitionHookValidator,\n  // leave\n  onBeforeLeave: TransitionHookValidator,\n  onLeave: TransitionHookValidator,\n  onAfterLeave: TransitionHookValidator,\n  onLeaveCancelled: TransitionHookValidator,\n  // appear\n  onBeforeAppear: TransitionHookValidator,\n  onAppear: TransitionHookValidator,\n  onAfterAppear: TransitionHookValidator,\n  onAppearCancelled: TransitionHookValidator\n};\nconst recursiveGetSubtree = (instance) => {\n  const subTree = instance.subTree;\n  return subTree.component ? recursiveGetSubtree(subTree.component) : subTree;\n};\nconst BaseTransitionImpl = {\n  name: `BaseTransition`,\n  props: BaseTransitionPropsValidators,\n  setup(props, { slots }) {\n    const instance = getCurrentInstance();\n    const state = useTransitionState();\n    return () => {\n      const children = slots.default && getTransitionRawChildren(slots.default(), true);\n      if (!children || !children.length) {\n        return;\n      }\n      const child = findNonCommentChild(children);\n      const rawProps = reactivity.toRaw(props);\n      const { mode } = rawProps;\n      if (state.isLeaving) {\n        return emptyPlaceholder(child);\n      }\n      const innerChild = getInnerChild$1(child);\n      if (!innerChild) {\n        return emptyPlaceholder(child);\n      }\n      let enterHooks = resolveTransitionHooks(\n        innerChild,\n        rawProps,\n        state,\n        instance,\n        // #11061, ensure enterHooks is fresh after clone\n        (hooks) => enterHooks = hooks\n      );\n      if (innerChild.type !== Comment) {\n        setTransitionHooks(innerChild, enterHooks);\n      }\n      let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree);\n      if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild) && recursiveGetSubtree(instance).type !== Comment) {\n        let leavingHooks = resolveTransitionHooks(\n          oldInnerChild,\n          rawProps,\n          state,\n          instance\n        );\n        setTransitionHooks(oldInnerChild, leavingHooks);\n        if (mode === \"out-in\" && innerChild.type !== Comment) {\n          state.isLeaving = true;\n          leavingHooks.afterLeave = () => {\n            state.isLeaving = false;\n            if (!(instance.job.flags & 8)) {\n              instance.update();\n            }\n            delete leavingHooks.afterLeave;\n            oldInnerChild = void 0;\n          };\n          return emptyPlaceholder(child);\n        } else if (mode === \"in-out\" && innerChild.type !== Comment) {\n          leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n            const leavingVNodesCache = getLeavingNodesForType(\n              state,\n              oldInnerChild\n            );\n            leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n            el[leaveCbKey] = () => {\n              earlyRemove();\n              el[leaveCbKey] = void 0;\n              delete enterHooks.delayedLeave;\n              oldInnerChild = void 0;\n            };\n            enterHooks.delayedLeave = () => {\n              delayedLeave();\n              delete enterHooks.delayedLeave;\n              oldInnerChild = void 0;\n            };\n          };\n        } else {\n          oldInnerChild = void 0;\n        }\n      } else if (oldInnerChild) {\n        oldInnerChild = void 0;\n      }\n      return child;\n    };\n  }\n};\nfunction findNonCommentChild(children) {\n  let child = children[0];\n  if (children.length > 1) {\n    for (const c of children) {\n      if (c.type !== Comment) {\n        child = c;\n        break;\n      }\n    }\n  }\n  return child;\n}\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n  const { leavingVNodes } = state;\n  let leavingVNodesCache = leavingVNodes.get(vnode.type);\n  if (!leavingVNodesCache) {\n    leavingVNodesCache = /* @__PURE__ */ Object.create(null);\n    leavingVNodes.set(vnode.type, leavingVNodesCache);\n  }\n  return leavingVNodesCache;\n}\nfunction resolveTransitionHooks(vnode, props, state, instance, postClone) {\n  const {\n    appear,\n    mode,\n    persisted = false,\n    onBeforeEnter,\n    onEnter,\n    onAfterEnter,\n    onEnterCancelled,\n    onBeforeLeave,\n    onLeave,\n    onAfterLeave,\n    onLeaveCancelled,\n    onBeforeAppear,\n    onAppear,\n    onAfterAppear,\n    onAppearCancelled\n  } = props;\n  const key = String(vnode.key);\n  const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n  const callHook = (hook, args) => {\n    hook && callWithAsyncErrorHandling(\n      hook,\n      instance,\n      9,\n      args\n    );\n  };\n  const callAsyncHook = (hook, args) => {\n    const done = args[1];\n    callHook(hook, args);\n    if (shared.isArray(hook)) {\n      if (hook.every((hook2) => hook2.length <= 1)) done();\n    } else if (hook.length <= 1) {\n      done();\n    }\n  };\n  const hooks = {\n    mode,\n    persisted,\n    beforeEnter(el) {\n      let hook = onBeforeEnter;\n      if (!state.isMounted) {\n        if (appear) {\n          hook = onBeforeAppear || onBeforeEnter;\n        } else {\n          return;\n        }\n      }\n      if (el[leaveCbKey]) {\n        el[leaveCbKey](\n          true\n          /* cancelled */\n        );\n      }\n      const leavingVNode = leavingVNodesCache[key];\n      if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {\n        leavingVNode.el[leaveCbKey]();\n      }\n      callHook(hook, [el]);\n    },\n    enter(el) {\n      let hook = onEnter;\n      let afterHook = onAfterEnter;\n      let cancelHook = onEnterCancelled;\n      if (!state.isMounted) {\n        if (appear) {\n          hook = onAppear || onEnter;\n          afterHook = onAfterAppear || onAfterEnter;\n          cancelHook = onAppearCancelled || onEnterCancelled;\n        } else {\n          return;\n        }\n      }\n      let called = false;\n      const done = el[enterCbKey] = (cancelled) => {\n        if (called) return;\n        called = true;\n        if (cancelled) {\n          callHook(cancelHook, [el]);\n        } else {\n          callHook(afterHook, [el]);\n        }\n        if (hooks.delayedLeave) {\n          hooks.delayedLeave();\n        }\n        el[enterCbKey] = void 0;\n      };\n      if (hook) {\n        callAsyncHook(hook, [el, done]);\n      } else {\n        done();\n      }\n    },\n    leave(el, remove) {\n      const key2 = String(vnode.key);\n      if (el[enterCbKey]) {\n        el[enterCbKey](\n          true\n          /* cancelled */\n        );\n      }\n      if (state.isUnmounting) {\n        return remove();\n      }\n      callHook(onBeforeLeave, [el]);\n      let called = false;\n      const done = el[leaveCbKey] = (cancelled) => {\n        if (called) return;\n        called = true;\n        remove();\n        if (cancelled) {\n          callHook(onLeaveCancelled, [el]);\n        } else {\n          callHook(onAfterLeave, [el]);\n        }\n        el[leaveCbKey] = void 0;\n        if (leavingVNodesCache[key2] === vnode) {\n          delete leavingVNodesCache[key2];\n        }\n      };\n      leavingVNodesCache[key2] = vnode;\n      if (onLeave) {\n        callAsyncHook(onLeave, [el, done]);\n      } else {\n        done();\n      }\n    },\n    clone(vnode2) {\n      const hooks2 = resolveTransitionHooks(\n        vnode2,\n        props,\n        state,\n        instance,\n        postClone\n      );\n      if (postClone) postClone(hooks2);\n      return hooks2;\n    }\n  };\n  return hooks;\n}\nfunction emptyPlaceholder(vnode) {\n  if (isKeepAlive(vnode)) {\n    vnode = cloneVNode(vnode);\n    vnode.children = null;\n    return vnode;\n  }\n}\nfunction getInnerChild$1(vnode) {\n  if (!isKeepAlive(vnode)) {\n    if (isTeleport(vnode.type) && vnode.children) {\n      return findNonCommentChild(vnode.children);\n    }\n    return vnode;\n  }\n  if (vnode.component) {\n    return vnode.component.subTree;\n  }\n  const { shapeFlag, children } = vnode;\n  if (children) {\n    if (shapeFlag & 16) {\n      return children[0];\n    }\n    if (shapeFlag & 32 && shared.isFunction(children.default)) {\n      return children.default();\n    }\n  }\n}\nfunction setTransitionHooks(vnode, hooks) {\n  if (vnode.shapeFlag & 6 && vnode.component) {\n    vnode.transition = hooks;\n    setTransitionHooks(vnode.component.subTree, hooks);\n  } else if (vnode.shapeFlag & 128) {\n    vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n    vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n  } else {\n    vnode.transition = hooks;\n  }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n  let ret = [];\n  let keyedFragmentCount = 0;\n  for (let i = 0; i < children.length; i++) {\n    let child = children[i];\n    const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);\n    if (child.type === Fragment) {\n      if (child.patchFlag & 128) keyedFragmentCount++;\n      ret = ret.concat(\n        getTransitionRawChildren(child.children, keepComment, key)\n      );\n    } else if (keepComment || child.type !== Comment) {\n      ret.push(key != null ? cloneVNode(child, { key }) : child);\n    }\n  }\n  if (keyedFragmentCount > 1) {\n    for (let i = 0; i < ret.length; i++) {\n      ret[i].patchFlag = -2;\n    }\n  }\n  return ret;\n}\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineComponent(options, extraOptions) {\n  return shared.isFunction(options) ? (\n    // #8236: extend call and options.name access are considered side-effects\n    // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n    /* @__PURE__ */ (() => shared.extend({ name: options.name }, extraOptions, { setup: options }))()\n  ) : options;\n}\n\nfunction useId() {\n  const i = getCurrentInstance();\n  if (i) {\n    return (i.appContext.config.idPrefix || \"v\") + \"-\" + i.ids[0] + i.ids[1]++;\n  }\n  return \"\";\n}\nfunction markAsyncBoundary(instance) {\n  instance.ids = [instance.ids[0] + instance.ids[2]++ + \"-\", 0, 0];\n}\n\nfunction useTemplateRef(key) {\n  const i = getCurrentInstance();\n  const r = reactivity.shallowRef(null);\n  if (i) {\n    const refs = i.refs === shared.EMPTY_OBJ ? i.refs = {} : i.refs;\n    {\n      Object.defineProperty(refs, key, {\n        enumerable: true,\n        get: () => r.value,\n        set: (val) => r.value = val\n      });\n    }\n  }\n  const ret = r;\n  return ret;\n}\n\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\n  if (shared.isArray(rawRef)) {\n    rawRef.forEach(\n      (r, i) => setRef(\n        r,\n        oldRawRef && (shared.isArray(oldRawRef) ? oldRawRef[i] : oldRawRef),\n        parentSuspense,\n        vnode,\n        isUnmount\n      )\n    );\n    return;\n  }\n  if (isAsyncWrapper(vnode) && !isUnmount) {\n    if (vnode.shapeFlag & 512 && vnode.type.__asyncResolved && vnode.component.subTree.component) {\n      setRef(rawRef, oldRawRef, parentSuspense, vnode.component.subTree);\n    }\n    return;\n  }\n  const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el;\n  const value = isUnmount ? null : refValue;\n  const { i: owner, r: ref } = rawRef;\n  const oldRef = oldRawRef && oldRawRef.r;\n  const refs = owner.refs === shared.EMPTY_OBJ ? owner.refs = {} : owner.refs;\n  const setupState = owner.setupState;\n  const rawSetupState = reactivity.toRaw(setupState);\n  const canSetSetupRef = setupState === shared.EMPTY_OBJ ? () => false : (key) => {\n    return shared.hasOwn(rawSetupState, key);\n  };\n  if (oldRef != null && oldRef !== ref) {\n    if (shared.isString(oldRef)) {\n      refs[oldRef] = null;\n      if (canSetSetupRef(oldRef)) {\n        setupState[oldRef] = null;\n      }\n    } else if (reactivity.isRef(oldRef)) {\n      oldRef.value = null;\n    }\n  }\n  if (shared.isFunction(ref)) {\n    callWithErrorHandling(ref, owner, 12, [value, refs]);\n  } else {\n    const _isString = shared.isString(ref);\n    const _isRef = reactivity.isRef(ref);\n    if (_isString || _isRef) {\n      const doSet = () => {\n        if (rawRef.f) {\n          const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : ref.value;\n          if (isUnmount) {\n            shared.isArray(existing) && shared.remove(existing, refValue);\n          } else {\n            if (!shared.isArray(existing)) {\n              if (_isString) {\n                refs[ref] = [refValue];\n                if (canSetSetupRef(ref)) {\n                  setupState[ref] = refs[ref];\n                }\n              } else {\n                ref.value = [refValue];\n                if (rawRef.k) refs[rawRef.k] = ref.value;\n              }\n            } else if (!existing.includes(refValue)) {\n              existing.push(refValue);\n            }\n          }\n        } else if (_isString) {\n          refs[ref] = value;\n          if (canSetSetupRef(ref)) {\n            setupState[ref] = value;\n          }\n        } else if (_isRef) {\n          ref.value = value;\n          if (rawRef.k) refs[rawRef.k] = value;\n        } else ;\n      };\n      if (value) {\n        doSet.id = -1;\n        queuePostRenderEffect(doSet, parentSuspense);\n      } else {\n        doSet();\n      }\n    }\n  }\n}\n\nlet hasLoggedMismatchError = false;\nconst logMismatchError = () => {\n  if (hasLoggedMismatchError) {\n    return;\n  }\n  console.error(\"Hydration completed but contains mismatches.\");\n  hasLoggedMismatchError = true;\n};\nconst isSVGContainer = (container) => container.namespaceURI.includes(\"svg\") && container.tagName !== \"foreignObject\";\nconst isMathMLContainer = (container) => container.namespaceURI.includes(\"MathML\");\nconst getContainerType = (container) => {\n  if (container.nodeType !== 1) return void 0;\n  if (isSVGContainer(container)) return \"svg\";\n  if (isMathMLContainer(container)) return \"mathml\";\n  return void 0;\n};\nconst isComment = (node) => node.nodeType === 8;\nfunction createHydrationFunctions(rendererInternals) {\n  const {\n    mt: mountComponent,\n    p: patch,\n    o: {\n      patchProp,\n      createText,\n      nextSibling,\n      parentNode,\n      remove,\n      insert,\n      createComment\n    }\n  } = rendererInternals;\n  const hydrate = (vnode, container) => {\n    if (!container.hasChildNodes()) {\n      patch(null, vnode, container);\n      flushPostFlushCbs();\n      container._vnode = vnode;\n      return;\n    }\n    hydrateNode(container.firstChild, vnode, null, null, null);\n    flushPostFlushCbs();\n    container._vnode = vnode;\n  };\n  const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {\n    optimized = optimized || !!vnode.dynamicChildren;\n    const isFragmentStart = isComment(node) && node.data === \"[\";\n    const onMismatch = () => handleMismatch(\n      node,\n      vnode,\n      parentComponent,\n      parentSuspense,\n      slotScopeIds,\n      isFragmentStart\n    );\n    const { type, ref, shapeFlag, patchFlag } = vnode;\n    let domType = node.nodeType;\n    vnode.el = node;\n    if (patchFlag === -2) {\n      optimized = false;\n      vnode.dynamicChildren = null;\n    }\n    let nextNode = null;\n    switch (type) {\n      case Text:\n        if (domType !== 3) {\n          if (vnode.children === \"\") {\n            insert(vnode.el = createText(\"\"), parentNode(node), node);\n            nextNode = node;\n          } else {\n            nextNode = onMismatch();\n          }\n        } else {\n          if (node.data !== vnode.children) {\n            logMismatchError();\n            node.data = vnode.children;\n          }\n          nextNode = nextSibling(node);\n        }\n        break;\n      case Comment:\n        if (isTemplateNode(node)) {\n          nextNode = nextSibling(node);\n          replaceNode(\n            vnode.el = node.content.firstChild,\n            node,\n            parentComponent\n          );\n        } else if (domType !== 8 || isFragmentStart) {\n          nextNode = onMismatch();\n        } else {\n          nextNode = nextSibling(node);\n        }\n        break;\n      case Static:\n        if (isFragmentStart) {\n          node = nextSibling(node);\n          domType = node.nodeType;\n        }\n        if (domType === 1 || domType === 3) {\n          nextNode = node;\n          const needToAdoptContent = !vnode.children.length;\n          for (let i = 0; i < vnode.staticCount; i++) {\n            if (needToAdoptContent)\n              vnode.children += nextNode.nodeType === 1 ? nextNode.outerHTML : nextNode.data;\n            if (i === vnode.staticCount - 1) {\n              vnode.anchor = nextNode;\n            }\n            nextNode = nextSibling(nextNode);\n          }\n          return isFragmentStart ? nextSibling(nextNode) : nextNode;\n        } else {\n          onMismatch();\n        }\n        break;\n      case Fragment:\n        if (!isFragmentStart) {\n          nextNode = onMismatch();\n        } else {\n          nextNode = hydrateFragment(\n            node,\n            vnode,\n            parentComponent,\n            parentSuspense,\n            slotScopeIds,\n            optimized\n          );\n        }\n        break;\n      default:\n        if (shapeFlag & 1) {\n          if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) {\n            nextNode = onMismatch();\n          } else {\n            nextNode = hydrateElement(\n              node,\n              vnode,\n              parentComponent,\n              parentSuspense,\n              slotScopeIds,\n              optimized\n            );\n          }\n        } else if (shapeFlag & 6) {\n          vnode.slotScopeIds = slotScopeIds;\n          const container = parentNode(node);\n          if (isFragmentStart) {\n            nextNode = locateClosingAnchor(node);\n          } else if (isComment(node) && node.data === \"teleport start\") {\n            nextNode = locateClosingAnchor(node, node.data, \"teleport end\");\n          } else {\n            nextNode = nextSibling(node);\n          }\n          mountComponent(\n            vnode,\n            container,\n            null,\n            parentComponent,\n            parentSuspense,\n            getContainerType(container),\n            optimized\n          );\n          if (isAsyncWrapper(vnode) && !vnode.type.__asyncResolved) {\n            let subTree;\n            if (isFragmentStart) {\n              subTree = createVNode(Fragment);\n              subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild;\n            } else {\n              subTree = node.nodeType === 3 ? createTextVNode(\"\") : createVNode(\"div\");\n            }\n            subTree.el = node;\n            vnode.component.subTree = subTree;\n          }\n        } else if (shapeFlag & 64) {\n          if (domType !== 8) {\n            nextNode = onMismatch();\n          } else {\n            nextNode = vnode.type.hydrate(\n              node,\n              vnode,\n              parentComponent,\n              parentSuspense,\n              slotScopeIds,\n              optimized,\n              rendererInternals,\n              hydrateChildren\n            );\n          }\n        } else if (shapeFlag & 128) {\n          nextNode = vnode.type.hydrate(\n            node,\n            vnode,\n            parentComponent,\n            parentSuspense,\n            getContainerType(parentNode(node)),\n            slotScopeIds,\n            optimized,\n            rendererInternals,\n            hydrateNode\n          );\n        } else ;\n    }\n    if (ref != null) {\n      setRef(ref, null, parentSuspense, vnode);\n    }\n    return nextNode;\n  };\n  const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n    optimized = optimized || !!vnode.dynamicChildren;\n    const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode;\n    const forcePatch = type === \"input\" || type === \"option\";\n    if (forcePatch || patchFlag !== -1) {\n      if (dirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n      }\n      let needCallTransitionHooks = false;\n      if (isTemplateNode(el)) {\n        needCallTransitionHooks = needTransition(\n          null,\n          // no need check parentSuspense in hydration\n          transition\n        ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear;\n        const content = el.content.firstChild;\n        if (needCallTransitionHooks) {\n          const cls = content.getAttribute(\"class\");\n          if (cls) content.$cls = cls;\n          transition.beforeEnter(content);\n        }\n        replaceNode(content, el, parentComponent);\n        vnode.el = el = content;\n      }\n      if (shapeFlag & 16 && // skip if element has innerHTML / textContent\n      !(props && (props.innerHTML || props.textContent))) {\n        let next = hydrateChildren(\n          el.firstChild,\n          vnode,\n          el,\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n        while (next) {\n          if (!isMismatchAllowed(el, 1 /* CHILDREN */)) {\n            logMismatchError();\n          }\n          const cur = next;\n          next = next.nextSibling;\n          remove(cur);\n        }\n      } else if (shapeFlag & 8) {\n        let clientText = vnode.children;\n        if (clientText[0] === \"\\n\" && (el.tagName === \"PRE\" || el.tagName === \"TEXTAREA\")) {\n          clientText = clientText.slice(1);\n        }\n        if (el.textContent !== clientText) {\n          if (!isMismatchAllowed(el, 0 /* TEXT */)) {\n            logMismatchError();\n          }\n          el.textContent = vnode.children;\n        }\n      }\n      if (props) {\n        if (forcePatch || !optimized || patchFlag & (16 | 32)) {\n          const isCustomElement = el.tagName.includes(\"-\");\n          for (const key in props) {\n            if (forcePatch && (key.endsWith(\"value\") || key === \"indeterminate\") || shared.isOn(key) && !shared.isReservedProp(key) || // force hydrate v-bind with .prop modifiers\n            key[0] === \".\" || isCustomElement) {\n              patchProp(el, key, null, props[key], void 0, parentComponent);\n            }\n          }\n        } else if (props.onClick) {\n          patchProp(\n            el,\n            \"onClick\",\n            null,\n            props.onClick,\n            void 0,\n            parentComponent\n          );\n        } else if (patchFlag & 4 && reactivity.isReactive(props.style)) {\n          for (const key in props.style) props.style[key];\n        }\n      }\n      let vnodeHooks;\n      if (vnodeHooks = props && props.onVnodeBeforeMount) {\n        invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n      }\n      if (dirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n      }\n      if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) {\n        queueEffectWithSuspense(() => {\n          vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n          needCallTransitionHooks && transition.enter(el);\n          dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n        }, parentSuspense);\n      }\n    }\n    return el.nextSibling;\n  };\n  const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n    optimized = optimized || !!parentVNode.dynamicChildren;\n    const children = parentVNode.children;\n    const l = children.length;\n    for (let i = 0; i < l; i++) {\n      const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]);\n      const isText = vnode.type === Text;\n      if (node) {\n        if (isText && !optimized) {\n          if (i + 1 < l && normalizeVNode(children[i + 1]).type === Text) {\n            insert(\n              createText(\n                node.data.slice(vnode.children.length)\n              ),\n              container,\n              nextSibling(node)\n            );\n            node.data = vnode.children;\n          }\n        }\n        node = hydrateNode(\n          node,\n          vnode,\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n      } else if (isText && !vnode.children) {\n        insert(vnode.el = createText(\"\"), container);\n      } else {\n        if (!isMismatchAllowed(container, 1 /* CHILDREN */)) {\n          logMismatchError();\n        }\n        patch(\n          null,\n          vnode,\n          container,\n          null,\n          parentComponent,\n          parentSuspense,\n          getContainerType(container),\n          slotScopeIds\n        );\n      }\n    }\n    return node;\n  };\n  const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n    const { slotScopeIds: fragmentSlotScopeIds } = vnode;\n    if (fragmentSlotScopeIds) {\n      slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n    }\n    const container = parentNode(node);\n    const next = hydrateChildren(\n      nextSibling(node),\n      vnode,\n      container,\n      parentComponent,\n      parentSuspense,\n      slotScopeIds,\n      optimized\n    );\n    if (next && isComment(next) && next.data === \"]\") {\n      return nextSibling(vnode.anchor = next);\n    } else {\n      logMismatchError();\n      insert(vnode.anchor = createComment(`]`), container, next);\n      return next;\n    }\n  };\n  const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {\n    if (!isMismatchAllowed(node.parentElement, 1 /* CHILDREN */)) {\n      logMismatchError();\n    }\n    vnode.el = null;\n    if (isFragment) {\n      const end = locateClosingAnchor(node);\n      while (true) {\n        const next2 = nextSibling(node);\n        if (next2 && next2 !== end) {\n          remove(next2);\n        } else {\n          break;\n        }\n      }\n    }\n    const next = nextSibling(node);\n    const container = parentNode(node);\n    remove(node);\n    patch(\n      null,\n      vnode,\n      container,\n      next,\n      parentComponent,\n      parentSuspense,\n      getContainerType(container),\n      slotScopeIds\n    );\n    if (parentComponent) {\n      parentComponent.vnode.el = vnode.el;\n      updateHOCHostEl(parentComponent, vnode.el);\n    }\n    return next;\n  };\n  const locateClosingAnchor = (node, open = \"[\", close = \"]\") => {\n    let match = 0;\n    while (node) {\n      node = nextSibling(node);\n      if (node && isComment(node)) {\n        if (node.data === open) match++;\n        if (node.data === close) {\n          if (match === 0) {\n            return nextSibling(node);\n          } else {\n            match--;\n          }\n        }\n      }\n    }\n    return node;\n  };\n  const replaceNode = (newNode, oldNode, parentComponent) => {\n    const parentNode2 = oldNode.parentNode;\n    if (parentNode2) {\n      parentNode2.replaceChild(newNode, oldNode);\n    }\n    let parent = parentComponent;\n    while (parent) {\n      if (parent.vnode.el === oldNode) {\n        parent.vnode.el = parent.subTree.el = newNode;\n      }\n      parent = parent.parent;\n    }\n  };\n  const isTemplateNode = (node) => {\n    return node.nodeType === 1 && node.tagName === \"TEMPLATE\";\n  };\n  return [hydrate, hydrateNode];\n}\nconst allowMismatchAttr = \"data-allow-mismatch\";\nconst MismatchTypeString = {\n  [0 /* TEXT */]: \"text\",\n  [1 /* CHILDREN */]: \"children\",\n  [2 /* CLASS */]: \"class\",\n  [3 /* STYLE */]: \"style\",\n  [4 /* ATTRIBUTE */]: \"attribute\"\n};\nfunction isMismatchAllowed(el, allowedType) {\n  if (allowedType === 0 /* TEXT */ || allowedType === 1 /* CHILDREN */) {\n    while (el && !el.hasAttribute(allowMismatchAttr)) {\n      el = el.parentElement;\n    }\n  }\n  const allowedAttr = el && el.getAttribute(allowMismatchAttr);\n  if (allowedAttr == null) {\n    return false;\n  } else if (allowedAttr === \"\") {\n    return true;\n  } else {\n    const list = allowedAttr.split(\",\");\n    if (allowedType === 0 /* TEXT */ && list.includes(\"children\")) {\n      return true;\n    }\n    return list.includes(MismatchTypeString[allowedType]);\n  }\n}\n\nconst requestIdleCallback = shared.getGlobalThis().requestIdleCallback || ((cb) => setTimeout(cb, 1));\nconst cancelIdleCallback = shared.getGlobalThis().cancelIdleCallback || ((id) => clearTimeout(id));\nconst hydrateOnIdle = (timeout = 1e4) => (hydrate) => {\n  const id = requestIdleCallback(hydrate, { timeout });\n  return () => cancelIdleCallback(id);\n};\nfunction elementIsVisibleInViewport(el) {\n  const { top, left, bottom, right } = el.getBoundingClientRect();\n  const { innerHeight, innerWidth } = window;\n  return (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth);\n}\nconst hydrateOnVisible = (opts) => (hydrate, forEach) => {\n  const ob = new IntersectionObserver((entries) => {\n    for (const e of entries) {\n      if (!e.isIntersecting) continue;\n      ob.disconnect();\n      hydrate();\n      break;\n    }\n  }, opts);\n  forEach((el) => {\n    if (!(el instanceof Element)) return;\n    if (elementIsVisibleInViewport(el)) {\n      hydrate();\n      ob.disconnect();\n      return false;\n    }\n    ob.observe(el);\n  });\n  return () => ob.disconnect();\n};\nconst hydrateOnMediaQuery = (query) => (hydrate) => {\n  if (query) {\n    const mql = matchMedia(query);\n    if (mql.matches) {\n      hydrate();\n    } else {\n      mql.addEventListener(\"change\", hydrate, { once: true });\n      return () => mql.removeEventListener(\"change\", hydrate);\n    }\n  }\n};\nconst hydrateOnInteraction = (interactions = []) => (hydrate, forEach) => {\n  if (shared.isString(interactions)) interactions = [interactions];\n  let hasHydrated = false;\n  const doHydrate = (e) => {\n    if (!hasHydrated) {\n      hasHydrated = true;\n      teardown();\n      hydrate();\n      e.target.dispatchEvent(new e.constructor(e.type, e));\n    }\n  };\n  const teardown = () => {\n    forEach((el) => {\n      for (const i of interactions) {\n        el.removeEventListener(i, doHydrate);\n      }\n    });\n  };\n  forEach((el) => {\n    for (const i of interactions) {\n      el.addEventListener(i, doHydrate, { once: true });\n    }\n  });\n  return teardown;\n};\nfunction forEachElement(node, cb) {\n  if (isComment(node) && node.data === \"[\") {\n    let depth = 1;\n    let next = node.nextSibling;\n    while (next) {\n      if (next.nodeType === 1) {\n        const result = cb(next);\n        if (result === false) {\n          break;\n        }\n      } else if (isComment(next)) {\n        if (next.data === \"]\") {\n          if (--depth === 0) break;\n        } else if (next.data === \"[\") {\n          depth++;\n        }\n      }\n      next = next.nextSibling;\n    }\n  } else {\n    cb(node);\n  }\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineAsyncComponent(source) {\n  if (shared.isFunction(source)) {\n    source = { loader: source };\n  }\n  const {\n    loader,\n    loadingComponent,\n    errorComponent,\n    delay = 200,\n    hydrate: hydrateStrategy,\n    timeout,\n    // undefined = never times out\n    suspensible = true,\n    onError: userOnError\n  } = source;\n  let pendingRequest = null;\n  let resolvedComp;\n  let retries = 0;\n  const retry = () => {\n    retries++;\n    pendingRequest = null;\n    return load();\n  };\n  const load = () => {\n    let thisRequest;\n    return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {\n      err = err instanceof Error ? err : new Error(String(err));\n      if (userOnError) {\n        return new Promise((resolve, reject) => {\n          const userRetry = () => resolve(retry());\n          const userFail = () => reject(err);\n          userOnError(err, userRetry, userFail, retries + 1);\n        });\n      } else {\n        throw err;\n      }\n    }).then((comp) => {\n      if (thisRequest !== pendingRequest && pendingRequest) {\n        return pendingRequest;\n      }\n      if (comp && (comp.__esModule || comp[Symbol.toStringTag] === \"Module\")) {\n        comp = comp.default;\n      }\n      resolvedComp = comp;\n      return comp;\n    }));\n  };\n  return defineComponent({\n    name: \"AsyncComponentWrapper\",\n    __asyncLoader: load,\n    __asyncHydrate(el, instance, hydrate) {\n      let patched = false;\n      (instance.bu || (instance.bu = [])).push(() => patched = true);\n      const performHydrate = () => {\n        if (patched) {\n          return;\n        }\n        hydrate();\n      };\n      const doHydrate = hydrateStrategy ? () => {\n        const teardown = hydrateStrategy(\n          performHydrate,\n          (cb) => forEachElement(el, cb)\n        );\n        if (teardown) {\n          (instance.bum || (instance.bum = [])).push(teardown);\n        }\n      } : performHydrate;\n      if (resolvedComp) {\n        doHydrate();\n      } else {\n        load().then(() => !instance.isUnmounted && doHydrate());\n      }\n    },\n    get __asyncResolved() {\n      return resolvedComp;\n    },\n    setup() {\n      const instance = currentInstance;\n      markAsyncBoundary(instance);\n      if (resolvedComp) {\n        return () => createInnerComp(resolvedComp, instance);\n      }\n      const onError = (err) => {\n        pendingRequest = null;\n        handleError(\n          err,\n          instance,\n          13,\n          !errorComponent\n        );\n      };\n      if (suspensible && instance.suspense || isInSSRComponentSetup) {\n        return load().then((comp) => {\n          return () => createInnerComp(comp, instance);\n        }).catch((err) => {\n          onError(err);\n          return () => errorComponent ? createVNode(errorComponent, {\n            error: err\n          }) : null;\n        });\n      }\n      const loaded = reactivity.ref(false);\n      const error = reactivity.ref();\n      const delayed = reactivity.ref(!!delay);\n      if (delay) {\n        setTimeout(() => {\n          delayed.value = false;\n        }, delay);\n      }\n      if (timeout != null) {\n        setTimeout(() => {\n          if (!loaded.value && !error.value) {\n            const err = new Error(\n              `Async component timed out after ${timeout}ms.`\n            );\n            onError(err);\n            error.value = err;\n          }\n        }, timeout);\n      }\n      load().then(() => {\n        loaded.value = true;\n        if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n          instance.parent.update();\n        }\n      }).catch((err) => {\n        onError(err);\n        error.value = err;\n      });\n      return () => {\n        if (loaded.value && resolvedComp) {\n          return createInnerComp(resolvedComp, instance);\n        } else if (error.value && errorComponent) {\n          return createVNode(errorComponent, {\n            error: error.value\n          });\n        } else if (loadingComponent && !delayed.value) {\n          return createVNode(loadingComponent);\n        }\n      };\n    }\n  });\n}\nfunction createInnerComp(comp, parent) {\n  const { ref: ref2, props, children, ce } = parent.vnode;\n  const vnode = createVNode(comp, props, children);\n  vnode.ref = ref2;\n  vnode.ce = ce;\n  delete parent.vnode.ce;\n  return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n  name: `KeepAlive`,\n  // Marker for special handling inside the renderer. We are not using a ===\n  // check directly on KeepAlive in the renderer, because importing it directly\n  // would prevent it from being tree-shaken.\n  __isKeepAlive: true,\n  props: {\n    include: [String, RegExp, Array],\n    exclude: [String, RegExp, Array],\n    max: [String, Number]\n  },\n  setup(props, { slots }) {\n    const instance = getCurrentInstance();\n    const sharedContext = instance.ctx;\n    if (!sharedContext.renderer) {\n      return () => {\n        const children = slots.default && slots.default();\n        return children && children.length === 1 ? children[0] : children;\n      };\n    }\n    const cache = /* @__PURE__ */ new Map();\n    const keys = /* @__PURE__ */ new Set();\n    let current = null;\n    const parentSuspense = instance.suspense;\n    const {\n      renderer: {\n        p: patch,\n        m: move,\n        um: _unmount,\n        o: { createElement }\n      }\n    } = sharedContext;\n    const storageContainer = createElement(\"div\");\n    sharedContext.activate = (vnode, container, anchor, namespace, optimized) => {\n      const instance2 = vnode.component;\n      move(vnode, container, anchor, 0, parentSuspense);\n      patch(\n        instance2.vnode,\n        vnode,\n        container,\n        anchor,\n        instance2,\n        parentSuspense,\n        namespace,\n        vnode.slotScopeIds,\n        optimized\n      );\n      queuePostRenderEffect(() => {\n        instance2.isDeactivated = false;\n        if (instance2.a) {\n          shared.invokeArrayFns(instance2.a);\n        }\n        const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n        if (vnodeHook) {\n          invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n        }\n      }, parentSuspense);\n    };\n    sharedContext.deactivate = (vnode) => {\n      const instance2 = vnode.component;\n      invalidateMount(instance2.m);\n      invalidateMount(instance2.a);\n      move(vnode, storageContainer, null, 1, parentSuspense);\n      queuePostRenderEffect(() => {\n        if (instance2.da) {\n          shared.invokeArrayFns(instance2.da);\n        }\n        const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n        if (vnodeHook) {\n          invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n        }\n        instance2.isDeactivated = true;\n      }, parentSuspense);\n    };\n    function unmount(vnode) {\n      resetShapeFlag(vnode);\n      _unmount(vnode, instance, parentSuspense, true);\n    }\n    function pruneCache(filter) {\n      cache.forEach((vnode, key) => {\n        const name = getComponentName(vnode.type);\n        if (name && !filter(name)) {\n          pruneCacheEntry(key);\n        }\n      });\n    }\n    function pruneCacheEntry(key) {\n      const cached = cache.get(key);\n      if (cached && (!current || !isSameVNodeType(cached, current))) {\n        unmount(cached);\n      } else if (current) {\n        resetShapeFlag(current);\n      }\n      cache.delete(key);\n      keys.delete(key);\n    }\n    watch(\n      () => [props.include, props.exclude],\n      ([include, exclude]) => {\n        include && pruneCache((name) => matches(include, name));\n        exclude && pruneCache((name) => !matches(exclude, name));\n      },\n      // prune post-render after `current` has been updated\n      { flush: \"post\", deep: true }\n    );\n    let pendingCacheKey = null;\n    const cacheSubtree = () => {\n      if (pendingCacheKey != null) {\n        if (isSuspense(instance.subTree.type)) {\n          queuePostRenderEffect(() => {\n            cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n          }, instance.subTree.suspense);\n        } else {\n          cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n        }\n      }\n    };\n    onMounted(cacheSubtree);\n    onUpdated(cacheSubtree);\n    onBeforeUnmount(() => {\n      cache.forEach((cached) => {\n        const { subTree, suspense } = instance;\n        const vnode = getInnerChild(subTree);\n        if (cached.type === vnode.type && cached.key === vnode.key) {\n          resetShapeFlag(vnode);\n          const da = vnode.component.da;\n          da && queuePostRenderEffect(da, suspense);\n          return;\n        }\n        unmount(cached);\n      });\n    });\n    return () => {\n      pendingCacheKey = null;\n      if (!slots.default) {\n        return current = null;\n      }\n      const children = slots.default();\n      const rawVNode = children[0];\n      if (children.length > 1) {\n        current = null;\n        return children;\n      } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {\n        current = null;\n        return rawVNode;\n      }\n      let vnode = getInnerChild(rawVNode);\n      if (vnode.type === Comment) {\n        current = null;\n        return vnode;\n      }\n      const comp = vnode.type;\n      const name = getComponentName(\n        isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp\n      );\n      const { include, exclude, max } = props;\n      if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {\n        vnode.shapeFlag &= -257;\n        current = vnode;\n        return rawVNode;\n      }\n      const key = vnode.key == null ? comp : vnode.key;\n      const cachedVNode = cache.get(key);\n      if (vnode.el) {\n        vnode = cloneVNode(vnode);\n        if (rawVNode.shapeFlag & 128) {\n          rawVNode.ssContent = vnode;\n        }\n      }\n      pendingCacheKey = key;\n      if (cachedVNode) {\n        vnode.el = cachedVNode.el;\n        vnode.component = cachedVNode.component;\n        if (vnode.transition) {\n          setTransitionHooks(vnode, vnode.transition);\n        }\n        vnode.shapeFlag |= 512;\n        keys.delete(key);\n        keys.add(key);\n      } else {\n        keys.add(key);\n        if (max && keys.size > parseInt(max, 10)) {\n          pruneCacheEntry(keys.values().next().value);\n        }\n      }\n      vnode.shapeFlag |= 256;\n      current = vnode;\n      return isSuspense(rawVNode.type) ? rawVNode : vnode;\n    };\n  }\n};\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n  if (shared.isArray(pattern)) {\n    return pattern.some((p) => matches(p, name));\n  } else if (shared.isString(pattern)) {\n    return pattern.split(\",\").includes(name);\n  } else if (shared.isRegExp(pattern)) {\n    pattern.lastIndex = 0;\n    return pattern.test(name);\n  }\n  return false;\n}\nfunction onActivated(hook, target) {\n  registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n  registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n  const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n    let current = target;\n    while (current) {\n      if (current.isDeactivated) {\n        return;\n      }\n      current = current.parent;\n    }\n    return hook();\n  });\n  injectHook(type, wrappedHook, target);\n  if (target) {\n    let current = target.parent;\n    while (current && current.parent) {\n      if (isKeepAlive(current.parent.vnode)) {\n        injectToKeepAliveRoot(wrappedHook, type, target, current);\n      }\n      current = current.parent;\n    }\n  }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n  const injected = injectHook(\n    type,\n    hook,\n    keepAliveRoot,\n    true\n    /* prepend */\n  );\n  onUnmounted(() => {\n    shared.remove(keepAliveRoot[type], injected);\n  }, target);\n}\nfunction resetShapeFlag(vnode) {\n  vnode.shapeFlag &= -257;\n  vnode.shapeFlag &= -513;\n}\nfunction getInnerChild(vnode) {\n  return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n  if (target) {\n    const hooks = target[type] || (target[type] = []);\n    const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n      reactivity.pauseTracking();\n      const reset = setCurrentInstance(target);\n      const res = callWithAsyncErrorHandling(hook, target, type, args);\n      reset();\n      reactivity.resetTracking();\n      return res;\n    });\n    if (prepend) {\n      hooks.unshift(wrappedHook);\n    } else {\n      hooks.push(wrappedHook);\n    }\n    return wrappedHook;\n  }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => {\n  if (!isInSSRComponentSetup || lifecycle === \"sp\") {\n    injectHook(lifecycle, (...args) => hook(...args), target);\n  }\n};\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\n  \"bu\"\n);\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\n  \"bum\"\n);\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\n  \"sp\"\n);\nconst onRenderTriggered = createHook(\"rtg\");\nconst onRenderTracked = createHook(\"rtc\");\nfunction onErrorCaptured(hook, target = currentInstance) {\n  injectHook(\"ec\", hook, target);\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n  return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol.for(\"v-ndc\");\nfunction resolveDynamicComponent(component) {\n  if (shared.isString(component)) {\n    return resolveAsset(COMPONENTS, component, false) || component;\n  } else {\n    return component || NULL_DYNAMIC_COMPONENT;\n  }\n}\nfunction resolveDirective(name) {\n  return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n  const instance = currentRenderingInstance || currentInstance;\n  if (instance) {\n    const Component = instance.type;\n    if (type === COMPONENTS) {\n      const selfName = getComponentName(\n        Component,\n        false\n      );\n      if (selfName && (selfName === name || selfName === shared.camelize(name) || selfName === shared.capitalize(shared.camelize(name)))) {\n        return Component;\n      }\n    }\n    const res = (\n      // local registration\n      // check instance[type] first which is resolved for options API\n      resolve(instance[type] || Component[type], name) || // global registration\n      resolve(instance.appContext[type], name)\n    );\n    if (!res && maybeSelfReference) {\n      return Component;\n    }\n    return res;\n  }\n}\nfunction resolve(registry, name) {\n  return registry && (registry[name] || registry[shared.camelize(name)] || registry[shared.capitalize(shared.camelize(name))]);\n}\n\nfunction renderList(source, renderItem, cache, index) {\n  let ret;\n  const cached = cache && cache[index];\n  const sourceIsArray = shared.isArray(source);\n  if (sourceIsArray || shared.isString(source)) {\n    const sourceIsReactiveArray = sourceIsArray && reactivity.isReactive(source);\n    let needsWrap = false;\n    let isReadonlySource = false;\n    if (sourceIsReactiveArray) {\n      needsWrap = !reactivity.isShallow(source);\n      isReadonlySource = reactivity.isReadonly(source);\n      source = reactivity.shallowReadArray(source);\n    }\n    ret = new Array(source.length);\n    for (let i = 0, l = source.length; i < l; i++) {\n      ret[i] = renderItem(\n        needsWrap ? isReadonlySource ? reactivity.toReadonly(reactivity.toReactive(source[i])) : reactivity.toReactive(source[i]) : source[i],\n        i,\n        void 0,\n        cached && cached[i]\n      );\n    }\n  } else if (typeof source === \"number\") {\n    ret = new Array(source);\n    for (let i = 0; i < source; i++) {\n      ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n    }\n  } else if (shared.isObject(source)) {\n    if (source[Symbol.iterator]) {\n      ret = Array.from(\n        source,\n        (item, i) => renderItem(item, i, void 0, cached && cached[i])\n      );\n    } else {\n      const keys = Object.keys(source);\n      ret = new Array(keys.length);\n      for (let i = 0, l = keys.length; i < l; i++) {\n        const key = keys[i];\n        ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n      }\n    }\n  } else {\n    ret = [];\n  }\n  if (cache) {\n    cache[index] = ret;\n  }\n  return ret;\n}\n\nfunction createSlots(slots, dynamicSlots) {\n  for (let i = 0; i < dynamicSlots.length; i++) {\n    const slot = dynamicSlots[i];\n    if (shared.isArray(slot)) {\n      for (let j = 0; j < slot.length; j++) {\n        slots[slot[j].name] = slot[j].fn;\n      }\n    } else if (slot) {\n      slots[slot.name] = slot.key ? (...args) => {\n        const res = slot.fn(...args);\n        if (res) res.key = slot.key;\n        return res;\n      } : slot.fn;\n    }\n  }\n  return slots;\n}\n\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n  if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) {\n    if (name !== \"default\") props.name = name;\n    return openBlock(), createBlock(\n      Fragment,\n      null,\n      [createVNode(\"slot\", props, fallback && fallback())],\n      64\n    );\n  }\n  let slot = slots[name];\n  if (slot && slot._c) {\n    slot._d = false;\n  }\n  openBlock();\n  const validSlotContent = slot && ensureValidVNode(slot(props));\n  const slotKey = props.key || // slot content array of a dynamic conditional slot may have a branch\n  // key attached in the `createSlots` helper, respect that\n  validSlotContent && validSlotContent.key;\n  const rendered = createBlock(\n    Fragment,\n    {\n      key: (slotKey && !shared.isSymbol(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content\n      (!validSlotContent && fallback ? \"_fb\" : \"\")\n    },\n    validSlotContent || (fallback ? fallback() : []),\n    validSlotContent && slots._ === 1 ? 64 : -2\n  );\n  if (!noSlotted && rendered.scopeId) {\n    rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n  }\n  if (slot && slot._c) {\n    slot._d = true;\n  }\n  return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n  return vnodes.some((child) => {\n    if (!isVNode(child)) return true;\n    if (child.type === Comment) return false;\n    if (child.type === Fragment && !ensureValidVNode(child.children))\n      return false;\n    return true;\n  }) ? vnodes : null;\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n  const ret = {};\n  for (const key in obj) {\n    ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : shared.toHandlerKey(key)] = obj[key];\n  }\n  return ret;\n}\n\nconst getPublicInstance = (i) => {\n  if (!i) return null;\n  if (isStatefulComponent(i)) return getComponentPublicInstance(i);\n  return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n  // Move PURE marker to new line to workaround compiler discarding it\n  // due to type annotation\n  /* @__PURE__ */ shared.extend(/* @__PURE__ */ Object.create(null), {\n    $: (i) => i,\n    $el: (i) => i.vnode.el,\n    $data: (i) => i.data,\n    $props: (i) => i.props,\n    $attrs: (i) => i.attrs,\n    $slots: (i) => i.slots,\n    $refs: (i) => i.refs,\n    $parent: (i) => getPublicInstance(i.parent),\n    $root: (i) => getPublicInstance(i.root),\n    $host: (i) => i.ce,\n    $emit: (i) => i.emit,\n    $options: (i) => resolveMergedOptions(i) ,\n    $forceUpdate: (i) => i.f || (i.f = () => {\n      queueJob(i.update);\n    }),\n    $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n    $watch: (i) => instanceWatch.bind(i) \n  })\n);\nconst hasSetupBinding = (state, key) => state !== shared.EMPTY_OBJ && !state.__isScriptSetup && shared.hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n  get({ _: instance }, key) {\n    if (key === \"__v_skip\") {\n      return true;\n    }\n    const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n    let normalizedProps;\n    if (key[0] !== \"$\") {\n      const n = accessCache[key];\n      if (n !== void 0) {\n        switch (n) {\n          case 1 /* SETUP */:\n            return setupState[key];\n          case 2 /* DATA */:\n            return data[key];\n          case 4 /* CONTEXT */:\n            return ctx[key];\n          case 3 /* PROPS */:\n            return props[key];\n        }\n      } else if (hasSetupBinding(setupState, key)) {\n        accessCache[key] = 1 /* SETUP */;\n        return setupState[key];\n      } else if (data !== shared.EMPTY_OBJ && shared.hasOwn(data, key)) {\n        accessCache[key] = 2 /* DATA */;\n        return data[key];\n      } else if (\n        // only cache other properties when instance has declared (thus stable)\n        // props\n        (normalizedProps = instance.propsOptions[0]) && shared.hasOwn(normalizedProps, key)\n      ) {\n        accessCache[key] = 3 /* PROPS */;\n        return props[key];\n      } else if (ctx !== shared.EMPTY_OBJ && shared.hasOwn(ctx, key)) {\n        accessCache[key] = 4 /* CONTEXT */;\n        return ctx[key];\n      } else if (shouldCacheAccess) {\n        accessCache[key] = 0 /* OTHER */;\n      }\n    }\n    const publicGetter = publicPropertiesMap[key];\n    let cssModule, globalProperties;\n    if (publicGetter) {\n      if (key === \"$attrs\") {\n        reactivity.track(instance.attrs, \"get\", \"\");\n      }\n      return publicGetter(instance);\n    } else if (\n      // css module (injected by vue-loader)\n      (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n    ) {\n      return cssModule;\n    } else if (ctx !== shared.EMPTY_OBJ && shared.hasOwn(ctx, key)) {\n      accessCache[key] = 4 /* CONTEXT */;\n      return ctx[key];\n    } else if (\n      // global properties\n      globalProperties = appContext.config.globalProperties, shared.hasOwn(globalProperties, key)\n    ) {\n      {\n        return globalProperties[key];\n      }\n    } else ;\n  },\n  set({ _: instance }, key, value) {\n    const { data, setupState, ctx } = instance;\n    if (hasSetupBinding(setupState, key)) {\n      setupState[key] = value;\n      return true;\n    } else if (data !== shared.EMPTY_OBJ && shared.hasOwn(data, key)) {\n      data[key] = value;\n      return true;\n    } else if (shared.hasOwn(instance.props, key)) {\n      return false;\n    }\n    if (key[0] === \"$\" && key.slice(1) in instance) {\n      return false;\n    } else {\n      {\n        ctx[key] = value;\n      }\n    }\n    return true;\n  },\n  has({\n    _: { data, setupState, accessCache, ctx, appContext, propsOptions }\n  }, key) {\n    let normalizedProps;\n    return !!accessCache[key] || data !== shared.EMPTY_OBJ && shared.hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && shared.hasOwn(normalizedProps, key) || shared.hasOwn(ctx, key) || shared.hasOwn(publicPropertiesMap, key) || shared.hasOwn(appContext.config.globalProperties, key);\n  },\n  defineProperty(target, key, descriptor) {\n    if (descriptor.get != null) {\n      target._.accessCache[key] = 0;\n    } else if (shared.hasOwn(descriptor, \"value\")) {\n      this.set(target, key, descriptor.value, null);\n    }\n    return Reflect.defineProperty(target, key, descriptor);\n  }\n};\nconst RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ shared.extend({}, PublicInstanceProxyHandlers, {\n  get(target, key) {\n    if (key === Symbol.unscopables) {\n      return;\n    }\n    return PublicInstanceProxyHandlers.get(target, key, target);\n  },\n  has(_, key) {\n    const has = key[0] !== \"_\" && !shared.isGloballyAllowed(key);\n    return has;\n  }\n});\n\nfunction defineProps() {\n  return null;\n}\nfunction defineEmits() {\n  return null;\n}\nfunction defineExpose(exposed) {\n}\nfunction defineOptions(options) {\n}\nfunction defineSlots() {\n  return null;\n}\nfunction defineModel() {\n}\nfunction withDefaults(props, defaults) {\n  return null;\n}\nfunction useSlots() {\n  return getContext().slots;\n}\nfunction useAttrs() {\n  return getContext().attrs;\n}\nfunction getContext(calledFunctionName) {\n  const i = getCurrentInstance();\n  return i.setupContext || (i.setupContext = createSetupContext(i));\n}\nfunction normalizePropsOrEmits(props) {\n  return shared.isArray(props) ? props.reduce(\n    (normalized, p) => (normalized[p] = null, normalized),\n    {}\n  ) : props;\n}\nfunction mergeDefaults(raw, defaults) {\n  const props = normalizePropsOrEmits(raw);\n  for (const key in defaults) {\n    if (key.startsWith(\"__skip\")) continue;\n    let opt = props[key];\n    if (opt) {\n      if (shared.isArray(opt) || shared.isFunction(opt)) {\n        opt = props[key] = { type: opt, default: defaults[key] };\n      } else {\n        opt.default = defaults[key];\n      }\n    } else if (opt === null) {\n      opt = props[key] = { default: defaults[key] };\n    } else ;\n    if (opt && defaults[`__skip_${key}`]) {\n      opt.skipFactory = true;\n    }\n  }\n  return props;\n}\nfunction mergeModels(a, b) {\n  if (!a || !b) return a || b;\n  if (shared.isArray(a) && shared.isArray(b)) return a.concat(b);\n  return shared.extend({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b));\n}\nfunction createPropsRestProxy(props, excludedKeys) {\n  const ret = {};\n  for (const key in props) {\n    if (!excludedKeys.includes(key)) {\n      Object.defineProperty(ret, key, {\n        enumerable: true,\n        get: () => props[key]\n      });\n    }\n  }\n  return ret;\n}\nfunction withAsyncContext(getAwaitable) {\n  const ctx = getCurrentInstance();\n  let awaitable = getAwaitable();\n  unsetCurrentInstance();\n  if (shared.isPromise(awaitable)) {\n    awaitable = awaitable.catch((e) => {\n      setCurrentInstance(ctx);\n      throw e;\n    });\n  }\n  return [awaitable, () => setCurrentInstance(ctx)];\n}\n\nlet shouldCacheAccess = true;\nfunction applyOptions(instance) {\n  const options = resolveMergedOptions(instance);\n  const publicThis = instance.proxy;\n  const ctx = instance.ctx;\n  shouldCacheAccess = false;\n  if (options.beforeCreate) {\n    callHook(options.beforeCreate, instance, \"bc\");\n  }\n  const {\n    // state\n    data: dataOptions,\n    computed: computedOptions,\n    methods,\n    watch: watchOptions,\n    provide: provideOptions,\n    inject: injectOptions,\n    // lifecycle\n    created,\n    beforeMount,\n    mounted,\n    beforeUpdate,\n    updated,\n    activated,\n    deactivated,\n    beforeDestroy,\n    beforeUnmount,\n    destroyed,\n    unmounted,\n    render,\n    renderTracked,\n    renderTriggered,\n    errorCaptured,\n    serverPrefetch,\n    // public API\n    expose,\n    inheritAttrs,\n    // assets\n    components,\n    directives,\n    filters\n  } = options;\n  const checkDuplicateProperties = null;\n  if (injectOptions) {\n    resolveInjections(injectOptions, ctx, checkDuplicateProperties);\n  }\n  if (methods) {\n    for (const key in methods) {\n      const methodHandler = methods[key];\n      if (shared.isFunction(methodHandler)) {\n        {\n          ctx[key] = methodHandler.bind(publicThis);\n        }\n      }\n    }\n  }\n  if (dataOptions) {\n    const data = dataOptions.call(publicThis, publicThis);\n    if (!shared.isObject(data)) ; else {\n      instance.data = reactivity.reactive(data);\n    }\n  }\n  shouldCacheAccess = true;\n  if (computedOptions) {\n    for (const key in computedOptions) {\n      const opt = computedOptions[key];\n      const get = shared.isFunction(opt) ? opt.bind(publicThis, publicThis) : shared.isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : shared.NOOP;\n      const set = !shared.isFunction(opt) && shared.isFunction(opt.set) ? opt.set.bind(publicThis) : shared.NOOP;\n      const c = computed({\n        get,\n        set\n      });\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => c.value,\n        set: (v) => c.value = v\n      });\n    }\n  }\n  if (watchOptions) {\n    for (const key in watchOptions) {\n      createWatcher(watchOptions[key], ctx, publicThis, key);\n    }\n  }\n  if (provideOptions) {\n    const provides = shared.isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions;\n    Reflect.ownKeys(provides).forEach((key) => {\n      provide(key, provides[key]);\n    });\n  }\n  if (created) {\n    callHook(created, instance, \"c\");\n  }\n  function registerLifecycleHook(register, hook) {\n    if (shared.isArray(hook)) {\n      hook.forEach((_hook) => register(_hook.bind(publicThis)));\n    } else if (hook) {\n      register(hook.bind(publicThis));\n    }\n  }\n  registerLifecycleHook(onBeforeMount, beforeMount);\n  registerLifecycleHook(onMounted, mounted);\n  registerLifecycleHook(onBeforeUpdate, beforeUpdate);\n  registerLifecycleHook(onUpdated, updated);\n  registerLifecycleHook(onActivated, activated);\n  registerLifecycleHook(onDeactivated, deactivated);\n  registerLifecycleHook(onErrorCaptured, errorCaptured);\n  registerLifecycleHook(onRenderTracked, renderTracked);\n  registerLifecycleHook(onRenderTriggered, renderTriggered);\n  registerLifecycleHook(onBeforeUnmount, beforeUnmount);\n  registerLifecycleHook(onUnmounted, unmounted);\n  registerLifecycleHook(onServerPrefetch, serverPrefetch);\n  if (shared.isArray(expose)) {\n    if (expose.length) {\n      const exposed = instance.exposed || (instance.exposed = {});\n      expose.forEach((key) => {\n        Object.defineProperty(exposed, key, {\n          get: () => publicThis[key],\n          set: (val) => publicThis[key] = val,\n          enumerable: true\n        });\n      });\n    } else if (!instance.exposed) {\n      instance.exposed = {};\n    }\n  }\n  if (render && instance.render === shared.NOOP) {\n    instance.render = render;\n  }\n  if (inheritAttrs != null) {\n    instance.inheritAttrs = inheritAttrs;\n  }\n  if (components) instance.components = components;\n  if (directives) instance.directives = directives;\n  if (serverPrefetch) {\n    markAsyncBoundary(instance);\n  }\n}\nfunction resolveInjections(injectOptions, ctx, checkDuplicateProperties = shared.NOOP) {\n  if (shared.isArray(injectOptions)) {\n    injectOptions = normalizeInject(injectOptions);\n  }\n  for (const key in injectOptions) {\n    const opt = injectOptions[key];\n    let injected;\n    if (shared.isObject(opt)) {\n      if (\"default\" in opt) {\n        injected = inject(\n          opt.from || key,\n          opt.default,\n          true\n        );\n      } else {\n        injected = inject(opt.from || key);\n      }\n    } else {\n      injected = inject(opt);\n    }\n    if (reactivity.isRef(injected)) {\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => injected.value,\n        set: (v) => injected.value = v\n      });\n    } else {\n      ctx[key] = injected;\n    }\n  }\n}\nfunction callHook(hook, instance, type) {\n  callWithAsyncErrorHandling(\n    shared.isArray(hook) ? hook.map((h) => h.bind(instance.proxy)) : hook.bind(instance.proxy),\n    instance,\n    type\n  );\n}\nfunction createWatcher(raw, ctx, publicThis, key) {\n  let getter = key.includes(\".\") ? createPathGetter(publicThis, key) : () => publicThis[key];\n  if (shared.isString(raw)) {\n    const handler = ctx[raw];\n    if (shared.isFunction(handler)) {\n      {\n        watch(getter, handler);\n      }\n    }\n  } else if (shared.isFunction(raw)) {\n    {\n      watch(getter, raw.bind(publicThis));\n    }\n  } else if (shared.isObject(raw)) {\n    if (shared.isArray(raw)) {\n      raw.forEach((r) => createWatcher(r, ctx, publicThis, key));\n    } else {\n      const handler = shared.isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler];\n      if (shared.isFunction(handler)) {\n        watch(getter, handler, raw);\n      }\n    }\n  } else ;\n}\nfunction resolveMergedOptions(instance) {\n  const base = instance.type;\n  const { mixins, extends: extendsOptions } = base;\n  const {\n    mixins: globalMixins,\n    optionsCache: cache,\n    config: { optionMergeStrategies }\n  } = instance.appContext;\n  const cached = cache.get(base);\n  let resolved;\n  if (cached) {\n    resolved = cached;\n  } else if (!globalMixins.length && !mixins && !extendsOptions) {\n    {\n      resolved = base;\n    }\n  } else {\n    resolved = {};\n    if (globalMixins.length) {\n      globalMixins.forEach(\n        (m) => mergeOptions(resolved, m, optionMergeStrategies, true)\n      );\n    }\n    mergeOptions(resolved, base, optionMergeStrategies);\n  }\n  if (shared.isObject(base)) {\n    cache.set(base, resolved);\n  }\n  return resolved;\n}\nfunction mergeOptions(to, from, strats, asMixin = false) {\n  const { mixins, extends: extendsOptions } = from;\n  if (extendsOptions) {\n    mergeOptions(to, extendsOptions, strats, true);\n  }\n  if (mixins) {\n    mixins.forEach(\n      (m) => mergeOptions(to, m, strats, true)\n    );\n  }\n  for (const key in from) {\n    if (asMixin && key === \"expose\") ; else {\n      const strat = internalOptionMergeStrats[key] || strats && strats[key];\n      to[key] = strat ? strat(to[key], from[key]) : from[key];\n    }\n  }\n  return to;\n}\nconst internalOptionMergeStrats = {\n  data: mergeDataFn,\n  props: mergeEmitsOrPropsOptions,\n  emits: mergeEmitsOrPropsOptions,\n  // objects\n  methods: mergeObjectOptions,\n  computed: mergeObjectOptions,\n  // lifecycle\n  beforeCreate: mergeAsArray,\n  created: mergeAsArray,\n  beforeMount: mergeAsArray,\n  mounted: mergeAsArray,\n  beforeUpdate: mergeAsArray,\n  updated: mergeAsArray,\n  beforeDestroy: mergeAsArray,\n  beforeUnmount: mergeAsArray,\n  destroyed: mergeAsArray,\n  unmounted: mergeAsArray,\n  activated: mergeAsArray,\n  deactivated: mergeAsArray,\n  errorCaptured: mergeAsArray,\n  serverPrefetch: mergeAsArray,\n  // assets\n  components: mergeObjectOptions,\n  directives: mergeObjectOptions,\n  // watch\n  watch: mergeWatchOptions,\n  // provide / inject\n  provide: mergeDataFn,\n  inject: mergeInject\n};\nfunction mergeDataFn(to, from) {\n  if (!from) {\n    return to;\n  }\n  if (!to) {\n    return from;\n  }\n  return function mergedDataFn() {\n    return (shared.extend)(\n      shared.isFunction(to) ? to.call(this, this) : to,\n      shared.isFunction(from) ? from.call(this, this) : from\n    );\n  };\n}\nfunction mergeInject(to, from) {\n  return mergeObjectOptions(normalizeInject(to), normalizeInject(from));\n}\nfunction normalizeInject(raw) {\n  if (shared.isArray(raw)) {\n    const res = {};\n    for (let i = 0; i < raw.length; i++) {\n      res[raw[i]] = raw[i];\n    }\n    return res;\n  }\n  return raw;\n}\nfunction mergeAsArray(to, from) {\n  return to ? [...new Set([].concat(to, from))] : from;\n}\nfunction mergeObjectOptions(to, from) {\n  return to ? shared.extend(/* @__PURE__ */ Object.create(null), to, from) : from;\n}\nfunction mergeEmitsOrPropsOptions(to, from) {\n  if (to) {\n    if (shared.isArray(to) && shared.isArray(from)) {\n      return [.../* @__PURE__ */ new Set([...to, ...from])];\n    }\n    return shared.extend(\n      /* @__PURE__ */ Object.create(null),\n      normalizePropsOrEmits(to),\n      normalizePropsOrEmits(from != null ? from : {})\n    );\n  } else {\n    return from;\n  }\n}\nfunction mergeWatchOptions(to, from) {\n  if (!to) return from;\n  if (!from) return to;\n  const merged = shared.extend(/* @__PURE__ */ Object.create(null), to);\n  for (const key in from) {\n    merged[key] = mergeAsArray(to[key], from[key]);\n  }\n  return merged;\n}\n\nfunction createAppContext() {\n  return {\n    app: null,\n    config: {\n      isNativeTag: shared.NO,\n      performance: false,\n      globalProperties: {},\n      optionMergeStrategies: {},\n      errorHandler: void 0,\n      warnHandler: void 0,\n      compilerOptions: {}\n    },\n    mixins: [],\n    components: {},\n    directives: {},\n    provides: /* @__PURE__ */ Object.create(null),\n    optionsCache: /* @__PURE__ */ new WeakMap(),\n    propsCache: /* @__PURE__ */ new WeakMap(),\n    emitsCache: /* @__PURE__ */ new WeakMap()\n  };\n}\nlet uid$1 = 0;\nfunction createAppAPI(render, hydrate) {\n  return function createApp(rootComponent, rootProps = null) {\n    if (!shared.isFunction(rootComponent)) {\n      rootComponent = shared.extend({}, rootComponent);\n    }\n    if (rootProps != null && !shared.isObject(rootProps)) {\n      rootProps = null;\n    }\n    const context = createAppContext();\n    const installedPlugins = /* @__PURE__ */ new WeakSet();\n    const pluginCleanupFns = [];\n    let isMounted = false;\n    const app = context.app = {\n      _uid: uid$1++,\n      _component: rootComponent,\n      _props: rootProps,\n      _container: null,\n      _context: context,\n      _instance: null,\n      version,\n      get config() {\n        return context.config;\n      },\n      set config(v) {\n      },\n      use(plugin, ...options) {\n        if (installedPlugins.has(plugin)) ; else if (plugin && shared.isFunction(plugin.install)) {\n          installedPlugins.add(plugin);\n          plugin.install(app, ...options);\n        } else if (shared.isFunction(plugin)) {\n          installedPlugins.add(plugin);\n          plugin(app, ...options);\n        } else ;\n        return app;\n      },\n      mixin(mixin) {\n        {\n          if (!context.mixins.includes(mixin)) {\n            context.mixins.push(mixin);\n          }\n        }\n        return app;\n      },\n      component(name, component) {\n        if (!component) {\n          return context.components[name];\n        }\n        context.components[name] = component;\n        return app;\n      },\n      directive(name, directive) {\n        if (!directive) {\n          return context.directives[name];\n        }\n        context.directives[name] = directive;\n        return app;\n      },\n      mount(rootContainer, isHydrate, namespace) {\n        if (!isMounted) {\n          const vnode = app._ceVNode || createVNode(rootComponent, rootProps);\n          vnode.appContext = context;\n          if (namespace === true) {\n            namespace = \"svg\";\n          } else if (namespace === false) {\n            namespace = void 0;\n          }\n          if (isHydrate && hydrate) {\n            hydrate(vnode, rootContainer);\n          } else {\n            render(vnode, rootContainer, namespace);\n          }\n          isMounted = true;\n          app._container = rootContainer;\n          rootContainer.__vue_app__ = app;\n          return getComponentPublicInstance(vnode.component);\n        }\n      },\n      onUnmount(cleanupFn) {\n        pluginCleanupFns.push(cleanupFn);\n      },\n      unmount() {\n        if (isMounted) {\n          callWithAsyncErrorHandling(\n            pluginCleanupFns,\n            app._instance,\n            16\n          );\n          render(null, app._container);\n          delete app._container.__vue_app__;\n        }\n      },\n      provide(key, value) {\n        context.provides[key] = value;\n        return app;\n      },\n      runWithContext(fn) {\n        const lastApp = currentApp;\n        currentApp = app;\n        try {\n          return fn();\n        } finally {\n          currentApp = lastApp;\n        }\n      }\n    };\n    return app;\n  };\n}\nlet currentApp = null;\n\nfunction provide(key, value) {\n  if (!currentInstance) ; else {\n    let provides = currentInstance.provides;\n    const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n    if (parentProvides === provides) {\n      provides = currentInstance.provides = Object.create(parentProvides);\n    }\n    provides[key] = value;\n  }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n  const instance = getCurrentInstance();\n  if (instance || currentApp) {\n    let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;\n    if (provides && key in provides) {\n      return provides[key];\n    } else if (arguments.length > 1) {\n      return treatDefaultAsFactory && shared.isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue;\n    } else ;\n  }\n}\nfunction hasInjectionContext() {\n  return !!(getCurrentInstance() || currentApp);\n}\n\nconst internalObjectProto = {};\nconst createInternalObject = () => Object.create(internalObjectProto);\nconst isInternalObject = (obj) => Object.getPrototypeOf(obj) === internalObjectProto;\n\nfunction initProps(instance, rawProps, isStateful, isSSR = false) {\n  const props = {};\n  const attrs = createInternalObject();\n  instance.propsDefaults = /* @__PURE__ */ Object.create(null);\n  setFullProps(instance, rawProps, props, attrs);\n  for (const key in instance.propsOptions[0]) {\n    if (!(key in props)) {\n      props[key] = void 0;\n    }\n  }\n  if (isStateful) {\n    instance.props = isSSR ? props : reactivity.shallowReactive(props);\n  } else {\n    if (!instance.type.props) {\n      instance.props = attrs;\n    } else {\n      instance.props = props;\n    }\n  }\n  instance.attrs = attrs;\n}\nfunction updateProps(instance, rawProps, rawPrevProps, optimized) {\n  const {\n    props,\n    attrs,\n    vnode: { patchFlag }\n  } = instance;\n  const rawCurrentProps = reactivity.toRaw(props);\n  const [options] = instance.propsOptions;\n  let hasAttrsChanged = false;\n  if (\n    // always force full diff in dev\n    // - #1942 if hmr is enabled with sfc component\n    // - vite#872 non-sfc component used by sfc component\n    (optimized || patchFlag > 0) && !(patchFlag & 16)\n  ) {\n    if (patchFlag & 8) {\n      const propsToUpdate = instance.vnode.dynamicProps;\n      for (let i = 0; i < propsToUpdate.length; i++) {\n        let key = propsToUpdate[i];\n        if (isEmitListener(instance.emitsOptions, key)) {\n          continue;\n        }\n        const value = rawProps[key];\n        if (options) {\n          if (shared.hasOwn(attrs, key)) {\n            if (value !== attrs[key]) {\n              attrs[key] = value;\n              hasAttrsChanged = true;\n            }\n          } else {\n            const camelizedKey = shared.camelize(key);\n            props[camelizedKey] = resolvePropValue(\n              options,\n              rawCurrentProps,\n              camelizedKey,\n              value,\n              instance,\n              false\n            );\n          }\n        } else {\n          if (value !== attrs[key]) {\n            attrs[key] = value;\n            hasAttrsChanged = true;\n          }\n        }\n      }\n    }\n  } else {\n    if (setFullProps(instance, rawProps, props, attrs)) {\n      hasAttrsChanged = true;\n    }\n    let kebabKey;\n    for (const key in rawCurrentProps) {\n      if (!rawProps || // for camelCase\n      !shared.hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case\n      // and converted to camelCase (#955)\n      ((kebabKey = shared.hyphenate(key)) === key || !shared.hasOwn(rawProps, kebabKey))) {\n        if (options) {\n          if (rawPrevProps && // for camelCase\n          (rawPrevProps[key] !== void 0 || // for kebab-case\n          rawPrevProps[kebabKey] !== void 0)) {\n            props[key] = resolvePropValue(\n              options,\n              rawCurrentProps,\n              key,\n              void 0,\n              instance,\n              true\n            );\n          }\n        } else {\n          delete props[key];\n        }\n      }\n    }\n    if (attrs !== rawCurrentProps) {\n      for (const key in attrs) {\n        if (!rawProps || !shared.hasOwn(rawProps, key) && true) {\n          delete attrs[key];\n          hasAttrsChanged = true;\n        }\n      }\n    }\n  }\n  if (hasAttrsChanged) {\n    reactivity.trigger(instance.attrs, \"set\", \"\");\n  }\n}\nfunction setFullProps(instance, rawProps, props, attrs) {\n  const [options, needCastKeys] = instance.propsOptions;\n  let hasAttrsChanged = false;\n  let rawCastValues;\n  if (rawProps) {\n    for (let key in rawProps) {\n      if (shared.isReservedProp(key)) {\n        continue;\n      }\n      const value = rawProps[key];\n      let camelKey;\n      if (options && shared.hasOwn(options, camelKey = shared.camelize(key))) {\n        if (!needCastKeys || !needCastKeys.includes(camelKey)) {\n          props[camelKey] = value;\n        } else {\n          (rawCastValues || (rawCastValues = {}))[camelKey] = value;\n        }\n      } else if (!isEmitListener(instance.emitsOptions, key)) {\n        if (!(key in attrs) || value !== attrs[key]) {\n          attrs[key] = value;\n          hasAttrsChanged = true;\n        }\n      }\n    }\n  }\n  if (needCastKeys) {\n    const rawCurrentProps = reactivity.toRaw(props);\n    const castValues = rawCastValues || shared.EMPTY_OBJ;\n    for (let i = 0; i < needCastKeys.length; i++) {\n      const key = needCastKeys[i];\n      props[key] = resolvePropValue(\n        options,\n        rawCurrentProps,\n        key,\n        castValues[key],\n        instance,\n        !shared.hasOwn(castValues, key)\n      );\n    }\n  }\n  return hasAttrsChanged;\n}\nfunction resolvePropValue(options, props, key, value, instance, isAbsent) {\n  const opt = options[key];\n  if (opt != null) {\n    const hasDefault = shared.hasOwn(opt, \"default\");\n    if (hasDefault && value === void 0) {\n      const defaultValue = opt.default;\n      if (opt.type !== Function && !opt.skipFactory && shared.isFunction(defaultValue)) {\n        const { propsDefaults } = instance;\n        if (key in propsDefaults) {\n          value = propsDefaults[key];\n        } else {\n          const reset = setCurrentInstance(instance);\n          value = propsDefaults[key] = defaultValue.call(\n            null,\n            props\n          );\n          reset();\n        }\n      } else {\n        value = defaultValue;\n      }\n      if (instance.ce) {\n        instance.ce._setProp(key, value);\n      }\n    }\n    if (opt[0 /* shouldCast */]) {\n      if (isAbsent && !hasDefault) {\n        value = false;\n      } else if (opt[1 /* shouldCastTrue */] && (value === \"\" || value === shared.hyphenate(key))) {\n        value = true;\n      }\n    }\n  }\n  return value;\n}\nconst mixinPropsCache = /* @__PURE__ */ new WeakMap();\nfunction normalizePropsOptions(comp, appContext, asMixin = false) {\n  const cache = asMixin ? mixinPropsCache : appContext.propsCache;\n  const cached = cache.get(comp);\n  if (cached) {\n    return cached;\n  }\n  const raw = comp.props;\n  const normalized = {};\n  const needCastKeys = [];\n  let hasExtends = false;\n  if (!shared.isFunction(comp)) {\n    const extendProps = (raw2) => {\n      hasExtends = true;\n      const [props, keys] = normalizePropsOptions(raw2, appContext, true);\n      shared.extend(normalized, props);\n      if (keys) needCastKeys.push(...keys);\n    };\n    if (!asMixin && appContext.mixins.length) {\n      appContext.mixins.forEach(extendProps);\n    }\n    if (comp.extends) {\n      extendProps(comp.extends);\n    }\n    if (comp.mixins) {\n      comp.mixins.forEach(extendProps);\n    }\n  }\n  if (!raw && !hasExtends) {\n    if (shared.isObject(comp)) {\n      cache.set(comp, shared.EMPTY_ARR);\n    }\n    return shared.EMPTY_ARR;\n  }\n  if (shared.isArray(raw)) {\n    for (let i = 0; i < raw.length; i++) {\n      const normalizedKey = shared.camelize(raw[i]);\n      if (validatePropName(normalizedKey)) {\n        normalized[normalizedKey] = shared.EMPTY_OBJ;\n      }\n    }\n  } else if (raw) {\n    for (const key in raw) {\n      const normalizedKey = shared.camelize(key);\n      if (validatePropName(normalizedKey)) {\n        const opt = raw[key];\n        const prop = normalized[normalizedKey] = shared.isArray(opt) || shared.isFunction(opt) ? { type: opt } : shared.extend({}, opt);\n        const propType = prop.type;\n        let shouldCast = false;\n        let shouldCastTrue = true;\n        if (shared.isArray(propType)) {\n          for (let index = 0; index < propType.length; ++index) {\n            const type = propType[index];\n            const typeName = shared.isFunction(type) && type.name;\n            if (typeName === \"Boolean\") {\n              shouldCast = true;\n              break;\n            } else if (typeName === \"String\") {\n              shouldCastTrue = false;\n            }\n          }\n        } else {\n          shouldCast = shared.isFunction(propType) && propType.name === \"Boolean\";\n        }\n        prop[0 /* shouldCast */] = shouldCast;\n        prop[1 /* shouldCastTrue */] = shouldCastTrue;\n        if (shouldCast || shared.hasOwn(prop, \"default\")) {\n          needCastKeys.push(normalizedKey);\n        }\n      }\n    }\n  }\n  const res = [normalized, needCastKeys];\n  if (shared.isObject(comp)) {\n    cache.set(comp, res);\n  }\n  return res;\n}\nfunction validatePropName(key) {\n  if (key[0] !== \"$\" && !shared.isReservedProp(key)) {\n    return true;\n  }\n  return false;\n}\n\nconst isInternalKey = (key) => key === \"_\" || key === \"__\" || key === \"_ctx\" || key === \"$stable\";\nconst normalizeSlotValue = (value) => shared.isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)];\nconst normalizeSlot = (key, rawSlot, ctx) => {\n  if (rawSlot._n) {\n    return rawSlot;\n  }\n  const normalized = withCtx((...args) => {\n    if (false) ;\n    return normalizeSlotValue(rawSlot(...args));\n  }, ctx);\n  normalized._c = false;\n  return normalized;\n};\nconst normalizeObjectSlots = (rawSlots, slots, instance) => {\n  const ctx = rawSlots._ctx;\n  for (const key in rawSlots) {\n    if (isInternalKey(key)) continue;\n    const value = rawSlots[key];\n    if (shared.isFunction(value)) {\n      slots[key] = normalizeSlot(key, value, ctx);\n    } else if (value != null) {\n      const normalized = normalizeSlotValue(value);\n      slots[key] = () => normalized;\n    }\n  }\n};\nconst normalizeVNodeSlots = (instance, children) => {\n  const normalized = normalizeSlotValue(children);\n  instance.slots.default = () => normalized;\n};\nconst assignSlots = (slots, children, optimized) => {\n  for (const key in children) {\n    if (optimized || !isInternalKey(key)) {\n      slots[key] = children[key];\n    }\n  }\n};\nconst initSlots = (instance, children, optimized) => {\n  const slots = instance.slots = createInternalObject();\n  if (instance.vnode.shapeFlag & 32) {\n    const cacheIndexes = children.__;\n    if (cacheIndexes) shared.def(slots, \"__\", cacheIndexes, true);\n    const type = children._;\n    if (type) {\n      assignSlots(slots, children, optimized);\n      if (optimized) {\n        shared.def(slots, \"_\", type, true);\n      }\n    } else {\n      normalizeObjectSlots(children, slots);\n    }\n  } else if (children) {\n    normalizeVNodeSlots(instance, children);\n  }\n};\nconst updateSlots = (instance, children, optimized) => {\n  const { vnode, slots } = instance;\n  let needDeletionCheck = true;\n  let deletionComparisonTarget = shared.EMPTY_OBJ;\n  if (vnode.shapeFlag & 32) {\n    const type = children._;\n    if (type) {\n      if (optimized && type === 1) {\n        needDeletionCheck = false;\n      } else {\n        assignSlots(slots, children, optimized);\n      }\n    } else {\n      needDeletionCheck = !children.$stable;\n      normalizeObjectSlots(children, slots);\n    }\n    deletionComparisonTarget = children;\n  } else if (children) {\n    normalizeVNodeSlots(instance, children);\n    deletionComparisonTarget = { default: 1 };\n  }\n  if (needDeletionCheck) {\n    for (const key in slots) {\n      if (!isInternalKey(key) && deletionComparisonTarget[key] == null) {\n        delete slots[key];\n      }\n    }\n  }\n};\n\nconst queuePostRenderEffect = queueEffectWithSuspense ;\nfunction createRenderer(options) {\n  return baseCreateRenderer(options);\n}\nfunction createHydrationRenderer(options) {\n  return baseCreateRenderer(options, createHydrationFunctions);\n}\nfunction baseCreateRenderer(options, createHydrationFns) {\n  const target = shared.getGlobalThis();\n  target.__VUE__ = true;\n  const {\n    insert: hostInsert,\n    remove: hostRemove,\n    patchProp: hostPatchProp,\n    createElement: hostCreateElement,\n    createText: hostCreateText,\n    createComment: hostCreateComment,\n    setText: hostSetText,\n    setElementText: hostSetElementText,\n    parentNode: hostParentNode,\n    nextSibling: hostNextSibling,\n    setScopeId: hostSetScopeId = shared.NOOP,\n    insertStaticContent: hostInsertStaticContent\n  } = options;\n  const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, namespace = void 0, slotScopeIds = null, optimized = !!n2.dynamicChildren) => {\n    if (n1 === n2) {\n      return;\n    }\n    if (n1 && !isSameVNodeType(n1, n2)) {\n      anchor = getNextHostNode(n1);\n      unmount(n1, parentComponent, parentSuspense, true);\n      n1 = null;\n    }\n    if (n2.patchFlag === -2) {\n      optimized = false;\n      n2.dynamicChildren = null;\n    }\n    const { type, ref, shapeFlag } = n2;\n    switch (type) {\n      case Text:\n        processText(n1, n2, container, anchor);\n        break;\n      case Comment:\n        processCommentNode(n1, n2, container, anchor);\n        break;\n      case Static:\n        if (n1 == null) {\n          mountStaticNode(n2, container, anchor, namespace);\n        }\n        break;\n      case Fragment:\n        processFragment(\n          n1,\n          n2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        break;\n      default:\n        if (shapeFlag & 1) {\n          processElement(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        } else if (shapeFlag & 6) {\n          processComponent(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        } else if (shapeFlag & 64) {\n          type.process(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized,\n            internals\n          );\n        } else if (shapeFlag & 128) {\n          type.process(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized,\n            internals\n          );\n        } else ;\n    }\n    if (ref != null && parentComponent) {\n      setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);\n    } else if (ref == null && n1 && n1.ref != null) {\n      setRef(n1.ref, null, parentSuspense, n1, true);\n    }\n  };\n  const processText = (n1, n2, container, anchor) => {\n    if (n1 == null) {\n      hostInsert(\n        n2.el = hostCreateText(n2.children),\n        container,\n        anchor\n      );\n    } else {\n      const el = n2.el = n1.el;\n      if (n2.children !== n1.children) {\n        hostSetText(el, n2.children);\n      }\n    }\n  };\n  const processCommentNode = (n1, n2, container, anchor) => {\n    if (n1 == null) {\n      hostInsert(\n        n2.el = hostCreateComment(n2.children || \"\"),\n        container,\n        anchor\n      );\n    } else {\n      n2.el = n1.el;\n    }\n  };\n  const mountStaticNode = (n2, container, anchor, namespace) => {\n    [n2.el, n2.anchor] = hostInsertStaticContent(\n      n2.children,\n      container,\n      anchor,\n      namespace,\n      n2.el,\n      n2.anchor\n    );\n  };\n  const moveStaticNode = ({ el, anchor }, container, nextSibling) => {\n    let next;\n    while (el && el !== anchor) {\n      next = hostNextSibling(el);\n      hostInsert(el, container, nextSibling);\n      el = next;\n    }\n    hostInsert(anchor, container, nextSibling);\n  };\n  const removeStaticNode = ({ el, anchor }) => {\n    let next;\n    while (el && el !== anchor) {\n      next = hostNextSibling(el);\n      hostRemove(el);\n      el = next;\n    }\n    hostRemove(anchor);\n  };\n  const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    if (n2.type === \"svg\") {\n      namespace = \"svg\";\n    } else if (n2.type === \"math\") {\n      namespace = \"mathml\";\n    }\n    if (n1 == null) {\n      mountElement(\n        n2,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    } else {\n      patchElement(\n        n1,\n        n2,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    }\n  };\n  const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    let el;\n    let vnodeHook;\n    const { props, shapeFlag, transition, dirs } = vnode;\n    el = vnode.el = hostCreateElement(\n      vnode.type,\n      namespace,\n      props && props.is,\n      props\n    );\n    if (shapeFlag & 8) {\n      hostSetElementText(el, vnode.children);\n    } else if (shapeFlag & 16) {\n      mountChildren(\n        vnode.children,\n        el,\n        null,\n        parentComponent,\n        parentSuspense,\n        resolveChildrenNamespace(vnode, namespace),\n        slotScopeIds,\n        optimized\n      );\n    }\n    if (dirs) {\n      invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n    }\n    setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);\n    if (props) {\n      for (const key in props) {\n        if (key !== \"value\" && !shared.isReservedProp(key)) {\n          hostPatchProp(el, key, null, props[key], namespace, parentComponent);\n        }\n      }\n      if (\"value\" in props) {\n        hostPatchProp(el, \"value\", null, props.value, namespace);\n      }\n      if (vnodeHook = props.onVnodeBeforeMount) {\n        invokeVNodeHook(vnodeHook, parentComponent, vnode);\n      }\n    }\n    if (dirs) {\n      invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n    }\n    const needCallTransitionHooks = needTransition(parentSuspense, transition);\n    if (needCallTransitionHooks) {\n      transition.beforeEnter(el);\n    }\n    hostInsert(el, container, anchor);\n    if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n        needCallTransitionHooks && transition.enter(el);\n        dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n      }, parentSuspense);\n    }\n  };\n  const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {\n    if (scopeId) {\n      hostSetScopeId(el, scopeId);\n    }\n    if (slotScopeIds) {\n      for (let i = 0; i < slotScopeIds.length; i++) {\n        hostSetScopeId(el, slotScopeIds[i]);\n      }\n    }\n    if (parentComponent) {\n      let subTree = parentComponent.subTree;\n      if (vnode === subTree || isSuspense(subTree.type) && (subTree.ssContent === vnode || subTree.ssFallback === vnode)) {\n        const parentVNode = parentComponent.vnode;\n        setScopeId(\n          el,\n          parentVNode,\n          parentVNode.scopeId,\n          parentVNode.slotScopeIds,\n          parentComponent.parent\n        );\n      }\n    }\n  };\n  const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => {\n    for (let i = start; i < children.length; i++) {\n      const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]);\n      patch(\n        null,\n        child,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    }\n  };\n  const patchElement = (n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    const el = n2.el = n1.el;\n    let { patchFlag, dynamicChildren, dirs } = n2;\n    patchFlag |= n1.patchFlag & 16;\n    const oldProps = n1.props || shared.EMPTY_OBJ;\n    const newProps = n2.props || shared.EMPTY_OBJ;\n    let vnodeHook;\n    parentComponent && toggleRecurse(parentComponent, false);\n    if (vnodeHook = newProps.onVnodeBeforeUpdate) {\n      invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n    }\n    if (dirs) {\n      invokeDirectiveHook(n2, n1, parentComponent, \"beforeUpdate\");\n    }\n    parentComponent && toggleRecurse(parentComponent, true);\n    if (oldProps.innerHTML && newProps.innerHTML == null || oldProps.textContent && newProps.textContent == null) {\n      hostSetElementText(el, \"\");\n    }\n    if (dynamicChildren) {\n      patchBlockChildren(\n        n1.dynamicChildren,\n        dynamicChildren,\n        el,\n        parentComponent,\n        parentSuspense,\n        resolveChildrenNamespace(n2, namespace),\n        slotScopeIds\n      );\n    } else if (!optimized) {\n      patchChildren(\n        n1,\n        n2,\n        el,\n        null,\n        parentComponent,\n        parentSuspense,\n        resolveChildrenNamespace(n2, namespace),\n        slotScopeIds,\n        false\n      );\n    }\n    if (patchFlag > 0) {\n      if (patchFlag & 16) {\n        patchProps(el, oldProps, newProps, parentComponent, namespace);\n      } else {\n        if (patchFlag & 2) {\n          if (oldProps.class !== newProps.class) {\n            hostPatchProp(el, \"class\", null, newProps.class, namespace);\n          }\n        }\n        if (patchFlag & 4) {\n          hostPatchProp(el, \"style\", oldProps.style, newProps.style, namespace);\n        }\n        if (patchFlag & 8) {\n          const propsToUpdate = n2.dynamicProps;\n          for (let i = 0; i < propsToUpdate.length; i++) {\n            const key = propsToUpdate[i];\n            const prev = oldProps[key];\n            const next = newProps[key];\n            if (next !== prev || key === \"value\") {\n              hostPatchProp(el, key, prev, next, namespace, parentComponent);\n            }\n          }\n        }\n      }\n      if (patchFlag & 1) {\n        if (n1.children !== n2.children) {\n          hostSetElementText(el, n2.children);\n        }\n      }\n    } else if (!optimized && dynamicChildren == null) {\n      patchProps(el, oldProps, newProps, parentComponent, namespace);\n    }\n    if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n        dirs && invokeDirectiveHook(n2, n1, parentComponent, \"updated\");\n      }, parentSuspense);\n    }\n  };\n  const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, namespace, slotScopeIds) => {\n    for (let i = 0; i < newChildren.length; i++) {\n      const oldVNode = oldChildren[i];\n      const newVNode = newChildren[i];\n      const container = (\n        // oldVNode may be an errored async setup() component inside Suspense\n        // which will not have a mounted element\n        oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent\n        // of the Fragment itself so it can move its children.\n        (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement\n        // which also requires the correct parent container\n        !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.\n        oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldVNode.el) : (\n          // In other cases, the parent container is not actually used so we\n          // just pass the block element here to avoid a DOM parentNode call.\n          fallbackContainer\n        )\n      );\n      patch(\n        oldVNode,\n        newVNode,\n        container,\n        null,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        true\n      );\n    }\n  };\n  const patchProps = (el, oldProps, newProps, parentComponent, namespace) => {\n    if (oldProps !== newProps) {\n      if (oldProps !== shared.EMPTY_OBJ) {\n        for (const key in oldProps) {\n          if (!shared.isReservedProp(key) && !(key in newProps)) {\n            hostPatchProp(\n              el,\n              key,\n              oldProps[key],\n              null,\n              namespace,\n              parentComponent\n            );\n          }\n        }\n      }\n      for (const key in newProps) {\n        if (shared.isReservedProp(key)) continue;\n        const next = newProps[key];\n        const prev = oldProps[key];\n        if (next !== prev && key !== \"value\") {\n          hostPatchProp(el, key, prev, next, namespace, parentComponent);\n        }\n      }\n      if (\"value\" in newProps) {\n        hostPatchProp(el, \"value\", oldProps.value, newProps.value, namespace);\n      }\n    }\n  };\n  const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(\"\");\n    const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(\"\");\n    let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;\n    if (fragmentSlotScopeIds) {\n      slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n    }\n    if (n1 == null) {\n      hostInsert(fragmentStartAnchor, container, anchor);\n      hostInsert(fragmentEndAnchor, container, anchor);\n      mountChildren(\n        // #10007\n        // such fragment like `<></>` will be compiled into\n        // a fragment which doesn't have a children.\n        // In this case fallback to an empty array\n        n2.children || [],\n        container,\n        fragmentEndAnchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    } else {\n      if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result\n      // of renderSlot() with no valid children\n      n1.dynamicChildren) {\n        patchBlockChildren(\n          n1.dynamicChildren,\n          dynamicChildren,\n          container,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds\n        );\n        if (\n          // #2080 if the stable fragment has a key, it's a <template v-for> that may\n          //  get moved around. Make sure all root level vnodes inherit el.\n          // #2134 or if it's a component root, it may also get moved around\n          // as the component is being moved.\n          n2.key != null || parentComponent && n2 === parentComponent.subTree\n        ) {\n          traverseStaticChildren(\n            n1,\n            n2,\n            true\n            /* shallow */\n          );\n        }\n      } else {\n        patchChildren(\n          n1,\n          n2,\n          container,\n          fragmentEndAnchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n      }\n    }\n  };\n  const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    n2.slotScopeIds = slotScopeIds;\n    if (n1 == null) {\n      if (n2.shapeFlag & 512) {\n        parentComponent.ctx.activate(\n          n2,\n          container,\n          anchor,\n          namespace,\n          optimized\n        );\n      } else {\n        mountComponent(\n          n2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          optimized\n        );\n      }\n    } else {\n      updateComponent(n1, n2, optimized);\n    }\n  };\n  const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, namespace, optimized) => {\n    const instance = (initialVNode.component = createComponentInstance(\n      initialVNode,\n      parentComponent,\n      parentSuspense\n    ));\n    if (isKeepAlive(initialVNode)) {\n      instance.ctx.renderer = internals;\n    }\n    {\n      setupComponent(instance, false, optimized);\n    }\n    if (instance.asyncDep) {\n      parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect, optimized);\n      if (!initialVNode.el) {\n        const placeholder = instance.subTree = createVNode(Comment);\n        processCommentNode(null, placeholder, container, anchor);\n        initialVNode.placeholder = placeholder.el;\n      }\n    } else {\n      setupRenderEffect(\n        instance,\n        initialVNode,\n        container,\n        anchor,\n        parentSuspense,\n        namespace,\n        optimized\n      );\n    }\n  };\n  const updateComponent = (n1, n2, optimized) => {\n    const instance = n2.component = n1.component;\n    if (shouldUpdateComponent(n1, n2, optimized)) {\n      if (instance.asyncDep && !instance.asyncResolved) {\n        updateComponentPreRender(instance, n2, optimized);\n        return;\n      } else {\n        instance.next = n2;\n        instance.update();\n      }\n    } else {\n      n2.el = n1.el;\n      instance.vnode = n2;\n    }\n  };\n  const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, namespace, optimized) => {\n    const componentUpdateFn = () => {\n      if (!instance.isMounted) {\n        let vnodeHook;\n        const { el, props } = initialVNode;\n        const { bm, m, parent, root, type } = instance;\n        const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);\n        toggleRecurse(instance, false);\n        if (bm) {\n          shared.invokeArrayFns(bm);\n        }\n        if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) {\n          invokeVNodeHook(vnodeHook, parent, initialVNode);\n        }\n        toggleRecurse(instance, true);\n        if (el && hydrateNode) {\n          const hydrateSubTree = () => {\n            instance.subTree = renderComponentRoot(instance);\n            hydrateNode(\n              el,\n              instance.subTree,\n              instance,\n              parentSuspense,\n              null\n            );\n          };\n          if (isAsyncWrapperVNode && type.__asyncHydrate) {\n            type.__asyncHydrate(\n              el,\n              instance,\n              hydrateSubTree\n            );\n          } else {\n            hydrateSubTree();\n          }\n        } else {\n          if (root.ce && // @ts-expect-error _def is private\n          root.ce._def.shadowRoot !== false) {\n            root.ce._injectChildStyle(type);\n          }\n          const subTree = instance.subTree = renderComponentRoot(instance);\n          patch(\n            null,\n            subTree,\n            container,\n            anchor,\n            instance,\n            parentSuspense,\n            namespace\n          );\n          initialVNode.el = subTree.el;\n        }\n        if (m) {\n          queuePostRenderEffect(m, parentSuspense);\n        }\n        if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) {\n          const scopedInitialVNode = initialVNode;\n          queuePostRenderEffect(\n            () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode),\n            parentSuspense\n          );\n        }\n        if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) {\n          instance.a && queuePostRenderEffect(instance.a, parentSuspense);\n        }\n        instance.isMounted = true;\n        initialVNode = container = anchor = null;\n      } else {\n        let { next, bu, u, parent, vnode } = instance;\n        {\n          const nonHydratedAsyncRoot = locateNonHydratedAsyncRoot(instance);\n          if (nonHydratedAsyncRoot) {\n            if (next) {\n              next.el = vnode.el;\n              updateComponentPreRender(instance, next, optimized);\n            }\n            nonHydratedAsyncRoot.asyncDep.then(() => {\n              if (!instance.isUnmounted) {\n                componentUpdateFn();\n              }\n            });\n            return;\n          }\n        }\n        let originNext = next;\n        let vnodeHook;\n        toggleRecurse(instance, false);\n        if (next) {\n          next.el = vnode.el;\n          updateComponentPreRender(instance, next, optimized);\n        } else {\n          next = vnode;\n        }\n        if (bu) {\n          shared.invokeArrayFns(bu);\n        }\n        if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) {\n          invokeVNodeHook(vnodeHook, parent, next, vnode);\n        }\n        toggleRecurse(instance, true);\n        const nextTree = renderComponentRoot(instance);\n        const prevTree = instance.subTree;\n        instance.subTree = nextTree;\n        patch(\n          prevTree,\n          nextTree,\n          // parent may have changed if it's in a teleport\n          hostParentNode(prevTree.el),\n          // anchor may have changed if it's in a fragment\n          getNextHostNode(prevTree),\n          instance,\n          parentSuspense,\n          namespace\n        );\n        next.el = nextTree.el;\n        if (originNext === null) {\n          updateHOCHostEl(instance, nextTree.el);\n        }\n        if (u) {\n          queuePostRenderEffect(u, parentSuspense);\n        }\n        if (vnodeHook = next.props && next.props.onVnodeUpdated) {\n          queuePostRenderEffect(\n            () => invokeVNodeHook(vnodeHook, parent, next, vnode),\n            parentSuspense\n          );\n        }\n      }\n    };\n    instance.scope.on();\n    const effect = instance.effect = new reactivity.ReactiveEffect(componentUpdateFn);\n    instance.scope.off();\n    const update = instance.update = effect.run.bind(effect);\n    const job = instance.job = effect.runIfDirty.bind(effect);\n    job.i = instance;\n    job.id = instance.uid;\n    effect.scheduler = () => queueJob(job);\n    toggleRecurse(instance, true);\n    update();\n  };\n  const updateComponentPreRender = (instance, nextVNode, optimized) => {\n    nextVNode.component = instance;\n    const prevProps = instance.vnode.props;\n    instance.vnode = nextVNode;\n    instance.next = null;\n    updateProps(instance, nextVNode.props, prevProps, optimized);\n    updateSlots(instance, nextVNode.children, optimized);\n    reactivity.pauseTracking();\n    flushPreFlushCbs(instance);\n    reactivity.resetTracking();\n  };\n  const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized = false) => {\n    const c1 = n1 && n1.children;\n    const prevShapeFlag = n1 ? n1.shapeFlag : 0;\n    const c2 = n2.children;\n    const { patchFlag, shapeFlag } = n2;\n    if (patchFlag > 0) {\n      if (patchFlag & 128) {\n        patchKeyedChildren(\n          c1,\n          c2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        return;\n      } else if (patchFlag & 256) {\n        patchUnkeyedChildren(\n          c1,\n          c2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        return;\n      }\n    }\n    if (shapeFlag & 8) {\n      if (prevShapeFlag & 16) {\n        unmountChildren(c1, parentComponent, parentSuspense);\n      }\n      if (c2 !== c1) {\n        hostSetElementText(container, c2);\n      }\n    } else {\n      if (prevShapeFlag & 16) {\n        if (shapeFlag & 16) {\n          patchKeyedChildren(\n            c1,\n            c2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        } else {\n          unmountChildren(c1, parentComponent, parentSuspense, true);\n        }\n      } else {\n        if (prevShapeFlag & 8) {\n          hostSetElementText(container, \"\");\n        }\n        if (shapeFlag & 16) {\n          mountChildren(\n            c2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        }\n      }\n    }\n  };\n  const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    c1 = c1 || shared.EMPTY_ARR;\n    c2 = c2 || shared.EMPTY_ARR;\n    const oldLength = c1.length;\n    const newLength = c2.length;\n    const commonLength = Math.min(oldLength, newLength);\n    let i;\n    for (i = 0; i < commonLength; i++) {\n      const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n      patch(\n        c1[i],\n        nextChild,\n        container,\n        null,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    }\n    if (oldLength > newLength) {\n      unmountChildren(\n        c1,\n        parentComponent,\n        parentSuspense,\n        true,\n        false,\n        commonLength\n      );\n    } else {\n      mountChildren(\n        c2,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized,\n        commonLength\n      );\n    }\n  };\n  const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    let i = 0;\n    const l2 = c2.length;\n    let e1 = c1.length - 1;\n    let e2 = l2 - 1;\n    while (i <= e1 && i <= e2) {\n      const n1 = c1[i];\n      const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n      if (isSameVNodeType(n1, n2)) {\n        patch(\n          n1,\n          n2,\n          container,\n          null,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n      } else {\n        break;\n      }\n      i++;\n    }\n    while (i <= e1 && i <= e2) {\n      const n1 = c1[e1];\n      const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]);\n      if (isSameVNodeType(n1, n2)) {\n        patch(\n          n1,\n          n2,\n          container,\n          null,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n      } else {\n        break;\n      }\n      e1--;\n      e2--;\n    }\n    if (i > e1) {\n      if (i <= e2) {\n        const nextPos = e2 + 1;\n        const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;\n        while (i <= e2) {\n          patch(\n            null,\n            c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]),\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n          i++;\n        }\n      }\n    } else if (i > e2) {\n      while (i <= e1) {\n        unmount(c1[i], parentComponent, parentSuspense, true);\n        i++;\n      }\n    } else {\n      const s1 = i;\n      const s2 = i;\n      const keyToNewIndexMap = /* @__PURE__ */ new Map();\n      for (i = s2; i <= e2; i++) {\n        const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n        if (nextChild.key != null) {\n          keyToNewIndexMap.set(nextChild.key, i);\n        }\n      }\n      let j;\n      let patched = 0;\n      const toBePatched = e2 - s2 + 1;\n      let moved = false;\n      let maxNewIndexSoFar = 0;\n      const newIndexToOldIndexMap = new Array(toBePatched);\n      for (i = 0; i < toBePatched; i++) newIndexToOldIndexMap[i] = 0;\n      for (i = s1; i <= e1; i++) {\n        const prevChild = c1[i];\n        if (patched >= toBePatched) {\n          unmount(prevChild, parentComponent, parentSuspense, true);\n          continue;\n        }\n        let newIndex;\n        if (prevChild.key != null) {\n          newIndex = keyToNewIndexMap.get(prevChild.key);\n        } else {\n          for (j = s2; j <= e2; j++) {\n            if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) {\n              newIndex = j;\n              break;\n            }\n          }\n        }\n        if (newIndex === void 0) {\n          unmount(prevChild, parentComponent, parentSuspense, true);\n        } else {\n          newIndexToOldIndexMap[newIndex - s2] = i + 1;\n          if (newIndex >= maxNewIndexSoFar) {\n            maxNewIndexSoFar = newIndex;\n          } else {\n            moved = true;\n          }\n          patch(\n            prevChild,\n            c2[newIndex],\n            container,\n            null,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n          patched++;\n        }\n      }\n      const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : shared.EMPTY_ARR;\n      j = increasingNewIndexSequence.length - 1;\n      for (i = toBePatched - 1; i >= 0; i--) {\n        const nextIndex = s2 + i;\n        const nextChild = c2[nextIndex];\n        const anchorVNode = c2[nextIndex + 1];\n        const anchor = nextIndex + 1 < l2 ? (\n          // #13559, fallback to el placeholder for unresolved async component\n          anchorVNode.el || anchorVNode.placeholder\n        ) : parentAnchor;\n        if (newIndexToOldIndexMap[i] === 0) {\n          patch(\n            null,\n            nextChild,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        } else if (moved) {\n          if (j < 0 || i !== increasingNewIndexSequence[j]) {\n            move(nextChild, container, anchor, 2);\n          } else {\n            j--;\n          }\n        }\n      }\n    }\n  };\n  const move = (vnode, container, anchor, moveType, parentSuspense = null) => {\n    const { el, type, transition, children, shapeFlag } = vnode;\n    if (shapeFlag & 6) {\n      move(vnode.component.subTree, container, anchor, moveType);\n      return;\n    }\n    if (shapeFlag & 128) {\n      vnode.suspense.move(container, anchor, moveType);\n      return;\n    }\n    if (shapeFlag & 64) {\n      type.move(vnode, container, anchor, internals);\n      return;\n    }\n    if (type === Fragment) {\n      hostInsert(el, container, anchor);\n      for (let i = 0; i < children.length; i++) {\n        move(children[i], container, anchor, moveType);\n      }\n      hostInsert(vnode.anchor, container, anchor);\n      return;\n    }\n    if (type === Static) {\n      moveStaticNode(vnode, container, anchor);\n      return;\n    }\n    const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition;\n    if (needTransition2) {\n      if (moveType === 0) {\n        transition.beforeEnter(el);\n        hostInsert(el, container, anchor);\n        queuePostRenderEffect(() => transition.enter(el), parentSuspense);\n      } else {\n        const { leave, delayLeave, afterLeave } = transition;\n        const remove2 = () => {\n          if (vnode.ctx.isUnmounted) {\n            hostRemove(el);\n          } else {\n            hostInsert(el, container, anchor);\n          }\n        };\n        const performLeave = () => {\n          leave(el, () => {\n            remove2();\n            afterLeave && afterLeave();\n          });\n        };\n        if (delayLeave) {\n          delayLeave(el, remove2, performLeave);\n        } else {\n          performLeave();\n        }\n      }\n    } else {\n      hostInsert(el, container, anchor);\n    }\n  };\n  const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {\n    const {\n      type,\n      props,\n      ref,\n      children,\n      dynamicChildren,\n      shapeFlag,\n      patchFlag,\n      dirs,\n      cacheIndex\n    } = vnode;\n    if (patchFlag === -2) {\n      optimized = false;\n    }\n    if (ref != null) {\n      reactivity.pauseTracking();\n      setRef(ref, null, parentSuspense, vnode, true);\n      reactivity.resetTracking();\n    }\n    if (cacheIndex != null) {\n      parentComponent.renderCache[cacheIndex] = void 0;\n    }\n    if (shapeFlag & 256) {\n      parentComponent.ctx.deactivate(vnode);\n      return;\n    }\n    const shouldInvokeDirs = shapeFlag & 1 && dirs;\n    const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);\n    let vnodeHook;\n    if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) {\n      invokeVNodeHook(vnodeHook, parentComponent, vnode);\n    }\n    if (shapeFlag & 6) {\n      unmountComponent(vnode.component, parentSuspense, doRemove);\n    } else {\n      if (shapeFlag & 128) {\n        vnode.suspense.unmount(parentSuspense, doRemove);\n        return;\n      }\n      if (shouldInvokeDirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"beforeUnmount\");\n      }\n      if (shapeFlag & 64) {\n        vnode.type.remove(\n          vnode,\n          parentComponent,\n          parentSuspense,\n          internals,\n          doRemove\n        );\n      } else if (dynamicChildren && // #5154\n      // when v-once is used inside a block, setBlockTracking(-1) marks the\n      // parent block with hasOnce: true\n      // so that it doesn't take the fast path during unmount - otherwise\n      // components nested in v-once are never unmounted.\n      !dynamicChildren.hasOnce && // #1153: fast path should not be taken for non-stable (v-for) fragments\n      (type !== Fragment || patchFlag > 0 && patchFlag & 64)) {\n        unmountChildren(\n          dynamicChildren,\n          parentComponent,\n          parentSuspense,\n          false,\n          true\n        );\n      } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) {\n        unmountChildren(children, parentComponent, parentSuspense);\n      }\n      if (doRemove) {\n        remove(vnode);\n      }\n    }\n    if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n        shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, \"unmounted\");\n      }, parentSuspense);\n    }\n  };\n  const remove = (vnode) => {\n    const { type, el, anchor, transition } = vnode;\n    if (type === Fragment) {\n      {\n        removeFragment(el, anchor);\n      }\n      return;\n    }\n    if (type === Static) {\n      removeStaticNode(vnode);\n      return;\n    }\n    const performRemove = () => {\n      hostRemove(el);\n      if (transition && !transition.persisted && transition.afterLeave) {\n        transition.afterLeave();\n      }\n    };\n    if (vnode.shapeFlag & 1 && transition && !transition.persisted) {\n      const { leave, delayLeave } = transition;\n      const performLeave = () => leave(el, performRemove);\n      if (delayLeave) {\n        delayLeave(vnode.el, performRemove, performLeave);\n      } else {\n        performLeave();\n      }\n    } else {\n      performRemove();\n    }\n  };\n  const removeFragment = (cur, end) => {\n    let next;\n    while (cur !== end) {\n      next = hostNextSibling(cur);\n      hostRemove(cur);\n      cur = next;\n    }\n    hostRemove(end);\n  };\n  const unmountComponent = (instance, parentSuspense, doRemove) => {\n    const {\n      bum,\n      scope,\n      job,\n      subTree,\n      um,\n      m,\n      a,\n      parent,\n      slots: { __: slotCacheKeys }\n    } = instance;\n    invalidateMount(m);\n    invalidateMount(a);\n    if (bum) {\n      shared.invokeArrayFns(bum);\n    }\n    if (parent && shared.isArray(slotCacheKeys)) {\n      slotCacheKeys.forEach((v) => {\n        parent.renderCache[v] = void 0;\n      });\n    }\n    scope.stop();\n    if (job) {\n      job.flags |= 8;\n      unmount(subTree, instance, parentSuspense, doRemove);\n    }\n    if (um) {\n      queuePostRenderEffect(um, parentSuspense);\n    }\n    queuePostRenderEffect(() => {\n      instance.isUnmounted = true;\n    }, parentSuspense);\n    if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) {\n      parentSuspense.deps--;\n      if (parentSuspense.deps === 0) {\n        parentSuspense.resolve();\n      }\n    }\n  };\n  const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {\n    for (let i = start; i < children.length; i++) {\n      unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);\n    }\n  };\n  const getNextHostNode = (vnode) => {\n    if (vnode.shapeFlag & 6) {\n      return getNextHostNode(vnode.component.subTree);\n    }\n    if (vnode.shapeFlag & 128) {\n      return vnode.suspense.next();\n    }\n    const el = hostNextSibling(vnode.anchor || vnode.el);\n    const teleportEnd = el && el[TeleportEndKey];\n    return teleportEnd ? hostNextSibling(teleportEnd) : el;\n  };\n  let isFlushing = false;\n  const render = (vnode, container, namespace) => {\n    if (vnode == null) {\n      if (container._vnode) {\n        unmount(container._vnode, null, null, true);\n      }\n    } else {\n      patch(\n        container._vnode || null,\n        vnode,\n        container,\n        null,\n        null,\n        null,\n        namespace\n      );\n    }\n    container._vnode = vnode;\n    if (!isFlushing) {\n      isFlushing = true;\n      flushPreFlushCbs();\n      flushPostFlushCbs();\n      isFlushing = false;\n    }\n  };\n  const internals = {\n    p: patch,\n    um: unmount,\n    m: move,\n    r: remove,\n    mt: mountComponent,\n    mc: mountChildren,\n    pc: patchChildren,\n    pbc: patchBlockChildren,\n    n: getNextHostNode,\n    o: options\n  };\n  let hydrate;\n  let hydrateNode;\n  if (createHydrationFns) {\n    [hydrate, hydrateNode] = createHydrationFns(\n      internals\n    );\n  }\n  return {\n    render,\n    hydrate,\n    createApp: createAppAPI(render, hydrate)\n  };\n}\nfunction resolveChildrenNamespace({ type, props }, currentNamespace) {\n  return currentNamespace === \"svg\" && type === \"foreignObject\" || currentNamespace === \"mathml\" && type === \"annotation-xml\" && props && props.encoding && props.encoding.includes(\"html\") ? void 0 : currentNamespace;\n}\nfunction toggleRecurse({ effect, job }, allowed) {\n  if (allowed) {\n    effect.flags |= 32;\n    job.flags |= 4;\n  } else {\n    effect.flags &= -33;\n    job.flags &= -5;\n  }\n}\nfunction needTransition(parentSuspense, transition) {\n  return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted;\n}\nfunction traverseStaticChildren(n1, n2, shallow = false) {\n  const ch1 = n1.children;\n  const ch2 = n2.children;\n  if (shared.isArray(ch1) && shared.isArray(ch2)) {\n    for (let i = 0; i < ch1.length; i++) {\n      const c1 = ch1[i];\n      let c2 = ch2[i];\n      if (c2.shapeFlag & 1 && !c2.dynamicChildren) {\n        if (c2.patchFlag <= 0 || c2.patchFlag === 32) {\n          c2 = ch2[i] = cloneIfMounted(ch2[i]);\n          c2.el = c1.el;\n        }\n        if (!shallow && c2.patchFlag !== -2)\n          traverseStaticChildren(c1, c2);\n      }\n      if (c2.type === Text) {\n        c2.el = c1.el;\n      }\n      if (c2.type === Comment && !c2.el) {\n        c2.el = c1.el;\n      }\n    }\n  }\n}\nfunction getSequence(arr) {\n  const p = arr.slice();\n  const result = [0];\n  let i, j, u, v, c;\n  const len = arr.length;\n  for (i = 0; i < len; i++) {\n    const arrI = arr[i];\n    if (arrI !== 0) {\n      j = result[result.length - 1];\n      if (arr[j] < arrI) {\n        p[i] = j;\n        result.push(i);\n        continue;\n      }\n      u = 0;\n      v = result.length - 1;\n      while (u < v) {\n        c = u + v >> 1;\n        if (arr[result[c]] < arrI) {\n          u = c + 1;\n        } else {\n          v = c;\n        }\n      }\n      if (arrI < arr[result[u]]) {\n        if (u > 0) {\n          p[i] = result[u - 1];\n        }\n        result[u] = i;\n      }\n    }\n  }\n  u = result.length;\n  v = result[u - 1];\n  while (u-- > 0) {\n    result[u] = v;\n    v = p[v];\n  }\n  return result;\n}\nfunction locateNonHydratedAsyncRoot(instance) {\n  const subComponent = instance.subTree.component;\n  if (subComponent) {\n    if (subComponent.asyncDep && !subComponent.asyncResolved) {\n      return subComponent;\n    } else {\n      return locateNonHydratedAsyncRoot(subComponent);\n    }\n  }\n}\nfunction invalidateMount(hooks) {\n  if (hooks) {\n    for (let i = 0; i < hooks.length; i++)\n      hooks[i].flags |= 8;\n  }\n}\n\nconst ssrContextKey = Symbol.for(\"v-scx\");\nconst useSSRContext = () => {\n  {\n    const ctx = inject(ssrContextKey);\n    return ctx;\n  }\n};\n\nfunction watchEffect(effect, options) {\n  return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n  return doWatch(\n    effect,\n    null,\n    { flush: \"post\" }\n  );\n}\nfunction watchSyncEffect(effect, options) {\n  return doWatch(\n    effect,\n    null,\n    { flush: \"sync\" }\n  );\n}\nfunction watch(source, cb, options) {\n  return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, options = shared.EMPTY_OBJ) {\n  const { immediate, deep, flush, once } = options;\n  const baseWatchOptions = shared.extend({}, options);\n  const runsImmediately = cb && immediate || !cb && flush !== \"post\";\n  let ssrCleanup;\n  if (isInSSRComponentSetup) {\n    if (flush === \"sync\") {\n      const ctx = useSSRContext();\n      ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n    } else if (!runsImmediately) {\n      const watchStopHandle = () => {\n      };\n      watchStopHandle.stop = shared.NOOP;\n      watchStopHandle.resume = shared.NOOP;\n      watchStopHandle.pause = shared.NOOP;\n      return watchStopHandle;\n    }\n  }\n  const instance = currentInstance;\n  baseWatchOptions.call = (fn, type, args) => callWithAsyncErrorHandling(fn, instance, type, args);\n  let isPre = false;\n  if (flush === \"post\") {\n    baseWatchOptions.scheduler = (job) => {\n      queuePostRenderEffect(job, instance && instance.suspense);\n    };\n  } else if (flush !== \"sync\") {\n    isPre = true;\n    baseWatchOptions.scheduler = (job, isFirstRun) => {\n      if (isFirstRun) {\n        job();\n      } else {\n        queueJob(job);\n      }\n    };\n  }\n  baseWatchOptions.augmentJob = (job) => {\n    if (cb) {\n      job.flags |= 4;\n    }\n    if (isPre) {\n      job.flags |= 2;\n      if (instance) {\n        job.id = instance.uid;\n        job.i = instance;\n      }\n    }\n  };\n  const watchHandle = reactivity.watch(source, cb, baseWatchOptions);\n  if (isInSSRComponentSetup) {\n    if (ssrCleanup) {\n      ssrCleanup.push(watchHandle);\n    } else if (runsImmediately) {\n      watchHandle();\n    }\n  }\n  return watchHandle;\n}\nfunction instanceWatch(source, value, options) {\n  const publicThis = this.proxy;\n  const getter = shared.isString(source) ? source.includes(\".\") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n  let cb;\n  if (shared.isFunction(value)) {\n    cb = value;\n  } else {\n    cb = value.handler;\n    options = value;\n  }\n  const reset = setCurrentInstance(this);\n  const res = doWatch(getter, cb.bind(publicThis), options);\n  reset();\n  return res;\n}\nfunction createPathGetter(ctx, path) {\n  const segments = path.split(\".\");\n  return () => {\n    let cur = ctx;\n    for (let i = 0; i < segments.length && cur; i++) {\n      cur = cur[segments[i]];\n    }\n    return cur;\n  };\n}\n\nfunction useModel(props, name, options = shared.EMPTY_OBJ) {\n  const i = getCurrentInstance();\n  const camelizedName = shared.camelize(name);\n  const hyphenatedName = shared.hyphenate(name);\n  const modifiers = getModelModifiers(props, camelizedName);\n  const res = reactivity.customRef((track, trigger) => {\n    let localValue;\n    let prevSetValue = shared.EMPTY_OBJ;\n    let prevEmittedValue;\n    watchSyncEffect(() => {\n      const propValue = props[camelizedName];\n      if (shared.hasChanged(localValue, propValue)) {\n        localValue = propValue;\n        trigger();\n      }\n    });\n    return {\n      get() {\n        track();\n        return options.get ? options.get(localValue) : localValue;\n      },\n      set(value) {\n        const emittedValue = options.set ? options.set(value) : value;\n        if (!shared.hasChanged(emittedValue, localValue) && !(prevSetValue !== shared.EMPTY_OBJ && shared.hasChanged(value, prevSetValue))) {\n          return;\n        }\n        const rawProps = i.vnode.props;\n        if (!(rawProps && // check if parent has passed v-model\n        (name in rawProps || camelizedName in rawProps || hyphenatedName in rawProps) && (`onUpdate:${name}` in rawProps || `onUpdate:${camelizedName}` in rawProps || `onUpdate:${hyphenatedName}` in rawProps))) {\n          localValue = value;\n          trigger();\n        }\n        i.emit(`update:${name}`, emittedValue);\n        if (shared.hasChanged(value, emittedValue) && shared.hasChanged(value, prevSetValue) && !shared.hasChanged(emittedValue, prevEmittedValue)) {\n          trigger();\n        }\n        prevSetValue = value;\n        prevEmittedValue = emittedValue;\n      }\n    };\n  });\n  res[Symbol.iterator] = () => {\n    let i2 = 0;\n    return {\n      next() {\n        if (i2 < 2) {\n          return { value: i2++ ? modifiers || shared.EMPTY_OBJ : res, done: false };\n        } else {\n          return { done: true };\n        }\n      }\n    };\n  };\n  return res;\n}\nconst getModelModifiers = (props, modelName) => {\n  return modelName === \"modelValue\" || modelName === \"model-value\" ? props.modelModifiers : props[`${modelName}Modifiers`] || props[`${shared.camelize(modelName)}Modifiers`] || props[`${shared.hyphenate(modelName)}Modifiers`];\n};\n\nfunction emit(instance, event, ...rawArgs) {\n  if (instance.isUnmounted) return;\n  const props = instance.vnode.props || shared.EMPTY_OBJ;\n  let args = rawArgs;\n  const isModelListener = event.startsWith(\"update:\");\n  const modifiers = isModelListener && getModelModifiers(props, event.slice(7));\n  if (modifiers) {\n    if (modifiers.trim) {\n      args = rawArgs.map((a) => shared.isString(a) ? a.trim() : a);\n    }\n    if (modifiers.number) {\n      args = rawArgs.map(shared.looseToNumber);\n    }\n  }\n  let handlerName;\n  let handler = props[handlerName = shared.toHandlerKey(event)] || // also try camelCase event handler (#2249)\n  props[handlerName = shared.toHandlerKey(shared.camelize(event))];\n  if (!handler && isModelListener) {\n    handler = props[handlerName = shared.toHandlerKey(shared.hyphenate(event))];\n  }\n  if (handler) {\n    callWithAsyncErrorHandling(\n      handler,\n      instance,\n      6,\n      args\n    );\n  }\n  const onceHandler = props[handlerName + `Once`];\n  if (onceHandler) {\n    if (!instance.emitted) {\n      instance.emitted = {};\n    } else if (instance.emitted[handlerName]) {\n      return;\n    }\n    instance.emitted[handlerName] = true;\n    callWithAsyncErrorHandling(\n      onceHandler,\n      instance,\n      6,\n      args\n    );\n  }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n  const cache = appContext.emitsCache;\n  const cached = cache.get(comp);\n  if (cached !== void 0) {\n    return cached;\n  }\n  const raw = comp.emits;\n  let normalized = {};\n  let hasExtends = false;\n  if (!shared.isFunction(comp)) {\n    const extendEmits = (raw2) => {\n      const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);\n      if (normalizedFromExtend) {\n        hasExtends = true;\n        shared.extend(normalized, normalizedFromExtend);\n      }\n    };\n    if (!asMixin && appContext.mixins.length) {\n      appContext.mixins.forEach(extendEmits);\n    }\n    if (comp.extends) {\n      extendEmits(comp.extends);\n    }\n    if (comp.mixins) {\n      comp.mixins.forEach(extendEmits);\n    }\n  }\n  if (!raw && !hasExtends) {\n    if (shared.isObject(comp)) {\n      cache.set(comp, null);\n    }\n    return null;\n  }\n  if (shared.isArray(raw)) {\n    raw.forEach((key) => normalized[key] = null);\n  } else {\n    shared.extend(normalized, raw);\n  }\n  if (shared.isObject(comp)) {\n    cache.set(comp, normalized);\n  }\n  return normalized;\n}\nfunction isEmitListener(options, key) {\n  if (!options || !shared.isOn(key)) {\n    return false;\n  }\n  key = key.slice(2).replace(/Once$/, \"\");\n  return shared.hasOwn(options, key[0].toLowerCase() + key.slice(1)) || shared.hasOwn(options, shared.hyphenate(key)) || shared.hasOwn(options, key);\n}\n\nfunction markAttrsAccessed() {\n}\nfunction renderComponentRoot(instance) {\n  const {\n    type: Component,\n    vnode,\n    proxy,\n    withProxy,\n    propsOptions: [propsOptions],\n    slots,\n    attrs,\n    emit,\n    render,\n    renderCache,\n    props,\n    data,\n    setupState,\n    ctx,\n    inheritAttrs\n  } = instance;\n  const prev = setCurrentRenderingInstance(instance);\n  let result;\n  let fallthroughAttrs;\n  try {\n    if (vnode.shapeFlag & 4) {\n      const proxyToUse = withProxy || proxy;\n      const thisProxy = false ? new Proxy(proxyToUse, {\n        get(target, key, receiver) {\n          warn(\n            `Property '${String(\n              key\n            )}' was accessed via 'this'. Avoid using 'this' in templates.`\n          );\n          return Reflect.get(target, key, receiver);\n        }\n      }) : proxyToUse;\n      result = normalizeVNode(\n        render.call(\n          thisProxy,\n          proxyToUse,\n          renderCache,\n          false ? shallowReadonly(props) : props,\n          setupState,\n          data,\n          ctx\n        )\n      );\n      fallthroughAttrs = attrs;\n    } else {\n      const render2 = Component;\n      if (false) ;\n      result = normalizeVNode(\n        render2.length > 1 ? render2(\n          false ? shallowReadonly(props) : props,\n          false ? {\n            get attrs() {\n              markAttrsAccessed();\n              return shallowReadonly(attrs);\n            },\n            slots,\n            emit\n          } : { attrs, slots, emit }\n        ) : render2(\n          false ? shallowReadonly(props) : props,\n          null\n        )\n      );\n      fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);\n    }\n  } catch (err) {\n    blockStack.length = 0;\n    handleError(err, instance, 1);\n    result = createVNode(Comment);\n  }\n  let root = result;\n  if (fallthroughAttrs && inheritAttrs !== false) {\n    const keys = Object.keys(fallthroughAttrs);\n    const { shapeFlag } = root;\n    if (keys.length) {\n      if (shapeFlag & (1 | 6)) {\n        if (propsOptions && keys.some(shared.isModelListener)) {\n          fallthroughAttrs = filterModelListeners(\n            fallthroughAttrs,\n            propsOptions\n          );\n        }\n        root = cloneVNode(root, fallthroughAttrs, false, true);\n      }\n    }\n  }\n  if (vnode.dirs) {\n    root = cloneVNode(root, null, false, true);\n    root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n  }\n  if (vnode.transition) {\n    setTransitionHooks(root, vnode.transition);\n  }\n  {\n    result = root;\n  }\n  setCurrentRenderingInstance(prev);\n  return result;\n}\nfunction filterSingleRoot(children, recurse = true) {\n  let singleRoot;\n  for (let i = 0; i < children.length; i++) {\n    const child = children[i];\n    if (isVNode(child)) {\n      if (child.type !== Comment || child.children === \"v-if\") {\n        if (singleRoot) {\n          return;\n        } else {\n          singleRoot = child;\n        }\n      }\n    } else {\n      return;\n    }\n  }\n  return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n  let res;\n  for (const key in attrs) {\n    if (key === \"class\" || key === \"style\" || shared.isOn(key)) {\n      (res || (res = {}))[key] = attrs[key];\n    }\n  }\n  return res;\n};\nconst filterModelListeners = (attrs, props) => {\n  const res = {};\n  for (const key in attrs) {\n    if (!shared.isModelListener(key) || !(key.slice(9) in props)) {\n      res[key] = attrs[key];\n    }\n  }\n  return res;\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n  const { props: prevProps, children: prevChildren, component } = prevVNode;\n  const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n  const emits = component.emitsOptions;\n  if (nextVNode.dirs || nextVNode.transition) {\n    return true;\n  }\n  if (optimized && patchFlag >= 0) {\n    if (patchFlag & 1024) {\n      return true;\n    }\n    if (patchFlag & 16) {\n      if (!prevProps) {\n        return !!nextProps;\n      }\n      return hasPropsChanged(prevProps, nextProps, emits);\n    } else if (patchFlag & 8) {\n      const dynamicProps = nextVNode.dynamicProps;\n      for (let i = 0; i < dynamicProps.length; i++) {\n        const key = dynamicProps[i];\n        if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {\n          return true;\n        }\n      }\n    }\n  } else {\n    if (prevChildren || nextChildren) {\n      if (!nextChildren || !nextChildren.$stable) {\n        return true;\n      }\n    }\n    if (prevProps === nextProps) {\n      return false;\n    }\n    if (!prevProps) {\n      return !!nextProps;\n    }\n    if (!nextProps) {\n      return true;\n    }\n    return hasPropsChanged(prevProps, nextProps, emits);\n  }\n  return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n  const nextKeys = Object.keys(nextProps);\n  if (nextKeys.length !== Object.keys(prevProps).length) {\n    return true;\n  }\n  for (let i = 0; i < nextKeys.length; i++) {\n    const key = nextKeys[i];\n    if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el) {\n  while (parent) {\n    const root = parent.subTree;\n    if (root.suspense && root.suspense.activeBranch === vnode) {\n      root.el = vnode.el;\n    }\n    if (root === vnode) {\n      (vnode = parent.vnode).el = el;\n      parent = parent.parent;\n    } else {\n      break;\n    }\n  }\n}\n\nconst isSuspense = (type) => type.__isSuspense;\nlet suspenseId = 0;\nconst SuspenseImpl = {\n  name: \"Suspense\",\n  // In order to make Suspense tree-shakable, we need to avoid importing it\n  // directly in the renderer. The renderer checks for the __isSuspense flag\n  // on a vnode's type and calls the `process` method, passing in renderer\n  // internals.\n  __isSuspense: true,\n  process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n    if (n1 == null) {\n      mountSuspense(\n        n2,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized,\n        rendererInternals\n      );\n    } else {\n      if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) {\n        n2.suspense = n1.suspense;\n        n2.suspense.vnode = n2;\n        n2.el = n1.el;\n        return;\n      }\n      patchSuspense(\n        n1,\n        n2,\n        container,\n        anchor,\n        parentComponent,\n        namespace,\n        slotScopeIds,\n        optimized,\n        rendererInternals\n      );\n    }\n  },\n  hydrate: hydrateSuspense,\n  normalize: normalizeSuspenseChildren\n};\nconst Suspense = SuspenseImpl ;\nfunction triggerEvent(vnode, name) {\n  const eventListener = vnode.props && vnode.props[name];\n  if (shared.isFunction(eventListener)) {\n    eventListener();\n  }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n  const {\n    p: patch,\n    o: { createElement }\n  } = rendererInternals;\n  const hiddenContainer = createElement(\"div\");\n  const suspense = vnode.suspense = createSuspenseBoundary(\n    vnode,\n    parentSuspense,\n    parentComponent,\n    container,\n    hiddenContainer,\n    anchor,\n    namespace,\n    slotScopeIds,\n    optimized,\n    rendererInternals\n  );\n  patch(\n    null,\n    suspense.pendingBranch = vnode.ssContent,\n    hiddenContainer,\n    null,\n    parentComponent,\n    suspense,\n    namespace,\n    slotScopeIds\n  );\n  if (suspense.deps > 0) {\n    triggerEvent(vnode, \"onPending\");\n    triggerEvent(vnode, \"onFallback\");\n    patch(\n      null,\n      vnode.ssFallback,\n      container,\n      anchor,\n      parentComponent,\n      null,\n      // fallback tree will not have suspense context\n      namespace,\n      slotScopeIds\n    );\n    setActiveBranch(suspense, vnode.ssFallback);\n  } else {\n    suspense.resolve(false, true);\n  }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n  const suspense = n2.suspense = n1.suspense;\n  suspense.vnode = n2;\n  n2.el = n1.el;\n  const newBranch = n2.ssContent;\n  const newFallback = n2.ssFallback;\n  const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n  if (pendingBranch) {\n    suspense.pendingBranch = newBranch;\n    if (isSameVNodeType(newBranch, pendingBranch)) {\n      patch(\n        pendingBranch,\n        newBranch,\n        suspense.hiddenContainer,\n        null,\n        parentComponent,\n        suspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n      if (suspense.deps <= 0) {\n        suspense.resolve();\n      } else if (isInFallback) {\n        if (!isHydrating) {\n          patch(\n            activeBranch,\n            newFallback,\n            container,\n            anchor,\n            parentComponent,\n            null,\n            // fallback tree will not have suspense context\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n          setActiveBranch(suspense, newFallback);\n        }\n      }\n    } else {\n      suspense.pendingId = suspenseId++;\n      if (isHydrating) {\n        suspense.isHydrating = false;\n        suspense.activeBranch = pendingBranch;\n      } else {\n        unmount(pendingBranch, parentComponent, suspense);\n      }\n      suspense.deps = 0;\n      suspense.effects.length = 0;\n      suspense.hiddenContainer = createElement(\"div\");\n      if (isInFallback) {\n        patch(\n          null,\n          newBranch,\n          suspense.hiddenContainer,\n          null,\n          parentComponent,\n          suspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        if (suspense.deps <= 0) {\n          suspense.resolve();\n        } else {\n          patch(\n            activeBranch,\n            newFallback,\n            container,\n            anchor,\n            parentComponent,\n            null,\n            // fallback tree will not have suspense context\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n          setActiveBranch(suspense, newFallback);\n        }\n      } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n        patch(\n          activeBranch,\n          newBranch,\n          container,\n          anchor,\n          parentComponent,\n          suspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        suspense.resolve(true);\n      } else {\n        patch(\n          null,\n          newBranch,\n          suspense.hiddenContainer,\n          null,\n          parentComponent,\n          suspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        if (suspense.deps <= 0) {\n          suspense.resolve();\n        }\n      }\n    }\n  } else {\n    if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n      patch(\n        activeBranch,\n        newBranch,\n        container,\n        anchor,\n        parentComponent,\n        suspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n      setActiveBranch(suspense, newBranch);\n    } else {\n      triggerEvent(n2, \"onPending\");\n      suspense.pendingBranch = newBranch;\n      if (newBranch.shapeFlag & 512) {\n        suspense.pendingId = newBranch.component.suspenseId;\n      } else {\n        suspense.pendingId = suspenseId++;\n      }\n      patch(\n        null,\n        newBranch,\n        suspense.hiddenContainer,\n        null,\n        parentComponent,\n        suspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n      if (suspense.deps <= 0) {\n        suspense.resolve();\n      } else {\n        const { timeout, pendingId } = suspense;\n        if (timeout > 0) {\n          setTimeout(() => {\n            if (suspense.pendingId === pendingId) {\n              suspense.fallback(newFallback);\n            }\n          }, timeout);\n        } else if (timeout === 0) {\n          suspense.fallback(newFallback);\n        }\n      }\n    }\n  }\n}\nfunction createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n  const {\n    p: patch,\n    m: move,\n    um: unmount,\n    n: next,\n    o: { parentNode, remove }\n  } = rendererInternals;\n  let parentSuspenseId;\n  const isSuspensible = isVNodeSuspensible(vnode);\n  if (isSuspensible) {\n    if (parentSuspense && parentSuspense.pendingBranch) {\n      parentSuspenseId = parentSuspense.pendingId;\n      parentSuspense.deps++;\n    }\n  }\n  const timeout = vnode.props ? shared.toNumber(vnode.props.timeout) : void 0;\n  const initialAnchor = anchor;\n  const suspense = {\n    vnode,\n    parent: parentSuspense,\n    parentComponent,\n    namespace,\n    container,\n    hiddenContainer,\n    deps: 0,\n    pendingId: suspenseId++,\n    timeout: typeof timeout === \"number\" ? timeout : -1,\n    activeBranch: null,\n    pendingBranch: null,\n    isInFallback: !isHydrating,\n    isHydrating,\n    isUnmounted: false,\n    effects: [],\n    resolve(resume = false, sync = false) {\n      const {\n        vnode: vnode2,\n        activeBranch,\n        pendingBranch,\n        pendingId,\n        effects,\n        parentComponent: parentComponent2,\n        container: container2\n      } = suspense;\n      let delayEnter = false;\n      if (suspense.isHydrating) {\n        suspense.isHydrating = false;\n      } else if (!resume) {\n        delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === \"out-in\";\n        if (delayEnter) {\n          activeBranch.transition.afterLeave = () => {\n            if (pendingId === suspense.pendingId) {\n              move(\n                pendingBranch,\n                container2,\n                anchor === initialAnchor ? next(activeBranch) : anchor,\n                0\n              );\n              queuePostFlushCb(effects);\n            }\n          };\n        }\n        if (activeBranch) {\n          if (parentNode(activeBranch.el) === container2) {\n            anchor = next(activeBranch);\n          }\n          unmount(activeBranch, parentComponent2, suspense, true);\n        }\n        if (!delayEnter) {\n          move(pendingBranch, container2, anchor, 0);\n        }\n      }\n      setActiveBranch(suspense, pendingBranch);\n      suspense.pendingBranch = null;\n      suspense.isInFallback = false;\n      let parent = suspense.parent;\n      let hasUnresolvedAncestor = false;\n      while (parent) {\n        if (parent.pendingBranch) {\n          parent.effects.push(...effects);\n          hasUnresolvedAncestor = true;\n          break;\n        }\n        parent = parent.parent;\n      }\n      if (!hasUnresolvedAncestor && !delayEnter) {\n        queuePostFlushCb(effects);\n      }\n      suspense.effects = [];\n      if (isSuspensible) {\n        if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) {\n          parentSuspense.deps--;\n          if (parentSuspense.deps === 0 && !sync) {\n            parentSuspense.resolve();\n          }\n        }\n      }\n      triggerEvent(vnode2, \"onResolve\");\n    },\n    fallback(fallbackVNode) {\n      if (!suspense.pendingBranch) {\n        return;\n      }\n      const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense;\n      triggerEvent(vnode2, \"onFallback\");\n      const anchor2 = next(activeBranch);\n      const mountFallback = () => {\n        if (!suspense.isInFallback) {\n          return;\n        }\n        patch(\n          null,\n          fallbackVNode,\n          container2,\n          anchor2,\n          parentComponent2,\n          null,\n          // fallback tree will not have suspense context\n          namespace2,\n          slotScopeIds,\n          optimized\n        );\n        setActiveBranch(suspense, fallbackVNode);\n      };\n      const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === \"out-in\";\n      if (delayEnter) {\n        activeBranch.transition.afterLeave = mountFallback;\n      }\n      suspense.isInFallback = true;\n      unmount(\n        activeBranch,\n        parentComponent2,\n        null,\n        // no suspense so unmount hooks fire now\n        true\n        // shouldRemove\n      );\n      if (!delayEnter) {\n        mountFallback();\n      }\n    },\n    move(container2, anchor2, type) {\n      suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type);\n      suspense.container = container2;\n    },\n    next() {\n      return suspense.activeBranch && next(suspense.activeBranch);\n    },\n    registerDep(instance, setupRenderEffect, optimized2) {\n      const isInPendingSuspense = !!suspense.pendingBranch;\n      if (isInPendingSuspense) {\n        suspense.deps++;\n      }\n      const hydratedEl = instance.vnode.el;\n      instance.asyncDep.catch((err) => {\n        handleError(err, instance, 0);\n      }).then((asyncSetupResult) => {\n        if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) {\n          return;\n        }\n        instance.asyncResolved = true;\n        const { vnode: vnode2 } = instance;\n        handleSetupResult(instance, asyncSetupResult, false);\n        if (hydratedEl) {\n          vnode2.el = hydratedEl;\n        }\n        const placeholder = !hydratedEl && instance.subTree.el;\n        setupRenderEffect(\n          instance,\n          vnode2,\n          // component may have been moved before resolve.\n          // if this is not a hydration, instance.subTree will be the comment\n          // placeholder.\n          parentNode(hydratedEl || instance.subTree.el),\n          // anchor will not be used if this is hydration, so only need to\n          // consider the comment placeholder case.\n          hydratedEl ? null : next(instance.subTree),\n          suspense,\n          namespace,\n          optimized2\n        );\n        if (placeholder) {\n          remove(placeholder);\n        }\n        updateHOCHostEl(instance, vnode2.el);\n        if (isInPendingSuspense && --suspense.deps === 0) {\n          suspense.resolve();\n        }\n      });\n    },\n    unmount(parentSuspense2, doRemove) {\n      suspense.isUnmounted = true;\n      if (suspense.activeBranch) {\n        unmount(\n          suspense.activeBranch,\n          parentComponent,\n          parentSuspense2,\n          doRemove\n        );\n      }\n      if (suspense.pendingBranch) {\n        unmount(\n          suspense.pendingBranch,\n          parentComponent,\n          parentSuspense2,\n          doRemove\n        );\n      }\n    }\n  };\n  return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n  const suspense = vnode.suspense = createSuspenseBoundary(\n    vnode,\n    parentSuspense,\n    parentComponent,\n    node.parentNode,\n    // eslint-disable-next-line no-restricted-globals\n    document.createElement(\"div\"),\n    null,\n    namespace,\n    slotScopeIds,\n    optimized,\n    rendererInternals,\n    true\n  );\n  const result = hydrateNode(\n    node,\n    suspense.pendingBranch = vnode.ssContent,\n    parentComponent,\n    suspense,\n    slotScopeIds,\n    optimized\n  );\n  if (suspense.deps === 0) {\n    suspense.resolve(false, true);\n  }\n  return result;\n}\nfunction normalizeSuspenseChildren(vnode) {\n  const { shapeFlag, children } = vnode;\n  const isSlotChildren = shapeFlag & 32;\n  vnode.ssContent = normalizeSuspenseSlot(\n    isSlotChildren ? children.default : children\n  );\n  vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n  let block;\n  if (shared.isFunction(s)) {\n    const trackBlock = isBlockTreeEnabled && s._c;\n    if (trackBlock) {\n      s._d = false;\n      openBlock();\n    }\n    s = s();\n    if (trackBlock) {\n      s._d = true;\n      block = currentBlock;\n      closeBlock();\n    }\n  }\n  if (shared.isArray(s)) {\n    const singleChild = filterSingleRoot(s);\n    s = singleChild;\n  }\n  s = normalizeVNode(s);\n  if (block && !s.dynamicChildren) {\n    s.dynamicChildren = block.filter((c) => c !== s);\n  }\n  return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n  if (suspense && suspense.pendingBranch) {\n    if (shared.isArray(fn)) {\n      suspense.effects.push(...fn);\n    } else {\n      suspense.effects.push(fn);\n    }\n  } else {\n    queuePostFlushCb(fn);\n  }\n}\nfunction setActiveBranch(suspense, branch) {\n  suspense.activeBranch = branch;\n  const { vnode, parentComponent } = suspense;\n  let el = branch.el;\n  while (!el && branch.component) {\n    branch = branch.component.subTree;\n    el = branch.el;\n  }\n  vnode.el = el;\n  if (parentComponent && parentComponent.subTree === vnode) {\n    parentComponent.vnode.el = el;\n    updateHOCHostEl(parentComponent, el);\n  }\n}\nfunction isVNodeSuspensible(vnode) {\n  const suspensible = vnode.props && vnode.props.suspensible;\n  return suspensible != null && suspensible !== false;\n}\n\nconst Fragment = Symbol.for(\"v-fgt\");\nconst Text = Symbol.for(\"v-txt\");\nconst Comment = Symbol.for(\"v-cmt\");\nconst Static = Symbol.for(\"v-stc\");\nconst blockStack = [];\nlet currentBlock = null;\nfunction openBlock(disableTracking = false) {\n  blockStack.push(currentBlock = disableTracking ? null : []);\n}\nfunction closeBlock() {\n  blockStack.pop();\n  currentBlock = blockStack[blockStack.length - 1] || null;\n}\nlet isBlockTreeEnabled = 1;\nfunction setBlockTracking(value, inVOnce = false) {\n  isBlockTreeEnabled += value;\n  if (value < 0 && currentBlock && inVOnce) {\n    currentBlock.hasOnce = true;\n  }\n}\nfunction setupBlock(vnode) {\n  vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || shared.EMPTY_ARR : null;\n  closeBlock();\n  if (isBlockTreeEnabled > 0 && currentBlock) {\n    currentBlock.push(vnode);\n  }\n  return vnode;\n}\nfunction createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) {\n  return setupBlock(\n    createBaseVNode(\n      type,\n      props,\n      children,\n      patchFlag,\n      dynamicProps,\n      shapeFlag,\n      true\n    )\n  );\n}\nfunction createBlock(type, props, children, patchFlag, dynamicProps) {\n  return setupBlock(\n    createVNode(\n      type,\n      props,\n      children,\n      patchFlag,\n      dynamicProps,\n      true\n    )\n  );\n}\nfunction isVNode(value) {\n  return value ? value.__v_isVNode === true : false;\n}\nfunction isSameVNodeType(n1, n2) {\n  return n1.type === n2.type && n1.key === n2.key;\n}\nfunction transformVNodeArgs(transformer) {\n}\nconst normalizeKey = ({ key }) => key != null ? key : null;\nconst normalizeRef = ({\n  ref,\n  ref_key,\n  ref_for\n}) => {\n  if (typeof ref === \"number\") {\n    ref = \"\" + ref;\n  }\n  return ref != null ? shared.isString(ref) || reactivity.isRef(ref) || shared.isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null;\n};\nfunction createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) {\n  const vnode = {\n    __v_isVNode: true,\n    __v_skip: true,\n    type,\n    props,\n    key: props && normalizeKey(props),\n    ref: props && normalizeRef(props),\n    scopeId: currentScopeId,\n    slotScopeIds: null,\n    children,\n    component: null,\n    suspense: null,\n    ssContent: null,\n    ssFallback: null,\n    dirs: null,\n    transition: null,\n    el: null,\n    anchor: null,\n    target: null,\n    targetStart: null,\n    targetAnchor: null,\n    staticCount: 0,\n    shapeFlag,\n    patchFlag,\n    dynamicProps,\n    dynamicChildren: null,\n    appContext: null,\n    ctx: currentRenderingInstance\n  };\n  if (needFullChildrenNormalization) {\n    normalizeChildren(vnode, children);\n    if (shapeFlag & 128) {\n      type.normalize(vnode);\n    }\n  } else if (children) {\n    vnode.shapeFlag |= shared.isString(children) ? 8 : 16;\n  }\n  if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself\n  !isBlockNode && // has current parent block\n  currentBlock && // presence of a patch flag indicates this node needs patching on updates.\n  // component nodes also should always be patched, because even if the\n  // component doesn't need to update, it needs to persist the instance on to\n  // the next vnode so that it can be properly unmounted later.\n  (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the\n  // vnode should not be considered dynamic due to handler caching.\n  vnode.patchFlag !== 32) {\n    currentBlock.push(vnode);\n  }\n  return vnode;\n}\nconst createVNode = _createVNode;\nfunction _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {\n  if (!type || type === NULL_DYNAMIC_COMPONENT) {\n    type = Comment;\n  }\n  if (isVNode(type)) {\n    const cloned = cloneVNode(\n      type,\n      props,\n      true\n      /* mergeRef: true */\n    );\n    if (children) {\n      normalizeChildren(cloned, children);\n    }\n    if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {\n      if (cloned.shapeFlag & 6) {\n        currentBlock[currentBlock.indexOf(type)] = cloned;\n      } else {\n        currentBlock.push(cloned);\n      }\n    }\n    cloned.patchFlag = -2;\n    return cloned;\n  }\n  if (isClassComponent(type)) {\n    type = type.__vccOpts;\n  }\n  if (props) {\n    props = guardReactiveProps(props);\n    let { class: klass, style } = props;\n    if (klass && !shared.isString(klass)) {\n      props.class = shared.normalizeClass(klass);\n    }\n    if (shared.isObject(style)) {\n      if (reactivity.isProxy(style) && !shared.isArray(style)) {\n        style = shared.extend({}, style);\n      }\n      props.style = shared.normalizeStyle(style);\n    }\n  }\n  const shapeFlag = shared.isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : shared.isObject(type) ? 4 : shared.isFunction(type) ? 2 : 0;\n  return createBaseVNode(\n    type,\n    props,\n    children,\n    patchFlag,\n    dynamicProps,\n    shapeFlag,\n    isBlockNode,\n    true\n  );\n}\nfunction guardReactiveProps(props) {\n  if (!props) return null;\n  return reactivity.isProxy(props) || isInternalObject(props) ? shared.extend({}, props) : props;\n}\nfunction cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false) {\n  const { props, ref, patchFlag, children, transition } = vnode;\n  const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;\n  const cloned = {\n    __v_isVNode: true,\n    __v_skip: true,\n    type: vnode.type,\n    props: mergedProps,\n    key: mergedProps && normalizeKey(mergedProps),\n    ref: extraProps && extraProps.ref ? (\n      // #2078 in the case of <component :is=\"vnode\" ref=\"extra\"/>\n      // if the vnode itself already has a ref, cloneVNode will need to merge\n      // the refs so the single vnode can be set on multiple refs\n      mergeRef && ref ? shared.isArray(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps)\n    ) : ref,\n    scopeId: vnode.scopeId,\n    slotScopeIds: vnode.slotScopeIds,\n    children: children,\n    target: vnode.target,\n    targetStart: vnode.targetStart,\n    targetAnchor: vnode.targetAnchor,\n    staticCount: vnode.staticCount,\n    shapeFlag: vnode.shapeFlag,\n    // if the vnode is cloned with extra props, we can no longer assume its\n    // existing patch flag to be reliable and need to add the FULL_PROPS flag.\n    // note: preserve flag for fragments since they use the flag for children\n    // fast paths only.\n    patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag,\n    dynamicProps: vnode.dynamicProps,\n    dynamicChildren: vnode.dynamicChildren,\n    appContext: vnode.appContext,\n    dirs: vnode.dirs,\n    transition,\n    // These should technically only be non-null on mounted VNodes. However,\n    // they *should* be copied for kept-alive vnodes. So we just always copy\n    // them since them being non-null during a mount doesn't affect the logic as\n    // they will simply be overwritten.\n    component: vnode.component,\n    suspense: vnode.suspense,\n    ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),\n    ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),\n    placeholder: vnode.placeholder,\n    el: vnode.el,\n    anchor: vnode.anchor,\n    ctx: vnode.ctx,\n    ce: vnode.ce\n  };\n  if (transition && cloneTransition) {\n    setTransitionHooks(\n      cloned,\n      transition.clone(cloned)\n    );\n  }\n  return cloned;\n}\nfunction createTextVNode(text = \" \", flag = 0) {\n  return createVNode(Text, null, text, flag);\n}\nfunction createStaticVNode(content, numberOfNodes) {\n  const vnode = createVNode(Static, null, content);\n  vnode.staticCount = numberOfNodes;\n  return vnode;\n}\nfunction createCommentVNode(text = \"\", asBlock = false) {\n  return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text);\n}\nfunction normalizeVNode(child) {\n  if (child == null || typeof child === \"boolean\") {\n    return createVNode(Comment);\n  } else if (shared.isArray(child)) {\n    return createVNode(\n      Fragment,\n      null,\n      // #3666, avoid reference pollution when reusing vnode\n      child.slice()\n    );\n  } else if (isVNode(child)) {\n    return cloneIfMounted(child);\n  } else {\n    return createVNode(Text, null, String(child));\n  }\n}\nfunction cloneIfMounted(child) {\n  return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child);\n}\nfunction normalizeChildren(vnode, children) {\n  let type = 0;\n  const { shapeFlag } = vnode;\n  if (children == null) {\n    children = null;\n  } else if (shared.isArray(children)) {\n    type = 16;\n  } else if (typeof children === \"object\") {\n    if (shapeFlag & (1 | 64)) {\n      const slot = children.default;\n      if (slot) {\n        slot._c && (slot._d = false);\n        normalizeChildren(vnode, slot());\n        slot._c && (slot._d = true);\n      }\n      return;\n    } else {\n      type = 32;\n      const slotFlag = children._;\n      if (!slotFlag && !isInternalObject(children)) {\n        children._ctx = currentRenderingInstance;\n      } else if (slotFlag === 3 && currentRenderingInstance) {\n        if (currentRenderingInstance.slots._ === 1) {\n          children._ = 1;\n        } else {\n          children._ = 2;\n          vnode.patchFlag |= 1024;\n        }\n      }\n    }\n  } else if (shared.isFunction(children)) {\n    children = { default: children, _ctx: currentRenderingInstance };\n    type = 32;\n  } else {\n    children = String(children);\n    if (shapeFlag & 64) {\n      type = 16;\n      children = [createTextVNode(children)];\n    } else {\n      type = 8;\n    }\n  }\n  vnode.children = children;\n  vnode.shapeFlag |= type;\n}\nfunction mergeProps(...args) {\n  const ret = {};\n  for (let i = 0; i < args.length; i++) {\n    const toMerge = args[i];\n    for (const key in toMerge) {\n      if (key === \"class\") {\n        if (ret.class !== toMerge.class) {\n          ret.class = shared.normalizeClass([ret.class, toMerge.class]);\n        }\n      } else if (key === \"style\") {\n        ret.style = shared.normalizeStyle([ret.style, toMerge.style]);\n      } else if (shared.isOn(key)) {\n        const existing = ret[key];\n        const incoming = toMerge[key];\n        if (incoming && existing !== incoming && !(shared.isArray(existing) && existing.includes(incoming))) {\n          ret[key] = existing ? [].concat(existing, incoming) : incoming;\n        }\n      } else if (key !== \"\") {\n        ret[key] = toMerge[key];\n      }\n    }\n  }\n  return ret;\n}\nfunction invokeVNodeHook(hook, instance, vnode, prevVNode = null) {\n  callWithAsyncErrorHandling(hook, instance, 7, [\n    vnode,\n    prevVNode\n  ]);\n}\n\nconst emptyAppContext = createAppContext();\nlet uid = 0;\nfunction createComponentInstance(vnode, parent, suspense) {\n  const type = vnode.type;\n  const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;\n  const instance = {\n    uid: uid++,\n    vnode,\n    type,\n    parent,\n    appContext,\n    root: null,\n    // to be immediately set\n    next: null,\n    subTree: null,\n    // will be set synchronously right after creation\n    effect: null,\n    update: null,\n    // will be set synchronously right after creation\n    job: null,\n    scope: new reactivity.EffectScope(\n      true\n      /* detached */\n    ),\n    render: null,\n    proxy: null,\n    exposed: null,\n    exposeProxy: null,\n    withProxy: null,\n    provides: parent ? parent.provides : Object.create(appContext.provides),\n    ids: parent ? parent.ids : [\"\", 0, 0],\n    accessCache: null,\n    renderCache: [],\n    // local resolved assets\n    components: null,\n    directives: null,\n    // resolved props and emits options\n    propsOptions: normalizePropsOptions(type, appContext),\n    emitsOptions: normalizeEmitsOptions(type, appContext),\n    // emit\n    emit: null,\n    // to be set immediately\n    emitted: null,\n    // props default value\n    propsDefaults: shared.EMPTY_OBJ,\n    // inheritAttrs\n    inheritAttrs: type.inheritAttrs,\n    // state\n    ctx: shared.EMPTY_OBJ,\n    data: shared.EMPTY_OBJ,\n    props: shared.EMPTY_OBJ,\n    attrs: shared.EMPTY_OBJ,\n    slots: shared.EMPTY_OBJ,\n    refs: shared.EMPTY_OBJ,\n    setupState: shared.EMPTY_OBJ,\n    setupContext: null,\n    // suspense related\n    suspense,\n    suspenseId: suspense ? suspense.pendingId : 0,\n    asyncDep: null,\n    asyncResolved: false,\n    // lifecycle hooks\n    // not using enums here because it results in computed properties\n    isMounted: false,\n    isUnmounted: false,\n    isDeactivated: false,\n    bc: null,\n    c: null,\n    bm: null,\n    m: null,\n    bu: null,\n    u: null,\n    um: null,\n    bum: null,\n    da: null,\n    a: null,\n    rtg: null,\n    rtc: null,\n    ec: null,\n    sp: null\n  };\n  {\n    instance.ctx = { _: instance };\n  }\n  instance.root = parent ? parent.root : instance;\n  instance.emit = emit.bind(null, instance);\n  if (vnode.ce) {\n    vnode.ce(instance);\n  }\n  return instance;\n}\nlet currentInstance = null;\nconst getCurrentInstance = () => currentInstance || currentRenderingInstance;\nlet internalSetCurrentInstance;\nlet setInSSRSetupState;\n{\n  const g = shared.getGlobalThis();\n  const registerGlobalSetter = (key, setter) => {\n    let setters;\n    if (!(setters = g[key])) setters = g[key] = [];\n    setters.push(setter);\n    return (v) => {\n      if (setters.length > 1) setters.forEach((set) => set(v));\n      else setters[0](v);\n    };\n  };\n  internalSetCurrentInstance = registerGlobalSetter(\n    `__VUE_INSTANCE_SETTERS__`,\n    (v) => currentInstance = v\n  );\n  setInSSRSetupState = registerGlobalSetter(\n    `__VUE_SSR_SETTERS__`,\n    (v) => isInSSRComponentSetup = v\n  );\n}\nconst setCurrentInstance = (instance) => {\n  const prev = currentInstance;\n  internalSetCurrentInstance(instance);\n  instance.scope.on();\n  return () => {\n    instance.scope.off();\n    internalSetCurrentInstance(prev);\n  };\n};\nconst unsetCurrentInstance = () => {\n  currentInstance && currentInstance.scope.off();\n  internalSetCurrentInstance(null);\n};\nfunction isStatefulComponent(instance) {\n  return instance.vnode.shapeFlag & 4;\n}\nlet isInSSRComponentSetup = false;\nfunction setupComponent(instance, isSSR = false, optimized = false) {\n  isSSR && setInSSRSetupState(isSSR);\n  const { props, children } = instance.vnode;\n  const isStateful = isStatefulComponent(instance);\n  initProps(instance, props, isStateful, isSSR);\n  initSlots(instance, children, optimized || isSSR);\n  const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0;\n  isSSR && setInSSRSetupState(false);\n  return setupResult;\n}\nfunction setupStatefulComponent(instance, isSSR) {\n  const Component = instance.type;\n  instance.accessCache = /* @__PURE__ */ Object.create(null);\n  instance.proxy = new Proxy(instance.ctx, PublicInstanceProxyHandlers);\n  const { setup } = Component;\n  if (setup) {\n    reactivity.pauseTracking();\n    const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null;\n    const reset = setCurrentInstance(instance);\n    const setupResult = callWithErrorHandling(\n      setup,\n      instance,\n      0,\n      [\n        instance.props,\n        setupContext\n      ]\n    );\n    const isAsyncSetup = shared.isPromise(setupResult);\n    reactivity.resetTracking();\n    reset();\n    if ((isAsyncSetup || instance.sp) && !isAsyncWrapper(instance)) {\n      markAsyncBoundary(instance);\n    }\n    if (isAsyncSetup) {\n      setupResult.then(unsetCurrentInstance, unsetCurrentInstance);\n      if (isSSR) {\n        return setupResult.then((resolvedResult) => {\n          handleSetupResult(instance, resolvedResult, isSSR);\n        }).catch((e) => {\n          handleError(e, instance, 0);\n        });\n      } else {\n        instance.asyncDep = setupResult;\n      }\n    } else {\n      handleSetupResult(instance, setupResult, isSSR);\n    }\n  } else {\n    finishComponentSetup(instance, isSSR);\n  }\n}\nfunction handleSetupResult(instance, setupResult, isSSR) {\n  if (shared.isFunction(setupResult)) {\n    if (instance.type.__ssrInlineRender) {\n      instance.ssrRender = setupResult;\n    } else {\n      instance.render = setupResult;\n    }\n  } else if (shared.isObject(setupResult)) {\n    instance.setupState = reactivity.proxyRefs(setupResult);\n  } else ;\n  finishComponentSetup(instance, isSSR);\n}\nlet compile;\nlet installWithProxy;\nfunction registerRuntimeCompiler(_compile) {\n  compile = _compile;\n  installWithProxy = (i) => {\n    if (i.render._rc) {\n      i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers);\n    }\n  };\n}\nconst isRuntimeOnly = () => !compile;\nfunction finishComponentSetup(instance, isSSR, skipOptions) {\n  const Component = instance.type;\n  if (!instance.render) {\n    if (!isSSR && compile && !Component.render) {\n      const template = Component.template || resolveMergedOptions(instance).template;\n      if (template) {\n        const { isCustomElement, compilerOptions } = instance.appContext.config;\n        const { delimiters, compilerOptions: componentCompilerOptions } = Component;\n        const finalCompilerOptions = shared.extend(\n          shared.extend(\n            {\n              isCustomElement,\n              delimiters\n            },\n            compilerOptions\n          ),\n          componentCompilerOptions\n        );\n        Component.render = compile(template, finalCompilerOptions);\n      }\n    }\n    instance.render = Component.render || shared.NOOP;\n    if (installWithProxy) {\n      installWithProxy(instance);\n    }\n  }\n  {\n    const reset = setCurrentInstance(instance);\n    reactivity.pauseTracking();\n    try {\n      applyOptions(instance);\n    } finally {\n      reactivity.resetTracking();\n      reset();\n    }\n  }\n}\nconst attrsProxyHandlers = {\n  get(target, key) {\n    reactivity.track(target, \"get\", \"\");\n    return target[key];\n  }\n};\nfunction createSetupContext(instance) {\n  const expose = (exposed) => {\n    instance.exposed = exposed || {};\n  };\n  {\n    return {\n      attrs: new Proxy(instance.attrs, attrsProxyHandlers),\n      slots: instance.slots,\n      emit: instance.emit,\n      expose\n    };\n  }\n}\nfunction getComponentPublicInstance(instance) {\n  if (instance.exposed) {\n    return instance.exposeProxy || (instance.exposeProxy = new Proxy(reactivity.proxyRefs(reactivity.markRaw(instance.exposed)), {\n      get(target, key) {\n        if (key in target) {\n          return target[key];\n        } else if (key in publicPropertiesMap) {\n          return publicPropertiesMap[key](instance);\n        }\n      },\n      has(target, key) {\n        return key in target || key in publicPropertiesMap;\n      }\n    }));\n  } else {\n    return instance.proxy;\n  }\n}\nfunction getComponentName(Component, includeInferred = true) {\n  return shared.isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;\n}\nfunction isClassComponent(value) {\n  return shared.isFunction(value) && \"__vccOpts\" in value;\n}\n\nconst computed = (getterOrOptions, debugOptions) => {\n  const c = reactivity.computed(getterOrOptions, debugOptions, isInSSRComponentSetup);\n  return c;\n};\n\nfunction h(type, propsOrChildren, children) {\n  const l = arguments.length;\n  if (l === 2) {\n    if (shared.isObject(propsOrChildren) && !shared.isArray(propsOrChildren)) {\n      if (isVNode(propsOrChildren)) {\n        return createVNode(type, null, [propsOrChildren]);\n      }\n      return createVNode(type, propsOrChildren);\n    } else {\n      return createVNode(type, null, propsOrChildren);\n    }\n  } else {\n    if (l > 3) {\n      children = Array.prototype.slice.call(arguments, 2);\n    } else if (l === 3 && isVNode(children)) {\n      children = [children];\n    }\n    return createVNode(type, propsOrChildren, children);\n  }\n}\n\nfunction initCustomFormatter() {\n  {\n    return;\n  }\n}\n\nfunction withMemo(memo, render, cache, index) {\n  const cached = cache[index];\n  if (cached && isMemoSame(cached, memo)) {\n    return cached;\n  }\n  const ret = render();\n  ret.memo = memo.slice();\n  ret.cacheIndex = index;\n  return cache[index] = ret;\n}\nfunction isMemoSame(cached, memo) {\n  const prev = cached.memo;\n  if (prev.length != memo.length) {\n    return false;\n  }\n  for (let i = 0; i < prev.length; i++) {\n    if (shared.hasChanged(prev[i], memo[i])) {\n      return false;\n    }\n  }\n  if (isBlockTreeEnabled > 0 && currentBlock) {\n    currentBlock.push(cached);\n  }\n  return true;\n}\n\nconst version = \"3.5.18\";\nconst warn$1 = shared.NOOP;\nconst ErrorTypeStrings = ErrorTypeStrings$1 ;\nconst devtools = void 0;\nconst setDevtoolsHook = shared.NOOP;\nconst _ssrUtils = {\n  createComponentInstance,\n  setupComponent,\n  renderComponentRoot,\n  setCurrentRenderingInstance,\n  isVNode: isVNode,\n  normalizeVNode,\n  getComponentPublicInstance,\n  ensureValidVNode,\n  pushWarningContext,\n  popWarningContext\n};\nconst ssrUtils = _ssrUtils ;\nconst resolveFilter = null;\nconst compatUtils = null;\nconst DeprecationTypes = null;\n\nexports.EffectScope = reactivity.EffectScope;\nexports.ReactiveEffect = reactivity.ReactiveEffect;\nexports.TrackOpTypes = reactivity.TrackOpTypes;\nexports.TriggerOpTypes = reactivity.TriggerOpTypes;\nexports.customRef = reactivity.customRef;\nexports.effect = reactivity.effect;\nexports.effectScope = reactivity.effectScope;\nexports.getCurrentScope = reactivity.getCurrentScope;\nexports.getCurrentWatcher = reactivity.getCurrentWatcher;\nexports.isProxy = reactivity.isProxy;\nexports.isReactive = reactivity.isReactive;\nexports.isReadonly = reactivity.isReadonly;\nexports.isRef = reactivity.isRef;\nexports.isShallow = reactivity.isShallow;\nexports.markRaw = reactivity.markRaw;\nexports.onScopeDispose = reactivity.onScopeDispose;\nexports.onWatcherCleanup = reactivity.onWatcherCleanup;\nexports.proxyRefs = reactivity.proxyRefs;\nexports.reactive = reactivity.reactive;\nexports.readonly = reactivity.readonly;\nexports.ref = reactivity.ref;\nexports.shallowReactive = reactivity.shallowReactive;\nexports.shallowReadonly = reactivity.shallowReadonly;\nexports.shallowRef = reactivity.shallowRef;\nexports.stop = reactivity.stop;\nexports.toRaw = reactivity.toRaw;\nexports.toRef = reactivity.toRef;\nexports.toRefs = reactivity.toRefs;\nexports.toValue = reactivity.toValue;\nexports.triggerRef = reactivity.triggerRef;\nexports.unref = reactivity.unref;\nexports.camelize = shared.camelize;\nexports.capitalize = shared.capitalize;\nexports.normalizeClass = shared.normalizeClass;\nexports.normalizeProps = shared.normalizeProps;\nexports.normalizeStyle = shared.normalizeStyle;\nexports.toDisplayString = shared.toDisplayString;\nexports.toHandlerKey = shared.toHandlerKey;\nexports.BaseTransition = BaseTransition;\nexports.BaseTransitionPropsValidators = BaseTransitionPropsValidators;\nexports.Comment = Comment;\nexports.DeprecationTypes = DeprecationTypes;\nexports.ErrorCodes = ErrorCodes;\nexports.ErrorTypeStrings = ErrorTypeStrings;\nexports.Fragment = Fragment;\nexports.KeepAlive = KeepAlive;\nexports.Static = Static;\nexports.Suspense = Suspense;\nexports.Teleport = Teleport;\nexports.Text = Text;\nexports.assertNumber = assertNumber;\nexports.callWithAsyncErrorHandling = callWithAsyncErrorHandling;\nexports.callWithErrorHandling = callWithErrorHandling;\nexports.cloneVNode = cloneVNode;\nexports.compatUtils = compatUtils;\nexports.computed = computed;\nexports.createBlock = createBlock;\nexports.createCommentVNode = createCommentVNode;\nexports.createElementBlock = createElementBlock;\nexports.createElementVNode = createBaseVNode;\nexports.createHydrationRenderer = createHydrationRenderer;\nexports.createPropsRestProxy = createPropsRestProxy;\nexports.createRenderer = createRenderer;\nexports.createSlots = createSlots;\nexports.createStaticVNode = createStaticVNode;\nexports.createTextVNode = createTextVNode;\nexports.createVNode = createVNode;\nexports.defineAsyncComponent = defineAsyncComponent;\nexports.defineComponent = defineComponent;\nexports.defineEmits = defineEmits;\nexports.defineExpose = defineExpose;\nexports.defineModel = defineModel;\nexports.defineOptions = defineOptions;\nexports.defineProps = defineProps;\nexports.defineSlots = defineSlots;\nexports.devtools = devtools;\nexports.getCurrentInstance = getCurrentInstance;\nexports.getTransitionRawChildren = getTransitionRawChildren;\nexports.guardReactiveProps = guardReactiveProps;\nexports.h = h;\nexports.handleError = handleError;\nexports.hasInjectionContext = hasInjectionContext;\nexports.hydrateOnIdle = hydrateOnIdle;\nexports.hydrateOnInteraction = hydrateOnInteraction;\nexports.hydrateOnMediaQuery = hydrateOnMediaQuery;\nexports.hydrateOnVisible = hydrateOnVisible;\nexports.initCustomFormatter = initCustomFormatter;\nexports.inject = inject;\nexports.isMemoSame = isMemoSame;\nexports.isRuntimeOnly = isRuntimeOnly;\nexports.isVNode = isVNode;\nexports.mergeDefaults = mergeDefaults;\nexports.mergeModels = mergeModels;\nexports.mergeProps = mergeProps;\nexports.nextTick = nextTick;\nexports.onActivated = onActivated;\nexports.onBeforeMount = onBeforeMount;\nexports.onBeforeUnmount = onBeforeUnmount;\nexports.onBeforeUpdate = onBeforeUpdate;\nexports.onDeactivated = onDeactivated;\nexports.onErrorCaptured = onErrorCaptured;\nexports.onMounted = onMounted;\nexports.onRenderTracked = onRenderTracked;\nexports.onRenderTriggered = onRenderTriggered;\nexports.onServerPrefetch = onServerPrefetch;\nexports.onUnmounted = onUnmounted;\nexports.onUpdated = onUpdated;\nexports.openBlock = openBlock;\nexports.popScopeId = popScopeId;\nexports.provide = provide;\nexports.pushScopeId = pushScopeId;\nexports.queuePostFlushCb = queuePostFlushCb;\nexports.registerRuntimeCompiler = registerRuntimeCompiler;\nexports.renderList = renderList;\nexports.renderSlot = renderSlot;\nexports.resolveComponent = resolveComponent;\nexports.resolveDirective = resolveDirective;\nexports.resolveDynamicComponent = resolveDynamicComponent;\nexports.resolveFilter = resolveFilter;\nexports.resolveTransitionHooks = resolveTransitionHooks;\nexports.setBlockTracking = setBlockTracking;\nexports.setDevtoolsHook = setDevtoolsHook;\nexports.setTransitionHooks = setTransitionHooks;\nexports.ssrContextKey = ssrContextKey;\nexports.ssrUtils = ssrUtils;\nexports.toHandlers = toHandlers;\nexports.transformVNodeArgs = transformVNodeArgs;\nexports.useAttrs = useAttrs;\nexports.useId = useId;\nexports.useModel = useModel;\nexports.useSSRContext = useSSRContext;\nexports.useSlots = useSlots;\nexports.useTemplateRef = useTemplateRef;\nexports.useTransitionState = useTransitionState;\nexports.version = version;\nexports.warn = warn$1;\nexports.watch = watch;\nexports.watchEffect = watchEffect;\nexports.watchPostEffect = watchPostEffect;\nexports.watchSyncEffect = watchSyncEffect;\nexports.withAsyncContext = withAsyncContext;\nexports.withCtx = withCtx;\nexports.withDefaults = withDefaults;\nexports.withDirectives = withDirectives;\nexports.withMemo = withMemo;\nexports.withScopeId = withScopeId;\n","'use strict'\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./dist/runtime-core.cjs.prod.js')\n} else {\n  module.exports = require('./dist/runtime-core.cjs.js')\n}\n","/**\n* @vue/runtime-dom v3.5.18\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar runtimeCore = require('@vue/runtime-core');\nvar shared = require('@vue/shared');\n\nlet policy = void 0;\nconst tt = typeof window !== \"undefined\" && window.trustedTypes;\nif (tt) {\n  try {\n    policy = /* @__PURE__ */ tt.createPolicy(\"vue\", {\n      createHTML: (val) => val\n    });\n  } catch (e) {\n  }\n}\nconst unsafeToTrustedHTML = policy ? (val) => policy.createHTML(val) : (val) => val;\nconst svgNS = \"http://www.w3.org/2000/svg\";\nconst mathmlNS = \"http://www.w3.org/1998/Math/MathML\";\nconst doc = typeof document !== \"undefined\" ? document : null;\nconst templateContainer = doc && /* @__PURE__ */ doc.createElement(\"template\");\nconst nodeOps = {\n  insert: (child, parent, anchor) => {\n    parent.insertBefore(child, anchor || null);\n  },\n  remove: (child) => {\n    const parent = child.parentNode;\n    if (parent) {\n      parent.removeChild(child);\n    }\n  },\n  createElement: (tag, namespace, is, props) => {\n    const el = namespace === \"svg\" ? doc.createElementNS(svgNS, tag) : namespace === \"mathml\" ? doc.createElementNS(mathmlNS, tag) : is ? doc.createElement(tag, { is }) : doc.createElement(tag);\n    if (tag === \"select\" && props && props.multiple != null) {\n      el.setAttribute(\"multiple\", props.multiple);\n    }\n    return el;\n  },\n  createText: (text) => doc.createTextNode(text),\n  createComment: (text) => doc.createComment(text),\n  setText: (node, text) => {\n    node.nodeValue = text;\n  },\n  setElementText: (el, text) => {\n    el.textContent = text;\n  },\n  parentNode: (node) => node.parentNode,\n  nextSibling: (node) => node.nextSibling,\n  querySelector: (selector) => doc.querySelector(selector),\n  setScopeId(el, id) {\n    el.setAttribute(id, \"\");\n  },\n  // __UNSAFE__\n  // Reason: innerHTML.\n  // Static content here can only come from compiled templates.\n  // As long as the user only uses trusted templates, this is safe.\n  insertStaticContent(content, parent, anchor, namespace, start, end) {\n    const before = anchor ? anchor.previousSibling : parent.lastChild;\n    if (start && (start === end || start.nextSibling)) {\n      while (true) {\n        parent.insertBefore(start.cloneNode(true), anchor);\n        if (start === end || !(start = start.nextSibling)) break;\n      }\n    } else {\n      templateContainer.innerHTML = unsafeToTrustedHTML(\n        namespace === \"svg\" ? `<svg>${content}</svg>` : namespace === \"mathml\" ? `<math>${content}</math>` : content\n      );\n      const template = templateContainer.content;\n      if (namespace === \"svg\" || namespace === \"mathml\") {\n        const wrapper = template.firstChild;\n        while (wrapper.firstChild) {\n          template.appendChild(wrapper.firstChild);\n        }\n        template.removeChild(wrapper);\n      }\n      parent.insertBefore(template, anchor);\n    }\n    return [\n      // first\n      before ? before.nextSibling : parent.firstChild,\n      // last\n      anchor ? anchor.previousSibling : parent.lastChild\n    ];\n  }\n};\n\nconst TRANSITION = \"transition\";\nconst ANIMATION = \"animation\";\nconst vtcKey = Symbol(\"_vtc\");\nconst DOMTransitionPropsValidators = {\n  name: String,\n  type: String,\n  css: {\n    type: Boolean,\n    default: true\n  },\n  duration: [String, Number, Object],\n  enterFromClass: String,\n  enterActiveClass: String,\n  enterToClass: String,\n  appearFromClass: String,\n  appearActiveClass: String,\n  appearToClass: String,\n  leaveFromClass: String,\n  leaveActiveClass: String,\n  leaveToClass: String\n};\nconst TransitionPropsValidators = /* @__PURE__ */ shared.extend(\n  {},\n  runtimeCore.BaseTransitionPropsValidators,\n  DOMTransitionPropsValidators\n);\nconst decorate$1 = (t) => {\n  t.displayName = \"Transition\";\n  t.props = TransitionPropsValidators;\n  return t;\n};\nconst Transition = /* @__PURE__ */ decorate$1(\n  (props, { slots }) => runtimeCore.h(runtimeCore.BaseTransition, resolveTransitionProps(props), slots)\n);\nconst callHook = (hook, args = []) => {\n  if (shared.isArray(hook)) {\n    hook.forEach((h2) => h2(...args));\n  } else if (hook) {\n    hook(...args);\n  }\n};\nconst hasExplicitCallback = (hook) => {\n  return hook ? shared.isArray(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false;\n};\nfunction resolveTransitionProps(rawProps) {\n  const baseProps = {};\n  for (const key in rawProps) {\n    if (!(key in DOMTransitionPropsValidators)) {\n      baseProps[key] = rawProps[key];\n    }\n  }\n  if (rawProps.css === false) {\n    return baseProps;\n  }\n  const {\n    name = \"v\",\n    type,\n    duration,\n    enterFromClass = `${name}-enter-from`,\n    enterActiveClass = `${name}-enter-active`,\n    enterToClass = `${name}-enter-to`,\n    appearFromClass = enterFromClass,\n    appearActiveClass = enterActiveClass,\n    appearToClass = enterToClass,\n    leaveFromClass = `${name}-leave-from`,\n    leaveActiveClass = `${name}-leave-active`,\n    leaveToClass = `${name}-leave-to`\n  } = rawProps;\n  const durations = normalizeDuration(duration);\n  const enterDuration = durations && durations[0];\n  const leaveDuration = durations && durations[1];\n  const {\n    onBeforeEnter,\n    onEnter,\n    onEnterCancelled,\n    onLeave,\n    onLeaveCancelled,\n    onBeforeAppear = onBeforeEnter,\n    onAppear = onEnter,\n    onAppearCancelled = onEnterCancelled\n  } = baseProps;\n  const finishEnter = (el, isAppear, done, isCancelled) => {\n    el._enterCancelled = isCancelled;\n    removeTransitionClass(el, isAppear ? appearToClass : enterToClass);\n    removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);\n    done && done();\n  };\n  const finishLeave = (el, done) => {\n    el._isLeaving = false;\n    removeTransitionClass(el, leaveFromClass);\n    removeTransitionClass(el, leaveToClass);\n    removeTransitionClass(el, leaveActiveClass);\n    done && done();\n  };\n  const makeEnterHook = (isAppear) => {\n    return (el, done) => {\n      const hook = isAppear ? onAppear : onEnter;\n      const resolve = () => finishEnter(el, isAppear, done);\n      callHook(hook, [el, resolve]);\n      nextFrame(() => {\n        removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);\n        addTransitionClass(el, isAppear ? appearToClass : enterToClass);\n        if (!hasExplicitCallback(hook)) {\n          whenTransitionEnds(el, type, enterDuration, resolve);\n        }\n      });\n    };\n  };\n  return shared.extend(baseProps, {\n    onBeforeEnter(el) {\n      callHook(onBeforeEnter, [el]);\n      addTransitionClass(el, enterFromClass);\n      addTransitionClass(el, enterActiveClass);\n    },\n    onBeforeAppear(el) {\n      callHook(onBeforeAppear, [el]);\n      addTransitionClass(el, appearFromClass);\n      addTransitionClass(el, appearActiveClass);\n    },\n    onEnter: makeEnterHook(false),\n    onAppear: makeEnterHook(true),\n    onLeave(el, done) {\n      el._isLeaving = true;\n      const resolve = () => finishLeave(el, done);\n      addTransitionClass(el, leaveFromClass);\n      if (!el._enterCancelled) {\n        forceReflow();\n        addTransitionClass(el, leaveActiveClass);\n      } else {\n        addTransitionClass(el, leaveActiveClass);\n        forceReflow();\n      }\n      nextFrame(() => {\n        if (!el._isLeaving) {\n          return;\n        }\n        removeTransitionClass(el, leaveFromClass);\n        addTransitionClass(el, leaveToClass);\n        if (!hasExplicitCallback(onLeave)) {\n          whenTransitionEnds(el, type, leaveDuration, resolve);\n        }\n      });\n      callHook(onLeave, [el, resolve]);\n    },\n    onEnterCancelled(el) {\n      finishEnter(el, false, void 0, true);\n      callHook(onEnterCancelled, [el]);\n    },\n    onAppearCancelled(el) {\n      finishEnter(el, true, void 0, true);\n      callHook(onAppearCancelled, [el]);\n    },\n    onLeaveCancelled(el) {\n      finishLeave(el);\n      callHook(onLeaveCancelled, [el]);\n    }\n  });\n}\nfunction normalizeDuration(duration) {\n  if (duration == null) {\n    return null;\n  } else if (shared.isObject(duration)) {\n    return [NumberOf(duration.enter), NumberOf(duration.leave)];\n  } else {\n    const n = NumberOf(duration);\n    return [n, n];\n  }\n}\nfunction NumberOf(val) {\n  const res = shared.toNumber(val);\n  return res;\n}\nfunction addTransitionClass(el, cls) {\n  cls.split(/\\s+/).forEach((c) => c && el.classList.add(c));\n  (el[vtcKey] || (el[vtcKey] = /* @__PURE__ */ new Set())).add(cls);\n}\nfunction removeTransitionClass(el, cls) {\n  cls.split(/\\s+/).forEach((c) => c && el.classList.remove(c));\n  const _vtc = el[vtcKey];\n  if (_vtc) {\n    _vtc.delete(cls);\n    if (!_vtc.size) {\n      el[vtcKey] = void 0;\n    }\n  }\n}\nfunction nextFrame(cb) {\n  requestAnimationFrame(() => {\n    requestAnimationFrame(cb);\n  });\n}\nlet endId = 0;\nfunction whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {\n  const id = el._endId = ++endId;\n  const resolveIfNotStale = () => {\n    if (id === el._endId) {\n      resolve();\n    }\n  };\n  if (explicitTimeout != null) {\n    return setTimeout(resolveIfNotStale, explicitTimeout);\n  }\n  const { type, timeout, propCount } = getTransitionInfo(el, expectedType);\n  if (!type) {\n    return resolve();\n  }\n  const endEvent = type + \"end\";\n  let ended = 0;\n  const end = () => {\n    el.removeEventListener(endEvent, onEnd);\n    resolveIfNotStale();\n  };\n  const onEnd = (e) => {\n    if (e.target === el && ++ended >= propCount) {\n      end();\n    }\n  };\n  setTimeout(() => {\n    if (ended < propCount) {\n      end();\n    }\n  }, timeout + 1);\n  el.addEventListener(endEvent, onEnd);\n}\nfunction getTransitionInfo(el, expectedType) {\n  const styles = window.getComputedStyle(el);\n  const getStyleProperties = (key) => (styles[key] || \"\").split(\", \");\n  const transitionDelays = getStyleProperties(`${TRANSITION}Delay`);\n  const transitionDurations = getStyleProperties(`${TRANSITION}Duration`);\n  const transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n  const animationDelays = getStyleProperties(`${ANIMATION}Delay`);\n  const animationDurations = getStyleProperties(`${ANIMATION}Duration`);\n  const animationTimeout = getTimeout(animationDelays, animationDurations);\n  let type = null;\n  let timeout = 0;\n  let propCount = 0;\n  if (expectedType === TRANSITION) {\n    if (transitionTimeout > 0) {\n      type = TRANSITION;\n      timeout = transitionTimeout;\n      propCount = transitionDurations.length;\n    }\n  } else if (expectedType === ANIMATION) {\n    if (animationTimeout > 0) {\n      type = ANIMATION;\n      timeout = animationTimeout;\n      propCount = animationDurations.length;\n    }\n  } else {\n    timeout = Math.max(transitionTimeout, animationTimeout);\n    type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null;\n    propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0;\n  }\n  const hasTransform = type === TRANSITION && /\\b(transform|all)(,|$)/.test(\n    getStyleProperties(`${TRANSITION}Property`).toString()\n  );\n  return {\n    type,\n    timeout,\n    propCount,\n    hasTransform\n  };\n}\nfunction getTimeout(delays, durations) {\n  while (delays.length < durations.length) {\n    delays = delays.concat(delays);\n  }\n  return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));\n}\nfunction toMs(s) {\n  if (s === \"auto\") return 0;\n  return Number(s.slice(0, -1).replace(\",\", \".\")) * 1e3;\n}\nfunction forceReflow() {\n  return document.body.offsetHeight;\n}\n\nfunction patchClass(el, value, isSVG) {\n  const transitionClasses = el[vtcKey];\n  if (transitionClasses) {\n    value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(\" \");\n  }\n  if (value == null) {\n    el.removeAttribute(\"class\");\n  } else if (isSVG) {\n    el.setAttribute(\"class\", value);\n  } else {\n    el.className = value;\n  }\n}\n\nconst vShowOriginalDisplay = Symbol(\"_vod\");\nconst vShowHidden = Symbol(\"_vsh\");\nconst vShow = {\n  beforeMount(el, { value }, { transition }) {\n    el[vShowOriginalDisplay] = el.style.display === \"none\" ? \"\" : el.style.display;\n    if (transition && value) {\n      transition.beforeEnter(el);\n    } else {\n      setDisplay(el, value);\n    }\n  },\n  mounted(el, { value }, { transition }) {\n    if (transition && value) {\n      transition.enter(el);\n    }\n  },\n  updated(el, { value, oldValue }, { transition }) {\n    if (!value === !oldValue) return;\n    if (transition) {\n      if (value) {\n        transition.beforeEnter(el);\n        setDisplay(el, true);\n        transition.enter(el);\n      } else {\n        transition.leave(el, () => {\n          setDisplay(el, false);\n        });\n      }\n    } else {\n      setDisplay(el, value);\n    }\n  },\n  beforeUnmount(el, { value }) {\n    setDisplay(el, value);\n  }\n};\nfunction setDisplay(el, value) {\n  el.style.display = value ? el[vShowOriginalDisplay] : \"none\";\n  el[vShowHidden] = !value;\n}\nfunction initVShowForSSR() {\n  vShow.getSSRProps = ({ value }) => {\n    if (!value) {\n      return { style: { display: \"none\" } };\n    }\n  };\n}\n\nconst CSS_VAR_TEXT = Symbol(\"\");\nfunction useCssVars(getter) {\n  return;\n}\n\nconst displayRE = /(^|;)\\s*display\\s*:/;\nfunction patchStyle(el, prev, next) {\n  const style = el.style;\n  const isCssString = shared.isString(next);\n  let hasControlledDisplay = false;\n  if (next && !isCssString) {\n    if (prev) {\n      if (!shared.isString(prev)) {\n        for (const key in prev) {\n          if (next[key] == null) {\n            setStyle(style, key, \"\");\n          }\n        }\n      } else {\n        for (const prevStyle of prev.split(\";\")) {\n          const key = prevStyle.slice(0, prevStyle.indexOf(\":\")).trim();\n          if (next[key] == null) {\n            setStyle(style, key, \"\");\n          }\n        }\n      }\n    }\n    for (const key in next) {\n      if (key === \"display\") {\n        hasControlledDisplay = true;\n      }\n      setStyle(style, key, next[key]);\n    }\n  } else {\n    if (isCssString) {\n      if (prev !== next) {\n        const cssVarText = style[CSS_VAR_TEXT];\n        if (cssVarText) {\n          next += \";\" + cssVarText;\n        }\n        style.cssText = next;\n        hasControlledDisplay = displayRE.test(next);\n      }\n    } else if (prev) {\n      el.removeAttribute(\"style\");\n    }\n  }\n  if (vShowOriginalDisplay in el) {\n    el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : \"\";\n    if (el[vShowHidden]) {\n      style.display = \"none\";\n    }\n  }\n}\nconst importantRE = /\\s*!important$/;\nfunction setStyle(style, name, val) {\n  if (shared.isArray(val)) {\n    val.forEach((v) => setStyle(style, name, v));\n  } else {\n    if (val == null) val = \"\";\n    if (name.startsWith(\"--\")) {\n      style.setProperty(name, val);\n    } else {\n      const prefixed = autoPrefix(style, name);\n      if (importantRE.test(val)) {\n        style.setProperty(\n          shared.hyphenate(prefixed),\n          val.replace(importantRE, \"\"),\n          \"important\"\n        );\n      } else {\n        style[prefixed] = val;\n      }\n    }\n  }\n}\nconst prefixes = [\"Webkit\", \"Moz\", \"ms\"];\nconst prefixCache = {};\nfunction autoPrefix(style, rawName) {\n  const cached = prefixCache[rawName];\n  if (cached) {\n    return cached;\n  }\n  let name = runtimeCore.camelize(rawName);\n  if (name !== \"filter\" && name in style) {\n    return prefixCache[rawName] = name;\n  }\n  name = shared.capitalize(name);\n  for (let i = 0; i < prefixes.length; i++) {\n    const prefixed = prefixes[i] + name;\n    if (prefixed in style) {\n      return prefixCache[rawName] = prefixed;\n    }\n  }\n  return rawName;\n}\n\nconst xlinkNS = \"http://www.w3.org/1999/xlink\";\nfunction patchAttr(el, key, value, isSVG, instance, isBoolean = shared.isSpecialBooleanAttr(key)) {\n  if (isSVG && key.startsWith(\"xlink:\")) {\n    if (value == null) {\n      el.removeAttributeNS(xlinkNS, key.slice(6, key.length));\n    } else {\n      el.setAttributeNS(xlinkNS, key, value);\n    }\n  } else {\n    if (value == null || isBoolean && !shared.includeBooleanAttr(value)) {\n      el.removeAttribute(key);\n    } else {\n      el.setAttribute(\n        key,\n        isBoolean ? \"\" : shared.isSymbol(value) ? String(value) : value\n      );\n    }\n  }\n}\n\nfunction patchDOMProp(el, key, value, parentComponent, attrName) {\n  if (key === \"innerHTML\" || key === \"textContent\") {\n    if (value != null) {\n      el[key] = key === \"innerHTML\" ? unsafeToTrustedHTML(value) : value;\n    }\n    return;\n  }\n  const tag = el.tagName;\n  if (key === \"value\" && tag !== \"PROGRESS\" && // custom elements may use _value internally\n  !tag.includes(\"-\")) {\n    const oldValue = tag === \"OPTION\" ? el.getAttribute(\"value\") || \"\" : el.value;\n    const newValue = value == null ? (\n      // #11647: value should be set as empty string for null and undefined,\n      // but <input type=\"checkbox\"> should be set as 'on'.\n      el.type === \"checkbox\" ? \"on\" : \"\"\n    ) : String(value);\n    if (oldValue !== newValue || !(\"_value\" in el)) {\n      el.value = newValue;\n    }\n    if (value == null) {\n      el.removeAttribute(key);\n    }\n    el._value = value;\n    return;\n  }\n  let needRemove = false;\n  if (value === \"\" || value == null) {\n    const type = typeof el[key];\n    if (type === \"boolean\") {\n      value = shared.includeBooleanAttr(value);\n    } else if (value == null && type === \"string\") {\n      value = \"\";\n      needRemove = true;\n    } else if (type === \"number\") {\n      value = 0;\n      needRemove = true;\n    }\n  }\n  try {\n    el[key] = value;\n  } catch (e) {\n  }\n  needRemove && el.removeAttribute(attrName || key);\n}\n\nfunction addEventListener(el, event, handler, options) {\n  el.addEventListener(event, handler, options);\n}\nfunction removeEventListener(el, event, handler, options) {\n  el.removeEventListener(event, handler, options);\n}\nconst veiKey = Symbol(\"_vei\");\nfunction patchEvent(el, rawName, prevValue, nextValue, instance = null) {\n  const invokers = el[veiKey] || (el[veiKey] = {});\n  const existingInvoker = invokers[rawName];\n  if (nextValue && existingInvoker) {\n    existingInvoker.value = nextValue;\n  } else {\n    const [name, options] = parseName(rawName);\n    if (nextValue) {\n      const invoker = invokers[rawName] = createInvoker(\n        nextValue,\n        instance\n      );\n      addEventListener(el, name, invoker, options);\n    } else if (existingInvoker) {\n      removeEventListener(el, name, existingInvoker, options);\n      invokers[rawName] = void 0;\n    }\n  }\n}\nconst optionsModifierRE = /(?:Once|Passive|Capture)$/;\nfunction parseName(name) {\n  let options;\n  if (optionsModifierRE.test(name)) {\n    options = {};\n    let m;\n    while (m = name.match(optionsModifierRE)) {\n      name = name.slice(0, name.length - m[0].length);\n      options[m[0].toLowerCase()] = true;\n    }\n  }\n  const event = name[2] === \":\" ? name.slice(3) : shared.hyphenate(name.slice(2));\n  return [event, options];\n}\nlet cachedNow = 0;\nconst p = /* @__PURE__ */ Promise.resolve();\nconst getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now());\nfunction createInvoker(initialValue, instance) {\n  const invoker = (e) => {\n    if (!e._vts) {\n      e._vts = Date.now();\n    } else if (e._vts <= invoker.attached) {\n      return;\n    }\n    runtimeCore.callWithAsyncErrorHandling(\n      patchStopImmediatePropagation(e, invoker.value),\n      instance,\n      5,\n      [e]\n    );\n  };\n  invoker.value = initialValue;\n  invoker.attached = getNow();\n  return invoker;\n}\nfunction patchStopImmediatePropagation(e, value) {\n  if (shared.isArray(value)) {\n    const originalStop = e.stopImmediatePropagation;\n    e.stopImmediatePropagation = () => {\n      originalStop.call(e);\n      e._stopped = true;\n    };\n    return value.map(\n      (fn) => (e2) => !e2._stopped && fn && fn(e2)\n    );\n  } else {\n    return value;\n  }\n}\n\nconst isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter\nkey.charCodeAt(2) > 96 && key.charCodeAt(2) < 123;\nconst patchProp = (el, key, prevValue, nextValue, namespace, parentComponent) => {\n  const isSVG = namespace === \"svg\";\n  if (key === \"class\") {\n    patchClass(el, nextValue, isSVG);\n  } else if (key === \"style\") {\n    patchStyle(el, prevValue, nextValue);\n  } else if (shared.isOn(key)) {\n    if (!shared.isModelListener(key)) {\n      patchEvent(el, key, prevValue, nextValue, parentComponent);\n    }\n  } else if (key[0] === \".\" ? (key = key.slice(1), true) : key[0] === \"^\" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) {\n    patchDOMProp(el, key, nextValue);\n    if (!el.tagName.includes(\"-\") && (key === \"value\" || key === \"checked\" || key === \"selected\")) {\n      patchAttr(el, key, nextValue, isSVG, parentComponent, key !== \"value\");\n    }\n  } else if (\n    // #11081 force set props for possible async custom element\n    el._isVueCE && (/[A-Z]/.test(key) || !shared.isString(nextValue))\n  ) {\n    patchDOMProp(el, shared.camelize(key), nextValue, parentComponent, key);\n  } else {\n    if (key === \"true-value\") {\n      el._trueValue = nextValue;\n    } else if (key === \"false-value\") {\n      el._falseValue = nextValue;\n    }\n    patchAttr(el, key, nextValue, isSVG);\n  }\n};\nfunction shouldSetAsProp(el, key, value, isSVG) {\n  if (isSVG) {\n    if (key === \"innerHTML\" || key === \"textContent\") {\n      return true;\n    }\n    if (key in el && isNativeOn(key) && shared.isFunction(value)) {\n      return true;\n    }\n    return false;\n  }\n  if (key === \"spellcheck\" || key === \"draggable\" || key === \"translate\" || key === \"autocorrect\") {\n    return false;\n  }\n  if (key === \"form\") {\n    return false;\n  }\n  if (key === \"list\" && el.tagName === \"INPUT\") {\n    return false;\n  }\n  if (key === \"type\" && el.tagName === \"TEXTAREA\") {\n    return false;\n  }\n  if (key === \"width\" || key === \"height\") {\n    const tag = el.tagName;\n    if (tag === \"IMG\" || tag === \"VIDEO\" || tag === \"CANVAS\" || tag === \"SOURCE\") {\n      return false;\n    }\n  }\n  if (isNativeOn(key) && shared.isString(value)) {\n    return false;\n  }\n  return key in el;\n}\n\nconst REMOVAL = {};\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineCustomElement(options, extraOptions, _createApp) {\n  const Comp = runtimeCore.defineComponent(options, extraOptions);\n  if (shared.isPlainObject(Comp)) shared.extend(Comp, extraOptions);\n  class VueCustomElement extends VueElement {\n    constructor(initialProps) {\n      super(Comp, initialProps, _createApp);\n    }\n  }\n  VueCustomElement.def = Comp;\n  return VueCustomElement;\n}\n/*! #__NO_SIDE_EFFECTS__ */\nconst defineSSRCustomElement = /* @__NO_SIDE_EFFECTS__ */ (options, extraOptions) => {\n  return /* @__PURE__ */ defineCustomElement(options, extraOptions, createSSRApp);\n};\nconst BaseClass = typeof HTMLElement !== \"undefined\" ? HTMLElement : class {\n};\nclass VueElement extends BaseClass {\n  constructor(_def, _props = {}, _createApp = createApp) {\n    super();\n    this._def = _def;\n    this._props = _props;\n    this._createApp = _createApp;\n    this._isVueCE = true;\n    /**\n     * @internal\n     */\n    this._instance = null;\n    /**\n     * @internal\n     */\n    this._app = null;\n    /**\n     * @internal\n     */\n    this._nonce = this._def.nonce;\n    this._connected = false;\n    this._resolved = false;\n    this._numberProps = null;\n    this._styleChildren = /* @__PURE__ */ new WeakSet();\n    this._ob = null;\n    if (this.shadowRoot && _createApp !== createApp) {\n      this._root = this.shadowRoot;\n    } else {\n      if (_def.shadowRoot !== false) {\n        this.attachShadow({ mode: \"open\" });\n        this._root = this.shadowRoot;\n      } else {\n        this._root = this;\n      }\n    }\n  }\n  connectedCallback() {\n    if (!this.isConnected) return;\n    if (!this.shadowRoot && !this._resolved) {\n      this._parseSlots();\n    }\n    this._connected = true;\n    let parent = this;\n    while (parent = parent && (parent.parentNode || parent.host)) {\n      if (parent instanceof VueElement) {\n        this._parent = parent;\n        break;\n      }\n    }\n    if (!this._instance) {\n      if (this._resolved) {\n        this._mount(this._def);\n      } else {\n        if (parent && parent._pendingResolve) {\n          this._pendingResolve = parent._pendingResolve.then(() => {\n            this._pendingResolve = void 0;\n            this._resolveDef();\n          });\n        } else {\n          this._resolveDef();\n        }\n      }\n    }\n  }\n  _setParent(parent = this._parent) {\n    if (parent) {\n      this._instance.parent = parent._instance;\n      this._inheritParentContext(parent);\n    }\n  }\n  _inheritParentContext(parent = this._parent) {\n    if (parent && this._app) {\n      Object.setPrototypeOf(\n        this._app._context.provides,\n        parent._instance.provides\n      );\n    }\n  }\n  disconnectedCallback() {\n    this._connected = false;\n    runtimeCore.nextTick(() => {\n      if (!this._connected) {\n        if (this._ob) {\n          this._ob.disconnect();\n          this._ob = null;\n        }\n        this._app && this._app.unmount();\n        if (this._instance) this._instance.ce = void 0;\n        this._app = this._instance = null;\n      }\n    });\n  }\n  /**\n   * resolve inner component definition (handle possible async component)\n   */\n  _resolveDef() {\n    if (this._pendingResolve) {\n      return;\n    }\n    for (let i = 0; i < this.attributes.length; i++) {\n      this._setAttr(this.attributes[i].name);\n    }\n    this._ob = new MutationObserver((mutations) => {\n      for (const m of mutations) {\n        this._setAttr(m.attributeName);\n      }\n    });\n    this._ob.observe(this, { attributes: true });\n    const resolve = (def, isAsync = false) => {\n      this._resolved = true;\n      this._pendingResolve = void 0;\n      const { props, styles } = def;\n      let numberProps;\n      if (props && !shared.isArray(props)) {\n        for (const key in props) {\n          const opt = props[key];\n          if (opt === Number || opt && opt.type === Number) {\n            if (key in this._props) {\n              this._props[key] = shared.toNumber(this._props[key]);\n            }\n            (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[shared.camelize(key)] = true;\n          }\n        }\n      }\n      this._numberProps = numberProps;\n      this._resolveProps(def);\n      if (this.shadowRoot) {\n        this._applyStyles(styles);\n      }\n      this._mount(def);\n    };\n    const asyncDef = this._def.__asyncLoader;\n    if (asyncDef) {\n      this._pendingResolve = asyncDef().then((def) => {\n        def.configureApp = this._def.configureApp;\n        resolve(this._def = def, true);\n      });\n    } else {\n      resolve(this._def);\n    }\n  }\n  _mount(def) {\n    this._app = this._createApp(def);\n    this._inheritParentContext();\n    if (def.configureApp) {\n      def.configureApp(this._app);\n    }\n    this._app._ceVNode = this._createVNode();\n    this._app.mount(this._root);\n    const exposed = this._instance && this._instance.exposed;\n    if (!exposed) return;\n    for (const key in exposed) {\n      if (!shared.hasOwn(this, key)) {\n        Object.defineProperty(this, key, {\n          // unwrap ref to be consistent with public instance behavior\n          get: () => runtimeCore.unref(exposed[key])\n        });\n      }\n    }\n  }\n  _resolveProps(def) {\n    const { props } = def;\n    const declaredPropKeys = shared.isArray(props) ? props : Object.keys(props || {});\n    for (const key of Object.keys(this)) {\n      if (key[0] !== \"_\" && declaredPropKeys.includes(key)) {\n        this._setProp(key, this[key]);\n      }\n    }\n    for (const key of declaredPropKeys.map(shared.camelize)) {\n      Object.defineProperty(this, key, {\n        get() {\n          return this._getProp(key);\n        },\n        set(val) {\n          this._setProp(key, val, true, true);\n        }\n      });\n    }\n  }\n  _setAttr(key) {\n    if (key.startsWith(\"data-v-\")) return;\n    const has = this.hasAttribute(key);\n    let value = has ? this.getAttribute(key) : REMOVAL;\n    const camelKey = shared.camelize(key);\n    if (has && this._numberProps && this._numberProps[camelKey]) {\n      value = shared.toNumber(value);\n    }\n    this._setProp(camelKey, value, false, true);\n  }\n  /**\n   * @internal\n   */\n  _getProp(key) {\n    return this._props[key];\n  }\n  /**\n   * @internal\n   */\n  _setProp(key, val, shouldReflect = true, shouldUpdate = false) {\n    if (val !== this._props[key]) {\n      if (val === REMOVAL) {\n        delete this._props[key];\n      } else {\n        this._props[key] = val;\n        if (key === \"key\" && this._app) {\n          this._app._ceVNode.key = val;\n        }\n      }\n      if (shouldUpdate && this._instance) {\n        this._update();\n      }\n      if (shouldReflect) {\n        const ob = this._ob;\n        ob && ob.disconnect();\n        if (val === true) {\n          this.setAttribute(shared.hyphenate(key), \"\");\n        } else if (typeof val === \"string\" || typeof val === \"number\") {\n          this.setAttribute(shared.hyphenate(key), val + \"\");\n        } else if (!val) {\n          this.removeAttribute(shared.hyphenate(key));\n        }\n        ob && ob.observe(this, { attributes: true });\n      }\n    }\n  }\n  _update() {\n    const vnode = this._createVNode();\n    if (this._app) vnode.appContext = this._app._context;\n    render(vnode, this._root);\n  }\n  _createVNode() {\n    const baseProps = {};\n    if (!this.shadowRoot) {\n      baseProps.onVnodeMounted = baseProps.onVnodeUpdated = this._renderSlots.bind(this);\n    }\n    const vnode = runtimeCore.createVNode(this._def, shared.extend(baseProps, this._props));\n    if (!this._instance) {\n      vnode.ce = (instance) => {\n        this._instance = instance;\n        instance.ce = this;\n        instance.isCE = true;\n        const dispatch = (event, args) => {\n          this.dispatchEvent(\n            new CustomEvent(\n              event,\n              shared.isPlainObject(args[0]) ? shared.extend({ detail: args }, args[0]) : { detail: args }\n            )\n          );\n        };\n        instance.emit = (event, ...args) => {\n          dispatch(event, args);\n          if (shared.hyphenate(event) !== event) {\n            dispatch(shared.hyphenate(event), args);\n          }\n        };\n        this._setParent();\n      };\n    }\n    return vnode;\n  }\n  _applyStyles(styles, owner) {\n    if (!styles) return;\n    if (owner) {\n      if (owner === this._def || this._styleChildren.has(owner)) {\n        return;\n      }\n      this._styleChildren.add(owner);\n    }\n    const nonce = this._nonce;\n    for (let i = styles.length - 1; i >= 0; i--) {\n      const s = document.createElement(\"style\");\n      if (nonce) s.setAttribute(\"nonce\", nonce);\n      s.textContent = styles[i];\n      this.shadowRoot.prepend(s);\n    }\n  }\n  /**\n   * Only called when shadowRoot is false\n   */\n  _parseSlots() {\n    const slots = this._slots = {};\n    let n;\n    while (n = this.firstChild) {\n      const slotName = n.nodeType === 1 && n.getAttribute(\"slot\") || \"default\";\n      (slots[slotName] || (slots[slotName] = [])).push(n);\n      this.removeChild(n);\n    }\n  }\n  /**\n   * Only called when shadowRoot is false\n   */\n  _renderSlots() {\n    const outlets = (this._teleportTarget || this).querySelectorAll(\"slot\");\n    const scopeId = this._instance.type.__scopeId;\n    for (let i = 0; i < outlets.length; i++) {\n      const o = outlets[i];\n      const slotName = o.getAttribute(\"name\") || \"default\";\n      const content = this._slots[slotName];\n      const parent = o.parentNode;\n      if (content) {\n        for (const n of content) {\n          if (scopeId && n.nodeType === 1) {\n            const id = scopeId + \"-s\";\n            const walker = document.createTreeWalker(n, 1);\n            n.setAttribute(id, \"\");\n            let child;\n            while (child = walker.nextNode()) {\n              child.setAttribute(id, \"\");\n            }\n          }\n          parent.insertBefore(n, o);\n        }\n      } else {\n        while (o.firstChild) parent.insertBefore(o.firstChild, o);\n      }\n      parent.removeChild(o);\n    }\n  }\n  /**\n   * @internal\n   */\n  _injectChildStyle(comp) {\n    this._applyStyles(comp.styles, comp);\n  }\n  /**\n   * @internal\n   */\n  _removeChildStyle(comp) {\n  }\n}\nfunction useHost(caller) {\n  const instance = runtimeCore.getCurrentInstance();\n  const el = instance && instance.ce;\n  if (el) {\n    return el;\n  }\n  return null;\n}\nfunction useShadowRoot() {\n  const el = useHost();\n  return el && el.shadowRoot;\n}\n\nfunction useCssModule(name = \"$style\") {\n  {\n    const instance = runtimeCore.getCurrentInstance();\n    if (!instance) {\n      return shared.EMPTY_OBJ;\n    }\n    const modules = instance.type.__cssModules;\n    if (!modules) {\n      return shared.EMPTY_OBJ;\n    }\n    const mod = modules[name];\n    if (!mod) {\n      return shared.EMPTY_OBJ;\n    }\n    return mod;\n  }\n}\n\nconst positionMap = /* @__PURE__ */ new WeakMap();\nconst newPositionMap = /* @__PURE__ */ new WeakMap();\nconst moveCbKey = Symbol(\"_moveCb\");\nconst enterCbKey = Symbol(\"_enterCb\");\nconst decorate = (t) => {\n  delete t.props.mode;\n  return t;\n};\nconst TransitionGroupImpl = /* @__PURE__ */ decorate({\n  name: \"TransitionGroup\",\n  props: /* @__PURE__ */ shared.extend({}, TransitionPropsValidators, {\n    tag: String,\n    moveClass: String\n  }),\n  setup(props, { slots }) {\n    const instance = runtimeCore.getCurrentInstance();\n    const state = runtimeCore.useTransitionState();\n    let prevChildren;\n    let children;\n    runtimeCore.onUpdated(() => {\n      if (!prevChildren.length) {\n        return;\n      }\n      const moveClass = props.moveClass || `${props.name || \"v\"}-move`;\n      if (!hasCSSTransform(\n        prevChildren[0].el,\n        instance.vnode.el,\n        moveClass\n      )) {\n        prevChildren = [];\n        return;\n      }\n      prevChildren.forEach(callPendingCbs);\n      prevChildren.forEach(recordPosition);\n      const movedChildren = prevChildren.filter(applyTranslation);\n      forceReflow();\n      movedChildren.forEach((c) => {\n        const el = c.el;\n        const style = el.style;\n        addTransitionClass(el, moveClass);\n        style.transform = style.webkitTransform = style.transitionDuration = \"\";\n        const cb = el[moveCbKey] = (e) => {\n          if (e && e.target !== el) {\n            return;\n          }\n          if (!e || /transform$/.test(e.propertyName)) {\n            el.removeEventListener(\"transitionend\", cb);\n            el[moveCbKey] = null;\n            removeTransitionClass(el, moveClass);\n          }\n        };\n        el.addEventListener(\"transitionend\", cb);\n      });\n      prevChildren = [];\n    });\n    return () => {\n      const rawProps = runtimeCore.toRaw(props);\n      const cssTransitionProps = resolveTransitionProps(rawProps);\n      let tag = rawProps.tag || runtimeCore.Fragment;\n      prevChildren = [];\n      if (children) {\n        for (let i = 0; i < children.length; i++) {\n          const child = children[i];\n          if (child.el && child.el instanceof Element) {\n            prevChildren.push(child);\n            runtimeCore.setTransitionHooks(\n              child,\n              runtimeCore.resolveTransitionHooks(\n                child,\n                cssTransitionProps,\n                state,\n                instance\n              )\n            );\n            positionMap.set(\n              child,\n              child.el.getBoundingClientRect()\n            );\n          }\n        }\n      }\n      children = slots.default ? runtimeCore.getTransitionRawChildren(slots.default()) : [];\n      for (let i = 0; i < children.length; i++) {\n        const child = children[i];\n        if (child.key != null) {\n          runtimeCore.setTransitionHooks(\n            child,\n            runtimeCore.resolveTransitionHooks(child, cssTransitionProps, state, instance)\n          );\n        }\n      }\n      return runtimeCore.createVNode(tag, null, children);\n    };\n  }\n});\nconst TransitionGroup = TransitionGroupImpl;\nfunction callPendingCbs(c) {\n  const el = c.el;\n  if (el[moveCbKey]) {\n    el[moveCbKey]();\n  }\n  if (el[enterCbKey]) {\n    el[enterCbKey]();\n  }\n}\nfunction recordPosition(c) {\n  newPositionMap.set(c, c.el.getBoundingClientRect());\n}\nfunction applyTranslation(c) {\n  const oldPos = positionMap.get(c);\n  const newPos = newPositionMap.get(c);\n  const dx = oldPos.left - newPos.left;\n  const dy = oldPos.top - newPos.top;\n  if (dx || dy) {\n    const s = c.el.style;\n    s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;\n    s.transitionDuration = \"0s\";\n    return c;\n  }\n}\nfunction hasCSSTransform(el, root, moveClass) {\n  const clone = el.cloneNode();\n  const _vtc = el[vtcKey];\n  if (_vtc) {\n    _vtc.forEach((cls) => {\n      cls.split(/\\s+/).forEach((c) => c && clone.classList.remove(c));\n    });\n  }\n  moveClass.split(/\\s+/).forEach((c) => c && clone.classList.add(c));\n  clone.style.display = \"none\";\n  const container = root.nodeType === 1 ? root : root.parentNode;\n  container.appendChild(clone);\n  const { hasTransform } = getTransitionInfo(clone);\n  container.removeChild(clone);\n  return hasTransform;\n}\n\nconst getModelAssigner = (vnode) => {\n  const fn = vnode.props[\"onUpdate:modelValue\"] || false;\n  return shared.isArray(fn) ? (value) => shared.invokeArrayFns(fn, value) : fn;\n};\nfunction onCompositionStart(e) {\n  e.target.composing = true;\n}\nfunction onCompositionEnd(e) {\n  const target = e.target;\n  if (target.composing) {\n    target.composing = false;\n    target.dispatchEvent(new Event(\"input\"));\n  }\n}\nconst assignKey = Symbol(\"_assign\");\nconst vModelText = {\n  created(el, { modifiers: { lazy, trim, number } }, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    const castToNumber = number || vnode.props && vnode.props.type === \"number\";\n    addEventListener(el, lazy ? \"change\" : \"input\", (e) => {\n      if (e.target.composing) return;\n      let domValue = el.value;\n      if (trim) {\n        domValue = domValue.trim();\n      }\n      if (castToNumber) {\n        domValue = shared.looseToNumber(domValue);\n      }\n      el[assignKey](domValue);\n    });\n    if (trim) {\n      addEventListener(el, \"change\", () => {\n        el.value = el.value.trim();\n      });\n    }\n    if (!lazy) {\n      addEventListener(el, \"compositionstart\", onCompositionStart);\n      addEventListener(el, \"compositionend\", onCompositionEnd);\n      addEventListener(el, \"change\", onCompositionEnd);\n    }\n  },\n  // set value on mounted so it's after min/max for type=\"range\"\n  mounted(el, { value }) {\n    el.value = value == null ? \"\" : value;\n  },\n  beforeUpdate(el, { value, oldValue, modifiers: { lazy, trim, number } }, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    if (el.composing) return;\n    const elValue = (number || el.type === \"number\") && !/^0\\d/.test(el.value) ? shared.looseToNumber(el.value) : el.value;\n    const newValue = value == null ? \"\" : value;\n    if (elValue === newValue) {\n      return;\n    }\n    if (document.activeElement === el && el.type !== \"range\") {\n      if (lazy && value === oldValue) {\n        return;\n      }\n      if (trim && el.value.trim() === newValue) {\n        return;\n      }\n    }\n    el.value = newValue;\n  }\n};\nconst vModelCheckbox = {\n  // #4096 array checkboxes need to be deep traversed\n  deep: true,\n  created(el, _, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    addEventListener(el, \"change\", () => {\n      const modelValue = el._modelValue;\n      const elementValue = getValue(el);\n      const checked = el.checked;\n      const assign = el[assignKey];\n      if (shared.isArray(modelValue)) {\n        const index = shared.looseIndexOf(modelValue, elementValue);\n        const found = index !== -1;\n        if (checked && !found) {\n          assign(modelValue.concat(elementValue));\n        } else if (!checked && found) {\n          const filtered = [...modelValue];\n          filtered.splice(index, 1);\n          assign(filtered);\n        }\n      } else if (shared.isSet(modelValue)) {\n        const cloned = new Set(modelValue);\n        if (checked) {\n          cloned.add(elementValue);\n        } else {\n          cloned.delete(elementValue);\n        }\n        assign(cloned);\n      } else {\n        assign(getCheckboxValue(el, checked));\n      }\n    });\n  },\n  // set initial checked on mount to wait for true-value/false-value\n  mounted: setChecked,\n  beforeUpdate(el, binding, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    setChecked(el, binding, vnode);\n  }\n};\nfunction setChecked(el, { value, oldValue }, vnode) {\n  el._modelValue = value;\n  let checked;\n  if (shared.isArray(value)) {\n    checked = shared.looseIndexOf(value, vnode.props.value) > -1;\n  } else if (shared.isSet(value)) {\n    checked = value.has(vnode.props.value);\n  } else {\n    if (value === oldValue) return;\n    checked = shared.looseEqual(value, getCheckboxValue(el, true));\n  }\n  if (el.checked !== checked) {\n    el.checked = checked;\n  }\n}\nconst vModelRadio = {\n  created(el, { value }, vnode) {\n    el.checked = shared.looseEqual(value, vnode.props.value);\n    el[assignKey] = getModelAssigner(vnode);\n    addEventListener(el, \"change\", () => {\n      el[assignKey](getValue(el));\n    });\n  },\n  beforeUpdate(el, { value, oldValue }, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    if (value !== oldValue) {\n      el.checked = shared.looseEqual(value, vnode.props.value);\n    }\n  }\n};\nconst vModelSelect = {\n  // <select multiple> value need to be deep traversed\n  deep: true,\n  created(el, { value, modifiers: { number } }, vnode) {\n    const isSetModel = shared.isSet(value);\n    addEventListener(el, \"change\", () => {\n      const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map(\n        (o) => number ? shared.looseToNumber(getValue(o)) : getValue(o)\n      );\n      el[assignKey](\n        el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0]\n      );\n      el._assigning = true;\n      runtimeCore.nextTick(() => {\n        el._assigning = false;\n      });\n    });\n    el[assignKey] = getModelAssigner(vnode);\n  },\n  // set value in mounted & updated because <select> relies on its children\n  // <option>s.\n  mounted(el, { value }) {\n    setSelected(el, value);\n  },\n  beforeUpdate(el, _binding, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n  },\n  updated(el, { value }) {\n    if (!el._assigning) {\n      setSelected(el, value);\n    }\n  }\n};\nfunction setSelected(el, value) {\n  const isMultiple = el.multiple;\n  const isArrayValue = shared.isArray(value);\n  if (isMultiple && !isArrayValue && !shared.isSet(value)) {\n    return;\n  }\n  for (let i = 0, l = el.options.length; i < l; i++) {\n    const option = el.options[i];\n    const optionValue = getValue(option);\n    if (isMultiple) {\n      if (isArrayValue) {\n        const optionType = typeof optionValue;\n        if (optionType === \"string\" || optionType === \"number\") {\n          option.selected = value.some((v) => String(v) === String(optionValue));\n        } else {\n          option.selected = shared.looseIndexOf(value, optionValue) > -1;\n        }\n      } else {\n        option.selected = value.has(optionValue);\n      }\n    } else if (shared.looseEqual(getValue(option), value)) {\n      if (el.selectedIndex !== i) el.selectedIndex = i;\n      return;\n    }\n  }\n  if (!isMultiple && el.selectedIndex !== -1) {\n    el.selectedIndex = -1;\n  }\n}\nfunction getValue(el) {\n  return \"_value\" in el ? el._value : el.value;\n}\nfunction getCheckboxValue(el, checked) {\n  const key = checked ? \"_trueValue\" : \"_falseValue\";\n  return key in el ? el[key] : checked;\n}\nconst vModelDynamic = {\n  created(el, binding, vnode) {\n    callModelHook(el, binding, vnode, null, \"created\");\n  },\n  mounted(el, binding, vnode) {\n    callModelHook(el, binding, vnode, null, \"mounted\");\n  },\n  beforeUpdate(el, binding, vnode, prevVNode) {\n    callModelHook(el, binding, vnode, prevVNode, \"beforeUpdate\");\n  },\n  updated(el, binding, vnode, prevVNode) {\n    callModelHook(el, binding, vnode, prevVNode, \"updated\");\n  }\n};\nfunction resolveDynamicModel(tagName, type) {\n  switch (tagName) {\n    case \"SELECT\":\n      return vModelSelect;\n    case \"TEXTAREA\":\n      return vModelText;\n    default:\n      switch (type) {\n        case \"checkbox\":\n          return vModelCheckbox;\n        case \"radio\":\n          return vModelRadio;\n        default:\n          return vModelText;\n      }\n  }\n}\nfunction callModelHook(el, binding, vnode, prevVNode, hook) {\n  const modelToUse = resolveDynamicModel(\n    el.tagName,\n    vnode.props && vnode.props.type\n  );\n  const fn = modelToUse[hook];\n  fn && fn(el, binding, vnode, prevVNode);\n}\nfunction initVModelForSSR() {\n  vModelText.getSSRProps = ({ value }) => ({ value });\n  vModelRadio.getSSRProps = ({ value }, vnode) => {\n    if (vnode.props && shared.looseEqual(vnode.props.value, value)) {\n      return { checked: true };\n    }\n  };\n  vModelCheckbox.getSSRProps = ({ value }, vnode) => {\n    if (shared.isArray(value)) {\n      if (vnode.props && shared.looseIndexOf(value, vnode.props.value) > -1) {\n        return { checked: true };\n      }\n    } else if (shared.isSet(value)) {\n      if (vnode.props && value.has(vnode.props.value)) {\n        return { checked: true };\n      }\n    } else if (value) {\n      return { checked: true };\n    }\n  };\n  vModelDynamic.getSSRProps = (binding, vnode) => {\n    if (typeof vnode.type !== \"string\") {\n      return;\n    }\n    const modelToUse = resolveDynamicModel(\n      // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase\n      vnode.type.toUpperCase(),\n      vnode.props && vnode.props.type\n    );\n    if (modelToUse.getSSRProps) {\n      return modelToUse.getSSRProps(binding, vnode);\n    }\n  };\n}\n\nconst systemModifiers = [\"ctrl\", \"shift\", \"alt\", \"meta\"];\nconst modifierGuards = {\n  stop: (e) => e.stopPropagation(),\n  prevent: (e) => e.preventDefault(),\n  self: (e) => e.target !== e.currentTarget,\n  ctrl: (e) => !e.ctrlKey,\n  shift: (e) => !e.shiftKey,\n  alt: (e) => !e.altKey,\n  meta: (e) => !e.metaKey,\n  left: (e) => \"button\" in e && e.button !== 0,\n  middle: (e) => \"button\" in e && e.button !== 1,\n  right: (e) => \"button\" in e && e.button !== 2,\n  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))\n};\nconst withModifiers = (fn, modifiers) => {\n  const cache = fn._withMods || (fn._withMods = {});\n  const cacheKey = modifiers.join(\".\");\n  return cache[cacheKey] || (cache[cacheKey] = (event, ...args) => {\n    for (let i = 0; i < modifiers.length; i++) {\n      const guard = modifierGuards[modifiers[i]];\n      if (guard && guard(event, modifiers)) return;\n    }\n    return fn(event, ...args);\n  });\n};\nconst keyNames = {\n  esc: \"escape\",\n  space: \" \",\n  up: \"arrow-up\",\n  left: \"arrow-left\",\n  right: \"arrow-right\",\n  down: \"arrow-down\",\n  delete: \"backspace\"\n};\nconst withKeys = (fn, modifiers) => {\n  const cache = fn._withKeys || (fn._withKeys = {});\n  const cacheKey = modifiers.join(\".\");\n  return cache[cacheKey] || (cache[cacheKey] = (event) => {\n    if (!(\"key\" in event)) {\n      return;\n    }\n    const eventKey = shared.hyphenate(event.key);\n    if (modifiers.some(\n      (k) => k === eventKey || keyNames[k] === eventKey\n    )) {\n      return fn(event);\n    }\n  });\n};\n\nconst rendererOptions = /* @__PURE__ */ shared.extend({ patchProp }, nodeOps);\nlet renderer;\nlet enabledHydration = false;\nfunction ensureRenderer() {\n  return renderer || (renderer = runtimeCore.createRenderer(rendererOptions));\n}\nfunction ensureHydrationRenderer() {\n  renderer = enabledHydration ? renderer : runtimeCore.createHydrationRenderer(rendererOptions);\n  enabledHydration = true;\n  return renderer;\n}\nconst render = (...args) => {\n  ensureRenderer().render(...args);\n};\nconst hydrate = (...args) => {\n  ensureHydrationRenderer().hydrate(...args);\n};\nconst createApp = (...args) => {\n  const app = ensureRenderer().createApp(...args);\n  const { mount } = app;\n  app.mount = (containerOrSelector) => {\n    const container = normalizeContainer(containerOrSelector);\n    if (!container) return;\n    const component = app._component;\n    if (!shared.isFunction(component) && !component.render && !component.template) {\n      component.template = container.innerHTML;\n    }\n    if (container.nodeType === 1) {\n      container.textContent = \"\";\n    }\n    const proxy = mount(container, false, resolveRootNamespace(container));\n    if (container instanceof Element) {\n      container.removeAttribute(\"v-cloak\");\n      container.setAttribute(\"data-v-app\", \"\");\n    }\n    return proxy;\n  };\n  return app;\n};\nconst createSSRApp = (...args) => {\n  const app = ensureHydrationRenderer().createApp(...args);\n  const { mount } = app;\n  app.mount = (containerOrSelector) => {\n    const container = normalizeContainer(containerOrSelector);\n    if (container) {\n      return mount(container, true, resolveRootNamespace(container));\n    }\n  };\n  return app;\n};\nfunction resolveRootNamespace(container) {\n  if (container instanceof SVGElement) {\n    return \"svg\";\n  }\n  if (typeof MathMLElement === \"function\" && container instanceof MathMLElement) {\n    return \"mathml\";\n  }\n}\nfunction normalizeContainer(container) {\n  if (shared.isString(container)) {\n    const res = document.querySelector(container);\n    return res;\n  }\n  return container;\n}\nlet ssrDirectiveInitialized = false;\nconst initDirectivesForSSR = () => {\n  if (!ssrDirectiveInitialized) {\n    ssrDirectiveInitialized = true;\n    initVModelForSSR();\n    initVShowForSSR();\n  }\n} ;\n\nexports.Transition = Transition;\nexports.TransitionGroup = TransitionGroup;\nexports.VueElement = VueElement;\nexports.createApp = createApp;\nexports.createSSRApp = createSSRApp;\nexports.defineCustomElement = defineCustomElement;\nexports.defineSSRCustomElement = defineSSRCustomElement;\nexports.hydrate = hydrate;\nexports.initDirectivesForSSR = initDirectivesForSSR;\nexports.render = render;\nexports.useCssModule = useCssModule;\nexports.useCssVars = useCssVars;\nexports.useHost = useHost;\nexports.useShadowRoot = useShadowRoot;\nexports.vModelCheckbox = vModelCheckbox;\nexports.vModelDynamic = vModelDynamic;\nexports.vModelRadio = vModelRadio;\nexports.vModelSelect = vModelSelect;\nexports.vModelText = vModelText;\nexports.vShow = vShow;\nexports.withKeys = withKeys;\nexports.withModifiers = withModifiers;\nObject.keys(runtimeCore).forEach(function (k) {\n  if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = runtimeCore[k];\n});\n","'use strict'\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./dist/runtime-dom.cjs.prod.js')\n} else {\n  module.exports = require('./dist/runtime-dom.cjs.js')\n}\n","/**\n* vue v3.5.18\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar compilerDom = require('@vue/compiler-dom');\nvar runtimeDom = require('@vue/runtime-dom');\nvar shared = require('@vue/shared');\n\nfunction _interopNamespaceDefault(e) {\n  var n = Object.create(null);\n  if (e) {\n    for (var k in e) {\n      n[k] = e[k];\n    }\n  }\n  n.default = e;\n  return Object.freeze(n);\n}\n\nvar runtimeDom__namespace = /*#__PURE__*/_interopNamespaceDefault(runtimeDom);\n\nconst compileCache = /* @__PURE__ */ Object.create(null);\nfunction compileToFunction(template, options) {\n  if (!shared.isString(template)) {\n    if (template.nodeType) {\n      template = template.innerHTML;\n    } else {\n      return shared.NOOP;\n    }\n  }\n  const key = shared.genCacheKey(template, options);\n  const cached = compileCache[key];\n  if (cached) {\n    return cached;\n  }\n  if (template[0] === \"#\") {\n    const el = document.querySelector(template);\n    template = el ? el.innerHTML : ``;\n  }\n  const opts = shared.extend(\n    {\n      hoistStatic: true,\n      onError: void 0,\n      onWarn: shared.NOOP\n    },\n    options\n  );\n  if (!opts.isCustomElement && typeof customElements !== \"undefined\") {\n    opts.isCustomElement = (tag) => !!customElements.get(tag);\n  }\n  const { code } = compilerDom.compile(template, opts);\n  const render = new Function(\"Vue\", code)(runtimeDom__namespace);\n  render._rc = true;\n  return compileCache[key] = render;\n}\nruntimeDom.registerRuntimeCompiler(compileToFunction);\n\nexports.compile = compileToFunction;\nObject.keys(runtimeDom).forEach(function (k) {\n  if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = runtimeDom[k];\n});\n","'use strict'\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./dist/vue.cjs.prod.js')\n} else {\n  module.exports = require('./dist/vue.cjs.js')\n}\n","//We implement the backend version of getWHDebugFlags so bridge can access us without going through a recursive dep\n\nimport type { DTAPStage } from \"./concepts\";\n\n/// List global polyfills currently active. This may be needed to align TypeScript hosts configuration\nexport const globalPolyfills: string[] = [];\n\n/// An object with string keys and typed values\nexport interface WellKnownFlags {\n  /** Log RPcs */\n  rpc?: boolean;\n  /** Log web traffic */\n  wrq?: boolean;\n  /** Autoprofile */\n  apr?: boolean;\n  /** IPC */\n  ipc?: boolean;\n  /** async */\n  async?: boolean;\n}\nexport type DebugFlags = WellKnownFlags & { [key: string]: boolean | undefined };\n\nexport type DebugConfig = {\n  tags: readonly string[];\n  outputsession: string;\n  context: string;\n};\n\n/// Empty or no parameter lang is get, otherwise it's a set\nexport type GetSetAssetBase = (assetBase?: string | null) => string | null;\n\nexport type EnvHooks = {\n  currentAssetBase: GetSetAssetBase;\n};\n\n\nconst settingschangedcallbacks = new Array<() => void>;\n\n/* Global debug flags are set by `wh debug`, local flags are prefilled by environment variables.\n   Edits to the debug flags will be applied to the local flags (unless setDebugFlagsOverrideCB returns\n   override records).\n*/\nconst globalDebugFlags: DebugFlags = {}, localDebugFlags: DebugFlags = {};\n\n/** Returns the flag override records. The first record is examined first, then the second, etc. */\nlet debugFlagsOverridesCB: undefined | (() => DebugFlags[]);\n\n/** Override the debug flag override getter. */\nexport function setDebugFlagsOverrideCB(cb: undefined | (() => DebugFlags[])) {\n  debugFlagsOverridesCB = cb;\n}\n\n/* Proxy handler for the published debug flags. Uses the override records (with the first record\n   examined first, then the second, etc.) to override the flags from baseDebugFlags. Setting to `true` sets\n   the flag, `false` disables it and setting to `undefined` has the same effect as deleting the property in the\n   current top record (exposing any value from a lower record, like the debug settings from `wh debug`).\n*/\nclass DebugFlagsProxyHandler implements ProxyHandler<DebugFlags> {\n  private getRecordList(): DebugFlags[] {\n    return [...debugFlagsOverridesCB?.() ?? [], localDebugFlags, globalDebugFlags];\n  }\n\n  get(target: DebugFlags, p: string) {\n    for (const record of this.getRecordList())\n      if (p in record && typeof record[p] !== \"undefined\")\n        return record[p];\n    return undefined;\n  }\n  has(target: DebugFlags, p: string): boolean {\n    return this.get(target, p) !== undefined;\n  }\n  ownKeys(target: DebugFlags): Array<string | symbol> {\n    const keys = new Array<string | symbol>;\n    for (const record of this.getRecordList())\n      for (const key of Reflect.ownKeys(record))\n        if (typeof key === \"string\" && record[key] !== undefined && !keys.includes(key))\n          keys.push(key);\n    return keys;\n  }\n  set(target: DebugFlags, p: string, newValue: boolean | undefined): boolean {\n    const toModify = this.getRecordList()[0];\n    if (typeof newValue === \"boolean\")\n      toModify[p] = newValue;\n    else\n      delete toModify[p];\n\n    runSettingsCallbacks();\n    return true;\n  }\n  deleteProperty(target: DebugFlags, p: string): boolean {\n    const toModify = this.getRecordList()[0];\n    delete toModify[p];\n\n    runSettingsCallbacks();\n    return true;\n  }\n  getOwnPropertyDescriptor(target: DebugFlags, p: string): PropertyDescriptor | undefined {\n    const value = this.get(target, p);\n    return value !== undefined ? { enumerable: true, value, configurable: true } : undefined;\n  }\n}\n\nexport const debugFlags = new Proxy<DebugFlags>({\n  [Symbol.for('nodejs.util.inspect.custom')]: formatForConsoleLogs\n}, new DebugFlagsProxyHandler());\n\nfunction formatForConsoleLogs() {\n  return `DebugFlags [${[...Object.keys(debugFlags)].filter(key => debugFlags[key]).join(\", \")}]`;\n}\n\nfunction runSettingsCallbacks() {\n  for (const cb of [...settingschangedcallbacks]) {\n    try {\n      cb();\n    } catch (e) {\n      console.error(\"Error invoking settings change callback\", cb?.name, e);\n      //ignore, debugFlags can change due to external updates so they're basically signal handlers and there's no real point in crashing whatever was really running\n    }\n  }\n}\n\n/** Update the debugconfig as present in the system configuration record\n    @param settings - debugconfig cell of the system configuration record\n*/\nexport function updateDebugConfig(settings: DebugConfig | null) {\n  const oldenabledflags = Object.keys(globalDebugFlags).sort();\n  const newenabledflags = settings?.tags ? [...settings.tags].sort() : [];\n\n  if (oldenabledflags.join(\",\") !== newenabledflags.join(\",\")) {\n    for (const flag of newenabledflags)\n      globalDebugFlags[flag] = true;\n    for (const flag of oldenabledflags)\n      if (!newenabledflags.includes(flag))\n        delete globalDebugFlags[flag];\n\n    runSettingsCallbacks();\n  }\n  if (debugFlags.async && Error.stackTraceLimit < 100)\n    Error.stackTraceLimit = 100;\n}\n\nexport function registerDebugConfigChangedCallback(cb: () => void) {\n  settingschangedcallbacks.push(cb);\n}\n\nexport function updateLocalDebugFlags(mode: \"enable\" | \"disable\" | \"clear\", flags: string[]): DebugFlags {\n  switch (mode) {\n    case \"enable\":\n    case \"disable\":\n      for (const flag of flags)\n        localDebugFlags[flag] = mode === \"enable\";\n      break;\n    case \"clear\":\n      for (const flag of Object.keys(localDebugFlags))\n        delete localDebugFlags[flag];\n  }\n  runSettingsCallbacks();\n  return { ...globalDebugFlags, ...localDebugFlags };\n}\n\n/** DTAP stage set for this WebHare */\nlet dtapStage: DTAPStage = \"production\";\n\n/** @deprecated We now recommend checking dtapStage against production/acceptance Explicitly */\nlet isLive: boolean = dtapStage === \"production\" || dtapStage === \"acceptance\";\n\n/** The backend base URL. Used for eg. autoconfiguring JSON/RPC */\nlet backendBase = \"\";\n\n/** The global assetbase */\nlet assetBase: string | null = null;\n\n//deprecated variants\n/** @deprecated For WH5.4 and up use 'dtapStage' */\nlet dtapstage: DTAPStage = dtapStage;\n/** @deprecated For WH5.4 and up compare 'dtapStage' for production or acceptance */\nlet islive: boolean = isLive;\n\nlet hooks: EnvHooks | undefined;\nlet hookFactory: (() => EnvHooks) | undefined;\nlet gotHooks = false;\n\nexport function initEnv(setDtapStage: DTAPStage, setBackendBase: string) {\n  dtapStage = setDtapStage;\n  isLive = dtapStage === \"production\" || dtapStage === \"acceptance\";\n  backendBase = setBackendBase;\n\n  dtapstage = dtapStage;\n  islive = isLive;\n}\n\nexport function setEnvHooksFactory(newHookFactory: () => EnvHooks) {\n  if (gotHooks)\n    throw new Error(`The call to setEnvHooksFactory was too late - hooks have already been retrieved once`);\n  hookFactory = newHookFactory;\n}\n\nexport function getEnvHooks() {\n  gotHooks = true;\n  return hookFactory?.();\n}\n\nfunction ensureHooks(): EnvHooks {\n  return hooks ??= getEnvHooks?.() ?? {\n    currentAssetBase: (newAssetBase) => {\n      if (newAssetBase !== undefined)\n        assetBase = newAssetBase;\n      return assetBase;\n    }\n  };\n}\n\n/** Get the base url for assets. This may point towards eg. a CDN\n * @returns The base url for assets, ending with a '/'. null if not set\n */\nexport function getAssetBase(): string | null {\n  return ensureHooks().currentAssetBase();\n}\n\n/** Get the base url for a module's public assets (those located in the module's `public` folder)\n */\nexport function getModulePublicAssetBase(module: string) {\n  return `${getAssetBase() || \"/\"}.wh/mod/${encodeURIComponent(module)}/public/`;\n}\n\n/** Set the base url for assets */\nexport function setAssetBase(base: string | null): void {\n  if (base && !base.endsWith(\"/\"))\n    throw new Error(`Asset base must end with a '/'`);\n\n  ensureHooks().currentAssetBase(base);\n}\n\nexport { dtapStage, isLive, backendBase, localDebugFlags };\nexport { dtapstage, islive }; //deprecated variants\n","\n//Note that @webhare/env does not invoke this API itself. In WebHare @webhare/frontend/src/init uses this to initialize\nexport function getBrowserDebugFlags(varname: string): string[] {\n  const flags = [];\n  const urldebugvar = new URL(location.href).searchParams.get(varname);\n  if (urldebugvar)\n    flags.push(...urldebugvar.split(','));\n\n  //not importing getCookie to solve some import ordering issues\n  if (typeof document !== \"undefined\") { //'document' is undefined in a worker but assetpacks compiled for a ServiceWorker will also load us\n    const debugcookie = document.cookie.match(`(?:^|;)\\\\s*${varname}=([^;]*)`); //TODO escape varname\n    if (debugcookie) {\n      const debugcookievalue = decodeURIComponent(debugcookie[1]);\n      if (debugcookievalue)\n        flags.push(... (debugcookievalue.split('.').filter(flag => !flag.startsWith('sig='))));\n    }\n  }\n\n  if (typeof sessionStorage !== \"undefined\") {\n    const sessionDebug = sessionStorage.getItem(varname);\n    if (sessionDebug)\n      flags.push(...sessionDebug.split(','));\n  }\n\n  return flags;\n}\n","/** Rect describing an elements position */\nexport type Rect = {\n  top: number;\n  bottom: number;\n  left: number;\n  right: number;\n  width: number;\n  height: number;\n};\n\n/** Elements you can set a value on and would have to trigger change and/or input events */\nexport type FormControlElement = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;\n\n/** Types that support querySelector(All) */\ntype QuerySelectorAble = ParentNode | ShadowRoot;\n\nexport function qS<E extends Element = HTMLElement>(startnode: QuerySelectorAble, selector: string): E | null;\nexport function qS<E extends Element = HTMLElement>(selector: string): E | null;\n\n/** Match the first element using a CSS selector\n * @param node_or_selector - The starting node or selector\n * @param selector - The selector to match if the starting node was specified\n * @returns The first matching element or null\n */\nexport function qS<E extends Element>(node_or_selector: QuerySelectorAble | string, selector?: string): E | null {\n  if (typeof node_or_selector === 'string')\n    return document.querySelector<E>(node_or_selector);\n  else if (selector)\n    return node_or_selector.querySelector<E>(selector);\n  return null;\n}\n\n\nexport function qR<E extends Element = HTMLElement>(startnode: QuerySelectorAble, selector: string): E;\nexport function qR<E extends Element = HTMLElement>(selector: string): E;\n\n/** Match a specific element using a CSS selector, requiring it to exist and be unique\n * @param node_or_selector - The starting node or selector\n * @param selector - The selector to match if the starting node was specified\n * @returns The requested element. Throw it the selector doesn't match exactly one element\n */\nexport function qR<E extends Element>(node_or_selector: QuerySelectorAble | string, selector?: string): E {\n  const matches = qSA<E>(node_or_selector as QuerySelectorAble, selector as string);\n  if (matches.length === 1)\n    return matches[0];\n\n  if (typeof node_or_selector !== 'string') {\n    console.error(`${matches.length} elements match selector \\`${selector}\\` with startingpoint`, node_or_selector, matches);\n    throw new Error(`${matches.length} elements match selector \\`${selector}\\` given startingpoint '${node_or_selector.nodeName}'`);\n  } else {\n    console.error(`${matches.length} elements match selector \\`${node_or_selector}\\` in the document`, matches);\n    throw new Error(`${matches.length} elements match selector \\`${node_or_selector}\\` in the document`);\n  }\n}\n\nexport function qSA<E extends Element = HTMLElement>(startnode: QuerySelectorAble, selector: string): E[];\nexport function qSA<E extends Element = HTMLElement>(selector: string): E[];\n\n/** Find multiple elements using a CSS selector\n * @param node_or_selector - The starting node or selector\n * @param selector - The selector to match if the starting node was specified\n * @returns The requested elements.\n */\nexport function qSA<E extends Element>(node_or_selector: QuerySelectorAble | string, selector?: string): E[] {\n  if (typeof node_or_selector === 'string')\n    return Array.from(document.querySelectorAll(node_or_selector));\n  else if (selector)\n    return Array.from(node_or_selector.querySelectorAll(selector));\n\n  return [];\n}\n\n/** Return whether the passed element is a FormControlElement */\nexport function isFormControl(field: Element): field is FormControlElement {\n  return isHTMLElement(field) && [\"INPUT\", \"SELECT\", \"TEXTAREA\"].includes(field.tagName);\n}\n\n/** Return whether the passed element is an editable text field */\nexport function isEditControl(field: Element): field is HTMLElement {\n  return isHTMLElement(field) && ([\"INPUT\", \"TEXTAREA\"].includes(field.tagName) || field.isContentEditable);\n}\n\n/** Test whether node is an Element, even if it's in a different iframe */\nexport function isElement(node: unknown): node is Element {\n  //TODO What is actually going on if defaultView is missing?\n  if (!node || typeof node !== \"object\")\n    return false;\n\n  /* Getting the proto doesn't always work:\n  const proto = (node as Element).ownerDocument.defaultView?.Element;\n  (because our iframes derive off about? not sure) so until someone finds the real answer, we'll do a heuristic\n  */\n\n  /** Analyzing node.constructor.name doesn't work because custom elements don't necessarily have their constructor's name ending in Element\n  return Boolean(\"ownerDocument\" in node && node.constructor.name.match(/Element$/));\n  */\n\n  return Boolean(\"ownerDocument\" in node && (node as Element).nodeType === 1);\n\n}\n\n/** Test whether node is a HTMLElement, even if it's in a different iframe */\nexport function isHTMLElement(node: unknown): node is HTMLElement {\n  return isElement(node) && \"accessKey\" in node;\n}\n\n/**\n * get the relative bound difference between two elements, and return a writable copy\n *\n * @param node - The node for which you need coordinates\n * @param relativeto - Optional reference point. If not set, you just get a 'normal' coordinate object\n */\nexport function getRelativeBounds(node: Element, relativeto?: Element): Rect {\n  if (!relativeto)\n    relativeto = node.ownerDocument.documentElement;\n\n  const nodecoords = node.getBoundingClientRect();\n  const relcoords = relativeto.getBoundingClientRect();\n  return {\n    top: nodecoords.top - relcoords.top,\n    left: nodecoords.left - relcoords.left,\n    right: nodecoords.right - relcoords.left,\n    bottom: nodecoords.bottom - relcoords.top,\n    width: nodecoords.width,\n    height: nodecoords.height\n  };\n}\n\nexport type ParsedLanguageTag = {\n  /** The full tag, eg en-US */\n  tag: string;\n  /** The language code, eg 'en' */\n  language: string;\n  region?: string;\n  /** The script, eg 'Hant' */\n  script?: string;\n};\n\n/** Parse a BCP47 language tag */\nexport function parseLanguageTag(languageTag: string): ParsedLanguageTag {\n  /* https://datatracker.ietf.org/doc/html/rfc5646#section-2.1\n     langtag       = language\n                 [\"-\" script]\n                 [\"-\" region]\n                 *(\"-\" variant)\n                 *(\"-\" extension)\n                 [\"-\" privateuse]\n     BUT: we're limiting ourselves to language, script and region for now\n\n     language      = 2*3ALPHA           ; shortest ISO 639 code\n                    [\"-\" extlang]       ; sometimes followed by\n                                          extended language subtags\n\n                                           extlang       = 3ALPHA              ; selected ISO 639 codes\n                 *2(\"-\" 3ALPHA)      ; permanently reserved\n\n      script        = 4ALPHA              ; ISO 15924 code\n\n      region        = 2ALPHA              ; ISO 3166-1 code\n                    / 3DIGIT              ; UN M.49 code\n\n     Note that we're not yet fully implementing the spec, just the parts we expect to encounter in practice\n  */\n  const match = languageTag.match(/^([a-z]{2,}(-[a-z]{3})?)(-[A-Za-z]{4,})?(-[A-Z]{2}|-\\d{3})?$/);\n  if (!match)\n    throw new Error(`Invalid language tag: ${languageTag}`);\n\n  return {\n    tag: languageTag,\n    language: match[1],\n    ...(match[3] ? { script: match[3].substring(1) } : {}),\n    ...(match[4] ? { region: match[4].substring(1) } : {})\n  };\n}\n\n/** Get the effective language for an element (or the document)\n * @param node - The element for which to get the effective language. If not specified, the documentElement and finally the browser is used\n * @returns The language code, eg. \"nl\" or \"en-GB\"\n */\nexport function getLang(node?: Element): ParsedLanguageTag {\n  if (!node && typeof document !== \"undefined\")\n    node = document.documentElement;\n  const tag = (node?.closest('[lang]')?.getAttribute(\"lang\") || navigator.language || \"en\");\n  return parseLanguageTag(tag);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any -- Cannot specify this without using any */\n\nexport interface EmplaceHandler<ValueType> {\n  insert?: () => ValueType;\n  update?: (current: ValueType) => ValueType;\n}\n\nfunction binarySearchImpl<A, K>(compareFn: (element: A, key: K) => number, contents: A[], searchfor: K, upper_bound: boolean): { present: boolean; index: number } {\n  let first = 0;\n  let len = contents.length;\n  let present = false;\n\n  const cmpbound = upper_bound ? 1 : 0;\n  let unsorted_cmp = 0; // if this is non-0 and cmp is this value, we have an unsorted list\n  while (len > 0) {\n    const half = Math.floor(len / 2);\n    const middle = first + half;\n    const cmp = compareFn(contents[middle], searchfor);\n    if (cmp === 0) {\n      present = true;\n      unsorted_cmp = upper_bound ? -1 : 1;\n    } else if (cmp === unsorted_cmp)\n      throw new Error(`The provided array was not properly sorted!`);\n\n    if (cmp < cmpbound) {\n      first = middle + 1;\n      len -= half;\n      --len;\n    } else {\n      len = half;\n    }\n  }\n  return { present, index: first };\n}\n\n//emplace is based on https://github.com/tc39/proposal-upsert (a Map.prototype.emplace)\n/** Place a value into a Map\n * @param map - The map to place the value into\n * @param key - The key to add/replace\n * @param handler - Callbacks for inserting or updating the value\n * @returns The value that was placed into the map.\n * @throws If the key is not found and no insert handler is provided\n */\nexport function emplace<T extends Map<any, any> | WeakMap<any, any>>(\n  map: T,\n  key: T extends Map<infer K, any> ? K : T extends WeakMap<infer K, any> ? K : never,\n  handler?: T extends Map<any, infer V> ? EmplaceHandler<V> : T extends WeakMap<any, infer V> ? EmplaceHandler<V> : never):\n  T extends Map<any, infer V> ? V : T extends WeakMap<any, infer V> ? V : never {\n  let current = map.get(key);\n  if (current !== undefined) {\n    if (handler?.update) {\n      current = handler.update(current);\n      map.set(key, current);\n    }\n    return current;\n  }\n\n  if (!handler?.insert)\n    throw new Error(\"Key not found and no insert handler provided\");\n\n  const setvalue = handler.insert();\n  map.set(key, setvalue);\n  return setvalue;\n}\n\n// the `| keyof X` is needed to be able to use a `keyof X` type as key parameter in DistributedPick or DistributedOmit in generics\nexport type DistributedKeys<X extends object> = (X extends object ? keyof X : never) | keyof X;\n\n/** Applies Pick to all types in a union. Allows all keys that are present in any object in the union. Warning: You might not be\n    able to use all keys of the union if TypeScript has narrowed the union to a specific type. Eg:\n```typescript\ntype A = { x: number; t: \"a\"; a: number } | { x: number; t: \"b\"; b: number };\nconst a: A = { t: \"a\", a: 1 };\nconst b = pick(a, [\"t\", \"a\", \"b\"]); // No overload matches this call. <snip> Type '\"b\"' is not assignable to type '\"a\" | \"t\" | \"d\"'.\n```\n    @typeParam T - Type of the supplied object\n    @typeParam K - Type of the property keys to return\n    @returns Type with only the specified keys (distributed over the union if present)\n*/\nexport type DistributedPick<X extends object, Y extends DistributedKeys<X>> = X extends object ? Pick<X, keyof X & Y> : never;\n\n/** Applies Omit to all types in a union. Allows all keys that are not present in any object in the union. Warning: You might not be\n    able to use all keys of the union if TypeScript has narrowed the union to a specific type. Eg:\n```typescript\ntype A = { x: number; t: \"a\"; a: number } | { x: number; t: \"b\"; b: number };\nconst a: A = { t: \"a\", a: 1 };\nconst b = omit(a, [\"b\"]); // No overload matches this call. <snip> Type '\"b\"' is not assignable to type '\"a\" | \"t\" | \"d\"'.\n```\n    @typeParam T - Type of the supplied object\n    @typeParam K - Type of the property keys to leave out\n    @returns Type with only the specified keys left out (distributed over the union if present)\n*/\nexport type DistributedOmit<X extends object, Y extends DistributedKeys<X>> = X extends object ? Omit<X, keyof X & Y> : never;\n\n/** Returns an object with a selection of properties\n    @typeParam T - Type of the supplied object\n    @typeParam K - Type of the property keys to return\n    @param obj - Object to pick properties out of\n    @param keys - Names of the properties to pick\n    @returns Resulting object\n*/\nexport function pick<T extends object, K extends string & NoInfer<DistributedKeys<T>>>(obj: T, keys: readonly K[]): DistributedPick<T, K>;\n\n/** Returns an array with a selection of properties\n    @typeParam T - Type of the supplied array\n    @typeParam K - Type of the property keys to return\n    @param arr - Array to pick properties out of\n    @param keys - Names of the properties to pick\n    @returns Resulting array\n*/\nexport function pick<T extends object, K extends string & NoInfer<DistributedKeys<T>>>(arr: T[], keys: readonly K[]): Array<DistributedPick<T, K>>;\n\nexport function pick<T extends object, K extends string & NoInfer<DistributedKeys<T>>>(value: T | T[], keys: readonly K[]): DistributedPick<T, K> | Array<DistributedPick<T, K>> {\n  if (Array.isArray(value))\n    return value.map((elt: T) => pick(elt, keys));\n  const ret = {} as T;\n  keys.forEach((key: K) => {\n    if (key in value)\n      ret[key] = value[key];\n  });\n  return ret as object as DistributedPick<T, K>;\n}\n\n/** Returns an object with a selection of properties left out\n    @typeParam T - Type of the supplied object\n    @typeParam K - Type of the property keys to leave out\n    @param obj - Object to leave properties out of\n    @param keys - Names of the properties to remove\n    @returns Resulting object\n*/\nexport function omit<T extends object, K extends string & NoInfer<DistributedKeys<T>>>(obj: T, keys: readonly K[]): DistributedOmit<T, K>;\n\n/** Returns an array with a selection of properties left out\n    @typeParam T - Type of the supplied array\n    @typeParam K - Type of the property keys to leave out\n    @param arr - Array to leave properties out of\n    @param keys - Names of the properties to leave out\n    @returns Resulting array\n*/\nexport function omit<T extends object, K extends string & NoInfer<DistributedKeys<T>>>(arr: T[], keys: readonly K[]): Array<DistributedOmit<T, K>>;\n\nexport function omit<T extends object, K extends string & NoInfer<DistributedKeys<T>>>(value: T | T[], keys: readonly K[]): DistributedOmit<T, K> | Array<DistributedOmit<T, K>> {\n  if (Array.isArray(value))\n    return value.map((elt: T) => omit(elt, keys));\n  const ret = {} as T;\n  for (const [key, val] of Object.entries(value)) {\n    if (!keys.includes(key as K))\n      ret[key as K] = val;\n  }\n  return ret as object as DistributedOmit<T, K>;\n}\n\n/** Shuffle an array in-place\n * @param array - Array to shuffle\n * @returns The shuffled array\n*/\nexport function shuffle<T>(array: T[]): T[] {\n  for (let i = array.length - 1; i > 0; i--) {\n    const j = Math.floor(Math.random() * (i + 1));\n    [array[i], array[j]] = [array[j], array[i]];\n  }\n  return array;\n}\n\n/** Returns (and TypeScript-asserts) that the specified function is truthy. Handy for adjusting the type of an array when\n * filtering out falsy values\n * @example\n * const myarray: Array&lt;number | null&gt; = [0, null];\n * const filtered: number[] = myarray.filter(isTruthy);\n **/\nexport function isTruthy<T>(a: T): a is (T & {}) {\n  return Boolean(a);\n}\n\n/** Append to array, without overflowing the stack (eg V8 overflows at more than 32K entries)\n * @param array - Array to append to\n * @param values - Values to append\n*/\nexport function appendToArray<T>(array: T[], values: ReadonlyArray<NoInfer<T>>): void {\n  if (values.length < 1000)\n    array.push(...values); //push should be safe enough\n  else for (const value of values) //performance wise this appears just as fast as tricks with pushing blocks of slices\n    array.push(value);\n\n  //not returning the original array to make it clear we're not creating a new one\n}\n\ntype TypedEntriesInternal<T extends object, K extends keyof T> = K extends keyof T ? [K, T[K]] : never;\n\n/** Returns a union of [ key, value ] types for an object */\nexport type TypedEntries<T extends object> = T extends object ? TypedEntriesInternal<T, keyof T & string> : never;\n\n/** Returns an array of key/values of the enumerable own properties of an object, with exact types. Use when\n * no extra properties are expected on the object. Exists because Object.entries returns always string as key type.\n * @param obj - Object that contains the properties and methods\n */\nexport function typedEntries<T extends object>(obj: T): Array<TypedEntries<T>> {\n  return Object.entries(obj) as Array<TypedEntries<T>>;\n}\n\n/** Returns an array of keys of the enumerable own properties of an object, with exact types. Use when\n * no extra properties are expected on the object. Exists because Object.keys returns always string as key type.\n * @param obj - Object that contains the properties and methods\n */\nexport function typedKeys<T extends object>(obj: T): Array<keyof T & string> {\n  return Object.keys(obj) as Array<keyof T & string>;\n}\n\n/** Given a union of [key, value] types, returns the object constructed from those pairs. Exists because\n *  Object.fromEntries does not take the type of the keys and values into account.\n * @typeParam T - Union of [key, value] pairs\n */\nexport type TypedFromEntries<T extends [string, unknown]> = { [C in T as C[0]]: C[1] };\n\n/** Returns an object from an iterable of [key, value] pairs, with exact types. Exists because Object.fromEntries\n * doesn't take the type of the keys and values into account.\n * @param entries - Iterable of [key, value] pairs\n * @returns An object with the same keys and values as the input\n */\nexport function typedFromEntries<T extends [string, unknown]>(entries: Iterable<T>): TypedFromEntries<T> {\n  return Object.fromEntries(entries) as TypedFromEntries<T>;\n}\n\n\nexport class SortedMultiSet<V> {\n  private contents: V[] = [];\n  private compareFn;\n\n  constructor(compareFn: (lhs: V, rhs: V) => number, contents?: V[]) {\n    this.compareFn = compareFn;\n    if (contents)\n      this.addMultiple(contents);\n  }\n\n  get size() {\n    return this.contents.length;\n  }\n\n  at(index: number): V | undefined {\n    return this.contents.at(index);\n  }\n\n  add(value: V): number {\n    const pos = this.upperBound(value);\n    this.contents.splice(pos, 0, value);\n    return pos;\n  }\n\n  addMultiple(values: V[]): void {\n    for (const value of values) {\n      this.add(value);\n    }\n  }\n\n  delete(key: V): void {\n    const [start, limit] = this.range(key);\n    this.contents.splice(start, limit - start);\n  }\n\n  clear() {\n    this.contents.splice(0, this.contents.length);\n  }\n\n  lowerBound(key: Readonly<V>): { present: boolean; index: number } {\n    return binarySearchImpl(this.compareFn, this.contents, key, false);\n  }\n\n  upperBound(key: Readonly<V>): number {\n    return binarySearchImpl(this.compareFn, this.contents, key, true).index;\n  }\n\n  range(key: Readonly<V>): [number, number] {\n    return [this.lowerBound(key).index, this.upperBound(key)];\n  }\n\n  slice(start: number, limit: number): V[] {\n    return this.contents.slice(start, limit);\n  }\n\n  *#sliceIterator(start: number, limit: number): Generator<V, void> {\n    for (let idx = start; idx < limit; ++idx)\n      yield this.contents[idx];\n  }\n\n  sliceRange(key: Readonly<V>): V[] {\n    const [start, limit] = this.range(key);\n    return this.slice(start, limit);\n  }\n\n  rangeIterator(key: Readonly<V>): Iterable<V> {\n    const [start, limit] = this.range(key);\n    return this.#sliceIterator(start, limit);\n  }\n}\n\nexport class SortedMultiMap<K, V> {\n  private compareFn;\n  private contents: Array<[K, V]> = [];\n\n  constructor(compareFn: (lhs: K, rhs: K) => number, contents?: Array<[K, V]>) {\n    this.compareFn = (element: [K, V], key: K) => compareFn(element[0], key);\n    if (contents)\n      this.addMultiple(contents);\n  }\n\n  get size() {\n    return this.contents.length;\n  }\n\n  at(index: number): [K, V] | undefined {\n    return this.contents.at(index);\n  }\n\n  add(key: K, value: V): number {\n    const pos = this.upperBound(key);\n    this.contents.splice(pos, 0, [key, value]);\n    return pos;\n  }\n\n  addMultiple(values: Array<[K, V]>) {\n    for (const [key, value] of values) {\n      this.add(key, value);\n    }\n  }\n\n  delete(key: K): void {\n    const [start, limit] = this.range(key);\n    this.contents.splice(start, limit - start);\n  }\n\n  clear() {\n    this.contents.splice(0, this.contents.length);\n  }\n\n  lowerBound(key: Readonly<K>): { present: boolean; index: number } {\n    return binarySearchImpl(this.compareFn, this.contents, key, false);\n  }\n\n  upperBound(key: Readonly<K>): number {\n    return binarySearchImpl(this.compareFn, this.contents, key, true).index;\n  }\n\n  range(key: Readonly<K>): [number, number] {\n    return [this.lowerBound(key).index, this.upperBound(key)];\n  }\n\n  slice(start: number, limit: number): Array<[K, V]> {\n    return this.contents.slice(start, limit);\n  }\n\n  *#sliceIterator(start: number, limit: number): Generator<[K, V], void> {\n    for (let idx = start; idx < limit; ++idx)\n      yield this.contents[idx];\n  }\n\n  sliceRange(key: Readonly<K>): Array<[K, V]> {\n    const [start, limit] = this.range(key);\n    return this.slice(start, limit);\n  }\n\n  rangeIterator(key: Readonly<K>): Iterable<[K, V]> {\n    const [start, limit] = this.range(key);\n    return this.#sliceIterator(start, limit);\n  }\n}\n","const unlock = Symbol(\"unlock\");\n\n/** A mutex which is only visible in the current JavaScript VM\n\n    @example\n```ts\nconst mutex = new LocalMutex;\n\nusing lock = await mutex.lock();\nlock.release();\n\n// If you'll be relying on automatic release\nusing lock = await mutex.lock();\nvoid(lock);\n```\n\n*/\nexport class LocalMutex {\n  private locked = false;\n  private unlockList = new Array<() => void>;\n\n  /** Lock this mutex\n   * @returns Lock object. Use with `using` to ensure automatic unlock\n   */\n  async lock() {\n    if (this.locked) {\n      const defer = Promise.withResolvers<void>();\n      this.unlockList.push(() => defer.resolve());\n      await defer.promise;\n    } else {\n      this.locked = true;\n    }\n    return new LocalLock(this);\n  }\n\n  [unlock](): void {\n    if (this.unlockList.length > 0)\n      (this.unlockList.shift()!)(); //we're fair... unlock longest waiter\n    else\n      this.locked = false;\n  }\n}\n\n/** Instance of a LocalMutex lock */\nclass LocalLock implements Disposable {\n  private mutex: LocalMutex | null;\n\n  constructor(mutex: LocalMutex) {\n    this.mutex = mutex;\n  }\n  /** Explicitly release the lock\n   * @throws Error if the lock is already released\n  */\n  release() {\n    if (!this.mutex)\n      throw new Error(\"Lock already released\");\n\n    this.mutex[unlock]();\n    this.mutex = null;\n  }\n  [Symbol.dispose]() {\n    this.mutex?.[unlock]();\n  }\n}\n\nexport type { LocalLock };\n","/* frontend-config parses the wh-config object in the browser and mocks any missing data. @webhare/env does not actually expose this config, @webhare/frontend does\n   The frontend configuration is built in PageBuildRequest's 'frontendConfig' member */\n\nimport type { DTAPStage } from \"@webhare/env/src/concepts\";\nimport { debugFlags, initEnv } from \"@webhare/env/src/envbackend\";\nimport { getBrowserDebugFlags } from \"@webhare/env/src/init-browser\";\nimport { getLang } from \"@webhare/dompack/src/tree\";\nimport type { FrontendDataTypes } from \"@webhare/frontend\";\nimport { omit } from \"@webhare/std\";\n\n\n/** The format of the <script id=\"wh-config\"> object  */\nexport type WHConfigScriptData = {\n  //NOTE: existing frontend code doesn't expect site/obj to ever be null. not sure if 'object' provides the best interface or whether we need some sort of 'unknown but an existing object'\n  /** Page (targetobject) specific settings\n   *  @deprecated Use setFrontendData for type-safe settings\n  */\n  obj: { [key: string]: unknown };\n  /** Site specific settings\n   *  @deprecated Use setFrontendData for type-safe settings\n   */\n  site: { [key: string]: unknown };\n\n  /** Numeric server version number (eg 5.02.24 = 50224)\n   *  @deprecated Interpreting numbers (or version strings) is dangerous. Feature flags/testing or limiting your entire module to compatible versions is safer\n  */\n  server: number;\n  /** Root URL of this site */\n  siteRoot: string;\n} & {\n  ///Plugins may add keys at this level\n  [key in keyof FrontendDataTypes]?: FrontendDataTypes[key];\n};\n\nexport type WHConfigScriptData_FromServer = WHConfigScriptData & { dtapStage: DTAPStage };\n\n//names fields can still have when not yet republished\nexport interface WHConfigScriptData_OldPublishFields {\n  islive: boolean;\n  dtapstage: DTAPStage;\n  siteroot: string;\n}\n\n//fallback names with deprecation warnings\nexport interface WHConfigScriptData_LegacyFields {\n  /** @deprecated Use dtapStage in WH5.4+ */\n  islive: boolean;\n  /** @deprecated Use `dtapStage` from \"\\@webhare/env\"; in WH5.4+ */\n  dtapstage: DTAPStage;\n  /** @deprecated Use `getSiteRoot` from \"\\@webhare/frontend\"; in WH5.7+ */\n  siteroot: string;\n}\n\nlet config: WHConfigScriptData_FromServer | undefined;\nlet siteroot;\nlet dtapStage: DTAPStage = \"production\";\n\n//if document is undefined, we're serverside or in a worker\nconst whconfigel = typeof document !== \"undefined\" ? document.querySelector('script#wh-config') : null;\nif (whconfigel?.textContent) {\n  const parsedConfig: WHConfigScriptData_FromServer & WHConfigScriptData_OldPublishFields = JSON.parse(whconfigel.textContent);\n  config = omit(parsedConfig, [\"siteroot\", \"dtapstage\", \"islive\"]);\n\n  //Fallbacks for pages last published with WH5.3 *and* pages published from HareScript which still emit lowercase props\n  siteroot = parsedConfig.siteRoot ?? parsedConfig.siteroot!;\n  dtapStage = parsedConfig.dtapStage ?? parsedConfig.dtapstage;\n}\n\ninitEnv(dtapStage, '/');\n\nif (typeof location !== \"undefined\")\n  for (const flag of getBrowserDebugFlags('wh-debug'))\n    debugFlags[flag] = true;\n\n\n/** @deprecated frontendConfig has been deprecated. Switch to the getFrontendData system */\n// Make sure we have obj/site as some sort of object, to prevent crashes on naive 'if ($wh.config.obj.x)' tests'\nexport const frontendConfig: WHConfigScriptData & WHConfigScriptData_LegacyFields = {\n  server: 0,\n  ...config,\n  obj: config?.obj || {},\n  site: config?.site || {},\n  siteRoot: siteroot || \"\",\n  dtapstage: dtapStage,\n  islive: dtapStage === \"production\" || dtapStage === \"acceptance\",\n  siteroot: siteroot || \"\",\n};\n\nif (typeof document !== \"undefined\") {\n  //@ts-expect-error -- locale isn't supposed to exist - but some old code is still referring to it\n  frontendConfig.locale = getLang().tag;\n}\n\nif (dtapStage === \"development\") { //WH6.0: it's time to hard phase-out the old fields\n  for (const prop of [\"islive\", \"dtapstage\", \"siteroot\", \"locale\"] as const)\n    Object.defineProperty(frontendConfig, prop, {\n      get() { throw new Error(`frontendConfig.${prop} will be removed`); }\n    });\n}\n\n//NOTE: These APIs need to live in init.ts so eg gtm.ts can access us without triggering a CSS reset through frontend.ts. When frontend.ts stops auto-resetting we might move it back\n\nexport function getFrontendData<Type extends keyof FrontendDataTypes>(type: Type, options: { allowMissing: true }): FrontendDataTypes[Type] | null;\nexport function getFrontendData<Type extends keyof FrontendDataTypes>(type: Type, options?: { allowMissing: boolean }): FrontendDataTypes[Type];\n\n/** Get data exported by the response\n * @typeParam Type - The type of data to get\n * @param dataObject - The data object of data to get\n * @param allowMissing - If true, return null if the data object is missing. Otherwise throw an error\n * @example\n```\n  declare module \"@webhare/frontend\" {\n    interface FrontendDataTypes {\n      \"mymodule:type\": {\n        test: number;\n      };\n    }\n  }\n\n  const data = getFrontendData(\"mymodule:type\");\n```\n*/\nexport function getFrontendData<Type extends keyof FrontendDataTypes>(dataObject: Type, { allowMissing = false } = {}): FrontendDataTypes[Type] | null {\n  const retval = config?.[dataObject] as FrontendDataTypes[Type];\n  if (!retval)\n    if (allowMissing)\n      return null;\n    else\n      throw new Error(`Missing frontend data object: ${dataObject}`);\n\n  return retval;\n}\n\n/** Get the current site root\n *\n * @returns The site root URL (ending with a slash)\n*/\nexport function getSiteRoot() { //now an API to improve treeshaking\n  return frontendConfig.siteRoot;\n}\n","// Set up dispose symbols - https://github.com/evanw/esbuild/pull/3192 \"you'll need to polyfill Symbol.dispose if it's not present before you use it.\n\n//@ts-expect-error -- It's marked readonly\nSymbol.dispose ||= Symbol.for('Symbol.dispose');\n//@ts-expect-error -- It's marked readonly\nSymbol.asyncDispose ||= Symbol.for('Symbol.asyncDispose');\n\n// Set up promise resolvers (ES2024)\nPromise.withResolvers ||= function <T>(): PromiseWithResolvers<T> {\n  let resolve: (value: T | PromiseLike<T>) => void;\n  let reject: (reason: Error) => void;\n  const promise = new Promise<T>((_resolve, _reject) => { resolve = _resolve; reject = _reject; });\n  // @ts-expect-error `resolve` and `reject` are assigned synchronously, which isn't picked up by the TypeScript compiler (see\n  // https://github.com/Microsoft/TypeScript/issues/30053)\n  return { promise, resolve, reject };\n};\n\n// Polyfills for https://caniuse.com/?search=groupby - needed until we can assume safari 17.4 as global baseline\nif (!Map.groupBy)\n  Map.groupBy = function <Item, Key>(items: Iterable<Item>, callbackfn: (item: Item, idx: number) => Key): Map<Key, Item[]> {\n    const retval = new Map<Key, Item[]>;\n    let idx = 0;\n    for (const item of items) {\n      const key = callbackfn(item, idx++);\n      let list = retval.get(key);\n      if (!list)\n        retval.set(key, list = []);\n      list.push(item);\n    }\n    return retval;\n  };\n\nif (!Object.groupBy)\n  Object.groupBy = function <Item, Key extends string | number | symbol>(items: Iterable<Item>, callbackfn: (item: Item, idx: number) => Key): Partial<Record<Key, Item[]>> {\n    return Object.fromEntries(Map.groupBy(items, callbackfn).entries()) as Partial<Record<Key, Item[]>>;\n  };\n","/* eslint-disable @typescript-eslint/no-loop-func */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-this-alias */\n\n/* Iterator polyfills (https://caniuse.com/?search=iterator) - stage 4 ES but not in all browsers yet\n   Based on https://github.com/alkihis/iterator-polyfill/tree/master but we removed all the AsyncIterator\n   stuff as that's still stage 2 AND not implemented in TypeScript (as of 5.6)\n\n   We're ignoring a few linting/any issues as we really don't care to maintain this much\n   Fixed an issue with .some - reported as https://github.com/alkihis/iterator-polyfill/issues/6\n*/\n\n(function () {\n  // polyfill already applied / proposal implemented\n  if ('Iterator' in globalThis) {\n    return;\n  }\n\n  // Polyfill for Iterator\n  const IteratorPrototype = {};\n\n  const ArrayIteratorPrototype = Object.getPrototypeOf([][Symbol.iterator]());\n  const OriginalIteratorPrototype = Object.getPrototypeOf(ArrayIteratorPrototype);\n\n  Object.setPrototypeOf(OriginalIteratorPrototype, IteratorPrototype);\n\n  Object.defineProperties(IteratorPrototype, {\n    [Symbol.iterator]: {\n      value() {\n        return this;\n      }\n    },\n    map: {\n      *value<T, R>(callback: (value: T) => R): Generator<any, any, any> {\n        const it = this;\n        let value = it.next();\n\n        while (!value.done) {\n          const real_value = callback(value.value);\n          const next_value = yield real_value;\n          value = it.next(next_value);\n        }\n\n        return value.value;\n      },\n    },\n    filter: {\n      *value<T>(callback: (value: T) => boolean): Generator<any, any, any> {\n        const it = this;\n        let value = it.next();\n        let next_value;\n\n        while (!value.done) {\n          const real_value = value.value;\n          if (callback(real_value)) {\n            next_value = yield real_value;\n            value = it.next(next_value);\n          } else {\n            value = it.next(next_value);\n          }\n        }\n\n        return value.value;\n      },\n    },\n    find: {\n      value<T>(callback: (value: boolean) => T) {\n        const it = this;\n        let value = it.next();\n\n        while (!value.done) {\n          const real_value = value.value;\n\n          if (callback(real_value))\n            return real_value;\n\n          value = it.next();\n        }\n      }\n    },\n    every: {\n      value<T>(callback: (value: T) => boolean) {\n        const it = this;\n        let value = it.next();\n\n        while (!value.done) {\n          const real_value = value.value;\n\n          if (!callback(real_value))\n            return false;\n\n          value = it.next();\n        }\n\n        return true;\n      }\n    },\n    some: {\n      value<T>(callback: (value: T) => boolean) {\n        const it = this;\n        let value = it.next();\n\n        while (!value.done) {\n          const real_value = value.value;\n\n          if (callback(real_value)) {\n            it.return();\n            return true;\n          }\n\n          value = it.next();\n        }\n\n        return false;\n      }\n    },\n    toArray: {\n      value(max_count = Infinity) {\n        const values = [];\n\n        const it = this;\n        let value = it.next();\n\n        while (!value.done) {\n          const real_value = value.value;\n\n          if (max_count <= 0)\n            return values;\n\n          values.push(real_value);\n\n          if (max_count !== Infinity)\n            max_count--;\n\n          value = it.next();\n        }\n\n        return values;\n      }\n    },\n    take: {\n      *value(limit: number): Generator<any, any, any> {\n        limit = Number(limit);\n        if (limit < 0)\n          throw new RangeError('Invalid limit.');\n\n        const it = this;\n        let value = it.next();\n        let remaining = limit;\n        let next_value;\n\n        while (!value.done) {\n          const real_value = value.value;\n\n          if (remaining <= 0)\n            return;\n\n          next_value = yield real_value;\n          value = it.next(next_value);\n          remaining--;\n        }\n\n        return value.value;\n      },\n    },\n    drop: {\n      *value(limit: number): Generator<any, any, any> {\n        limit = Number(limit);\n        if (limit < 0)\n          throw new RangeError('Invalid limit.');\n\n        const it = this;\n        let value = it.next();\n        let remaining = limit;\n        let next_value;\n\n        while (!value.done) {\n          const real_value = value.value;\n\n          if (remaining > 0) {\n            value = it.next(next_value);\n            remaining--;\n            continue;\n          }\n\n          next_value = yield real_value;\n          value = it.next(next_value);\n        }\n\n        return value.value;\n      },\n    },\n    asIndexedPairs: {\n      *value(): Generator<any, any, any> {\n        const it = this;\n        let value = it.next();\n        let index = 0;\n\n        while (!value.done) {\n          const real_value = value.value;\n          const next_value = yield [index, real_value];\n          value = it.next(next_value);\n          index++;\n        }\n\n        return value.value;\n      }\n    },\n    flatMap: {\n      *value<T, R extends object>(mapper: (value: T) => IterableIterator<R> | R): Generator<any, any, any> {\n        if (typeof mapper !== 'function') {\n          throw new TypeError('Mapper must be a function.');\n        }\n\n        const it = this;\n        let value = it.next();\n        let next_value;\n\n        while (!value.done) {\n          const real_value = value.value;\n          const mapped = mapper(real_value);\n\n          if (Symbol.iterator in mapped) {\n            next_value = yield* mapped[Symbol.iterator]();\n          } else {\n            next_value = yield mapped;\n          }\n\n          value = it.next(next_value);\n        }\n\n        return value.value;\n      },\n    },\n    reduce: {\n      value<T, V>(reducer: (acc: V, value: T) => V, initial_value?: V) {\n        let acc = initial_value;\n\n        const it = this;\n        if (acc === undefined) {\n          acc = it.next().value;\n        }\n\n        let value = it.next();\n        while (!value.done) {\n          const real_value = value.value;\n\n          acc = reducer(acc!, real_value);\n\n          value = it.next();\n        }\n\n        return acc;\n      }\n    },\n    forEach: {\n      value<T>(callback: (value: T) => any) {\n        const it = this;\n        let value = it.next();\n\n        while (!value.done) {\n          const real_value = value.value;\n\n          callback(real_value);\n\n          value = it.next();\n        }\n      }\n    },\n    [Symbol.toStringTag]: {\n      value: 'IteratorPrototype'\n    },\n\n    /* OUTSIDE PROPOSAL */\n    count: {\n      value() {\n        let count = 0;\n\n        const it = this;\n        let value = it.next();\n\n        while (!value.done) {\n          count++;\n          value = it.next();\n        }\n\n        return count;\n      },\n    },\n    join: {\n      value(string: string) {\n        let final = '';\n        let first = true;\n\n        const it = this;\n        let value = it.next();\n\n        while (!value.done) {\n          const real_value = value.value;\n\n          if (first) {\n            first = false;\n            final += real_value;\n          } else {\n            final += string + real_value;\n          }\n\n          value = it.next();\n        }\n\n        return final;\n      }\n    },\n    chain: {\n      *value<I>(...iterables: IterableIterator<I>[]) {\n        yield* this;\n\n        for (const it of iterables) {\n          yield* it;\n        }\n      }\n    },\n    zip: {\n      *value<T, O>(...others: IterableIterator<O>[]): Iterator<(T | O)[]> {\n        const it_array = [this, ...others].map((e: any) => Symbol.iterator in e ? e[Symbol.iterator]() : e as Iterator<T | O>);\n        let values = it_array.map(e => e.next());\n        let next_value: any;\n\n        while (values.every(e => !e.done)) {\n          next_value = yield values.map(e => e.value);\n          values = it_array.map(e => e.next(next_value));\n        }\n      },\n    },\n    takeWhile: {\n      *value<T>(callback: (value: T) => boolean): Generator<any, any, any> {\n        const it = this;\n        let value = it.next();\n        let next_value;\n\n        while (!value.done) {\n          const real_value = value.value;\n\n          if (callback(real_value))\n            next_value = yield real_value;\n          else\n            return;\n\n          value = it.next(next_value);\n        }\n\n        return value.value;\n      }\n    },\n    dropWhile: {\n      *value<T>(callback: (value: T) => boolean): Generator<any, any, any> {\n        const it = this;\n        let value = it.next();\n        let next_value;\n        let finished = false;\n\n        while (!value.done) {\n          const real_value = value.value;\n\n          if (!finished && callback(real_value)) {\n            value = it.next(next_value);\n            continue;\n          }\n\n          finished = true;\n          next_value = yield real_value;\n\n          value = it.next(next_value);\n        }\n\n        return value.value;\n      }\n    },\n    fuse: {\n      *value(): Generator<any, any, any> {\n        const it = this;\n        let value = it.next();\n        let next_value;\n\n        while (!value.done) {\n          const real_value = value.value;\n\n          if (real_value !== undefined && real_value !== null)\n            next_value = yield real_value;\n          else\n            return;\n\n          value = it.next(next_value);\n        }\n\n        return value.value;\n      }\n    },\n    partition: {\n      value<T>(callback: (value: T) => boolean) {\n        const partition1 = [], partition2 = [];\n\n        const it = this;\n        let value = it.next();\n\n        while (!value.done) {\n          const real_value = value.value;\n\n          if (callback(real_value))\n            partition1.push(real_value);\n          else\n            partition2.push(real_value);\n\n          value = it.next();\n        }\n\n        return [partition1, partition2];\n      },\n    },\n    findIndex: {\n      value<T>(callback: (value: T) => boolean) {\n        const it = this;\n        let i = 0;\n        let value = it.next();\n\n        while (!value.done) {\n          const real_value = value.value;\n\n          if (callback(real_value))\n            return i;\n\n          value = it.next();\n          i++;\n        }\n\n        return -1;\n      }\n    },\n    max: {\n      value() {\n        let max = -Infinity;\n\n        const it = this;\n        let value = it.next();\n\n        while (!value.done) {\n          const real_value = value.value;\n\n          if (max < real_value)\n            max = real_value;\n\n          value = it.next();\n        }\n\n        return max;\n      },\n    },\n    min: {\n      value() {\n        let min = Infinity;\n\n        const it = this;\n        let value = it.next();\n\n        while (!value.done) {\n          const real_value = value.value;\n\n          if (min > real_value)\n            min = real_value;\n\n          value = it.next();\n        }\n\n        return min;\n      },\n    },\n    cycle: {\n      *value(): Generator<any, any, any> {\n        const values = [];\n\n        const it = this;\n        let value = it.next();\n\n        while (!value.done) {\n          const real_value = value.value;\n          values.push(real_value);\n\n          const next_value = yield real_value;\n          value = it.next(next_value);\n        }\n\n        while (true) {\n          yield* values;\n        }\n      },\n    },\n  });\n\n  //iterator.from from https://github.com/rauschma/iterator-helpers-polyfill/\n\n  function isObject(value: unknown) {\n    if (value === null) return false;\n    const t = typeof value;\n    return t === 'object' || t === 'function';\n  }\n\n  function GetIteratorFlattenable<T>(obj: Record<symbol, any>): T {\n    if (!isObject(obj)) {\n      throw new TypeError();\n    }\n    const method = obj[Symbol.iterator];\n    let iterator = undefined;\n    if (typeof method !== 'function') {\n      iterator = obj;\n    } else {\n      iterator = method.call(obj);\n    }\n    if (!isObject(iterator)) {\n      throw new TypeError();\n    }\n    return iterator;\n  }\n\n  if (!('Iterator' in globalThis)) {\n    const Iterator = function Iterator() { };\n\n    Iterator.prototype = IteratorPrototype;\n\n    // @ts-expect-error We're still missing From in this poyfill\n    (globalThis).Iterator = Iterator;\n  }\n\n\n  //----- Static method -----\n  // Must be done after Iterator.prototype was set up,\n  // so that `extends Iterator` works below\n\n  class WrappedIterator<T, TReturn = any, TNext = undefined> extends Iterator<T, TReturn, TNext> {\n    #iterator;\n    constructor(iterator: Iterator<T, TReturn, TNext>) {\n      super();\n      this.#iterator = iterator;\n    }\n    override next(...args: [] | [TNext]): any {\n      return this.#iterator.next(...args);\n    }\n    // `async` helps with line (*)\n    override return(value?: TReturn | PromiseLike<TReturn>): any {\n      const returnMethod = this.#iterator.return;\n      if (returnMethod === undefined) {\n        return { done: true, value: value as any }; // (*)\n      }\n      return returnMethod.call(this.#iterator);\n    }\n  }\n\n  function Iterator_from<T>(value: any) {\n    const iterator = GetIteratorFlattenable<Iterator<T>>(value);\n    if (iterator instanceof Iterator) {\n      return iterator;\n    }\n    // `iterator´ does not support the new API – wrap it so that it does\n    return new WrappedIterator(iterator);\n  }\n\n  Object.defineProperty(\n    Iterator, 'from',\n    {\n      writable: true,\n      enumerable: false,\n      configurable: true,\n      value: Iterator_from,\n    }\n  );\n})();\n","/* Manages the $wh global, an API for just-in-time debugging */\nimport type { DebugRegistry } from \"@webhare/env\";\nimport { debugFlags } from \"./envbackend\";\n\nlet debugRegFinalizer: FinalizationRegistry<{ type: keyof DebugRegistry; key: string }> | undefined;\n\nexport type WHGlobal = DebugRegistry & {\n  debugFlags: typeof debugFlags;\n  /** Global counter to avoid HMRs from duplicating IDs */\n  nextId: number;\n};\n\ndeclare global {\n  var $wh: WHGlobal;\n}\n\nglobalThis.$wh = {\n  debugFlags,\n  nextId: 1\n} satisfies WHGlobal;\n\nexport function addToDebugRegistry<T extends keyof DebugRegistry>(type: T, key: string, value: NonNullable<ReturnType<NonNullable<DebugRegistry[T]>[string][\"deref\"]>>) {\n  const debugRegistry = globalThis.$wh as unknown as DebugRegistry;\n  //@ts-ignore prevents '>   Type '{}' is not assignable to type 'never'. in jssdk builds, probably because noone yet extends DebugRegistry there\n  debugRegistry[type] ||= {};\n  debugRegFinalizer ||= new FinalizationRegistry(({ type: t, key: k }) => {\n    delete debugRegistry![t]?.[k];\n  });\n\n  if (debugRegistry[type][key])\n    console.error(`Debug registry key ${key} already exists, overwriting it`);\n\n  (debugRegistry[type] as Record<string, unknown>)[key] = new WeakRef(value);\n  debugRegFinalizer.register(value, { type, key });\n}\n","import type { FormControlElement } from \"@webhare/dompack\";\n\nexport const CustomEvent = globalThis.CustomEvent;\n/** Wrap an event to ensure it's target is a HTMLElement\n * @typeParam EventType - The expected event type\n * @typeParam CurrentTargetType - The type of the elemnt you're binding the event to. Optional, defaults to HTMLElement\n * @typeParam RelatedTargetType - The type of the elemnt you're binding the event to. Optional, defaults to HTMLElement\n*/\nexport type DocEvent<EventType extends Event, CurrentTargetType extends HTMLElement = HTMLElement, RelatedTargetType extends HTMLElement = HTMLElement> = EventType & {\n  target: HTMLElement;\n  currentTarget: CurrentTargetType;\n  relatedTarget: RelatedTargetType | null;\n};\n\nexport type DomEventOptions =\n  {\n    bubbles?: boolean;\n    cancelable?: boolean;\n    relatedTarget?: EventTarget;\n    detail?: object;\n  };\n\nexport function dispatchDomEvent(element: EventTarget, eventtype: string, options?: DomEventOptions) {\n  //see here https://developer.mozilla.org/en-US/docs/Web/Events whether an event is bubbles/cancelabel\n  options = {\n    bubbles: [\n      \"input\", \"change\", \"click\", \"contextmenu\", \"dblclick\",\n      \"reset\", \"submit\"\n    ].includes(eventtype),\n    cancelable: [\n      \"animationstart\", \"animationcancel\", \"animationend\", \"animationiteration\",\n      \"beforeunload\",\n      \"click\", \"contextmenu\", \"dblclick\",\n      \"reset\", \"submit\",\n      \"transitionstart\", \"transitioncancel\", \"transitionend\", \"transitionrun\"\n    ].includes(eventtype),\n    ...options\n  };\n\n  if (!element || !(element as Node).ownerDocument)\n    return true; //the element has left the dom... so there's no more bubbling. just drop it\n\n  //FIXME the load/scroll is buggy and we should be probably be using new Event (but an earlier attempt at that triggered quite a few test failures)\n  const createtype = /*[\"load\",\"scroll\"].includes(eventtype) === \"load\" ? \"UIEvents\" :*/[\"focus\", \"blur\", \"focusin\", \"focusout\"].includes(eventtype) ? \"FocusEvent\" : eventtype === \"click\" ? \"MouseEvents\" : \"HTMLEvents\";\n  //we verified its non-null ness above but TS doesn't really understand that\n  const evt = (element as Node).ownerDocument!.createEvent(createtype);\n  evt.initEvent(eventtype, options.bubbles, options.cancelable);\n  if (options.detail)\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any -- we should just rewrite to new Event\n    (evt as any).detail = options.detail;\n  if (options.relatedTarget) //its a readonly prop, so redefine it\n    Object.defineProperty(evt, 'relatedTarget', { value: options.relatedTarget, writable: false });\n\n  //TODO: Should we keep this code?\n  // @ts-expect-error IScroll is a custom Window property set by IScroll\n  if (eventtype === 'click' && window.IScroll)\n    // @ts-expect-error _constructed is a custom Event property used by IScroll\n    evt._constructed = true; //ensure IScroll doesn't blindly cancel our synthetic clicks\n\n  return element.dispatchEvent(evt);\n}\n\n/** Fire the proper modified events (input and/or change) on the element after changing its value\n * @param element - Element to receive event\n * @param options - Event options\n * @deprecated Use changeValue so we can figure out the proper events to fire\n */\nexport function fireModifiedEvents(element: FormControlElement, options?: DomEventOptions) {\n  dispatchDomEvent(element, 'input', options);\n  dispatchDomEvent(element, 'change', options);\n}\n\n//manually fire 'onchange' events. needed for event simulation - DEPRECATED\n/**\n * @param element - Element to receive event\n * @param type - Event type\n * @param options - Event options\n * @deprecated Use dispatchDomEvent instead\n */\nexport function fireHTMLEvent(element: EventTarget, type: string, options?: DomEventOptions) {\n  return dispatchDomEvent(element, type, options);\n}\n\ntype CustomEventParams =\n  {\n    /** Whether this event should bubble up in the DOM */\n    bubbles: boolean;\n    /** Whether this event can be cancelled */\n    cancelable: boolean;\n    /** Custom event information */\n    detail?: unknown;\n    /** Handler to execute if the default isn't prevented by a event listener */\n    defaulthandler?: (evt: CustomEvent) => void;\n  };\n\n/** Fire a custom event\n    @param node - node to fire the event on\n    @param event - event type. You should add this event to the GlobalEventHandlersEventMap for validation in dispatchCustomEvent calls and addEventListener callbacks.\n    @param params - Event options\n    @returns true if the default wasn't prevented\n */\n\nexport function dispatchCustomEvent<K extends string>(\n  node: EventTarget,\n  event: K,\n  params: CustomEventParams & (K extends keyof GlobalEventHandlersEventMap ?\n    GlobalEventHandlersEventMap[K] extends CustomEvent ?\n    { detail: GlobalEventHandlersEventMap[K][\"detail\"] } : unknown : unknown)) {\n\n  if (!params)\n    throw new Error(`Missing dispatchCustomEvent params`);\n  ['bubbles', 'cancelable'].forEach(prop => {\n    if (!(prop in params))\n      throw new Error(`Missing '${prop}' in dispatchCustomEvent params`);\n  });\n\n  const evt = new CustomEvent(event, {\n    bubbles: params.bubbles,\n    cancelable: params.cancelable,\n    detail: params.detail\n  });\n  let defaultaction = true;\n  try {\n    if (!node.dispatchEvent(evt))\n      defaultaction = false; //defaultPrevented is unreliable on IE11, so double check\n  } finally {\n    if (!evt.defaultPrevented && params.defaulthandler && defaultaction) {\n      params.defaulthandler(evt);\n    }\n  }\n  return defaultaction && !evt.defaultPrevented;\n}\n\n/**\n     Change the value of a form element, and fire the correct events as if it were a user change\n *\n    @param element - Element to change\n    @param newvalue - New value\n */\nexport function changeValue(element: FormControlElement, newvalue: string | number | boolean) {\n  if (element.matches(`input[type=radio], input[type=checkbox]`)) {\n    if (Boolean((element as HTMLInputElement).checked) === Boolean(newvalue))\n      return;\n    (element as HTMLInputElement).checked = Boolean(newvalue);\n  } else {\n    //FIXME it's not really clean to assume that this element is changeable - throw for non input/select..\n    const asString = String(newvalue);\n    if ((element as HTMLInputElement).value === asString)\n      return;\n\n    (element as HTMLInputElement).value = String(newvalue);\n  }\n  dispatchDomEvent(element as EventTarget, 'input');\n  dispatchDomEvent(element as EventTarget, 'change');\n}\n\nlet keydata: { mapping: { [key: string]: string } };\n\nfunction initKeyMapping() {\n  keydata =\n  {\n    // Mapping from keyIdentifier/key to key. If not found, translate U+XXXX to the unicode char and return that.\n\n    // List of all current key mappings (and current inconsistencies\n    // at https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values\n    mapping:\n    {\n      \"Del\": \"Delete\", // IE/edge use 'Del' instead of 'Delete'\n      \"Esc\": \"Escape\", // IE/edge use 'Esc' instead of 'Escape'\n      \"OS\": \"Meta\", // Meta key is called OS on IE 9 and Firefox (tested v50)\n      \"Win\": \"Meta\", // Meta key is called Win on IE/Edge\n      \"Scroll\": \"ScrollLock\", // More IE/Edge, from tests\n      \"PrintScreen\": \"Print\", // More IE/Edge, from tests\n      \"MozHomeScreen\": \"GoHome\", // Prior to Firefox 37, the Home button generated a key code of \"Exit\". Starting in Firefox 37, the button generates the key code \"MozHomeScreen\".\n\n      // Internet Explorer 9 and Firefox 36 and earlier return \"Left\", \"Right\", \"Up\", and \"Down\" for the arrow keys, instead of \"ArrowLeft\", \"ArrowRight\", \"ArrowUp\", and \"ArrowDown\".\n      \"Left\": \"ArrowLeft\",\n      \"Right\": \"ArrowRight\",\n      \"Up\": \"ArrowUp\",\n      \"Down\": \"ArrowDown\",\n      // More IE and old Firefox stuff\n      \"Crsel\": \"CrSel\",\n      \"Exsel\": \"ExSel\",\n      \"Nonconvert\": \"NonConvert\",\n      // Internet Explorer 9 and Firefox 36 and earlier report \"Apps\" instead of \"ContextMenu\" for the context menu key.\n      \"Apps\": \"ContextMenu\",\n      // Internet Explorer 9 and Firefox 36 and earlier use \"MediaNextTrack\" and \"MediaPreviousTrack\" instead of \"MediaTrackNext\" and \"MediaTrackPrevious\".\n      \"MediaNextTrack\": \"MediaTrackNext\",\n      \"MediaPreviousTrack\": \"MediaTrackPrevious\",\n      // In Internet Explorer 9, and prior to Firefox 49, \"AudioVolumeUp\", \"AudioVolumeDown\", and \"AudioVolumeMute\" were \"VolumeUp\", \"VolumeDown\", and \"VolumeMute\".\n      // In Firefox 49 they were updated to match the latest specification. The old names are still used on Boot to Gecko.\n      \"VolumeUp\": \"AudioVolumeUp\",\n      \"VolumeDown\": \"AudioVolumeDown\",\n      \"VolumeMute\": \"AudioVolumeMute\",\n      // Firefox added proper support for the \"TV\" key in Firefox 37; before that, this key generated the key code \"Live\".\n      \"Live\": \"TV\",\n      // Internet Explorer 9 and Firefox 36 and earlier identify the zoom toggle button as \"Zoom\". Firefox 37 corrects this to \"ZoomToggle\".\n      \"Zoom\": \"ZoomToggle\",\n      // Internet Explorer 9 and Firefox 36 and earlier use \"SelectMedia\" instead of \"LaunchMediaPlayer\". Firefox 37 through Firefox 48 use \"MediaSelect\". Firefox 49 has been updated to match the latest specification, and to return \"LaunchMediaPlayer\".\n      \"SelectMedia\": \"LaunchMediaPlayer\",\n      \"MediaSelect\": \"LaunchMediaPlayer\",\n      // Google Chrome returns \"LaunchCalculator\" instead of \"LaunchApplication1\". See Chromium bug 612743 for more information.\n      // Google Chrome returns \"LaunchMyComputer\" instead of \"LaunchApplication2\". See Chromium bug 612743 for more information.\n      // (LaunchCalculator and LaunchMyComputer are valid too, so no translation)\n\n      // While older browsers used words like \"Add\", \"Decimal\", \"Multiply\", and so forth modern browsers identify these using the actual character (\"+\", \".\", \"*\", and so forth).\n      \"Multiply\": \"*\",\n      \"Add\": \"+\",\n      \"Divide\": \"/\",\n      \"Subtract\": \"-\",\n      \"Decimal\": \".\", // (mozilla Key_Values doc says depends on region)\n      \"Separator\": \".\", // (mozilla Key_Values doc says depends on region)\n\n      // keyIdenfier spec mapping of non-printable keys: https://www.w3.org/TR/2009/WD-DOM-Level-3-Events-20090908/#keyset-keyidentifiers\n      // Used in safari\n      \"U+0008\": \"Backspace\",\n      \"U+0009\": \"Tab\",\n      \"U+000D\": \"Enter\",\n      \"U+0018\": \"Cancel\",\n      \"U+001B\": \"Escape\",\n      \"U+007F\": \"Delete\",\n      \"U+0300\": \"DeadGrave\",\n      \"U+0301\": \"DeadEacute\",\n      \"U+0302\": \"DeadCircumflex\",\n      \"U+0303\": \"DeadTilde\",\n      \"U+0304\": \"DeadMacron\",\n      \"U+0306\": \"DeadBreve\",\n      \"U+0307\": \"DeadAboveDot\",\n      \"U+0308\": \"DeadUmlaut\",\n      \"U+030A\": \"DeadAboveRing\",\n      \"U+030B\": \"DeadDoubleacute\",\n      \"U+030C\": \"DeadCaron\",\n      \"U+0327\": \"DeadCedilla\",\n      \"U+0328\": \"DeadOgonek\",\n      \"U+0345\": \"DeadIota\",\n      \"U+3099\": \"DeadVoicedSound\",\n      \"U+309A\": \"DeadSemivoicedSound\",\n\n      // keyIdenfier spec mapping to characters: https://www.w3.org/TR/2009/WD-DOM-Level-3-Events-20090908/#keyset-keyidentifiers\n      \"Exclamation\": \"!\",\n      \"DoubleQuote\": \"\\\"\",\n      \"Hash\": \"#\",\n      \"Dollar\": \"$\",\n      \"Ampersand\": \"&\",\n      \"LeftParen\": \"(\",\n      \"RightParen\": \")\",\n      \"Asterisk\": \"*\",\n      \"Plus\": \"+\",\n      \"Percent\": \"%\",\n      \"Comma\": \",\",\n      \"HyphenMinus\": \"-\",\n      \"Period\": \".\",\n      \"Solidus\": \"/\",\n      \"Colon\": \":\",\n      \"Semicolon\": \";\",\n      \"LessThan\": \"<\",\n      \"Equals\": \"=\",\n      \"GreaterThan\": \">\",\n      \"QuestionMark\": \"?\",\n      \"At\": \"@\",\n      \"LeftSquareBracket\": \"[\",\n      \"Backslash\": \"\\\\\",\n      \"RightSquareBracket\": \"]\",\n      \"Circumflex\": \"^\",\n      \"Underscore\": \"_\",\n      \"Grave\": \"`\",\n      \"LeftCurlyBracket\": \"{\",\n      \"Pipe\": \"|\",\n      \"RightCurlyBracket\": \"}\",\n      \"Euro\": \"€\",\n      \"InvertedExclamation\": \"¡\",\n\n      // Safari fixes: viewed in local tests\n      \"U+0010\": \"ContextMenu\"\n    }\n  };\n}\n\nexport type NormalizedKeyboardEvent =\n  {\n    type: string;\n    target: EventTarget | null;\n    key: string;\n    code: string;\n    ctrlKey: boolean;\n    altKey: boolean;\n    location: number;\n    shiftKey: boolean;\n    metaKey: boolean;\n    repeat: boolean;\n    isComposing: boolean;\n  };\n\n/**\n     Returns normalized keyboard event properties, following the current W3C UI Events spec\n *\n    @param evt - Keyboard event\n    @returns Normalized keyboard event data\n */\nexport function normalizeKeyboardEventData(evt: KeyboardEvent): NormalizedKeyboardEvent {\n  // event.key is supported from chrome:51, edge, ff: 29, ie: 9, not in safari\n  // event.keyIdentifier in chrome 26-54, opera 15-41, safara: 5.1\n  // safari doesn't provide either in keypress events, use U+evt.keyCode (uppercase 4-byte hex)\n\n  let key = evt.key;\n  if (!keydata)\n    initKeyMapping();\n  if (keydata.mapping[key])\n    key = keydata.mapping[key];\n  else if (key.startsWith(\"U+\")) // U+xxxx code\n    key = String.fromCodePoint(parseInt(key.substring(2), 16));\n\n  // Seen in chrome 56.0.2924.76 on linux, numpad '.' without numlock returns key \"\\u0000\"\n  if (evt.key === \"\\u0000\" && evt.code === \"NumpadDecimal\")\n    key = \".\";\n\n  return (\n    {\n      type: evt.type,\n      target: evt.target,\n      key: key,\n      code: evt.code || \"Unidentified\",\n      ctrlKey: evt.ctrlKey,\n      altKey: evt.altKey,\n      location: evt.location,\n      shiftKey: evt.shiftKey,\n      metaKey: evt.metaKey,\n      repeat: evt.repeat,\n      isComposing: evt.isComposing\n    });\n}\n\n/**\n * Stop, fully, an event\n *\n * @param event - Event to stop\n */\nexport function stop(event: Event) {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n\n/** Add an event listener to HTMLElements inside a document (which allows us to ensure that 'target' is a HTMLElement for easier typings) */\nexport function addDocEventListener<CurrentTargetType extends HTMLElement, Type extends keyof HTMLElementEventMap>(node: CurrentTargetType, type: Type, listener: (this: CurrentTargetType, ev: DocEvent<HTMLElementEventMap[Type], CurrentTargetType>) => void | Promise<void>, options?: AddEventListenerOptions): void;\nexport function addDocEventListener<CurrentTargetType extends HTMLElement>(node: CurrentTargetType, type: string, listener: (this: CurrentTargetType, evt: DocEvent<Event, CurrentTargetType>) => void | Promise<void>, options?: AddEventListenerOptions): void;\n\nexport function addDocEventListener<CurrentTargetType extends HTMLElement>(node: CurrentTargetType, type: string, listener: (this: CurrentTargetType, evt: DocEvent<Event, CurrentTargetType>) => void | Promise<void>, options?: AddEventListenerOptions): void {\n  node.addEventListener(type, listener as EventListener, options);\n}\n","/* Identify devices for the purpose of analytics/tracing\n   NOT a library for feature detection!\n   Originally based on Mootools.Browser\n*/\n\nexport type Platform = \"windows\" | \"ios\" | \"webos\" | \"android\" | \"linux\" | \"mac\" | \"other\";\nexport type Device = \"desktop\" | \"mobile\" | \"tablet\" | \"\";\n\n/** Valid KeyboardEvent.key values (next to 'plain' keys)\n    This list was built from https://www.w3.org/TR/uievents-key/\n    using `console.log([...new Set([...document.querySelectorAll(\".key-table-key .key\")].map(_ => _.textContent))].toSorted().join(' | '))`\n*/\nexport type KeyAttributeValue = \"AVRInput\" | \"AVRPower\" | \"Accept\" | \"Again\" | \"AllCandidates\" | \"Alphanumeric\" | \"Alt\" | \"AltGraph\" | \"AppSwitch\" | \"ArrowDown\" | \"ArrowLeft\" | \"ArrowRight\" | \"ArrowUp\" | \"Attn\" | \"AudioBalanceLeft\" | \"AudioBalanceRight\" | \"AudioBassBoostDown\" | \"AudioBassBoostToggle\" | \"AudioBassBoostUp\" | \"AudioFaderFront\" | \"AudioFaderRear\" | \"AudioSurroundModeNext\" | \"AudioTrebleDown\" | \"AudioTrebleUp\" | \"AudioVolumeDown\" | \"AudioVolumeMute\" | \"AudioVolumeUp\" | \"Backspace\" | \"BrightnessDown\" | \"BrightnessUp\" | \"BrowserBack\" | \"BrowserFavorites\" | \"BrowserForward\" | \"BrowserHome\" | \"BrowserRefresh\" | \"BrowserSearch\" | \"BrowserStop\" | \"Call\" | \"Camera\" | \"CameraFocus\" | \"Cancel\" | \"CapsLock\" | \"ChannelDown\" | \"ChannelUp\" | \"Clear\" | \"Close\" | \"ClosedCaptionToggle\" | \"CodeInput\" | \"ColorF0Red\" | \"ColorF1Green\" | \"ColorF2Yellow\" | \"ColorF3Blue\" | \"ColorF4Grey\" | \"ColorF5Brown\" | \"Compose\" | \"ContextMenu\" | \"Control\" | \"Convert\" | \"Copy\" | \"CrSel\" | \"Cut\" | \"DVR\" | \"Dead\" | \"Delete\" | \"Dimmer\" | \"DisplaySwap\" | \"Eisu\" | \"Eject\" | \"End\" | \"EndCall\" | \"Enter\" | \"EraseEof\" | \"Escape\" | \"ExSel\" | \"Execute\" | \"Exit\" | \"F1\" | \"F10\" | \"F11\" | \"F12\" | \"F2\" | \"F3\" | \"F4\" | \"F5\" | \"F6\" | \"F7\" | \"F8\" | \"F9\" | \"FavoriteClear0\" | \"FavoriteClear1\" | \"FavoriteClear2\" | \"FavoriteClear3\" | \"FavoriteRecall0\" | \"FavoriteRecall1\" | \"FavoriteRecall2\" | \"FavoriteRecall3\" | \"FavoriteStore0\" | \"FavoriteStore1\" | \"FavoriteStore2\" | \"FavoriteStore3\" | \"FinalMode\" | \"Find\" | \"Fn\" | \"FnLock\" | \"GoBack\" | \"GoHome\" | \"GroupFirst\" | \"GroupLast\" | \"GroupNext\" | \"GroupPrevious\" | \"Guide\" | \"GuideNextDay\" | \"GuidePreviousDay\" | \"HangulMode\" | \"HanjaMode\" | \"Hankaku\" | \"HeadsetHook\" | \"Help\" | \"Hibernate\" | \"Hiragana\" | \"HiraganaKatakana\" | \"Home\" | \"Hyper\" | \"Info\" | \"Insert\" | \"InstantReplay\" | \"JunjaMode\" | \"KanaMode\" | \"KanjiMode\" | \"Katakana\" | \"Key11\" | \"Key12\" | \"LastNumberRedial\" | \"LaunchApplication1\" | \"LaunchApplication2\" | \"LaunchCalendar\" | \"LaunchContacts\" | \"LaunchMail\" | \"LaunchMediaPlayer\" | \"LaunchMusicPlayer\" | \"LaunchPhone\" | \"LaunchScreenSaver\" | \"LaunchSpreadsheet\" | \"LaunchWebBrowser\" | \"LaunchWebCam\" | \"LaunchWordProcessor\" | \"Link\" | \"ListProgram\" | \"LiveContent\" | \"Lock\" | \"LogOff\" | \"MailForward\" | \"MailReply\" | \"MailSend\" | \"MannerMode\" | \"MediaApps\" | \"MediaAudioTrack\" | \"MediaClose\" | \"MediaFastForward\" | \"MediaLast\" | \"MediaNextTrack\" | \"MediaPause\" | \"MediaPlay\" | \"MediaPlayPause\" | \"MediaPreviousTrack\" | \"MediaRecord\" | \"MediaRewind\" | \"MediaSkipBackward\" | \"MediaSkipForward\" | \"MediaStepBackward\" | \"MediaStepForward\" | \"MediaStop\" | \"MediaTopMenu\" | \"MediaTrackNext\" | \"MediaTrackPrevious\" | \"Meta\" | \"MicrophoneToggle\" | \"MicrophoneVolumeDown\" | \"MicrophoneVolumeMute\" | \"MicrophoneVolumeUp\" | \"ModeChange\" | \"NavigateIn\" | \"NavigateNext\" | \"NavigateOut\" | \"NavigatePrevious\" | \"New\" | \"NextCandidate\" | \"NextFavoriteChannel\" | \"NextUserProfile\" | \"NonConvert\" | \"Notification\" | \"NumLock\" | \"OnDemand\" | \"Open\" | \"PageDown\" | \"PageUp\" | \"Pairing\" | \"Paste\" | \"Pause\" | \"PinPDown\" | \"PinPMove\" | \"PinPToggle\" | \"PinPUp\" | \"Play\" | \"PlaySpeedDown\" | \"PlaySpeedReset\" | \"PlaySpeedUp\" | \"Power\" | \"PowerOff\" | \"PreviousCandidate\" | \"Print\" | \"PrintScreen\" | \"Process\" | \"Props\" | \"RandomToggle\" | \"RcLowBattery\" | \"RecordSpeedNext\" | \"Redo\" | \"RfBypass\" | \"Romaji\" | \"STBInput\" | \"STBPower\" | \"Save\" | \"ScanChannelsToggle\" | \"ScreenModeNext\" | \"ScrollLock\" | \"Select\" | \"Settings\" | \"Shift\" | \"SingleCandidate\" | \"Soft1\" | \"Soft2\" | \"Soft3\" | \"Soft4\" | \"SpeechCorrectionList\" | \"SpeechInputToggle\" | \"SpellCheck\" | \"SplitScreenToggle\" | \"Standby\" | \"Subtitle\" | \"Super\" | \"Symbol\" | \"SymbolLock\" | \"TV\" | \"TV3DMode\" | \"TVAntennaCable\" | \"TVAudioDescription\" | \"TVAudioDescriptionMixDown\" | \"TVAudioDescriptionMixUp\" | \"TVContentsMenu\" | \"TVDataService\" | \"TVInput\" | \"TVInputComponent1\" | \"TVInputComponent2\" | \"TVInputComposite1\" | \"TVInputComposite2\" | \"TVInputHDMI1\" | \"TVInputHDMI2\" | \"TVInputHDMI3\" | \"TVInputHDMI4\" | \"TVInputVGA1\" | \"TVMediaContext\" | \"TVNetwork\" | \"TVNumberEntry\" | \"TVPower\" | \"TVRadioService\" | \"TVSatellite\" | \"TVSatelliteBS\" | \"TVSatelliteCS\" | \"TVSatelliteToggle\" | \"TVTerrestrialAnalog\" | \"TVTerrestrialDigital\" | \"TVTimer\" | \"Tab\" | \"Teletext\" | \"Undo\" | \"Unidentified\" | \"VideoModeNext\" | \"VoiceDial\" | \"WakeUp\" | \"Wink\" | \"Zenkaku\" | \"ZenkakuHankaku\" | \"ZoomIn\" | \"ZoomOut\" | \"ZoomToggle\";\n\nexport type UserAgentInfo =\n  {\n    /** Browser name, eg 'chrome' or 'firefox' */\n    name: string;\n    /** Browser numeric version (eg 97) */\n    version: number;\n    /** Platform the browser is running on (eg 'windows') */\n    platform: Platform;\n    /** Type of device (eg 'desktop' or 'tablet' for an iPad) */\n    device: Device;\n    /** platform-browsername-version eg ios-safari-11 */\n    triplet: string;\n  };\n\nexport function parseUserAgent(ua: string): UserAgentInfo {\n  ua = ua.toLowerCase();\n\n  // chrome is included in the edge UA, so need to check for edge first, before checking if it's chrome.\n  // safari is included in the miuibrowser UA, so need to check for miuibrowser first, before checking if it's safari.\n  let UA: RegExpMatchArray | null = ua.match(/(edge|miuibrowser)[\\s/:]([\\w\\d.]+)/);\n  if (!UA)\n    UA = ua.match(/(opera|ie|firefox|chrome|trident|crios|version)[\\s/:]([\\w\\d.]+)?.*?(safari|(?:rv[\\s/:]|version[\\s/:])([\\w\\d.]+)|$)/);\n  if (!UA) { //try ios 11.4.1\n    UA = ua.match(/; cpu os ([\\d]+)/);\n    if (UA)\n      UA = ['', 'safari', UA[1]];\n  }\n  if (!UA)\n    UA = ['', 'unknown', \"0\"];\n\n  if (UA[1] === 'trident') {\n    UA[1] = 'ie';\n    if (UA[4]) UA[2] = UA[4];\n  } else if (UA[1] === 'crios') {\n    UA[1] = 'chrome';\n  }\n\n  let platform = ua.match(/ip(?:ad|od|hone)/) ? 'ios' : (ua.match(/(?:webos|android)/) || ua.match(/mac|win|linux/) || ['other'])[0];\n  if (platform === 'win')\n    platform = 'windows';\n\n  const name = (UA[1] === 'version') ? UA[3] : UA[1];\n  const version = parseInt((UA[1] === 'opera' && UA[4]) ? UA[4] : UA[2]);\n  const device = ua.match(/ipad/) ? 'tablet' : ['ios', 'webos', 'android'].includes(platform) ? 'mobile' : ['mac', 'windows', 'linux'].includes(platform) ? 'desktop' : '';\n\n  return {\n    name,\n    version,\n    platform: platform as Platform,\n    device,\n    triplet: platform + '-' + name + '-' + version\n  };\n}\n\n/**\n * Is the native 'multiselect' modifier for this platform pressed? (Cmd for Mac, Ctrl for Windows/Linux)\n *\n * @param event - Event to check\n */\nexport function isMultiSelectKey(event: KeyboardEvent | MouseEvent): boolean {\n  return browser.platform === 'mac' ? event.metaKey : event.ctrlKey;\n}\n\n/**\n * Is the native 'copy' modifier for this platform pressed?\n *\n * @param event - Event to check\n */\nexport function isCopyKey(event: KeyboardEvent | MouseEvent): boolean {\n  return browser.platform === 'mac' ? event.altKey : event.ctrlKey;\n}\n\n/** @deprecated Use getBrowser() instead, available since WH5.6.3. We will remove `browser` in the future to improve tree shaking */\nexport const browser: Readonly<UserAgentInfo> = Object.freeze(parseUserAgent(globalThis.navigator?.userAgent || \"\"));\n\n/** Get browser information */\nexport function getBrowser(): Readonly<UserAgentInfo> {\n  //Offer this as a function to improve treeshakability\n  return browser;\n}\n\n//CSS Query used to find valid submittors\nexport const submitselector = 'input[type=submit],input[type=image],button[type=submit],button:not([type])';\n//Must match possible types returned by the submitselector\nexport type SubmitSelectorType = HTMLInputElement | HTMLButtonElement;\n","import { isHTMLElement } from \"@webhare/dompack\";\nimport type { CMSConfig } from \"@mod-system/js/internal/generation/gen_misc_ts\";\n\nlet config: CMSConfig | undefined;\n\nfunction forwardPublisherNavigation(event: Event) {\n  /* we watch for clicks.. as we only want to update the Publisher's selection for user triggered actions (otherwise we'd\n     start navigation in response to JS or internal link autoredirects) */\n  if (!isHTMLElement(event.target) || !config?.interfaceServers)\n    return;\n\n  const navaction = event.target.closest<HTMLAnchorElement>('a[href]');\n  if (!navaction)\n    return;\n\n  const desturl = navaction.href;\n  if (desturl.split('#')[0] !== location.href.split('#')[0]) { //it's actual navigation...\n    for (const origin of config.interfaceServers) {\n      try {\n        window.top?.postMessage({ type: \"webhare-navigation\", location: desturl }, origin);\n      } catch (ignore) {\n        //ignore crossdomain errors\n      }\n    }\n  }\n}\n\nasync function configureForCMS() {\n  try {\n    const res = await fetch(\"/.wh/ea/config/cms.json\");\n    config = await res.json();\n  } catch (e) {\n    console.log(\"Failed to get CMS configuration\", e);\n    return;\n  }\n  window.addEventListener(\"click\", forwardPublisherNavigation);\n}\n\nif (typeof window !== \"undefined\" && window !== window.top) { //if we're in an iframe, we may be running in WebHare and need to forward navigation events\n  //we have no way to detect whether we're in a WebHare iframe or a 3rd party iframe. assume it's webhare and grab the interface servers\n  void configureForCMS();\n}\n","import \"./styles/fonts.css\";\nimport \"./styles/colors.css\";\nimport \"./styles/typography.css\";\nimport \"./styles/layout.css\";\nimport \"./styles/fig.css\";\nimport \"./styles/base.css\";\nimport \"./styles/pseudo.css\";\nimport \"./styles/focus.css\";\nimport \"./styles/overrides.css\";\n\nimport { createApp, type Component } from \"vue\";\nimport { setupPopupDialog, setupPopupHost } from \"./lib/dialog\";\nimport { currentRoute } from \"./lib/site\";\nimport App from \"./views/App.vue\";\nimport Aanmelden from \"./views/Aanmelden.vue\";\nimport Beheer from \"./views/Beheer.vue\";\nimport Homepage from \"./views/Homepage.vue\";\nimport Login from \"./views/Login.vue\";\nimport Overzicht from \"./views/Overzicht.vue\";\n\nconst views: Record<string, Component> = { \"\": Homepage, app: App, inloggen: Login, aanmelden: Aanmelden, beheer: Beheer, overzicht: Overzicht };\n\nconst route = currentRoute();\ncreateApp(views[route] ?? Homepage).mount(\"#dc-root\");\nif (route === \"inloggen\" || route === \"aanmelden\")\n  setupPopupDialog();\nelse if (route === \"\")\n  setupPopupHost();\n","/* Homepage-handoff: keyboard behaviour of the login/sign-up pop-up that the prototype lacks. Esc closes it, Tab and\n   Shift+Tab stay inside it, focus moves into it on open and back to the opener on close. The pop-up is a page of its\n   own, shown on the homepage in an iframe (?embed=1), so both documents take part. */\nconst focusable = \"a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex='-1'])\";\n\nfunction modalDialog(doc: Document = document): HTMLElement | null {\n  return doc.querySelector<HTMLElement>(\"[role=dialog][aria-modal=true]\");\n}\n\nfunction tabbables(dialog: HTMLElement): HTMLElement[] {\n  return [...dialog.querySelectorAll<HTMLElement>(focusable)].filter(el => el.getClientRects().length > 0);\n}\n\nfunction closeButton(doc: Document): HTMLElement | null {\n  return modalDialog(doc)?.querySelector<HTMLElement>(\"[aria-label=Sluiten]\") ?? null;\n}\n\n/** On the pop-up page itself (standalone or inside the homepage iframe). */\nexport function setupPopupDialog(): void {\n  const dialog = modalDialog();\n  if (!dialog)\n    return;\n  // Focus the dialog itself, so no field shows a focus ring before the visitor does anything.\n  dialog.tabIndex = -1;\n  dialog.focus({ preventScroll: true });\n  document.addEventListener(\"keydown\", event => {\n    if (event.key === \"Escape\") {\n      event.preventDefault();\n      closeButton(document)?.click();\n    } else if (event.key === \"Tab\") {\n      const items = tabbables(dialog);\n      if (!items.length)\n        return;\n      const first = items[0], last = items.at(-1)!;\n      const active = document.activeElement;\n      if (event.shiftKey && (active === first || active === dialog || !dialog.contains(active))) {\n        event.preventDefault();\n        last.focus();\n      } else if (!event.shiftKey && (active === last || !dialog.contains(active))) {\n        event.preventDefault();\n        first.focus();\n      }\n    }\n  });\n}\n\n/** On the homepage: hand focus to the pop-up iframe while it is open, and back to its opener afterwards. */\nexport function setupPopupHost(): void {\n  let opener: HTMLElement | null = null;\n  const popupFrame = () => document.querySelector<HTMLIFrameElement>(\"iframe[src*='embed=1']\");\n  new MutationObserver(() => {\n    const frame = popupFrame();\n    if (frame && !frame.dataset.kiekFocus) {\n      frame.dataset.kiekFocus = \"1\";\n      opener = document.activeElement instanceof HTMLElement ? document.activeElement : null;\n      const focusFrame = () => frame.focus({ preventScroll: true });\n      frame.addEventListener(\"load\", focusFrame, { once: true });\n      if (frame.contentDocument?.readyState === \"complete\")\n        focusFrame();\n    } else if (!frame && opener) {\n      opener.focus({ preventScroll: true });\n      opener = null;\n    }\n  }).observe(document.body, { childList: true, subtree: true });\n  document.addEventListener(\"keydown\", event => {\n    const frame = popupFrame();\n    if (event.key === \"Escape\" && frame?.contentDocument) {\n      event.preventDefault();\n      closeButton(frame.contentDocument)?.click();\n    }\n  });\n}\n","// Generated by design-1op1 dc2vue from the page routes; do not edit.\n/** Site root, derived from the current page: the root page sits at the root, every other page one folder deeper. */\nconst routes = [\"inloggen\",\"aanmelden\",\"app\",\"beheer\",\"overzicht\"];\n\nfunction siteRoot(pathname: string): string {\n  const dir = pathname.replace(/[^/]*$/, \"\");\n  const parts = dir.split(\"/\").filter(Boolean);\n  if (parts.length && routes.includes(parts.at(-1)!))\n    parts.pop();\n  return \"/\" + parts.map(p => p + \"/\").join(\"\");\n}\n\nexport const SITE_ROOT = siteRoot(location.pathname);\n\n/** The route of the current page: \"\" for the root page, otherwise its folder name. */\nexport function currentRoute(): string {\n  return location.pathname.slice(SITE_ROOT.length).replace(/\\/.*$/, \"\");\n}\n","/* Copied by design-1op1 dc2vue; do not edit here.\n   Minimal stand-in for the Claude Design runtime (support.js), so the prototype's `class Component extends DCLogic`\n   logic runs unchanged behind a generated Vue template. Semantics follow dc-runtime: setState applies synchronously,\n   re-render is batched, the callback runs after the DOM is patched. */\nimport { computed, nextTick, onMounted, onUnmounted, onUpdated, shallowRef, type ComputedRef } from \"vue\";\n\ntype State = Record<string, unknown>;\ntype Props = Record<string, unknown>;\ntype StateUpdate = Partial<State> | ((prev: State, props: Props) => Partial<State> | null);\n\nexport class DCLogic {\n  public props: Props;\n  public state: State = {};\n  public __bump: () => void = () => { };\n\n  public constructor(props: Props) {\n    this.props = props;\n  }\n\n  public setState(update: StateUpdate, cb?: () => void): void {\n    const patch = typeof update === \"function\" ? update(this.state, this.props) : update;\n    this.state = { ...this.state, ...patch };\n    this.__bump();\n    if (cb)\n      void nextTick(cb);\n  }\n\n  public forceUpdate(): void {\n    this.__bump();\n  }\n\n  public componentDidMount(): void { }\n  public componentDidUpdate(_prevProps: Props): void { }\n  public componentWillUnmount(): void { }\n  public renderVals(): Record<string, unknown> {\n    return {};\n  }\n}\n\nexport const React = {\n  createRef<T = HTMLElement>(): { current: T | null } {\n    return { current: null };\n  },\n};\n\n/** Text interpolation as dc-runtime renders it: strings and numbers in a span.sc-interp, null/undefined/booleans as nothing. */\nexport function shows(value: unknown): boolean {\n  return value !== null && value !== undefined && typeof value !== \"boolean\";\n}\n\nexport function setRef(holder: unknown, el: unknown): void {\n  if (holder && typeof holder === \"object\" && \"current\" in holder)\n    (holder as { current: unknown }).current = el;\n}\n\nexport function useDC(Logic: new (props: Props) => DCLogic, props: Props): ComputedRef<Record<string, unknown>> {\n  const logic = new Logic(props);\n  const version = shallowRef(0);\n  logic.__bump = () => version.value++;\n  let prevProps = { ...props };\n\n  onMounted(() => logic.componentDidMount());\n  onUpdated(() => {\n    logic.componentDidUpdate(prevProps);\n    prevProps = { ...props };\n  });\n  onUnmounted(() => logic.componentWillUnmount());\n\n  return computed(() => {\n    void version.value;\n    return logic.renderVals();\n  });\n}\n\n/** sc-for treats anything that is not an array as an empty list. */\nexport function list(value: unknown): unknown[] {\n  return Array.isArray(value) ? value : [];\n}\n\n/** React renders booleans in data-* and aria-* as \"true\"/\"false\"; Vue would drop a false one. */\nexport function attr(value: unknown): unknown {\n  return typeof value === \"boolean\" ? String(value) : value ?? undefined;\n}\n\nimport { SITE_ROOT } from \"./site\";\nexport { SITE_ROOT };\n\nexport function page(route: string): string {\n  return SITE_ROOT + route;\n}\n\n// React's isUnitlessNumber: numeric values for these stay bare, all others get \"px\".\nconst unitless = new Set([\"animationIterationCount\", \"aspectRatio\", \"borderImageOutset\", \"borderImageSlice\", \"borderImageWidth\", \"boxFlex\", \"boxFlexGroup\", \"boxOrdinalGroup\", \"columnCount\", \"columns\", \"flex\", \"flexGrow\", \"flexPositive\", \"flexShrink\", \"flexNegative\", \"flexOrder\", \"gridArea\", \"gridRow\", \"gridRowEnd\", \"gridRowSpan\", \"gridRowStart\", \"gridColumn\", \"gridColumnEnd\", \"gridColumnSpan\", \"gridColumnStart\", \"fontWeight\", \"lineClamp\", \"lineHeight\", \"opacity\", \"order\", \"orphans\", \"scale\", \"tabSize\", \"widows\", \"zIndex\", \"zoom\", \"fillOpacity\", \"floodOpacity\", \"stopOpacity\", \"strokeDasharray\", \"strokeDashoffset\", \"strokeMiterlimit\", \"strokeOpacity\", \"strokeWidth\"]);\n\n/** A style object as React applies it: numbers get \"px\" unless the property is unitless (or a custom property). */\nexport function style(value: unknown): unknown {\n  if (!value || typeof value !== \"object\")\n    return value;\n  return Object.fromEntries(Object.entries(value as Record<string, unknown>).map(([key, v]) =>\n    [key, typeof v === \"number\" && v !== 0 && !unitless.has(key) && !key.startsWith(\"--\") ? `${v}px` : v]));\n}\n","// Copied by design-1op1 dc2vue; do not edit here.\nimport { onUnmounted } from \"vue\";\n\n/** The page's own <style> from the design's <helmet>, present only while the view is mounted (as dc-runtime does). */\nexport function useHelmet(css: string): void {\n  if (!css)\n    return;\n  const style = document.createElement(\"style\");\n  style.textContent = css;\n  document.head.appendChild(style);\n  onUnmounted(() => style.remove());\n}\n","// Generated by design-1op1 dc2vue from the <script type=\"text/x-dc\"> of \"Kiek App v3.dc.html\"; do not edit.\nimport { DCLogic, React } from \"../lib/dc\";\nimport { SITE_ROOT } from \"../lib/site\";\n\nconst THEMES = {\n  donker:{bg:'#1F184E', bg0:'rgba(31,24,78,0)', side:'#150F3A', surface:'#2A2260', surface2:'rgba(125,128,255,0.14)', text:'#F9F7F3', userText:'#FFFFFF', muted:'rgba(255,255,255,0.75)', navActive:'#2A2260', navHover:'rgba(255,255,255,0.06)', track:'rgba(255,255,255,0.08)', hair:'rgba(255,255,255,0.12)', scrim:'rgba(10,8,30,0.6)', segOff:'rgba(255,255,255,0.12)'},\n  licht:{bg:'#F4F0E9', bg0:'rgba(244,240,233,0)', side:'#EDE7D9', surface:'#F9F7F3', surface2:'rgba(125,128,255,0.1)', text:'#1F184E', userText:'#1F184E', muted:'rgba(31,24,78,0.7)', navActive:'rgba(31,24,78,0.1)', navHover:'rgba(31,24,78,0.06)', track:'rgba(31,24,78,0.1)', hair:'rgba(31,24,78,0.12)', scrim:'rgba(31,24,78,0.35)', segOff:'rgba(31,24,78,0.12)'}\n};\nconst ACC = '#7D80FF', GREEN = '#70E9A2', PINK = '#F388FF', OK = '#34C759', BAD = '#FF383C';\nconst PERSPECTIVES = ['Financieel','Sociaal','Omgeving','Governance'];\nconst DEMO = 'Demonstratiegegevens: publicatie, personen en passage zijn fictief.';\n\nconst DOCS = {\n  d1:{title:'Circulaire drinkbekers op de werkvloer', author:'L. Nijhuis', inst:'Saxion', year:2024, supplier:'Lectoraat Circulaire Economie, Saxion', version:'versie 1 · maart 2024',\n    passages:{p1:{loc:'hfst. 3, p. 21', before:'In de gevolgde kantoren daalde het aantal weggegooide bekers sterk. ', quote:'Herbruikbare bekers verlaagden de afvalstroom het meest bij vaste teams met een eigen pantry.', after:' Bij flexplekken lag het rendement lager.', why:'Onderbouwt dat herbruikbaar het beste past bij een kantoor met vaste teams.'}}},\n  d2:{title:'Levenscyclusanalyse: herbruikbaar versus biobased', author:null, inst:'Universiteit Twente', year:2023, supplier:'Universiteit Twente, vakgroep Duurzame Productie', version:'versie 2 · 2023',\n    passages:{p1:{loc:'p. 14', before:'', quote:'Een herbruikbare beker haalt na circa vijftig keer gebruik een lagere milieubelasting dan een biobased wegwerpbeker.', after:' Spoelen met een efficiënte vaatwasser is daarbij meegerekend.', why:'Geeft aan waarom herbruikbaar op termijn het laagste effect heeft, mits de beker vaak genoeg wordt gebruikt.'},\n      p2:{loc:'p. 19', before:'Biobased bekers worden in de praktijk zelden industrieel gecomposteerd. ', quote:'In de onderzochte afvalstromen eindigde het merendeel bij het restafval.', after:'', why:'Onderbouwt het aandachtspunt dat composteren vaak niet lukt.'}}},\n  d3:{title:'Van wegwerp naar herbruikbaar: gedrag op de werkvloer', author:'Onderzoeksteam Cinergie Twente', inst:'Saxion/UT', year:2024, supplier:'Cinergie Twente', version:'versie 1 · 2024', cin:true,\n    passages:{p1:{loc:'hfst. 2', before:'Bij twaalf Twentse werkgevers is gevolgd hoe medewerkers overstapten. ', quote:'Waar medewerkers zelf meedachten over de inrichting van spoelpunten, bleef het gebruik na een half jaar stabiel.', after:'', why:'Laat zien dat betrokkenheid van medewerkers bepaalt of de overstap blijft hangen.'}}},\n  pub1:{title:'Circulaire ketens in de Twentse maakindustrie', author:'Niet vermeld', inst:'Universiteit Twente', year:2024, supplier:'Universiteit Twente', version:'versie 1 · 2024', passages:{}},\n  pub2:{title:'Brede welvaart als sturingsinstrument voor regionale overheden', author:'Niet vermeld', inst:'Saxion', year:2023, supplier:'Saxion', version:'versie 1 · 2023', passages:{}, cin:true},\n  pub4:{title:'Samen scholen: leerlijnen in regionale productieketens', author:'Onderzoeksteam Cinergie Twente', inst:'Saxion', year:2025, supplier:'Cinergie Twente', version:'versie 2 · 2025', passages:{}, cin:true, themes:'scholing, arbeidsmarkt'},\n  pub5:{title:'Energiegebruik bij opschaling in de Twentse maakindustrie', author:'I. Kampman', inst:'Saxion', year:2023, supplier:'Saxion', version:'versie 2023', passages:{}, themes:'energie, maakindustrie'},\n  pub6:{title:'Werkdruk en betrokkenheid bij automatisering', author:'M. Olde Riekerink', inst:'Universiteit Twente', year:2022, supplier:'Universiteit Twente', version:'versie 1 · 2022', passages:{}, themes:'automatisering, werkdruk'},\n  pub3:{title:'Arbeidsmarkteffecten van verduurzaming in Oost-Nederland', author:'Niet vermeld', inst:'ROC van Twente', year:2024, supplier:'ROC van Twente', version:'versie 1 · 2024', passages:{}}\n};\nconst PEOPLE = {\n  groen:{name:'dr. Femke Groen', role:'Onderzoeker Cinergie', org:'Cinergie Twente, Saxion', expertise:'Gedragsverandering op de werkvloer', linked:'Van wegwerp naar herbruikbaar', route:'Contact loopt via het programmabureau van Cinergie Twente. Er is geen garantie op een reactie binnen een vaste termijn.'},\n  kampman:{name:'dr. Iris Kampman', role:'Lector circulaire economie', org:'Saxion', expertise:'Circulaire inkoop en materiaalstromen', linked:'Circulaire drinkbekers op de werkvloer', route:'Voor vragen over dit onderzoek kun je het lectoraat Circulaire Economie van Saxion benaderen.'}\n};\nconst COMPANIES = {\n  wascentrale:{name:'Twentse Wascentrale B.V.', role:'KVK 71234567 · Vaatwas- en spoeldiensten', kvk:'71234567', sector:'Reinigings- en spoeldiensten', address:'Haaksbergerstraat 210, 7545 GZ Enschede', phone:'053 234 56 78', website:'twentsewascentrale.nl'}\n};\n\nconst ALTS = [\n  {name:'Herbruikbaar', points:[['+','Laagste impact bij hergebruik'],['+','Past bij vaste teams'],['-','Spoelen en beheer nodig']], n:4, doc:'d1', pass:'p1'},\n  {name:'Biobased', points:[['+','Minder fossiel plastic'],['-','Composteren lukt vaak niet']], n:3, doc:'d2', pass:'p2'},\n  {name:'Wassen', points:[['+','Eigen vaatwasser of dienst'],['-','Kost energie en water']], n:3, doc:'d2', pass:'p1'},\n  {name:'Inzamelen', points:[['+','Snel te starten'],['-','Blijft wegwerp']], n:2, doc:'d3', pass:'p1'}\n];\n\nconst CONVS = [\n  {id:'koffie', title:'Duurzame koffiebekers', when:'Gisteren', meta:'Gesprek gestart om 14:02', report:'koffie',\n    docs:['d1','d2','d3'], contacts:[['p','groen'],['p','kampman'],['c','wascentrale']],\n    persp:{Financieel:[['Herbruikbaar is financieel positief op termijn; de aanschaf van bekers en spoelcapaciteit drukt het eerste jaar.','k2']], Sociaal:[['Medewerkers die meedenken over spoelpunten blijven de bekers gebruiken.','k1'],['Spoelen via een regionale wascentrale levert lokale werkgelegenheid op.','k2']], Omgeving:[], Governance:[['Maak één team eigenaar van beheer en spoelen, anders zakt het gebruik weg.','k2']]},\n    messages:[\n      {id:'u1', from:'user', text:'Welke optie past het best bij ons kantoor als we over willen naar duurzame koffiebekers? We zitten met 200 medewerkers op een kantoor in Hengelo.'},\n      {id:'k1', from:'kiek', blocks:[\n        {k:'text', segs:['Voor een kantoor met 200 mensen zie ik vier routes. Herbruikbaar komt er het best uit als je vaste teams hebt ', {c:['d1','p1']}, '. Biobased klinkt goed, maar wordt in de praktijk zelden gecomposteerd ', {c:['d2','p2']}, '.']},\n        {k:'alts', basis:'Gebaseerd op: Saxion Circulaire Economie Monitor, UT Duurzaamheidsonderzoek'},\n        {k:'text', segs:['Of de overstap blijft hangen, hangt vooral af van je mensen: waar medewerkers meedachten over spoelpunten, bleef het gebruik stabiel ', {c:['d3','p1']}, '.']},\n        {k:'ask', text:'Werken jullie vooral op vaste plekken, of veel met flexplekken? Dat bepaalt hoeveel herbruikbaar oplevert.'}\n      ]},\n      {id:'u2', from:'user', text:'Herbruikbaar lijkt het beste. Maar hoe zit het met de kosten en wie levert dat in de regio?'},\n      {id:'k2', from:'kiek', blocks:[\n        {k:'text', segs:['Goed. Op basis van het scenario herbruikbare bekers heb ik je impact doorgerekend. De afvalstroom daalt het meest bij vaste teams met een eigen pantry ', {c:['d1','p1']}, '. Spoelen kun je zelf doen of uitbesteden, bijvoorbeeld aan ', {co:'wascentrale'}, '. Dit is wat ik zie:']},\n        {k:'impact', scenario:'Scenario: herbruikbare bekers', rows:[['Duurzaamheid',52,GREEN,'Sterk positief'],['Financieel',33,ACC,'Positief op termijn'],['Sociaal',46,GREEN,'Positief'],['Omgeving',43,GREEN,'Positief']]},\n        {k:'btw', items:[['Meer betrokkenheid op de werkvloer',GREEN,70],['Opdrachten voor Twentse leveranciers',ACC,45],['Minder afval in de regio',GREEN,80],['Jouw Bruto Twentse Waarde',ACC,65]]},\n        {k:'card', segs:['Herbruikbaar scoort het sterkst op duurzaamheid ', {c:['d2','p1']}, ' en levert lokale werkgelegenheid op via wascentrales. Of het blijft werken, hangt vooral af van je medewerkers ', {c:['d3','p1']}, '. Financieel is het positief op termijn; dat is niet onderzocht voor jouw situatie. Wil je het volledige rapport zien of nog ergens dieper induiken?']}\n      ]}\n    ]},\n  {id:'woning', title:'Woningbouw Oldenzaal-Zuid', when:'Gisteren', meta:'Gesprek gestart op 12 oktober · 09:40', docs:[], contacts:[], persp:{Financieel:[],Sociaal:[],Omgeving:[],Governance:[]},\n    messages:[\n      {id:'w1', from:'user', text:'We bouwen 60 woningen in Oldenzaal-Zuid. Wat moet ik meenemen over de ecologische impact in de bouwfase?'},\n      {id:'w2', from:'kiek', blocks:[\n        {k:'text', segs:['Daar kan ik je mee helpen, maar ik mis nog twee dingen om het scherp te krijgen. Het onderzoek in de kennisbank zegt vooral iets over materiaalkeuze en stikstof tijdens de bouw.']},\n        {k:'ask', text:'Bouwen jullie traditioneel of modulair, en ligt het terrein dicht bij een Natura 2000-gebied?'}\n      ]}\n    ]},\n  {id:'textiel', title:'Circulair textielbedrijf', when:'Vandaag', meta:'Gesprek gestart op 8 oktober · 10:15', report:'textiel', docs:['d1','d2','d3'], contacts:[['p','groen'],['p','kampman']], persp:{Financieel:[],Sociaal:[],Omgeving:[],Governance:[]},\n    messages:[\n      {id:'t1', from:'user', text:'Ik wil een circulair textielbedrijf starten in Enschede. Wat betekent dat voor de regio?'},\n      {id:'t2', from:'kiek', blocks:[{k:'text', segs:['Ik heb vier perspectieven beoordeeld en twaalf bronnen gekoppeld. Het volledige overzicht staat in de uitslag.']}]}\n    ]}\n];\n\nconst REPORTS = {\n  koffie:{title:'Duurzame koffiebekers Hengelo', meta:'Analyse afgerond op 13 oktober 2026 · 3 bronnen', scenario:'Scenario: herbruikbare bekers',\n    rows:[['Duurzaamheid',52,GREEN,'Sterk positief'],['Financieel',33,ACC,'Positief op termijn'],['Sociaal',46,GREEN,'Positief'],['Omgeving',43,GREEN,'Positief']],\n    btw:[['Meer betrokkenheid op de werkvloer',GREEN,70],['Opdrachten voor Twentse leveranciers',ACC,45],['Minder afval in de regio',GREEN,80],['Jouw Bruto Twentse Waarde',ACC,65]],\n    persp:[['Ecologisch','Sterk onderbouwd','g','Herbruikbare bekers hebben na circa vijftig keer gebruik de laagste milieubelasting. Biobased wordt zelden gecomposteerd.',4],\n      ['Sociaal','Onderbouwd','g','Meedenken over spoelpunten houdt het gebruik stabiel. Uitbesteden aan een regionale wascentrale levert lokaal werk op.',3],\n      ['Bestuurlijk','Beperkt onderbouwd','p','Wie eigenaar is van beheer en spoelen, bepaalt of het werkt. Hier is weinig onderzoek naar.',2],\n      ['Financieel','Deels onderbouwd','p','Aanschaf en spoelcapaciteit drukken het eerste jaar. De terugverdientijd is niet onderzocht voor jouw situatie.',3]],\n    clash:[['Gemak vs. impact','Wegwerp is makkelijker voor gasten en flexwerkers. Herbruikbaar vraagt discipline van iedereen.'],['Zelf doen vs. uitbesteden','Zelf spoelen geeft controle, uitbesteden geeft lokaal werk maar maakt je afhankelijk van een leverancier.']],\n    open:['Hoeveel medewerkers werken op flexplekken? Dat bepaalt het rendement.','De kosten van een wascentrale zijn niet onderzocht. Vraag offertes op.'],\n    total:3, cin:1},\n  textiel:{title:'Circulair textielbedrijf Enschede', meta:'Analyse afgerond op 8 oktober 2026 · 12 bronnen', scenario:'Scenario: mechanische recycling',\n    rows:[['Duurzaamheid',52,GREEN,'Sterk positief'],['Financieel',33,ACC,'Positief op termijn'],['Sociaal',46,GREEN,'Positief'],['Omgeving',43,GREEN,'Positief']],\n    btw:[['Meer betrokkenheid op de werkvloer',GREEN,70],['Opdrachten voor Twentse leveranciers',ACC,45],['Minder afval in de regio',GREEN,80],['Jouw Bruto Twentse Waarde',ACC,65]],\n    persp:[['Ecologisch','Sterk onderbouwd','g','Mechanische textielrecycling vermindert grondstofverbruik met 40–60%. Past in de Twentse traditie van circulaire maakindustrie.',4],\n      ['Sociaal','Onderbouwd','g','120–180 banen, waarvan 40% MBO-niveau. Versterkt de arbeidsmarkt in een regio met technisch opgeleiden.',3],\n      ['Bestuurlijk','Beperkt onderbouwd','p','Vergunningentraject voor chemische recycling is complex. Doorlooptijden in Twente zijn 2–3 jaar. Geen bestuurlijke toezeggingen gevonden.',2],\n      ['Financieel','Deels onderbouwd','p','Investering van 10 miljoen met terugverdientijd van 7 jaar (schatting). Subsidieafhankelijkheid vormt risico.',3]],\n    clash:[['Concurrentie vs. samenwerking','Bestaande textielspelers zien mogelijk een concurrent. Zonder samenwerking mis je draagvlak en kennisdeling.'],['Snelheid vs. zorgvuldigheid','De markt groeit snel. Maar vergunningen en draagvlak vragen tijd. Te snel handelen ondermijnt langetermijnwaarde.']],\n    open:['De terugverdientijd is een schatting; er is geen onderzoek naar jouw businesscase.','Bestuurlijke steun is niet onderzocht. Ga vroeg in gesprek met de gemeente.'],\n    total:12, cin:8}\n};\n\nconst RDOCS = [\n  {id:'r1', title:'Van wegwerp naar herbruikbaar: gedrag op de werkvloer', inst:'Saxion/UT', year:2024, version:'versie 1 · 2024', cin:true, status:'actief', last:'13 okt 2026',\n    uses:[\n      {id:'u1', date:'13 okt 2026', topic:'Duurzame koffiebekers op kantoor', context:'Een gebruiker vraagt welke duurzame koffiebeker past bij een kantoor met circa 200 medewerkers.', statement:'Of de overstap blijft hangen, hangt vooral af van je mensen: waar medewerkers meedachten over spoelpunten, bleef het gebruik stabiel.', loc:'hfst. 2', quote:'Waar medewerkers zelf meedachten over de inrichting van spoelpunten, bleef het gebruik na een half jaar stabiel.', fb:[]},\n      {id:'u2', date:'9 okt 2026', topic:'Herbruikbare verpakkingen in een productiehal', context:'Een gebruiker vraagt hoe je medewerkers meekrijgt bij een overstap naar herbruikbare verpakkingen in een productiehal.', statement:'Betrek medewerkers bij de inrichting; dan blijft het gebruik na een half jaar stabiel, ook in productieomgevingen.', loc:'hfst. 2', quote:'Waar medewerkers zelf meedachten over de inrichting van spoelpunten, bleef het gebruik na een half jaar stabiel.',\n        fb:[{who:'Jij', date:'9 okt', label:'Nuance ontbreekt', text:'Het onderzoek is gedaan in kantooromgevingen. Voor productiehallen is het niet onderzocht; dat moet Kiek erbij zeggen.', status:'Verwerkt', reply:'Dank je. We hebben de bronbeschrijving aangevuld met de onderzochte context. Kiek noemt die beperking nu bij vergelijkbare vragen.', change:'bronbeschrijving aangevuld op 11 okt'},\n            {who:'dr. Iris Kampman', date:'10 okt', label:'Correct gebruikt', text:'De passage ondersteunt de uitspraak over betrokkenheid. De toevoeging over productie is wel te stellig.', status:'Bekeken'}]},\n      {id:'u3', date:'2 okt 2026', topic:'Kosten van een herbruikbaar systeem', context:'Een gebruiker vraagt of een herbruikbaar systeem kosten bespaart.', statement:'Herbruikbaar bespaart op termijn kosten, omdat medewerkers het systeem trouw blijven gebruiken.', loc:'hfst. 2', quote:'Waar medewerkers zelf meedachten over de inrichting van spoelpunten, bleef het gebruik na een half jaar stabiel.',\n        fb:[{who:'Jij', date:'3 okt', label:'Onjuist geïnterpreteerd', text:'Het onderzoek zegt niets over kosten, alleen over gebruik. Deze conclusie hoort niet bij mijn onderzoek.', status:'In behandeling'}]}\n    ]},\n  {id:'r2', title:'Samen scholen: leerlijnen in regionale productieketens', inst:'Saxion', year:2025, version:'versie 2 · 2025', cin:true, status:'vervangen', note:'Versie 2 vervangt versie 1 sinds 1 sep 2026. Oudere antwoorden blijven gekoppeld aan versie 1.', last:'28 sep 2026',\n    uses:[{id:'u4', date:'28 sep 2026', topic:'Scholing bij een nieuwe productielijn', context:'Een gebruiker vraagt hoe je operators voorbereidt op een tweede productielijn.', statement:'Scholing in kleine groepen, tijdens werktijd, geeft de hoogste deelname.', loc:'hfst. 4 · versie 1', quote:'Deelname was het hoogst wanneer scholing in groepen van vier tot zes medewerkers en binnen werktijd plaatsvond.', fb:[]}]},\n  {id:'r3', title:'Draagvlak voor circulaire inkoop bij Twentse gemeenten', inst:'Saxion', year:2026, version:'versie 1 · 2026', cin:false, status:'ongebruikt', uses:[]}\n];\nconst FB_LABELS = ['Correct gebruikt','Nuance ontbreekt','Onjuist geïnterpreteerd','Bron verouderd'];\nconst SUGGESTIONS = ['Mijn businesscase klopt. Maar klopt-ie ook voor Twente?','Wie wordt er beter van dit besluit?','De goedkoopste oplossing. Maar ook de beste?','Wat wil ik later eigenlijk bijdragen?'];\nconst TRUST = [\n  {title:'Waar antwoorden op gebaseerd zijn', text:'Kiek gebruikt publiek beschikbaar onderzoek van onder meer Saxion, de Universiteit Twente en Cinergie Twente. Niet elke vraag wordt door onderzoek beantwoord; dat zegt Kiek dan.'},\n  {title:'Zo controleer je een bron', text:'Klik op een bron in het antwoord of rechts bij Documenten. Je ziet de letterlijke passage, de vindplaats en waarom Kiek die aanhaalt.'},\n  {title:'Wat je beter niet invoert', text:'Vertrouwelijke bedrijfsgegevens, persoonsgegevens en klantinformatie. Kiek werkt voorlopig met publieke bronnen.'},\n  {title:'Wie je gesprek kan zien', text:'Jij. Beheerders kunnen gesprekken inzien voor kwaliteit en feedback. Onderzoekers zien alleen geanonimiseerde fragmenten waarin hun onderzoek is aangehaald.'}\n];\n\nclass Component extends DCLogic {\n  state = { credits:{used:6, bonus:0}, invites:[], inviteEmail:'', inviteTried:false, inviteCopied:false, pubQ:'', _s:0, histF:'Alle', pubF:'Alle', histQ:'', firstRun:!!this.props.firstRun, shareConfirmed:false, exampleSeen:false, obHidden:false, shareFlash:false, rdExtra:[], share:true, shareF:{org:true, expertise:true, email:false}, up:null, role:this.props.role || 'gebruiker', rsDoc:null, rsUse:null, fbDraft:'', fbLabel:null, fbSaved:{}, screen:(this.props.startScreen === 'overzicht' ? 'hist' : this.props.startScreen) || 'gesprek', theme:this.props.theme || 'donker', convs:JSON.parse(JSON.stringify(CONVS)), activeId:'koffie', draft:'', newDraft:'', search:'', generating:false, modal:null, toast:null, w:1500, navOpen:false, sideOpen:false, openPersp:null, profileOpen:false, flash:null, fb:{}, copied:null, hoverDoc:null, reportBusy:false, exporting:false };\n  shareRef = React.createRef(); rootRef = React.createRef(); msgsRef = React.createRef(); inputRef = React.createRef(); newRef = React.createRef();\n\n  componentDidMount(){\n    const el = this.rootRef.current;\n    if (el && el.clientWidth) this.setState({w:el.clientWidth});\n    if (el && window.ResizeObserver){ this.ro = new ResizeObserver(e => this.setState({w:e[0].contentRect.width})); this.ro.observe(el); }\n    this.applyTheme(); this.scrollBottom();\n    let p; try { p = new URLSearchParams(window.location.search); } catch(e) {}\n    if (p && (p.get('rol') || p.get('thema') || p.get('scherm'))) {\n      const rol = p.get('rol'), th = p.get('thema'), sc = p.get('scherm');\n      const patch = {};\n      if (['gebruiker','onderzoeker','beheerder'].includes(rol)) patch.role = rol;\n      if (['donker','licht'].includes(th)) patch.theme = th;\n      if (sc) patch.screen = sc;\n      else if (rol === 'onderzoeker') patch.screen = 'onderzoek';\n      else if (rol === 'beheerder') patch.screen = 'beheer';\n      this.setState(patch, () => this.applyTheme());\n    }\n    if (p && p.get('account')) {\n      const q = (p.get('q') || '').trim(), naam = (p.get('naam') || 'Marloes ten Berge').trim(), parts = naam.split(/\\s+/);\n      this.setState({role:'gebruiker', accName:naam, accInitials:(parts[0][0] + parts[parts.length-1][0]).toUpperCase(), convs: q ? [] : this.state.convs, newDraft:q, screen: q ? 'nieuw' : 'hist'}, () => { if (q) this.startNew(); this.showToast(q ? 'Account aangemaakt. Je gesprek is bewaard.' : 'Account aangemaakt. Welkom bij Kiek.'); });\n    } else if (p && p.get('gast')) {\n      const q = (p.get('q') || '').trim();\n      this.setState({guest:true, role:'gebruiker', convs:[], newDraft:q, screen:'nieuw', acc:{name:'', email:'', tried:false}}, () => { if (q) this.startNew(); });\n    }\n  }\n  componentDidUpdate(pp){\n    if (pp.theme !== this.props.theme && this.props.theme) this.setState({theme:this.props.theme});\n    if (pp.startScreen !== this.props.startScreen && this.props.startScreen) this.setState({screen:this.props.startScreen});\n    if (pp.firstRun !== this.props.firstRun) this.setState({firstRun:!!this.props.firstRun, rdExtra:[], shareConfirmed:false, exampleSeen:false, obHidden:false, rsDoc:null, rsUse:null, ...(this.props.firstRun ? {role:'onderzoeker', screen:'onderzoek'} : {})});\n    if (pp.role !== this.props.role && this.props.role) this.setState({role:this.props.role, screen: this.props.role === 'gebruiker' && this.state.screen === 'onderzoek' ? 'gesprek' : this.state.screen});\n    this.applyTheme();\n  }\n  componentWillUnmount(){ this.ro && this.ro.disconnect(); ['t','tt','ft','ct','rt','et','wt'].forEach(k => clearTimeout(this[k])); }\n  applyTheme(){\n    const el = this.rootRef.current; if (!el) return;\n    const t = THEMES[this.state.theme] || THEMES.donker;\n    Object.keys(t).forEach(k => el.style.setProperty('--'+k, t[k]));\n    document.body.style.background = t.bg;\n  }\n  conv(){ return this.state.convs.find(c => c.id === this.state.activeId) || this.state.convs[0] || {id:'_leeg', title:'Nieuw gesprek', when:'Vandaag', meta:'', docs:[], contacts:[], persp:{Financieel:[],Sociaal:[],Omgeving:[],Governance:[]}, messages:[]}; }\n  scrollBottom(){ requestAnimationFrame(() => { const el = this.msgsRef.current; if (el) el.scrollTop = el.scrollHeight; }); }\n  showToast(msg){ clearTimeout(this.tt); this.setState({toast:msg}); this.tt = setTimeout(() => this.setState({toast:null}), 2400); }\n  go(screen, extra){ this.setState({screen, navOpen:false, sideOpen:false, profileOpen:false, ...(extra||{})}, () => { if (screen === 'gesprek') this.scrollBottom(); if (screen === 'nieuw' && this.newRef.current) this.newRef.current.focus(); }); }\n  openConv(id){ const c = this.state.convs.find(x => x.id === id); this.go(c && c.report && id === 'textiel' ? 'uitslag' : 'gesprek', {activeId:id, openPersp:null}); }\n\n  reply(q, fresh){\n    clearTimeout(this.t);\n    const blocks = fresh\n      ? [{k:'text', segs:['Goed dat je dit effe naast elkaar legt. Ik zoek in het Twentse onderzoek wat hierover bekend is, maar ik mis nog context.']}, {k:'ask', text:'Om hoeveel medewerkers gaat het, en speelt dit op één vestiging of op meer plekken?'}]\n      : [{k:'text', segs:['Daar zegt het onderzoek weinig specifieks over. Wat wel bekend is: betrokkenheid van medewerkers bepaalt of een verandering blijft hangen ', {c:['d3','p1']}, '.']}, {k:'ask', text:'Wil je dat ik dit meeneem in de samenvatting, of eerst verder kijk naar de kosten?'}];\n    this.t = setTimeout(() => {\n      this.setState(s => ({generating:false, convs:s.convs.map(c => c.id === s.activeId ? {...c, messages:[...c.messages, {id:'k'+Date.now(), from:'kiek', blocks}], docs: fresh ? c.docs : Array.from(new Set([...c.docs,'d3'])), contacts: fresh ? c.contacts : (c.contacts.some(x => x[1]==='groen') ? c.contacts : [...c.contacts, ['p','groen']])} : c)}), () => { this.scrollBottom(); if (this.state.guest) { this.setState(s2 => ({guestQ:(s2.guestQ||0)+1}), () => this.scrollBottom()); } });\n    }, 1500);\n  }\n  left(){ const c = this.state.credits; return Math.max(0, 20 - c.used) + c.bonus; }\n  spend(){ this.setState(s => { const c = s.credits; return {credits: c.used < 20 ? {...c, used:c.used+1} : {...c, bonus:Math.max(0,c.bonus-1)}}; }); }\n  send(){\n    const q = this.state.draft.trim(); if (!q || this.state.generating) return;\n    if (this.state.guest && (this.state.guestQ||0) >= 3){ this.scrollBottom(); return; }\n    if (this.left() <= 0){ this.setState({modal:{t:'out'}}); return; }\n    this.spend();\n    this.setState(s => ({draft:'', generating:true, lastQ:q, convs:s.convs.map(c => c.id === s.activeId ? {...c, messages:[...c.messages, {id:'u'+Date.now(), from:'user', text:q}]} : c)}), () => this.scrollBottom());\n    this.reply(q, false);\n  }\n  startNew(){\n    const q = this.state.newDraft.trim(); if (!q) { this.newRef.current && this.newRef.current.focus(); return; }\n    if (this.state.guest && (this.state.guestQ||0) >= 3){ this.setState({screen:'gesprek'}, () => this.scrollBottom()); return; }\n    if (this.left() <= 0){ this.setState({modal:{t:'out'}}); return; }\n    this.spend();\n    const id = 'c'+Date.now();\n    const now = new Date(); const hm = String(now.getHours()).padStart(2,'0')+':'+String(now.getMinutes()).padStart(2,'0');\n    const conv = {id, title: q.length > 46 ? q.slice(0,44).trim()+'…' : q, when:'Vandaag', meta:'Gesprek gestart om '+hm, docs:[], contacts:[], persp:{Financieel:[],Sociaal:[],Omgeving:[],Governance:[]}, messages:[{id:'u'+Date.now(), from:'user', text:q}]};\n    this.setState(s => ({convs:[conv, ...s.convs], activeId:id, newDraft:'', generating:true, lastQ:q, screen:'gesprek', openPersp:null}), () => this.scrollBottom());\n    this.reply(q, true);\n  }\n  stop(){ clearTimeout(this.t); this.setState({generating:false, draft:this.state.lastQ || ''}); this.inputRef.current && this.inputRef.current.focus(); }\n  summarize(){\n    const c = this.conv();\n    if (!c.messages.some(m => m.from === 'kiek') || this.state.generating) { this.showToast('Stel eerst een vraag, dan kan Kiek een verslag maken.'); return; }\n    if (!c.report){ this.setState(s => ({convs:s.convs.map(x => x.id === c.id ? {...x, report:'koffie'} : x)})); }\n    clearTimeout(this.rt);\n    this.go('uitslag', {reportBusy:true});\n    this.rt = setTimeout(() => this.setState({reportBusy:false}), 1300);\n  }\n  finish(){ this.summarize(); this.showToast('Gesprek afgerond. Je kunt altijd verder praten.'); }\n  goToMsg(id){\n    this.setState({modal:null, sideOpen:false, screen:'gesprek', flash:id}, () => {\n      requestAnimationFrame(() => { const c = this.msgsRef.current; const el = c && c.querySelector('[data-msg=\"'+id+'\"]'); if (el) c.scrollTop = el.offsetTop - 24; });\n      clearTimeout(this.ft); this.ft = setTimeout(() => this.setState({flash:null}), 1800);\n    });\n  }\n  copy(m){\n    const txt = (m.blocks||[]).map(b => (b.segs||[]).map(x => typeof x === 'string' ? x : x.co ? COMPANIES[x.co].name : '').join('') || b.text || '').filter(Boolean).join('\\n\\n');\n    try { navigator.clipboard && navigator.clipboard.writeText(txt).catch(() => {}); } catch(e) {}\n    clearTimeout(this.ct); this.setState({copied:m.id}); this.ct = setTimeout(() => this.setState({copied:null}), 1600);\n  }\n  upInit(){ return {step:1, file:null, err:'', cin:true, agree:false, tried:false, meta:{title:'', authors:'', inst:'', year:'', themes:'', version:''}}; }\n  openUpload(){ this.setState({up:this.upInit(), modal:{t:'upload'}}); }\n  upSet(patch){ this.setState(s => ({up:{...s.up, ...patch}})); }\n  upNext(){\n    const u = this.state.up;\n    if (u.step === 1){ if (!u.file || u.file.bad){ this.upSet({err: u.file && u.file.bad ? 'Dit bestandstype wordt niet ondersteund. Lever een PDF of Word-bestand aan.' : 'Kies eerst een bestand.'}); return; } this.upSet({step:2, err:''}); return; }\n    if (u.step === 2){ const req = ['title','authors','inst','year']; if (req.some(k => !u.meta[k].trim())){ this.upSet({tried:true}); return; } this.upSet({step:3, err:''}); return; }\n    if (u.step === 3){ if (!u.agree){ this.upSet({err:'Bevestig dat je dit onderzoek mag delen.'}); return; }\n      const d = {id:'x'+Date.now(), title:u.meta.title, inst:u.meta.inst, year:u.meta.year, version:(u.meta.version || 'versie 1')+' · '+u.meta.year, cin:u.cin, status:'beoordeling', uses:[]};\n      this.setState(s => ({rdExtra:[d, ...s.rdExtra], up:{...s.up, step:4, err:''}})); return; }\n    this.setState({modal:null, up:null}); this.showToast('Onderzoek aangeleverd. Een beheerder controleert de gegevens.');\n  }\n  sendInvite(){\n    const e = this.state.inviteEmail.trim();\n    if (!/^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$/.test(e)){ this.setState({inviteTried:true}); return; }\n    this.setState(s => ({invites:[{email:e, status:'pending'}, ...s.invites], inviteEmail:'', inviteTried:false}));\n    this.showToast('Uitnodiging verstuurd naar '+e+'.');\n  }\n  saveFb(advance){\n    const t = this.state.fbDraft.trim(); if (!t) { this.showToast('Schrijf eerst je feedback.'); return; }\n    const uid = this.state.rsUse; const entry = {who:'Jij', date:'vandaag', label:this.state.fbLabel, text:t, status:'Ontvangen'};\n    const RDx = [...this.state.rdExtra, ...RDOCS].find(d => d.id === this.state.rsDoc); const ix = RDx ? RDx.uses.findIndex(u => u.id === uid) : -1; const nxt = advance && RDx && RDx.uses[ix+1];\n    this.setState(s => ({fbSaved:{...s.fbSaved, [uid]:[entry, ...(s.fbSaved[uid]||[])]}, fbDraft:'', fbLabel:null, ...(nxt ? {rsUse:nxt.id} : {})}), () => { if (nxt){ const sc = this.shareRef.current ? null : null; const main = this.rootRef.current && this.rootRef.current.querySelector('main [style*=\"overflow:auto\"]'); if (main) main.scrollTop = 0; } });\n    this.showToast(nxt ? 'Feedback opgeslagen. Volgend gebruiksmoment.' : 'Feedback opgeslagen. Een beheerder bekijkt het.');\n  }\n  setFb(id, v){ const cur = this.state.fb[id]; this.setState(s => ({fb:{...s.fb, [id]: cur === v ? null : v}})); if (cur !== v) this.showToast(v === 'up' ? 'Bedankt, feedback opgeslagen.' : 'Feedback opgeslagen. Een beheerder bekijkt dit antwoord.'); }\n\n  renderVals(){\n    const s = this.state, conv = this.conv(), T = THEMES[s.theme] || THEMES.donker;\n    const narrowNav = s.w < 820, narrowSide = s.w < 1000, compactSide = !narrowSide && s.w < 1240;\n    const isG = s.screen === 'gesprek', isU = s.screen === 'uitslag';\n    const sideScreen = isG || isU;\n\n    const docIds = conv.docs || [];\n    const num = d => docIds.indexOf(d) + 1;\n    const ansNo = {}; let n = 0; conv.messages.forEach(m => { if (m.from === 'kiek') ansNo[m.id] = ++n; });\n    const usedIn = {}, usedAll = {}, msgCites = {};\n    conv.messages.forEach(m => (m.blocks||[]).forEach(b => (b.segs||[]).forEach(x => { if (!x || !x.c) return; const d = x.c[0];\n      if (!usedIn[d]) usedIn[d] = m.id; usedAll[d] = usedAll[d] || []; if (!usedAll[d].includes(m.id)) usedAll[d].push(m.id);\n      msgCites[m.id] = msgCites[m.id] || []; if (!msgCites[m.id].some(c => c[0] === d)) msgCites[m.id].push(x.c); })));\n    const numStyle = (d, hot) => ({numBg: hot ? ACC : 'transparent', numColor: hot ? '#FFFFFF' : T.text});\n    const openDoc = (d, p) => this.setState({modal:{t:'doc', d, p: p || Object.keys(DOCS[d].passages)[0] || null}});\n\n    const segOff = T.segOff;\n    const messages = conv.messages.map(m => m.from === 'user'\n      ? {id:m.id, isUser:true, isKiek:false, who:'Jij', align:'flex-end', text:m.text, flash: s.flash === m.id ? '0 0 0 2px '+ACC : 'none', blocks:[]}\n      : {id:m.id, isUser:false, isKiek:true, who:'Kiek', align:'flex-start', flash: s.flash === m.id ? '0 0 0 2px '+ACC : 'none',\n        copyLabel: s.copied === m.id ? 'Gekopieerd' : 'Kopieer antwoord', isCopied: s.copied === m.id, notCopied: s.copied !== m.id, onCopy:() => this.copy(m),\n        upFill: s.fb[m.id] === 'up' ? 'currentColor' : 'none', downFill: s.fb[m.id] === 'down' ? 'currentColor' : 'none',\n        upOn: s.fb[m.id] === 'up', downOn: s.fb[m.id] === 'down', upBg: s.fb[m.id] === 'up' ? T.surface2 : 'none', downBg: s.fb[m.id] === 'down' ? T.surface2 : 'none',\n        onUp:() => this.setFb(m.id,'up'), onDown:() => this.setFb(m.id,'down'),\n        hasSources: !!(msgCites[m.id] && msgCites[m.id].length),\n        sources:(msgCites[m.id]||[]).map(([d,p]) => { const doc = DOCS[d]; const hot = s.hoverDoc === d; const ns = numStyle(d, hot); return {n:num(d), title:doc.title, meta:[doc.author && !doc.cin ? doc.author : null, doc.inst, doc.year].filter(Boolean).join(' · '), cin:!!doc.cin,\n          locLabel: doc.passages[p] ? ' · '+doc.passages[p].loc : '', numBg: ns.numBg, numColor: ns.numColor, ring: doc.cin ? 'none' : 'inset 0 0 0 0px transparent',\n          onClick:() => openDoc(d, p), onEnter:() => this.setState({hoverDoc:d}), onLeave:() => this.setState({hoverDoc:null})}; }),\n        blocks:(m.blocks||[]).map(b => ({\n          isText:b.k==='text', isAsk:b.k==='ask', isAlts:b.k==='alts', isImpact:b.k==='impact', isBtw:b.k==='btw', isCard:b.k==='card',\n          text:b.text, basis:b.basis, scenario:b.scenario,\n          segs:(b.segs||[]).map(x => {\n            if (typeof x === 'string') return {isText:true, isCite:false, isCo:false, text:x};\n            if (x.c){ const d = DOCS[x.c[0]]; const cin = !!d.cin; const hot = s.hoverDoc === x.c[0];\n              return {isText:false, isCite:true, isCo:false, label: cin ? num(x.c[0])+' · Cinergie Twente' : String(num(x.c[0])), aria:'Bekijk bron '+num(x.c[0])+': '+d.title, title:d.title+' ('+d.inst+', '+d.year+')',\n                bg: cin ? (hot ? 'rgba(112,233,162,0.3)' : 'rgba(112,233,162,0.14)') : (hot ? ACC : 'transparent'), color: cin ? OK : (hot ? '#FFFFFF' : T.text), ring: cin ? 'none' : 'inset 0 0 0 1px '+ACC,\n                onClick:() => openDoc(x.c[0], x.c[1]), onEnter:() => this.setState({hoverDoc:x.c[0]}), onLeave:() => this.setState({hoverDoc:null})}; }\n            return {isText:false, isCite:false, isCo:true, text:COMPANIES[x.co].name, onClick:() => this.setState({modal:{t:'co', id:x.co}})};\n          }),\n          alts: b.k==='alts' ? ALTS.map(a => ({name:a.name, count:a.n+' onderzoeken', onClick:() => openDoc(a.doc, a.pass),\n            points:a.points.map(([mk, t]) => ({mark: mk === '+' ? '✓' : '−', color: mk === '+' ? OK : BAD, sr: mk === '+' ? 'Voordeel: ' : 'Aandachtspunt: ', text:t})),\n            segs:[0,1,2,3].map(i => ({bg: i < a.n ? ACC : segOff}))})) : [],\n          rows:(b.rows||[]).map(([label,p,color,verdict]) => ({label, pct:p+'%', color, verdict})),\n          items:(b.items||[]).map(([label,color,p]) => ({label, color, dash:(2*Math.PI*34*(p||0)/100).toFixed(1)+' 999', aria:label+': '+(p||0)+'%'}))\n        }))});\n\n    const q = s.search.trim().toLowerCase();\n    const recentList = s.convs.filter(c => !q || c.title.toLowerCase().includes(q)).slice(0, 5);\n    const recent = recentList.map(c => ({title:c.title, when:c.when, color: sideScreen && c.id === s.activeId ? T.text : T.muted, bg: sideScreen && c.id === s.activeId ? T.navActive : 'none', onClick:() => this.openConv(c.id)}));\n\n    const isR = s.role === 'onderzoeker', isA = s.role === 'beheerder';\n    const menuDef = [['Gesprekken','gesprek','isChat'], ...(isR ? [['Mijn onderzoeken','onderzoek','isBook']] : []), ...(isA ? [['Beheer','beheer','isBars']] : [])];\n    const activeKey = s.screen === 'beheer' ? 'beheer' : s.screen === 'pub' ? 'pub' : s.screen === 'hist' ? 'gesprek' : s.screen === 'overzicht' ? 'overzicht' : s.screen === 'onderzoek' ? 'onderzoek' : null;\n    const RSRC = s.firstRun ? [] : RDOCS;\n    const usedCount = [...s.rdExtra, ...RSRC].reduce((a,d) => a + d.uses.length, 0);\n    const menu = menuDef.map(([label,key,icon]) => { const on = key === activeKey; const badge = key === 'onderzoek' ? usedCount : key === 'beheer' ? 6 : 0; return {label, hasBadge: badge > 0, badge, aria: badge ? label+(key === 'beheer' ? ', '+badge+' open acties' : ', '+badge+' keer aangehaald') : label, isGrid:icon==='isGrid', isChat:icon==='isChat', isBook:icon==='isBook', isBars:icon==='isBars', isClock:icon==='isClock',\n      bg: on ? T.navActive : 'transparent', color: on ? T.text : T.muted, iconColor: on ? ACC : T.muted, font: '400 16px/1.4 var(--font-body)',\n      onClick:() => key === 'beheer' ? this.go('beheer') : key === 'onderzoek' ? this.go('onderzoek', {rsDoc:null, rsUse:null}) : key === 'overzicht' ? this.go('overzicht') : key === 'gesprek' ? this.go('hist') : key === 'pub' ? this.go('pub') : this.go('hist')}; });\n\n    const persp = conv.persp || {};\n    const perspRows = PERSPECTIVES.map(p => { const items = persp[p] || []; const open = s.openPersp === p; return {label:p, lower:p.toLowerCase(), count: items.length ? items.length+'x' : '-', open, empty: !items.length, bg: open ? T.navHover : 'none',\n      onClick:() => this.setState({modal:{t:'persp', p}}), items: items.map(([text, mid]) => ({text, no: ansNo[mid] || '', onClick:() => this.goToMsg(mid)}))}; });\n\n    const docs = docIds.map(d => { const doc = DOCS[d]; const ns = numStyle(d, s.hoverDoc === d); const ua = (usedAll[d]||[]).map(mid => ansNo[mid]).filter(Boolean); return {n:num(d), numBg: ns.numBg === 'transparent' ? T.surface2 : ns.numBg, numColor: ns.numColor === T.text ? ACC : ns.numColor, hasUsed: ua.length > 0, usedLabel: ua.length ? 'Gebruikt in antwoord '+ua.join(' en ') : '', title:doc.title, meta:[doc.author && doc.author !== 'Onderzoeksteam Cinergie Twente' ? doc.author : null, doc.inst, doc.year].filter(Boolean).join(' · '), cin:!!doc.cin,\n      bg: s.hoverDoc === d ? T.navHover : 'transparent', onClick:() => openDoc(d), onEnter:() => this.setState({hoverDoc:d}), onLeave:() => this.setState({hoverDoc:null})}; });\n    const contacts = (conv.contacts || []).filter(([t,id]) => !(t === 'p' && id === 'groen' && !s.share)).map(([t, id]) => t === 'p'\n      ? {name:PEOPLE[id].name, role:PEOPLE[id].role, isPerson:true, isCompany:false, onClick:() => this.setState({modal:{t:'person', id}})}\n      : {name:COMPANIES[id].name, role:COMPANIES[id].role, isPerson:false, isCompany:true, onClick:() => this.setState({modal:{t:'co', id}})});\n\n    const R = REPORTS[conv.report || 'koffie'];\n    const chip = k => k === 'g' ? {chipBg:'rgba(112,233,162,0.1)', chipColor:OK} : {chipBg:'rgba(243,136,255,0.1)', chipColor:PINK};\n    const report = {title:R.title, meta:R.meta, scenario:R.scenario, total:R.total, cin:R.cin, open:R.open,\n      rows:R.rows.map(([label,p,color,verdict]) => ({label, pct:p+'%', color, verdict})), btw:R.btw.map(([label,color,p]) => ({label, color, dash:(2*Math.PI*34*(p||0)/100).toFixed(1)+' 999', aria:label+': '+(p||0)+'%'})),\n      persp:R.persp.map(([name,level,k,text,cnt]) => ({name, level, text, count:cnt+' onderzoeken', ...chip(k), segs:[0,1,2,3].map(i => ({bg: i < cnt ? ACC : segOff}))})),\n      clash:R.clash.map(([title,text]) => ({title, text})),\n      totalSegs:[0,1,2,3,4].map(i => ({bg: i < Math.max(1, Math.round(R.total/2.4)) ? ACC : segOff}))};\n\n    const stC = st => st === 'Verwerkt' ? ['rgba(112,233,162,0.12)', OK] : st === 'In behandeling' ? ['rgba(125,128,255,0.14)', ACC] : st === 'Vervangen' ? ['rgba(243,136,255,0.12)', PINK] : [T.surface2, T.muted];\n    const allFb = u => [...(s.fbSaved[u.id]||[]), ...u.fb];\n    const ALLR = [...s.rdExtra, ...RSRC];\n    const obStepsDef = [\n      {done: s.rdExtra.length > 0, title:'Lever je eerste onderzoek aan', text:'Upload een publicatie en controleer de gegevens. Een beheerder kijkt mee voordat Kiek het mag gebruiken.', btn:'Onderzoek aanleveren', primary:true, go:() => this.openUpload()},\n      {done: s.shareConfirmed, title:'Bepaal of gebruikers je mogen benaderen', text:'Kies of je naam en contactgegevens verschijnen als Kiek naar jouw onderzoek verwijst.', btn:'Instellen', go:() => { const el = this.shareRef.current; const sc = el && el.closest('[style*=\"overflow:auto\"]'); if (el && sc) sc.scrollTop = el.offsetTop - 24; this.setState({shareFlash:true}); clearTimeout(this.sf); this.sf = setTimeout(() => this.setState({shareFlash:false}), 1600); }},\n      {done: s.exampleSeen, title:'Zie hoe Kiek je onderzoek gebruikt', text:'Bekijk een voorbeeld van wat je straks ziet: de vraag, wat Kiek zei en de passage uit jouw onderzoek.', btn:'Bekijk voorbeeld', go:() => this.setState({exampleSeen:true, modal:{t:'example'}})}\n    ];\n    const obDone = obStepsDef.filter(x => x.done).length;\n    const rsDocs = ALLR.map(d => { const fbs = d.uses.flatMap(u => allFb(u).filter(f => f.who === 'Jij')); const open = fbs.filter(f => f.status !== 'Verwerkt').length;\n      const st = d.status === 'vervangen' ? 'Vervangen door versie 2' : d.status === 'ongebruikt' ? 'Nog niet gebruikt' : d.status === 'beoordeling' ? 'Wacht op beoordeling' : 'Actief'; const c = [T.surface2, T.muted];\n      return {title:d.title, meta:d.inst+' · '+d.year+' · '+d.version, cin:d.cin, status:st, stBg:c[0], stColor:c[1],\n        usage: d.uses.length ? 'Aangehaald in '+d.uses.length+(d.uses.length === 1 ? ' antwoord' : ' antwoorden') : 'Nog niet aangehaald',\n        fbLine: fbs.length ? fbs.length+' keer feedback gegeven'+(open ? ' · '+open+' open' : '') : (d.last ? 'Laatst gebruikt '+d.last : 'Beschikbaar in de kennisbank'),\n        onClick:() => this.setState({rsDoc:d.id, rsUse: d.uses[0] ? d.uses[0].id : null, fbDraft:'', fbLabel:null})}; });\n    const totalUses = ALLR.reduce((a,d) => a + d.uses.length, 0);\n    const myOpen = ALLR.flatMap(d => d.uses.flatMap(u => allFb(u).filter(f => f.who === 'Jij' && f.status !== 'Verwerkt'))).length;\n    const rsStats = [{n:ALLR.length, label:'gekoppelde documenten'},{n:totalUses, label:'keer aangehaald door Kiek'},{n:myOpen, label:'feedback nog in behandeling'}];\n    const RD = ALLR.find(d => d.id === s.rsDoc);\n    const rsWide = s.w >= 1000;\n    const rsRows = ALLR.map(d => { const fbs = d.uses.flatMap(u => allFb(u).filter(f => f.who === 'Jij')); const open = fbs.filter(f => f.status !== 'Verwerkt').length;\n      return {title:d.title, meta:d.inst+' · '+d.year+' · '+d.version, cin:d.cin,\n        note: d.status === 'vervangen' ? 'Vervangen door versie 2. Oudere antwoorden blijven gekoppeld aan versie 1.' : d.status === 'beoordeling' ? 'Wacht op beoordeling door een beheerder.' : '', hasNote: d.status === 'vervangen' || d.status === 'beoordeling',\n        count: d.uses.length ? d.uses.length+'×' : '–', countColor: d.uses.length ? T.text : T.muted,\n        countSub: d.uses.length ? 'laatst '+d.last : d.status === 'beoordeling' ? 'nog niet beschikbaar' : 'nog niet aangehaald',\n        fb: (rsWide ? '' : 'Feedback: ')+(open ? open+' open' : fbs.length ? 'afgehandeld' : 'nog niet gegeven'), fbColor: open ? ACC : T.muted,\n        onClick:() => this.setState({rsDoc:d.id, rsUse: d.uses[0] ? d.uses[0].id : null, fbDraft:'', fbLabel:null})}; });\n    const rsSummary = ALLR.length+' onderzoeken · '+totalUses+' keer aangehaald door Kiek'+(myOpen ? ' · '+myOpen+' feedback in behandeling' : '');\n    const SF = s.shareF;\n    const shareFields = [['Naam en functie',null],['Organisatie','org'],['Expertise','expertise'],['E-mailadres','email']].map(([label,k]) => { const on = k ? !!SF[k] : true;\n      return {label, on, locked:!k, cursor: k ? 'pointer' : 'default', boxBg: on ? ACC : 'transparent', boxRing: on ? 'none' : 'inset 0 0 0 1.5px '+T.muted, onClick:() => k && this.setState({shareF:{...SF, [k]:!SF[k]}, shareConfirmed:true})}; });\n    const sharePreview = ['Onderzoeker · Cinergie Twente', ...(SF.org ? ['Saxion'] : []), ...(SF.expertise ? ['Gedragsverandering op de werkvloer'] : []), ...(SF.email ? ['f.groen@saxion.nl'] : [])];\n    let rs = {}, use = {};\n    if (RD){\n      const U = RD.uses.find(u => u.id === s.rsUse) || RD.uses[0];\n      rs = {title:RD.title, meta:RD.inst+' · '+RD.year+' · '+RD.version, cin:RD.cin, note:RD.note || '', noUses:!RD.uses.length, hasUses:!!RD.uses.length,\n        uses:RD.uses.map(u => { const mine = allFb(u).filter(f => f.who === 'Jij'); const st = mine.length ? mine[0].status : 'Nog niet beoordeeld'; const c = stC(mine.length ? st : '');\n          const on = U && u.id === U.id; const open = mine.length && st !== 'Verwerkt'; return {date:u.date, topic:u.topic, status:st, stBg:c[0], stColor:c[1], on, pillBg: on ? ACC : T.surface, pillColor: on ? '#FFFFFF' : T.text, hasDot: !mine.length || open, dot: open ? (on ? '#FFFFFF' : ACC) : (on ? '#FFFFFF' : T.muted), onClick:() => this.setState({rsUse:u.id, fbDraft:'', fbLabel:null})}; })};\n      if (U){ const fb = allFb(U); const idx = RD.uses.indexOf(U); const mineU = fb.filter(f => f.who === 'Jij'); const stU = mineU.length ? mineU[0].status : 'Nog niet beoordeeld'; const cU = stC(mineU.length ? stU : '');\n        const goIdx = i => { const t = RD.uses[i]; if (t) this.setState({rsUse:t.id, fbDraft:'', fbLabel:null}); };\n        use = {pos:idx+1, total:RD.uses.length, topic:U.date+' · '+U.topic, status:stU, stBg:cU[0], stColor:cU[1],\n          prev:() => goIdx(idx-1), next:() => goIdx(idx+1), prevVis: idx > 0 ? 'visible' : 'hidden', nextVis: idx < RD.uses.length-1 ? 'visible' : 'hidden', hasNext: idx < RD.uses.length-1, saveLabel: idx < RD.uses.length-1 ? 'Opslaan en volgende' : 'Feedback opslaan', prevOp: idx > 0 ? 1 : 0.35, nextOp: idx < RD.uses.length-1 ? 1 : 0.35,\n          context:U.context, statement:U.statement, loc:U.loc, quote:U.quote, version:'Bronversie: '+(RD.status === 'vervangen' ? 'versie 1 · 2024 (destijds gebruikt)' : RD.version),\n        citeLabel: RD.cin ? 'Cinergie Twente' : 'Bron', citeBg: RD.cin ? 'rgba(112,233,162,0.14)' : T.surface2, citeColor: RD.cin ? OK : ACC,\n        noFb: !fb.length, fb: fb.map(f => { const c = stC(f.status); return {who:f.who, date:f.date, label:f.label || '', hasLabel:!!f.label, text:f.text, status:f.status, stBg:c[0], stColor:c[1], reply:f.reply || '', hasReply:!!f.reply, change:f.change || '', hasChange:!!f.change}; })}; }\n    }\n    const THEMES_OF = {d1:'circulaire inkoop, afval', d2:'levenscyclus, materialen', d3:'gedrag, werkvloer', pub1:'circulaire ketens, maakindustrie', pub2:'brede welvaart, overheid', pub3:'arbeidsmarkt, verduurzaming'};\n    const convUse = {}; s.convs.forEach(c => (c.docs||[]).forEach(d => { convUse[d] = (convUse[d]||0) + 1; }));\n    const pq = s.pubQ.trim().toLowerCase();\n    const pubAll = Object.keys(DOCS).map(id => ({id, ...DOCS[id], themes: DOCS[id].themes || THEMES_OF[id] || ''}));\n    const pubMatch = pubAll.filter(d => (s.pubF === 'Alle' || (s.pubF === 'Cinergie Twente' ? d.cin : d.inst.includes(s.pubF))) && (!pq || (d.title+' '+(d.author||'')+' '+d.themes+' '+d.inst).toLowerCase().includes(pq)));\n    const pubList = pubMatch.map(d => ({title:d.title, meta:[d.author && !d.cin && d.author !== 'Niet vermeld' ? d.author : null, d.inst, d.year, d.version].filter(Boolean).join(' · '), cin:!!d.cin, themes: d.themes ? \"Thema's: \"+d.themes : '',\n      used: convUse[d.id] ? 'Gebruikt in '+convUse[d.id]+(convUse[d.id] === 1 ? ' gesprek van jou' : ' gesprekken van jou') : '', usedColor: ACC, onClick:() => this.setState({modal:{t:'doc', d:d.id, p: Object.keys(d.passages)[0] || null}})}));\n    const pubFilters = ['Alle','Cinergie Twente','Saxion','Universiteit Twente','ROC van Twente'].map(l => { const on = s.pubF === l; return {label:l, on, bg: on ? ACC : T.surface, color: on ? '#FFFFFF' : T.text, onClick:() => this.setState({pubF:l})}; });\n    const hq = s.histQ.trim().toLowerCase();\n    const histOrder = ['Vandaag','Gisteren','Eerder'];\n    const histGroups = histOrder.map(label => ({label, items: s.convs.filter(c => (histOrder.includes(c.when) ? c.when : 'Eerder') === label && (!hq || c.title.toLowerCase().includes(hq) || c.messages.some(m => (m.text||'').toLowerCase().includes(hq)))).map(c => {\n      const answers = c.messages.filter(m => m.from === 'kiek').length; const done = !!c.report && c.id !== 'koffie'; if (s.histF === 'In gesprek' && done) return null; if (s.histF === 'Met verslag' && !c.report) return null;\n      return {title:c.title, meta:c.meta+' · '+answers+(answers === 1 ? ' antwoord' : ' antwoorden')+' · '+(c.docs||[]).length+' onderzoeken', status: done ? 'Verslag gemaakt' : 'In gesprek', stColor: done ? T.text : ACC, hasReport:!!c.report,\n        onOpen:() => this.go('gesprek', {activeId:c.id}), onReport:() => this.go('uitslag', {activeId:c.id, reportBusy:false})}; }).filter(Boolean)})).filter(g => g.items.length);\n    const histFilters = ['Alle','In gesprek','Met verslag'].map(l => { const on = s.histF === l; return {label:l, on, bg: on ? T.navActive : 'transparent', color: on ? T.text : T.muted, onClick:() => this.setState({histF:l})}; });\n    let modal = {}, modalOpen = !!s.modal;\n    if (s.modal){\n      const m = s.modal;\n      if (m.t === 'invite'){ modal = {isInvite:true, title:'Nodig iemand uit', meta:'Voor elke uitnodiging die leidt tot toegang krijg je 100 extra vragen.', footnote:'Wie je uitnodigt, vraagt zelf toegang aan. Een beheerder beoordeelt de aanvraag. Bonusvragen vervallen niet aan het eind van de dag.'}; }\n      else if (m.t === 'account'){ modal = {isAccount:true, title:'Wil je verder chatten?', meta:'Maak een account aan zodat je gesprek bewaard blijft.', footnote:'Je gesprek van zojuist wordt direct aan je nieuwe account gekoppeld.'}; }\n      else if (m.t === 'out'){ modal = {isOut:true, title:'Je vragen voor vandaag zijn op', meta:'', footnote:''}; }\n      else if (m.t === 'example'){ modal = {isExample:true, title:'Zo ziet een gebruiksmoment eruit', meta:'Voorbeeld met fictieve gegevens', footnote:''}; }\n      else if (m.t === 'doc'){ const d = DOCS[m.d]; const keys = Object.keys(d.passages); const p = m.p && d.passages[m.p];\n        modal = {isDoc:true, title:d.title, meta:[d.inst, d.year].join(' · '), cin:!!d.cin, hasPassages:!!p, noPassages:!p,\n          loc:p ? p.loc+' · '+d.version : '', before:p ? p.before : '', quote:p ? p.quote : '', after:p ? p.after : '', why:p ? p.why : '',\n          passTabs: keys.map((k,i) => ({label:'Passage '+(i+1), bg: k === m.p ? ACC : T.surface, color: k === m.p ? '#FFFFFF' : T.text, onClick:() => this.setState({modal:{...m, p:k}})})),\n          hasUsedIn: !!usedIn[m.d] && isG === false ? true : !!usedIn[m.d], usedNo: ansNo[usedIn[m.d]] || '', goUsed:() => this.goToMsg(usedIn[m.d]),\n          author: d.author || 'Niet vermeld in de aangeleverde gegevens', supplier:d.supplier, version:d.version,\n          openOriginal:() => this.showToast('Origineel document opent in een nieuw venster (prototype).'), footnote:DEMO}; }\n      else if (m.t === 'person'){ const p = PEOPLE[m.id]; modal = {isPerson:true, title:p.name, meta:p.role, org:p.org, expertise:p.expertise, linked:p.linked, route:p.route, footnote:'Demonstratiegegevens: deze persoon is fictief. Kiek toont alleen gegevens die voor weergave zijn aangeleverd.'}; }\n      else if (m.t === 'co'){ const c = COMPANIES[m.id]; modal = {isCompany:true, title:c.name, meta:'Bedrijf genoemd in dit gesprek', kvk:c.kvk, sector:c.sector, address:c.address, phone:c.phone, website:c.website, footnote:'Demonstratiegegevens: dit bedrijf en de KVK-gegevens zijn fictief.'}; }\n      else if (m.t === 'persp'){ const items = persp[m.p] || [];\n        modal = {isPersp:true, title:m.p, meta: items.length ? items.length+(items.length === 1 ? ' uitspraak' : ' uitspraken')+' in dit gesprek' : 'Nog niet besproken', empty:!items.length,\n          askLabel:'Vraag Kiek naar '+m.p.toLowerCase(), ask:() => this.setState({modal:null, screen:'gesprek', draft:'Wat betekent dit voor het perspectief '+m.p.toLowerCase()+'?'}, () => this.inputRef.current && this.inputRef.current.focus()),\n          items: items.map(([text, mid]) => ({text, no:ansNo[mid] || '', onClick:() => this.goToMsg(mid),\n            srcs:(msgCites[mid]||[]).map(([d,pp]) => ({label: DOCS[d].cin ? num(d)+' · Cinergie Twente' : num(d)+' · '+DOCS[d].title, bg: DOCS[d].cin ? 'rgba(112,233,162,0.14)' : T.surface2, color: DOCS[d].cin ? OK : ACC, onClick:() => openDoc(d, pp)})),\n            hasSrc: !!(msgCites[mid]||[]).length})),\n          footnote:'Kwalitatieve inschatting op basis van het gesprek en de aangehaalde onderzoeken. Geen berekende score.'}; }\n      else if (m.t === 'upload' && s.up){ const u = s.up; const labels = ['Bestand','Gegevens','Bevestigen'];\n        const fd = [['Titel','title','Titel van het onderzoek'],['Auteur(s)','authors','Bijv. F. Groen, I. Kampman'],['Instelling','inst','Bijv. Saxion'],['Publicatiejaar','year','Bijv. 2026'],[\"Thema's (optioneel)\",'themes','Bijv. circulaire inkoop, gedrag'],['Versie (optioneel)','version','Bijv. versie 1']];\n        const ck = on => ({box: on ? ACC : 'transparent', ring: on ? 'none' : 'inset 0 0 0 1.5px '+T.muted});\n        modal = {isUpload:true, title: u.step === 4 ? 'Gelukt' : 'Onderzoek aanleveren', meta: u.step < 4 ? 'Stap '+u.step+' van 3' : '', footnote:'',\n          up:{s1:u.step===1, s2:u.step===2, s3:u.step===3, s4:u.step===4,\n            steps: labels.map((l,i) => ({label:l, bar: i < Math.min(u.step,3) ? ACC : T.segOff, color: i+1 === u.step ? T.text : T.muted})),\n            fileLabel: u.file ? u.file.name : 'Kies een bestand', fileSub: u.file ? u.file.size : 'of sleep het hierheen', dropRing: u.file && !u.file.bad ? ACC : T.hair,\n            pick:() => this.setState(s2 => ({up:{...s2.up, err:'', file:{name:'draagvlak-circulaire-inkoop-2026.pdf', size:'PDF · 2,4 MB', bad:false}, meta:{title:'Draagvlak voor circulaire inkoop in Twentse maakbedrijven', authors:'F. Groen', inst:'Saxion', year:'', themes:'circulaire inkoop, draagvlak', version:'versie 1'}}})),\n            pickBad:() => this.upSet({file:{name:'interviews-ruwe-data.zip', size:'ZIP · 18 MB', bad:true}, err:'Dit bestandstype wordt niet ondersteund. Lever een PDF of Word-bestand aan.'}),\n            hasErr: !!u.err, err:u.err,\n            fields: fd.map(([label,k,ph]) => { const bad = u.tried && ['title','authors','inst','year'].includes(k) && !u.meta[k].trim(); return {label, value:u.meta[k], ph, bad, ring: bad ? 'inset 0 0 0 1.5px #FF383C' : 'none', onChange:e => { const v = e.target.value; this.setState(s2 => ({up:{...s2.up, meta:{...s2.up.meta, [k]:v}}})); }}; }),\n            cin:u.cin, cinBox:ck(u.cin).box, cinRing:ck(u.cin).ring, toggleCin:() => this.upSet({cin:!u.cin}),\n            agree:u.agree, agreeBox:ck(u.agree).box, agreeRing:ck(u.agree).ring, toggleAgree:() => this.upSet({agree:!u.agree, err:''}),\n            summary:[{k:'Bestand', v:u.file ? u.file.name : ''},{k:'Titel', v:u.meta.title},{k:'Auteur(s)', v:u.meta.authors},{k:'Instelling', v:u.meta.inst+' · '+u.meta.year},{k:'Programma', v:u.cin ? 'Cinergie Twente' : 'Geen'}],\n            back:() => this.upSet({step:Math.max(1,u.step-1), err:''}), backVis: u.step > 1 && u.step < 4 ? 'visible' : 'hidden',\n            next:() => this.upNext(), nextLabel: u.step === 3 ? 'Aanleveren' : u.step === 4 ? 'Sluiten' : 'Volgende'}}; }\n      else if (m.t === 'trust'){ modal = {isTrust:true, title:'Uitleg & vertrouwen', meta:'Kort en eerlijk over hoe Kiek werkt.', footnote:'Kiek draait op Europese AI-modellen. Hosting en verwerking van vertrouwelijke documenten worden nog onderzocht.'}; }\n    }\n\n    const showSideBase = sideScreen;\n    const sideOverlayOn = showSideBase && narrowSide && s.sideOpen;\n    const sideStyle = (narrowSide\n      ? 'position:absolute;top:0;right:0;bottom:0;z-index:30;width:min(372px,100%);background:'+T.bg+';box-shadow:-12px 0 40px rgba(10,8,30,0.35);'\n      : 'width:'+(compactSide ? 300 : 372)+'px;flex-shrink:0;') + 'height:100%;overflow:auto;display:flex;flex-direction:column;gap:24px;padding:'+(narrowSide ? '24px' : '24px 24px 24px 0');\n    const navOverlay = narrowNav && s.navOpen;\n    const navWrapStyle = narrowNav\n      ? 'position:absolute;left:0;top:0;bottom:0;z-index:31;padding:8px;background:'+T.bg+';box-shadow:12px 0 40px rgba(10,8,30,0.35)'\n      : 'padding:8px;flex-shrink:0;height:100%';\n\n    const padX = narrowNav ? 20 : compactSide ? 32 : 48, padR = narrowSide ? (narrowNav ? 20 : 48) : compactSide ? 32 : 48;\n    const hour = new Date().getHours();\n\n    return {\n      rootRef:this.rootRef, msgsRef:this.msgsRef, inputRef:this.inputRef, newRef:this.newRef,\n      showNav: !narrowNav || s.navOpen, navOverlay, navWrapStyle, narrowNav, openNav:() => this.setState({navOpen:true}), closeNav:() => this.setState({navOpen:false}),\n      showInsightBtn: narrowSide && sideScreen, hideInsightBtn: !(narrowSide && sideScreen), headInsightBtn: narrowSide && !narrowNav && sideScreen,\n      showSide: showSideBase && (!narrowSide || s.sideOpen), sideOverlayOn, sideStyle, openSide:() => this.setState({sideOpen:true}), closeSide:() => this.setState({sideOpen:false}),\n      search:s.search, onSearch:e => this.setState({search:e.target.value}), menu, recent, recentEmpty: !recent.length,\n      goOverzicht:() => this.go('hist'), goNieuw:() => this.go('nieuw'),\n      openTrust:() => this.setState({modal:{t:'trust'}, profileOpen:false}),\n      profileOpen:s.profileOpen, toggleProfile:() => this.setState({profileOpen:!s.profileOpen}),\n      themeLabel: s.theme === 'donker' ? 'Donker' : 'Licht', toggleTheme:() => this.setState({theme: s.theme === 'donker' ? 'licht' : 'donker'}),\n      openOnboardingToast:() => { this.setState({profileOpen:false}); this.showToast('De kennismaking staat in het hoofdprototype.'); },\n      logoutToast:() => { this.setState({profileOpen:false}); this.showToast('Uitloggen is uitgeschakeld in dit prototype.'); },\n\n      up: modal.up || {}, openUpload:() => this.openUpload(), rsRows, rsSummary, rsWide, rsRowCols: rsWide ? 'minmax(0,1fr) 150px 130px 20px' : 'minmax(0,1fr) auto',\n      rsVarLijst: ALLR.length > 0 && (this.props.overviewVariant || 'lijst') === 'lijst', rsVarKaarten: ALLR.length > 0 && this.props.overviewVariant === 'kaarten',\n      showOnboard: s.firstRun && !s.obHidden, obCols: s.w < 1100 ? 'minmax(0,1fr)' : 'minmax(0,1fr) 340px',\n      rsH1: s.firstRun && !ALLR.length ? 'Welkom, Femke.' : 'Mijn onderzoeken',\n      rsIntro: s.firstRun && !ALLR.length ? 'Hier zie je straks waar Kiek jouw onderzoek aanhaalt, en kun je aangeven of dat klopt. Je hebt nog niets aangeleverd. Drie stappen en je bent op weg.' : 'Onderzoek dat aan jou is gekoppeld, en waar Kiek het heeft aangehaald. Je ziet alleen geanonimiseerde fragmenten, nooit volledige gesprekken.',\n      obDone, obAllDone: obDone === 3, hideOnboard:() => this.setState({obHidden:true}),\n      obBars: obStepsDef.map(x => ({bg: x.done ? ACC : T.segOff})),\n      obSteps: obStepsDef.map((x,i) => ({n:i+1, done:x.done, todo:!x.done, title:x.title, text:x.text, btn:x.btn, op: x.done ? 0.7 : 1,\n        circleBg: x.done ? ACC : T.surface2, circleColor: x.done ? '#FFFFFF' : ACC,\n        btnBg: x.primary ? ACC : 'transparent', btnColor: x.primary ? '#FFFFFF' : T.text, btnRing: x.primary ? 'none' : 'inset 0 0 0 1px '+ACC, onClick:x.go})),\n      obFlow:[\n        {n:1, title:'Aangeleverd', text:'Je document staat klaar met status \"Wacht op beoordeling\".'},\n        {n:2, title:'Beheerder controleert', text:'Gegevens, rechten en koppeling aan jou worden nagekeken.'},\n        {n:3, title:'Verwerkt en beschikbaar', text:'Kiek kan het gebruiken in nieuwe antwoorden. Je krijgt een e-mail.'},\n        {n:4, title:'Kiek haalt het aan', text:'Elke aanhaling verschijnt hier als gebruiksmoment.'},\n        {n:5, title:'Jij beoordeelt', text:'Je geeft feedback; de beheerder koppelt terug wat ermee gebeurt.'}\n      ],\n      obNotes:['Je ziet alleen geanonimiseerde fragmenten, nooit volledige gesprekken of wie de vraag stelde.','Een aanhaling betekent dat Kiek je onderzoek gebruikte. Het is geen maat voor impact.','Kiek leert niet automatisch van feedback. Een beheerder beslist wat er wordt aangepast.'],\n      exNotes:[{n:1, text:'Je ziet waar Kiek je onderzoek aanhaalde, zonder gegevens van de gebruiker.'},{n:2, text:'Je vergelijkt de uitspraak van Kiek met de letterlijke passage en de bronversie.'},{n:3, text:'Klopt het niet of mist er nuance? Dan schrijf je dat in je eigen woorden. Een label is optioneel.'}],\n      shareRef:this.shareRef, shareRing: s.shareFlash ? 'inset 0 0 0 2px '+ACC : 'none',\n      shareAsk: s.firstRun && !s.shareConfirmed, confirmShare:() => { this.setState({shareConfirmed:true}); this.showToast('Voorkeur opgeslagen.'); },\n      shareOn:s.share, shareOff:!s.share, shareTrack: s.share ? ACC : T.segOff, shareJustify: s.share ? 'flex-end' : 'flex-start',\n      toggleShare:() => { this.setState({share:!s.share, shareConfirmed:true}); this.showToast(s.share ? 'Je contactgegevens worden niet meer getoond.' : 'Je contactgegevens worden getoond bij verwijzingen.'); },\n      shareFields, sharePreview, shareNote: s.share ? 'Kiek toont alleen wat je aanvinkt. Gebruikers worden niet automatisch met je in contact gebracht.' : 'Je kunt dit altijd weer aanzetten.',\n      cr: (() => { const c = s.credits, dl = Math.max(0, 20 - c.used); return {dailyLeft:dl, bonus:c.bonus, hasBonus:c.bonus > 0, pct:(dl/20*100)+'%', barColor: dl <= 3 && !c.bonus ? PINK : T.muted, leftColor: dl <= 3 && !c.bonus ? PINK : T.muted, line: dl+' van 20 vragen over vandaag'+(c.bonus ? ' · +'+c.bonus+' bonus' : ''), tip: 'Nu: '+dl+' dagvragen'+(c.bonus ? ' en '+c.bonus+' bonusvragen' : '')+' over.'}; })(),\n      crHover: !!s.crHover, crHoverOn:() => this.setState({crHover:true}), crHoverOff:() => this.setState({crHover:false}),\n      composerPh: this.left() <= 0 ? 'Je vragen voor vandaag zijn op' : this.left() <= 3 ? 'Waar wil je effe naar kieken? Nog '+this.left()+' vragen vandaag' : 'Waar wil je effe naar kieken?',\n      openInvite:() => this.setState({modal:{t:'invite'}, inviteTried:false}),\n      inviteEmail:s.inviteEmail, onInviteEmail:e => this.setState({inviteEmail:e.target.value}), onInviteKey:e => { if (e.key === 'Enter'){ e.preventDefault(); this.sendInvite(); } },\n      inviteBad: s.inviteTried, inviteRing: s.inviteTried ? 'inset 0 0 0 1.5px #FF383C' : 'none', sendInvite:() => this.sendInvite(),\n      copyLabel: s.inviteCopied ? 'Link gekopieerd' : 'Kopieer uitnodigingslink',\n      copyInvite:() => { try { navigator.clipboard && navigator.clipboard.writeText('https://effekieken.nl/uitnodiging/mb-7k2q').catch(() => {}); } catch(e) {} this.setState({inviteCopied:true}); clearTimeout(this.ic); this.ic = setTimeout(() => this.setState({inviteCopied:false}), 1600); },\n      hasInvites: s.invites.length > 0,\n      invites: s.invites.map((iv, i) => ({email:iv.email, pending: iv.status === 'pending', status: iv.status === 'pending' ? 'Verstuurd, wacht op toegang' : 'Toegang verleend, +100 vragen ontvangen', stColor: iv.status === 'pending' ? T.muted : OK,\n        simulate:() => { this.setState(s2 => ({invites: s2.invites.map((x,j) => j === i ? {...x, status:'done'} : x), credits:{...s2.credits, bonus:s2.credits.bonus + 100}})); this.showToast('+100 vragen toegevoegd.'); }})),\n      isPub: s.screen === 'pub', isHist: s.screen === 'hist',\n      pubQ:s.pubQ, onPubQ:e => this.setState({pubQ:e.target.value}), pubFilters, pubList, pubEmpty: !pubList.length, pubCount: pubList.length === 1 ? '1 publicatie' : pubList.length+' publicaties',\n      histQ:s.histQ, onHistQ:e => this.setState({histQ:e.target.value}), histGroups, histFilters, histEmpty: !histGroups.length,\n      isOnderzoek: s.screen === 'onderzoek', rsList: !RD, rsDetail: !!RD, rsDocs, rsStats, rs, use, rsCols: s.w < 1100 ? 'minmax(0,1fr)' : '280px minmax(0,1fr)',\n      rsBack:() => this.setState({rsDoc:null, rsUse:null}),\n      fbDraft:s.fbDraft, onFbDraft:e => this.setState({fbDraft:e.target.value}), saveFb:() => this.saveFb(false), saveFbNext:() => this.saveFb(true), fbSendOpacity: s.fbDraft.trim() ? 1 : 0.6,\n      fbLabelOpts: FB_LABELS.map(l => { const on = s.fbLabel === l; return {label:l, on, bg: on ? ACC : T.surface2, color: on ? '#FFFFFF' : T.text, onClick:() => this.setState({fbLabel: on ? null : l})}; }),\n      acc: {first:'', last:'', email:'', ...(s.acc||{})},\n      accFirstErr: !!(s.acc && s.acc.tried && !(s.acc.first||'').trim()),\n      accLastErr: !!(s.acc && s.acc.tried && !(s.acc.last||'').trim()),\n      onAccFirst: e => this.setState({acc:{...(s.acc||{}), first:e.target.value}}),\n      onAccLast: e => this.setState({acc:{...(s.acc||{}), last:e.target.value}}),\n      accEmailErr: !!(s.acc && s.acc.tried && !/^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$/.test(s.acc.email)),\n      onAccName: e => this.setState({acc:{...(s.acc||{}), name:e.target.value}}),\n      onAccEmail: e => this.setState({acc:{...(s.acc||{}), email:e.target.value}}),\n      createAccount: e => { e && e.preventDefault && e.preventDefault(); const a = {first:'', last:'', email:'', ...(s.acc||{})};\n        if (!a.first.trim() || !a.last.trim() || !/^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$/.test(a.email)) { this.setState({acc:{...a, tried:true}}); return; }\n        this.setState({guest:false, accName:a.first.trim()+' '+a.last.trim(), accInitials:(a.first.trim()[0]+a.last.trim().split(/\\s+/).pop()[0]).toUpperCase(), modal:null}); this.showToast('Account aangemaakt. Je gesprek is bewaard.'); },\n      ssoGoogle: () => { this.setState({guest:false, accName:'Marloes ten Berge', modal:null}); this.showToast('Account aangemaakt met Google. Je gesprek is bewaard.'); },\n      ssoMicrosoft: () => { this.setState({guest:false, accName:'Marloes ten Berge', modal:null}); this.showToast('Account aangemaakt met Microsoft. Je gesprek is bewaard.'); },\n      guestWall: !!(s.guest && (s.guestQ||0) >= 3 && !s.generating),\n      guestLeftLabel: s.guest && (s.guestQ||0) < 3 ? 'Nog ' + (3 - (s.guestQ||0)) + (3 - (s.guestQ||0) === 1 ? ' vraag' : ' vragen') + ' zonder account' : '',\n      showGuestLeft: !!(s.guest && (s.guestQ||0) < 3),\n      goSignup: () => { const fq = (s.convs.find(c => c.messages.some(m => m.from === 'user')) || {messages:[]}).messages.find(m => m.from === 'user'); window.location.href = SITE_ROOT + 'aanmelden/' + (fq ? '?q=' + encodeURIComponent(fq.text) : ''); },\n      goLogin: () => { window.location.href = SITE_ROOT + 'inloggen/'; },\n      loginInstead: () => { this.setState({guest:false, modal:null, convs:[...s.convs, ...JSON.parse(JSON.stringify(CONVS))]}); this.showToast('Ingelogd. Je gesprek staat bij je gesprekken.'); },\n      person: s.guest ? {initials:'G', name:'Gast', org:'Niet ingelogd'} : s.accName ? {initials:s.accInitials || 'MB', name:s.accName, org:'Nieuw account'} : isA ? {initials:'JV', name:'Joost Veldhuis', org:'Beheerder · Cinergie Twente'} : isR ? {initials:'FG', name:'dr. Femke Groen', org:'Onderzoeker · Cinergie Twente'} : {initials:'MB', name:'Marloes ten Berge', org:'TenBerge Metaalbewerking'},\n      roleLabel: isA ? 'Beheerder' : isR ? 'Onderzoeker' : 'Gebruiker',\n      isBeheer: s.screen === 'beheer' && isA, themeName: s.theme,\n      toggleRole:() => { const r = isA ? 'gebruiker' : isR ? 'beheerder' : 'onderzoeker'; this.setState({role:r, profileOpen:false, screen: r === 'onderzoeker' ? 'onderzoek' : r === 'beheerder' ? 'beheer' : (['onderzoek','beheer'].includes(s.screen) ? 'gesprek' : s.screen)}); },\n      isOverzicht: s.screen === 'overzicht', isNieuw: s.screen === 'nieuw', isGesprek:isG, isUitslag:isU,\n      pagePad: (narrowNav ? '24px ' : '40px ')+padR+'px 48px '+padX+'px', pagePadNarrowTop: '24px '+padR+'px 0 '+padX+'px',\n      headPad: '24px '+padR+'px 0 '+padX+'px', msgsPad: '56px '+padR+'px 200px '+padX+'px', composerPad: '80px '+padR+'px 24px '+padX+'px',\n      greeting: hour < 12 ? 'Goedemorgen.' : hour < 18 ? 'Goedemiddag.' : 'Goedenavond.',\n      dashConvs:[\n        {title:'Circulair textielbedrijf', when:'Vandaag', text:'Analyse afgerond. 4 perspectieven beoordeeld, 12 bronnen gekoppeld.', hasTags:true, tags:[{label:'Ecologisch sterk', bg:T.surface2, color:T.text},{label:'Bestuurlijk onzeker', bg:T.surface2, color:T.text}], onClick:() => this.openConv('textiel')},\n        {title:'Woningbouw Oldenzaal-Zuid', when:'Gisteren', text:'Gesprek loopt. 2 vragen open over ecologische impact bouwfase.', hasTags:true, tags:[{label:'In gesprek', bg:T.surface2, color:T.text}], onClick:() => this.openConv('woning')},\n        {title:'Duurzame koffiebekers', when:'Gisteren', text:'Gesprek loopt. Vier opties vergeleken, impact van herbruikbaar doorgerekend.', hasTags:false, tags:[], onClick:() => this.openConv('koffie')}\n      ],\n      pubs:[['pub1',ACC],['pub2',ACC],['pub3',ACC]].map(([d,color]) => ({title:DOCS[d].title, meta:DOCS[d].inst+' · '+DOCS[d].year, cin:!!DOCS[d].cin, color, onClick:() => openDoc(d)})),\n\n      newDraft:s.newDraft, onNewDraft:e => this.setState({newDraft:e.target.value}), onNewKey:e => { if (e.key === 'Enter' && !e.shiftKey){ e.preventDefault(); this.startNew(); } },\n      startNew:() => this.startNew(), newSendOpacity: s.newDraft.trim() ? 1 : 0.6,\n      suggestions: SUGGESTIONS.map(t => ({text:t, onClick:() => this.setState({newDraft:t}, () => { const el = this.newRef.current; if (el){ el.focus(); el.setSelectionRange(t.length, t.length); } })})),\n\n      convTitle:conv.title, convMeta:conv.meta, messages, convEmpty: !conv.messages.length, generating:s.generating, stop:() => this.stop(),\n      draft:s.draft, onDraft:e => this.setState({draft:e.target.value}), onKey:e => { if (e.key === 'Enter'){ e.preventDefault(); this.send(); } }, send:() => this.send(),\n\n      perspRows, docs, docsEmpty: !docs.length, docCountLabel: docs.length === 1 ? '1 onderzoek' : docs.length ? docs.length+' onderzoeken' : '',\n      contacts, contactsEmpty: !contacts.length,\n      summarize:() => this.summarize(), finish:() => this.finish(), actionOpacity: conv.messages.some(m => m.from === 'kiek') ? 1 : 0.5,\n\n      report, reportBusy:s.reportBusy, reportReady: !s.reportBusy, backToConv:() => this.go('gesprek'),\n      share:() => this.showToast('Deellink gekopieerd.'),\n      exportLabel: s.exporting ? 'PDF wordt gemaakt…' : 'Exporteer PDF',\n      exportPdf:() => { if (s.exporting) return; this.setState({exporting:true}); clearTimeout(this.et); this.et = setTimeout(() => { this.setState({exporting:false}); this.showToast('Gespreksverslag gedownload als PDF (prototype).'); }, 1200); },\n      nextSteps:[\n        {title:'Verder praten', text:'Stel vervolgvragen of verfijn het beeld', isChat:true, isTrend:false, isPlus:false, onClick:() => this.go('gesprek')},\n        {title:'Vergelijk met ander plan', text:'Zet twee scenario’s naast elkaar', isChat:false, isTrend:true, isPlus:false, onClick:() => this.showToast('Scenario’s vergelijken is een uitbreiding na versie 1.')},\n        {title:'Nieuw gesprek starten', text:'Begin met een ander plan of idee', isChat:false, isTrend:false, isPlus:true, onClick:() => this.go('nieuw')}\n      ],\n\n      modalOpen, modal, trust:TRUST, closeModal:() => this.setState({modal:null}), stopProp:e => e.stopPropagation(),\n      toastOn: !!s.toast, toast:s.toast\n    };\n  }\n}\n\nexport default Component;\n","// Generated by design-1op1 dc2vue from the <helmet> of \"Kiek App v3.dc.html\"; do not edit.\nexport default \"\\n    html,body{margin:0;height:100%;background:#1F184E}\\n    *{box-sizing:border-box}\\n    a{color:#7D80FF}\\n    a:hover{color:#F9F7F3}\\n    button{font-family:\\\"Golos Text\\\",sans-serif}\\n    button:focus-visible,textarea:focus-visible,input:focus-visible{outline:2px solid #7D80FF;outline-offset:2px}\\n    textarea::placeholder,input::placeholder{color:inherit;opacity:0.75}\\n    @keyframes kiekPulse{0%,100%{opacity:0.35}50%{opacity:1}}\\n    @media (prefers-reduced-motion: reduce){*{animation:none !important;transition:none !important}}\\n  \";\n","// Generated by design-1op1 dc2vue from the <script type=\"text/x-dc\"> of \"Kiek Beheer.dc.html\"; do not edit.\nimport { DCLogic, React } from \"../lib/dc\";\nimport { SITE_ROOT } from \"../lib/site\";\n\nconst PAL = {\n  donker:{bg:'#1F184E', side:'#150F3A', surface:'#2A2260', surfaceHi:'#332A70', text:'#F9F7F3', muted:'rgba(255,255,255,0.75)', faint:'rgba(255,255,255,0.6)', line:'rgba(255,255,255,0.08)', hair:'rgba(255,255,255,0.12)', hair2:'rgba(255,255,255,0.18)', hover:'rgba(255,255,255,0.06)', accText:'#7D80FF', ok:'#70E9A2', okBg:'rgba(112,233,162,0.16)', warn:'#F388FF', warnBg:'rgba(243,136,255,0.16)', info:'#B9BBFF', infoBg:'rgba(125,128,255,0.18)'},\n  licht:{bg:'#F4F0E9', side:'#EDE7D9', surface:'#F9F7F3', surfaceHi:'#FFFFFF', text:'#1F184E', muted:'rgba(31,24,78,0.7)', faint:'rgba(31,24,78,0.62)', line:'rgba(31,24,78,0.08)', hair:'rgba(31,24,78,0.12)', hair2:'rgba(31,24,78,0.2)', hover:'rgba(31,24,78,0.06)', accText:'#1F184E', ok:'#062D18', okBg:'rgba(112,233,162,0.4)', warn:'#4F0151', warnBg:'rgba(243,136,255,0.3)', info:'#1F184E', infoBg:'rgba(125,128,255,0.22)'}\n};\nconst REQS = [\n  {id:'r1', first:'Anouk', last:'Brinkhuis', role:'Lector Circulaire Economie', org:'Saxion', email:'a.brinkhuis@saxion.nl', when:'Vandaag, 09:12', why:'Ik wil de resultaten van ons praktijkonderzoek naar circulaire inkoop bij Twentse mkb-bedrijven beschikbaar maken via Kiek.', st:'open'},\n  {id:'r2', first:'Ruben', last:'Oude Wesselink', role:'Promovendus', org:'Universiteit Twente', email:'r.oudewesselink@utwente.nl', when:'Gisteren, 16:40', why:'Mijn onderzoek gaat over regionale arbeidsmarkt en vergrijzing. Ondernemers stellen daar vaak vragen over.', st:'open'},\n  {id:'r3', first:'Sanne', last:'Hofstede', role:'Onderzoeker', org:'Onbekend', email:'sanne.hofstede@gmail.com', when:'11 okt, 10:05', why:'Ik heb een scriptie over duurzame bedrijventerreinen geschreven en wil die graag delen.', st:'open', ext:true},\n  {id:'r4', first:'Mark', last:'Nijhuis', role:'Associate lector', org:'Saxion', email:'m.nijhuis@saxion.nl', when:'8 okt, 14:22', why:'Onderzoek naar sociale ondernemingen in Enschede.', st:'acc'},\n];\nconst ACCS = [\n  {first:'Ilse', last:'Groen', email:'i.groen@saxion.nl', org:'Saxion', role:'Onderzoeker', last2:'Vandaag', st:'Actief'},\n  {first:'Bart', last:'Kampman', email:'b.kampman@utwente.nl', org:'Universiteit Twente', role:'Onderzoeker', last2:'Gisteren', st:'Actief'},\n  {first:'Mark', last:'Nijhuis', email:'m.nijhuis@saxion.nl', org:'Saxion', role:'Onderzoeker', last2:'Nog niet ingelogd', st:'Uitgenodigd'},\n  {first:'Marloes', last:'ten Berge', email:'marloes@tenbergebouw.nl', org:'Ten Berge Bouw', role:'Gebruiker', last2:'Vandaag', st:'Actief'},\n  {first:'Erik', last:'Lammers', email:'erik@lammerslogistiek.nl', org:'Lammers Logistiek', role:'Gebruiker', last2:'3 dagen geleden', st:'Actief'},\n  {first:'Fatima', last:'El Amrani', email:'fatima@studiofel.nl', org:'Studio FEL', role:'Gebruiker', last2:'Vandaag', st:'Actief'},\n  {first:'Joost', last:'Veldhuis', email:'j.veldhuis@cinergietwente.nl', org:'Cinergie Twente', role:'Beheerder', last2:'Nu', st:'Actief'},\n];\nconst STUDIES = [\n  {id:'s1', title:'Circulaire inkoop in het Twentse mkb: drempels en kansen', author:'Ilse Groen', org:'Saxion', when:'vandaag', pages:'64 pagina’s · PDF', persp:['Financieel','Omgeving'], summary:'Onderzoek onder 140 mkb-bedrijven naar wat circulair inkopen tegenhoudt. Prijs en onbekendheid met leveranciers wegen het zwaarst; samen inkopen verlaagt de drempel.', checks:[['Bronvermelding compleet','var(--ok,#70E9A2)'],['Geen persoonsgegevens gevonden','var(--ok,#70E9A2)'],['Publicatiedatum 2025','var(--ok,#70E9A2)']], st:'open'},\n  {id:'s2', title:'Vergrijzing en vakmanschap: personeelstekort in de maakindustrie', author:'Bart Kampman', org:'Universiteit Twente', when:'gisteren', pages:'112 pagina’s · PDF', persp:['Sociaal','Financieel','Governance'], summary:'Analyse van uitstroom en instroom in de Twentse maakindustrie tot 2035, met scenario’s voor omscholing en het behouden van oudere vakmensen.', checks:[['Bronvermelding compleet','var(--ok,#70E9A2)'],['3 namen van respondenten in bijlage','var(--warn,#F388FF)'],['Publicatiedatum 2024','var(--ok,#70E9A2)']], st:'open'},\n  {id:'s3', title:'Energiecoöperaties op bedrijventerreinen', author:'Mark Nijhuis', org:'Saxion', when:'10 okt', pages:'38 pagina’s · PDF', persp:['Omgeving','Governance'], summary:'Vijf casussen van bedrijventerreinen die samen energie opwekken en delen, en wat bestuurlijk nodig is om dat rond te krijgen.', checks:[['Bronvermelding compleet','var(--ok,#70E9A2)'],['Geen persoonsgegevens gevonden','var(--ok,#70E9A2)'],['Publicatiedatum 2023','var(--ok,#70E9A2)']], st:'open'},\n  {id:'s4', title:'Brede welvaart in Twentse gemeenten', author:'Ilse Groen', org:'Saxion', when:'2 okt', pages:'52 pagina’s · PDF', persp:['Sociaal','Omgeving'], summary:'Vergelijking van brede-welvaartsindicatoren tussen veertien Twentse gemeenten.', checks:[['Bronvermelding compleet','var(--ok,#70E9A2)']], st:'pub'},\n];\nconst TOK = [0.82,0.91,0.64,0.58,0.97,1.04,0.88,0.93,0.71,0.66,1.08,1.16,1.31,1.12,0.98,1.02,0.69,0.61,1.09,1.14,1.05,0.99,1.21,0.74,0.63,1.18,1.25,1.07,1.12,1.19];\nconst CONV = [212,236,148,131,248,262,229,241,170,152,274,289,318,281,250,262,161,144,280,297,268,255,306,176,150,301,322,276,290,311];\nconst NEWU = [18,22,9,7,24,19,21,17,11,8,26,29,34,23,20,21,10,9,27,25,22,19,30,12,9,28,33,24,26,31];\nconst fmtNum = n => n.toLocaleString('nl-NL');\nconst ini = (a,b) => (a[0] + b.split(/\\s+/).pop()[0]).toUpperCase();\n\nclass Component extends DCLogic {\n  state = { tab:'dash', period:14, w: typeof window !== 'undefined' ? window.innerWidth : 1400, reqs: REQS, reqView:'open', accs: ACCS, roleView:'Alle', accQ:'', formOpen:false, f:{first:'', last:'', email:'', org:'Saxion'}, tried:false, studies: STUDIES, resView:'open', selId:'s1', cinergie:true, note:'', noteErr:false, toast:'' };\n  rootRef = React.createRef();\n  applyPal() { const el = this.rootRef.current; if (!el) return; const t = PAL[this.props.theme] || PAL.donker; Object.keys(t).forEach(k => el.style.setProperty('--' + k, t[k])); }\n  componentDidMount() { this.onR = () => this.setState({ w: window.innerWidth }); window.addEventListener('resize', this.onR); this.applyPal(); }\n  componentDidUpdate() { this.applyPal(); }\n  componentWillUnmount() { window.removeEventListener('resize', this.onR); clearTimeout(this.tt); }\n  toastMsg(t) { clearTimeout(this.tt); this.setState({ toast:t }); this.tt = setTimeout(() => this.setState({ toast:'' }), 3200); }\n  tabs(list, cur, key) { return list.map(([v,l]) => ({ label:l, active: cur === v, bg: cur === v ? '#7D80FF' : 'transparent', color: cur === v ? '#FFFFFF' : 'var(--muted,rgba(255,255,255,0.75))', onClick: () => this.setState({ [key]: v }) })); }\n  renderVals() {\n    const s = this.state, emb = !!this.props.embedded;\n    const openReqs = s.reqs.filter(r => r.st === 'open').length, openStudies = s.studies.filter(x => x.st === 'open').length;\n    const nav = [['dash','Dashboard','Dashboard',0],['req','Aanvragen onderzoekers','Aanvragen',openReqs],['acc','Accounts','Accounts',0],['res','Ingezonden onderzoek','Onderzoek',openStudies]].map(([id,label,chip,badge]) => ({\n      label, chip: badge ? chip + ' · ' + badge : chip, badge, hasBadge: badge > 0,\n      bg: s.tab === id ? 'rgba(125,128,255,0.14)' : 'transparent', weight: s.tab === id ? 600 : 500,\n      chipBg: s.tab === id ? '#7D80FF' : 'var(--surface,#2A2260)', chipColor: s.tab === id ? '#FFFFFF' : 'var(--text,#F9F7F3)',\n      onClick: () => this.setState({ tab:id }) }));\n\n    const n = s.period, tok = TOK.slice(-n), conv = CONV.slice(-n), nu = NEWU.slice(-n);\n    const maxT = 1.4, maxC = 340;\n    const tokSum = tok.reduce((a,b) => a + b, 0), convSum = conv.reduce((a,b) => a + b, 0);\n    const prevTok = TOK.slice(-2*n, -n), prevConv = CONV.slice(-2*n, -n);\n    const pct = (a,b) => b ? Math.round((a/b - 1) * 100) : 0;\n    const dTok = prevTok.length === n ? pct(tokSum, prevTok.reduce((a,b)=>a+b,0)) : 6;\n    const dConv = prevConv.length === n ? pct(convSum, prevConv.reduce((a,b)=>a+b,0)) : 9;\n    const users = { 7: 1284, 14: 1612, 30: 2140 }[n];\n    const delta = (d, unit) => ({ delta: (d >= 0 ? '+' : '') + d + '% ' + unit, deltaColor: d >= 0 ? 'var(--ok,#70E9A2)' : 'var(--warn,#F388FF)' });\n    const start = new Date(); start.setDate(start.getDate() - (n - 1));\n    const kpis = [\n      { label:'Actieve gebruikers', value: fmtNum(users), ...delta({7:4,14:7,30:12}[n], 't.o.v. vorige periode') },\n      { label:'Gesprekken', value: fmtNum(convSum), ...delta(dConv, 't.o.v. vorige periode') },\n      { label:'Tokens verbruikt', value: (tokSum).toLocaleString('nl-NL', {maximumFractionDigits:1}) + ' mln', ...delta(dTok, 't.o.v. vorige periode') },\n      { label:'Gem. antwoordtijd', value:'4,2 s', delta:'Binnen de norm van 6 s', deltaColor:'var(--ok,#70E9A2)' },\n    ];\n\n    const reqVis = s.reqs.filter(r => s.reqView === 'open' ? r.st === 'open' : r.st !== 'open');\n    const reqs = reqVis.map(r => ({\n      ...r, name: r.first + ' ' + r.last, initials: ini(r.first, r.last), avBg: r.ext ? 'var(--warn,#F388FF)' : 'var(--ok,#70E9A2)',\n      domainNote: r.ext ? 'Let op: geen e-mailadres van een instelling' : 'E-mailadres van ' + r.org,\n      open: r.st === 'open', done: r.st !== 'open',\n      status: r.st === 'acc' ? 'Geaccepteerd' : 'Afgewezen', statusBg: r.st === 'acc' ? 'var(--okBg,rgba(112,233,162,0.16))' : 'var(--warnBg,rgba(243,136,255,0.16))', statusColor: r.st === 'acc' ? 'var(--ok,#70E9A2)' : 'var(--warn,#F388FF)',\n      accept: () => { this.setState(p => ({ reqs: p.reqs.map(x => x.id === r.id ? {...x, st:'acc'} : x), accs: [{first:r.first, last:r.last, email:r.email, org:r.org, role:'Onderzoeker', last2:'Nog niet ingelogd', st:'Uitgenodigd'}, ...p.accs] })); this.toastMsg(r.first + ' heeft toegang en krijgt een uitnodiging per mail.'); },\n      reject: () => { this.setState(p => ({ reqs: p.reqs.map(x => x.id === r.id ? {...x, st:'rej'} : x) })); this.toastMsg('Aanvraag van ' + r.first + ' afgewezen.'); },\n    }));\n\n    const q = s.accQ.trim().toLowerCase();\n    const accVis = s.accs.filter(a => (s.roleView === 'Alle' || a.role === s.roleView) && (!q || (a.first + ' ' + a.last + ' ' + a.email + ' ' + a.org).toLowerCase().includes(q)));\n    const roleCol = { Onderzoeker:'var(--ok,#70E9A2)', Gebruiker:'var(--info,#B9BBFF)', Beheerder:'var(--warn,#F388FF)' };\n    const accounts = accVis.map((a, i) => ({ name: a.first + ' ' + a.last, initials: ini(a.first, a.last), email:a.email, org:a.org, role:a.role, roleColor: roleCol[a.role], last:a.last2, status:a.st,\n      stBg: a.st === 'Actief' ? 'var(--okBg,rgba(112,233,162,0.16))' : 'var(--infoBg,rgba(125,128,255,0.18))', stColor: a.st === 'Actief' ? 'var(--ok,#70E9A2)' : 'var(--info,#B9BBFF)', border: i ? '1px solid var(--line,rgba(255,255,255,0.08))' : 'none' }));\n    const f = s.f, okMail = /^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$/.test(f.email);\n    const setF = k => e => this.setState({ f: {...s.f, [k]: e.target.value} });\n\n    const resVis = s.studies.filter(x => s.resView === 'open' ? x.st === 'open' : x.st !== 'open');\n    const selS = resVis.find(x => x.id === s.selId) || resVis[0];\n    const stInfo = st => st === 'open' ? ['Te beoordelen','var(--info,#B9BBFF)','var(--infoBg,rgba(125,128,255,0.18))'] : st === 'pub' ? ['In kennisbank','var(--ok,#70E9A2)','var(--okBg,rgba(112,233,162,0.16))'] : ['Teruggestuurd','var(--warn,#F388FF)','var(--warnBg,rgba(243,136,255,0.16))'];\n    const studies = resVis.map(x => ({ ...x, status: stInfo(x.st)[0], stColor: stInfo(x.st)[1], bg: selS && selS.id === x.id ? 'var(--surfaceHi,#332A70)' : 'var(--surface,#2A2260)', ring: selS && selS.id === x.id ? 'inset 0 0 0 1px #7D80FF' : 'none', onClick: () => this.setState({ selId:x.id, note:'', noteErr:false, cinergie:true }) }));\n    const sel = selS ? { ...selS, checks: selS.checks.map(([label,color]) => ({label, color})), open: selS.st === 'open', done: selS.st !== 'open', status: stInfo(selS.st)[0], stColor: stInfo(selS.st)[1], stBg: stInfo(selS.st)[2] } : { title:'', persp:[], checks:[] };\n    const next = id => { const rest = s.studies.filter(x => x.st === 'open' && x.id !== id); return rest[0] ? rest[0].id : id; };\n\n    return {\n      wide: !emb && s.w >= 900, narrow: !emb && s.w < 900, showChips: emb || s.w < 900, chipPad: emb ? 'clamp(24px,4vw,40px) clamp(20px,4vw,48px) 0' : '16px 20px 0', nav,\n      isDash: s.tab === 'dash', isReq: s.tab === 'req', isAcc: s.tab === 'acc', isRes: s.tab === 'res',\n      periods: this.tabs([[7,'7 dagen'],[14,'14 dagen'],[30,'30 dagen']], s.period, 'period'),\n      kpis, barGap: n > 20 ? '3px' : '6px',\n      tokBars: tok.map((v,i) => ({ h: (v / maxT * 100) + '%', color: v > 1.2 ? 'var(--warn,#F388FF)' : '#7D80FF', tip: v.toLocaleString('nl-NL') + ' mln tokens' })),\n      budgetLine: (1.2 / maxT * 100) + '%',\n      tokTotal: 'Totaal ' + tokSum.toLocaleString('nl-NL', {maximumFractionDigits:1}) + ' mln · ' + tok.filter(v => v > 1.2).length + ' dag(en) boven budget',\n      convBars: conv.map((v,i) => ({ h: (v / maxC * 100) + '%', newH: (nu[i] / v * 100) + '%', tip: v + ' gesprekken, ' + nu[i] + ' nieuwe gebruikers' })),\n      convTotal: fmtNum(convSum) + ' gesprekken · ' + fmtNum(nu.reduce((a,b)=>a+b,0)) + ' nieuwe gebruikers',\n      axisStart: start.toLocaleDateString('nl-NL', { day:'numeric', month:'short' }),\n      services: [\n        { name:'Mistral Large', meta:'Antwoorden · Parijs, FR', status:'Werkt', color:'var(--ok,#70E9A2)' },\n        { name:'Mistral Embed', meta:'Zoeken in onderzoek · Parijs, FR', status:'Werkt', color:'var(--ok,#70E9A2)' },\n        { name:'Kennisbank', meta:'Opslag · Amsterdam, NL', status:'Werkt', color:'var(--ok,#70E9A2)' },\n        { name:'KVK-koppeling', meta:'Bedrijfsgegevens · NL', status:'Traag (2,8 s)', color:'var(--warn,#F388FF)' },\n      ],\n      split: [{label:'Antwoorden schrijven', pct:'62%'},{label:'Zoeken in onderzoek', pct:'21%'},{label:'Gespreksverslagen', pct:'12%'},{label:'Uitgelegde passages', pct:'5%'}],\n      topics: [['Circulair ondernemen',412],['Personeel en arbeidsmarkt',356],['Energie en verduurzaming',298],['Lokaal inkopen',187],['Huisvesting en bouw',142]].map(([label,c],i) => ({ n:i+1, label, count:fmtNum(c) })),\n\n      reqTabs: this.tabs([['open','Open · ' + openReqs],['done','Afgehandeld']], s.reqView, 'reqView'),\n      reqs, reqEmpty: reqs.length === 0,\n\n      accSummary: s.accs.filter(a => a.role === 'Onderzoeker').length + ' onderzoekers · ' + s.accs.filter(a => a.role === 'Gebruiker').length + ' gebruikers in dit overzicht',\n      formOpen: s.formOpen, formBtnLabel: s.formOpen ? 'Sluiten' : 'Onderzoeker toevoegen', formBtnBg: s.formOpen ? 'var(--surface,#2A2260)' : 'var(--text,#F9F7F3)', formBtnColor: s.formOpen ? 'var(--text,#F9F7F3)' : 'var(--bg,#1F184E)',\n      toggleForm: () => this.setState({ formOpen: !s.formOpen, tried:false }),\n      f, onFirst: setF('first'), onLast: setF('last'), onEmail: setF('email'), onOrg: setF('org'),\n      errFirst: s.tried && !f.first.trim(), errLast: s.tried && !f.last.trim(), errEmail: s.tried && !okMail,\n      createAcc: e => { e.preventDefault(); if (!f.first.trim() || !f.last.trim() || !okMail) { this.setState({ tried:true }); return; }\n        this.setState({ accs:[{ first:f.first.trim(), last:f.last.trim(), email:f.email.trim(), org:f.org, role:'Onderzoeker', last2:'Nog niet ingelogd', st:'Uitgenodigd' }, ...s.accs], formOpen:false, tried:false, f:{first:'', last:'', email:'', org:'Saxion'}, roleView:'Alle', accQ:'' });\n        this.toastMsg('Account aangemaakt. ' + f.first.trim() + ' krijgt een uitnodiging per mail.'); },\n      accQ: s.accQ, onAccQ: e => this.setState({ accQ: e.target.value }),\n      roleTabs: this.tabs([['Alle','Alle'],['Onderzoeker','Onderzoekers'],['Gebruiker','Gebruikers']], s.roleView, 'roleView'),\n      accounts,\n\n      resTabs: this.tabs([['open','Te beoordelen · ' + openStudies],['done','Afgehandeld']], s.resView, 'resView'),\n      studies, resEmpty: studies.length === 0, hasSel: !!selS, sel,\n      cinergie: s.cinergie, onCinergie: e => this.setState({ cinergie: e.target.checked }),\n      note: s.note, onNote: e => this.setState({ note: e.target.value, noteErr:false }), noteErr: s.noteErr,\n      publish: () => { if (!selS) return; this.setState(p => ({ studies: p.studies.map(x => x.id === selS.id ? {...x, st:'pub'} : x), selId: next(selS.id), note:'' })); this.toastMsg('Toegevoegd aan de kennisbank' + (s.cinergie ? ', met Cinergie Twente-label.' : '.')); },\n      sendBack: () => { if (!selS) return; if (!s.note.trim()) { this.setState({ noteErr:true }); return; } this.setState(p => ({ studies: p.studies.map(x => x.id === selS.id ? {...x, st:'back'} : x), selId: next(selS.id), note:'' })); this.toastMsg('Teruggestuurd naar ' + selS.author + ' met je opmerking.'); },\n\n      hasToast: !!s.toast, toast: s.toast, rootRef: this.rootRef,\n    };\n  }\n}\n\nexport default Component;\n","// Generated by design-1op1 dc2vue from the <helmet> of \"Kiek Beheer.dc.html\"; do not edit.\nexport default \"\\n    html,body{margin:0;height:100%;background:var(--bg,#1F184E)}\\n    *{box-sizing:border-box}\\n    a{color:#7D80FF}\\n    a:hover{color:var(--text,#F9F7F3)}\\n    button,input,select,textarea{font-family:\\\"Golos Text\\\",sans-serif}\\n    button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid #7D80FF;outline-offset:2px}\\n    input::placeholder,textarea::placeholder{color:inherit;opacity:0.6}\\n    select option{background:var(--surface,#2A2260);color:var(--text,#F9F7F3)}\\n  \";\n","<!-- Generated by design-1op1 dc2vue from \"Kiek Beheer.dc.html\"; do not edit. -->\n<template><div class=\"sc-host\" data-sc-name=\"Kiek Beheer\"><div data-screen-label=\"Beheer\" :ref=\"(el) => dcrt.setRef(dcv.rootRef, el)\" style=\"position:absolute;inset:0;display:flex;background:var(--bg,#1F184E);color:var(--text,#F9F7F3);font-family:'Golos Text',sans-serif;overflow:hidden\">\n\n  <template v-if=\"dcv.wide\">\n    <div style=\"padding:12px;flex-shrink:0;display:flex\">\n      <nav style=\"width:240px;height:100%;border-radius:12px;background:var(--side,#150F3A);padding:24px 12px;display:flex;flex-direction:column;justify-content:space-between;overflow:auto\">\n        <div style=\"display:flex;flex-direction:column;gap:40px\">\n          <div style=\"display:flex;flex-direction:column;gap:10px;padding:0 12px\">\n            <img src=\"/.publisher/sd/kiek/kiek/assets/home/kiek-logo.svg\" alt=\"Kiek\" style=\"width:120px;height:40.195px;display:block\">\n            <span style=\"align-self:flex-start;border-radius:100px;background:rgba(125,128,255,0.18);color:var(--accText,#7D80FF);padding:4px 10px;font-size:12px;line-height:1.4;font-weight:600\">Beheer</span>\n          </div>\n          <div style=\"display:flex;flex-direction:column;gap:4px\">\n            <template v-for=\"(n, $index) in dcrt.list(dcv.nav)\" :key=\"$index\">\n              <button class=\"beheer-scp0\" type=\"button\" @click=\"n?.onClick\" :style=\"dcrt.style(`position:relative;height:46px;border:none;border-radius:8px;background:${n?.bg ?? ''};color:var(--text,#F9F7F3);display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;cursor:pointer;font-size:15px;font-weight:${n?.weight ?? ''};text-align:left`)\">\n                <span><span v-if=\"dcrt.shows(n?.label)\" class=\"sc-interp\">{{ n?.label }}</span></span>\n                <template v-if=\"n?.hasBadge\"><span style=\"min-width:22px;height:22px;padding:0 7px;border-radius:100px;background:#7D80FF;color:#FFFFFF;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700\"><span v-if=\"dcrt.shows(n?.badge)\" class=\"sc-interp\">{{ n?.badge }}</span></span></template>\n              </button>\n            </template>\n          </div>\n        </div>\n        <div style=\"display:flex;flex-direction:column;gap:8px\">\n          <a class=\"beheer-scp1\" :href=\"dcrt.page('app/')\" style=\"height:46px;border-radius:8px;display:flex;align-items:center;padding:12px;color:var(--muted,rgba(255,255,255,0.75));font-size:14px;font-weight:500;text-decoration:none\">Naar de chat</a>\n          <div style=\"height:1px;margin:0 12px;background:var(--hair,rgba(255,255,255,0.12))\"></div>\n          <div style=\"display:flex;align-items:center;gap:12px;padding:8px 12px\">\n            <span style=\"width:36px;height:36px;border-radius:8px;background:var(--surface,#2A2260);color:var(--muted,rgba(255,255,255,0.75));display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;flex-shrink:0\">JV</span>\n            <span style=\"display:flex;flex-direction:column;gap:2px;min-width:0\">\n              <span style=\"font-size:14px;line-height:1.2;font-weight:700\">Joost Veldhuis</span>\n              <span style=\"font-size:12px;line-height:1.4;color:var(--muted,rgba(255,255,255,0.75))\">Beheerder · Cinergie</span>\n            </span>\n          </div>\n        </div>\n      </nav>\n    </div>\n  </template>\n\n  <main style=\"flex:1;min-width:0;overflow:auto\">\n    <template v-if=\"dcv.showChips\">\n      <div :style=\"dcrt.style(`display:flex;flex-direction:column;gap:12px;padding:${dcv.chipPad ?? ''}`)\">\n        <template v-if=\"dcv.narrow\"><div style=\"display:flex;align-items:center;justify-content:space-between\">\n          <img src=\"/.publisher/sd/kiek/kiek/assets/home/kiek-logo.svg\" alt=\"Kiek\" style=\"width:90px;height:30px;display:block\">\n          <span style=\"border-radius:100px;background:rgba(125,128,255,0.18);color:var(--accText,#7D80FF);padding:4px 10px;font-size:12px;font-weight:600\">Beheer</span>\n        </div></template>\n        <div style=\"display:flex;gap:6px;overflow-x:auto;scrollbar-width:none\">\n          <template v-for=\"(n, $index) in dcrt.list(dcv.nav)\" :key=\"$index\">\n            <button type=\"button\" @click=\"n?.onClick\" :style=\"dcrt.style(`flex-shrink:0;height:40px;border:none;border-radius:100px;background:${n?.chipBg ?? ''};color:${n?.chipColor ?? ''};padding:0 14px;font-size:14px;font-weight:500;cursor:pointer;white-space:nowrap`)\"><span v-if=\"dcrt.shows(n?.chip)\" class=\"sc-interp\">{{ n?.chip }}</span></button>\n          </template>\n        </div>\n      </div>\n    </template>\n\n    <div style=\"max-width:1180px;margin:0 auto;padding:clamp(24px,4vw,48px) clamp(20px,4vw,48px) 80px;display:flex;flex-direction:column;gap:32px\">\n\n      <template v-if=\"dcv.isDash\">\n        <div style=\"display:flex;flex-direction:column;gap:32px\">\n          <div style=\"display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap\">\n            <div style=\"display:flex;flex-direction:column;gap:8px\">\n              <h1 style=\"margin:0;font-family:Degular,sans-serif;font-weight:800;font-size:clamp(44px,5vw,64px);line-height:0.85;letter-spacing:-0.02em\">Zo draait Kiek.</h1>\n              <span style=\"font-size:16px;line-height:1.4;font-weight:500;color:var(--muted,rgba(255,255,255,0.75))\">Gebruik, verbruik en de gezondheid van het systeem.</span>\n            </div>\n            <div role=\"tablist\" style=\"display:flex;gap:4px;padding:4px;border-radius:12px;background:var(--surface,#2A2260)\">\n              <template v-for=\"(p, $index) in dcrt.list(dcv.periods)\" :key=\"$index\">\n                <button type=\"button\" role=\"tab\" :aria-selected=\"dcrt.attr(p?.active)\" @click=\"p?.onClick\" :style=\"dcrt.style(`height:38px;border:none;border-radius:8px;background:${p?.bg ?? ''};color:${p?.color ?? ''};padding:0 14px;font-size:14px;font-weight:500;cursor:pointer`)\"><span v-if=\"dcrt.shows(p?.label)\" class=\"sc-interp\">{{ p?.label }}</span></button>\n              </template>\n            </div>\n          </div>\n\n          <div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:12px\">\n            <template v-for=\"(k, $index) in dcrt.list(dcv.kpis)\" :key=\"$index\">\n              <div style=\"border-radius:16px;background:var(--surface,#2A2260);padding:20px;display:flex;flex-direction:column;gap:10px;min-height:150px\">\n                <span style=\"font-size:14px;line-height:1.4;font-weight:500;color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(k?.label)\" class=\"sc-interp\">{{ k?.label }}</span></span>\n                <span style=\"font-family:Degular,sans-serif;font-weight:800;font-size:48px;line-height:0.9;letter-spacing:-0.02em\"><span v-if=\"dcrt.shows(k?.value)\" class=\"sc-interp\">{{ k?.value }}</span></span>\n                <span :style=\"dcrt.style(`margin-top:auto;font-size:13px;line-height:1.4;font-weight:500;color:${k?.deltaColor ?? ''}`)\"><span v-if=\"dcrt.shows(k?.delta)\" class=\"sc-interp\">{{ k?.delta }}</span></span>\n              </div>\n            </template>\n          </div>\n\n          <div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(min(420px,100%),1fr));gap:12px\">\n            <div style=\"border-radius:16px;background:var(--surface,#2A2260);padding:24px;display:flex;flex-direction:column;gap:20px\">\n              <div style=\"display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap\">\n                <span style=\"font-size:18px;line-height:1.3;font-weight:600\">Tokenverbruik per dag</span>\n                <span style=\"font-size:13px;color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(dcv.tokTotal)\" class=\"sc-interp\">{{ dcv.tokTotal }}</span></span>\n              </div>\n              <div :style=\"dcrt.style(`position:relative;height:200px;display:flex;align-items:flex-end;gap:${dcv.barGap ?? ''}`)\">\n                <div :style=\"dcrt.style(`position:absolute;left:0;right:0;bottom:${dcv.budgetLine ?? ''};border-top:1px dashed rgba(243,136,255,0.7);pointer-events:none`)\">\n                  <span style=\"position:absolute;right:0;bottom:4px;font-size:11px;font-weight:600;color:var(--warn,#F388FF)\">Dagbudget 1,2 mln</span>\n                </div>\n                <template v-for=\"(b, $index) in dcrt.list(dcv.tokBars)\" :key=\"$index\">\n                  <div :title=\"b?.tip\" :style=\"dcrt.style(`flex:1;min-width:0;height:${b?.h ?? ''};border-radius:4px 4px 0 0;background:${b?.color ?? ''}`)\"></div>\n                </template>\n              </div>\n              <div style=\"display:flex;justify-content:space-between;font-size:12px;color:var(--faint,rgba(255,255,255,0.6))\"><span><span v-if=\"dcrt.shows(dcv.axisStart)\" class=\"sc-interp\">{{ dcv.axisStart }}</span></span><span>Vandaag</span></div>\n            </div>\n\n            <div style=\"border-radius:16px;background:var(--surface,#2A2260);padding:24px;display:flex;flex-direction:column;gap:20px\">\n              <div style=\"display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap\">\n                <span style=\"font-size:18px;line-height:1.3;font-weight:600\">Gesprekken per dag</span>\n                <span style=\"font-size:13px;color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(dcv.convTotal)\" class=\"sc-interp\">{{ dcv.convTotal }}</span></span>\n              </div>\n              <div :style=\"dcrt.style(`height:200px;display:flex;align-items:flex-end;gap:${dcv.barGap ?? ''}`)\">\n                <template v-for=\"(b, $index) in dcrt.list(dcv.convBars)\" :key=\"$index\">\n                  <div :title=\"b?.tip\" :style=\"dcrt.style(`flex:1;min-width:0;height:${b?.h ?? ''};display:flex;flex-direction:column;justify-content:flex-end`)\">\n                    <div :style=\"dcrt.style(`height:${b?.newH ?? ''};background:#70E9A2;border-radius:4px 4px 0 0`)\"></div>\n                    <div style=\"flex:1;background:#7D80FF\"></div>\n                  </div>\n                </template>\n              </div>\n              <div style=\"display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--faint,rgba(255,255,255,0.6))\">\n                <span style=\"display:flex;gap:16px\">\n                  <span style=\"display:flex;align-items:center;gap:6px\"><span style=\"width:10px;height:10px;border-radius:3px;background:#7D80FF\"></span>Terugkerend</span>\n                  <span style=\"display:flex;align-items:center;gap:6px\"><span style=\"width:10px;height:10px;border-radius:3px;background:#70E9A2\"></span>Nieuwe gebruikers</span>\n                </span>\n                <span><span v-if=\"dcrt.shows(dcv.axisStart)\" class=\"sc-interp\">{{ dcv.axisStart }}</span> – vandaag</span>\n              </div>\n            </div>\n          </div>\n\n          <div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),1fr));gap:12px\">\n            <div style=\"border-radius:16px;background:var(--surface,#2A2260);padding:24px;display:flex;flex-direction:column;gap:16px\">\n              <span style=\"font-size:18px;line-height:1.3;font-weight:600\">Diensten</span>\n              <template v-for=\"(sv, $index) in dcrt.list(dcv.services)\" :key=\"$index\">\n                <div style=\"display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-top:1px solid var(--line,rgba(255,255,255,0.08))\">\n                  <span style=\"display:flex;flex-direction:column;gap:2px;min-width:0\">\n                    <span style=\"font-size:15px;font-weight:600\"><span v-if=\"dcrt.shows(sv?.name)\" class=\"sc-interp\">{{ sv?.name }}</span></span>\n                    <span style=\"font-size:12px;color:var(--faint,rgba(255,255,255,0.6))\"><span v-if=\"dcrt.shows(sv?.meta)\" class=\"sc-interp\">{{ sv?.meta }}</span></span>\n                  </span>\n                  <span :style=\"dcrt.style(`display:flex;align-items:center;gap:8px;flex-shrink:0;font-size:13px;font-weight:500;color:${sv?.color ?? ''}`)\"><span :style=\"dcrt.style(`width:8px;height:8px;border-radius:50%;background:${sv?.color ?? ''}`)\"></span><span v-if=\"dcrt.shows(sv?.status)\" class=\"sc-interp\">{{ sv?.status }}</span></span>\n                </div>\n              </template>\n            </div>\n\n            <div style=\"border-radius:16px;background:var(--surface,#2A2260);padding:24px;display:flex;flex-direction:column;gap:16px\">\n              <span style=\"font-size:18px;line-height:1.3;font-weight:600\">Verbruik per onderdeel</span>\n              <template v-for=\"(sp, $index) in dcrt.list(dcv.split)\" :key=\"$index\">\n                <div style=\"display:flex;flex-direction:column;gap:6px\">\n                  <span style=\"display:flex;justify-content:space-between;font-size:14px;font-weight:500\"><span><span v-if=\"dcrt.shows(sp?.label)\" class=\"sc-interp\">{{ sp?.label }}</span></span><span style=\"color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(sp?.pct)\" class=\"sc-interp\">{{ sp?.pct }}</span></span></span>\n                  <span style=\"height:6px;border-radius:100px;background:var(--line,rgba(255,255,255,0.08));overflow:hidden\"><span :style=\"dcrt.style(`display:block;height:100%;width:${sp?.pct ?? ''};border-radius:100px;background:#7D80FF`)\"></span></span>\n                </div>\n              </template>\n            </div>\n\n            <div style=\"border-radius:16px;background:var(--surface,#2A2260);padding:24px;display:flex;flex-direction:column;gap:16px\">\n              <span style=\"font-size:18px;line-height:1.3;font-weight:600\">Wordt gevraagd over</span>\n              <template v-for=\"(t, $index) in dcrt.list(dcv.topics)\" :key=\"$index\">\n                <div style=\"display:flex;align-items:center;gap:12px;font-size:14px;font-weight:500\">\n                  <span style=\"width:20px;color:var(--faint,rgba(255,255,255,0.6))\"><span v-if=\"dcrt.shows(t?.n)\" class=\"sc-interp\">{{ t?.n }}</span></span>\n                  <span style=\"flex:1;min-width:0\"><span v-if=\"dcrt.shows(t?.label)\" class=\"sc-interp\">{{ t?.label }}</span></span>\n                  <span style=\"color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(t?.count)\" class=\"sc-interp\">{{ t?.count }}</span></span>\n                </div>\n              </template>\n            </div>\n          </div>\n        </div>\n      </template>\n\n      <template v-if=\"dcv.isReq\">\n        <div style=\"display:flex;flex-direction:column;gap:24px\">\n          <div style=\"display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap\">\n            <div style=\"display:flex;flex-direction:column;gap:8px\">\n              <h1 style=\"margin:0;font-family:Degular,sans-serif;font-weight:800;font-size:clamp(44px,5vw,64px);line-height:0.85;letter-spacing:-0.02em\">Aanvragen.</h1>\n              <span style=\"font-size:16px;line-height:1.4;font-weight:500;color:var(--muted,rgba(255,255,255,0.75))\">Onderzoekers die toegang vragen om hun onderzoek te delen.</span>\n            </div>\n            <div style=\"display:flex;gap:4px;padding:4px;border-radius:12px;background:var(--surface,#2A2260)\">\n              <template v-for=\"(p, $index) in dcrt.list(dcv.reqTabs)\" :key=\"$index\">\n                <button type=\"button\" @click=\"p?.onClick\" :style=\"dcrt.style(`height:38px;border:none;border-radius:8px;background:${p?.bg ?? ''};color:${p?.color ?? ''};padding:0 14px;font-size:14px;font-weight:500;cursor:pointer`)\"><span v-if=\"dcrt.shows(p?.label)\" class=\"sc-interp\">{{ p?.label }}</span></button>\n              </template>\n            </div>\n          </div>\n          <template v-for=\"(r, $index) in dcrt.list(dcv.reqs)\" :key=\"$index\">\n            <div style=\"border-radius:16px;background:var(--surface,#2A2260);padding:24px;display:flex;flex-wrap:wrap;gap:20px 32px;align-items:flex-start\">\n              <div style=\"flex:1 1 360px;min-width:0;display:flex;flex-direction:column;gap:12px\">\n                <div style=\"display:flex;align-items:center;gap:12px\">\n                  <span :style=\"dcrt.style(`width:44px;height:44px;border-radius:10px;background:${r?.avBg ?? ''};color:#1F184E;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:700;flex-shrink:0`)\"><span v-if=\"dcrt.shows(r?.initials)\" class=\"sc-interp\">{{ r?.initials }}</span></span>\n                  <span style=\"display:flex;flex-direction:column;gap:2px;min-width:0\">\n                    <span style=\"font-size:17px;font-weight:600\"><span v-if=\"dcrt.shows(r?.name)\" class=\"sc-interp\">{{ r?.name }}</span></span>\n                    <span style=\"font-size:13px;color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(r?.role)\" class=\"sc-interp\">{{ r?.role }}</span> · <span v-if=\"dcrt.shows(r?.org)\" class=\"sc-interp\">{{ r?.org }}</span></span>\n                  </span>\n                </div>\n                <p style=\"margin:0;font-size:15px;line-height:1.5;color:var(--text,rgba(255,255,255,0.85));text-wrap:pretty\"><span v-if=\"dcrt.shows(r?.why)\" class=\"sc-interp\">{{ r?.why }}</span></p>\n                <div style=\"display:flex;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--faint,rgba(255,255,255,0.6))\">\n                  <span><span v-if=\"dcrt.shows(r?.email)\" class=\"sc-interp\">{{ r?.email }}</span></span><span><span v-if=\"dcrt.shows(r?.when)\" class=\"sc-interp\">{{ r?.when }}</span></span><span><span v-if=\"dcrt.shows(r?.domainNote)\" class=\"sc-interp\">{{ r?.domainNote }}</span></span>\n                </div>\n              </div>\n              <template v-if=\"r?.open\">\n                <div style=\"display:flex;gap:8px;flex-wrap:wrap\">\n                  <button class=\"beheer-scp0\" type=\"button\" @click=\"r?.reject\" style=\"height:46px;border:none;border-radius:12px;background:none;box-shadow:inset 0 0 0 1px var(--hair2,rgba(255,255,255,0.18));color:var(--text,#F9F7F3);padding:0 18px;font-size:15px;font-weight:500;cursor:pointer\">Afwijzen</button>\n                  <button class=\"beheer-scp2\" type=\"button\" @click=\"r?.accept\" style=\"height:46px;border:none;border-radius:12px;background:#7D80FF;color:#FFFFFF;padding:0 20px;font-size:15px;font-weight:500;cursor:pointer\">Accepteren</button>\n                </div>\n              </template>\n              <template v-if=\"r?.done\">\n                <span :style=\"dcrt.style(`border-radius:100px;background:${r?.statusBg ?? ''};color:${r?.statusColor ?? ''};padding:6px 12px;font-size:13px;font-weight:600`)\"><span v-if=\"dcrt.shows(r?.status)\" class=\"sc-interp\">{{ r?.status }}</span></span>\n              </template>\n            </div>\n          </template>\n          <template v-if=\"dcv.reqEmpty\">\n            <div style=\"border-radius:16px;background:var(--surface,#2A2260);padding:40px 24px;text-align:center;font-size:15px;color:var(--muted,rgba(255,255,255,0.75))\">Geen openstaande aanvragen. Alles is bijgewerkt.</div>\n          </template>\n        </div>\n      </template>\n\n      <template v-if=\"dcv.isAcc\">\n        <div style=\"display:flex;flex-direction:column;gap:24px\">\n          <div style=\"display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap\">\n            <div style=\"display:flex;flex-direction:column;gap:8px\">\n              <h1 style=\"margin:0;font-family:Degular,sans-serif;font-weight:800;font-size:clamp(44px,5vw,64px);line-height:0.85;letter-spacing:-0.02em\">Accounts.</h1>\n              <span style=\"font-size:16px;line-height:1.4;font-weight:500;color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(dcv.accSummary)\" class=\"sc-interp\">{{ dcv.accSummary }}</span></span>\n            </div>\n            <button type=\"button\" @click=\"dcv.toggleForm\" :style=\"dcrt.style(`height:54px;border:none;border-radius:12px;background:${dcv.formBtnBg ?? ''};color:${dcv.formBtnColor ?? ''};padding:0 24px;font-size:16px;font-weight:500;cursor:pointer`)\"><span v-if=\"dcrt.shows(dcv.formBtnLabel)\" class=\"sc-interp\">{{ dcv.formBtnLabel }}</span></button>\n          </div>\n\n          <template v-if=\"dcv.formOpen\">\n            <form @submit=\"dcv.createAcc\" style=\"border-radius:16px;background:#7D80FF;color:#1F184E;padding:clamp(20px,3vw,32px);display:flex;flex-direction:column;gap:20px\">\n              <div style=\"display:flex;flex-direction:column;gap:4px\">\n                <span style=\"font-family:Degular,sans-serif;font-weight:800;font-size:32px;line-height:0.9;letter-spacing:-0.02em\">Onderzoeker toevoegen</span>\n                <span style=\"font-size:14px;font-weight:500;color:rgba(31,24,78,0.75)\">De onderzoeker krijgt een uitnodiging per mail om een wachtwoord in te stellen.</span>\n              </div>\n              <div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:12px\">\n                <label style=\"display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:500;min-width:0\">Voornaam\n                  <input :value=\"dcv.f?.first ?? ''\" @input=\"dcv.onFirst\" placeholder=\"Anouk\" style=\"height:50px;border:none;border-radius:12px;background:rgba(31,24,78,0.1);color:#1F184E;padding:0 14px;font-size:15px;font-weight:500;outline:none;min-width:0\">\n                  <template v-if=\"dcv.errFirst\"><span style=\"font-size:13px;color:#4F0151\">Vul een voornaam in.</span></template>\n                </label>\n                <label style=\"display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:500;min-width:0\">Achternaam\n                  <input :value=\"dcv.f?.last ?? ''\" @input=\"dcv.onLast\" placeholder=\"Brinkhuis\" style=\"height:50px;border:none;border-radius:12px;background:rgba(31,24,78,0.1);color:#1F184E;padding:0 14px;font-size:15px;font-weight:500;outline:none;min-width:0\">\n                  <template v-if=\"dcv.errLast\"><span style=\"font-size:13px;color:#4F0151\">Vul een achternaam in.</span></template>\n                </label>\n                <label style=\"display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:500;min-width:0\">E-mailadres instelling\n                  <input type=\"email\" :value=\"dcv.f?.email ?? ''\" @input=\"dcv.onEmail\" placeholder=\"a.brinkhuis@saxion.nl\" style=\"height:50px;border:none;border-radius:12px;background:rgba(31,24,78,0.1);color:#1F184E;padding:0 14px;font-size:15px;font-weight:500;outline:none;min-width:0\">\n                  <template v-if=\"dcv.errEmail\"><span style=\"font-size:13px;color:#4F0151\">Vul een geldig e-mailadres in.</span></template>\n                </label>\n                <label style=\"display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:500;min-width:0\">Instelling\n                  <select :value=\"dcv.f?.org ?? ''\" @change=\"dcv.onOrg\" style=\"height:50px;border:none;border-radius:12px;background:rgba(31,24,78,0.1);color:#1F184E;padding:0 14px;font-size:15px;font-weight:500;outline:none;min-width:0\">\n                    <option value=\"Saxion\">Saxion</option>\n                    <option value=\"Universiteit Twente\">Universiteit Twente</option>\n                    <option value=\"ROC van Twente\">ROC van Twente</option>\n                    <option value=\"Twente Board\">Twente Board</option>\n                  </select>\n                </label>\n              </div>\n              <div style=\"display:flex;gap:8px;flex-wrap:wrap\">\n                <button type=\"submit\" style=\"height:50px;border:none;border-radius:12px;background:#1F184E;color:#F9F7F3;padding:0 22px;font-size:15px;font-weight:500;cursor:pointer\">Account aanmaken en uitnodigen</button>\n                <button type=\"button\" @click=\"dcv.toggleForm\" style=\"height:50px;border:none;border-radius:12px;background:rgba(31,24,78,0.1);color:#1F184E;padding:0 20px;font-size:15px;font-weight:500;cursor:pointer\">Annuleren</button>\n              </div>\n            </form>\n          </template>\n\n          <div style=\"display:flex;gap:8px;flex-wrap:wrap;align-items:center\">\n            <label style=\"flex:1 1 260px;height:46px;border-radius:12px;box-shadow:inset 0 0 0 1px var(--hair,rgba(255,255,255,0.12));display:flex;align-items:center;padding:0 14px\">\n              <input :value=\"dcv.accQ ?? ''\" @input=\"dcv.onAccQ\" placeholder=\"Zoek op naam, e-mail of instelling\" aria-label=\"Zoek accounts\" style=\"flex:1;min-width:0;border:none;outline:none;background:none;color:inherit;font-size:15px\">\n            </label>\n            <div style=\"display:flex;gap:4px;padding:4px;border-radius:12px;background:var(--surface,#2A2260)\">\n              <template v-for=\"(p, $index) in dcrt.list(dcv.roleTabs)\" :key=\"$index\">\n                <button type=\"button\" @click=\"p?.onClick\" :style=\"dcrt.style(`height:38px;border:none;border-radius:8px;background:${p?.bg ?? ''};color:${p?.color ?? ''};padding:0 14px;font-size:14px;font-weight:500;cursor:pointer`)\"><span v-if=\"dcrt.shows(p?.label)\" class=\"sc-interp\">{{ p?.label }}</span></button>\n              </template>\n            </div>\n          </div>\n\n          <div style=\"border-radius:16px;background:var(--surface,#2A2260);overflow:hidden\">\n            <template v-for=\"(a, $index) in dcrt.list(dcv.accounts)\" :key=\"$index\">\n              <div :style=\"dcrt.style(`display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:14px 20px;border-top:${a?.border ?? ''}`)\">\n                <span style=\"width:36px;height:36px;border-radius:8px;background:var(--bg,#1F184E);color:var(--muted,rgba(255,255,255,0.75));display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;flex-shrink:0\"><span v-if=\"dcrt.shows(a?.initials)\" class=\"sc-interp\">{{ a?.initials }}</span></span>\n                <span style=\"flex:1 1 200px;min-width:0;display:flex;flex-direction:column;gap:2px\">\n                  <span style=\"font-size:15px;font-weight:600\"><span v-if=\"dcrt.shows(a?.name)\" class=\"sc-interp\">{{ a?.name }}</span></span>\n                  <span style=\"font-size:13px;color:var(--faint,rgba(255,255,255,0.6));overflow:hidden;text-overflow:ellipsis\"><span v-if=\"dcrt.shows(a?.email)\" class=\"sc-interp\">{{ a?.email }}</span></span>\n                </span>\n                <span style=\"flex:0 1 180px;font-size:14px;color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(a?.org)\" class=\"sc-interp\">{{ a?.org }}</span></span>\n                <span :style=\"dcrt.style(`flex:0 0 110px;font-size:13px;font-weight:600;color:${a?.roleColor ?? ''}`)\"><span v-if=\"dcrt.shows(a?.role)\" class=\"sc-interp\">{{ a?.role }}</span></span>\n                <span style=\"flex:0 0 120px;font-size:13px;color:var(--faint,rgba(255,255,255,0.6))\"><span v-if=\"dcrt.shows(a?.last)\" class=\"sc-interp\">{{ a?.last }}</span></span>\n                <span :style=\"dcrt.style(`flex:0 0 auto;border-radius:100px;background:${a?.stBg ?? ''};color:${a?.stColor ?? ''};padding:4px 10px;font-size:12px;font-weight:600`)\"><span v-if=\"dcrt.shows(a?.status)\" class=\"sc-interp\">{{ a?.status }}</span></span>\n              </div>\n            </template>\n          </div>\n        </div>\n      </template>\n\n      <template v-if=\"dcv.isRes\">\n        <div style=\"display:flex;flex-direction:column;gap:24px\">\n          <div style=\"display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap\">\n            <div style=\"display:flex;flex-direction:column;gap:8px\">\n              <h1 style=\"margin:0;font-family:Degular,sans-serif;font-weight:800;font-size:clamp(44px,5vw,64px);line-height:0.85;letter-spacing:-0.02em\">Ingezonden onderzoek.</h1>\n              <span style=\"font-size:16px;line-height:1.4;font-weight:500;color:var(--muted,rgba(255,255,255,0.75))\">Controleer wat er in de kennisbank van Kiek komt.</span>\n            </div>\n            <div style=\"display:flex;gap:4px;padding:4px;border-radius:12px;background:var(--surface,#2A2260)\">\n              <template v-for=\"(p, $index) in dcrt.list(dcv.resTabs)\" :key=\"$index\">\n                <button type=\"button\" @click=\"p?.onClick\" :style=\"dcrt.style(`height:38px;border:none;border-radius:8px;background:${p?.bg ?? ''};color:${p?.color ?? ''};padding:0 14px;font-size:14px;font-weight:500;cursor:pointer`)\"><span v-if=\"dcrt.shows(p?.label)\" class=\"sc-interp\">{{ p?.label }}</span></button>\n              </template>\n            </div>\n          </div>\n          <div style=\"display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start\">\n            <div style=\"flex:1 1 340px;min-width:0;display:flex;flex-direction:column;gap:8px\">\n              <template v-for=\"(st, $index) in dcrt.list(dcv.studies)\" :key=\"$index\">\n                <button class=\"beheer-scp3\" type=\"button\" @click=\"st?.onClick\" :style=\"dcrt.style(`border:none;border-radius:16px;background:${st?.bg ?? ''};box-shadow:${st?.ring ?? ''};color:var(--text,#F9F7F3);padding:18px 20px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:8px`)\">\n                  <span style=\"display:flex;justify-content:space-between;gap:12px;font-size:12px;color:var(--faint,rgba(255,255,255,0.6))\"><span><span v-if=\"dcrt.shows(st?.org)\" class=\"sc-interp\">{{ st?.org }}</span> · <span v-if=\"dcrt.shows(st?.when)\" class=\"sc-interp\">{{ st?.when }}</span></span><span :style=\"dcrt.style(`color:${st?.stColor ?? ''};font-weight:600`)\"><span v-if=\"dcrt.shows(st?.status)\" class=\"sc-interp\">{{ st?.status }}</span></span></span>\n                  <span style=\"font-size:16px;line-height:1.35;font-weight:600\"><span v-if=\"dcrt.shows(st?.title)\" class=\"sc-interp\">{{ st?.title }}</span></span>\n                  <span style=\"font-size:13px;color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(st?.author)\" class=\"sc-interp\">{{ st?.author }}</span></span>\n                </button>\n              </template>\n              <template v-if=\"dcv.resEmpty\">\n                <div style=\"border-radius:16px;background:var(--surface,#2A2260);padding:32px 20px;text-align:center;font-size:15px;color:var(--muted,rgba(255,255,255,0.75))\">Niets meer te beoordelen.</div>\n              </template>\n            </div>\n            <template v-if=\"dcv.hasSel\">\n              <div style=\"flex:1.4 1 420px;min-width:0;border-radius:16px;background:var(--surface,#2A2260);padding:clamp(20px,3vw,32px);display:flex;flex-direction:column;gap:20px\">\n                <div style=\"display:flex;flex-direction:column;gap:10px\">\n                  <span style=\"font-size:13px;color:var(--faint,rgba(255,255,255,0.6))\"><span v-if=\"dcrt.shows(dcv.sel?.org)\" class=\"sc-interp\">{{ dcv.sel?.org }}</span> · ingezonden <span v-if=\"dcrt.shows(dcv.sel?.when)\" class=\"sc-interp\">{{ dcv.sel?.when }}</span></span>\n                  <span style=\"font-family:Degular,sans-serif;font-weight:800;font-size:34px;line-height:0.95;letter-spacing:-0.02em\"><span v-if=\"dcrt.shows(dcv.sel?.title)\" class=\"sc-interp\">{{ dcv.sel?.title }}</span></span>\n                  <span style=\"font-size:14px;color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(dcv.sel?.author)\" class=\"sc-interp\">{{ dcv.sel?.author }}</span> · <span v-if=\"dcrt.shows(dcv.sel?.pages)\" class=\"sc-interp\">{{ dcv.sel?.pages }}</span></span>\n                </div>\n                <p style=\"margin:0;font-size:15px;line-height:1.55;color:var(--text,rgba(255,255,255,0.85));text-wrap:pretty\"><span v-if=\"dcrt.shows(dcv.sel?.summary)\" class=\"sc-interp\">{{ dcv.sel?.summary }}</span></p>\n                <div style=\"display:flex;flex-direction:column;gap:10px\">\n                  <span style=\"font-size:14px;font-weight:600\">Perspectieven volgens Kiek</span>\n                  <div style=\"display:flex;gap:6px;flex-wrap:wrap\">\n                    <template v-for=\"(pp, $index) in dcrt.list(dcv.sel?.persp)\" :key=\"$index\">\n                      <span style=\"border-radius:100px;background:rgba(125,128,255,0.18);color:var(--info,#B9BBFF);padding:6px 12px;font-size:13px;font-weight:500\"><span v-if=\"dcrt.shows(pp)\" class=\"sc-interp\">{{ pp }}</span></span>\n                    </template>\n                  </div>\n                </div>\n                <div style=\"display:flex;flex-direction:column;gap:8px\">\n                  <span style=\"font-size:14px;font-weight:600\">Controle</span>\n                  <template v-for=\"(c, $index) in dcrt.list(dcv.sel?.checks)\" :key=\"$index\">\n                    <span style=\"display:flex;align-items:center;gap:10px;font-size:14px;color:var(--text,rgba(255,255,255,0.85))\"><span :style=\"dcrt.style(`width:8px;height:8px;border-radius:50%;background:${c?.color ?? ''};flex-shrink:0`)\"></span><span v-if=\"dcrt.shows(c?.label)\" class=\"sc-interp\">{{ c?.label }}</span></span>\n                  </template>\n                </div>\n                <template v-if=\"dcv.sel?.open\">\n                  <div style=\"display:flex;flex-direction:column;gap:12px;padding-top:4px\">\n                    <label style=\"display:flex;align-items:center;gap:10px;font-size:14px;font-weight:500;cursor:pointer\">\n                      <input type=\"checkbox\" :checked=\"dcv.cinergie ?? false\" @change=\"dcv.onCinergie\" style=\"width:18px;height:18px;accent-color:#7D80FF\">Label als onderzoek van Cinergie Twente\n                    </label>\n                    <textarea :value=\"dcv.note ?? ''\" @input=\"dcv.onNote\" rows=\"2\" placeholder=\"Opmerking voor de onderzoeker (nodig bij terugsturen)\" style=\"border:none;border-radius:12px;background:var(--bg,#1F184E);color:var(--text,#F9F7F3);padding:12px 14px;font-size:14px;line-height:1.4;resize:vertical;outline:none\"></textarea>\n                    <template v-if=\"dcv.noteErr\"><span style=\"font-size:13px;color:var(--warn,#F388FF)\">Schrijf kort waarom je het terugstuurt.</span></template>\n                    <div style=\"display:flex;gap:8px;flex-wrap:wrap\">\n                      <button class=\"beheer-scp0\" type=\"button\" @click=\"dcv.sendBack\" style=\"height:46px;border:none;border-radius:12px;background:none;box-shadow:inset 0 0 0 1px var(--hair2,rgba(255,255,255,0.18));color:var(--text,#F9F7F3);padding:0 18px;font-size:15px;font-weight:500;cursor:pointer\">Terugsturen</button>\n                      <button class=\"beheer-scp2\" type=\"button\" @click=\"dcv.publish\" style=\"height:46px;border:none;border-radius:12px;background:#7D80FF;color:#FFFFFF;padding:0 20px;font-size:15px;font-weight:500;cursor:pointer\">Accepteren en toevoegen</button>\n                    </div>\n                  </div>\n                </template>\n                <template v-if=\"dcv.sel?.done\">\n                  <span :style=\"dcrt.style(`align-self:flex-start;border-radius:100px;background:${dcv.sel?.stBg ?? ''};color:${dcv.sel?.stColor ?? ''};padding:6px 12px;font-size:13px;font-weight:600`)\"><span v-if=\"dcrt.shows(dcv.sel?.status)\" class=\"sc-interp\">{{ dcv.sel?.status }}</span></span>\n                </template>\n              </div>\n            </template>\n          </div>\n        </div>\n      </template>\n\n    </div>\n  </main>\n\n  <template v-if=\"dcv.hasToast\">\n    <div role=\"status\" style=\"position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:50;border-radius:12px;background:var(--text,#F9F7F3);color:var(--bg,#1F184E);padding:14px 20px;font-size:14px;font-weight:600;box-shadow:0 12px 32px rgba(10,8,30,0.35);max-width:calc(100vw - 32px)\"><span v-if=\"dcrt.shows(dcv.toast)\" class=\"sc-interp\">{{ dcv.toast }}</span></div>\n  </template></div></div></template>\n\n<script setup lang=\"ts\">\nimport * as dcrt from \"../lib/dc\";\nimport { useHelmet } from \"../lib/helmet\";\nimport Logic from \"./Beheer.logic.js\";\nimport helmetCss from \"./Beheer.helmet\";\n\nconst props = defineProps({\n  theme: { default: \"donker\" },\n  embedded: { default: false },\n});\nuseHelmet(helmetCss);\nconst dcv = dcrt.useDC(Logic, props);\n</script>\n","import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createStaticVNode as _createStaticVNode } from \"vue\"\n\nconst _hoisted_1 = {\n  class: \"sc-host\",\n  \"data-sc-name\": \"Kiek Beheer\"\n}\nconst _hoisted_2 = {\n  key: 0,\n  style: {\"padding\":\"12px\",\"flex-shrink\":\"0\",\"display\":\"flex\"}\n}\nconst _hoisted_3 = { style: {\"width\":\"240px\",\"height\":\"100%\",\"border-radius\":\"12px\",\"background\":\"var(--side,#150F3A)\",\"padding\":\"24px 12px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"justify-content\":\"space-between\",\"overflow\":\"auto\"} }\nconst _hoisted_4 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"40px\"} }\nconst _hoisted_5 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"4px\"} }\nconst _hoisted_6 = [\"onClick\"]\nconst _hoisted_7 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_8 = {\n  key: 0,\n  style: {\"min-width\":\"22px\",\"height\":\"22px\",\"padding\":\"0 7px\",\"border-radius\":\"100px\",\"background\":\"#7D80FF\",\"color\":\"#FFFFFF\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\",\"font-size\":\"12px\",\"font-weight\":\"700\"}\n}\nconst _hoisted_9 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_10 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\"} }\nconst _hoisted_11 = [\"href\"]\nconst _hoisted_12 = { style: {\"flex\":\"1\",\"min-width\":\"0\",\"overflow\":\"auto\"} }\nconst _hoisted_13 = {\n  key: 0,\n  style: {\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"space-between\"}\n}\nconst _hoisted_14 = { style: {\"display\":\"flex\",\"gap\":\"6px\",\"overflow-x\":\"auto\",\"scrollbar-width\":\"none\"} }\nconst _hoisted_15 = [\"onClick\"]\nconst _hoisted_16 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_17 = { style: {\"max-width\":\"1180px\",\"margin\":\"0 auto\",\"padding\":\"clamp(24px,4vw,48px) clamp(20px,4vw,48px) 80px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"32px\"} }\nconst _hoisted_18 = {\n  key: 0,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"32px\"}\n}\nconst _hoisted_19 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"flex-end\",\"gap\":\"24px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_20 = {\n  role: \"tablist\",\n  style: {\"display\":\"flex\",\"gap\":\"4px\",\"padding\":\"4px\",\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\"}\n}\nconst _hoisted_21 = [\"aria-selected\", \"onClick\"]\nconst _hoisted_22 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_23 = { style: {\"display\":\"grid\",\"grid-template-columns\":\"repeat(auto-fit,minmax(min(220px,100%),1fr))\",\"gap\":\"12px\"} }\nconst _hoisted_24 = { style: {\"font-size\":\"14px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_25 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_26 = { style: {\"font-family\":\"Degular,sans-serif\",\"font-weight\":\"800\",\"font-size\":\"48px\",\"line-height\":\"0.9\",\"letter-spacing\":\"-0.02em\"} }\nconst _hoisted_27 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_28 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_29 = { style: {\"display\":\"grid\",\"grid-template-columns\":\"repeat(auto-fit,minmax(min(420px,100%),1fr))\",\"gap\":\"12px\"} }\nconst _hoisted_30 = { style: {\"border-radius\":\"16px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"24px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"20px\"} }\nconst _hoisted_31 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"baseline\",\"gap\":\"12px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_32 = { style: {\"font-size\":\"13px\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_33 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_34 = [\"title\"]\nconst _hoisted_35 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"font-size\":\"12px\",\"color\":\"var(--faint,rgba(255,255,255,0.6))\"} }\nconst _hoisted_36 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_37 = { style: {\"border-radius\":\"16px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"24px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"20px\"} }\nconst _hoisted_38 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"baseline\",\"gap\":\"12px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_39 = { style: {\"font-size\":\"13px\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_40 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_41 = [\"title\"]\nconst _hoisted_42 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"gap\":\"12px\",\"flex-wrap\":\"wrap\",\"font-size\":\"12px\",\"color\":\"var(--faint,rgba(255,255,255,0.6))\"} }\nconst _hoisted_43 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_44 = { style: {\"display\":\"grid\",\"grid-template-columns\":\"repeat(auto-fit,minmax(min(340px,100%),1fr))\",\"gap\":\"12px\"} }\nconst _hoisted_45 = { style: {\"border-radius\":\"16px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"24px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"16px\"} }\nconst _hoisted_46 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"2px\",\"min-width\":\"0\"} }\nconst _hoisted_47 = { style: {\"font-size\":\"15px\",\"font-weight\":\"600\"} }\nconst _hoisted_48 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_49 = { style: {\"font-size\":\"12px\",\"color\":\"var(--faint,rgba(255,255,255,0.6))\"} }\nconst _hoisted_50 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_51 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_52 = { style: {\"border-radius\":\"16px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"24px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"16px\"} }\nconst _hoisted_53 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"font-size\":\"14px\",\"font-weight\":\"500\"} }\nconst _hoisted_54 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_55 = { style: {\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_56 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_57 = { style: {\"height\":\"6px\",\"border-radius\":\"100px\",\"background\":\"var(--line,rgba(255,255,255,0.08))\",\"overflow\":\"hidden\"} }\nconst _hoisted_58 = { style: {\"border-radius\":\"16px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"24px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"16px\"} }\nconst _hoisted_59 = { style: {\"width\":\"20px\",\"color\":\"var(--faint,rgba(255,255,255,0.6))\"} }\nconst _hoisted_60 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_61 = { style: {\"flex\":\"1\",\"min-width\":\"0\"} }\nconst _hoisted_62 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_63 = { style: {\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_64 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_65 = {\n  key: 1,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"24px\"}\n}\nconst _hoisted_66 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"flex-end\",\"gap\":\"24px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_67 = { style: {\"display\":\"flex\",\"gap\":\"4px\",\"padding\":\"4px\",\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\"} }\nconst _hoisted_68 = [\"onClick\"]\nconst _hoisted_69 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_70 = { style: {\"flex\":\"1 1 360px\",\"min-width\":\"0\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"12px\"} }\nconst _hoisted_71 = { style: {\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"12px\"} }\nconst _hoisted_72 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_73 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"2px\",\"min-width\":\"0\"} }\nconst _hoisted_74 = { style: {\"font-size\":\"17px\",\"font-weight\":\"600\"} }\nconst _hoisted_75 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_76 = { style: {\"font-size\":\"13px\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_77 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_78 = {\n  key: 1,\n  class: \"sc-interp\"\n}\nconst _hoisted_79 = { style: {\"margin\":\"0\",\"font-size\":\"15px\",\"line-height\":\"1.5\",\"color\":\"var(--text,rgba(255,255,255,0.85))\",\"text-wrap\":\"pretty\"} }\nconst _hoisted_80 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_81 = { style: {\"display\":\"flex\",\"gap\":\"16px\",\"flex-wrap\":\"wrap\",\"font-size\":\"13px\",\"color\":\"var(--faint,rgba(255,255,255,0.6))\"} }\nconst _hoisted_82 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_83 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_84 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_85 = {\n  key: 0,\n  style: {\"display\":\"flex\",\"gap\":\"8px\",\"flex-wrap\":\"wrap\"}\n}\nconst _hoisted_86 = [\"onClick\"]\nconst _hoisted_87 = [\"onClick\"]\nconst _hoisted_88 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_89 = {\n  key: 0,\n  style: {\"border-radius\":\"16px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"40px 24px\",\"text-align\":\"center\",\"font-size\":\"15px\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"}\n}\nconst _hoisted_90 = {\n  key: 2,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"24px\"}\n}\nconst _hoisted_91 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"flex-end\",\"gap\":\"24px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_92 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\"} }\nconst _hoisted_93 = { style: {\"font-size\":\"16px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_94 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_95 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_96 = { style: {\"display\":\"grid\",\"grid-template-columns\":\"repeat(auto-fit,minmax(min(220px,100%),1fr))\",\"gap\":\"12px\"} }\nconst _hoisted_97 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\",\"font-size\":\"14px\",\"font-weight\":\"500\",\"min-width\":\"0\"} }\nconst _hoisted_98 = [\"value\"]\nconst _hoisted_99 = {\n  key: 0,\n  style: {\"font-size\":\"13px\",\"color\":\"#4F0151\"}\n}\nconst _hoisted_100 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\",\"font-size\":\"14px\",\"font-weight\":\"500\",\"min-width\":\"0\"} }\nconst _hoisted_101 = [\"value\"]\nconst _hoisted_102 = {\n  key: 0,\n  style: {\"font-size\":\"13px\",\"color\":\"#4F0151\"}\n}\nconst _hoisted_103 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\",\"font-size\":\"14px\",\"font-weight\":\"500\",\"min-width\":\"0\"} }\nconst _hoisted_104 = [\"value\"]\nconst _hoisted_105 = {\n  key: 0,\n  style: {\"font-size\":\"13px\",\"color\":\"#4F0151\"}\n}\nconst _hoisted_106 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\",\"font-size\":\"14px\",\"font-weight\":\"500\",\"min-width\":\"0\"} }\nconst _hoisted_107 = [\"value\"]\nconst _hoisted_108 = { style: {\"display\":\"flex\",\"gap\":\"8px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_109 = { style: {\"display\":\"flex\",\"gap\":\"8px\",\"flex-wrap\":\"wrap\",\"align-items\":\"center\"} }\nconst _hoisted_110 = { style: {\"flex\":\"1 1 260px\",\"height\":\"46px\",\"border-radius\":\"12px\",\"box-shadow\":\"inset 0 0 0 1px var(--hair,rgba(255,255,255,0.12))\",\"display\":\"flex\",\"align-items\":\"center\",\"padding\":\"0 14px\"} }\nconst _hoisted_111 = [\"value\"]\nconst _hoisted_112 = { style: {\"display\":\"flex\",\"gap\":\"4px\",\"padding\":\"4px\",\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\"} }\nconst _hoisted_113 = [\"onClick\"]\nconst _hoisted_114 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_115 = { style: {\"border-radius\":\"16px\",\"background\":\"var(--surface,#2A2260)\",\"overflow\":\"hidden\"} }\nconst _hoisted_116 = { style: {\"width\":\"36px\",\"height\":\"36px\",\"border-radius\":\"8px\",\"background\":\"var(--bg,#1F184E)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\",\"font-size\":\"13px\",\"font-weight\":\"600\",\"flex-shrink\":\"0\"} }\nconst _hoisted_117 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_118 = { style: {\"flex\":\"1 1 200px\",\"min-width\":\"0\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"2px\"} }\nconst _hoisted_119 = { style: {\"font-size\":\"15px\",\"font-weight\":\"600\"} }\nconst _hoisted_120 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_121 = { style: {\"font-size\":\"13px\",\"color\":\"var(--faint,rgba(255,255,255,0.6))\",\"overflow\":\"hidden\",\"text-overflow\":\"ellipsis\"} }\nconst _hoisted_122 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_123 = { style: {\"flex\":\"0 1 180px\",\"font-size\":\"14px\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_124 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_125 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_126 = { style: {\"flex\":\"0 0 120px\",\"font-size\":\"13px\",\"color\":\"var(--faint,rgba(255,255,255,0.6))\"} }\nconst _hoisted_127 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_128 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_129 = {\n  key: 3,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"24px\"}\n}\nconst _hoisted_130 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"flex-end\",\"gap\":\"24px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_131 = { style: {\"display\":\"flex\",\"gap\":\"4px\",\"padding\":\"4px\",\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\"} }\nconst _hoisted_132 = [\"onClick\"]\nconst _hoisted_133 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_134 = { style: {\"display\":\"flex\",\"flex-wrap\":\"wrap\",\"gap\":\"12px\",\"align-items\":\"flex-start\"} }\nconst _hoisted_135 = { style: {\"flex\":\"1 1 340px\",\"min-width\":\"0\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\"} }\nconst _hoisted_136 = [\"onClick\"]\nconst _hoisted_137 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"gap\":\"12px\",\"font-size\":\"12px\",\"color\":\"var(--faint,rgba(255,255,255,0.6))\"} }\nconst _hoisted_138 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_139 = {\n  key: 1,\n  class: \"sc-interp\"\n}\nconst _hoisted_140 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_141 = { style: {\"font-size\":\"16px\",\"line-height\":\"1.35\",\"font-weight\":\"600\"} }\nconst _hoisted_142 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_143 = { style: {\"font-size\":\"13px\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_144 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_145 = {\n  key: 0,\n  style: {\"border-radius\":\"16px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"32px 20px\",\"text-align\":\"center\",\"font-size\":\"15px\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"}\n}\nconst _hoisted_146 = {\n  key: 0,\n  style: {\"flex\":\"1.4 1 420px\",\"min-width\":\"0\",\"border-radius\":\"16px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"clamp(20px,3vw,32px)\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"20px\"}\n}\nconst _hoisted_147 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"10px\"} }\nconst _hoisted_148 = { style: {\"font-size\":\"13px\",\"color\":\"var(--faint,rgba(255,255,255,0.6))\"} }\nconst _hoisted_149 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_150 = {\n  key: 1,\n  class: \"sc-interp\"\n}\nconst _hoisted_151 = { style: {\"font-family\":\"Degular,sans-serif\",\"font-weight\":\"800\",\"font-size\":\"34px\",\"line-height\":\"0.95\",\"letter-spacing\":\"-0.02em\"} }\nconst _hoisted_152 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_153 = { style: {\"font-size\":\"14px\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_154 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_155 = {\n  key: 1,\n  class: \"sc-interp\"\n}\nconst _hoisted_156 = { style: {\"margin\":\"0\",\"font-size\":\"15px\",\"line-height\":\"1.55\",\"color\":\"var(--text,rgba(255,255,255,0.85))\",\"text-wrap\":\"pretty\"} }\nconst _hoisted_157 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_158 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"10px\"} }\nconst _hoisted_159 = { style: {\"display\":\"flex\",\"gap\":\"6px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_160 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_161 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\"} }\nconst _hoisted_162 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_163 = {\n  key: 0,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"12px\",\"padding-top\":\"4px\"}\n}\nconst _hoisted_164 = { style: {\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"10px\",\"font-size\":\"14px\",\"font-weight\":\"500\",\"cursor\":\"pointer\"} }\nconst _hoisted_165 = [\"checked\"]\nconst _hoisted_166 = [\"value\"]\nconst _hoisted_167 = {\n  key: 0,\n  style: {\"font-size\":\"13px\",\"color\":\"var(--warn,#F388FF)\"}\n}\nconst _hoisted_168 = { style: {\"display\":\"flex\",\"gap\":\"8px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_169 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_170 = {\n  key: 1,\n  role: \"status\",\n  style: {\"position\":\"fixed\",\"left\":\"50%\",\"bottom\":\"24px\",\"transform\":\"translateX(-50%)\",\"z-index\":\"50\",\"border-radius\":\"12px\",\"background\":\"var(--text,#F9F7F3)\",\"color\":\"var(--bg,#1F184E)\",\"padding\":\"14px 20px\",\"font-size\":\"14px\",\"font-weight\":\"600\",\"box-shadow\":\"0 12px 32px rgba(10,8,30,0.35)\",\"max-width\":\"calc(100vw - 32px)\"}\n}\nconst _hoisted_171 = {\n  key: 0,\n  class: \"sc-interp\"\n}\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n  return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n    _createElementVNode(\"div\", {\n      \"data-screen-label\": \"Beheer\",\n      ref: (el) => $setup.dcrt.setRef($setup.dcv.rootRef, el),\n      style: {\"position\":\"absolute\",\"inset\":\"0\",\"display\":\"flex\",\"background\":\"var(--bg,#1F184E)\",\"color\":\"var(--text,#F9F7F3)\",\"font-family\":\"'Golos Text',sans-serif\",\"overflow\":\"hidden\"}\n    }, [\n      ($setup.dcv.wide)\n        ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n            _createElementVNode(\"nav\", _hoisted_3, [\n              _createElementVNode(\"div\", _hoisted_4, [\n                _cache[13] || (_cache[13] = _createElementVNode(\"div\", { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"10px\",\"padding\":\"0 12px\"} }, [\n                  _createElementVNode(\"img\", {\n                    src: \"/.publisher/sd/kiek/kiek/assets/home/kiek-logo.svg\",\n                    alt: \"Kiek\",\n                    style: {\"width\":\"120px\",\"height\":\"40.195px\",\"display\":\"block\"}\n                  }),\n                  _createTextVNode(),\n                  _createElementVNode(\"span\", { style: {\"align-self\":\"flex-start\",\"border-radius\":\"100px\",\"background\":\"rgba(125,128,255,0.18)\",\"color\":\"var(--accText,#7D80FF)\",\"padding\":\"4px 10px\",\"font-size\":\"12px\",\"line-height\":\"1.4\",\"font-weight\":\"600\"} }, \"Beheer\")\n                ], -1 /* CACHED */)),\n                _cache[14] || (_cache[14] = _createTextVNode()),\n                _createElementVNode(\"div\", _hoisted_5, [\n                  (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.nav), (n, $index) => {\n                    return (_openBlock(), _createElementBlock(\"button\", {\n                      key: $index,\n                      class: \"beheer-scp0\",\n                      type: \"button\",\n                      onClick: n?.onClick,\n                      style: _normalizeStyle($setup.dcrt.style(`position:relative;height:46px;border:none;border-radius:8px;background:${n?.bg ?? ''};color:var(--text,#F9F7F3);display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;cursor:pointer;font-size:15px;font-weight:${n?.weight ?? ''};text-align:left`))\n                    }, [\n                      _createElementVNode(\"span\", null, [\n                        ($setup.dcrt.shows(n?.label))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_7, _toDisplayString(n?.label), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ]),\n                      _cache[12] || (_cache[12] = _createTextVNode()),\n                      (n?.hasBadge)\n                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_8, [\n                            ($setup.dcrt.shows(n?.badge))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_9, _toDisplayString(n?.badge), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ]))\n                        : _createCommentVNode(\"v-if\", true)\n                    ], 12 /* STYLE, PROPS */, _hoisted_6))\n                  }), 128 /* KEYED_FRAGMENT */))\n                ])\n              ]),\n              _cache[16] || (_cache[16] = _createTextVNode()),\n              _createElementVNode(\"div\", _hoisted_10, [\n                _createElementVNode(\"a\", {\n                  class: \"beheer-scp1\",\n                  href: $setup.dcrt.page('app/'),\n                  style: {\"height\":\"46px\",\"border-radius\":\"8px\",\"display\":\"flex\",\"align-items\":\"center\",\"padding\":\"12px\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\",\"font-size\":\"14px\",\"font-weight\":\"500\",\"text-decoration\":\"none\"}\n                }, \"Naar de chat\", 8 /* PROPS */, _hoisted_11),\n                _cache[15] || (_cache[15] = _createStaticVNode(\" <div style=\\\"height:1px;margin:0 12px;background:var(--hair,rgba(255,255,255,0.12));\\\"></div> <div style=\\\"display:flex;align-items:center;gap:12px;padding:8px 12px;\\\"><span style=\\\"width:36px;height:36px;border-radius:8px;background:var(--surface,#2A2260);color:var(--muted,rgba(255,255,255,0.75));display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;flex-shrink:0;\\\">JV</span> <span style=\\\"display:flex;flex-direction:column;gap:2px;min-width:0;\\\"><span style=\\\"font-size:14px;line-height:1.2;font-weight:700;\\\">Joost Veldhuis</span> <span style=\\\"font-size:12px;line-height:1.4;color:var(--muted,rgba(255,255,255,0.75));\\\">Beheerder · Cinergie</span></span></div>\", 4))\n              ])\n            ])\n          ]))\n        : _createCommentVNode(\"v-if\", true),\n      _cache[126] || (_cache[126] = _createTextVNode()),\n      _createElementVNode(\"main\", _hoisted_12, [\n        ($setup.dcv.showChips)\n          ? (_openBlock(), _createElementBlock(\"div\", {\n              key: 0,\n              style: _normalizeStyle($setup.dcrt.style(`display:flex;flex-direction:column;gap:12px;padding:${$setup.dcv.chipPad ?? ''}`))\n            }, [\n              ($setup.dcv.narrow)\n                ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, _cache[17] || (_cache[17] = [\n                    _createElementVNode(\"img\", {\n                      src: \"/.publisher/sd/kiek/kiek/assets/home/kiek-logo.svg\",\n                      alt: \"Kiek\",\n                      style: {\"width\":\"90px\",\"height\":\"30px\",\"display\":\"block\"}\n                    }, null, -1 /* CACHED */),\n                    _createTextVNode(),\n                    _createElementVNode(\"span\", { style: {\"border-radius\":\"100px\",\"background\":\"rgba(125,128,255,0.18)\",\"color\":\"var(--accText,#7D80FF)\",\"padding\":\"4px 10px\",\"font-size\":\"12px\",\"font-weight\":\"600\"} }, \"Beheer\", -1 /* CACHED */)\n                  ])))\n                : _createCommentVNode(\"v-if\", true),\n              _cache[18] || (_cache[18] = _createTextVNode()),\n              _createElementVNode(\"div\", _hoisted_14, [\n                (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.nav), (n, $index) => {\n                  return (_openBlock(), _createElementBlock(\"button\", {\n                    key: $index,\n                    type: \"button\",\n                    onClick: n?.onClick,\n                    style: _normalizeStyle($setup.dcrt.style(`flex-shrink:0;height:40px;border:none;border-radius:100px;background:${n?.chipBg ?? ''};color:${n?.chipColor ?? ''};padding:0 14px;font-size:14px;font-weight:500;cursor:pointer;white-space:nowrap`))\n                  }, [\n                    ($setup.dcrt.shows(n?.chip))\n                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_16, _toDisplayString(n?.chip), 1 /* TEXT */))\n                      : _createCommentVNode(\"v-if\", true)\n                  ], 12 /* STYLE, PROPS */, _hoisted_15))\n                }), 128 /* KEYED_FRAGMENT */))\n              ])\n            ], 4 /* STYLE */))\n          : _createCommentVNode(\"v-if\", true),\n        _cache[125] || (_cache[125] = _createTextVNode()),\n        _createElementVNode(\"div\", _hoisted_17, [\n          ($setup.dcv.isDash)\n            ? (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [\n                _createElementVNode(\"div\", _hoisted_19, [\n                  _cache[19] || (_cache[19] = _createElementVNode(\"div\", { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\"} }, [\n                    _createElementVNode(\"h1\", { style: {\"margin\":\"0\",\"font-family\":\"Degular,sans-serif\",\"font-weight\":\"800\",\"font-size\":\"clamp(44px,5vw,64px)\",\"line-height\":\"0.85\",\"letter-spacing\":\"-0.02em\"} }, \"Zo draait Kiek.\"),\n                    _createTextVNode(),\n                    _createElementVNode(\"span\", { style: {\"font-size\":\"16px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Gebruik, verbruik en de gezondheid van het systeem.\")\n                  ], -1 /* CACHED */)),\n                  _cache[20] || (_cache[20] = _createTextVNode()),\n                  _createElementVNode(\"div\", _hoisted_20, [\n                    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.periods), (p, $index) => {\n                      return (_openBlock(), _createElementBlock(\"button\", {\n                        key: $index,\n                        type: \"button\",\n                        role: \"tab\",\n                        \"aria-selected\": $setup.dcrt.attr(p?.active),\n                        onClick: p?.onClick,\n                        style: _normalizeStyle($setup.dcrt.style(`height:38px;border:none;border-radius:8px;background:${p?.bg ?? ''};color:${p?.color ?? ''};padding:0 14px;font-size:14px;font-weight:500;cursor:pointer`))\n                      }, [\n                        ($setup.dcrt.shows(p?.label))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_22, _toDisplayString(p?.label), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ], 12 /* STYLE, PROPS */, _hoisted_21))\n                    }), 128 /* KEYED_FRAGMENT */))\n                  ])\n                ]),\n                _cache[52] || (_cache[52] = _createTextVNode()),\n                _createElementVNode(\"div\", _hoisted_23, [\n                  (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.kpis), (k, $index) => {\n                    return (_openBlock(), _createElementBlock(\"div\", {\n                      key: $index,\n                      style: {\"border-radius\":\"16px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"20px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"10px\",\"min-height\":\"150px\"}\n                    }, [\n                      _createElementVNode(\"span\", _hoisted_24, [\n                        ($setup.dcrt.shows(k?.label))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_25, _toDisplayString(k?.label), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ]),\n                      _cache[21] || (_cache[21] = _createTextVNode()),\n                      _createElementVNode(\"span\", _hoisted_26, [\n                        ($setup.dcrt.shows(k?.value))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_27, _toDisplayString(k?.value), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ]),\n                      _cache[22] || (_cache[22] = _createTextVNode()),\n                      _createElementVNode(\"span\", {\n                        style: _normalizeStyle($setup.dcrt.style(`margin-top:auto;font-size:13px;line-height:1.4;font-weight:500;color:${k?.deltaColor ?? ''}`))\n                      }, [\n                        ($setup.dcrt.shows(k?.delta))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_28, _toDisplayString(k?.delta), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ], 4 /* STYLE */)\n                    ]))\n                  }), 128 /* KEYED_FRAGMENT */))\n                ]),\n                _cache[53] || (_cache[53] = _createTextVNode()),\n                _createElementVNode(\"div\", _hoisted_29, [\n                  _createElementVNode(\"div\", _hoisted_30, [\n                    _createElementVNode(\"div\", _hoisted_31, [\n                      _cache[23] || (_cache[23] = _createElementVNode(\"span\", { style: {\"font-size\":\"18px\",\"line-height\":\"1.3\",\"font-weight\":\"600\"} }, \"Tokenverbruik per dag\", -1 /* CACHED */)),\n                      _cache[24] || (_cache[24] = _createTextVNode()),\n                      _createElementVNode(\"span\", _hoisted_32, [\n                        ($setup.dcrt.shows($setup.dcv.tokTotal))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_33, _toDisplayString($setup.dcv.tokTotal), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ])\n                    ]),\n                    _cache[28] || (_cache[28] = _createTextVNode()),\n                    _createElementVNode(\"div\", {\n                      style: _normalizeStyle($setup.dcrt.style(`position:relative;height:200px;display:flex;align-items:flex-end;gap:${$setup.dcv.barGap ?? ''}`))\n                    }, [\n                      _createElementVNode(\"div\", {\n                        style: _normalizeStyle($setup.dcrt.style(`position:absolute;left:0;right:0;bottom:${$setup.dcv.budgetLine ?? ''};border-top:1px dashed rgba(243,136,255,0.7);pointer-events:none`))\n                      }, _cache[25] || (_cache[25] = [\n                        _createElementVNode(\"span\", { style: {\"position\":\"absolute\",\"right\":\"0\",\"bottom\":\"4px\",\"font-size\":\"11px\",\"font-weight\":\"600\",\"color\":\"var(--warn,#F388FF)\"} }, \"Dagbudget 1,2 mln\", -1 /* CACHED */)\n                      ]), 4 /* STYLE */),\n                      _cache[26] || (_cache[26] = _createTextVNode()),\n                      (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.tokBars), (b, $index) => {\n                        return (_openBlock(), _createElementBlock(\"div\", {\n                          key: $index,\n                          title: b?.tip,\n                          style: _normalizeStyle($setup.dcrt.style(`flex:1;min-width:0;height:${b?.h ?? ''};border-radius:4px 4px 0 0;background:${b?.color ?? ''}`))\n                        }, null, 12 /* STYLE, PROPS */, _hoisted_34))\n                      }), 128 /* KEYED_FRAGMENT */))\n                    ], 4 /* STYLE */),\n                    _cache[29] || (_cache[29] = _createTextVNode()),\n                    _createElementVNode(\"div\", _hoisted_35, [\n                      _createElementVNode(\"span\", null, [\n                        ($setup.dcrt.shows($setup.dcv.axisStart))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_36, _toDisplayString($setup.dcv.axisStart), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ]),\n                      _cache[27] || (_cache[27] = _createElementVNode(\"span\", null, \"Vandaag\", -1 /* CACHED */))\n                    ])\n                  ]),\n                  _cache[38] || (_cache[38] = _createTextVNode()),\n                  _createElementVNode(\"div\", _hoisted_37, [\n                    _createElementVNode(\"div\", _hoisted_38, [\n                      _cache[30] || (_cache[30] = _createElementVNode(\"span\", { style: {\"font-size\":\"18px\",\"line-height\":\"1.3\",\"font-weight\":\"600\"} }, \"Gesprekken per dag\", -1 /* CACHED */)),\n                      _cache[31] || (_cache[31] = _createTextVNode()),\n                      _createElementVNode(\"span\", _hoisted_39, [\n                        ($setup.dcrt.shows($setup.dcv.convTotal))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_40, _toDisplayString($setup.dcv.convTotal), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ])\n                    ]),\n                    _cache[36] || (_cache[36] = _createTextVNode()),\n                    _createElementVNode(\"div\", {\n                      style: _normalizeStyle($setup.dcrt.style(`height:200px;display:flex;align-items:flex-end;gap:${$setup.dcv.barGap ?? ''}`))\n                    }, [\n                      (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.convBars), (b, $index) => {\n                        return (_openBlock(), _createElementBlock(\"div\", {\n                          key: $index,\n                          title: b?.tip,\n                          style: _normalizeStyle($setup.dcrt.style(`flex:1;min-width:0;height:${b?.h ?? ''};display:flex;flex-direction:column;justify-content:flex-end`))\n                        }, [\n                          _createElementVNode(\"div\", {\n                            style: _normalizeStyle($setup.dcrt.style(`height:${b?.newH ?? ''};background:#70E9A2;border-radius:4px 4px 0 0`))\n                          }, null, 4 /* STYLE */),\n                          _cache[32] || (_cache[32] = _createTextVNode()),\n                          _cache[33] || (_cache[33] = _createElementVNode(\"div\", { style: {\"flex\":\"1\",\"background\":\"#7D80FF\"} }, null, -1 /* CACHED */))\n                        ], 12 /* STYLE, PROPS */, _hoisted_41))\n                      }), 128 /* KEYED_FRAGMENT */))\n                    ], 4 /* STYLE */),\n                    _cache[37] || (_cache[37] = _createTextVNode()),\n                    _createElementVNode(\"div\", _hoisted_42, [\n                      _cache[35] || (_cache[35] = _createStaticVNode(\"<span style=\\\"display:flex;gap:16px;\\\"><span style=\\\"display:flex;align-items:center;gap:6px;\\\"><span style=\\\"width:10px;height:10px;border-radius:3px;background:#7D80FF;\\\"></span>Terugkerend</span> <span style=\\\"display:flex;align-items:center;gap:6px;\\\"><span style=\\\"width:10px;height:10px;border-radius:3px;background:#70E9A2;\\\"></span>Nieuwe gebruikers</span></span> \", 2)),\n                      _createElementVNode(\"span\", null, [\n                        ($setup.dcrt.shows($setup.dcv.axisStart))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_43, _toDisplayString($setup.dcv.axisStart), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true),\n                        _cache[34] || (_cache[34] = _createTextVNode(\" – vandaag\", -1 /* CACHED */))\n                      ])\n                    ])\n                  ])\n                ]),\n                _cache[54] || (_cache[54] = _createTextVNode()),\n                _createElementVNode(\"div\", _hoisted_44, [\n                  _createElementVNode(\"div\", _hoisted_45, [\n                    _cache[41] || (_cache[41] = _createElementVNode(\"span\", { style: {\"font-size\":\"18px\",\"line-height\":\"1.3\",\"font-weight\":\"600\"} }, \"Diensten\", -1 /* CACHED */)),\n                    _cache[42] || (_cache[42] = _createTextVNode()),\n                    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.services), (sv, $index) => {\n                      return (_openBlock(), _createElementBlock(\"div\", {\n                        key: $index,\n                        style: {\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"space-between\",\"gap\":\"12px\",\"padding\":\"12px 0\",\"border-top\":\"1px solid var(--line,rgba(255,255,255,0.08))\"}\n                      }, [\n                        _createElementVNode(\"span\", _hoisted_46, [\n                          _createElementVNode(\"span\", _hoisted_47, [\n                            ($setup.dcrt.shows(sv?.name))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_48, _toDisplayString(sv?.name), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ]),\n                          _cache[39] || (_cache[39] = _createTextVNode()),\n                          _createElementVNode(\"span\", _hoisted_49, [\n                            ($setup.dcrt.shows(sv?.meta))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_50, _toDisplayString(sv?.meta), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ])\n                        ]),\n                        _cache[40] || (_cache[40] = _createTextVNode()),\n                        _createElementVNode(\"span\", {\n                          style: _normalizeStyle($setup.dcrt.style(`display:flex;align-items:center;gap:8px;flex-shrink:0;font-size:13px;font-weight:500;color:${sv?.color ?? ''}`))\n                        }, [\n                          _createElementVNode(\"span\", {\n                            style: _normalizeStyle($setup.dcrt.style(`width:8px;height:8px;border-radius:50%;background:${sv?.color ?? ''}`))\n                          }, null, 4 /* STYLE */),\n                          ($setup.dcrt.shows(sv?.status))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_51, _toDisplayString(sv?.status), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ], 4 /* STYLE */)\n                      ]))\n                    }), 128 /* KEYED_FRAGMENT */))\n                  ]),\n                  _cache[50] || (_cache[50] = _createTextVNode()),\n                  _createElementVNode(\"div\", _hoisted_52, [\n                    _cache[44] || (_cache[44] = _createElementVNode(\"span\", { style: {\"font-size\":\"18px\",\"line-height\":\"1.3\",\"font-weight\":\"600\"} }, \"Verbruik per onderdeel\", -1 /* CACHED */)),\n                    _cache[45] || (_cache[45] = _createTextVNode()),\n                    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.split), (sp, $index) => {\n                      return (_openBlock(), _createElementBlock(\"div\", {\n                        key: $index,\n                        style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\"}\n                      }, [\n                        _createElementVNode(\"span\", _hoisted_53, [\n                          _createElementVNode(\"span\", null, [\n                            ($setup.dcrt.shows(sp?.label))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_54, _toDisplayString(sp?.label), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ]),\n                          _createElementVNode(\"span\", _hoisted_55, [\n                            ($setup.dcrt.shows(sp?.pct))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_56, _toDisplayString(sp?.pct), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ])\n                        ]),\n                        _cache[43] || (_cache[43] = _createTextVNode()),\n                        _createElementVNode(\"span\", _hoisted_57, [\n                          _createElementVNode(\"span\", {\n                            style: _normalizeStyle($setup.dcrt.style(`display:block;height:100%;width:${sp?.pct ?? ''};border-radius:100px;background:#7D80FF`))\n                          }, null, 4 /* STYLE */)\n                        ])\n                      ]))\n                    }), 128 /* KEYED_FRAGMENT */))\n                  ]),\n                  _cache[51] || (_cache[51] = _createTextVNode()),\n                  _createElementVNode(\"div\", _hoisted_58, [\n                    _cache[48] || (_cache[48] = _createElementVNode(\"span\", { style: {\"font-size\":\"18px\",\"line-height\":\"1.3\",\"font-weight\":\"600\"} }, \"Wordt gevraagd over\", -1 /* CACHED */)),\n                    _cache[49] || (_cache[49] = _createTextVNode()),\n                    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.topics), (t, $index) => {\n                      return (_openBlock(), _createElementBlock(\"div\", {\n                        key: $index,\n                        style: {\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"12px\",\"font-size\":\"14px\",\"font-weight\":\"500\"}\n                      }, [\n                        _createElementVNode(\"span\", _hoisted_59, [\n                          ($setup.dcrt.shows(t?.n))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_60, _toDisplayString(t?.n), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ]),\n                        _cache[46] || (_cache[46] = _createTextVNode()),\n                        _createElementVNode(\"span\", _hoisted_61, [\n                          ($setup.dcrt.shows(t?.label))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_62, _toDisplayString(t?.label), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ]),\n                        _cache[47] || (_cache[47] = _createTextVNode()),\n                        _createElementVNode(\"span\", _hoisted_63, [\n                          ($setup.dcrt.shows(t?.count))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_64, _toDisplayString(t?.count), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ])\n                      ]))\n                    }), 128 /* KEYED_FRAGMENT */))\n                  ])\n                ])\n              ]))\n            : _createCommentVNode(\"v-if\", true),\n          _cache[122] || (_cache[122] = _createTextVNode()),\n          ($setup.dcv.isReq)\n            ? (_openBlock(), _createElementBlock(\"div\", _hoisted_65, [\n                _createElementVNode(\"div\", _hoisted_66, [\n                  _cache[55] || (_cache[55] = _createElementVNode(\"div\", { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\"} }, [\n                    _createElementVNode(\"h1\", { style: {\"margin\":\"0\",\"font-family\":\"Degular,sans-serif\",\"font-weight\":\"800\",\"font-size\":\"clamp(44px,5vw,64px)\",\"line-height\":\"0.85\",\"letter-spacing\":\"-0.02em\"} }, \"Aanvragen.\"),\n                    _createTextVNode(),\n                    _createElementVNode(\"span\", { style: {\"font-size\":\"16px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Onderzoekers die toegang vragen om hun onderzoek te delen.\")\n                  ], -1 /* CACHED */)),\n                  _cache[56] || (_cache[56] = _createTextVNode()),\n                  _createElementVNode(\"div\", _hoisted_67, [\n                    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.reqTabs), (p, $index) => {\n                      return (_openBlock(), _createElementBlock(\"button\", {\n                        key: $index,\n                        type: \"button\",\n                        onClick: p?.onClick,\n                        style: _normalizeStyle($setup.dcrt.style(`height:38px;border:none;border-radius:8px;background:${p?.bg ?? ''};color:${p?.color ?? ''};padding:0 14px;font-size:14px;font-weight:500;cursor:pointer`))\n                      }, [\n                        ($setup.dcrt.shows(p?.label))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_69, _toDisplayString(p?.label), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ], 12 /* STYLE, PROPS */, _hoisted_68))\n                    }), 128 /* KEYED_FRAGMENT */))\n                  ])\n                ]),\n                _cache[65] || (_cache[65] = _createTextVNode()),\n                (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.reqs), (r, $index) => {\n                  return (_openBlock(), _createElementBlock(\"div\", {\n                    key: $index,\n                    style: {\"border-radius\":\"16px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"24px\",\"display\":\"flex\",\"flex-wrap\":\"wrap\",\"gap\":\"20px 32px\",\"align-items\":\"flex-start\"}\n                  }, [\n                    _createElementVNode(\"div\", _hoisted_70, [\n                      _createElementVNode(\"div\", _hoisted_71, [\n                        _createElementVNode(\"span\", {\n                          style: _normalizeStyle($setup.dcrt.style(`width:44px;height:44px;border-radius:10px;background:${r?.avBg ?? ''};color:#1F184E;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:700;flex-shrink:0`))\n                        }, [\n                          ($setup.dcrt.shows(r?.initials))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_72, _toDisplayString(r?.initials), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ], 4 /* STYLE */),\n                        _cache[59] || (_cache[59] = _createTextVNode()),\n                        _createElementVNode(\"span\", _hoisted_73, [\n                          _createElementVNode(\"span\", _hoisted_74, [\n                            ($setup.dcrt.shows(r?.name))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_75, _toDisplayString(r?.name), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ]),\n                          _cache[58] || (_cache[58] = _createTextVNode()),\n                          _createElementVNode(\"span\", _hoisted_76, [\n                            ($setup.dcrt.shows(r?.role))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_77, _toDisplayString(r?.role), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true),\n                            _cache[57] || (_cache[57] = _createTextVNode(\" · \", -1 /* CACHED */)),\n                            ($setup.dcrt.shows(r?.org))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_78, _toDisplayString(r?.org), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ])\n                        ])\n                      ]),\n                      _cache[60] || (_cache[60] = _createTextVNode()),\n                      _createElementVNode(\"p\", _hoisted_79, [\n                        ($setup.dcrt.shows(r?.why))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_80, _toDisplayString(r?.why), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ]),\n                      _cache[61] || (_cache[61] = _createTextVNode()),\n                      _createElementVNode(\"div\", _hoisted_81, [\n                        _createElementVNode(\"span\", null, [\n                          ($setup.dcrt.shows(r?.email))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_82, _toDisplayString(r?.email), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ]),\n                        _createElementVNode(\"span\", null, [\n                          ($setup.dcrt.shows(r?.when))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_83, _toDisplayString(r?.when), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ]),\n                        _createElementVNode(\"span\", null, [\n                          ($setup.dcrt.shows(r?.domainNote))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_84, _toDisplayString(r?.domainNote), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ])\n                      ])\n                    ]),\n                    _cache[63] || (_cache[63] = _createTextVNode()),\n                    (r?.open)\n                      ? (_openBlock(), _createElementBlock(\"div\", _hoisted_85, [\n                          _createElementVNode(\"button\", {\n                            class: \"beheer-scp0\",\n                            type: \"button\",\n                            onClick: r?.reject,\n                            style: {\"height\":\"46px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"none\",\"box-shadow\":\"inset 0 0 0 1px var(--hair2,rgba(255,255,255,0.18))\",\"color\":\"var(--text,#F9F7F3)\",\"padding\":\"0 18px\",\"font-size\":\"15px\",\"font-weight\":\"500\",\"cursor\":\"pointer\"}\n                          }, \"Afwijzen\", 8 /* PROPS */, _hoisted_86),\n                          _cache[62] || (_cache[62] = _createTextVNode()),\n                          _createElementVNode(\"button\", {\n                            class: \"beheer-scp2\",\n                            type: \"button\",\n                            onClick: r?.accept,\n                            style: {\"height\":\"46px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"#7D80FF\",\"color\":\"#FFFFFF\",\"padding\":\"0 20px\",\"font-size\":\"15px\",\"font-weight\":\"500\",\"cursor\":\"pointer\"}\n                          }, \"Accepteren\", 8 /* PROPS */, _hoisted_87)\n                        ]))\n                      : _createCommentVNode(\"v-if\", true),\n                    _cache[64] || (_cache[64] = _createTextVNode()),\n                    (r?.done)\n                      ? (_openBlock(), _createElementBlock(\"span\", {\n                          key: 1,\n                          style: _normalizeStyle($setup.dcrt.style(`border-radius:100px;background:${r?.statusBg ?? ''};color:${r?.statusColor ?? ''};padding:6px 12px;font-size:13px;font-weight:600`))\n                        }, [\n                          ($setup.dcrt.shows(r?.status))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_88, _toDisplayString(r?.status), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ], 4 /* STYLE */))\n                      : _createCommentVNode(\"v-if\", true)\n                  ]))\n                }), 128 /* KEYED_FRAGMENT */)),\n                _cache[66] || (_cache[66] = _createTextVNode()),\n                ($setup.dcv.reqEmpty)\n                  ? (_openBlock(), _createElementBlock(\"div\", _hoisted_89, \"Geen openstaande aanvragen. Alles is bijgewerkt.\"))\n                  : _createCommentVNode(\"v-if\", true)\n              ]))\n            : _createCommentVNode(\"v-if\", true),\n          _cache[123] || (_cache[123] = _createTextVNode()),\n          ($setup.dcv.isAcc)\n            ? (_openBlock(), _createElementBlock(\"div\", _hoisted_90, [\n                _createElementVNode(\"div\", _hoisted_91, [\n                  _createElementVNode(\"div\", _hoisted_92, [\n                    _cache[67] || (_cache[67] = _createElementVNode(\"h1\", { style: {\"margin\":\"0\",\"font-family\":\"Degular,sans-serif\",\"font-weight\":\"800\",\"font-size\":\"clamp(44px,5vw,64px)\",\"line-height\":\"0.85\",\"letter-spacing\":\"-0.02em\"} }, \"Accounts.\", -1 /* CACHED */)),\n                    _cache[68] || (_cache[68] = _createTextVNode()),\n                    _createElementVNode(\"span\", _hoisted_93, [\n                      ($setup.dcrt.shows($setup.dcv.accSummary))\n                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_94, _toDisplayString($setup.dcv.accSummary), 1 /* TEXT */))\n                        : _createCommentVNode(\"v-if\", true)\n                    ])\n                  ]),\n                  _cache[69] || (_cache[69] = _createTextVNode()),\n                  _createElementVNode(\"button\", {\n                    type: \"button\",\n                    onClick: _cache[0] || (_cache[0] = (...args) => ($setup.dcv.toggleForm && $setup.dcv.toggleForm(...args))),\n                    style: _normalizeStyle($setup.dcrt.style(`height:54px;border:none;border-radius:12px;background:${$setup.dcv.formBtnBg ?? ''};color:${$setup.dcv.formBtnColor ?? ''};padding:0 24px;font-size:16px;font-weight:500;cursor:pointer`))\n                  }, [\n                    ($setup.dcrt.shows($setup.dcv.formBtnLabel))\n                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_95, _toDisplayString($setup.dcv.formBtnLabel), 1 /* TEXT */))\n                      : _createCommentVNode(\"v-if\", true)\n                  ], 4 /* STYLE */)\n                ]),\n                _cache[93] || (_cache[93] = _createTextVNode()),\n                ($setup.dcv.formOpen)\n                  ? (_openBlock(), _createElementBlock(\"form\", {\n                      key: 0,\n                      onSubmit: _cache[6] || (_cache[6] = (...args) => ($setup.dcv.createAcc && $setup.dcv.createAcc(...args))),\n                      style: {\"border-radius\":\"16px\",\"background\":\"#7D80FF\",\"color\":\"#1F184E\",\"padding\":\"clamp(20px,3vw,32px)\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"20px\"}\n                    }, [\n                      _cache[83] || (_cache[83] = _createElementVNode(\"div\", { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"4px\"} }, [\n                        _createElementVNode(\"span\", { style: {\"font-family\":\"Degular,sans-serif\",\"font-weight\":\"800\",\"font-size\":\"32px\",\"line-height\":\"0.9\",\"letter-spacing\":\"-0.02em\"} }, \"Onderzoeker toevoegen\"),\n                        _createTextVNode(),\n                        _createElementVNode(\"span\", { style: {\"font-size\":\"14px\",\"font-weight\":\"500\",\"color\":\"rgba(31,24,78,0.75)\"} }, \"De onderzoeker krijgt een uitnodiging per mail om een wachtwoord in te stellen.\")\n                      ], -1 /* CACHED */)),\n                      _cache[84] || (_cache[84] = _createTextVNode()),\n                      _createElementVNode(\"div\", _hoisted_96, [\n                        _createElementVNode(\"label\", _hoisted_97, [\n                          _cache[70] || (_cache[70] = _createTextVNode(\"Voornaam\\n                  \", -1 /* CACHED */)),\n                          _createElementVNode(\"input\", {\n                            value: $setup.dcv.f?.first ?? '',\n                            onInput: _cache[1] || (_cache[1] = (...args) => ($setup.dcv.onFirst && $setup.dcv.onFirst(...args))),\n                            placeholder: \"Anouk\",\n                            style: {\"height\":\"50px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"rgba(31,24,78,0.1)\",\"color\":\"#1F184E\",\"padding\":\"0 14px\",\"font-size\":\"15px\",\"font-weight\":\"500\",\"outline\":\"none\",\"min-width\":\"0\"}\n                          }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_98),\n                          _cache[71] || (_cache[71] = _createTextVNode()),\n                          ($setup.dcv.errFirst)\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_99, \"Vul een voornaam in.\"))\n                            : _createCommentVNode(\"v-if\", true)\n                        ]),\n                        _cache[78] || (_cache[78] = _createTextVNode()),\n                        _createElementVNode(\"label\", _hoisted_100, [\n                          _cache[72] || (_cache[72] = _createTextVNode(\"Achternaam\\n                  \", -1 /* CACHED */)),\n                          _createElementVNode(\"input\", {\n                            value: $setup.dcv.f?.last ?? '',\n                            onInput: _cache[2] || (_cache[2] = (...args) => ($setup.dcv.onLast && $setup.dcv.onLast(...args))),\n                            placeholder: \"Brinkhuis\",\n                            style: {\"height\":\"50px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"rgba(31,24,78,0.1)\",\"color\":\"#1F184E\",\"padding\":\"0 14px\",\"font-size\":\"15px\",\"font-weight\":\"500\",\"outline\":\"none\",\"min-width\":\"0\"}\n                          }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_101),\n                          _cache[73] || (_cache[73] = _createTextVNode()),\n                          ($setup.dcv.errLast)\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_102, \"Vul een achternaam in.\"))\n                            : _createCommentVNode(\"v-if\", true)\n                        ]),\n                        _cache[79] || (_cache[79] = _createTextVNode()),\n                        _createElementVNode(\"label\", _hoisted_103, [\n                          _cache[74] || (_cache[74] = _createTextVNode(\"E-mailadres instelling\\n                  \", -1 /* CACHED */)),\n                          _createElementVNode(\"input\", {\n                            type: \"email\",\n                            value: $setup.dcv.f?.email ?? '',\n                            onInput: _cache[3] || (_cache[3] = (...args) => ($setup.dcv.onEmail && $setup.dcv.onEmail(...args))),\n                            placeholder: \"a.brinkhuis@saxion.nl\",\n                            style: {\"height\":\"50px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"rgba(31,24,78,0.1)\",\"color\":\"#1F184E\",\"padding\":\"0 14px\",\"font-size\":\"15px\",\"font-weight\":\"500\",\"outline\":\"none\",\"min-width\":\"0\"}\n                          }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_104),\n                          _cache[75] || (_cache[75] = _createTextVNode()),\n                          ($setup.dcv.errEmail)\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_105, \"Vul een geldig e-mailadres in.\"))\n                            : _createCommentVNode(\"v-if\", true)\n                        ]),\n                        _cache[80] || (_cache[80] = _createTextVNode()),\n                        _createElementVNode(\"label\", _hoisted_106, [\n                          _cache[77] || (_cache[77] = _createTextVNode(\"Instelling\\n                  \", -1 /* CACHED */)),\n                          _createElementVNode(\"select\", {\n                            value: $setup.dcv.f?.org ?? '',\n                            onChange: _cache[4] || (_cache[4] = (...args) => ($setup.dcv.onOrg && $setup.dcv.onOrg(...args))),\n                            style: {\"height\":\"50px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"rgba(31,24,78,0.1)\",\"color\":\"#1F184E\",\"padding\":\"0 14px\",\"font-size\":\"15px\",\"font-weight\":\"500\",\"outline\":\"none\",\"min-width\":\"0\"}\n                          }, _cache[76] || (_cache[76] = [\n                            _createElementVNode(\"option\", { value: \"Saxion\" }, \"Saxion\", -1 /* CACHED */),\n                            _createTextVNode(),\n                            _createElementVNode(\"option\", { value: \"Universiteit Twente\" }, \"Universiteit Twente\", -1 /* CACHED */),\n                            _createTextVNode(),\n                            _createElementVNode(\"option\", { value: \"ROC van Twente\" }, \"ROC van Twente\", -1 /* CACHED */),\n                            _createTextVNode(),\n                            _createElementVNode(\"option\", { value: \"Twente Board\" }, \"Twente Board\", -1 /* CACHED */)\n                          ]), 40 /* PROPS, NEED_HYDRATION */, _hoisted_107)\n                        ])\n                      ]),\n                      _cache[85] || (_cache[85] = _createTextVNode()),\n                      _createElementVNode(\"div\", _hoisted_108, [\n                        _cache[81] || (_cache[81] = _createElementVNode(\"button\", {\n                          type: \"submit\",\n                          style: {\"height\":\"50px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"#1F184E\",\"color\":\"#F9F7F3\",\"padding\":\"0 22px\",\"font-size\":\"15px\",\"font-weight\":\"500\",\"cursor\":\"pointer\"}\n                        }, \"Account aanmaken en uitnodigen\", -1 /* CACHED */)),\n                        _cache[82] || (_cache[82] = _createTextVNode()),\n                        _createElementVNode(\"button\", {\n                          type: \"button\",\n                          onClick: _cache[5] || (_cache[5] = (...args) => ($setup.dcv.toggleForm && $setup.dcv.toggleForm(...args))),\n                          style: {\"height\":\"50px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"rgba(31,24,78,0.1)\",\"color\":\"#1F184E\",\"padding\":\"0 20px\",\"font-size\":\"15px\",\"font-weight\":\"500\",\"cursor\":\"pointer\"}\n                        }, \"Annuleren\")\n                      ])\n                    ], 32 /* NEED_HYDRATION */))\n                  : _createCommentVNode(\"v-if\", true),\n                _cache[94] || (_cache[94] = _createTextVNode()),\n                _createElementVNode(\"div\", _hoisted_109, [\n                  _createElementVNode(\"label\", _hoisted_110, [\n                    _createElementVNode(\"input\", {\n                      value: $setup.dcv.accQ ?? '',\n                      onInput: _cache[7] || (_cache[7] = (...args) => ($setup.dcv.onAccQ && $setup.dcv.onAccQ(...args))),\n                      placeholder: \"Zoek op naam, e-mail of instelling\",\n                      \"aria-label\": \"Zoek accounts\",\n                      style: {\"flex\":\"1\",\"min-width\":\"0\",\"border\":\"none\",\"outline\":\"none\",\"background\":\"none\",\"color\":\"inherit\",\"font-size\":\"15px\"}\n                    }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_111)\n                  ]),\n                  _cache[86] || (_cache[86] = _createTextVNode()),\n                  _createElementVNode(\"div\", _hoisted_112, [\n                    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.roleTabs), (p, $index) => {\n                      return (_openBlock(), _createElementBlock(\"button\", {\n                        key: $index,\n                        type: \"button\",\n                        onClick: p?.onClick,\n                        style: _normalizeStyle($setup.dcrt.style(`height:38px;border:none;border-radius:8px;background:${p?.bg ?? ''};color:${p?.color ?? ''};padding:0 14px;font-size:14px;font-weight:500;cursor:pointer`))\n                      }, [\n                        ($setup.dcrt.shows(p?.label))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_114, _toDisplayString(p?.label), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ], 12 /* STYLE, PROPS */, _hoisted_113))\n                    }), 128 /* KEYED_FRAGMENT */))\n                  ])\n                ]),\n                _cache[95] || (_cache[95] = _createTextVNode()),\n                _createElementVNode(\"div\", _hoisted_115, [\n                  (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.accounts), (a, $index) => {\n                    return (_openBlock(), _createElementBlock(\"div\", {\n                      key: $index,\n                      style: _normalizeStyle($setup.dcrt.style(`display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:14px 20px;border-top:${a?.border ?? ''}`))\n                    }, [\n                      _createElementVNode(\"span\", _hoisted_116, [\n                        ($setup.dcrt.shows(a?.initials))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_117, _toDisplayString(a?.initials), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ]),\n                      _cache[88] || (_cache[88] = _createTextVNode()),\n                      _createElementVNode(\"span\", _hoisted_118, [\n                        _createElementVNode(\"span\", _hoisted_119, [\n                          ($setup.dcrt.shows(a?.name))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_120, _toDisplayString(a?.name), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ]),\n                        _cache[87] || (_cache[87] = _createTextVNode()),\n                        _createElementVNode(\"span\", _hoisted_121, [\n                          ($setup.dcrt.shows(a?.email))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_122, _toDisplayString(a?.email), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ])\n                      ]),\n                      _cache[89] || (_cache[89] = _createTextVNode()),\n                      _createElementVNode(\"span\", _hoisted_123, [\n                        ($setup.dcrt.shows(a?.org))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_124, _toDisplayString(a?.org), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ]),\n                      _cache[90] || (_cache[90] = _createTextVNode()),\n                      _createElementVNode(\"span\", {\n                        style: _normalizeStyle($setup.dcrt.style(`flex:0 0 110px;font-size:13px;font-weight:600;color:${a?.roleColor ?? ''}`))\n                      }, [\n                        ($setup.dcrt.shows(a?.role))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_125, _toDisplayString(a?.role), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ], 4 /* STYLE */),\n                      _cache[91] || (_cache[91] = _createTextVNode()),\n                      _createElementVNode(\"span\", _hoisted_126, [\n                        ($setup.dcrt.shows(a?.last))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_127, _toDisplayString(a?.last), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ]),\n                      _cache[92] || (_cache[92] = _createTextVNode()),\n                      _createElementVNode(\"span\", {\n                        style: _normalizeStyle($setup.dcrt.style(`flex:0 0 auto;border-radius:100px;background:${a?.stBg ?? ''};color:${a?.stColor ?? ''};padding:4px 10px;font-size:12px;font-weight:600`))\n                      }, [\n                        ($setup.dcrt.shows(a?.status))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_128, _toDisplayString(a?.status), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ], 4 /* STYLE */)\n                    ], 4 /* STYLE */))\n                  }), 128 /* KEYED_FRAGMENT */))\n                ])\n              ]))\n            : _createCommentVNode(\"v-if\", true),\n          _cache[124] || (_cache[124] = _createTextVNode()),\n          ($setup.dcv.isRes)\n            ? (_openBlock(), _createElementBlock(\"div\", _hoisted_129, [\n                _createElementVNode(\"div\", _hoisted_130, [\n                  _cache[96] || (_cache[96] = _createElementVNode(\"div\", { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\"} }, [\n                    _createElementVNode(\"h1\", { style: {\"margin\":\"0\",\"font-family\":\"Degular,sans-serif\",\"font-weight\":\"800\",\"font-size\":\"clamp(44px,5vw,64px)\",\"line-height\":\"0.85\",\"letter-spacing\":\"-0.02em\"} }, \"Ingezonden onderzoek.\"),\n                    _createTextVNode(),\n                    _createElementVNode(\"span\", { style: {\"font-size\":\"16px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Controleer wat er in de kennisbank van Kiek komt.\")\n                  ], -1 /* CACHED */)),\n                  _cache[97] || (_cache[97] = _createTextVNode()),\n                  _createElementVNode(\"div\", _hoisted_131, [\n                    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.resTabs), (p, $index) => {\n                      return (_openBlock(), _createElementBlock(\"button\", {\n                        key: $index,\n                        type: \"button\",\n                        onClick: p?.onClick,\n                        style: _normalizeStyle($setup.dcrt.style(`height:38px;border:none;border-radius:8px;background:${p?.bg ?? ''};color:${p?.color ?? ''};padding:0 14px;font-size:14px;font-weight:500;cursor:pointer`))\n                      }, [\n                        ($setup.dcrt.shows(p?.label))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_133, _toDisplayString(p?.label), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ], 12 /* STYLE, PROPS */, _hoisted_132))\n                    }), 128 /* KEYED_FRAGMENT */))\n                  ])\n                ]),\n                _cache[121] || (_cache[121] = _createTextVNode()),\n                _createElementVNode(\"div\", _hoisted_134, [\n                  _createElementVNode(\"div\", _hoisted_135, [\n                    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.studies), (st, $index) => {\n                      return (_openBlock(), _createElementBlock(\"button\", {\n                        key: $index,\n                        class: \"beheer-scp3\",\n                        type: \"button\",\n                        onClick: st?.onClick,\n                        style: _normalizeStyle($setup.dcrt.style(`border:none;border-radius:16px;background:${st?.bg ?? ''};box-shadow:${st?.ring ?? ''};color:var(--text,#F9F7F3);padding:18px 20px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:8px`))\n                      }, [\n                        _createElementVNode(\"span\", _hoisted_137, [\n                          _createElementVNode(\"span\", null, [\n                            ($setup.dcrt.shows(st?.org))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_138, _toDisplayString(st?.org), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true),\n                            _cache[98] || (_cache[98] = _createTextVNode(\" · \", -1 /* CACHED */)),\n                            ($setup.dcrt.shows(st?.when))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_139, _toDisplayString(st?.when), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ]),\n                          _createElementVNode(\"span\", {\n                            style: _normalizeStyle($setup.dcrt.style(`color:${st?.stColor ?? ''};font-weight:600`))\n                          }, [\n                            ($setup.dcrt.shows(st?.status))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_140, _toDisplayString(st?.status), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ], 4 /* STYLE */)\n                        ]),\n                        _cache[99] || (_cache[99] = _createTextVNode()),\n                        _createElementVNode(\"span\", _hoisted_141, [\n                          ($setup.dcrt.shows(st?.title))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_142, _toDisplayString(st?.title), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ]),\n                        _cache[100] || (_cache[100] = _createTextVNode()),\n                        _createElementVNode(\"span\", _hoisted_143, [\n                          ($setup.dcrt.shows(st?.author))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_144, _toDisplayString(st?.author), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ])\n                      ], 12 /* STYLE, PROPS */, _hoisted_136))\n                    }), 128 /* KEYED_FRAGMENT */)),\n                    _cache[101] || (_cache[101] = _createTextVNode()),\n                    ($setup.dcv.resEmpty)\n                      ? (_openBlock(), _createElementBlock(\"div\", _hoisted_145, \"Niets meer te beoordelen.\"))\n                      : _createCommentVNode(\"v-if\", true)\n                  ]),\n                  _cache[120] || (_cache[120] = _createTextVNode()),\n                  ($setup.dcv.hasSel)\n                    ? (_openBlock(), _createElementBlock(\"div\", _hoisted_146, [\n                        _createElementVNode(\"div\", _hoisted_147, [\n                          _createElementVNode(\"span\", _hoisted_148, [\n                            ($setup.dcrt.shows($setup.dcv.sel?.org))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_149, _toDisplayString($setup.dcv.sel?.org), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true),\n                            _cache[102] || (_cache[102] = _createTextVNode(\" · ingezonden \", -1 /* CACHED */)),\n                            ($setup.dcrt.shows($setup.dcv.sel?.when))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_150, _toDisplayString($setup.dcv.sel?.when), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ]),\n                          _cache[104] || (_cache[104] = _createTextVNode()),\n                          _createElementVNode(\"span\", _hoisted_151, [\n                            ($setup.dcrt.shows($setup.dcv.sel?.title))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_152, _toDisplayString($setup.dcv.sel?.title), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ]),\n                          _cache[105] || (_cache[105] = _createTextVNode()),\n                          _createElementVNode(\"span\", _hoisted_153, [\n                            ($setup.dcrt.shows($setup.dcv.sel?.author))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_154, _toDisplayString($setup.dcv.sel?.author), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true),\n                            _cache[103] || (_cache[103] = _createTextVNode(\" · \", -1 /* CACHED */)),\n                            ($setup.dcrt.shows($setup.dcv.sel?.pages))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_155, _toDisplayString($setup.dcv.sel?.pages), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ])\n                        ]),\n                        _cache[115] || (_cache[115] = _createTextVNode()),\n                        _createElementVNode(\"p\", _hoisted_156, [\n                          ($setup.dcrt.shows($setup.dcv.sel?.summary))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_157, _toDisplayString($setup.dcv.sel?.summary), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ]),\n                        _cache[116] || (_cache[116] = _createTextVNode()),\n                        _createElementVNode(\"div\", _hoisted_158, [\n                          _cache[106] || (_cache[106] = _createElementVNode(\"span\", { style: {\"font-size\":\"14px\",\"font-weight\":\"600\"} }, \"Perspectieven volgens Kiek\", -1 /* CACHED */)),\n                          _cache[107] || (_cache[107] = _createTextVNode()),\n                          _createElementVNode(\"div\", _hoisted_159, [\n                            (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.sel?.persp), (pp, $index) => {\n                              return (_openBlock(), _createElementBlock(\"span\", {\n                                key: $index,\n                                style: {\"border-radius\":\"100px\",\"background\":\"rgba(125,128,255,0.18)\",\"color\":\"var(--info,#B9BBFF)\",\"padding\":\"6px 12px\",\"font-size\":\"13px\",\"font-weight\":\"500\"}\n                              }, [\n                                ($setup.dcrt.shows(pp))\n                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_160, _toDisplayString(pp), 1 /* TEXT */))\n                                  : _createCommentVNode(\"v-if\", true)\n                              ]))\n                            }), 128 /* KEYED_FRAGMENT */))\n                          ])\n                        ]),\n                        _cache[117] || (_cache[117] = _createTextVNode()),\n                        _createElementVNode(\"div\", _hoisted_161, [\n                          _cache[108] || (_cache[108] = _createElementVNode(\"span\", { style: {\"font-size\":\"14px\",\"font-weight\":\"600\"} }, \"Controle\", -1 /* CACHED */)),\n                          _cache[109] || (_cache[109] = _createTextVNode()),\n                          (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.sel?.checks), (c, $index) => {\n                            return (_openBlock(), _createElementBlock(\"span\", {\n                              key: $index,\n                              style: {\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"10px\",\"font-size\":\"14px\",\"color\":\"var(--text,rgba(255,255,255,0.85))\"}\n                            }, [\n                              _createElementVNode(\"span\", {\n                                style: _normalizeStyle($setup.dcrt.style(`width:8px;height:8px;border-radius:50%;background:${c?.color ?? ''};flex-shrink:0`))\n                              }, null, 4 /* STYLE */),\n                              ($setup.dcrt.shows(c?.label))\n                                ? (_openBlock(), _createElementBlock(\"span\", _hoisted_162, _toDisplayString(c?.label), 1 /* TEXT */))\n                                : _createCommentVNode(\"v-if\", true)\n                            ]))\n                          }), 128 /* KEYED_FRAGMENT */))\n                        ]),\n                        _cache[118] || (_cache[118] = _createTextVNode()),\n                        ($setup.dcv.sel?.open)\n                          ? (_openBlock(), _createElementBlock(\"div\", _hoisted_163, [\n                              _createElementVNode(\"label\", _hoisted_164, [\n                                _createElementVNode(\"input\", {\n                                  type: \"checkbox\",\n                                  checked: $setup.dcv.cinergie ?? false,\n                                  onChange: _cache[8] || (_cache[8] = (...args) => ($setup.dcv.onCinergie && $setup.dcv.onCinergie(...args))),\n                                  style: {\"width\":\"18px\",\"height\":\"18px\",\"accent-color\":\"#7D80FF\"}\n                                }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_165),\n                                _cache[110] || (_cache[110] = _createTextVNode(\"Label als onderzoek van Cinergie Twente\\n                    \", -1 /* CACHED */))\n                              ]),\n                              _cache[112] || (_cache[112] = _createTextVNode()),\n                              _createElementVNode(\"textarea\", {\n                                value: $setup.dcv.note ?? '',\n                                onInput: _cache[9] || (_cache[9] = (...args) => ($setup.dcv.onNote && $setup.dcv.onNote(...args))),\n                                rows: \"2\",\n                                placeholder: \"Opmerking voor de onderzoeker (nodig bij terugsturen)\",\n                                style: {\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"var(--bg,#1F184E)\",\"color\":\"var(--text,#F9F7F3)\",\"padding\":\"12px 14px\",\"font-size\":\"14px\",\"line-height\":\"1.4\",\"resize\":\"vertical\",\"outline\":\"none\"}\n                              }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_166),\n                              _cache[113] || (_cache[113] = _createTextVNode()),\n                              ($setup.dcv.noteErr)\n                                ? (_openBlock(), _createElementBlock(\"span\", _hoisted_167, \"Schrijf kort waarom je het terugstuurt.\"))\n                                : _createCommentVNode(\"v-if\", true),\n                              _cache[114] || (_cache[114] = _createTextVNode()),\n                              _createElementVNode(\"div\", _hoisted_168, [\n                                _createElementVNode(\"button\", {\n                                  class: \"beheer-scp0\",\n                                  type: \"button\",\n                                  onClick: _cache[10] || (_cache[10] = (...args) => ($setup.dcv.sendBack && $setup.dcv.sendBack(...args))),\n                                  style: {\"height\":\"46px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"none\",\"box-shadow\":\"inset 0 0 0 1px var(--hair2,rgba(255,255,255,0.18))\",\"color\":\"var(--text,#F9F7F3)\",\"padding\":\"0 18px\",\"font-size\":\"15px\",\"font-weight\":\"500\",\"cursor\":\"pointer\"}\n                                }, \"Terugsturen\"),\n                                _cache[111] || (_cache[111] = _createTextVNode()),\n                                _createElementVNode(\"button\", {\n                                  class: \"beheer-scp2\",\n                                  type: \"button\",\n                                  onClick: _cache[11] || (_cache[11] = (...args) => ($setup.dcv.publish && $setup.dcv.publish(...args))),\n                                  style: {\"height\":\"46px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"#7D80FF\",\"color\":\"#FFFFFF\",\"padding\":\"0 20px\",\"font-size\":\"15px\",\"font-weight\":\"500\",\"cursor\":\"pointer\"}\n                                }, \"Accepteren en toevoegen\")\n                              ])\n                            ]))\n                          : _createCommentVNode(\"v-if\", true),\n                        _cache[119] || (_cache[119] = _createTextVNode()),\n                        ($setup.dcv.sel?.done)\n                          ? (_openBlock(), _createElementBlock(\"span\", {\n                              key: 1,\n                              style: _normalizeStyle($setup.dcrt.style(`align-self:flex-start;border-radius:100px;background:${$setup.dcv.sel?.stBg ?? ''};color:${$setup.dcv.sel?.stColor ?? ''};padding:6px 12px;font-size:13px;font-weight:600`))\n                            }, [\n                              ($setup.dcrt.shows($setup.dcv.sel?.status))\n                                ? (_openBlock(), _createElementBlock(\"span\", _hoisted_169, _toDisplayString($setup.dcv.sel?.status), 1 /* TEXT */))\n                                : _createCommentVNode(\"v-if\", true)\n                            ], 4 /* STYLE */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ]))\n                    : _createCommentVNode(\"v-if\", true)\n                ])\n              ]))\n            : _createCommentVNode(\"v-if\", true)\n        ])\n      ]),\n      _cache[127] || (_cache[127] = _createTextVNode()),\n      ($setup.dcv.hasToast)\n        ? (_openBlock(), _createElementBlock(\"div\", _hoisted_170, [\n            ($setup.dcrt.shows($setup.dcv.toast))\n              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_171, _toDisplayString($setup.dcv.toast), 1 /* TEXT */))\n              : _createCommentVNode(\"v-if\", true)\n          ]))\n        : _createCommentVNode(\"v-if\", true)\n    ], 512 /* NEED_PATCH */)\n  ]))\n}","import script from \"/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Beheer.vue?type=script\";import { render } from \"/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Beheer.vue?type=template\"; script.render = render;script.__file = \"../opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Beheer.vue\";export default script;","<!-- Generated by design-1op1 dc2vue from \"Kiek App v3.dc.html\"; do not edit. -->\n<template><div class=\"sc-host\" data-sc-name=\"Kiek App v3\"><div :ref=\"(el) => dcrt.setRef(dcv.rootRef, el)\" style=\"position:fixed;inset:0;display:flex;background:var(--bg,#1F184E);color:var(--text,#F9F7F3);font-family:var(--font-body);overflow:hidden\">\n\n  <template v-if=\"dcv.showNav\">\n    <div :style=\"dcrt.style(dcv.navWrapStyle)\">\n      <nav style=\"width:240px;height:100%;max-height:920px;border-radius:12px;background:var(--side,#150F3A);padding:24px 12px;display:flex;flex-direction:column;justify-content:space-between;overflow:auto\">\n        <div style=\"display:flex;flex-direction:column;gap:40px\">\n          <button @click=\"dcv.goOverzicht\" aria-label=\"Kiek, naar gesprekken\" style=\"border:none;background:none;padding:0 12px;cursor:pointer;align-self:flex-start\">\n            <span style=\"display:block;width:120px;height:41.76px;background:var(--text,#F9F7F3);-webkit-mask:url(/.publisher/sd/kiek/kiek/assets/kiek-logo.svg) no-repeat left center/contain;mask:url(/.publisher/sd/kiek/kiek/assets/kiek-logo.svg) no-repeat left center/contain\"></span>\n          </button>\n          <div style=\"display:flex;flex-direction:column;gap:24px\">\n            <div style=\"display:flex;flex-direction:column;gap:8px\">\n              <button class=\"app-scp0\" @click=\"dcv.goNieuw\" style=\"height:46px;border:none;border-radius:12px;background:var(--surface,#2A2260);color:var(--text,#F9F7F3);font:500 16px/1.4 var(--font-body);cursor:pointer;display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:0 12px;text-align:left\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#7D80FF\" stroke-width=\"2\" stroke-linecap=\"round\"><path d=\"M12 5v14\"></path><path d=\"M5 12h14\"></path></svg>Nieuw gesprek</button>\n              <label style=\"height:46px;border-radius:12px;box-shadow:inset 0 0 0 1px var(--hair,rgba(255,255,255,0.12));display:flex;align-items:center;gap:12px;padding:0 12px;cursor:text\">\n                <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" style=\"opacity:0.75;flex-shrink:0\"><circle cx=\"11\" cy=\"11\" r=\"7.5\"></circle><path d=\"m20.5 20.5-4.2-4.2\"></path></svg>\n                <input :value=\"dcv.search ?? ''\" @input=\"dcv.onSearch\" placeholder=\"Zoeken\" aria-label=\"Zoeken in gesprekken\" style=\"flex:1;min-width:0;border:none;outline:none;background:none;color:inherit;font:400 16px var(--font-body)\">\n              </label>\n            </div>\n            <div style=\"display:flex;flex-direction:column;gap:2px\">\n              <span style=\"font:600 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75));padding:0 12px;margin-bottom:4px\">Recente gesprekken</span>\n              <template v-for=\"(r, $index) in dcrt.list(dcv.recent)\" :key=\"$index\">\n                <button class=\"app-scp1\" @click=\"r?.onClick\" :style=\"dcrt.style(`border:none;border-radius:8px;background:${r?.bg ?? ''};color:inherit;padding:8px 12px;cursor:pointer;text-align:left;display:flex;flex-direction:column;gap:2px`)\">\n                  <span :style=\"dcrt.style(`font:400 14px/1.4 var(--font-body);color:${r?.color ?? ''};white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:192px`)\"><span v-if=\"dcrt.shows(r?.title)\" class=\"sc-interp\">{{ r?.title }}</span></span>\n                  <span style=\"font:400 11px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(r?.when)\" class=\"sc-interp\">{{ r?.when }}</span></span>\n                </button>\n              </template>\n              <template v-if=\"dcv.recentEmpty\">\n                <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75));padding:4px 12px\">Geen gesprekken gevonden.</span>\n              </template>\n            </div>\n          </div>\n        </div>\n        <div style=\"display:flex;flex-direction:column;gap:8px;margin-top:32px;position:relative\">\n          <div style=\"display:flex;flex-direction:column;gap:4px\">\n              <span style=\"font:600 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75));padding:0 12px;margin-bottom:4px\">Snel naar</span>\n              <template v-for=\"(m, $index) in dcrt.list(dcv.menu)\" :key=\"$index\">\n                <button class=\"app-scp1\" @click=\"m?.onClick\" :aria-label=\"dcrt.attr(m?.aria)\" :style=\"dcrt.style(`position:relative;height:46px;border:none;border-radius:8px;background:${m?.bg ?? ''};color:${m?.color ?? ''};display:flex;align-items:center;gap:12px;padding:12px;cursor:pointer;font:${m?.font ?? ''};text-align:left`)\">\n                  <template v-if=\"m?.isGrid\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" :stroke=\"m?.iconColor\" stroke-width=\"1.6\"><rect x=\"3.5\" y=\"3.5\" width=\"7\" height=\"7\" rx=\"1.5\"></rect><rect x=\"13.5\" y=\"3.5\" width=\"7\" height=\"7\" rx=\"1.5\"></rect><rect x=\"3.5\" y=\"13.5\" width=\"7\" height=\"7\" rx=\"1.5\"></rect><rect x=\"13.5\" y=\"13.5\" width=\"7\" height=\"7\" rx=\"1.5\"></rect></svg></template>\n                  <template v-if=\"m?.isChat\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" :stroke=\"m?.iconColor\" stroke-width=\"1.6\" stroke-linejoin=\"round\"><path d=\"M4 5.5A1.5 1.5 0 0 1 5.5 4h13A1.5 1.5 0 0 1 20 5.5v10a1.5 1.5 0 0 1-1.5 1.5H9l-5 4z\"></path></svg></template>\n                  <template v-if=\"m?.isBars\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" :stroke=\"m?.iconColor\" stroke-width=\"1.6\" stroke-linecap=\"round\"><path d=\"M6 20v-7\"></path><path d=\"M12 20V5\"></path><path d=\"M18 20v-11\"></path></svg></template>\n                  <template v-if=\"m?.isBook\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" :stroke=\"m?.iconColor\" stroke-width=\"1.6\" stroke-linejoin=\"round\" stroke-linecap=\"round\"><path d=\"M4 19.5V5a2 2 0 0 1 2-2h14v15H6a2 2 0 0 0-2 2z\"></path><path d=\"M4 19.5A2 2 0 0 0 6 21.5h14\"></path><path d=\"M9 8h7\"></path></svg></template>\n                  <template v-if=\"m?.isClock\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" :stroke=\"m?.iconColor\" stroke-width=\"1.6\" stroke-linecap=\"round\"><circle cx=\"12\" cy=\"12\" r=\"8.5\"></circle><path d=\"M12 7.5V12l3 2\"></path></svg></template>\n                  <span><span v-if=\"dcrt.shows(m?.label)\" class=\"sc-interp\">{{ m?.label }}</span></span>\n                  <template v-if=\"m?.hasBadge\"><span aria-hidden=\"true\" style=\"position:absolute;left:22px;top:5px;min-width:18px;height:18px;padding:0 5px;border-radius:100px;background:#7D80FF;color:#FFFFFF;box-shadow:0 0 0 2px var(--side,#150F3A);display:flex;align-items:center;justify-content:center;font:700 10px/1 var(--font-body)\"><span v-if=\"dcrt.shows(m?.badge)\" class=\"sc-interp\">{{ m?.badge }}</span></span></template>\n                </button>\n              </template>\n            </div>\n          <div style=\"height:1px;margin:0 12px;background:var(--hair,rgba(255,255,255,0.12))\"></div>\n          <button class=\"app-scp1\" @click=\"dcv.toggleProfile\" :aria-expanded=\"dcrt.attr(dcv.profileOpen)\" style=\"border:none;border-radius:8px;background:none;color:inherit;padding:8px 12px;display:flex;flex-direction:column;align-items:stretch;gap:10px;cursor:pointer;text-align:left\"><span style=\"display:flex;align-items:center;gap:12px\">\n            <span style=\"width:36px;height:36px;border-radius:8px;background:var(--surface,#2A2260);color:var(--muted,rgba(255,255,255,0.75));display:flex;align-items:center;justify-content:center;font:600 14px var(--font-body);flex-shrink:0\"><span v-if=\"dcrt.shows(dcv.person?.initials)\" class=\"sc-interp\">{{ dcv.person?.initials }}</span></span>\n            <span style=\"display:flex;flex-direction:column;gap:2px;min-width:0\">\n              <span style=\"font:700 14px/1.2 var(--font-body)\"><span v-if=\"dcrt.shows(dcv.person?.name)\" class=\"sc-interp\">{{ dcv.person?.name }}</span></span>\n              <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75));white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px\"><span v-if=\"dcrt.shows(dcv.person?.org)\" class=\"sc-interp\">{{ dcv.person?.org }}</span></span>\n            </span>\n          </span>\n            <span @mouseenter=\"dcv.crHoverOn\" @mouseleave=\"dcv.crHoverOff\" style=\"position:relative;display:flex;flex-direction:column;gap:6px\">\n              <template v-if=\"dcv.crHover\">\n                <span role=\"tooltip\" style=\"position:absolute;left:-4px;right:-4px;bottom:calc(100% + 10px);z-index:5;border-radius:12px;background:var(--text,#F9F7F3);color:var(--bg,#1F184E);padding:14px;display:flex;flex-direction:column;gap:8px;box-shadow:0 12px 32px rgba(10,8,30,0.35);cursor:default\">\n                  <span style=\"font:700 13px/1.3 var(--font-body)\">Zo werken je vragen</span>\n                  <span style=\"font:400 12px/1.45 var(--font-body)\">Je kunt 20 vragen per dag stellen. Elke nacht krijg je er 20 nieuwe; ongebruikte dagvragen schuiven niet door.</span>\n                  <span style=\"font:400 12px/1.45 var(--font-body)\">Nodig je iemand uit en krijgt die toegang, dan ontvang je 100 bonusvragen. Die vervallen niet.</span>\n                  <span style=\"font:600 12px/1.45 var(--font-body)\"><span v-if=\"dcrt.shows(dcv.cr?.tip)\" class=\"sc-interp\">{{ dcv.cr?.tip }}</span></span>\n                </span>\n              </template>\n              <span style=\"height:3px;border-radius:100px;background:var(--track,rgba(255,255,255,0.08));overflow:hidden\"><span :style=\"dcrt.style(`display:block;height:100%;width:${dcv.cr?.pct ?? ''};border-radius:100px;background:${dcv.cr?.barColor ?? ''}`)\"></span></span>\n              <span :style=\"dcrt.style(`font:400 11px/1.3 var(--font-body);color:${dcv.cr?.leftColor ?? ''}`)\"><span v-if=\"dcrt.shows(dcv.cr?.line)\" class=\"sc-interp\">{{ dcv.cr?.line }}</span></span>\n            </span>\n          </button>\n          <template v-if=\"dcv.profileOpen\">\n            <div style=\"position:absolute;left:0;right:0;bottom:80px;background:var(--surface,#2A2260);border-radius:12px;padding:8px;display:flex;flex-direction:column;gap:2px;box-shadow:0 12px 32px rgba(10,8,30,0.35)\">\n              <button class=\"app-scp1\" @click=\"dcv.openInvite\" style=\"border:none;background:none;color:inherit;border-radius:8px;padding:10px 12px;text-align:left;cursor:pointer;font:500 14px var(--font-body);display:flex;justify-content:space-between;gap:8px\"><span>Nodig iemand uit</span><span style=\"color:#7D80FF\">+100 vragen</span></button>\n              <button class=\"app-scp1\" @click=\"dcv.toggleTheme\" style=\"border:none;background:none;color:inherit;border-radius:8px;padding:10px 12px;text-align:left;cursor:pointer;font:500 14px var(--font-body);display:flex;justify-content:space-between\"><span>Weergave</span><span style=\"color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(dcv.themeLabel)\" class=\"sc-interp\">{{ dcv.themeLabel }}</span></span></button>\n              <button class=\"app-scp1\" @click=\"dcv.toggleRole\" style=\"border:none;background:none;color:inherit;border-radius:8px;padding:10px 12px;text-align:left;cursor:pointer;font:500 14px var(--font-body);display:flex;justify-content:space-between;gap:8px\"><span>Rol (prototype)</span><span style=\"color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(dcv.roleLabel)\" class=\"sc-interp\">{{ dcv.roleLabel }}</span></span></button>\n              <button class=\"app-scp1\" @click=\"dcv.openTrust\" style=\"border:none;background:none;color:inherit;border-radius:8px;padding:10px 12px;text-align:left;cursor:pointer;font:500 14px var(--font-body)\">Uitleg &amp; vertrouwen</button>\n              <button class=\"app-scp1\" @click=\"dcv.openOnboardingToast\" style=\"border:none;background:none;color:inherit;border-radius:8px;padding:10px 12px;text-align:left;cursor:pointer;font:500 14px var(--font-body)\">Kennismaking opnieuw</button>\n              <button class=\"app-scp1\" @click=\"dcv.logoutToast\" style=\"border:none;background:none;color:var(--muted,rgba(255,255,255,0.75));border-radius:8px;padding:10px 12px;text-align:left;cursor:pointer;font:500 14px var(--font-body)\">Uitloggen</button>\n            </div>\n          </template>\n        </div>\n      </nav>\n    </div>\n  </template>\n  <template v-if=\"dcv.navOverlay\">\n    <div @click=\"dcv.closeNav\" style=\"position:absolute;inset:0;background:rgba(10,8,30,0.5);z-index:29\"></div>\n  </template>\n\n  <main style=\"flex:1;min-width:0;display:flex;flex-direction:column;position:relative\">\n\n    <template v-if=\"dcv.narrowNav\">\n      <div style=\"display:flex;align-items:center;justify-content:space-between;padding:16px 20px 0\">\n        <button @click=\"dcv.openNav\" style=\"border:none;border-radius:8px;background:var(--surface,#2A2260);color:inherit;padding:10px 14px;font:600 14px var(--font-body);cursor:pointer\">Menu</button>\n        <span style=\"width:84px;height:29px;background:var(--text,#F9F7F3);-webkit-mask:url(/.publisher/sd/kiek/kiek/assets/kiek-logo.svg) no-repeat center/contain;mask:url(/.publisher/sd/kiek/kiek/assets/kiek-logo.svg) no-repeat center/contain\"></span>\n        <template v-if=\"dcv.showInsightBtn\">\n          <button @click=\"dcv.openSide\" style=\"border:none;border-radius:8px;background:var(--surface,#2A2260);color:inherit;padding:10px 14px;font:600 14px var(--font-body);cursor:pointer\">Inzicht</button>\n        </template>\n        <template v-if=\"dcv.hideInsightBtn\"><span style=\"width:72px\"></span></template>\n      </div>\n    </template>\n\n    <template v-if=\"dcv.isBeheer\">\n      <div style=\"flex:1;min-height:0;position:relative\">\n        <KiekBeheer style=\"position:absolute;inset:0\" :embedded=\"true\" :theme=\"dcv.themeName\" />\n      </div>\n    </template>\n\n    <template v-if=\"dcv.isOverzicht\">\n      <div :style=\"dcrt.style(`flex:1;overflow:auto;padding:${dcv.pagePad ?? ''}`)\">\n        <div style=\"max-width:1490px;display:flex;flex-direction:column;gap:24px\">\n          <div>\n            <h1 style=\"margin:0;font:800 48px/1 var(--font-display);letter-spacing:-0.01em\"><span v-if=\"dcrt.shows(dcv.greeting)\" class=\"sc-interp\">{{ dcv.greeting }}</span></h1>\n            <p style=\"margin:6px 0 0;font:400 14px/1.4 var(--font-body)\">Wat wil je effe kieken?</p>\n          </div>\n          <div style=\"background:var(--surface,#2A2260);border-radius:16px;padding:32px;display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap\">\n            <div style=\"display:flex;flex-direction:column;gap:8px;max-width:560px\">\n              <h2 style=\"margin:0;font:700 24px/1.2 var(--font-body)\">Een nieuw gesprek starten?</h2>\n              <p style=\"margin:0;font:400 14px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Vertel Kiek wat je van plan bent. Kiek stelt de juiste vragen en koppelt Twentse kennis aan je keuze.</p>\n            </div>\n            <button class=\"app-scp2\" @click=\"dcv.goNieuw\" style=\"height:48px;border:none;border-radius:12px;background:#7D80FF;color:#FFFFFF;padding:0 28px;font:500 14px var(--font-body);cursor:pointer\">Vraag aan Kiek</button>\n          </div>\n          <div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,380px),1fr));gap:24px;margin-top:40px\">\n            <section style=\"display:flex;flex-direction:column;gap:16px\">\n              <h2 style=\"margin:0;font:800 24px/1 var(--font-display)\">Recente gesprekken</h2>\n              <template v-for=\"(c, $index) in dcrt.list(dcv.dashConvs)\" :key=\"$index\">\n                <button class=\"app-scp3\" @click=\"c?.onClick\" style=\"border:none;border-radius:12px;background:var(--surface,#2A2260);color:inherit;padding:20px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:10px\">\n                  <span style=\"display:flex;justify-content:space-between;gap:12px;align-items:baseline\">\n                    <span style=\"font:600 18px/1.3 var(--font-body)\"><span v-if=\"dcrt.shows(c?.title)\" class=\"sc-interp\">{{ c?.title }}</span></span>\n                    <span style=\"font:400 12px/1.4 var(--font-body);flex-shrink:0\"><span v-if=\"dcrt.shows(c?.when)\" class=\"sc-interp\">{{ c?.when }}</span></span>\n                  </span>\n                  <span style=\"font:400 14px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(c?.text)\" class=\"sc-interp\">{{ c?.text }}</span></span>\n                  <template v-if=\"c?.hasTags\">\n                    <span style=\"display:flex;gap:8px;flex-wrap:wrap;margin-top:4px\">\n                      <template v-for=\"(t, $index) in dcrt.list(c?.tags)\" :key=\"$index\">\n                        <span :style=\"dcrt.style(`border-radius:100px;background:${t?.bg ?? ''};color:${t?.color ?? ''};padding:8px 14px;font:600 12px/1 var(--font-body)`)\"><span v-if=\"dcrt.shows(t?.label)\" class=\"sc-interp\">{{ t?.label }}</span></span>\n                      </template>\n                    </span>\n                  </template>\n                </button>\n              </template>\n            </section>\n            <section style=\"display:flex;flex-direction:column;gap:16px\">\n              <h2 style=\"margin:0;font:800 24px/1 var(--font-display)\">Relevante publicaties</h2>\n              <template v-for=\"(p, $index) in dcrt.list(dcv.pubs)\" :key=\"$index\">\n                <button class=\"app-scp3\" @click=\"p?.onClick\" style=\"border:none;border-radius:12px;background:var(--surface,#2A2260);color:inherit;padding:20px;text-align:left;cursor:pointer;display:flex;align-items:center;gap:20px\">\n                  <span style=\"width:48px;height:48px;border-radius:8px;background:var(--surface2,rgba(125,128,255,0.12));display:flex;align-items:center;justify-content:center;flex-shrink:0\">\n                    <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#7D80FF\" stroke-width=\"1.6\" stroke-linejoin=\"round\" stroke-linecap=\"round\"><path d=\"M14 3H7a1.5 1.5 0 0 0-1.5 1.5v15A1.5 1.5 0 0 0 7 21h10a1.5 1.5 0 0 0 1.5-1.5V7.5z\"></path><path d=\"M14 3v4.5h4.5\"></path><path d=\"M9 12.5h6\"></path><path d=\"M9 16h6\"></path></svg>\n                  </span>\n                  <span style=\"display:flex;flex-direction:column;gap:6px;min-width:0\">\n                    <span style=\"font:600 18px/1.2 var(--font-body)\"><span v-if=\"dcrt.shows(p?.title)\" class=\"sc-interp\">{{ p?.title }}</span></span>\n                    <span style=\"display:flex;gap:8px;align-items:center;flex-wrap:wrap;font:400 14px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(p?.meta)\" class=\"sc-interp\">{{ p?.meta }}</span>\n                      <template v-if=\"p?.cin\"><span style=\"border-radius:100px;background:rgba(112,233,162,0.1);color:#34C759;padding:5px 10px;font:600 11px/1 var(--font-body)\">Cinergie Twente</span></template>\n                    </span>\n                  </span>\n                </button>\n              </template>\n            </section>\n          </div>\n        </div>\n      </div>\n    </template>\n\n    <template v-if=\"dcv.isNieuw\">\n      <div style=\"flex:1;overflow:auto;display:flex;align-items:center;justify-content:center;padding:48px 24px\">\n        <div style=\"width:100%;max-width:920px;display:flex;flex-direction:column;align-items:center;gap:40px;text-align:center\">\n          <h1 style=\"margin:0;font:800 clamp(56px,7.4vw,120px)/0.9 var(--font-display);letter-spacing:-0.01em\">Waar wil je<br>effe naar <span style=\"position:relative;display:inline-block\"><span style=\"position:absolute;left:-2%;right:-1%;bottom:-0.02em;height:0.16em;background:#7D80FF;-webkit-mask:url(/.publisher/sd/kiek/kiek/assets/scribble-underline-bold.svg) no-repeat center/100% 100%;mask:url(/.publisher/sd/kiek/kiek/assets/scribble-underline-bold.svg) no-repeat center/100% 100%\"></span><span style=\"position:relative\">kieken?</span></span></h1>\n          <p style=\"margin:0;font:400 18px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75));max-width:720px\">Vertel wat je van plan bent. Kiek stelt de juiste vragen en helpt je zien wat je keuze werkelijk betekent voor Twente.</p>\n          <div style=\"width:100%;display:flex;flex-direction:column;gap:20px\">\n            <div style=\"background:var(--surface,#2A2260);border-radius:16px;padding:24px 20px 20px 28px;display:flex;flex-direction:column;gap:12px;text-align:left\">\n              <textarea :ref=\"(el) => dcrt.setRef(dcv.newRef, el)\" :value=\"dcv.newDraft ?? ''\" @input=\"dcv.onNewDraft\" @keydown=\"dcv.onNewKey\" rows=\"3\" placeholder=\"Vertel Kiek wat je van plan bent...\" aria-label=\"Vertel Kiek wat je van plan bent\" style=\"width:100%;border:none;outline:none;resize:none;background:none;color:inherit;font:600 16px/1.4 var(--font-body)\"></textarea>\n              <div style=\"display:flex;justify-content:space-between;align-items:center;gap:12px\">\n                <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Gebruik geen vertrouwelijke bedrijfsgegevens. Kiek werkt nu met publieke bronnen.</span>\n                <button class=\"app-scp2\" @click=\"dcv.startNew\" aria-label=\"Verstuur\" :style=\"dcrt.style(`width:52px;height:52px;border:none;border-radius:8px;background:#7D80FF;color:#F9F7F3;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;opacity:${dcv.newSendOpacity ?? ''}`)\">\n                  <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linejoin=\"round\" stroke-linecap=\"round\"><path d=\"M21 3 10.5 13.5\"></path><path d=\"M21 3 14.5 21l-4-7.5L3 9.5z\"></path></svg>\n                </button>\n              </div>\n            </div>\n            <div style=\"display:flex;flex-wrap:wrap;gap:12px;justify-content:center\">\n              <template v-for=\"(s, $index) in dcrt.list(dcv.suggestions)\" :key=\"$index\">\n                <button class=\"app-scp4\" @click=\"s?.onClick\" style=\"border:none;border-radius:12px;background:var(--surface,#2A2260);color:var(--muted,rgba(255,255,255,0.75));padding:14px 20px;font:600 14px/1.2 var(--font-body);cursor:pointer\"><span v-if=\"dcrt.shows(s?.text)\" class=\"sc-interp\">{{ s?.text }}</span></button>\n              </template>\n            </div>\n          </div>\n        </div>\n      </div>\n    </template>\n\n    <template v-if=\"dcv.isGesprek\">\n      <div style=\"flex:1;min-height:0;display:flex;flex-direction:column;position:relative\">\n        <div :style=\"dcrt.style(`position:relative;z-index:2;padding:${dcv.headPad ?? ''};display:flex;justify-content:space-between;align-items:flex-start;gap:16px`)\">\n          <div style=\"position:absolute;left:0;right:0;top:100%;height:56px;background:linear-gradient(0deg,var(--bg0,rgba(31,24,78,0)) 0%,var(--bg,#1F184E) 100%);pointer-events:none\"></div>\n          <div style=\"min-width:0\">\n            <h1 style=\"margin:0;font:800 32px/1.1 var(--font-display);letter-spacing:-0.01em\"><span v-if=\"dcrt.shows(dcv.convTitle)\" class=\"sc-interp\">{{ dcv.convTitle }}</span></h1>\n            <p style=\"margin:6px 0 0;font:400 14px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(dcv.convMeta)\" class=\"sc-interp\">{{ dcv.convMeta }}</span></p>\n          </div>\n          <template v-if=\"dcv.headInsightBtn\">\n            <button class=\"app-scp3\" @click=\"dcv.openSide\" style=\"border:none;border-radius:12px;background:var(--surface,#2A2260);color:inherit;padding:12px 18px;font:600 14px var(--font-body);cursor:pointer;flex-shrink:0\">Inzicht &amp; bronnen</button>\n          </template>\n        </div>\n        <div :ref=\"(el) => dcrt.setRef(dcv.msgsRef, el)\" :style=\"dcrt.style(`flex:1;min-height:0;overflow:auto;padding:${dcv.msgsPad ?? ''}`)\">\n          <div style=\"max-width:796px;display:flex;flex-direction:column;gap:40px\">\n            <template v-if=\"dcv.convEmpty\">\n              <p style=\"margin:0;font:400 14px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Nog geen berichten. Stel je vraag hieronder.</p>\n            </template>\n            <template v-for=\"(m, $index) in dcrt.list(dcv.messages)\" :key=\"$index\">\n              <div :data-msg=\"dcrt.attr(m?.id)\" :style=\"dcrt.style(`display:flex;flex-direction:column;gap:12px;align-items:${m?.align ?? ''};border-radius:12px;box-shadow:${m?.flash ?? ''};transition:box-shadow .4s`)\">\n                <span style=\"font:700 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(m?.who)\" class=\"sc-interp\">{{ m?.who }}</span></span>\n                <template v-if=\"m?.isUser\">\n                  <div style=\"max-width:576px;width:fit-content;border-radius:12px;background:var(--surface,#2A2260);padding:16px;font:400 14px/1.4 var(--font-body);color:var(--userText,#FFFFFF)\"><span v-if=\"dcrt.shows(m?.text)\" class=\"sc-interp\">{{ m?.text }}</span></div>\n                </template>\n                <template v-if=\"m?.isKiek\">\n                  <div style=\"width:100%;max-width:576px;display:flex;flex-direction:column;gap:16px\">\n                    <template v-for=\"(b, $index) in dcrt.list(m?.blocks)\" :key=\"$index\">\n                      <template v-if=\"b?.isText\">\n                        <p style=\"margin:0;font:400 14px/1.4 var(--font-body)\">\n                          <template v-for=\"(sg, $index) in dcrt.list(b?.segs)\" :key=\"$index\"><template v-if=\"sg?.isText\"><span><span v-if=\"dcrt.shows(sg?.text)\" class=\"sc-interp\">{{ sg?.text }}</span></span></template><template v-if=\"sg?.isCite\"><button class=\"app-scp5\" @click=\"sg?.onClick\" @mouseenter=\"sg?.onEnter\" @mouseleave=\"sg?.onLeave\" :aria-label=\"dcrt.attr(sg?.aria)\" :title=\"sg?.title\" :style=\"dcrt.style(`border:none;border-radius:100px;background:${sg?.bg ?? ''};color:${sg?.color ?? ''};box-shadow:${sg?.ring ?? ''};min-width:22px;height:22px;padding:0 8px;margin:0 3px;font:700 11px/22px var(--font-body);cursor:pointer;vertical-align:1px;white-space:nowrap`)\"><span v-if=\"dcrt.shows(sg?.label)\" class=\"sc-interp\">{{ sg?.label }}</span></button></template><template v-if=\"sg?.isCo\"><button @click=\"sg?.onClick\" style=\"border:none;background:none;color:inherit;padding:0;font:600 14px/1.4 var(--font-body);text-decoration:underline;text-decoration-color:#7D80FF;text-underline-offset:3px;cursor:pointer\"><span v-if=\"dcrt.shows(sg?.text)\" class=\"sc-interp\">{{ sg?.text }}</span></button></template></template>\n                        </p>\n                      </template>\n                      <template v-if=\"b?.isAsk\">\n                        <div style=\"border-radius:12px;box-shadow:inset 0 0 0 1px #7D80FF;padding:16px;display:flex;flex-direction:column;gap:6px\">\n                          <span style=\"font:700 12px/1.4 var(--font-body);color:#7D80FF\">Verdiepingsvraag</span>\n                          <span style=\"font:400 14px/1.4 var(--font-body)\"><span v-if=\"dcrt.shows(b?.text)\" class=\"sc-interp\">{{ b?.text }}</span></span>\n                        </div>\n                      </template>\n                      <template v-if=\"b?.isAlts\">\n                        <div style=\"display:flex;flex-direction:column;gap:12px\">\n                          <div style=\"display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:16px\">\n                            <template v-for=\"(a, $index) in dcrt.list(b?.alts)\" :key=\"$index\">\n                              <div style=\"border-radius:12px;background:var(--surface,#2A2260);padding:12px;display:flex;flex-direction:column;justify-content:space-between;gap:16px;min-height:203px\">\n                                <div style=\"display:flex;flex-direction:column;gap:8px\">\n                                  <span style=\"font:700 14px/1 var(--font-body)\"><span v-if=\"dcrt.shows(a?.name)\" class=\"sc-interp\">{{ a?.name }}</span></span>\n                                  <template v-for=\"(pt, $index) in dcrt.list(a?.points)\" :key=\"$index\">\n                                    <div style=\"display:flex;gap:6px;align-items:flex-start\">\n                                      <span aria-hidden=\"true\" :style=\"dcrt.style(`font:400 11px/17px var(--font-body);color:${pt?.color ?? ''};flex-shrink:0`)\"><span v-if=\"dcrt.shows(pt?.mark)\" class=\"sc-interp\">{{ pt?.mark }}</span></span>\n                                      <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span style=\"position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)\"><span v-if=\"dcrt.shows(pt?.sr)\" class=\"sc-interp\">{{ pt?.sr }}</span></span><span v-if=\"dcrt.shows(pt?.text)\" class=\"sc-interp\">{{ pt?.text }}</span></span>\n                                    </div>\n                                  </template>\n                                </div>\n                                <button class=\"app-scp6\" @click=\"a?.onClick\" style=\"border:none;background:none;color:inherit;padding:0;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:4px\">\n                                  <span style=\"font:400 11px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Onderbouwing</span>\n                                  <span style=\"display:flex;gap:4px;width:100%\">\n                                    <template v-for=\"(s, $index) in dcrt.list(a?.segs)\" :key=\"$index\"><span :style=\"dcrt.style(`flex:1;height:4px;border-radius:1px;background:${s?.bg ?? ''}`)\"></span></template>\n                                  </span>\n                                  <span style=\"font:400 11px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75));text-decoration:underline;text-underline-offset:2px\"><span v-if=\"dcrt.shows(a?.count)\" class=\"sc-interp\">{{ a?.count }}</span></span>\n                                </button>\n                              </div>\n                            </template>\n                          </div>\n                          <span style=\"display:flex;gap:6px;align-items:center;font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">\n                            <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\"><circle cx=\"12\" cy=\"12\" r=\"9\"></circle><path d=\"M12 11v5\"></path><path d=\"M12 7.5h.01\"></path></svg>\n                            <span v-if=\"dcrt.shows(b?.basis)\" class=\"sc-interp\">{{ b?.basis }}</span>\n                          </span>\n                        </div>\n                      </template>\n                      <template v-if=\"b?.isImpact\">\n                        <div style=\"border-radius:12px;background:var(--surface,#2A2260);padding:16px;display:flex;flex-direction:column;gap:12px\">\n                          <div style=\"display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap\">\n                            <span style=\"font:700 16px/1 var(--font-body)\">Jouw impact</span>\n                            <span style=\"border-radius:100px;background:rgba(125,128,255,0.1);color:#7D80FF;padding:8px 12px;font:600 12px/1 var(--font-body)\"><span v-if=\"dcrt.shows(b?.scenario)\" class=\"sc-interp\">{{ b?.scenario }}</span></span>\n                          </div>\n                          <template v-for=\"(r, $index) in dcrt.list(b?.rows)\" :key=\"$index\">\n                            <div style=\"display:grid;grid-template-columns:116px 1fr auto;gap:12px;align-items:center\">\n                              <span style=\"font:600 12px/1.4 var(--font-body)\"><span v-if=\"dcrt.shows(r?.label)\" class=\"sc-interp\">{{ r?.label }}</span></span>\n                              <span style=\"height:6px;border-radius:100px;background:var(--track,rgba(255,255,255,0.08));overflow:hidden\"><span :style=\"dcrt.style(`display:block;height:100%;width:${r?.pct ?? ''};border-radius:100px;background:${r?.color ?? ''}`)\"></span></span>\n                              <span style=\"font:600 12px/1.4 var(--font-body);text-align:right;min-width:96px\"><span v-if=\"dcrt.shows(r?.verdict)\" class=\"sc-interp\">{{ r?.verdict }}</span></span>\n                            </div>\n                          </template>\n                          <span style=\"font:400 11px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Kwalitatieve inschatting op basis van de aangehaalde onderzoeken. Geen berekende score.</span>\n                        </div>\n                      </template>\n                      <template v-if=\"b?.isBtw\">\n                        <div style=\"border-radius:12px;background:var(--surface,#2A2260);padding:16px 16px 20px;display:flex;flex-direction:column;gap:20px;align-items:center\">\n                          <span style=\"font:700 16px/1 var(--font-body)\">Jouw Bruto Twentse Waarde</span>\n                          <div style=\"width:100%;display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:12px\">\n                            <template v-for=\"(it, $index) in dcrt.list(b?.items)\" :key=\"$index\">\n                              <div style=\"display:flex;flex-direction:column;align-items:center;gap:16px;text-align:center\">\n                                <span role=\"img\" :aria-label=\"dcrt.attr(it?.aria)\" style=\"position:relative;width:76px;height:76px;display:flex;align-items:center;justify-content:center;flex-shrink:0\">\n                                <svg width=\"76\" height=\"76\" viewBox=\"0 0 76 76\" style=\"position:absolute;inset:0;transform:rotate(-90deg)\"><circle cx=\"38\" cy=\"38\" r=\"34\" fill=\"none\" stroke=\"var(--track,rgba(255,255,255,0.08))\" stroke-width=\"4\"></circle><circle cx=\"38\" cy=\"38\" r=\"34\" fill=\"none\" :stroke=\"it?.color\" stroke-width=\"4\" stroke-linecap=\"round\" :stroke-dasharray=\"it?.dash\"></circle></svg>\n                                <span :style=\"dcrt.style(`width:56px;height:56px;border-radius:50%;background:${it?.color ?? ''};display:flex;align-items:center;justify-content:center;color:#FFFFFF;font:300 22px/1 var(--font-body)`)\">+</span>\n                              </span>\n                                <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(it?.label)\" class=\"sc-interp\">{{ it?.label }}</span></span>\n                              </div>\n                            </template>\n                          </div>\n                        </div>\n                      </template>\n                      <template v-if=\"b?.isCard\">\n                        <p style=\"margin:0;border-radius:12px;background:var(--surface,#2A2260);padding:16px;font:400 14px/1.4 var(--font-body)\"><template v-for=\"(sg, $index) in dcrt.list(b?.segs)\" :key=\"$index\"><template v-if=\"sg?.isText\"><span><span v-if=\"dcrt.shows(sg?.text)\" class=\"sc-interp\">{{ sg?.text }}</span></span></template><template v-if=\"sg?.isCite\"><button class=\"app-scp5\" @click=\"sg?.onClick\" @mouseenter=\"sg?.onEnter\" @mouseleave=\"sg?.onLeave\" :aria-label=\"dcrt.attr(sg?.aria)\" :title=\"sg?.title\" :style=\"dcrt.style(`border:none;border-radius:100px;background:${sg?.bg ?? ''};color:${sg?.color ?? ''};box-shadow:${sg?.ring ?? ''};min-width:22px;height:22px;padding:0 8px;margin:0 3px;font:700 11px/22px var(--font-body);cursor:pointer;vertical-align:1px;white-space:nowrap`)\"><span v-if=\"dcrt.shows(sg?.label)\" class=\"sc-interp\">{{ sg?.label }}</span></button></template><template v-if=\"sg?.isCo\"><button @click=\"sg?.onClick\" style=\"border:none;background:none;color:inherit;padding:0;font:600 14px/1.4 var(--font-body);text-decoration:underline;text-decoration-color:#7D80FF;text-underline-offset:3px;cursor:pointer\"><span v-if=\"dcrt.shows(sg?.text)\" class=\"sc-interp\">{{ sg?.text }}</span></button></template></template></p>\n                      </template>\n                    </template>\n                    <template v-if=\"m?.hasSources\">\n                      <div style=\"display:flex;flex-direction:column;gap:8px\">\n                        <span style=\"font:700 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Onderzoek in dit antwoord</span>\n                        <div style=\"display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:8px\">\n                          <template v-for=\"(src, $index) in dcrt.list(m?.sources)\" :key=\"$index\">\n                            <button class=\"app-scp5\" @click=\"src?.onClick\" @mouseenter=\"src?.onEnter\" @mouseleave=\"src?.onLeave\" :style=\"dcrt.style(`border:none;border-radius:12px;background:var(--surface,#2A2260);box-shadow:${src?.ring ?? ''};color:inherit;padding:12px;text-align:left;cursor:pointer;display:flex;gap:12px;align-items:flex-start`)\">\n                              <span :style=\"dcrt.style(`width:24px;height:24px;border-radius:100px;background:${src?.numBg ?? ''};color:${src?.numColor ?? ''};display:flex;align-items:center;justify-content:center;font:700 11px var(--font-body);flex-shrink:0`)\"><span v-if=\"dcrt.shows(src?.n)\" class=\"sc-interp\">{{ src?.n }}</span></span>\n                              <span style=\"display:flex;flex-direction:column;gap:4px;min-width:0\">\n                                <span style=\"font:600 13px/1.25 var(--font-body)\"><span v-if=\"dcrt.shows(src?.title)\" class=\"sc-interp\">{{ src?.title }}</span></span>\n                                <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(src?.meta)\" class=\"sc-interp\">{{ src?.meta }}</span></span>\n                                <template v-if=\"src?.cin\"><span style=\"align-self:flex-start;border-radius:100px;background:rgba(112,233,162,0.14);color:#34C759;padding:5px 10px;font:600 10px/1 var(--font-body);margin-top:2px\">Cinergie Twente</span></template>\n                                <span style=\"font:600 11px/1.4 var(--font-body);color:#7D80FF\">Bekijk passage<span v-if=\"dcrt.shows(src?.locLabel)\" class=\"sc-interp\">{{ src?.locLabel }}</span></span>\n                              </span>\n                            </button>\n                          </template>\n                        </div>\n                      </div>\n                    </template>\n                    <div style=\"display:flex;gap:2px;flex-wrap:wrap;margin-left:-6px\">\n                      <button class=\"app-scp1\" @click=\"m?.onCopy\" :aria-label=\"dcrt.attr(m?.copyLabel)\" :title=\"m?.copyLabel\" style=\"width:32px;height:32px;border:none;border-radius:8px;color:var(--muted,rgba(255,255,255,0.75));display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;background:none\">\n                        <template v-if=\"m?.notCopied\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"11\" height=\"11\" rx=\"2\"></rect><path d=\"M5 15V5a2 2 0 0 1 2-2h8\"></path></svg></template>\n                        <template v-if=\"m?.isCopied\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#34C759\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12.5 10 17 19 7\"></path></svg></template>\n                      </button>\n                      <button class=\"app-scp1\" @click=\"m?.onUp\" :aria-pressed=\"dcrt.attr(m?.upOn)\" aria-label=\"Nuttig antwoord\" title=\"Nuttig\" :style=\"dcrt.style(`width:32px;height:32px;border:none;border-radius:8px;color:var(--muted,rgba(255,255,255,0.75));display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;background:${m?.upBg ?? ''}`)\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" :fill=\"m?.upFill\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M7 10v11\"></path><path d=\"M15 5.9 14 10h5.8a2 2 0 0 1 1.9 2.5l-2.3 7A2 2 0 0 1 17.5 21H7V10l4.3-7a2.1 2.1 0 0 1 3.7 2.9z\"></path><path d=\"M3 10h4v11H3z\"></path></svg></button>\n                      <button class=\"app-scp1\" @click=\"m?.onDown\" :aria-pressed=\"dcrt.attr(m?.downOn)\" aria-label=\"Antwoord klopt niet\" title=\"Klopt niet\" :style=\"dcrt.style(`width:32px;height:32px;border:none;border-radius:8px;color:var(--muted,rgba(255,255,255,0.75));display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;background:${m?.downBg ?? ''}`)\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" :fill=\"m?.downFill\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M17 14V3\"></path><path d=\"M9 18.1 10 14H4.2a2 2 0 0 1-1.9-2.5l2.3-7A2 2 0 0 1 6.5 3H17v11l-4.3 7a2.1 2.1 0 0 1-3.7-2.9z\"></path><path d=\"M17 3h4v11h-4z\"></path></svg></button>\n                    </div>\n                  </div>\n                </template>\n              </div>\n            </template>\n            <template v-if=\"dcv.guestWall\">\n              <div style=\"display:flex;flex-direction:column;gap:12px\">\n                <span style=\"font:700 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Kiek</span>\n                <div style=\"border-radius:16px;background:#7D80FF;color:#1F184E;padding:24px;display:flex;flex-direction:column;gap:16px;max-width:560px\">\n                  <div style=\"display:flex;flex-direction:column;gap:6px\">\n                    <span style=\"font:800 28px/0.95 Degular,var(--font-display,sans-serif);letter-spacing:-0.02em\">Wil je verder chatten?</span>\n                    <span style=\"font:500 15px/1.4 var(--font-body)\">Je hebt je 3 gratis vragen gesteld. Maak een account aan, dan blijft dit gesprek bewaard en kun je verder.</span>\n                  </div>\n                  <div style=\"display:flex;gap:8px;flex-wrap:wrap\">\n                    <button type=\"button\" @click=\"dcv.goSignup\" style=\"height:48px;border:none;border-radius:12px;background:#1F184E;color:#F9F7F3;padding:0 24px;font:500 15px var(--font-body);cursor:pointer\">Account aanmaken</button>\n                    <button type=\"button\" @click=\"dcv.goLogin\" style=\"height:48px;border:none;border-radius:12px;background:rgba(31,24,78,0.1);color:#1F184E;padding:0 20px;font:500 15px var(--font-body);cursor:pointer\">Inloggen</button>\n                  </div>\n                </div>\n              </div>\n            </template>\n            <template v-if=\"dcv.generating\">\n              <div style=\"display:flex;flex-direction:column;gap:12px\">\n                <span style=\"font:700 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Kiek</span>\n                <div style=\"display:flex;align-items:center;gap:12px\">\n                  <span style=\"font:400 14px/1.4 var(--font-body);animation:kiekPulse 1.4s ease-in-out infinite\">Kiek zoekt in het onderzoek…</span>\n                  <button @click=\"dcv.stop\" style=\"border:none;border-radius:8px;background:none;box-shadow:inset 0 0 0 1px #7D80FF;color:inherit;padding:6px 12px;font:500 12px var(--font-body);cursor:pointer\">Stop</button>\n                </div>\n              </div>\n            </template>\n          </div>\n        </div>\n        <div :style=\"dcrt.style(`position:absolute;left:0;right:0;bottom:0;padding:${dcv.composerPad ?? ''};background:linear-gradient(180deg,var(--bg0,rgba(31,24,78,0)) 0%,var(--bg,#1F184E) 45.74%);pointer-events:none`)\">\n          <div style=\"max-width:732px;height:72px;border-radius:16px;background:var(--surface,#2A2260);display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 16px 16px 24px;pointer-events:auto\">\n            <input :ref=\"(el) => dcrt.setRef(dcv.inputRef, el)\" :value=\"dcv.draft ?? ''\" @input=\"dcv.onDraft\" @keydown=\"dcv.onKey\" :placeholder=\"dcv.composerPh\" aria-label=\"Bericht aan Kiek\" style=\"flex:1;min-width:0;border:none;outline:none;background:none;color:inherit;font:400 14px/1.4 var(--font-body)\">\n            <button class=\"app-scp2\" @click=\"dcv.send\" aria-label=\"Verstuur\" style=\"width:40px;height:40px;border:none;border-radius:8px;background:#7D80FF;color:#F9F7F3;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0\">\n              <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linejoin=\"round\" stroke-linecap=\"round\"><path d=\"M21 3 10.5 13.5\"></path><path d=\"M21 3 14.5 21l-4-7.5L3 9.5z\"></path></svg>\n            </button>\n          </div>\n        </div>\n      </div>\n    </template>\n\n    <template v-if=\"dcv.isOnderzoek\">\n      <div :style=\"dcrt.style(`flex:1;overflow:auto;padding:${dcv.pagePad ?? ''}`)\">\n        <template v-if=\"dcv.rsList\">\n          <div style=\"max-width:1100px;display:flex;flex-direction:column;gap:24px\">\n            <div style=\"display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap\">\n              <div>\n                <h1 style=\"margin:0;font:800 48px/1 var(--font-display);letter-spacing:-0.01em\"><span v-if=\"dcrt.shows(dcv.rsH1)\" class=\"sc-interp\">{{ dcv.rsH1 }}</span></h1>\n                <p style=\"margin:8px 0 0;font:400 14px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75));max-width:620px\"><span v-if=\"dcrt.shows(dcv.rsIntro)\" class=\"sc-interp\">{{ dcv.rsIntro }}</span></p>\n              </div>\n              <button class=\"app-scp2\" @click=\"dcv.openUpload\" style=\"height:46px;border:none;border-radius:12px;background:#7D80FF;color:#FFFFFF;padding:0 20px;font:500 14px var(--font-body);cursor:pointer;display:flex;align-items:center;gap:8px\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 16V4\"></path><path d=\"m7 9 5-5 5 5\"></path><path d=\"M4 16v3a1.5 1.5 0 0 0 1.5 1.5h13A1.5 1.5 0 0 0 20 19v-3\"></path></svg>Onderzoek aanleveren</button>\n            </div>\n\n            <template v-if=\"dcv.showOnboard\">\n              <div :style=\"dcrt.style(`display:grid;grid-template-columns:${dcv.obCols ?? ''};gap:24px;align-items:start`)\">\n                <div style=\"border-radius:12px;background:var(--surface,#2A2260);padding:24px;display:flex;flex-direction:column;gap:20px\">\n                  <div style=\"display:flex;flex-direction:column;gap:10px\">\n                    <div style=\"display:flex;justify-content:space-between;align-items:baseline;gap:12px\">\n                      <span style=\"font:800 28px/1 var(--font-display)\">Aan de slag</span>\n                      <span style=\"font:400 13px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(dcv.obDone)\" class=\"sc-interp\">{{ dcv.obDone }}</span> van 3 gedaan</span>\n                    </div>\n                    <span style=\"display:flex;gap:6px\"><template v-for=\"(b, $index) in dcrt.list(dcv.obBars)\" :key=\"$index\"><span :style=\"dcrt.style(`flex:1;height:4px;border-radius:2px;background:${b?.bg ?? ''}`)\"></span></template></span>\n                  </div>\n                  <template v-for=\"(st, $index) in dcrt.list(dcv.obSteps)\" :key=\"$index\">\n                    <div :style=\"dcrt.style(`display:grid;grid-template-columns:36px minmax(0,1fr);gap:16px;align-items:start;opacity:${st?.op ?? ''}`)\">\n                      <span :style=\"dcrt.style(`width:36px;height:36px;border-radius:50%;background:${st?.circleBg ?? ''};color:${st?.circleColor ?? ''};display:flex;align-items:center;justify-content:center;font:700 14px var(--font-body)`)\">\n                        <template v-if=\"st?.done\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12.5 10 17 19 7\"></path></svg></template>\n                        <template v-if=\"st?.todo\"><span v-if=\"dcrt.shows(st?.n)\" class=\"sc-interp\">{{ st?.n }}</span></template>\n                      </span>\n                      <div style=\"display:flex;flex-direction:column;gap:6px\">\n                        <span style=\"font:600 16px/1.3 var(--font-body)\"><span v-if=\"dcrt.shows(st?.title)\" class=\"sc-interp\">{{ st?.title }}</span></span>\n                        <span style=\"font:400 14px/1.45 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(st?.text)\" class=\"sc-interp\">{{ st?.text }}</span></span>\n                        <template v-if=\"st?.todo\">\n                          <button class=\"app-scp7\" @click=\"st?.onClick\" :style=\"dcrt.style(`align-self:flex-start;margin-top:6px;height:42px;border:none;border-radius:12px;background:${st?.btnBg ?? ''};box-shadow:${st?.btnRing ?? ''};color:${st?.btnColor ?? ''};padding:0 18px;font:500 14px var(--font-body);cursor:pointer`)\"><span v-if=\"dcrt.shows(st?.btn)\" class=\"sc-interp\">{{ st?.btn }}</span></button>\n                        </template>\n                      </div>\n                    </div>\n                  </template>\n                  <template v-if=\"dcv.obAllDone\">\n                    <div style=\"border-radius:10px;background:var(--surface2,rgba(125,128,255,0.12));padding:16px;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap\">\n                      <span style=\"font:400 14px/1.4 var(--font-body)\">Je bent klaar. Zodra Kiek je onderzoek aanhaalt, verschijnt het hieronder.</span>\n                      <button @click=\"dcv.hideOnboard\" style=\"height:40px;border:none;border-radius:10px;background:#7D80FF;color:#FFFFFF;padding:0 16px;font:500 14px var(--font-body);cursor:pointer\">Verberg uitleg</button>\n                    </div>\n                  </template>\n                </div>\n                <div style=\"display:flex;flex-direction:column;gap:16px\">\n                  <div style=\"border-radius:12px;box-shadow:inset 0 0 0 1px var(--hair,rgba(255,255,255,0.12));padding:20px;display:flex;flex-direction:column;gap:14px\">\n                    <span style=\"font:700 14px/1.3 var(--font-body)\">Wat er na aanleveren gebeurt</span>\n                    <template v-for=\"(f, $index) in dcrt.list(dcv.obFlow)\" :key=\"$index\">\n                      <div style=\"display:flex;gap:12px;align-items:flex-start\">\n                        <span style=\"width:22px;height:22px;border-radius:50%;background:var(--surface2,rgba(125,128,255,0.12));color:#7D80FF;display:flex;align-items:center;justify-content:center;font:700 11px var(--font-body);flex-shrink:0\"><span v-if=\"dcrt.shows(f?.n)\" class=\"sc-interp\">{{ f?.n }}</span></span>\n                        <span style=\"display:flex;flex-direction:column;gap:2px\"><span style=\"font:600 13px/1.3 var(--font-body)\"><span v-if=\"dcrt.shows(f?.title)\" class=\"sc-interp\">{{ f?.title }}</span></span><span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(f?.text)\" class=\"sc-interp\">{{ f?.text }}</span></span></span>\n                      </div>\n                    </template>\n                  </div>\n                  <div style=\"border-radius:12px;box-shadow:inset 0 0 0 1px var(--hair,rgba(255,255,255,0.12));padding:20px;display:flex;flex-direction:column;gap:10px\">\n                    <span style=\"font:700 14px/1.3 var(--font-body)\">Goed om te weten</span>\n                    <template v-for=\"(t, $index) in dcrt.list(dcv.obNotes)\" :key=\"$index\"><span style=\"font:400 13px/1.45 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(t)\" class=\"sc-interp\">{{ t }}</span></span></template>\n                  </div>\n                </div>\n              </div>\n            </template>\n\n            <template v-if=\"dcv.rsVarLijst\">\n              <div style=\"display:flex;flex-direction:column;gap:8px\">\n                <span style=\"font:400 14px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(dcv.rsSummary)\" class=\"sc-interp\">{{ dcv.rsSummary }}</span></span>\n                <template v-if=\"dcv.rsWide\">\n                  <div style=\"display:grid;grid-template-columns:minmax(0,1fr) 150px 130px 20px;gap:24px;padding:12px 20px 0;font:600 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">\n                    <span>Onderzoek</span><span>Aangehaald</span><span>Jouw feedback</span><span></span>\n                  </div>\n                </template>\n                <template v-for=\"(d, $index) in dcrt.list(dcv.rsRows)\" :key=\"$index\">\n                  <button class=\"app-scp3\" @click=\"d?.onClick\" :style=\"dcrt.style(`border:none;border-radius:12px;background:var(--surface,#2A2260);color:inherit;padding:18px 20px;text-align:left;cursor:pointer;display:grid;grid-template-columns:${dcv.rsRowCols ?? ''};gap:12px 24px;align-items:center`)\">\n                    <span style=\"display:flex;flex-direction:column;gap:6px;min-width:0\">\n                      <span style=\"font:600 16px/1.3 var(--font-body)\"><span v-if=\"dcrt.shows(d?.title)\" class=\"sc-interp\">{{ d?.title }}</span></span>\n                      <span style=\"display:flex;gap:8px;align-items:center;flex-wrap:wrap;font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(d?.meta)\" class=\"sc-interp\">{{ d?.meta }}</span><template v-if=\"d?.cin\"><span style=\"border-radius:100px;background:rgba(112,233,162,0.12);color:#34C759;padding:6px 10px;font:600 11px/1 var(--font-body);white-space:nowrap\">Cinergie Twente</span></template></span>\n                      <template v-if=\"d?.hasNote\"><span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(d?.note)\" class=\"sc-interp\">{{ d?.note }}</span></span></template>\n                    </span>\n                    <span style=\"display:flex;flex-direction:column;gap:2px\">\n                      <span :style=\"dcrt.style(`font:700 24px/1 var(--font-body);color:${d?.countColor ?? ''}`)\"><span v-if=\"dcrt.shows(d?.count)\" class=\"sc-interp\">{{ d?.count }}</span></span>\n                      <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(d?.countSub)\" class=\"sc-interp\">{{ d?.countSub }}</span></span>\n                    </span>\n                    <span :style=\"dcrt.style(`font:400 13px/1.4 var(--font-body);color:${d?.fbColor ?? ''}`)\"><span v-if=\"dcrt.shows(d?.fb)\" class=\"sc-interp\">{{ d?.fb }}</span></span>\n                    <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" style=\"opacity:0.6\"><path d=\"m9 5 7 7-7 7\"></path></svg>\n                  </button>\n                </template>\n              </div>\n            </template>\n\n            <template v-if=\"dcv.rsVarKaarten\">\n              <div style=\"display:flex;flex-direction:column;gap:24px\">\n                <div style=\"display:flex;gap:12px;flex-wrap:wrap\">\n                  <template v-for=\"(st, $index) in dcrt.list(dcv.rsStats)\" :key=\"$index\">\n                    <div style=\"border-radius:12px;background:var(--surface,#2A2260);padding:16px 20px;display:flex;flex-direction:column;gap:4px;min-width:160px\">\n                      <span style=\"font:700 24px/1 var(--font-body)\"><span v-if=\"dcrt.shows(st?.n)\" class=\"sc-interp\">{{ st?.n }}</span></span>\n                      <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(st?.label)\" class=\"sc-interp\">{{ st?.label }}</span></span>\n                    </div>\n                  </template>\n                </div>\n                <div style=\"display:flex;flex-direction:column;gap:12px\">\n                  <template v-for=\"(d, $index) in dcrt.list(dcv.rsDocs)\" :key=\"$index\">\n                    <button class=\"app-scp3\" @click=\"d?.onClick\" style=\"border:none;border-radius:12px;background:var(--surface,#2A2260);color:inherit;padding:20px;text-align:left;cursor:pointer;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px 24px;align-items:center\">\n                      <span style=\"display:flex;flex-direction:column;gap:6px;min-width:0\">\n                        <span style=\"font:600 18px/1.25 var(--font-body)\"><span v-if=\"dcrt.shows(d?.title)\" class=\"sc-interp\">{{ d?.title }}</span></span>\n                        <span style=\"display:flex;gap:8px;align-items:center;flex-wrap:wrap;font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(d?.meta)\" class=\"sc-interp\">{{ d?.meta }}</span><template v-if=\"d?.cin\"><span style=\"border-radius:100px;background:rgba(112,233,162,0.12);color:#34C759;padding:6px 10px;font:600 11px/1 var(--font-body);white-space:nowrap\">Cinergie Twente</span></template><span :style=\"dcrt.style(`border-radius:100px;background:${d?.stBg ?? ''};color:${d?.stColor ?? ''};padding:6px 10px;font:600 11px/1 var(--font-body);white-space:nowrap`)\"><span v-if=\"dcrt.shows(d?.status)\" class=\"sc-interp\">{{ d?.status }}</span></span></span>\n                      </span>\n                      <span style=\"display:flex;flex-direction:column;gap:4px;align-items:flex-end;text-align:right\">\n                        <span style=\"font:600 14px/1.2 var(--font-body)\"><span v-if=\"dcrt.shows(d?.usage)\" class=\"sc-interp\">{{ d?.usage }}</span></span>\n                        <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(d?.fbLine)\" class=\"sc-interp\">{{ d?.fbLine }}</span></span>\n                      </span>\n                    </button>\n                  </template>\n                </div>\n              </div>\n            </template>\n\n            <div :ref=\"(el) => dcrt.setRef(dcv.shareRef, el)\" :style=\"dcrt.style(`border-radius:12px;background:var(--surface,#2A2260);box-shadow:${dcv.shareRing ?? ''};padding:24px;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:24px;align-items:start;margin-top:16px;transition:box-shadow .4s`)\">\n              <div style=\"display:flex;flex-direction:column;gap:16px\">\n                <div style=\"display:flex;justify-content:space-between;align-items:flex-start;gap:16px\">\n                  <div style=\"display:flex;flex-direction:column;gap:4px\">\n                    <span style=\"font:700 16px/1.2 var(--font-body)\">Contactgegevens bij verwijzingen</span>\n                    <span style=\"font:400 13px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Mogen gebruikers je benaderen als Kiek naar jouw onderzoek verwijst?</span>\n                  </div>\n                  <button @click=\"dcv.toggleShare\" role=\"switch\" :aria-checked=\"dcrt.attr(dcv.shareOn)\" aria-label=\"Contactgegevens delen\" :style=\"dcrt.style(`width:48px;height:28px;border:none;border-radius:100px;background:${dcv.shareTrack ?? ''};padding:3px;cursor:pointer;flex-shrink:0;display:flex;justify-content:${dcv.shareJustify ?? ''}`)\"><span style=\"width:22px;height:22px;border-radius:50%;background:#FFFFFF\"></span></button>\n                </div>\n                <template v-if=\"dcv.shareOn\">\n                  <div style=\"display:flex;flex-direction:column;gap:10px\">\n                    <span style=\"font:600 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Wat mag zichtbaar zijn</span>\n                    <template v-for=\"(f, $index) in dcrt.list(dcv.shareFields)\" :key=\"$index\">\n                      <button @click=\"f?.onClick\" role=\"checkbox\" :aria-checked=\"dcrt.attr(f?.on)\" :aria-disabled=\"dcrt.attr(f?.locked)\" :style=\"dcrt.style(`border:none;background:none;color:inherit;padding:0;display:flex;align-items:center;gap:12px;cursor:${f?.cursor ?? ''};text-align:left;font:400 14px/1.4 var(--font-body)`)\">\n                        <span :style=\"dcrt.style(`width:20px;height:20px;border-radius:6px;background:${f?.boxBg ?? ''};box-shadow:${f?.boxRing ?? ''};display:flex;align-items:center;justify-content:center;flex-shrink:0`)\"><template v-if=\"f?.on\"><svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#FFFFFF\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12.5 10 17 19 7\"></path></svg></template></span>\n                        <span><span v-if=\"dcrt.shows(f?.label)\" class=\"sc-interp\">{{ f?.label }}</span></span><template v-if=\"f?.locked\"><span style=\"font:400 12px var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">altijd</span></template>\n                      </button>\n                    </template>\n                  </div>\n                </template>\n                <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(dcv.shareNote)\" class=\"sc-interp\">{{ dcv.shareNote }}</span></span>\n                <template v-if=\"dcv.shareAsk\"><button @click=\"dcv.confirmShare\" style=\"align-self:flex-start;height:40px;border:none;border-radius:10px;background:#7D80FF;color:#FFFFFF;padding:0 16px;font:500 14px var(--font-body);cursor:pointer\">Opslaan</button></template>\n              </div>\n              <div style=\"display:flex;flex-direction:column;gap:10px\">\n                <span style=\"font:600 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Zo zien gebruikers het</span>\n                <div style=\"border-radius:12px;background:var(--bg,#1F184E);padding:16px;display:flex;flex-direction:column;gap:12px\">\n                  <span style=\"font:700 14px/1 var(--font-body)\">Contactpersonen &amp; bedrijven</span>\n                  <template v-if=\"dcv.shareOn\">\n                    <div style=\"display:flex;gap:12px;align-items:flex-start\">\n                      <span style=\"width:32px;height:32px;border-radius:8px;background:var(--surface2,rgba(125,128,255,0.12));display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#7D80FF\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"><circle cx=\"12\" cy=\"8\" r=\"4\"></circle><path d=\"M4.5 21a7.5 7.5 0 0 1 15 0\"></path></svg></span>\n                      <span style=\"display:flex;flex-direction:column;gap:3px;min-width:0\">\n                        <span style=\"font:600 14px/1.2 var(--font-body)\">dr. Femke Groen</span>\n                        <template v-for=\"(pv, $index) in dcrt.list(dcv.sharePreview)\" :key=\"$index\"><span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(pv)\" class=\"sc-interp\">{{ pv }}</span></span></template>\n                      </span>\n                    </div>\n                  </template>\n                  <template v-if=\"dcv.shareOff\">\n                    <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Je naam staat alleen als auteur bij de bron. Je verschijnt niet als contactpersoon.</span>\n                  </template>\n                </div>\n              </div>\n            </div>\n          </div>\n        </template>\n\n        <template v-if=\"dcv.rsDetail\">\n          <div style=\"max-width:1100px;display:flex;flex-direction:column;gap:24px\">\n            <div style=\"display:flex;flex-direction:column;gap:6px\">\n              <button class=\"app-scp8\" @click=\"dcv.rsBack\" style=\"align-self:flex-start;border:none;background:none;color:#7D80FF;padding:0;cursor:pointer;font:400 12px/1.4 var(--font-body);display:flex;align-items:center;gap:4px\"><svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\"><path d=\"m15 5-7 7 7 7\"></path></svg>Mijn onderzoeken</button>\n              <h1 style=\"margin:0;font:800 32px/1.1 var(--font-display);letter-spacing:-0.01em\"><span v-if=\"dcrt.shows(dcv.rs?.title)\" class=\"sc-interp\">{{ dcv.rs?.title }}</span></h1>\n              <span style=\"display:flex;gap:8px;align-items:center;flex-wrap:wrap;font:400 14px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(dcv.rs?.meta)\" class=\"sc-interp\">{{ dcv.rs?.meta }}</span>\n                <template v-if=\"dcv.rs?.cin\"><span style=\"border-radius:100px;background:rgba(112,233,162,0.12);color:#34C759;padding:6px 10px;font:600 11px/1 var(--font-body);white-space:nowrap\">Cinergie Twente</span></template>\n              </span>\n              <template v-if=\"dcv.rs?.note\"><span style=\"font:400 12px/1.4 var(--font-body);color:#F388FF\"><span v-if=\"dcrt.shows(dcv.rs?.note)\" class=\"sc-interp\">{{ dcv.rs?.note }}</span></span></template>\n            </div>\n\n            <template v-if=\"dcv.rs?.noUses\">\n              <div style=\"border-radius:12px;background:var(--surface,#2A2260);padding:32px;display:flex;flex-direction:column;gap:8px;max-width:640px\">\n                <span style=\"font:700 16px/1.2 var(--font-body)\">Nog niet aangehaald</span>\n                <span style=\"font:400 14px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Dit onderzoek staat in de kennisbank en kan gebruikt worden, maar Kiek heeft het nog in geen enkel antwoord aangehaald. Zodra dat gebeurt, zie je hier het fragment.</span>\n              </div>\n            </template>\n\n            <template v-if=\"dcv.rs?.hasUses\">\n              <div style=\"max-width:760px;display:flex;flex-direction:column;gap:20px\"><div style=\"display:contents\">\n                  <div style=\"display:flex;flex-direction:column;gap:12px\">\n                    <div style=\"display:flex;align-items:center;justify-content:space-between;gap:12px\">\n                      <span style=\"font:700 16px/1.2 var(--font-body)\">Gebruiksmoment <span v-if=\"dcrt.shows(dcv.use?.pos)\" class=\"sc-interp\">{{ dcv.use?.pos }}</span> van <span v-if=\"dcrt.shows(dcv.use?.total)\" class=\"sc-interp\">{{ dcv.use?.total }}</span></span>\n                      <span style=\"display:flex;gap:8px\">\n                        <button @click=\"dcv.use?.prev\" aria-label=\"Vorig gebruiksmoment\" :style=\"dcrt.style(`width:36px;height:36px;border:none;border-radius:10px;background:var(--surface,#2A2260);color:inherit;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:${dcv.use?.prevOp ?? ''}`)\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\"><path d=\"m15 5-7 7 7 7\"></path></svg></button>\n                        <button @click=\"dcv.use?.next\" aria-label=\"Volgend gebruiksmoment\" :style=\"dcrt.style(`width:36px;height:36px;border:none;border-radius:10px;background:var(--surface,#2A2260);color:inherit;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:${dcv.use?.nextOp ?? ''}`)\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\"><path d=\"m9 5 7 7-7 7\"></path></svg></button>\n                      </span>\n                    </div>\n                    <div style=\"display:flex;gap:8px;flex-wrap:wrap\">\n                      <template v-for=\"(u, $index) in dcrt.list(dcv.rs?.uses)\" :key=\"$index\">\n                        <button class=\"app-scp3\" @click=\"u?.onClick\" :aria-pressed=\"dcrt.attr(u?.on)\" :style=\"dcrt.style(`border:none;border-radius:100px;background:${u?.pillBg ?? ''};color:${u?.pillColor ?? ''};padding:8px 14px;font:600 12px/1 var(--font-body);cursor:pointer;display:flex;align-items:center;gap:8px`)\"><span v-if=\"dcrt.shows(u?.date)\" class=\"sc-interp\">{{ u?.date }}</span><template v-if=\"u?.hasDot\"><span :style=\"dcrt.style(`width:6px;height:6px;border-radius:50%;background:${u?.dot ?? ''}`)\"></span></template></button>\n                      </template>\n                    </div>\n                  </div>\n\n                  <div style=\"border-radius:12px;background:var(--surface,#2A2260);padding:24px;display:flex;flex-direction:column;gap:20px\">\n                    <div style=\"display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap\">\n                      <span style=\"font:600 14px/1.3 var(--font-body)\"><span v-if=\"dcrt.shows(dcv.use?.topic)\" class=\"sc-interp\">{{ dcv.use?.topic }}</span></span>\n                      <span :style=\"dcrt.style(`border-radius:100px;background:${dcv.use?.stBg ?? ''};color:${dcv.use?.stColor ?? ''};padding:6px 10px;font:600 11px/1 var(--font-body);white-space:nowrap`)\"><span v-if=\"dcrt.shows(dcv.use?.status)\" class=\"sc-interp\">{{ dcv.use?.status }}</span></span>\n                    </div>\n                    <div style=\"display:flex;flex-direction:column;gap:6px\">\n                      <span style=\"font:600 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">De vraag (geanonimiseerd)</span>\n                      <span style=\"font:400 14px/1.5 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(dcv.use?.context)\" class=\"sc-interp\">{{ dcv.use?.context }}</span></span>\n                    </div>\n                    <div style=\"display:flex;flex-direction:column;gap:6px\">\n                      <span style=\"font:600 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Wat Kiek zei</span>\n                      <span style=\"font:400 16px/1.5 var(--font-body)\"><span v-if=\"dcrt.shows(dcv.use?.statement)\" class=\"sc-interp\">{{ dcv.use?.statement }}</span> <span :style=\"dcrt.style(`border-radius:100px;background:${dcv.use?.citeBg ?? ''};color:${dcv.use?.citeColor ?? ''};padding:3px 8px;font:700 11px/1 var(--font-body);white-space:nowrap;vertical-align:2px`)\"><span v-if=\"dcrt.shows(dcv.use?.citeLabel)\" class=\"sc-interp\">{{ dcv.use?.citeLabel }}</span></span></span>\n                    </div>\n                    <div style=\"border-radius:10px;background:var(--surface2,rgba(125,128,255,0.12));padding:16px;display:flex;flex-direction:column;gap:6px\">\n                      <span style=\"font:600 12px/1.4 var(--font-body);color:#7D80FF\">Uit jouw onderzoek · <span v-if=\"dcrt.shows(dcv.use?.loc)\" class=\"sc-interp\">{{ dcv.use?.loc }}</span></span>\n                      <span style=\"font:400 14px/1.5 var(--font-body)\"><span v-if=\"dcrt.shows(dcv.use?.quote)\" class=\"sc-interp\">{{ dcv.use?.quote }}</span></span>\n                      <span style=\"font:400 11px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(dcv.use?.version)\" class=\"sc-interp\">{{ dcv.use?.version }}</span></span>\n                    </div>\n                    <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Je ziet alleen dit fragment. Het volledige gesprek en gegevens van de gebruiker of het bedrijf zijn niet zichtbaar.</span>\n                  </div>\n\n                  <div style=\"border-radius:12px;background:var(--surface,#2A2260);padding:20px;display:flex;flex-direction:column;gap:14px\">\n                    <div style=\"display:flex;flex-direction:column;gap:4px\">\n                      <span style=\"font:700 16px/1.2 var(--font-body)\">Jouw feedback</span>\n                      <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Klopt de uitspraak? Ondersteunt de passage de conclusie? Wat moet anders?</span>\n                    </div>\n                    <textarea :value=\"dcv.fbDraft ?? ''\" @input=\"dcv.onFbDraft\" rows=\"4\" aria-label=\"Jouw feedback op dit gebruik\" placeholder=\"Bijvoorbeeld: het onderzoek is gedaan in kantoren, niet in productiehallen.\" style=\"width:100%;border:none;outline:none;resize:vertical;border-radius:12px;background:var(--bg,#1F184E);color:inherit;padding:14px;font:400 14px/1.45 var(--font-body)\"></textarea>\n                    <div style=\"display:flex;flex-direction:column;gap:8px\">\n                      <span style=\"font:600 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Label (optioneel)</span>\n                      <div style=\"display:flex;gap:8px;flex-wrap:wrap\">\n                        <template v-for=\"(l, $index) in dcrt.list(dcv.fbLabelOpts)\" :key=\"$index\">\n                          <button class=\"app-scp3\" @click=\"l?.onClick\" :aria-pressed=\"dcrt.attr(l?.on)\" :style=\"dcrt.style(`border:none;border-radius:100px;background:${l?.bg ?? ''};color:${l?.color ?? ''};padding:8px 14px;font:600 12px/1 var(--font-body);cursor:pointer`)\"><span v-if=\"dcrt.shows(l?.label)\" class=\"sc-interp\">{{ l?.label }}</span></button>\n                        </template>\n                      </div>\n                    </div>\n                    <div style=\"display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap\">\n                      <span style=\"font:400 11px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75));max-width:440px\">Kiek leert niet automatisch van iedere opmerking. Een beheerder bekijkt je feedback en legt vast wat ermee gebeurt.</span>\n                      <span style=\"display:flex;gap:8px;flex-wrap:wrap\">\n                        <template v-if=\"dcv.use?.hasNext\"><button class=\"app-scp1\" @click=\"dcv.saveFb\" :style=\"dcrt.style(`height:46px;border:none;border-radius:12px;background:none;box-shadow:inset 0 0 0 1px #7D80FF;color:inherit;padding:0 18px;font:500 14px var(--font-body);cursor:pointer;opacity:${dcv.fbSendOpacity ?? ''}`)\">Opslaan</button></template>\n                        <button class=\"app-scp2\" @click=\"dcv.saveFbNext\" :style=\"dcrt.style(`height:46px;border:none;border-radius:12px;background:#7D80FF;color:#FFFFFF;padding:0 22px;font:500 14px var(--font-body);cursor:pointer;opacity:${dcv.fbSendOpacity ?? ''}`)\"><span v-if=\"dcrt.shows(dcv.use?.saveLabel)\" class=\"sc-interp\">{{ dcv.use?.saveLabel }}</span></button>\n                      </span>\n                    </div>\n                  </div>\n\n                  <div style=\"display:flex;flex-direction:column;gap:10px\">\n                    <span style=\"font:700 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Feedback op dit gebruik</span>\n                    <template v-if=\"dcv.use?.noFb\">\n                      <span style=\"font:400 13px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Nog geen feedback van onderzoekers.</span>\n                    </template>\n                    <template v-for=\"(f, $index) in dcrt.list(dcv.use?.fb)\" :key=\"$index\">\n                      <div style=\"border-radius:12px;box-shadow:inset 0 0 0 1px var(--hair,rgba(255,255,255,0.12));padding:16px;display:flex;flex-direction:column;gap:10px\">\n                        <div style=\"display:flex;justify-content:space-between;gap:8px;align-items:center;flex-wrap:wrap\">\n                          <span style=\"display:flex;gap:8px;align-items:center;flex-wrap:wrap\"><span style=\"font:600 13px/1.2 var(--font-body)\"><span v-if=\"dcrt.shows(f?.who)\" class=\"sc-interp\">{{ f?.who }}</span></span><span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(f?.date)\" class=\"sc-interp\">{{ f?.date }}</span></span>\n                            <template v-if=\"f?.hasLabel\"><span style=\"border-radius:100px;background:var(--surface2,rgba(125,128,255,0.12));color:#7D80FF;padding:5px 9px;font:600 10px/1 var(--font-body)\"><span v-if=\"dcrt.shows(f?.label)\" class=\"sc-interp\">{{ f?.label }}</span></span></template>\n                          </span>\n                          <span :style=\"dcrt.style(`border-radius:100px;background:${f?.stBg ?? ''};color:${f?.stColor ?? ''};padding:6px 10px;font:600 11px/1 var(--font-body);white-space:nowrap`)\"><span v-if=\"dcrt.shows(f?.status)\" class=\"sc-interp\">{{ f?.status }}</span></span>\n                        </div>\n                        <span style=\"font:400 14px/1.45 var(--font-body)\"><span v-if=\"dcrt.shows(f?.text)\" class=\"sc-interp\">{{ f?.text }}</span></span>\n                        <template v-if=\"f?.hasReply\">\n                          <div style=\"border-radius:8px;background:var(--surface,#2A2260);padding:12px;display:flex;flex-direction:column;gap:4px\">\n                            <span style=\"font:700 11px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Terugkoppeling beheerder</span>\n                            <span style=\"font:400 13px/1.45 var(--font-body)\"><span v-if=\"dcrt.shows(f?.reply)\" class=\"sc-interp\">{{ f?.reply }}</span></span>\n                            <template v-if=\"f?.hasChange\"><span style=\"font:600 12px/1.4 var(--font-body);color:#34C759\">Aangepast: <span v-if=\"dcrt.shows(f?.change)\" class=\"sc-interp\">{{ f?.change }}</span></span></template>\n                          </div>\n                        </template>\n                      </div>\n                    </template>\n                  </div>\n\n                  <div style=\"display:flex;justify-content:space-between;align-items:center;gap:12px;padding-top:4px\">\n                    <button class=\"app-scp1\" @click=\"dcv.use?.prev\" :style=\"dcrt.style(`height:44px;border:none;border-radius:12px;background:none;box-shadow:inset 0 0 0 1px var(--hair,rgba(255,255,255,0.12));color:inherit;padding:0 16px;font:500 14px var(--font-body);cursor:pointer;display:flex;align-items:center;gap:8px;visibility:${dcv.use?.prevVis ?? ''}`)\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\"><path d=\"m15 5-7 7 7 7\"></path></svg>Vorige</button>\n                    <span style=\"font:400 13px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(dcv.use?.pos)\" class=\"sc-interp\">{{ dcv.use?.pos }}</span> van <span v-if=\"dcrt.shows(dcv.use?.total)\" class=\"sc-interp\">{{ dcv.use?.total }}</span></span>\n                    <button class=\"app-scp1\" @click=\"dcv.use?.next\" :style=\"dcrt.style(`height:44px;border:none;border-radius:12px;background:none;box-shadow:inset 0 0 0 1px var(--hair,rgba(255,255,255,0.12));color:inherit;padding:0 16px;font:500 14px var(--font-body);cursor:pointer;display:flex;align-items:center;gap:8px;visibility:${dcv.use?.nextVis ?? ''}`)\">Volgende<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\"><path d=\"m9 5 7 7-7 7\"></path></svg></button>\n                  </div>\n                </div>\n              </div>\n            </template>\n          </div>\n        </template>\n      </div>\n    </template>\n\n    <template v-if=\"dcv.isPub\">\n      <div :style=\"dcrt.style(`flex:1;overflow:auto;padding:${dcv.pagePad ?? ''}`)\">\n        <div style=\"max-width:1100px;display:flex;flex-direction:column;gap:20px\">\n          <div>\n            <h1 style=\"margin:0;font:800 48px/1 var(--font-display);letter-spacing:-0.01em\">Publicaties</h1>\n            <p style=\"margin:8px 0 0;font:400 14px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75));max-width:620px\">Het onderzoek waar Kiek uit put. Publieke bronnen van Twentse kennisinstellingen, met de versie die Kiek nu gebruikt.</p>\n          </div>\n          <div style=\"display:flex;flex-direction:column;gap:12px\">\n              <label style=\"height:46px;border-radius:12px;background:var(--surface,#2A2260);display:flex;align-items:center;gap:12px;padding:0 14px;max-width:520px;cursor:text\">\n                <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" style=\"opacity:0.75;flex-shrink:0\"><circle cx=\"11\" cy=\"11\" r=\"7.5\"></circle><path d=\"m20.5 20.5-4.2-4.2\"></path></svg>\n                <input :value=\"dcv.pubQ ?? ''\" @input=\"dcv.onPubQ\" placeholder=\"Zoek op titel, auteur of thema\" aria-label=\"Zoek in publicaties\" style=\"flex:1;min-width:0;border:none;outline:none;background:none;color:inherit;font:400 15px var(--font-body)\">\n              </label>\n            <div style=\"display:flex;gap:8px;flex-wrap:wrap\">\n              <template v-for=\"(f, $index) in dcrt.list(dcv.pubFilters)\" :key=\"$index\">\n                <button class=\"app-scp3\" @click=\"f?.onClick\" :aria-pressed=\"dcrt.attr(f?.on)\" :style=\"dcrt.style(`border:none;border-radius:100px;background:${f?.bg ?? ''};color:${f?.color ?? ''};padding:9px 14px;font:600 13px/1 var(--font-body);cursor:pointer`)\"><span v-if=\"dcrt.shows(f?.label)\" class=\"sc-interp\">{{ f?.label }}</span></button>\n              </template>\n            </div>\n          </div>\n          <span style=\"font:400 13px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(dcv.pubCount)\" class=\"sc-interp\">{{ dcv.pubCount }}</span></span>\n          <div style=\"display:flex;flex-direction:column;gap:8px\">\n            <template v-for=\"(p, $index) in dcrt.list(dcv.pubList)\" :key=\"$index\">\n              <button class=\"app-scp3\" @click=\"p?.onClick\" style=\"border:none;border-radius:12px;background:var(--surface,#2A2260);color:inherit;padding:18px 20px;text-align:left;cursor:pointer;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 24px;align-items:center\">\n                <span style=\"display:flex;flex-direction:column;gap:6px;min-width:0\">\n                  <span style=\"font:600 16px/1.3 var(--font-body)\"><span v-if=\"dcrt.shows(p?.title)\" class=\"sc-interp\">{{ p?.title }}</span></span>\n                  <span style=\"display:flex;gap:8px;align-items:center;flex-wrap:wrap;font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(p?.meta)\" class=\"sc-interp\">{{ p?.meta }}</span><template v-if=\"p?.cin\"><span style=\"border-radius:100px;background:rgba(112,233,162,0.12);color:#34C759;padding:6px 10px;font:600 11px/1 var(--font-body);white-space:nowrap\">Cinergie Twente</span></template></span>\n                  <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(p?.themes)\" class=\"sc-interp\">{{ p?.themes }}</span></span>\n                </span>\n                <span :style=\"dcrt.style(`display:flex;align-items:center;gap:12px;font:400 12px/1.4 var(--font-body);color:${p?.usedColor ?? ''};text-align:right`)\"><span v-if=\"dcrt.shows(p?.used)\" class=\"sc-interp\">{{ p?.used }}</span><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" style=\"opacity:0.6;color:var(--text,#F9F7F3)\"><path d=\"m9 5 7 7-7 7\"></path></svg></span>\n              </button>\n            </template>\n            <template v-if=\"dcv.pubEmpty\">\n              <div style=\"border-radius:12px;background:var(--surface,#2A2260);padding:28px;display:flex;flex-direction:column;gap:6px\">\n                <span style=\"font:700 15px var(--font-body)\">Geen publicaties gevonden</span>\n                <span style=\"font:400 13px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Probeer een andere zoekterm of filter. Mist er onderzoek? Vraag Kiek ernaar; dan zie je of het onderwerp door bronnen wordt gedekt.</span>\n              </div>\n            </template>\n          </div>\n        </div>\n      </div>\n    </template>\n\n    <template v-if=\"dcv.isHist\">\n      <div :style=\"dcrt.style(`flex:1;overflow:auto;padding:${dcv.pagePad ?? ''}`)\">\n        <div style=\"max-width:880px;display:flex;flex-direction:column;gap:24px\">\n          <div style=\"display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap\">\n            <div>\n              <h1 style=\"margin:0;font:800 48px/1 var(--font-display);letter-spacing:-0.01em\">Gesprekken</h1>\n              <p style=\"margin:8px 0 0;font:400 14px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75));max-width:620px\">Al je gesprekken. Afronden vergrendelt niets: je kunt elk gesprek heropenen en verder praten.</p>\n            </div>\n          </div>\n          <div style=\"background:var(--surface,#2A2260);border-radius:16px;padding:24px 28px;display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap\">\n            <div style=\"display:flex;flex-direction:column;gap:6px;max-width:520px\">\n              <h2 style=\"margin:0;font:700 20px/1.2 var(--font-body)\">Een nieuw gesprek starten?</h2>\n              <p style=\"margin:0;font:400 14px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Vertel Kiek wat je van plan bent. Kiek stelt de juiste vragen en koppelt Twentse kennis aan je keuze.</p>\n            </div>\n            <button class=\"app-scp2\" @click=\"dcv.goNieuw\" style=\"height:48px;border:none;border-radius:12px;background:#7D80FF;color:#FFFFFF;padding:0 24px;font:500 14px var(--font-body);cursor:pointer\">Vraag aan Kiek</button>\n          </div>\n          <div style=\"display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:8px\">\n            <label style=\"height:46px;border-radius:12px;background:var(--surface,#2A2260);display:flex;align-items:center;gap:12px;padding:0 14px;flex:1;min-width:220px;cursor:text\">\n                <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" style=\"opacity:0.75;flex-shrink:0\"><circle cx=\"11\" cy=\"11\" r=\"7.5\"></circle><path d=\"m20.5 20.5-4.2-4.2\"></path></svg>\n                <input :value=\"dcv.histQ ?? ''\" @input=\"dcv.onHistQ\" placeholder=\"Zoek in je gesprekken\" aria-label=\"Zoek in gesprekken\" style=\"flex:1;min-width:0;border:none;outline:none;background:none;color:inherit;font:400 15px var(--font-body)\">\n              </label>\n            <div role=\"group\" aria-label=\"Filter gesprekken\" style=\"display:flex;gap:4px;padding:4px;border-radius:12px;background:var(--surface,#2A2260)\">\n              <template v-for=\"(f, $index) in dcrt.list(dcv.histFilters)\" :key=\"$index\">\n                <button @click=\"f?.onClick\" :aria-pressed=\"dcrt.attr(f?.on)\" :style=\"dcrt.style(`height:38px;border:none;border-radius:9px;background:${f?.bg ?? ''};color:${f?.color ?? ''};padding:0 14px;font:500 13px var(--font-body);cursor:pointer`)\"><span v-if=\"dcrt.shows(f?.label)\" class=\"sc-interp\">{{ f?.label }}</span></button>\n              </template>\n            </div>\n          </div>\n          <template v-for=\"(g, $index) in dcrt.list(dcv.histGroups)\" :key=\"$index\">\n            <div style=\"display:flex;flex-direction:column;gap:8px\">\n              <span style=\"font:600 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75));padding:8px 4px 0\"><span v-if=\"dcrt.shows(g?.label)\" class=\"sc-interp\">{{ g?.label }}</span></span>\n              <template v-for=\"(c, $index) in dcrt.list(g?.items)\" :key=\"$index\">\n                <div style=\"border-radius:12px;background:var(--surface,#2A2260);padding:16px 20px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 20px;align-items:center\">\n                  <button class=\"app-scp9\" @click=\"c?.onOpen\" style=\"border:none;background:none;color:inherit;padding:0;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:6px;min-width:0\">\n                    <span style=\"font:600 16px/1.3 var(--font-body)\"><span v-if=\"dcrt.shows(c?.title)\" class=\"sc-interp\">{{ c?.title }}</span></span>\n                    <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(c?.meta)\" class=\"sc-interp\">{{ c?.meta }}</span></span>\n                  </button>\n                  <span style=\"display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end\">\n                    <span :style=\"dcrt.style(`border-radius:100px;background:var(--surface2,rgba(125,128,255,0.12));color:${c?.stColor ?? ''};padding:7px 11px;font:600 11px/1 var(--font-body);white-space:nowrap`)\"><span v-if=\"dcrt.shows(c?.status)\" class=\"sc-interp\">{{ c?.status }}</span></span>\n                    <template v-if=\"c?.hasReport\"><button class=\"app-scp1\" @click=\"c?.onReport\" style=\"height:36px;border:none;border-radius:10px;background:none;box-shadow:inset 0 0 0 1px #7D80FF;color:inherit;padding:0 14px;font:500 13px var(--font-body);cursor:pointer\">Verslag</button></template>\n                    <button class=\"app-scp3\" @click=\"c?.onOpen\" style=\"height:36px;border:none;border-radius:10px;background:var(--surface2,rgba(125,128,255,0.12));color:inherit;padding:0 14px;font:500 13px var(--font-body);cursor:pointer\">Verder praten</button>\n                  </span>\n                </div>\n              </template>\n            </div>\n          </template>\n          <template v-if=\"dcv.histEmpty\">\n            <div style=\"border-radius:12px;background:var(--surface,#2A2260);padding:28px;display:flex;flex-direction:column;gap:6px\">\n              <span style=\"font:700 15px var(--font-body)\">Niets gevonden</span>\n              <span style=\"font:400 13px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Geen gesprekken die passen bij je zoekterm.</span>\n            </div>\n          </template>\n        </div>\n      </div>\n    </template>\n\n    <template v-if=\"dcv.isUitslag\">\n      <div :style=\"dcrt.style(`flex:1;overflow:auto;padding:${dcv.pagePadNarrowTop ?? ''}`)\">\n        <div style=\"max-width:1016px;display:flex;flex-direction:column;gap:24px\">\n          <div style=\"display:flex;justify-content:space-between;align-items:flex-start;gap:16px\">\n            <div style=\"min-width:0\">\n              <h1 style=\"margin:0;font:800 32px/1.1 var(--font-display);letter-spacing:-0.01em\"><span v-if=\"dcrt.shows(dcv.convTitle)\" class=\"sc-interp\">{{ dcv.convTitle }}</span></h1>\n              <p style=\"margin:6px 0 0;font:400 14px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(dcv.convMeta)\" class=\"sc-interp\">{{ dcv.convMeta }}</span></p>\n            </div>\n            <template v-if=\"dcv.headInsightBtn\">\n              <button class=\"app-scp3\" @click=\"dcv.openSide\" style=\"border:none;border-radius:12px;background:var(--surface,#2A2260);color:inherit;padding:12px 18px;font:600 14px var(--font-body);cursor:pointer;flex-shrink:0\">Inzicht &amp; bronnen</button>\n            </template>\n          </div>\n          <template v-if=\"dcv.reportBusy\">\n            <div style=\"border-radius:12px;background:var(--surface,#2A2260);padding:40px 24px;display:flex;flex-direction:column;gap:8px;align-items:center;text-align:center\">\n              <span style=\"font:700 16px var(--font-body);animation:kiekPulse 1.4s ease-in-out infinite\">Gespreksverslag wordt gemaakt…</span>\n              <span style=\"font:400 14px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Kiek gebruikt dezelfde bronnen en bronversies als in het gesprek.</span>\n            </div>\n          </template>\n          <template v-if=\"dcv.reportReady\">\n            <div style=\"display:flex;flex-direction:column;gap:24px\">\n              <div style=\"display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-top:32px\">\n                <div style=\"display:flex;flex-direction:column;gap:4px\">\n                  <button class=\"app-scp8\" @click=\"dcv.backToConv\" style=\"border:none;background:none;color:#7D80FF;padding:0;text-align:left;cursor:pointer;font:400 12px/1.4 var(--font-body);display:flex;align-items:center;gap:4px\">\n                    <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\"><path d=\"m15 5-7 7 7 7\"></path></svg>Terug naar gesprek\n                  </button>\n                  <h2 style=\"margin:0;font:800 24px/1.1 var(--font-display)\"><span v-if=\"dcrt.shows(dcv.report?.title)\" class=\"sc-interp\">{{ dcv.report?.title }}</span></h2>\n                  <span style=\"font:400 14px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(dcv.report?.meta)\" class=\"sc-interp\">{{ dcv.report?.meta }}</span></span>\n                </div>\n                <div style=\"display:flex;gap:16px\">\n                  <button class=\"app-scpa\" @click=\"dcv.share\" style=\"height:52px;border:none;border-radius:12px;background:#F4F0E9;color:#1F184E;padding:0 24px;font:500 14px var(--font-body);cursor:pointer\">Delen</button>\n                  <button class=\"app-scp2\" @click=\"dcv.exportPdf\" style=\"height:52px;border:none;border-radius:12px;background:#7D80FF;color:#FFFFFF;padding:0 24px;font:500 14px var(--font-body);cursor:pointer\"><span v-if=\"dcrt.shows(dcv.exportLabel)\" class=\"sc-interp\">{{ dcv.exportLabel }}</span></button>\n                </div>\n              </div>\n\n              <div style=\"border-radius:12px;background:var(--surface,#2A2260);padding:16px;display:flex;flex-direction:column;gap:12px\">\n                <div style=\"display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap\">\n                  <span style=\"font:700 16px/1 var(--font-body)\">Jouw impact</span>\n                  <span style=\"border-radius:100px;background:rgba(125,128,255,0.1);color:#7D80FF;padding:8px 12px;font:600 12px/1 var(--font-body)\"><span v-if=\"dcrt.shows(dcv.report?.scenario)\" class=\"sc-interp\">{{ dcv.report?.scenario }}</span></span>\n                </div>\n                <template v-for=\"(r, $index) in dcrt.list(dcv.report?.rows)\" :key=\"$index\">\n                  <div style=\"display:grid;grid-template-columns:116px 1fr auto;gap:12px;align-items:center\">\n                    <span style=\"font:600 12px/1.4 var(--font-body)\"><span v-if=\"dcrt.shows(r?.label)\" class=\"sc-interp\">{{ r?.label }}</span></span>\n                    <span style=\"height:6px;border-radius:100px;background:var(--track,rgba(255,255,255,0.08));overflow:hidden\"><span :style=\"dcrt.style(`display:block;height:100%;width:${r?.pct ?? ''};border-radius:100px;background:${r?.color ?? ''}`)\"></span></span>\n                    <span style=\"font:600 12px/1.4 var(--font-body);text-align:right;min-width:96px\"><span v-if=\"dcrt.shows(r?.verdict)\" class=\"sc-interp\">{{ r?.verdict }}</span></span>\n                  </div>\n                </template>\n              </div>\n\n              <div style=\"border-radius:12px;background:var(--surface,#2A2260);padding:20px 16px 24px;display:flex;flex-direction:column;gap:24px;align-items:center\">\n                <span style=\"font:700 16px/1 var(--font-body)\">Jouw Bruto Twentse Waarde</span>\n                <div style=\"width:100%;display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:16px\">\n                  <template v-for=\"(it, $index) in dcrt.list(dcv.report?.btw)\" :key=\"$index\">\n                    <div style=\"display:flex;flex-direction:column;align-items:center;gap:20px;text-align:center\">\n                      <span role=\"img\" :aria-label=\"dcrt.attr(it?.aria)\" style=\"position:relative;width:76px;height:76px;display:flex;align-items:center;justify-content:center;flex-shrink:0\">\n                                <svg width=\"76\" height=\"76\" viewBox=\"0 0 76 76\" style=\"position:absolute;inset:0;transform:rotate(-90deg)\"><circle cx=\"38\" cy=\"38\" r=\"34\" fill=\"none\" stroke=\"var(--track,rgba(255,255,255,0.08))\" stroke-width=\"4\"></circle><circle cx=\"38\" cy=\"38\" r=\"34\" fill=\"none\" :stroke=\"it?.color\" stroke-width=\"4\" stroke-linecap=\"round\" :stroke-dasharray=\"it?.dash\"></circle></svg>\n                                <span :style=\"dcrt.style(`width:56px;height:56px;border-radius:50%;background:${it?.color ?? ''};display:flex;align-items:center;justify-content:center;color:#FFFFFF;font:300 22px/1 var(--font-body)`)\">+</span>\n                              </span>\n                      <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(it?.label)\" class=\"sc-interp\">{{ it?.label }}</span></span>\n                    </div>\n                  </template>\n                </div>\n              </div>\n\n              <div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:20px\">\n                <template v-for=\"(p, $index) in dcrt.list(dcv.report?.persp)\" :key=\"$index\">\n                  <div style=\"border-radius:12px;background:var(--surface,#2A2260);padding:16px;display:flex;flex-direction:column;gap:10px\">\n                    <div style=\"display:flex;justify-content:space-between;align-items:center;gap:8px\">\n                      <span style=\"font:700 16px/1 var(--font-body)\"><span v-if=\"dcrt.shows(p?.name)\" class=\"sc-interp\">{{ p?.name }}</span></span>\n                      <span :style=\"dcrt.style(`border-radius:100px;background:${p?.chipBg ?? ''};color:${p?.chipColor ?? ''};padding:6px 10px;font:600 10px/1 var(--font-body)`)\"><span v-if=\"dcrt.shows(p?.level)\" class=\"sc-interp\">{{ p?.level }}</span></span>\n                    </div>\n                    <span style=\"font:400 14px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(p?.text)\" class=\"sc-interp\">{{ p?.text }}</span></span>\n                    <span style=\"display:flex;gap:4px\">\n                      <template v-for=\"(s, $index) in dcrt.list(p?.segs)\" :key=\"$index\"><span :style=\"dcrt.style(`flex:1;height:3px;border-radius:1px;background:${s?.bg ?? ''}`)\"></span></template>\n                    </span>\n                    <span style=\"font:400 11px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(p?.count)\" class=\"sc-interp\">{{ p?.count }}</span></span>\n                  </div>\n                </template>\n              </div>\n\n              <div style=\"border-radius:12px;background:var(--surface,#2A2260);padding:16px;display:flex;flex-direction:column;gap:16px\">\n                <span style=\"font:700 16px/1 var(--font-body)\">Belangen die botsen</span>\n                <div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:12px\">\n                  <template v-for=\"(c, $index) in dcrt.list(dcv.report?.clash)\" :key=\"$index\">\n                    <div style=\"border-radius:12px;background:var(--surface2,rgba(125,128,255,0.12));padding:16px;display:flex;flex-direction:column;gap:6px\">\n                      <span style=\"font:600 14px/1.3 var(--font-body);color:#7D80FF\"><span v-if=\"dcrt.shows(c?.title)\" class=\"sc-interp\">{{ c?.title }}</span></span>\n                      <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(c?.text)\" class=\"sc-interp\">{{ c?.text }}</span></span>\n                    </div>\n                  </template>\n                </div>\n              </div>\n\n              <div style=\"border-radius:12px;box-shadow:inset 0 0 0 1px var(--hair,rgba(255,255,255,0.12));padding:16px;display:flex;flex-direction:column;gap:10px\">\n                <span style=\"font:700 16px/1 var(--font-body)\">Open vragen en onzekerheden</span>\n                <template v-for=\"(o, $index) in dcrt.list(dcv.report?.open)\" :key=\"$index\">\n                  <span style=\"font:400 14px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">— <span v-if=\"dcrt.shows(o)\" class=\"sc-interp\">{{ o }}</span></span>\n                </template>\n              </div>\n\n              <div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:20px;margin-top:16px;padding-bottom:40px\">\n                <section style=\"display:flex;flex-direction:column;gap:12px\">\n                  <h3 style=\"margin:0 0 4px;font:700 16px/1 var(--font-body)\">Gebruikte bronnen</h3>\n                  <template v-for=\"(d, $index) in dcrt.list(dcv.docs)\" :key=\"$index\">\n                    <button class=\"app-scp3\" @click=\"d?.onClick\" style=\"border:none;border-radius:12px;background:var(--surface,#2A2260);color:inherit;padding:16px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:6px\">\n                      <span style=\"font:600 14px/1.1 var(--font-body)\"><span v-if=\"dcrt.shows(d?.title)\" class=\"sc-interp\">{{ d?.title }}</span></span>\n                      <span style=\"display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(d?.meta)\" class=\"sc-interp\">{{ d?.meta }}</span>\n                        <template v-if=\"d?.cin\"><span style=\"border-radius:100px;background:rgba(112,233,162,0.1);color:#34C759;padding:8px 12px;font:600 10px/1 var(--font-body)\">Cinergie Twente</span></template>\n                      </span>\n                    </button>\n                  </template>\n                </section>\n                <section style=\"display:flex;flex-direction:column;gap:12px\">\n                  <h3 style=\"margin:0 0 4px;font:700 16px/1 var(--font-body)\">Wat kun je hiermee?</h3>\n                  <template v-for=\"(n, $index) in dcrt.list(dcv.nextSteps)\" :key=\"$index\">\n                    <button class=\"app-scp3\" @click=\"n?.onClick\" style=\"border:none;border-radius:12px;background:var(--surface,#2A2260);color:inherit;padding:16px;text-align:left;cursor:pointer;display:flex;align-items:center;gap:16px\">\n                      <span style=\"width:36px;height:36px;border-radius:8px;background:var(--surface2,rgba(125,128,255,0.12));display:flex;align-items:center;justify-content:center;flex-shrink:0\">\n                        <template v-if=\"n?.isChat\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linejoin=\"round\"><path d=\"M4 5.5A1.5 1.5 0 0 1 5.5 4h13A1.5 1.5 0 0 1 20 5.5v10a1.5 1.5 0 0 1-1.5 1.5H9l-5 4z\"></path></svg></template>\n                        <template v-if=\"n?.isTrend\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m3 17 6-6 4 4 8-8\"></path><path d=\"M15 7h6v6\"></path></svg></template>\n                        <template v-if=\"n?.isPlus\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\"><path d=\"M12 5v14\"></path><path d=\"M5 12h14\"></path></svg></template>\n                      </span>\n                      <span style=\"display:flex;flex-direction:column;gap:3px\">\n                        <span style=\"font:600 14px/1.2 var(--font-body)\"><span v-if=\"dcrt.shows(n?.title)\" class=\"sc-interp\">{{ n?.title }}</span></span>\n                        <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(n?.text)\" class=\"sc-interp\">{{ n?.text }}</span></span>\n                      </span>\n                    </button>\n                  </template>\n                </section>\n              </div>\n            </div>\n          </template>\n        </div>\n      </div>\n    </template>\n  </main>\n\n  <template v-if=\"dcv.showSide\">\n    <aside :style=\"dcrt.style(dcv.sideStyle)\">\n      <template v-if=\"dcv.sideOverlayOn\">\n        <button @click=\"dcv.closeSide\" style=\"align-self:flex-end;border:none;border-radius:8px;background:var(--surface,#2A2260);color:inherit;padding:8px 14px;font:600 13px var(--font-body);cursor:pointer;flex-shrink:0\">Sluit</button>\n      </template>\n      <div style=\"border-radius:12px;background:var(--surface,#2A2260);display:flex;flex-direction:column;flex-shrink:0;padding:8px\">\n        <div style=\"display:flex;justify-content:space-between;align-items:flex-end;padding:12px 8px\">\n          <span style=\"font:700 16px/1 var(--font-body)\">Jouw impact</span>\n          <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">per perspectief</span>\n        </div>\n        <template v-for=\"(p, $index) in dcrt.list(dcv.perspRows)\" :key=\"$index\">\n          <div style=\"display:flex;flex-direction:column\">\n            <button class=\"app-scp1\" @click=\"p?.onClick\" aria-haspopup=\"dialog\" style=\"border:none;border-radius:8px;background:none;color:inherit;padding:12px 8px;display:flex;justify-content:space-between;align-items:center;cursor:pointer;font:600 14px/1 var(--font-body);text-align:left\">\n              <span><span v-if=\"dcrt.shows(p?.label)\" class=\"sc-interp\">{{ p?.label }}</span></span>\n              <span style=\"font:400 12px/1 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(p?.count)\" class=\"sc-interp\">{{ p?.count }}</span></span>\n            </button>\n          </div>\n        </template>\n      </div>\n\n      <div style=\"border-radius:12px;background:var(--surface,#2A2260);display:flex;flex-direction:column;flex-shrink:0;padding:8px\">\n        <div style=\"display:flex;justify-content:space-between;align-items:flex-end;padding:12px 8px\">\n          <span style=\"font:700 16px/1 var(--font-body)\">Onderzoeken</span>\n          <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(dcv.docCountLabel)\" class=\"sc-interp\">{{ dcv.docCountLabel }}</span></span>\n        </div>\n        <template v-if=\"dcv.docsEmpty\">\n          <span style=\"padding:0 8px 8px;font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Nog niets aangehaald. Zodra Kiek een onderzoek gebruikt, verschijnt het hier.</span>\n        </template>\n        <template v-for=\"(d, $index) in dcrt.list(dcv.docs)\" :key=\"$index\">\n          <button class=\"app-scp1\" @click=\"d?.onClick\" @mouseenter=\"d?.onEnter\" @mouseleave=\"d?.onLeave\" :style=\"dcrt.style(`border:none;border-radius:8px;background:${d?.bg ?? ''};color:inherit;padding:12px 8px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:4px`)\">\n            <span style=\"display:flex;gap:10px;align-items:flex-start\"><span :style=\"dcrt.style(`width:22px;height:22px;border-radius:100px;background:${d?.numBg ?? ''};color:${d?.numColor ?? ''};display:flex;align-items:center;justify-content:center;font:700 11px var(--font-body);flex-shrink:0;margin-top:-3px`)\"><span v-if=\"dcrt.shows(d?.n)\" class=\"sc-interp\">{{ d?.n }}</span></span><span style=\"font:600 14px/1.1 var(--font-body)\"><span v-if=\"dcrt.shows(d?.title)\" class=\"sc-interp\">{{ d?.title }}</span></span></span>\n            <template v-if=\"d?.hasUsed\"><span style=\"font:400 11px/1.4 var(--font-body);color:#7D80FF;padding-left:32px\"><span v-if=\"dcrt.shows(d?.usedLabel)\" class=\"sc-interp\">{{ d?.usedLabel }}</span></span></template>\n            <span style=\"display:flex;justify-content:space-between;align-items:center;gap:4px 8px;flex-wrap:wrap;font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75));padding-left:32px\"><span v-if=\"dcrt.shows(d?.meta)\" class=\"sc-interp\">{{ d?.meta }}</span>\n              <template v-if=\"d?.cin\"><span style=\"border-radius:100px;background:rgba(112,233,162,0.1);color:#34C759;padding:8px 12px;font:600 10px/1 var(--font-body)\">Cinergie Twente</span></template>\n            </span>\n          </button>\n        </template>\n      </div>\n\n      <div style=\"border-radius:12px;background:var(--surface,#2A2260);display:flex;flex-direction:column;flex-shrink:0;padding:8px\">\n        <div style=\"padding:12px 8px\">\n          <span style=\"font:700 16px/1 var(--font-body)\">Contactpersonen &amp; bedrijven</span>\n        </div>\n        <template v-if=\"dcv.contactsEmpty\">\n          <span style=\"padding:0 8px 8px;font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Onderzoekers en bedrijven uit het gesprek verschijnen hier.</span>\n        </template>\n        <template v-for=\"(c, $index) in dcrt.list(dcv.contacts)\" :key=\"$index\">\n          <button class=\"app-scp1\" @click=\"c?.onClick\" style=\"border:none;border-radius:8px;background:none;color:inherit;padding:8px;text-align:left;cursor:pointer;display:flex;align-items:center;gap:12px\">\n            <span style=\"width:32px;height:32px;border-radius:8px;background:var(--surface2,rgba(125,128,255,0.12));display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#7D80FF\">\n              <template v-if=\"c?.isPerson\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"><circle cx=\"12\" cy=\"8\" r=\"4\"></circle><path d=\"M4.5 21a7.5 7.5 0 0 1 15 0\"></path></svg></template>\n              <template v-if=\"c?.isCompany\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"5\" y=\"3\" width=\"14\" height=\"18\" rx=\"1.5\"></rect><path d=\"M9 7.5h2\"></path><path d=\"M13 7.5h2\"></path><path d=\"M9 11.5h2\"></path><path d=\"M13 11.5h2\"></path><path d=\"M10.5 21v-4h3v4\"></path></svg></template>\n            </span>\n            <span style=\"display:flex;flex-direction:column;gap:2px;min-width:0\">\n              <span style=\"font:600 14px/1.2 var(--font-body)\"><span v-if=\"dcrt.shows(c?.name)\" class=\"sc-interp\">{{ c?.name }}</span></span>\n              <span style=\"font:400 12px/1.3 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(c?.role)\" class=\"sc-interp\">{{ c?.role }}</span></span>\n            </span>\n          </button>\n        </template>\n      </div>\n\n      <template v-if=\"dcv.isGesprek\">\n        <div style=\"display:flex;flex-direction:column;gap:16px;flex-shrink:0\">\n          <button class=\"app-scp2\" @click=\"dcv.summarize\" :style=\"dcrt.style(`height:52px;border:none;border-radius:12px;background:#7D80FF;color:#FFFFFF;font:500 14px var(--font-body);cursor:pointer;opacity:${dcv.actionOpacity ?? ''}`)\">Maak een gespreksverslag</button>\n          <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75));text-align:center\">Je gesprek blijft bewaard. Je kunt daarna gewoon verder praten.</span>\n        </div>\n      </template>\n      <template v-if=\"dcv.isUitslag\">\n        <div style=\"border-radius:12px;background:var(--surface,#2A2260);padding:20px 16px;display:flex;flex-direction:column;gap:10px;flex-shrink:0\">\n          <span style=\"font:600 14px/1 var(--font-body);color:#7D80FF\">Onderbouwing</span>\n          <span style=\"display:flex;align-items:baseline;gap:8px\"><span style=\"font:700 24px/1 var(--font-body);color:#7D80FF\"><span v-if=\"dcrt.shows(dcv.report?.total)\" class=\"sc-interp\">{{ dcv.report?.total }}</span></span><span style=\"font:400 14px var(--font-body)\">onderzoeken</span></span>\n          <span style=\"display:flex;gap:6px\"><template v-for=\"(s, $index) in dcrt.list(dcv.report?.totalSegs)\" :key=\"$index\"><span :style=\"dcrt.style(`flex:1;height:3px;border-radius:1px;background:${s?.bg ?? ''}`)\"></span></template></span>\n          <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(dcv.report?.cin)\" class=\"sc-interp\">{{ dcv.report?.cin }}</span> via Cinergie Twente</span>\n        </div>\n      </template>\n    </aside>\n  </template>\n  <template v-if=\"dcv.sideOverlayOn\">\n    <div @click=\"dcv.closeSide\" style=\"position:absolute;inset:0;background:rgba(10,8,30,0.5);z-index:29\"></div>\n  </template>\n\n  <template v-if=\"dcv.modalOpen\">\n    <div @click=\"dcv.closeModal\" style=\"position:absolute;inset:0;z-index:40;background:var(--scrim,rgba(10,8,30,0.6));display:flex;align-items:center;justify-content:center;padding:24px\">\n      <div role=\"dialog\" aria-modal=\"true\" @click=\"dcv.stopProp\" style=\"width:100%;max-width:640px;max-height:100%;overflow:auto;border-radius:16px;background:var(--bg,#1F184E);box-shadow:0 24px 64px rgba(10,8,30,0.45);padding:32px;display:flex;flex-direction:column;gap:20px\">\n        <div style=\"display:flex;justify-content:space-between;gap:16px;align-items:flex-start\">\n          <h2 style=\"margin:0;font:800 32px/1 var(--font-display);letter-spacing:-0.01em\"><span v-if=\"dcrt.shows(dcv.modal?.title)\" class=\"sc-interp\">{{ dcv.modal?.title }}</span></h2>\n          <button @click=\"dcv.closeModal\" style=\"border:none;border-radius:8px;background:var(--surface,#2A2260);color:inherit;padding:8px 14px;font:600 13px var(--font-body);cursor:pointer;flex-shrink:0\">Sluit</button>\n        </div>\n        <span style=\"display:flex;gap:8px;align-items:center;flex-wrap:wrap;font:400 14px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(dcv.modal?.meta)\" class=\"sc-interp\">{{ dcv.modal?.meta }}</span>\n          <template v-if=\"dcv.modal?.cin\"><span style=\"border-radius:100px;background:rgba(112,233,162,0.1);color:#34C759;padding:6px 10px;font:600 11px/1 var(--font-body)\">Cinergie Twente</span></template>\n        </span>\n\n        <template v-if=\"dcv.modal?.isDoc\">\n          <div style=\"display:flex;flex-direction:column;gap:16px\">\n            <template v-if=\"dcv.modal?.hasPassages\">\n              <div style=\"display:flex;gap:8px;flex-wrap:wrap\">\n                <template v-for=\"(t, $index) in dcrt.list(dcv.modal?.passTabs)\" :key=\"$index\">\n                  <button @click=\"t?.onClick\" :style=\"dcrt.style(`border:none;border-radius:100px;background:${t?.bg ?? ''};color:${t?.color ?? ''};padding:6px 12px;font:600 12px var(--font-body);cursor:pointer`)\"><span v-if=\"dcrt.shows(t?.label)\" class=\"sc-interp\">{{ t?.label }}</span></button>\n                </template>\n              </div>\n              <div style=\"border-radius:12px;background:var(--surface,#2A2260);padding:20px;display:flex;flex-direction:column;gap:8px\">\n                <span style=\"font:700 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Letterlijke passage · <span v-if=\"dcrt.shows(dcv.modal?.loc)\" class=\"sc-interp\">{{ dcv.modal?.loc }}</span></span>\n                <span style=\"font:400 16px/1.6 var(--font-body)\"><span v-if=\"dcrt.shows(dcv.modal?.before)\" class=\"sc-interp\">{{ dcv.modal?.before }}</span><mark style=\"background:rgba(125,128,255,0.32);color:inherit;border-radius:3px;padding:0 2px\"><span v-if=\"dcrt.shows(dcv.modal?.quote)\" class=\"sc-interp\">{{ dcv.modal?.quote }}</span></mark><span v-if=\"dcrt.shows(dcv.modal?.after)\" class=\"sc-interp\">{{ dcv.modal?.after }}</span></span>\n              </div>\n              <div style=\"display:flex;flex-direction:column;gap:4px\">\n                <span style=\"font:700 12px/1.4 var(--font-body)\">Waarom Kiek dit aanhaalt</span>\n                <span style=\"font:400 14px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(dcv.modal?.why)\" class=\"sc-interp\">{{ dcv.modal?.why }}</span></span>\n              </div>\n              <template v-if=\"dcv.modal?.hasUsedIn\">\n                <button @click=\"dcv.modal?.goUsed\" style=\"align-self:flex-start;border:none;background:none;color:#7D80FF;padding:0;font:600 14px var(--font-body);cursor:pointer;text-decoration:underline;text-underline-offset:3px\">Naar antwoord <span v-if=\"dcrt.shows(dcv.modal?.usedNo)\" class=\"sc-interp\">{{ dcv.modal?.usedNo }}</span> in het gesprek</button>\n              </template>\n            </template>\n            <template v-if=\"dcv.modal?.noPassages\">\n              <span style=\"font:400 14px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Deze publicatie is beschikbaar in de kennisbank, maar nog niet aangehaald in een gesprek.</span>\n            </template>\n            <div style=\"display:grid;grid-template-columns:120px 1fr;gap:8px 16px;font:400 12px/1.4 var(--font-body)\">\n              <span style=\"font-weight:700\">Auteur</span><span><span v-if=\"dcrt.shows(dcv.modal?.author)\" class=\"sc-interp\">{{ dcv.modal?.author }}</span></span>\n              <span style=\"font-weight:700\">Aangeleverd door</span><span><span v-if=\"dcrt.shows(dcv.modal?.supplier)\" class=\"sc-interp\">{{ dcv.modal?.supplier }}</span></span>\n              <span style=\"font-weight:700\">Bronversie</span><span><span v-if=\"dcrt.shows(dcv.modal?.version)\" class=\"sc-interp\">{{ dcv.modal?.version }}</span></span>\n            </div>\n            <button @click=\"dcv.modal?.openOriginal\" style=\"align-self:flex-start;height:44px;border:none;border-radius:12px;background:#7D80FF;color:#FFFFFF;padding:0 20px;font:500 14px var(--font-body);cursor:pointer\">Bekijk origineel document</button>\n          </div>\n        </template>\n\n        <template v-if=\"dcv.modal?.isPerson\">\n          <div style=\"display:flex;flex-direction:column;gap:16px\">\n            <div style=\"display:grid;grid-template-columns:120px 1fr;gap:8px 16px;font:400 14px/1.4 var(--font-body)\">\n              <span style=\"font-weight:700\">Organisatie</span><span><span v-if=\"dcrt.shows(dcv.modal?.org)\" class=\"sc-interp\">{{ dcv.modal?.org }}</span></span>\n              <span style=\"font-weight:700\">Expertise</span><span><span v-if=\"dcrt.shows(dcv.modal?.expertise)\" class=\"sc-interp\">{{ dcv.modal?.expertise }}</span></span>\n              <span style=\"font-weight:700\">Gekoppeld aan</span><span><span v-if=\"dcrt.shows(dcv.modal?.linked)\" class=\"sc-interp\">{{ dcv.modal?.linked }}</span></span>\n            </div>\n            <div style=\"border-radius:12px;background:var(--surface,#2A2260);padding:16px;font:400 14px/1.4 var(--font-body)\"><span v-if=\"dcrt.shows(dcv.modal?.route)\" class=\"sc-interp\">{{ dcv.modal?.route }}</span></div>\n          </div>\n        </template>\n\n        <template v-if=\"dcv.modal?.isCompany\">\n          <div style=\"display:flex;flex-direction:column;gap:16px\">\n            <div style=\"display:grid;grid-template-columns:120px 1fr;gap:10px 16px;font:400 14px/1.4 var(--font-body)\">\n              <span style=\"font-weight:700\">KVK-nummer</span><span><span v-if=\"dcrt.shows(dcv.modal?.kvk)\" class=\"sc-interp\">{{ dcv.modal?.kvk }}</span></span>\n              <span style=\"font-weight:700\">Sector</span><span><span v-if=\"dcrt.shows(dcv.modal?.sector)\" class=\"sc-interp\">{{ dcv.modal?.sector }}</span></span>\n              <span style=\"font-weight:700\">Adres</span><span><span v-if=\"dcrt.shows(dcv.modal?.address)\" class=\"sc-interp\">{{ dcv.modal?.address }}</span></span>\n              <span style=\"font-weight:700\">Telefoon</span><span><span v-if=\"dcrt.shows(dcv.modal?.phone)\" class=\"sc-interp\">{{ dcv.modal?.phone }}</span></span>\n              <span style=\"font-weight:700\">Website</span><span><span v-if=\"dcrt.shows(dcv.modal?.website)\" class=\"sc-interp\">{{ dcv.modal?.website }}</span></span>\n            </div>\n            <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Opgezocht via het KVK Handelsregister op basis van de bedrijfsnaam in het gesprek. Controleer de gegevens voordat je contact opneemt.</span>\n          </div>\n        </template>\n\n        <template v-if=\"dcv.modal?.isPersp\">\n          <div style=\"display:flex;flex-direction:column;gap:12px\">\n            <template v-if=\"dcv.modal?.empty\">\n              <div style=\"border-radius:12px;background:var(--surface,#2A2260);padding:20px;display:flex;flex-direction:column;gap:12px\">\n                <span style=\"font:400 14px/1.45 var(--font-body)\">Dit perspectief is nog niet besproken in dit gesprek.</span>\n                <button class=\"app-scp2\" @click=\"dcv.modal?.ask\" style=\"align-self:flex-start;height:44px;border:none;border-radius:12px;background:#7D80FF;color:#FFFFFF;padding:0 18px;font:500 14px var(--font-body);cursor:pointer\"><span v-if=\"dcrt.shows(dcv.modal?.askLabel)\" class=\"sc-interp\">{{ dcv.modal?.askLabel }}</span></button>\n              </div>\n            </template>\n            <template v-for=\"(it, $index) in dcrt.list(dcv.modal?.items)\" :key=\"$index\">\n              <div style=\"border-radius:12px;background:var(--surface,#2A2260);padding:16px;display:flex;flex-direction:column;gap:10px\">\n                <span style=\"font:400 14px/1.45 var(--font-body)\"><span v-if=\"dcrt.shows(it?.text)\" class=\"sc-interp\">{{ it?.text }}</span></span>\n                <template v-if=\"it?.hasSrc\">\n                  <span style=\"display:flex;gap:6px;flex-wrap:wrap\">\n                    <template v-for=\"(sr, $index) in dcrt.list(it?.srcs)\" :key=\"$index\">\n                      <button @click=\"sr?.onClick\" :style=\"dcrt.style(`border:none;border-radius:100px;background:${sr?.bg ?? ''};color:${sr?.color ?? ''};padding:6px 10px;font:600 11px/1 var(--font-body);cursor:pointer`)\"><span v-if=\"dcrt.shows(sr?.label)\" class=\"sc-interp\">{{ sr?.label }}</span></button>\n                    </template>\n                  </span>\n                </template>\n                <button @click=\"it?.onClick\" style=\"align-self:flex-start;border:none;background:none;color:#7D80FF;padding:0;font:600 13px var(--font-body);cursor:pointer;text-decoration:underline;text-underline-offset:3px\">Naar antwoord <span v-if=\"dcrt.shows(it?.no)\" class=\"sc-interp\">{{ it?.no }}</span> in het gesprek</button>\n              </div>\n            </template>\n          </div>\n        </template>\n\n        <template v-if=\"dcv.modal?.isUpload\">\n          <div style=\"display:flex;flex-direction:column;gap:18px\">\n            <div style=\"display:flex;gap:8px\">\n              <template v-for=\"(st, $index) in dcrt.list(dcv.up?.steps)\" :key=\"$index\">\n                <span style=\"flex:1;display:flex;flex-direction:column;gap:6px\"><span :style=\"dcrt.style(`height:4px;border-radius:2px;background:${st?.bar ?? ''}`)\"></span><span :style=\"dcrt.style(`font:600 12px/1.3 var(--font-body);color:${st?.color ?? ''}`)\"><span v-if=\"dcrt.shows(st?.label)\" class=\"sc-interp\">{{ st?.label }}</span></span></span>\n              </template>\n            </div>\n\n            <template v-if=\"dcv.up?.s1\">\n              <div style=\"display:flex;flex-direction:column;gap:12px\">\n                <button class=\"app-scp5\" @click=\"dcv.up?.pick\" :style=\"dcrt.style(`border:none;border-radius:12px;background:var(--surface,#2A2260);box-shadow:inset 0 0 0 1.5px ${dcv.up?.dropRing ?? ''};color:inherit;padding:32px 20px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center`)\">\n                  <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#7D80FF\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 16V4\"></path><path d=\"m7 9 5-5 5 5\"></path><path d=\"M4 16v3a1.5 1.5 0 0 0 1.5 1.5h13A1.5 1.5 0 0 0 20 19v-3\"></path></svg>\n                  <span style=\"font:600 14px/1.3 var(--font-body)\"><span v-if=\"dcrt.shows(dcv.up?.fileLabel)\" class=\"sc-interp\">{{ dcv.up?.fileLabel }}</span></span>\n                  <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(dcv.up?.fileSub)\" class=\"sc-interp\">{{ dcv.up?.fileSub }}</span></span>\n                </button>\n                <template v-if=\"dcv.up?.hasErr\"><span style=\"font:600 13px/1.4 var(--font-body);color:#FF383C\"><span v-if=\"dcrt.shows(dcv.up?.err)\" class=\"sc-interp\">{{ dcv.up?.err }}</span></span></template>\n                <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">PDF of Word, maximaal 50 MB. Gescande pagina's en complexe tabellen worden niet altijd goed gelezen; lever bij voorkeur de digitale versie aan. <button @click=\"dcv.up?.pickBad\" style=\"border:none;background:none;color:#7D80FF;padding:0;font:inherit;cursor:pointer;text-decoration:underline\">Voorbeeld: niet-ondersteund bestand</button></span>\n              </div>\n            </template>\n\n            <template v-if=\"dcv.up?.s2\">\n              <div style=\"display:flex;flex-direction:column;gap:12px\">\n                <span style=\"font:400 13px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Kiek heeft deze gegevens uit het bestand gehaald. Controleer en vul aan.</span>\n                <template v-for=\"(f, $index) in dcrt.list(dcv.up?.fields)\" :key=\"$index\">\n                  <label style=\"display:flex;flex-direction:column;gap:6px;font:600 12px/1.4 var(--font-body)\"><span v-if=\"dcrt.shows(f?.label)\" class=\"sc-interp\">{{ f?.label }}</span>\n                    <input :value=\"f?.value ?? ''\" @input=\"f?.onChange\" :placeholder=\"f?.ph\" :style=\"dcrt.style(`width:100%;border:none;outline:none;border-radius:10px;background:var(--surface,#2A2260);color:inherit;padding:12px 14px;font:400 14px/1.4 var(--font-body);box-shadow:${f?.ring ?? ''}`)\">\n                    <template v-if=\"f?.bad\"><span style=\"font:600 12px/1.4 var(--font-body);color:#FF383C\">Vul dit veld in.</span></template>\n                  </label>\n                </template>\n                <button @click=\"dcv.up?.toggleCin\" role=\"checkbox\" :aria-checked=\"dcrt.attr(dcv.up?.cin)\" style=\"border:none;background:none;color:inherit;padding:0;display:flex;align-items:center;gap:12px;cursor:pointer;text-align:left;font:400 14px/1.4 var(--font-body)\">\n                  <span :style=\"dcrt.style(`width:20px;height:20px;border-radius:6px;background:${dcv.up?.cinBox ?? ''};box-shadow:${dcv.up?.cinRing ?? ''};display:flex;align-items:center;justify-content:center;flex-shrink:0`)\"><template v-if=\"dcv.up?.cin\"><svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#FFFFFF\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12.5 10 17 19 7\"></path></svg></template></span>\n                  Onderdeel van het programma Cinergie Twente\n                </button>\n              </div>\n            </template>\n\n            <template v-if=\"dcv.up?.s3\">\n              <div style=\"display:flex;flex-direction:column;gap:14px\">\n                <div style=\"border-radius:12px;background:var(--surface,#2A2260);padding:16px;display:grid;grid-template-columns:110px 1fr;gap:8px 16px;font:400 13px/1.4 var(--font-body)\">\n                  <template v-for=\"(sm, $index) in dcrt.list(dcv.up?.summary)\" :key=\"$index\"><span style=\"font-weight:700\"><span v-if=\"dcrt.shows(sm?.k)\" class=\"sc-interp\">{{ sm?.k }}</span></span><span><span v-if=\"dcrt.shows(sm?.v)\" class=\"sc-interp\">{{ sm?.v }}</span></span></template>\n                </div>\n                <button @click=\"dcv.up?.toggleAgree\" role=\"checkbox\" :aria-checked=\"dcrt.attr(dcv.up?.agree)\" style=\"border:none;background:none;color:inherit;padding:0;display:flex;align-items:flex-start;gap:12px;cursor:pointer;text-align:left;font:400 14px/1.4 var(--font-body)\">\n                  <span :style=\"dcrt.style(`width:20px;height:20px;border-radius:6px;background:${dcv.up?.agreeBox ?? ''};box-shadow:${dcv.up?.agreeRing ?? ''};display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px`)\"><template v-if=\"dcv.up?.agree\"><svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#FFFFFF\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12.5 10 17 19 7\"></path></svg></template></span>\n                  Dit onderzoek is openbaar, of ik heb toestemming om het te delen voor gebruik in Kiek.\n                </button>\n                <template v-if=\"dcv.up?.hasErr\"><span style=\"font:600 13px/1.4 var(--font-body);color:#FF383C\"><span v-if=\"dcrt.shows(dcv.up?.err)\" class=\"sc-interp\">{{ dcv.up?.err }}</span></span></template>\n                <span style=\"font:400 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Na aanleveren controleert een beheerder de gegevens. Daarna wordt het document verwerkt en is het beschikbaar voor nieuwe antwoorden.</span>\n              </div>\n            </template>\n\n            <template v-if=\"dcv.up?.s4\">\n              <div style=\"border-radius:12px;background:var(--surface,#2A2260);padding:24px;display:flex;flex-direction:column;gap:8px\">\n                <span style=\"font:700 16px/1.3 var(--font-body)\">Aangeleverd</span>\n                <span style=\"font:400 14px/1.45 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Je onderzoek staat in Mijn onderzoeken met de status \"Wacht op beoordeling\". Je krijgt een e-mail zodra het beschikbaar is.</span>\n              </div>\n            </template>\n\n            <div style=\"display:flex;justify-content:space-between;gap:12px\">\n              <button @click=\"dcv.up?.back\" :style=\"dcrt.style(`height:44px;border:none;border-radius:12px;background:none;box-shadow:inset 0 0 0 1px var(--hair,rgba(255,255,255,0.12));color:inherit;padding:0 18px;font:500 14px var(--font-body);cursor:pointer;visibility:${dcv.up?.backVis ?? ''}`)\">Vorige</button>\n              <button class=\"app-scp2\" @click=\"dcv.up?.next\" style=\"height:44px;border:none;border-radius:12px;background:#7D80FF;color:#FFFFFF;padding:0 22px;font:500 14px var(--font-body);cursor:pointer\"><span v-if=\"dcrt.shows(dcv.up?.nextLabel)\" class=\"sc-interp\">{{ dcv.up?.nextLabel }}</span></button>\n            </div>\n          </div>\n        </template>\n\n        <template v-if=\"dcv.modal?.isExample\">\n          <div style=\"display:flex;flex-direction:column;gap:16px\">\n            <div style=\"border-radius:12px;background:var(--surface,#2A2260);padding:20px;display:flex;flex-direction:column;gap:16px\">\n              <div style=\"display:flex;flex-direction:column;gap:4px\"><span style=\"font:600 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">De vraag (geanonimiseerd)</span><span style=\"font:400 14px/1.5 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Een gebruiker vraagt hoe je medewerkers meekrijgt bij een overstap naar herbruikbare bekers.</span></div>\n              <div style=\"display:flex;flex-direction:column;gap:4px\"><span style=\"font:600 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Wat Kiek zei</span><span style=\"font:400 15px/1.5 var(--font-body)\">Betrek medewerkers bij de inrichting van spoelpunten; dan blijft het gebruik stabiel.</span></div>\n              <div style=\"border-radius:10px;background:var(--surface2,rgba(125,128,255,0.12));padding:14px;display:flex;flex-direction:column;gap:4px\"><span style=\"font:600 12px/1.4 var(--font-body);color:#7D80FF\">Uit jouw onderzoek · hfst. 2 · versie 1</span><span style=\"font:400 14px/1.5 var(--font-body)\">Waar medewerkers zelf meedachten over de inrichting van spoelpunten, bleef het gebruik na een half jaar stabiel.</span></div>\n            </div>\n            <template v-for=\"(t, $index) in dcrt.list(dcv.exNotes)\" :key=\"$index\">\n              <div style=\"display:flex;gap:12px;align-items:flex-start\"><span style=\"width:22px;height:22px;border-radius:50%;background:var(--surface2,rgba(125,128,255,0.12));color:#7D80FF;display:flex;align-items:center;justify-content:center;font:700 11px var(--font-body);flex-shrink:0\"><span v-if=\"dcrt.shows(t?.n)\" class=\"sc-interp\">{{ t?.n }}</span></span><span style=\"font:400 14px/1.45 var(--font-body)\"><span v-if=\"dcrt.shows(t?.text)\" class=\"sc-interp\">{{ t?.text }}</span></span></div>\n            </template>\n            <button @click=\"dcv.closeModal\" style=\"align-self:flex-start;height:44px;border:none;border-radius:12px;background:#7D80FF;color:#FFFFFF;padding:0 20px;font:500 14px var(--font-body);cursor:pointer\">Begrepen</button>\n          </div>\n        </template>\n\n        <template v-if=\"dcv.modal?.isInvite\">\n          <div style=\"display:flex;flex-direction:column;gap:16px\">\n            <label style=\"display:flex;flex-direction:column;gap:6px;font:600 12px/1.4 var(--font-body)\">E-mailadres\n              <input :value=\"dcv.inviteEmail ?? ''\" @input=\"dcv.onInviteEmail\" @keydown=\"dcv.onInviteKey\" type=\"email\" placeholder=\"naam@bedrijf.nl\" :style=\"dcrt.style(`width:100%;border:none;outline:none;border-radius:10px;background:var(--surface,#2A2260);color:inherit;padding:12px 14px;font:400 14px/1.4 var(--font-body);box-shadow:${dcv.inviteRing ?? ''}`)\">\n              <template v-if=\"dcv.inviteBad\"><span style=\"font:600 12px/1.4 var(--font-body);color:#FF383C\">Vul een geldig e-mailadres in.</span></template>\n            </label>\n            <div style=\"display:flex;gap:8px;flex-wrap:wrap\">\n              <button class=\"app-scp2\" @click=\"dcv.sendInvite\" style=\"height:44px;border:none;border-radius:12px;background:#7D80FF;color:#FFFFFF;padding:0 20px;font:500 14px var(--font-body);cursor:pointer\">Verstuur uitnodiging</button>\n              <button class=\"app-scp1\" @click=\"dcv.copyInvite\" style=\"height:44px;border:none;border-radius:12px;background:none;box-shadow:inset 0 0 0 1px var(--hair,rgba(255,255,255,0.12));color:inherit;padding:0 18px;font:500 14px var(--font-body);cursor:pointer\"><span v-if=\"dcrt.shows(dcv.copyLabel)\" class=\"sc-interp\">{{ dcv.copyLabel }}</span></button>\n            </div>\n            <template v-if=\"dcv.hasInvites\">\n              <div style=\"display:flex;flex-direction:column;gap:8px\">\n                <span style=\"font:600 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\">Jouw uitnodigingen</span>\n                <template v-for=\"(iv, $index) in dcrt.list(dcv.invites)\" :key=\"$index\">\n                  <div style=\"border-radius:10px;background:var(--surface,#2A2260);padding:12px 14px;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap\">\n                    <span style=\"display:flex;flex-direction:column;gap:2px\"><span style=\"font:600 13px/1.3 var(--font-body)\"><span v-if=\"dcrt.shows(iv?.email)\" class=\"sc-interp\">{{ iv?.email }}</span></span><span :style=\"dcrt.style(`font:400 12px/1.4 var(--font-body);color:${iv?.stColor ?? ''}`)\"><span v-if=\"dcrt.shows(iv?.status)\" class=\"sc-interp\">{{ iv?.status }}</span></span></span>\n                    <template v-if=\"iv?.pending\"><button @click=\"iv?.simulate\" style=\"border:none;background:none;color:#7D80FF;padding:0;font:600 12px var(--font-body);cursor:pointer;text-decoration:underline\">Simuleer: toegang verleend</button></template>\n                  </div>\n                </template>\n              </div>\n            </template>\n          </div>\n        </template>\n\n        <template v-if=\"dcv.modal?.isOut\">\n          <div style=\"display:flex;flex-direction:column;gap:16px\">\n            <span style=\"font:400 15px/1.5 var(--font-body)\">Je hebt vandaag 20 vragen gesteld. Morgen krijg je er weer 20. Je gesprekken en verslagen kun je gewoon blijven bekijken.</span>\n            <div style=\"display:flex;gap:8px;flex-wrap:wrap\">\n              <button @click=\"dcv.openInvite\" style=\"height:44px;border:none;border-radius:12px;background:#7D80FF;color:#FFFFFF;padding:0 20px;font:500 14px var(--font-body);cursor:pointer\">Nodig iemand uit, +100 vragen</button>\n              <button @click=\"dcv.closeModal\" style=\"height:44px;border:none;border-radius:12px;background:none;box-shadow:inset 0 0 0 1px var(--hair,rgba(255,255,255,0.12));color:inherit;padding:0 18px;font:500 14px var(--font-body);cursor:pointer\">Sluiten</button>\n            </div>\n          </div>\n        </template>\n\n        <template v-if=\"dcv.modal?.isAccount\">\n          <div style=\"display:flex;gap:8px;flex-wrap:wrap;align-items:center\">\n            <button type=\"button\" @click=\"dcv.goSignup\" style=\"height:48px;border:none;border-radius:12px;background:#7D80FF;color:#FFFFFF;padding:0 24px;font:500 15px var(--font-body);cursor:pointer\">Account aanmaken</button>\n            <button type=\"button\" @click=\"dcv.goLogin\" style=\"height:48px;border:none;border-radius:12px;background:none;box-shadow:inset 0 0 0 1px var(--hair,rgba(255,255,255,0.12));color:inherit;padding:0 20px;font:500 15px var(--font-body);cursor:pointer\">Ik heb al een account</button>\n          </div>\n        </template>\n\n        <template v-if=\"dcv.modal?.isTrust\">\n          <div style=\"display:flex;flex-direction:column;gap:16px\">\n            <template v-for=\"(t, $index) in dcrt.list(dcv.trust)\" :key=\"$index\">\n              <div style=\"display:flex;flex-direction:column;gap:4px\">\n                <span style=\"font:700 14px/1.4 var(--font-body)\"><span v-if=\"dcrt.shows(t?.title)\" class=\"sc-interp\">{{ t?.title }}</span></span>\n                <span style=\"font:400 14px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(t?.text)\" class=\"sc-interp\">{{ t?.text }}</span></span>\n              </div>\n            </template>\n          </div>\n        </template>\n\n        <span style=\"font:400 11px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75))\"><span v-if=\"dcrt.shows(dcv.modal?.footnote)\" class=\"sc-interp\">{{ dcv.modal?.footnote }}</span></span>\n      </div>\n    </div>\n  </template>\n\n  <template v-if=\"dcv.toastOn\">\n    <div role=\"status\" style=\"position:absolute;left:50%;bottom:28px;transform:translateX(-50%);z-index:50;border-radius:12px;background:var(--text,#F9F7F3);color:var(--bg,#1F184E);padding:14px 20px;font:500 14px var(--font-body);box-shadow:0 12px 32px rgba(10,8,30,0.3)\"><span v-if=\"dcrt.shows(dcv.toast)\" class=\"sc-interp\">{{ dcv.toast }}</span></div>\n  </template></div></div></template>\n\n<script setup lang=\"ts\">\nimport * as dcrt from \"../lib/dc\";\nimport { useHelmet } from \"../lib/helmet\";\nimport Logic from \"./App.logic.js\";\nimport helmetCss from \"./App.helmet\";\nimport KiekBeheer from \"./Beheer.vue\";\n\nconst props = defineProps({\n  theme: { default: \"donker\" },\n  role: { default: \"gebruiker\" },\n  firstRun: { default: false },\n  overviewVariant: { default: \"lijst\" },\n  startScreen: { default: \"gesprek\" },\n});\nuseHelmet(helmetCss);\nconst dcv = dcrt.useDC(Logic, props);\n</script>\n","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createVNode as _createVNode, createStaticVNode as _createStaticVNode } from \"vue\"\n\nconst _hoisted_1 = {\n  class: \"sc-host\",\n  \"data-sc-name\": \"Kiek App v3\"\n}\nconst _hoisted_2 = { style: {\"width\":\"240px\",\"height\":\"100%\",\"max-height\":\"920px\",\"border-radius\":\"12px\",\"background\":\"var(--side,#150F3A)\",\"padding\":\"24px 12px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"justify-content\":\"space-between\",\"overflow\":\"auto\"} }\nconst _hoisted_3 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"40px\"} }\nconst _hoisted_4 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"24px\"} }\nconst _hoisted_5 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\"} }\nconst _hoisted_6 = { style: {\"height\":\"46px\",\"border-radius\":\"12px\",\"box-shadow\":\"inset 0 0 0 1px var(--hair,rgba(255,255,255,0.12))\",\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"12px\",\"padding\":\"0 12px\",\"cursor\":\"text\"} }\nconst _hoisted_7 = {\n  width: \"18\",\n  height: \"18\",\n  viewBox: \"0 0 24 24\",\n  fill: \"none\",\n  stroke: \"currentColor\",\n  \"stroke-width\": \"1.8\",\n  \"stroke-linecap\": \"round\",\n  style: {\"opacity\":\"0.75\",\"flex-shrink\":\"0\"}\n}\nconst _hoisted_8 = [\"value\"]\nconst _hoisted_9 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"2px\"} }\nconst _hoisted_10 = [\"onClick\"]\nconst _hoisted_11 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_12 = { style: {\"font\":\"400 11px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_13 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_14 = {\n  key: 0,\n  style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\",\"padding\":\"4px 12px\"}\n}\nconst _hoisted_15 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\",\"margin-top\":\"32px\",\"position\":\"relative\"} }\nconst _hoisted_16 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"4px\"} }\nconst _hoisted_17 = [\"onClick\", \"aria-label\"]\nconst _hoisted_18 = [\"stroke\"]\nconst _hoisted_19 = [\"stroke\"]\nconst _hoisted_20 = [\"stroke\"]\nconst _hoisted_21 = [\"stroke\"]\nconst _hoisted_22 = [\"stroke\"]\nconst _hoisted_23 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_24 = {\n  key: 5,\n  \"aria-hidden\": \"true\",\n  style: {\"position\":\"absolute\",\"left\":\"22px\",\"top\":\"5px\",\"min-width\":\"18px\",\"height\":\"18px\",\"padding\":\"0 5px\",\"border-radius\":\"100px\",\"background\":\"#7D80FF\",\"color\":\"#FFFFFF\",\"box-shadow\":\"0 0 0 2px var(--side,#150F3A)\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\",\"font\":\"700 10px/1 var(--font-body)\"}\n}\nconst _hoisted_25 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_26 = [\"aria-expanded\"]\nconst _hoisted_27 = { style: {\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"12px\"} }\nconst _hoisted_28 = { style: {\"width\":\"36px\",\"height\":\"36px\",\"border-radius\":\"8px\",\"background\":\"var(--surface,#2A2260)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\",\"font\":\"600 14px var(--font-body)\",\"flex-shrink\":\"0\"} }\nconst _hoisted_29 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_30 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"2px\",\"min-width\":\"0\"} }\nconst _hoisted_31 = { style: {\"font\":\"700 14px/1.2 var(--font-body)\"} }\nconst _hoisted_32 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_33 = { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\",\"white-space\":\"nowrap\",\"overflow\":\"hidden\",\"text-overflow\":\"ellipsis\",\"max-width\":\"150px\"} }\nconst _hoisted_34 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_35 = {\n  key: 0,\n  role: \"tooltip\",\n  style: {\"position\":\"absolute\",\"left\":\"-4px\",\"right\":\"-4px\",\"bottom\":\"calc(100% + 10px)\",\"z-index\":\"5\",\"border-radius\":\"12px\",\"background\":\"var(--text,#F9F7F3)\",\"color\":\"var(--bg,#1F184E)\",\"padding\":\"14px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\",\"box-shadow\":\"0 12px 32px rgba(10,8,30,0.35)\",\"cursor\":\"default\"}\n}\nconst _hoisted_36 = { style: {\"font\":\"600 12px/1.45 var(--font-body)\"} }\nconst _hoisted_37 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_38 = { style: {\"height\":\"3px\",\"border-radius\":\"100px\",\"background\":\"var(--track,rgba(255,255,255,0.08))\",\"overflow\":\"hidden\"} }\nconst _hoisted_39 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_40 = {\n  key: 0,\n  style: {\"position\":\"absolute\",\"left\":\"0\",\"right\":\"0\",\"bottom\":\"80px\",\"background\":\"var(--surface,#2A2260)\",\"border-radius\":\"12px\",\"padding\":\"8px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"2px\",\"box-shadow\":\"0 12px 32px rgba(10,8,30,0.35)\"}\n}\nconst _hoisted_41 = { style: {\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_42 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_43 = { style: {\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_44 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_45 = { style: {\"flex\":\"1\",\"min-width\":\"0\",\"display\":\"flex\",\"flex-direction\":\"column\",\"position\":\"relative\"} }\nconst _hoisted_46 = {\n  key: 0,\n  style: {\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"space-between\",\"padding\":\"16px 20px 0\"}\n}\nconst _hoisted_47 = {\n  key: 1,\n  style: {\"width\":\"72px\"}\n}\nconst _hoisted_48 = {\n  key: 1,\n  style: {\"flex\":\"1\",\"min-height\":\"0\",\"position\":\"relative\"}\n}\nconst _hoisted_49 = { style: {\"max-width\":\"1490px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"24px\"} }\nconst _hoisted_50 = { style: {\"margin\":\"0\",\"font\":\"800 48px/1 var(--font-display)\",\"letter-spacing\":\"-0.01em\"} }\nconst _hoisted_51 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_52 = { style: {\"background\":\"var(--surface,#2A2260)\",\"border-radius\":\"16px\",\"padding\":\"32px\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"space-between\",\"gap\":\"24px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_53 = { style: {\"display\":\"grid\",\"grid-template-columns\":\"repeat(auto-fit,minmax(min(100%,380px),1fr))\",\"gap\":\"24px\",\"margin-top\":\"40px\"} }\nconst _hoisted_54 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"16px\"} }\nconst _hoisted_55 = [\"onClick\"]\nconst _hoisted_56 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"gap\":\"12px\",\"align-items\":\"baseline\"} }\nconst _hoisted_57 = { style: {\"font\":\"600 18px/1.3 var(--font-body)\"} }\nconst _hoisted_58 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_59 = { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"flex-shrink\":\"0\"} }\nconst _hoisted_60 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_61 = { style: {\"font\":\"400 14px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_62 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_63 = {\n  key: 0,\n  style: {\"display\":\"flex\",\"gap\":\"8px\",\"flex-wrap\":\"wrap\",\"margin-top\":\"4px\"}\n}\nconst _hoisted_64 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_65 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"16px\"} }\nconst _hoisted_66 = [\"onClick\"]\nconst _hoisted_67 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\",\"min-width\":\"0\"} }\nconst _hoisted_68 = { style: {\"font\":\"600 18px/1.2 var(--font-body)\"} }\nconst _hoisted_69 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_70 = { style: {\"display\":\"flex\",\"gap\":\"8px\",\"align-items\":\"center\",\"flex-wrap\":\"wrap\",\"font\":\"400 14px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_71 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_72 = {\n  key: 1,\n  style: {\"border-radius\":\"100px\",\"background\":\"rgba(112,233,162,0.1)\",\"color\":\"#34C759\",\"padding\":\"5px 10px\",\"font\":\"600 11px/1 var(--font-body)\"}\n}\nconst _hoisted_73 = {\n  key: 3,\n  style: {\"flex\":\"1\",\"overflow\":\"auto\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\",\"padding\":\"48px 24px\"}\n}\nconst _hoisted_74 = { style: {\"width\":\"100%\",\"max-width\":\"920px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"align-items\":\"center\",\"gap\":\"40px\",\"text-align\":\"center\"} }\nconst _hoisted_75 = { style: {\"width\":\"100%\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"20px\"} }\nconst _hoisted_76 = { style: {\"background\":\"var(--surface,#2A2260)\",\"border-radius\":\"16px\",\"padding\":\"24px 20px 20px 28px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"12px\",\"text-align\":\"left\"} }\nconst _hoisted_77 = [\"value\"]\nconst _hoisted_78 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"center\",\"gap\":\"12px\"} }\nconst _hoisted_79 = { style: {\"display\":\"flex\",\"flex-wrap\":\"wrap\",\"gap\":\"12px\",\"justify-content\":\"center\"} }\nconst _hoisted_80 = [\"onClick\"]\nconst _hoisted_81 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_82 = {\n  key: 4,\n  style: {\"flex\":\"1\",\"min-height\":\"0\",\"display\":\"flex\",\"flex-direction\":\"column\",\"position\":\"relative\"}\n}\nconst _hoisted_83 = { style: {\"min-width\":\"0\"} }\nconst _hoisted_84 = { style: {\"margin\":\"0\",\"font\":\"800 32px/1.1 var(--font-display)\",\"letter-spacing\":\"-0.01em\"} }\nconst _hoisted_85 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_86 = { style: {\"margin\":\"6px 0 0\",\"font\":\"400 14px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_87 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_88 = { style: {\"max-width\":\"796px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"40px\"} }\nconst _hoisted_89 = {\n  key: 0,\n  style: {\"margin\":\"0\",\"font\":\"400 14px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"}\n}\nconst _hoisted_90 = [\"data-msg\"]\nconst _hoisted_91 = { style: {\"font\":\"700 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_92 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_93 = {\n  key: 0,\n  style: {\"max-width\":\"576px\",\"width\":\"fit-content\",\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"16px\",\"font\":\"400 14px/1.4 var(--font-body)\",\"color\":\"var(--userText,#FFFFFF)\"}\n}\nconst _hoisted_94 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_95 = {\n  key: 1,\n  style: {\"width\":\"100%\",\"max-width\":\"576px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"16px\"}\n}\nconst _hoisted_96 = {\n  key: 0,\n  style: {\"margin\":\"0\",\"font\":\"400 14px/1.4 var(--font-body)\"}\n}\nconst _hoisted_97 = { key: 0 }\nconst _hoisted_98 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_99 = [\"onClick\", \"onMouseenter\", \"onMouseleave\", \"aria-label\", \"title\"]\nconst _hoisted_100 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_101 = [\"onClick\"]\nconst _hoisted_102 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_103 = {\n  key: 1,\n  style: {\"border-radius\":\"12px\",\"box-shadow\":\"inset 0 0 0 1px #7D80FF\",\"padding\":\"16px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\"}\n}\nconst _hoisted_104 = { style: {\"font\":\"400 14px/1.4 var(--font-body)\"} }\nconst _hoisted_105 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_106 = {\n  key: 2,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"12px\"}\n}\nconst _hoisted_107 = { style: {\"display\":\"grid\",\"grid-template-columns\":\"repeat(auto-fill,minmax(132px,1fr))\",\"gap\":\"16px\"} }\nconst _hoisted_108 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\"} }\nconst _hoisted_109 = { style: {\"font\":\"700 14px/1 var(--font-body)\"} }\nconst _hoisted_110 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_111 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_112 = { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_113 = { style: {\"position\":\"absolute\",\"width\":\"1px\",\"height\":\"1px\",\"overflow\":\"hidden\",\"clip\":\"rect(0 0 0 0)\"} }\nconst _hoisted_114 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_115 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_116 = [\"onClick\"]\nconst _hoisted_117 = { style: {\"display\":\"flex\",\"gap\":\"4px\",\"width\":\"100%\"} }\nconst _hoisted_118 = { style: {\"font\":\"400 11px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\",\"text-decoration\":\"underline\",\"text-underline-offset\":\"2px\"} }\nconst _hoisted_119 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_120 = { style: {\"display\":\"flex\",\"gap\":\"6px\",\"align-items\":\"center\",\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_121 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_122 = {\n  key: 3,\n  style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"16px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"12px\"}\n}\nconst _hoisted_123 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"center\",\"gap\":\"12px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_124 = { style: {\"border-radius\":\"100px\",\"background\":\"rgba(125,128,255,0.1)\",\"color\":\"#7D80FF\",\"padding\":\"8px 12px\",\"font\":\"600 12px/1 var(--font-body)\"} }\nconst _hoisted_125 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_126 = { style: {\"font\":\"600 12px/1.4 var(--font-body)\"} }\nconst _hoisted_127 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_128 = { style: {\"height\":\"6px\",\"border-radius\":\"100px\",\"background\":\"var(--track,rgba(255,255,255,0.08))\",\"overflow\":\"hidden\"} }\nconst _hoisted_129 = { style: {\"font\":\"600 12px/1.4 var(--font-body)\",\"text-align\":\"right\",\"min-width\":\"96px\"} }\nconst _hoisted_130 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_131 = {\n  key: 4,\n  style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"16px 16px 20px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"20px\",\"align-items\":\"center\"}\n}\nconst _hoisted_132 = { style: {\"width\":\"100%\",\"display\":\"grid\",\"grid-template-columns\":\"repeat(auto-fit,minmax(110px,1fr))\",\"gap\":\"12px\"} }\nconst _hoisted_133 = [\"aria-label\"]\nconst _hoisted_134 = {\n  width: \"76\",\n  height: \"76\",\n  viewBox: \"0 0 76 76\",\n  style: {\"position\":\"absolute\",\"inset\":\"0\",\"transform\":\"rotate(-90deg)\"}\n}\nconst _hoisted_135 = [\"stroke\", \"stroke-dasharray\"]\nconst _hoisted_136 = { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_137 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_138 = {\n  key: 5,\n  style: {\"margin\":\"0\",\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"16px\",\"font\":\"400 14px/1.4 var(--font-body)\"}\n}\nconst _hoisted_139 = { key: 0 }\nconst _hoisted_140 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_141 = [\"onClick\", \"onMouseenter\", \"onMouseleave\", \"aria-label\", \"title\"]\nconst _hoisted_142 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_143 = [\"onClick\"]\nconst _hoisted_144 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_145 = {\n  key: 0,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\"}\n}\nconst _hoisted_146 = { style: {\"display\":\"grid\",\"grid-template-columns\":\"repeat(auto-fill,minmax(min(100%,260px),1fr))\",\"gap\":\"8px\"} }\nconst _hoisted_147 = [\"onClick\", \"onMouseenter\", \"onMouseleave\"]\nconst _hoisted_148 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_149 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"4px\",\"min-width\":\"0\"} }\nconst _hoisted_150 = { style: {\"font\":\"600 13px/1.25 var(--font-body)\"} }\nconst _hoisted_151 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_152 = { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_153 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_154 = {\n  key: 0,\n  style: {\"align-self\":\"flex-start\",\"border-radius\":\"100px\",\"background\":\"rgba(112,233,162,0.14)\",\"color\":\"#34C759\",\"padding\":\"5px 10px\",\"font\":\"600 10px/1 var(--font-body)\",\"margin-top\":\"2px\"}\n}\nconst _hoisted_155 = { style: {\"font\":\"600 11px/1.4 var(--font-body)\",\"color\":\"#7D80FF\"} }\nconst _hoisted_156 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_157 = { style: {\"display\":\"flex\",\"gap\":\"2px\",\"flex-wrap\":\"wrap\",\"margin-left\":\"-6px\"} }\nconst _hoisted_158 = [\"onClick\", \"aria-label\", \"title\"]\nconst _hoisted_159 = {\n  key: 0,\n  width: \"16\",\n  height: \"16\",\n  viewBox: \"0 0 24 24\",\n  fill: \"none\",\n  stroke: \"currentColor\",\n  \"stroke-width\": \"1.7\",\n  \"stroke-linecap\": \"round\",\n  \"stroke-linejoin\": \"round\"\n}\nconst _hoisted_160 = {\n  key: 1,\n  width: \"16\",\n  height: \"16\",\n  viewBox: \"0 0 24 24\",\n  fill: \"none\",\n  stroke: \"#34C759\",\n  \"stroke-width\": \"2\",\n  \"stroke-linecap\": \"round\",\n  \"stroke-linejoin\": \"round\"\n}\nconst _hoisted_161 = [\"onClick\", \"aria-pressed\"]\nconst _hoisted_162 = [\"fill\"]\nconst _hoisted_163 = [\"onClick\", \"aria-pressed\"]\nconst _hoisted_164 = [\"fill\"]\nconst _hoisted_165 = {\n  key: 1,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"12px\"}\n}\nconst _hoisted_166 = { style: {\"border-radius\":\"16px\",\"background\":\"#7D80FF\",\"color\":\"#1F184E\",\"padding\":\"24px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"16px\",\"max-width\":\"560px\"} }\nconst _hoisted_167 = { style: {\"display\":\"flex\",\"gap\":\"8px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_168 = {\n  key: 2,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"12px\"}\n}\nconst _hoisted_169 = { style: {\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"12px\"} }\nconst _hoisted_170 = { style: {\"max-width\":\"732px\",\"height\":\"72px\",\"border-radius\":\"16px\",\"background\":\"var(--surface,#2A2260)\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"space-between\",\"gap\":\"12px\",\"padding\":\"16px 16px 16px 24px\",\"pointer-events\":\"auto\"} }\nconst _hoisted_171 = [\"value\", \"placeholder\"]\nconst _hoisted_172 = {\n  key: 0,\n  style: {\"max-width\":\"1100px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"24px\"}\n}\nconst _hoisted_173 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"flex-end\",\"gap\":\"16px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_174 = { style: {\"margin\":\"0\",\"font\":\"800 48px/1 var(--font-display)\",\"letter-spacing\":\"-0.01em\"} }\nconst _hoisted_175 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_176 = { style: {\"margin\":\"8px 0 0\",\"font\":\"400 14px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\",\"max-width\":\"620px\"} }\nconst _hoisted_177 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_178 = { style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"24px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"20px\"} }\nconst _hoisted_179 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"10px\"} }\nconst _hoisted_180 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"baseline\",\"gap\":\"12px\"} }\nconst _hoisted_181 = { style: {\"font\":\"400 13px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_182 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_183 = { style: {\"display\":\"flex\",\"gap\":\"6px\"} }\nconst _hoisted_184 = {\n  key: 0,\n  width: \"16\",\n  height: \"16\",\n  viewBox: \"0 0 24 24\",\n  fill: \"none\",\n  stroke: \"currentColor\",\n  \"stroke-width\": \"2.6\",\n  \"stroke-linecap\": \"round\",\n  \"stroke-linejoin\": \"round\"\n}\nconst _hoisted_185 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_186 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\"} }\nconst _hoisted_187 = { style: {\"font\":\"600 16px/1.3 var(--font-body)\"} }\nconst _hoisted_188 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_189 = { style: {\"font\":\"400 14px/1.45 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_190 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_191 = [\"onClick\"]\nconst _hoisted_192 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_193 = {\n  key: 0,\n  style: {\"border-radius\":\"10px\",\"background\":\"var(--surface2,rgba(125,128,255,0.12))\",\"padding\":\"16px\",\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"center\",\"gap\":\"12px\",\"flex-wrap\":\"wrap\"}\n}\nconst _hoisted_194 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"16px\"} }\nconst _hoisted_195 = { style: {\"border-radius\":\"12px\",\"box-shadow\":\"inset 0 0 0 1px var(--hair,rgba(255,255,255,0.12))\",\"padding\":\"20px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"14px\"} }\nconst _hoisted_196 = { style: {\"width\":\"22px\",\"height\":\"22px\",\"border-radius\":\"50%\",\"background\":\"var(--surface2,rgba(125,128,255,0.12))\",\"color\":\"#7D80FF\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\",\"font\":\"700 11px var(--font-body)\",\"flex-shrink\":\"0\"} }\nconst _hoisted_197 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_198 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"2px\"} }\nconst _hoisted_199 = { style: {\"font\":\"600 13px/1.3 var(--font-body)\"} }\nconst _hoisted_200 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_201 = { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_202 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_203 = { style: {\"border-radius\":\"12px\",\"box-shadow\":\"inset 0 0 0 1px var(--hair,rgba(255,255,255,0.12))\",\"padding\":\"20px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"10px\"} }\nconst _hoisted_204 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_205 = {\n  key: 1,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\"}\n}\nconst _hoisted_206 = { style: {\"font\":\"400 14px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_207 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_208 = {\n  key: 0,\n  style: {\"display\":\"grid\",\"grid-template-columns\":\"minmax(0,1fr) 150px 130px 20px\",\"gap\":\"24px\",\"padding\":\"12px 20px 0\",\"font\":\"600 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"}\n}\nconst _hoisted_209 = [\"onClick\"]\nconst _hoisted_210 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\",\"min-width\":\"0\"} }\nconst _hoisted_211 = { style: {\"font\":\"600 16px/1.3 var(--font-body)\"} }\nconst _hoisted_212 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_213 = { style: {\"display\":\"flex\",\"gap\":\"8px\",\"align-items\":\"center\",\"flex-wrap\":\"wrap\",\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_214 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_215 = {\n  key: 1,\n  style: {\"border-radius\":\"100px\",\"background\":\"rgba(112,233,162,0.12)\",\"color\":\"#34C759\",\"padding\":\"6px 10px\",\"font\":\"600 11px/1 var(--font-body)\",\"white-space\":\"nowrap\"}\n}\nconst _hoisted_216 = {\n  key: 0,\n  style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"}\n}\nconst _hoisted_217 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_218 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"2px\"} }\nconst _hoisted_219 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_220 = { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_221 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_222 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_223 = {\n  width: \"16\",\n  height: \"16\",\n  viewBox: \"0 0 24 24\",\n  fill: \"none\",\n  stroke: \"currentColor\",\n  \"stroke-width\": \"2\",\n  \"stroke-linecap\": \"round\",\n  style: {\"opacity\":\"0.6\"}\n}\nconst _hoisted_224 = {\n  key: 2,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"24px\"}\n}\nconst _hoisted_225 = { style: {\"display\":\"flex\",\"gap\":\"12px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_226 = { style: {\"font\":\"700 24px/1 var(--font-body)\"} }\nconst _hoisted_227 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_228 = { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_229 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_230 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"12px\"} }\nconst _hoisted_231 = [\"onClick\"]\nconst _hoisted_232 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\",\"min-width\":\"0\"} }\nconst _hoisted_233 = { style: {\"font\":\"600 18px/1.25 var(--font-body)\"} }\nconst _hoisted_234 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_235 = { style: {\"display\":\"flex\",\"gap\":\"8px\",\"align-items\":\"center\",\"flex-wrap\":\"wrap\",\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_236 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_237 = {\n  key: 1,\n  style: {\"border-radius\":\"100px\",\"background\":\"rgba(112,233,162,0.12)\",\"color\":\"#34C759\",\"padding\":\"6px 10px\",\"font\":\"600 11px/1 var(--font-body)\",\"white-space\":\"nowrap\"}\n}\nconst _hoisted_238 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_239 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"4px\",\"align-items\":\"flex-end\",\"text-align\":\"right\"} }\nconst _hoisted_240 = { style: {\"font\":\"600 14px/1.2 var(--font-body)\"} }\nconst _hoisted_241 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_242 = { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_243 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_244 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"16px\"} }\nconst _hoisted_245 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"flex-start\",\"gap\":\"16px\"} }\nconst _hoisted_246 = [\"aria-checked\"]\nconst _hoisted_247 = {\n  key: 0,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"10px\"}\n}\nconst _hoisted_248 = [\"onClick\", \"aria-checked\", \"aria-disabled\"]\nconst _hoisted_249 = {\n  key: 0,\n  width: \"12\",\n  height: \"12\",\n  viewBox: \"0 0 24 24\",\n  fill: \"none\",\n  stroke: \"#FFFFFF\",\n  \"stroke-width\": \"3\",\n  \"stroke-linecap\": \"round\",\n  \"stroke-linejoin\": \"round\"\n}\nconst _hoisted_250 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_251 = {\n  key: 0,\n  style: {\"font\":\"400 12px var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"}\n}\nconst _hoisted_252 = { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_253 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_254 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"10px\"} }\nconst _hoisted_255 = { style: {\"border-radius\":\"12px\",\"background\":\"var(--bg,#1F184E)\",\"padding\":\"16px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"12px\"} }\nconst _hoisted_256 = {\n  key: 0,\n  style: {\"display\":\"flex\",\"gap\":\"12px\",\"align-items\":\"flex-start\"}\n}\nconst _hoisted_257 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"3px\",\"min-width\":\"0\"} }\nconst _hoisted_258 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_259 = {\n  key: 1,\n  style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"}\n}\nconst _hoisted_260 = {\n  key: 1,\n  style: {\"max-width\":\"1100px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"24px\"}\n}\nconst _hoisted_261 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\"} }\nconst _hoisted_262 = { style: {\"margin\":\"0\",\"font\":\"800 32px/1.1 var(--font-display)\",\"letter-spacing\":\"-0.01em\"} }\nconst _hoisted_263 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_264 = { style: {\"display\":\"flex\",\"gap\":\"8px\",\"align-items\":\"center\",\"flex-wrap\":\"wrap\",\"font\":\"400 14px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_265 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_266 = {\n  key: 1,\n  style: {\"border-radius\":\"100px\",\"background\":\"rgba(112,233,162,0.12)\",\"color\":\"#34C759\",\"padding\":\"6px 10px\",\"font\":\"600 11px/1 var(--font-body)\",\"white-space\":\"nowrap\"}\n}\nconst _hoisted_267 = {\n  key: 0,\n  style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"#F388FF\"}\n}\nconst _hoisted_268 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_269 = {\n  key: 0,\n  style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"32px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\",\"max-width\":\"640px\"}\n}\nconst _hoisted_270 = {\n  key: 1,\n  style: {\"max-width\":\"760px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"20px\"}\n}\nconst _hoisted_271 = { style: {\"display\":\"contents\"} }\nconst _hoisted_272 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"12px\"} }\nconst _hoisted_273 = { style: {\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"space-between\",\"gap\":\"12px\"} }\nconst _hoisted_274 = { style: {\"font\":\"700 16px/1.2 var(--font-body)\"} }\nconst _hoisted_275 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_276 = {\n  key: 1,\n  class: \"sc-interp\"\n}\nconst _hoisted_277 = { style: {\"display\":\"flex\",\"gap\":\"8px\"} }\nconst _hoisted_278 = { style: {\"display\":\"flex\",\"gap\":\"8px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_279 = [\"onClick\", \"aria-pressed\"]\nconst _hoisted_280 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_281 = { style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"24px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"20px\"} }\nconst _hoisted_282 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"center\",\"gap\":\"12px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_283 = { style: {\"font\":\"600 14px/1.3 var(--font-body)\"} }\nconst _hoisted_284 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_285 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_286 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\"} }\nconst _hoisted_287 = { style: {\"font\":\"400 14px/1.5 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_288 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_289 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\"} }\nconst _hoisted_290 = { style: {\"font\":\"400 16px/1.5 var(--font-body)\"} }\nconst _hoisted_291 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_292 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_293 = { style: {\"border-radius\":\"10px\",\"background\":\"var(--surface2,rgba(125,128,255,0.12))\",\"padding\":\"16px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\"} }\nconst _hoisted_294 = { style: {\"font\":\"600 12px/1.4 var(--font-body)\",\"color\":\"#7D80FF\"} }\nconst _hoisted_295 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_296 = { style: {\"font\":\"400 14px/1.5 var(--font-body)\"} }\nconst _hoisted_297 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_298 = { style: {\"font\":\"400 11px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_299 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_300 = { style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"20px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"14px\"} }\nconst _hoisted_301 = [\"value\"]\nconst _hoisted_302 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\"} }\nconst _hoisted_303 = { style: {\"display\":\"flex\",\"gap\":\"8px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_304 = [\"onClick\", \"aria-pressed\"]\nconst _hoisted_305 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_306 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"center\",\"gap\":\"12px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_307 = { style: {\"display\":\"flex\",\"gap\":\"8px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_308 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_309 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"10px\"} }\nconst _hoisted_310 = {\n  key: 0,\n  style: {\"font\":\"400 13px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"}\n}\nconst _hoisted_311 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"gap\":\"8px\",\"align-items\":\"center\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_312 = { style: {\"display\":\"flex\",\"gap\":\"8px\",\"align-items\":\"center\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_313 = { style: {\"font\":\"600 13px/1.2 var(--font-body)\"} }\nconst _hoisted_314 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_315 = { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_316 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_317 = {\n  key: 0,\n  style: {\"border-radius\":\"100px\",\"background\":\"var(--surface2,rgba(125,128,255,0.12))\",\"color\":\"#7D80FF\",\"padding\":\"5px 9px\",\"font\":\"600 10px/1 var(--font-body)\"}\n}\nconst _hoisted_318 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_319 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_320 = { style: {\"font\":\"400 14px/1.45 var(--font-body)\"} }\nconst _hoisted_321 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_322 = {\n  key: 0,\n  style: {\"border-radius\":\"8px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"12px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"4px\"}\n}\nconst _hoisted_323 = { style: {\"font\":\"400 13px/1.45 var(--font-body)\"} }\nconst _hoisted_324 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_325 = {\n  key: 0,\n  style: {\"font\":\"600 12px/1.4 var(--font-body)\",\"color\":\"#34C759\"}\n}\nconst _hoisted_326 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_327 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"center\",\"gap\":\"12px\",\"padding-top\":\"4px\"} }\nconst _hoisted_328 = { style: {\"font\":\"400 13px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_329 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_330 = {\n  key: 1,\n  class: \"sc-interp\"\n}\nconst _hoisted_331 = { style: {\"max-width\":\"1100px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"20px\"} }\nconst _hoisted_332 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"12px\"} }\nconst _hoisted_333 = { style: {\"height\":\"46px\",\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"12px\",\"padding\":\"0 14px\",\"max-width\":\"520px\",\"cursor\":\"text\"} }\nconst _hoisted_334 = {\n  width: \"18\",\n  height: \"18\",\n  viewBox: \"0 0 24 24\",\n  fill: \"none\",\n  stroke: \"currentColor\",\n  \"stroke-width\": \"1.8\",\n  \"stroke-linecap\": \"round\",\n  style: {\"opacity\":\"0.75\",\"flex-shrink\":\"0\"}\n}\nconst _hoisted_335 = [\"value\"]\nconst _hoisted_336 = { style: {\"display\":\"flex\",\"gap\":\"8px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_337 = [\"onClick\", \"aria-pressed\"]\nconst _hoisted_338 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_339 = { style: {\"font\":\"400 13px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_340 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_341 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\"} }\nconst _hoisted_342 = [\"onClick\"]\nconst _hoisted_343 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\",\"min-width\":\"0\"} }\nconst _hoisted_344 = { style: {\"font\":\"600 16px/1.3 var(--font-body)\"} }\nconst _hoisted_345 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_346 = { style: {\"display\":\"flex\",\"gap\":\"8px\",\"align-items\":\"center\",\"flex-wrap\":\"wrap\",\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_347 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_348 = {\n  key: 1,\n  style: {\"border-radius\":\"100px\",\"background\":\"rgba(112,233,162,0.12)\",\"color\":\"#34C759\",\"padding\":\"6px 10px\",\"font\":\"600 11px/1 var(--font-body)\",\"white-space\":\"nowrap\"}\n}\nconst _hoisted_349 = { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_350 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_351 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_352 = {\n  width: \"16\",\n  height: \"16\",\n  viewBox: \"0 0 24 24\",\n  fill: \"none\",\n  stroke: \"currentColor\",\n  \"stroke-width\": \"2\",\n  \"stroke-linecap\": \"round\",\n  style: {\"opacity\":\"0.6\",\"color\":\"var(--text,#F9F7F3)\"}\n}\nconst _hoisted_353 = {\n  key: 0,\n  style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"28px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\"}\n}\nconst _hoisted_354 = { style: {\"max-width\":\"880px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"24px\"} }\nconst _hoisted_355 = { style: {\"background\":\"var(--surface,#2A2260)\",\"border-radius\":\"16px\",\"padding\":\"24px 28px\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"space-between\",\"gap\":\"24px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_356 = { style: {\"display\":\"flex\",\"gap\":\"12px\",\"align-items\":\"center\",\"flex-wrap\":\"wrap\",\"margin-top\":\"8px\"} }\nconst _hoisted_357 = { style: {\"height\":\"46px\",\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"12px\",\"padding\":\"0 14px\",\"flex\":\"1\",\"min-width\":\"220px\",\"cursor\":\"text\"} }\nconst _hoisted_358 = {\n  width: \"18\",\n  height: \"18\",\n  viewBox: \"0 0 24 24\",\n  fill: \"none\",\n  stroke: \"currentColor\",\n  \"stroke-width\": \"1.8\",\n  \"stroke-linecap\": \"round\",\n  style: {\"opacity\":\"0.75\",\"flex-shrink\":\"0\"}\n}\nconst _hoisted_359 = [\"value\"]\nconst _hoisted_360 = {\n  role: \"group\",\n  \"aria-label\": \"Filter gesprekken\",\n  style: {\"display\":\"flex\",\"gap\":\"4px\",\"padding\":\"4px\",\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\"}\n}\nconst _hoisted_361 = [\"onClick\", \"aria-pressed\"]\nconst _hoisted_362 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_363 = { style: {\"font\":\"600 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\",\"padding\":\"8px 4px 0\"} }\nconst _hoisted_364 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_365 = [\"onClick\"]\nconst _hoisted_366 = { style: {\"font\":\"600 16px/1.3 var(--font-body)\"} }\nconst _hoisted_367 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_368 = { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_369 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_370 = { style: {\"display\":\"flex\",\"gap\":\"8px\",\"align-items\":\"center\",\"flex-wrap\":\"wrap\",\"justify-content\":\"flex-end\"} }\nconst _hoisted_371 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_372 = [\"onClick\"]\nconst _hoisted_373 = [\"onClick\"]\nconst _hoisted_374 = {\n  key: 0,\n  style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"28px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\"}\n}\nconst _hoisted_375 = { style: {\"max-width\":\"1016px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"24px\"} }\nconst _hoisted_376 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"flex-start\",\"gap\":\"16px\"} }\nconst _hoisted_377 = { style: {\"min-width\":\"0\"} }\nconst _hoisted_378 = { style: {\"margin\":\"0\",\"font\":\"800 32px/1.1 var(--font-display)\",\"letter-spacing\":\"-0.01em\"} }\nconst _hoisted_379 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_380 = { style: {\"margin\":\"6px 0 0\",\"font\":\"400 14px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_381 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_382 = {\n  key: 0,\n  style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"40px 24px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\",\"align-items\":\"center\",\"text-align\":\"center\"}\n}\nconst _hoisted_383 = {\n  key: 1,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"24px\"}\n}\nconst _hoisted_384 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"flex-end\",\"gap\":\"16px\",\"flex-wrap\":\"wrap\",\"margin-top\":\"32px\"} }\nconst _hoisted_385 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"4px\"} }\nconst _hoisted_386 = { style: {\"margin\":\"0\",\"font\":\"800 24px/1.1 var(--font-display)\"} }\nconst _hoisted_387 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_388 = { style: {\"font\":\"400 14px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_389 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_390 = { style: {\"display\":\"flex\",\"gap\":\"16px\"} }\nconst _hoisted_391 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_392 = { style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"16px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"12px\"} }\nconst _hoisted_393 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"center\",\"gap\":\"12px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_394 = { style: {\"border-radius\":\"100px\",\"background\":\"rgba(125,128,255,0.1)\",\"color\":\"#7D80FF\",\"padding\":\"8px 12px\",\"font\":\"600 12px/1 var(--font-body)\"} }\nconst _hoisted_395 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_396 = { style: {\"font\":\"600 12px/1.4 var(--font-body)\"} }\nconst _hoisted_397 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_398 = { style: {\"height\":\"6px\",\"border-radius\":\"100px\",\"background\":\"var(--track,rgba(255,255,255,0.08))\",\"overflow\":\"hidden\"} }\nconst _hoisted_399 = { style: {\"font\":\"600 12px/1.4 var(--font-body)\",\"text-align\":\"right\",\"min-width\":\"96px\"} }\nconst _hoisted_400 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_401 = { style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"20px 16px 24px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"24px\",\"align-items\":\"center\"} }\nconst _hoisted_402 = { style: {\"width\":\"100%\",\"display\":\"grid\",\"grid-template-columns\":\"repeat(auto-fit,minmax(140px,1fr))\",\"gap\":\"16px\"} }\nconst _hoisted_403 = [\"aria-label\"]\nconst _hoisted_404 = {\n  width: \"76\",\n  height: \"76\",\n  viewBox: \"0 0 76 76\",\n  style: {\"position\":\"absolute\",\"inset\":\"0\",\"transform\":\"rotate(-90deg)\"}\n}\nconst _hoisted_405 = [\"stroke\", \"stroke-dasharray\"]\nconst _hoisted_406 = { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_407 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_408 = { style: {\"display\":\"grid\",\"grid-template-columns\":\"repeat(auto-fit,minmax(min(100%,320px),1fr))\",\"gap\":\"20px\"} }\nconst _hoisted_409 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"center\",\"gap\":\"8px\"} }\nconst _hoisted_410 = { style: {\"font\":\"700 16px/1 var(--font-body)\"} }\nconst _hoisted_411 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_412 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_413 = { style: {\"font\":\"400 14px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_414 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_415 = { style: {\"display\":\"flex\",\"gap\":\"4px\"} }\nconst _hoisted_416 = { style: {\"font\":\"400 11px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_417 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_418 = { style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"16px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"16px\"} }\nconst _hoisted_419 = { style: {\"display\":\"grid\",\"grid-template-columns\":\"repeat(auto-fit,minmax(min(100%,300px),1fr))\",\"gap\":\"12px\"} }\nconst _hoisted_420 = { style: {\"font\":\"600 14px/1.3 var(--font-body)\",\"color\":\"#7D80FF\"} }\nconst _hoisted_421 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_422 = { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_423 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_424 = { style: {\"border-radius\":\"12px\",\"box-shadow\":\"inset 0 0 0 1px var(--hair,rgba(255,255,255,0.12))\",\"padding\":\"16px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"10px\"} }\nconst _hoisted_425 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_426 = { style: {\"display\":\"grid\",\"grid-template-columns\":\"repeat(auto-fit,minmax(min(100%,320px),1fr))\",\"gap\":\"20px\",\"margin-top\":\"16px\",\"padding-bottom\":\"40px\"} }\nconst _hoisted_427 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"12px\"} }\nconst _hoisted_428 = [\"onClick\"]\nconst _hoisted_429 = { style: {\"font\":\"600 14px/1.1 var(--font-body)\"} }\nconst _hoisted_430 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_431 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"center\",\"gap\":\"8px\",\"flex-wrap\":\"wrap\",\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_432 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_433 = {\n  key: 1,\n  style: {\"border-radius\":\"100px\",\"background\":\"rgba(112,233,162,0.1)\",\"color\":\"#34C759\",\"padding\":\"8px 12px\",\"font\":\"600 10px/1 var(--font-body)\"}\n}\nconst _hoisted_434 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"12px\"} }\nconst _hoisted_435 = [\"onClick\"]\nconst _hoisted_436 = { style: {\"width\":\"36px\",\"height\":\"36px\",\"border-radius\":\"8px\",\"background\":\"var(--surface2,rgba(125,128,255,0.12))\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\",\"flex-shrink\":\"0\"} }\nconst _hoisted_437 = {\n  key: 0,\n  width: \"16\",\n  height: \"16\",\n  viewBox: \"0 0 24 24\",\n  fill: \"none\",\n  stroke: \"currentColor\",\n  \"stroke-width\": \"1.6\",\n  \"stroke-linejoin\": \"round\"\n}\nconst _hoisted_438 = {\n  key: 1,\n  width: \"16\",\n  height: \"16\",\n  viewBox: \"0 0 24 24\",\n  fill: \"none\",\n  stroke: \"currentColor\",\n  \"stroke-width\": \"1.6\",\n  \"stroke-linecap\": \"round\",\n  \"stroke-linejoin\": \"round\"\n}\nconst _hoisted_439 = {\n  key: 2,\n  width: \"16\",\n  height: \"16\",\n  viewBox: \"0 0 24 24\",\n  fill: \"none\",\n  stroke: \"currentColor\",\n  \"stroke-width\": \"1.6\",\n  \"stroke-linecap\": \"round\"\n}\nconst _hoisted_440 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"3px\"} }\nconst _hoisted_441 = { style: {\"font\":\"600 14px/1.2 var(--font-body)\"} }\nconst _hoisted_442 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_443 = { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_444 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_445 = { style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"display\":\"flex\",\"flex-direction\":\"column\",\"flex-shrink\":\"0\",\"padding\":\"8px\"} }\nconst _hoisted_446 = [\"onClick\"]\nconst _hoisted_447 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_448 = { style: {\"font\":\"400 12px/1 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_449 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_450 = { style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"display\":\"flex\",\"flex-direction\":\"column\",\"flex-shrink\":\"0\",\"padding\":\"8px\"} }\nconst _hoisted_451 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"flex-end\",\"padding\":\"12px 8px\"} }\nconst _hoisted_452 = { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_453 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_454 = {\n  key: 0,\n  style: {\"padding\":\"0 8px 8px\",\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"}\n}\nconst _hoisted_455 = [\"onClick\", \"onMouseenter\", \"onMouseleave\"]\nconst _hoisted_456 = { style: {\"display\":\"flex\",\"gap\":\"10px\",\"align-items\":\"flex-start\"} }\nconst _hoisted_457 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_458 = { style: {\"font\":\"600 14px/1.1 var(--font-body)\"} }\nconst _hoisted_459 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_460 = {\n  key: 0,\n  style: {\"font\":\"400 11px/1.4 var(--font-body)\",\"color\":\"#7D80FF\",\"padding-left\":\"32px\"}\n}\nconst _hoisted_461 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_462 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"center\",\"gap\":\"4px 8px\",\"flex-wrap\":\"wrap\",\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\",\"padding-left\":\"32px\"} }\nconst _hoisted_463 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_464 = {\n  key: 1,\n  style: {\"border-radius\":\"100px\",\"background\":\"rgba(112,233,162,0.1)\",\"color\":\"#34C759\",\"padding\":\"8px 12px\",\"font\":\"600 10px/1 var(--font-body)\"}\n}\nconst _hoisted_465 = { style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"display\":\"flex\",\"flex-direction\":\"column\",\"flex-shrink\":\"0\",\"padding\":\"8px\"} }\nconst _hoisted_466 = {\n  key: 0,\n  style: {\"padding\":\"0 8px 8px\",\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"}\n}\nconst _hoisted_467 = [\"onClick\"]\nconst _hoisted_468 = { style: {\"width\":\"32px\",\"height\":\"32px\",\"border-radius\":\"8px\",\"background\":\"var(--surface2,rgba(125,128,255,0.12))\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\",\"flex-shrink\":\"0\",\"color\":\"#7D80FF\"} }\nconst _hoisted_469 = {\n  key: 0,\n  width: \"14\",\n  height: \"14\",\n  viewBox: \"0 0 24 24\",\n  fill: \"none\",\n  stroke: \"currentColor\",\n  \"stroke-width\": \"1.8\",\n  \"stroke-linecap\": \"round\"\n}\nconst _hoisted_470 = {\n  key: 1,\n  width: \"14\",\n  height: \"14\",\n  viewBox: \"0 0 24 24\",\n  fill: \"none\",\n  stroke: \"currentColor\",\n  \"stroke-width\": \"1.8\",\n  \"stroke-linecap\": \"round\",\n  \"stroke-linejoin\": \"round\"\n}\nconst _hoisted_471 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"2px\",\"min-width\":\"0\"} }\nconst _hoisted_472 = { style: {\"font\":\"600 14px/1.2 var(--font-body)\"} }\nconst _hoisted_473 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_474 = { style: {\"font\":\"400 12px/1.3 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_475 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_476 = {\n  key: 1,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"16px\",\"flex-shrink\":\"0\"}\n}\nconst _hoisted_477 = {\n  key: 2,\n  style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"20px 16px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"10px\",\"flex-shrink\":\"0\"}\n}\nconst _hoisted_478 = { style: {\"display\":\"flex\",\"align-items\":\"baseline\",\"gap\":\"8px\"} }\nconst _hoisted_479 = { style: {\"font\":\"700 24px/1 var(--font-body)\",\"color\":\"#7D80FF\"} }\nconst _hoisted_480 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_481 = { style: {\"display\":\"flex\",\"gap\":\"6px\"} }\nconst _hoisted_482 = { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_483 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_484 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"gap\":\"16px\",\"align-items\":\"flex-start\"} }\nconst _hoisted_485 = { style: {\"margin\":\"0\",\"font\":\"800 32px/1 var(--font-display)\",\"letter-spacing\":\"-0.01em\"} }\nconst _hoisted_486 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_487 = { style: {\"display\":\"flex\",\"gap\":\"8px\",\"align-items\":\"center\",\"flex-wrap\":\"wrap\",\"font\":\"400 14px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_488 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_489 = {\n  key: 1,\n  style: {\"border-radius\":\"100px\",\"background\":\"rgba(112,233,162,0.1)\",\"color\":\"#34C759\",\"padding\":\"6px 10px\",\"font\":\"600 11px/1 var(--font-body)\"}\n}\nconst _hoisted_490 = {\n  key: 0,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"16px\"}\n}\nconst _hoisted_491 = { style: {\"display\":\"flex\",\"gap\":\"8px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_492 = [\"onClick\"]\nconst _hoisted_493 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_494 = { style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"20px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\"} }\nconst _hoisted_495 = { style: {\"font\":\"700 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_496 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_497 = { style: {\"font\":\"400 16px/1.6 var(--font-body)\"} }\nconst _hoisted_498 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_499 = { style: {\"background\":\"rgba(125,128,255,0.32)\",\"color\":\"inherit\",\"border-radius\":\"3px\",\"padding\":\"0 2px\"} }\nconst _hoisted_500 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_501 = {\n  key: 1,\n  class: \"sc-interp\"\n}\nconst _hoisted_502 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"4px\"} }\nconst _hoisted_503 = { style: {\"font\":\"400 14px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_504 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_505 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_506 = {\n  key: 1,\n  style: {\"font\":\"400 14px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"}\n}\nconst _hoisted_507 = { style: {\"display\":\"grid\",\"grid-template-columns\":\"120px 1fr\",\"gap\":\"8px 16px\",\"font\":\"400 12px/1.4 var(--font-body)\"} }\nconst _hoisted_508 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_509 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_510 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_511 = {\n  key: 1,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"16px\"}\n}\nconst _hoisted_512 = { style: {\"display\":\"grid\",\"grid-template-columns\":\"120px 1fr\",\"gap\":\"8px 16px\",\"font\":\"400 14px/1.4 var(--font-body)\"} }\nconst _hoisted_513 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_514 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_515 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_516 = { style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"16px\",\"font\":\"400 14px/1.4 var(--font-body)\"} }\nconst _hoisted_517 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_518 = {\n  key: 2,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"16px\"}\n}\nconst _hoisted_519 = { style: {\"display\":\"grid\",\"grid-template-columns\":\"120px 1fr\",\"gap\":\"10px 16px\",\"font\":\"400 14px/1.4 var(--font-body)\"} }\nconst _hoisted_520 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_521 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_522 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_523 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_524 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_525 = {\n  key: 3,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"12px\"}\n}\nconst _hoisted_526 = {\n  key: 0,\n  style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"20px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"12px\"}\n}\nconst _hoisted_527 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_528 = { style: {\"font\":\"400 14px/1.45 var(--font-body)\"} }\nconst _hoisted_529 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_530 = {\n  key: 0,\n  style: {\"display\":\"flex\",\"gap\":\"6px\",\"flex-wrap\":\"wrap\"}\n}\nconst _hoisted_531 = [\"onClick\"]\nconst _hoisted_532 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_533 = [\"onClick\"]\nconst _hoisted_534 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_535 = {\n  key: 4,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"18px\"}\n}\nconst _hoisted_536 = { style: {\"display\":\"flex\",\"gap\":\"8px\"} }\nconst _hoisted_537 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_538 = {\n  key: 0,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"12px\"}\n}\nconst _hoisted_539 = { style: {\"font\":\"600 14px/1.3 var(--font-body)\"} }\nconst _hoisted_540 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_541 = { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_542 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_543 = {\n  key: 0,\n  style: {\"font\":\"600 13px/1.4 var(--font-body)\",\"color\":\"#FF383C\"}\n}\nconst _hoisted_544 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_545 = { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_546 = {\n  key: 1,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"12px\"}\n}\nconst _hoisted_547 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_548 = [\"value\", \"onInput\", \"placeholder\"]\nconst _hoisted_549 = {\n  key: 1,\n  style: {\"font\":\"600 12px/1.4 var(--font-body)\",\"color\":\"#FF383C\"}\n}\nconst _hoisted_550 = [\"aria-checked\"]\nconst _hoisted_551 = {\n  key: 0,\n  width: \"12\",\n  height: \"12\",\n  viewBox: \"0 0 24 24\",\n  fill: \"none\",\n  stroke: \"#FFFFFF\",\n  \"stroke-width\": \"3\",\n  \"stroke-linecap\": \"round\",\n  \"stroke-linejoin\": \"round\"\n}\nconst _hoisted_552 = {\n  key: 2,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"14px\"}\n}\nconst _hoisted_553 = { style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"16px\",\"display\":\"grid\",\"grid-template-columns\":\"110px 1fr\",\"gap\":\"8px 16px\",\"font\":\"400 13px/1.4 var(--font-body)\"} }\nconst _hoisted_554 = { style: {\"font-weight\":\"700\"} }\nconst _hoisted_555 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_556 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_557 = [\"aria-checked\"]\nconst _hoisted_558 = {\n  key: 0,\n  width: \"12\",\n  height: \"12\",\n  viewBox: \"0 0 24 24\",\n  fill: \"none\",\n  stroke: \"#FFFFFF\",\n  \"stroke-width\": \"3\",\n  \"stroke-linecap\": \"round\",\n  \"stroke-linejoin\": \"round\"\n}\nconst _hoisted_559 = {\n  key: 0,\n  style: {\"font\":\"600 13px/1.4 var(--font-body)\",\"color\":\"#FF383C\"}\n}\nconst _hoisted_560 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_561 = {\n  key: 3,\n  style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"24px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\"}\n}\nconst _hoisted_562 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"gap\":\"12px\"} }\nconst _hoisted_563 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_564 = {\n  key: 5,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"16px\"}\n}\nconst _hoisted_565 = { style: {\"width\":\"22px\",\"height\":\"22px\",\"border-radius\":\"50%\",\"background\":\"var(--surface2,rgba(125,128,255,0.12))\",\"color\":\"#7D80FF\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\",\"font\":\"700 11px var(--font-body)\",\"flex-shrink\":\"0\"} }\nconst _hoisted_566 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_567 = { style: {\"font\":\"400 14px/1.45 var(--font-body)\"} }\nconst _hoisted_568 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_569 = {\n  key: 6,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"16px\"}\n}\nconst _hoisted_570 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\",\"font\":\"600 12px/1.4 var(--font-body)\"} }\nconst _hoisted_571 = [\"value\"]\nconst _hoisted_572 = {\n  key: 0,\n  style: {\"font\":\"600 12px/1.4 var(--font-body)\",\"color\":\"#FF383C\"}\n}\nconst _hoisted_573 = { style: {\"display\":\"flex\",\"gap\":\"8px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_574 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_575 = {\n  key: 0,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\"}\n}\nconst _hoisted_576 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"2px\"} }\nconst _hoisted_577 = { style: {\"font\":\"600 13px/1.3 var(--font-body)\"} }\nconst _hoisted_578 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_579 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_580 = [\"onClick\"]\nconst _hoisted_581 = {\n  key: 7,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"16px\"}\n}\nconst _hoisted_582 = { style: {\"display\":\"flex\",\"gap\":\"8px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_583 = {\n  key: 8,\n  style: {\"display\":\"flex\",\"gap\":\"8px\",\"flex-wrap\":\"wrap\",\"align-items\":\"center\"}\n}\nconst _hoisted_584 = {\n  key: 9,\n  style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"16px\"}\n}\nconst _hoisted_585 = { style: {\"font\":\"700 14px/1.4 var(--font-body)\"} }\nconst _hoisted_586 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_587 = { style: {\"font\":\"400 14px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_588 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_589 = { style: {\"font\":\"400 11px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }\nconst _hoisted_590 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_591 = {\n  key: 5,\n  role: \"status\",\n  style: {\"position\":\"absolute\",\"left\":\"50%\",\"bottom\":\"28px\",\"transform\":\"translateX(-50%)\",\"z-index\":\"50\",\"border-radius\":\"12px\",\"background\":\"var(--text,#F9F7F3)\",\"color\":\"var(--bg,#1F184E)\",\"padding\":\"14px 20px\",\"font\":\"500 14px var(--font-body)\",\"box-shadow\":\"0 12px 32px rgba(10,8,30,0.3)\"}\n}\nconst _hoisted_592 = {\n  key: 0,\n  class: \"sc-interp\"\n}\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n  return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n    _createElementVNode(\"div\", {\n      ref: (el) => $setup.dcrt.setRef($setup.dcv.rootRef, el),\n      style: {\"position\":\"fixed\",\"inset\":\"0\",\"display\":\"flex\",\"background\":\"var(--bg,#1F184E)\",\"color\":\"var(--text,#F9F7F3)\",\"font-family\":\"var(--font-body)\",\"overflow\":\"hidden\"}\n    }, [\n      ($setup.dcv.showNav)\n        ? (_openBlock(), _createElementBlock(\"div\", {\n            key: 0,\n            style: _normalizeStyle($setup.dcrt.style($setup.dcv.navWrapStyle))\n          }, [\n            _createElementVNode(\"nav\", _hoisted_2, [\n              _createElementVNode(\"div\", _hoisted_3, [\n                _createElementVNode(\"button\", {\n                  onClick: _cache[0] || (_cache[0] = (...args) => ($setup.dcv.goOverzicht && $setup.dcv.goOverzicht(...args))),\n                  \"aria-label\": \"Kiek, naar gesprekken\",\n                  style: {\"border\":\"none\",\"background\":\"none\",\"padding\":\"0 12px\",\"cursor\":\"pointer\",\"align-self\":\"flex-start\"}\n                }, _cache[69] || (_cache[69] = [\n                  _createElementVNode(\"span\", { style: {\"display\":\"block\",\"width\":\"120px\",\"height\":\"41.76px\",\"background\":\"var(--text,#F9F7F3)\",\"-webkit-mask\":\"url(/.publisher/sd/kiek/kiek/assets/kiek-logo.svg) no-repeat left center/contain\",\"mask\":\"url(/.publisher/sd/kiek/kiek/assets/kiek-logo.svg) no-repeat left center/contain\"} }, null, -1 /* CACHED */)\n                ])),\n                _cache[79] || (_cache[79] = _createTextVNode()),\n                _createElementVNode(\"div\", _hoisted_4, [\n                  _createElementVNode(\"div\", _hoisted_5, [\n                    _createElementVNode(\"button\", {\n                      class: \"app-scp0\",\n                      onClick: _cache[1] || (_cache[1] = (...args) => ($setup.dcv.goNieuw && $setup.dcv.goNieuw(...args))),\n                      style: {\"height\":\"46px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"color\":\"var(--text,#F9F7F3)\",\"font\":\"500 16px/1.4 var(--font-body)\",\"cursor\":\"pointer\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"flex-start\",\"gap\":\"12px\",\"padding\":\"0 12px\",\"text-align\":\"left\"}\n                    }, _cache[70] || (_cache[70] = [\n                      _createElementVNode(\"svg\", {\n                        width: \"18\",\n                        height: \"18\",\n                        viewBox: \"0 0 24 24\",\n                        fill: \"none\",\n                        stroke: \"#7D80FF\",\n                        \"stroke-width\": \"2\",\n                        \"stroke-linecap\": \"round\"\n                      }, [\n                        _createElementVNode(\"path\", { d: \"M12 5v14\" }),\n                        _createElementVNode(\"path\", { d: \"M5 12h14\" })\n                      ], -1 /* CACHED */),\n                      _createTextVNode(\"Nieuw gesprek\", -1 /* CACHED */)\n                    ])),\n                    _cache[73] || (_cache[73] = _createTextVNode()),\n                    _createElementVNode(\"label\", _hoisted_6, [\n                      (_openBlock(), _createElementBlock(\"svg\", _hoisted_7, _cache[71] || (_cache[71] = [\n                        _createElementVNode(\"circle\", {\n                          cx: \"11\",\n                          cy: \"11\",\n                          r: \"7.5\"\n                        }, null, -1 /* CACHED */),\n                        _createElementVNode(\"path\", { d: \"m20.5 20.5-4.2-4.2\" }, null, -1 /* CACHED */)\n                      ]))),\n                      _cache[72] || (_cache[72] = _createTextVNode()),\n                      _createElementVNode(\"input\", {\n                        value: $setup.dcv.search ?? '',\n                        onInput: _cache[2] || (_cache[2] = (...args) => ($setup.dcv.onSearch && $setup.dcv.onSearch(...args))),\n                        placeholder: \"Zoeken\",\n                        \"aria-label\": \"Zoeken in gesprekken\",\n                        style: {\"flex\":\"1\",\"min-width\":\"0\",\"border\":\"none\",\"outline\":\"none\",\"background\":\"none\",\"color\":\"inherit\",\"font\":\"400 16px var(--font-body)\"}\n                      }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_8)\n                    ])\n                  ]),\n                  _cache[78] || (_cache[78] = _createTextVNode()),\n                  _createElementVNode(\"div\", _hoisted_9, [\n                    _cache[75] || (_cache[75] = _createElementVNode(\"span\", { style: {\"font\":\"600 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\",\"padding\":\"0 12px\",\"margin-bottom\":\"4px\"} }, \"Recente gesprekken\", -1 /* CACHED */)),\n                    _cache[76] || (_cache[76] = _createTextVNode()),\n                    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.recent), (r, $index) => {\n                      return (_openBlock(), _createElementBlock(\"button\", {\n                        key: $index,\n                        class: \"app-scp1\",\n                        onClick: r?.onClick,\n                        style: _normalizeStyle($setup.dcrt.style(`border:none;border-radius:8px;background:${r?.bg ?? ''};color:inherit;padding:8px 12px;cursor:pointer;text-align:left;display:flex;flex-direction:column;gap:2px`))\n                      }, [\n                        _createElementVNode(\"span\", {\n                          style: _normalizeStyle($setup.dcrt.style(`font:400 14px/1.4 var(--font-body);color:${r?.color ?? ''};white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:192px`))\n                        }, [\n                          ($setup.dcrt.shows(r?.title))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_11, _toDisplayString(r?.title), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ], 4 /* STYLE */),\n                        _cache[74] || (_cache[74] = _createTextVNode()),\n                        _createElementVNode(\"span\", _hoisted_12, [\n                          ($setup.dcrt.shows(r?.when))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_13, _toDisplayString(r?.when), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ])\n                      ], 12 /* STYLE, PROPS */, _hoisted_10))\n                    }), 128 /* KEYED_FRAGMENT */)),\n                    _cache[77] || (_cache[77] = _createTextVNode()),\n                    ($setup.dcv.recentEmpty)\n                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_14, \"Geen gesprekken gevonden.\"))\n                      : _createCommentVNode(\"v-if\", true)\n                  ])\n                ])\n              ]),\n              _cache[116] || (_cache[116] = _createTextVNode()),\n              _createElementVNode(\"div\", _hoisted_15, [\n                _createElementVNode(\"div\", _hoisted_16, [\n                  _cache[91] || (_cache[91] = _createElementVNode(\"span\", { style: {\"font\":\"600 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\",\"padding\":\"0 12px\",\"margin-bottom\":\"4px\"} }, \"Snel naar\", -1 /* CACHED */)),\n                  _cache[92] || (_cache[92] = _createTextVNode()),\n                  (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.menu), (m, $index) => {\n                    return (_openBlock(), _createElementBlock(\"button\", {\n                      key: $index,\n                      class: \"app-scp1\",\n                      onClick: m?.onClick,\n                      \"aria-label\": $setup.dcrt.attr(m?.aria),\n                      style: _normalizeStyle($setup.dcrt.style(`position:relative;height:46px;border:none;border-radius:8px;background:${m?.bg ?? ''};color:${m?.color ?? ''};display:flex;align-items:center;gap:12px;padding:12px;cursor:pointer;font:${m?.font ?? ''};text-align:left`))\n                    }, [\n                      (m?.isGrid)\n                        ? (_openBlock(), _createElementBlock(\"svg\", {\n                            key: 0,\n                            width: \"18\",\n                            height: \"18\",\n                            viewBox: \"0 0 24 24\",\n                            fill: \"none\",\n                            stroke: m?.iconColor,\n                            \"stroke-width\": \"1.6\"\n                          }, _cache[80] || (_cache[80] = [\n                            _createElementVNode(\"rect\", {\n                              x: \"3.5\",\n                              y: \"3.5\",\n                              width: \"7\",\n                              height: \"7\",\n                              rx: \"1.5\"\n                            }, null, -1 /* CACHED */),\n                            _createElementVNode(\"rect\", {\n                              x: \"13.5\",\n                              y: \"3.5\",\n                              width: \"7\",\n                              height: \"7\",\n                              rx: \"1.5\"\n                            }, null, -1 /* CACHED */),\n                            _createElementVNode(\"rect\", {\n                              x: \"3.5\",\n                              y: \"13.5\",\n                              width: \"7\",\n                              height: \"7\",\n                              rx: \"1.5\"\n                            }, null, -1 /* CACHED */),\n                            _createElementVNode(\"rect\", {\n                              x: \"13.5\",\n                              y: \"13.5\",\n                              width: \"7\",\n                              height: \"7\",\n                              rx: \"1.5\"\n                            }, null, -1 /* CACHED */)\n                          ]), 8 /* PROPS */, _hoisted_18))\n                        : _createCommentVNode(\"v-if\", true),\n                      _cache[85] || (_cache[85] = _createTextVNode()),\n                      (m?.isChat)\n                        ? (_openBlock(), _createElementBlock(\"svg\", {\n                            key: 1,\n                            width: \"18\",\n                            height: \"18\",\n                            viewBox: \"0 0 24 24\",\n                            fill: \"none\",\n                            stroke: m?.iconColor,\n                            \"stroke-width\": \"1.6\",\n                            \"stroke-linejoin\": \"round\"\n                          }, _cache[81] || (_cache[81] = [\n                            _createElementVNode(\"path\", { d: \"M4 5.5A1.5 1.5 0 0 1 5.5 4h13A1.5 1.5 0 0 1 20 5.5v10a1.5 1.5 0 0 1-1.5 1.5H9l-5 4z\" }, null, -1 /* CACHED */)\n                          ]), 8 /* PROPS */, _hoisted_19))\n                        : _createCommentVNode(\"v-if\", true),\n                      _cache[86] || (_cache[86] = _createTextVNode()),\n                      (m?.isBars)\n                        ? (_openBlock(), _createElementBlock(\"svg\", {\n                            key: 2,\n                            width: \"18\",\n                            height: \"18\",\n                            viewBox: \"0 0 24 24\",\n                            fill: \"none\",\n                            stroke: m?.iconColor,\n                            \"stroke-width\": \"1.6\",\n                            \"stroke-linecap\": \"round\"\n                          }, _cache[82] || (_cache[82] = [\n                            _createElementVNode(\"path\", { d: \"M6 20v-7\" }, null, -1 /* CACHED */),\n                            _createElementVNode(\"path\", { d: \"M12 20V5\" }, null, -1 /* CACHED */),\n                            _createElementVNode(\"path\", { d: \"M18 20v-11\" }, null, -1 /* CACHED */)\n                          ]), 8 /* PROPS */, _hoisted_20))\n                        : _createCommentVNode(\"v-if\", true),\n                      _cache[87] || (_cache[87] = _createTextVNode()),\n                      (m?.isBook)\n                        ? (_openBlock(), _createElementBlock(\"svg\", {\n                            key: 3,\n                            width: \"18\",\n                            height: \"18\",\n                            viewBox: \"0 0 24 24\",\n                            fill: \"none\",\n                            stroke: m?.iconColor,\n                            \"stroke-width\": \"1.6\",\n                            \"stroke-linejoin\": \"round\",\n                            \"stroke-linecap\": \"round\"\n                          }, _cache[83] || (_cache[83] = [\n                            _createElementVNode(\"path\", { d: \"M4 19.5V5a2 2 0 0 1 2-2h14v15H6a2 2 0 0 0-2 2z\" }, null, -1 /* CACHED */),\n                            _createElementVNode(\"path\", { d: \"M4 19.5A2 2 0 0 0 6 21.5h14\" }, null, -1 /* CACHED */),\n                            _createElementVNode(\"path\", { d: \"M9 8h7\" }, null, -1 /* CACHED */)\n                          ]), 8 /* PROPS */, _hoisted_21))\n                        : _createCommentVNode(\"v-if\", true),\n                      _cache[88] || (_cache[88] = _createTextVNode()),\n                      (m?.isClock)\n                        ? (_openBlock(), _createElementBlock(\"svg\", {\n                            key: 4,\n                            width: \"18\",\n                            height: \"18\",\n                            viewBox: \"0 0 24 24\",\n                            fill: \"none\",\n                            stroke: m?.iconColor,\n                            \"stroke-width\": \"1.6\",\n                            \"stroke-linecap\": \"round\"\n                          }, _cache[84] || (_cache[84] = [\n                            _createElementVNode(\"circle\", {\n                              cx: \"12\",\n                              cy: \"12\",\n                              r: \"8.5\"\n                            }, null, -1 /* CACHED */),\n                            _createElementVNode(\"path\", { d: \"M12 7.5V12l3 2\" }, null, -1 /* CACHED */)\n                          ]), 8 /* PROPS */, _hoisted_22))\n                        : _createCommentVNode(\"v-if\", true),\n                      _cache[89] || (_cache[89] = _createTextVNode()),\n                      _createElementVNode(\"span\", null, [\n                        ($setup.dcrt.shows(m?.label))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_23, _toDisplayString(m?.label), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ]),\n                      _cache[90] || (_cache[90] = _createTextVNode()),\n                      (m?.hasBadge)\n                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_24, [\n                            ($setup.dcrt.shows(m?.badge))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_25, _toDisplayString(m?.badge), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ]))\n                        : _createCommentVNode(\"v-if\", true)\n                    ], 12 /* STYLE, PROPS */, _hoisted_17))\n                  }), 128 /* KEYED_FRAGMENT */))\n                ]),\n                _cache[112] || (_cache[112] = _createTextVNode()),\n                _cache[113] || (_cache[113] = _createElementVNode(\"div\", { style: {\"height\":\"1px\",\"margin\":\"0 12px\",\"background\":\"var(--hair,rgba(255,255,255,0.12))\"} }, null, -1 /* CACHED */)),\n                _cache[114] || (_cache[114] = _createTextVNode()),\n                _createElementVNode(\"button\", {\n                  class: \"app-scp1\",\n                  onClick: _cache[5] || (_cache[5] = (...args) => ($setup.dcv.toggleProfile && $setup.dcv.toggleProfile(...args))),\n                  \"aria-expanded\": $setup.dcrt.attr($setup.dcv.profileOpen),\n                  style: {\"border\":\"none\",\"border-radius\":\"8px\",\"background\":\"none\",\"color\":\"inherit\",\"padding\":\"8px 12px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"align-items\":\"stretch\",\"gap\":\"10px\",\"cursor\":\"pointer\",\"text-align\":\"left\"}\n                }, [\n                  _createElementVNode(\"span\", _hoisted_27, [\n                    _createElementVNode(\"span\", _hoisted_28, [\n                      ($setup.dcrt.shows($setup.dcv.person?.initials))\n                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_29, _toDisplayString($setup.dcv.person?.initials), 1 /* TEXT */))\n                        : _createCommentVNode(\"v-if\", true)\n                    ]),\n                    _cache[94] || (_cache[94] = _createTextVNode()),\n                    _createElementVNode(\"span\", _hoisted_30, [\n                      _createElementVNode(\"span\", _hoisted_31, [\n                        ($setup.dcrt.shows($setup.dcv.person?.name))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_32, _toDisplayString($setup.dcv.person?.name), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ]),\n                      _cache[93] || (_cache[93] = _createTextVNode()),\n                      _createElementVNode(\"span\", _hoisted_33, [\n                        ($setup.dcrt.shows($setup.dcv.person?.org))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_34, _toDisplayString($setup.dcv.person?.org), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ])\n                    ])\n                  ]),\n                  _cache[103] || (_cache[103] = _createTextVNode()),\n                  _createElementVNode(\"span\", {\n                    onMouseenter: _cache[3] || (_cache[3] = (...args) => ($setup.dcv.crHoverOn && $setup.dcv.crHoverOn(...args))),\n                    onMouseleave: _cache[4] || (_cache[4] = (...args) => ($setup.dcv.crHoverOff && $setup.dcv.crHoverOff(...args))),\n                    style: {\"position\":\"relative\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\"}\n                  }, [\n                    ($setup.dcv.crHover)\n                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_35, [\n                          _cache[95] || (_cache[95] = _createElementVNode(\"span\", { style: {\"font\":\"700 13px/1.3 var(--font-body)\"} }, \"Zo werken je vragen\", -1 /* CACHED */)),\n                          _cache[96] || (_cache[96] = _createTextVNode()),\n                          _cache[97] || (_cache[97] = _createElementVNode(\"span\", { style: {\"font\":\"400 12px/1.45 var(--font-body)\"} }, \"Je kunt 20 vragen per dag stellen. Elke nacht krijg je er 20 nieuwe; ongebruikte dagvragen schuiven niet door.\", -1 /* CACHED */)),\n                          _cache[98] || (_cache[98] = _createTextVNode()),\n                          _cache[99] || (_cache[99] = _createElementVNode(\"span\", { style: {\"font\":\"400 12px/1.45 var(--font-body)\"} }, \"Nodig je iemand uit en krijgt die toegang, dan ontvang je 100 bonusvragen. Die vervallen niet.\", -1 /* CACHED */)),\n                          _cache[100] || (_cache[100] = _createTextVNode()),\n                          _createElementVNode(\"span\", _hoisted_36, [\n                            ($setup.dcrt.shows($setup.dcv.cr?.tip))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_37, _toDisplayString($setup.dcv.cr?.tip), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ])\n                        ]))\n                      : _createCommentVNode(\"v-if\", true),\n                    _cache[101] || (_cache[101] = _createTextVNode()),\n                    _createElementVNode(\"span\", _hoisted_38, [\n                      _createElementVNode(\"span\", {\n                        style: _normalizeStyle($setup.dcrt.style(`display:block;height:100%;width:${$setup.dcv.cr?.pct ?? ''};border-radius:100px;background:${$setup.dcv.cr?.barColor ?? ''}`))\n                      }, null, 4 /* STYLE */)\n                    ]),\n                    _cache[102] || (_cache[102] = _createTextVNode()),\n                    _createElementVNode(\"span\", {\n                      style: _normalizeStyle($setup.dcrt.style(`font:400 11px/1.3 var(--font-body);color:${$setup.dcv.cr?.leftColor ?? ''}`))\n                    }, [\n                      ($setup.dcrt.shows($setup.dcv.cr?.line))\n                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_39, _toDisplayString($setup.dcv.cr?.line), 1 /* TEXT */))\n                        : _createCommentVNode(\"v-if\", true)\n                    ], 4 /* STYLE */)\n                  ], 32 /* NEED_HYDRATION */)\n                ], 8 /* PROPS */, _hoisted_26),\n                _cache[115] || (_cache[115] = _createTextVNode()),\n                ($setup.dcv.profileOpen)\n                  ? (_openBlock(), _createElementBlock(\"div\", _hoisted_40, [\n                      _createElementVNode(\"button\", {\n                        class: \"app-scp1\",\n                        onClick: _cache[6] || (_cache[6] = (...args) => ($setup.dcv.openInvite && $setup.dcv.openInvite(...args))),\n                        style: {\"border\":\"none\",\"background\":\"none\",\"color\":\"inherit\",\"border-radius\":\"8px\",\"padding\":\"10px 12px\",\"text-align\":\"left\",\"cursor\":\"pointer\",\"font\":\"500 14px var(--font-body)\",\"display\":\"flex\",\"justify-content\":\"space-between\",\"gap\":\"8px\"}\n                      }, _cache[104] || (_cache[104] = [\n                        _createElementVNode(\"span\", null, \"Nodig iemand uit\", -1 /* CACHED */),\n                        _createElementVNode(\"span\", { style: {\"color\":\"#7D80FF\"} }, \"+100 vragen\", -1 /* CACHED */)\n                      ])),\n                      _cache[107] || (_cache[107] = _createTextVNode()),\n                      _createElementVNode(\"button\", {\n                        class: \"app-scp1\",\n                        onClick: _cache[7] || (_cache[7] = (...args) => ($setup.dcv.toggleTheme && $setup.dcv.toggleTheme(...args))),\n                        style: {\"border\":\"none\",\"background\":\"none\",\"color\":\"inherit\",\"border-radius\":\"8px\",\"padding\":\"10px 12px\",\"text-align\":\"left\",\"cursor\":\"pointer\",\"font\":\"500 14px var(--font-body)\",\"display\":\"flex\",\"justify-content\":\"space-between\"}\n                      }, [\n                        _cache[105] || (_cache[105] = _createElementVNode(\"span\", null, \"Weergave\", -1 /* CACHED */)),\n                        _createElementVNode(\"span\", _hoisted_41, [\n                          ($setup.dcrt.shows($setup.dcv.themeLabel))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_42, _toDisplayString($setup.dcv.themeLabel), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ])\n                      ]),\n                      _cache[108] || (_cache[108] = _createTextVNode()),\n                      _createElementVNode(\"button\", {\n                        class: \"app-scp1\",\n                        onClick: _cache[8] || (_cache[8] = (...args) => ($setup.dcv.toggleRole && $setup.dcv.toggleRole(...args))),\n                        style: {\"border\":\"none\",\"background\":\"none\",\"color\":\"inherit\",\"border-radius\":\"8px\",\"padding\":\"10px 12px\",\"text-align\":\"left\",\"cursor\":\"pointer\",\"font\":\"500 14px var(--font-body)\",\"display\":\"flex\",\"justify-content\":\"space-between\",\"gap\":\"8px\"}\n                      }, [\n                        _cache[106] || (_cache[106] = _createElementVNode(\"span\", null, \"Rol (prototype)\", -1 /* CACHED */)),\n                        _createElementVNode(\"span\", _hoisted_43, [\n                          ($setup.dcrt.shows($setup.dcv.roleLabel))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_44, _toDisplayString($setup.dcv.roleLabel), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ])\n                      ]),\n                      _cache[109] || (_cache[109] = _createTextVNode()),\n                      _createElementVNode(\"button\", {\n                        class: \"app-scp1\",\n                        onClick: _cache[9] || (_cache[9] = (...args) => ($setup.dcv.openTrust && $setup.dcv.openTrust(...args))),\n                        style: {\"border\":\"none\",\"background\":\"none\",\"color\":\"inherit\",\"border-radius\":\"8px\",\"padding\":\"10px 12px\",\"text-align\":\"left\",\"cursor\":\"pointer\",\"font\":\"500 14px var(--font-body)\"}\n                      }, \"Uitleg & vertrouwen\"),\n                      _cache[110] || (_cache[110] = _createTextVNode()),\n                      _createElementVNode(\"button\", {\n                        class: \"app-scp1\",\n                        onClick: _cache[10] || (_cache[10] = (...args) => ($setup.dcv.openOnboardingToast && $setup.dcv.openOnboardingToast(...args))),\n                        style: {\"border\":\"none\",\"background\":\"none\",\"color\":\"inherit\",\"border-radius\":\"8px\",\"padding\":\"10px 12px\",\"text-align\":\"left\",\"cursor\":\"pointer\",\"font\":\"500 14px var(--font-body)\"}\n                      }, \"Kennismaking opnieuw\"),\n                      _cache[111] || (_cache[111] = _createTextVNode()),\n                      _createElementVNode(\"button\", {\n                        class: \"app-scp1\",\n                        onClick: _cache[11] || (_cache[11] = (...args) => ($setup.dcv.logoutToast && $setup.dcv.logoutToast(...args))),\n                        style: {\"border\":\"none\",\"background\":\"none\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\",\"border-radius\":\"8px\",\"padding\":\"10px 12px\",\"text-align\":\"left\",\"cursor\":\"pointer\",\"font\":\"500 14px var(--font-body)\"}\n                      }, \"Uitloggen\")\n                    ]))\n                  : _createCommentVNode(\"v-if\", true)\n              ])\n            ])\n          ], 4 /* STYLE */))\n        : _createCommentVNode(\"v-if\", true),\n      _cache[545] || (_cache[545] = _createTextVNode()),\n      ($setup.dcv.navOverlay)\n        ? (_openBlock(), _createElementBlock(\"div\", {\n            key: 1,\n            onClick: _cache[12] || (_cache[12] = (...args) => ($setup.dcv.closeNav && $setup.dcv.closeNav(...args))),\n            style: {\"position\":\"absolute\",\"inset\":\"0\",\"background\":\"rgba(10,8,30,0.5)\",\"z-index\":\"29\"}\n          }))\n        : _createCommentVNode(\"v-if\", true),\n      _cache[546] || (_cache[546] = _createTextVNode()),\n      _createElementVNode(\"main\", _hoisted_45, [\n        ($setup.dcv.narrowNav)\n          ? (_openBlock(), _createElementBlock(\"div\", _hoisted_46, [\n              _createElementVNode(\"button\", {\n                onClick: _cache[13] || (_cache[13] = (...args) => ($setup.dcv.openNav && $setup.dcv.openNav(...args))),\n                style: {\"border\":\"none\",\"border-radius\":\"8px\",\"background\":\"var(--surface,#2A2260)\",\"color\":\"inherit\",\"padding\":\"10px 14px\",\"font\":\"600 14px var(--font-body)\",\"cursor\":\"pointer\"}\n              }, \"Menu\"),\n              _cache[117] || (_cache[117] = _createTextVNode()),\n              _cache[118] || (_cache[118] = _createElementVNode(\"span\", { style: {\"width\":\"84px\",\"height\":\"29px\",\"background\":\"var(--text,#F9F7F3)\",\"-webkit-mask\":\"url(/.publisher/sd/kiek/kiek/assets/kiek-logo.svg) no-repeat center/contain\",\"mask\":\"url(/.publisher/sd/kiek/kiek/assets/kiek-logo.svg) no-repeat center/contain\"} }, null, -1 /* CACHED */)),\n              _cache[119] || (_cache[119] = _createTextVNode()),\n              ($setup.dcv.showInsightBtn)\n                ? (_openBlock(), _createElementBlock(\"button\", {\n                    key: 0,\n                    onClick: _cache[14] || (_cache[14] = (...args) => ($setup.dcv.openSide && $setup.dcv.openSide(...args))),\n                    style: {\"border\":\"none\",\"border-radius\":\"8px\",\"background\":\"var(--surface,#2A2260)\",\"color\":\"inherit\",\"padding\":\"10px 14px\",\"font\":\"600 14px var(--font-body)\",\"cursor\":\"pointer\"}\n                  }, \"Inzicht\"))\n                : _createCommentVNode(\"v-if\", true),\n              _cache[120] || (_cache[120] = _createTextVNode()),\n              ($setup.dcv.hideInsightBtn)\n                ? (_openBlock(), _createElementBlock(\"span\", _hoisted_47))\n                : _createCommentVNode(\"v-if\", true)\n            ]))\n          : _createCommentVNode(\"v-if\", true),\n        _cache[410] || (_cache[410] = _createTextVNode()),\n        ($setup.dcv.isBeheer)\n          ? (_openBlock(), _createElementBlock(\"div\", _hoisted_48, [\n              _createVNode($setup[\"KiekBeheer\"], {\n                style: {\"position\":\"absolute\",\"inset\":\"0\"},\n                embedded: true,\n                theme: $setup.dcv.themeName\n              }, null, 8 /* PROPS */, [\"theme\"])\n            ]))\n          : _createCommentVNode(\"v-if\", true),\n        _cache[411] || (_cache[411] = _createTextVNode()),\n        ($setup.dcv.isOverzicht)\n          ? (_openBlock(), _createElementBlock(\"div\", {\n              key: 2,\n              style: _normalizeStyle($setup.dcrt.style(`flex:1;overflow:auto;padding:${$setup.dcv.pagePad ?? ''}`))\n            }, [\n              _createElementVNode(\"div\", _hoisted_49, [\n                _createElementVNode(\"div\", null, [\n                  _createElementVNode(\"h1\", _hoisted_50, [\n                    ($setup.dcrt.shows($setup.dcv.greeting))\n                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_51, _toDisplayString($setup.dcv.greeting), 1 /* TEXT */))\n                      : _createCommentVNode(\"v-if\", true)\n                  ]),\n                  _cache[121] || (_cache[121] = _createTextVNode()),\n                  _cache[122] || (_cache[122] = _createElementVNode(\"p\", { style: {\"margin\":\"6px 0 0\",\"font\":\"400 14px/1.4 var(--font-body)\"} }, \"Wat wil je effe kieken?\", -1 /* CACHED */))\n                ]),\n                _cache[136] || (_cache[136] = _createTextVNode()),\n                _createElementVNode(\"div\", _hoisted_52, [\n                  _cache[123] || (_cache[123] = _createElementVNode(\"div\", { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\",\"max-width\":\"560px\"} }, [\n                    _createElementVNode(\"h2\", { style: {\"margin\":\"0\",\"font\":\"700 24px/1.2 var(--font-body)\"} }, \"Een nieuw gesprek starten?\"),\n                    _createTextVNode(),\n                    _createElementVNode(\"p\", { style: {\"margin\":\"0\",\"font\":\"400 14px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Vertel Kiek wat je van plan bent. Kiek stelt de juiste vragen en koppelt Twentse kennis aan je keuze.\")\n                  ], -1 /* CACHED */)),\n                  _cache[124] || (_cache[124] = _createTextVNode()),\n                  _createElementVNode(\"button\", {\n                    class: \"app-scp2\",\n                    onClick: _cache[15] || (_cache[15] = (...args) => ($setup.dcv.goNieuw && $setup.dcv.goNieuw(...args))),\n                    style: {\"height\":\"48px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"#7D80FF\",\"color\":\"#FFFFFF\",\"padding\":\"0 28px\",\"font\":\"500 14px var(--font-body)\",\"cursor\":\"pointer\"}\n                  }, \"Vraag aan Kiek\")\n                ]),\n                _cache[137] || (_cache[137] = _createTextVNode()),\n                _createElementVNode(\"div\", _hoisted_53, [\n                  _createElementVNode(\"section\", _hoisted_54, [\n                    _cache[128] || (_cache[128] = _createElementVNode(\"h2\", { style: {\"margin\":\"0\",\"font\":\"800 24px/1 var(--font-display)\"} }, \"Recente gesprekken\", -1 /* CACHED */)),\n                    _cache[129] || (_cache[129] = _createTextVNode()),\n                    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.dashConvs), (c, $index) => {\n                      return (_openBlock(), _createElementBlock(\"button\", {\n                        key: $index,\n                        class: \"app-scp3\",\n                        onClick: c?.onClick,\n                        style: {\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"color\":\"inherit\",\"padding\":\"20px\",\"text-align\":\"left\",\"cursor\":\"pointer\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"10px\"}\n                      }, [\n                        _createElementVNode(\"span\", _hoisted_56, [\n                          _createElementVNode(\"span\", _hoisted_57, [\n                            ($setup.dcrt.shows(c?.title))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_58, _toDisplayString(c?.title), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ]),\n                          _cache[125] || (_cache[125] = _createTextVNode()),\n                          _createElementVNode(\"span\", _hoisted_59, [\n                            ($setup.dcrt.shows(c?.when))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_60, _toDisplayString(c?.when), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ])\n                        ]),\n                        _cache[126] || (_cache[126] = _createTextVNode()),\n                        _createElementVNode(\"span\", _hoisted_61, [\n                          ($setup.dcrt.shows(c?.text))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_62, _toDisplayString(c?.text), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ]),\n                        _cache[127] || (_cache[127] = _createTextVNode()),\n                        (c?.hasTags)\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_63, [\n                              (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list(c?.tags), (t, $index) => {\n                                return (_openBlock(), _createElementBlock(\"span\", {\n                                  key: $index,\n                                  style: _normalizeStyle($setup.dcrt.style(`border-radius:100px;background:${t?.bg ?? ''};color:${t?.color ?? ''};padding:8px 14px;font:600 12px/1 var(--font-body)`))\n                                }, [\n                                  ($setup.dcrt.shows(t?.label))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_64, _toDisplayString(t?.label), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ], 4 /* STYLE */))\n                              }), 128 /* KEYED_FRAGMENT */))\n                            ]))\n                          : _createCommentVNode(\"v-if\", true)\n                      ], 8 /* PROPS */, _hoisted_55))\n                    }), 128 /* KEYED_FRAGMENT */))\n                  ]),\n                  _cache[135] || (_cache[135] = _createTextVNode()),\n                  _createElementVNode(\"section\", _hoisted_65, [\n                    _cache[133] || (_cache[133] = _createElementVNode(\"h2\", { style: {\"margin\":\"0\",\"font\":\"800 24px/1 var(--font-display)\"} }, \"Relevante publicaties\", -1 /* CACHED */)),\n                    _cache[134] || (_cache[134] = _createTextVNode()),\n                    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.pubs), (p, $index) => {\n                      return (_openBlock(), _createElementBlock(\"button\", {\n                        key: $index,\n                        class: \"app-scp3\",\n                        onClick: p?.onClick,\n                        style: {\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"color\":\"inherit\",\"padding\":\"20px\",\"text-align\":\"left\",\"cursor\":\"pointer\",\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"20px\"}\n                      }, [\n                        _cache[132] || (_cache[132] = _createStaticVNode(\"<span style=\\\"width:48px;height:48px;border-radius:8px;background:var(--surface2,rgba(125,128,255,0.12));display:flex;align-items:center;justify-content:center;flex-shrink:0;\\\"><svg width=\\\"20\\\" height=\\\"20\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"#7D80FF\\\" stroke-width=\\\"1.6\\\" stroke-linejoin=\\\"round\\\" stroke-linecap=\\\"round\\\"><path d=\\\"M14 3H7a1.5 1.5 0 0 0-1.5 1.5v15A1.5 1.5 0 0 0 7 21h10a1.5 1.5 0 0 0 1.5-1.5V7.5z\\\"></path><path d=\\\"M14 3v4.5h4.5\\\"></path><path d=\\\"M9 12.5h6\\\"></path><path d=\\\"M9 16h6\\\"></path></svg></span> \", 2)),\n                        _createElementVNode(\"span\", _hoisted_67, [\n                          _createElementVNode(\"span\", _hoisted_68, [\n                            ($setup.dcrt.shows(p?.title))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_69, _toDisplayString(p?.title), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ]),\n                          _cache[131] || (_cache[131] = _createTextVNode()),\n                          _createElementVNode(\"span\", _hoisted_70, [\n                            ($setup.dcrt.shows(p?.meta))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_71, _toDisplayString(p?.meta), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true),\n                            _cache[130] || (_cache[130] = _createTextVNode()),\n                            (p?.cin)\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_72, \"Cinergie Twente\"))\n                              : _createCommentVNode(\"v-if\", true)\n                          ])\n                        ])\n                      ], 8 /* PROPS */, _hoisted_66))\n                    }), 128 /* KEYED_FRAGMENT */))\n                  ])\n                ])\n              ])\n            ], 4 /* STYLE */))\n          : _createCommentVNode(\"v-if\", true),\n        _cache[412] || (_cache[412] = _createTextVNode()),\n        ($setup.dcv.isNieuw)\n          ? (_openBlock(), _createElementBlock(\"div\", _hoisted_73, [\n              _createElementVNode(\"div\", _hoisted_74, [\n                _cache[143] || (_cache[143] = _createStaticVNode(\"<h1 style=\\\"margin:0;font:800 clamp(56px,7.4vw,120px)/0.9 var(--font-display);letter-spacing:-0.01em;\\\">Waar wil je<br>effe naar <span style=\\\"position:relative;display:inline-block;\\\"><span style=\\\"position:absolute;left:-2%;right:-1%;bottom:-0.02em;height:0.16em;background:#7D80FF;-webkit-mask:url(/.publisher/sd/kiek/kiek/assets/scribble-underline-bold.svg) no-repeat center/100% 100%;mask:url(/.publisher/sd/kiek/kiek/assets/scribble-underline-bold.svg) no-repeat center/100% 100%;\\\"></span><span style=\\\"position:relative;\\\">kieken?</span></span></h1> <p style=\\\"margin:0;font:400 18px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75));max-width:720px;\\\">Vertel wat je van plan bent. Kiek stelt de juiste vragen en helpt je zien wat je keuze werkelijk betekent voor Twente.</p> \", 4)),\n                _createElementVNode(\"div\", _hoisted_75, [\n                  _createElementVNode(\"div\", _hoisted_76, [\n                    _createElementVNode(\"textarea\", {\n                      ref: (el) => $setup.dcrt.setRef($setup.dcv.newRef, el),\n                      value: $setup.dcv.newDraft ?? '',\n                      onInput: _cache[16] || (_cache[16] = (...args) => ($setup.dcv.onNewDraft && $setup.dcv.onNewDraft(...args))),\n                      onKeydown: _cache[17] || (_cache[17] = (...args) => ($setup.dcv.onNewKey && $setup.dcv.onNewKey(...args))),\n                      rows: \"3\",\n                      placeholder: \"Vertel Kiek wat je van plan bent...\",\n                      \"aria-label\": \"Vertel Kiek wat je van plan bent\",\n                      style: {\"width\":\"100%\",\"border\":\"none\",\"outline\":\"none\",\"resize\":\"none\",\"background\":\"none\",\"color\":\"inherit\",\"font\":\"600 16px/1.4 var(--font-body)\"}\n                    }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_77),\n                    _cache[141] || (_cache[141] = _createTextVNode()),\n                    _createElementVNode(\"div\", _hoisted_78, [\n                      _cache[139] || (_cache[139] = _createElementVNode(\"span\", { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Gebruik geen vertrouwelijke bedrijfsgegevens. Kiek werkt nu met publieke bronnen.\", -1 /* CACHED */)),\n                      _cache[140] || (_cache[140] = _createTextVNode()),\n                      _createElementVNode(\"button\", {\n                        class: \"app-scp2\",\n                        onClick: _cache[18] || (_cache[18] = (...args) => ($setup.dcv.startNew && $setup.dcv.startNew(...args))),\n                        \"aria-label\": \"Verstuur\",\n                        style: _normalizeStyle($setup.dcrt.style(`width:52px;height:52px;border:none;border-radius:8px;background:#7D80FF;color:#F9F7F3;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;opacity:${$setup.dcv.newSendOpacity ?? ''}`))\n                      }, _cache[138] || (_cache[138] = [\n                        _createElementVNode(\"svg\", {\n                          width: \"20\",\n                          height: \"20\",\n                          viewBox: \"0 0 24 24\",\n                          fill: \"none\",\n                          stroke: \"currentColor\",\n                          \"stroke-width\": \"1.6\",\n                          \"stroke-linejoin\": \"round\",\n                          \"stroke-linecap\": \"round\"\n                        }, [\n                          _createElementVNode(\"path\", { d: \"M21 3 10.5 13.5\" }),\n                          _createElementVNode(\"path\", { d: \"M21 3 14.5 21l-4-7.5L3 9.5z\" })\n                        ], -1 /* CACHED */)\n                      ]), 4 /* STYLE */)\n                    ])\n                  ]),\n                  _cache[142] || (_cache[142] = _createTextVNode()),\n                  _createElementVNode(\"div\", _hoisted_79, [\n                    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.suggestions), (s, $index) => {\n                      return (_openBlock(), _createElementBlock(\"button\", {\n                        key: $index,\n                        class: \"app-scp4\",\n                        onClick: s?.onClick,\n                        style: {\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\",\"padding\":\"14px 20px\",\"font\":\"600 14px/1.2 var(--font-body)\",\"cursor\":\"pointer\"}\n                      }, [\n                        ($setup.dcrt.shows(s?.text))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_81, _toDisplayString(s?.text), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ], 8 /* PROPS */, _hoisted_80))\n                    }), 128 /* KEYED_FRAGMENT */))\n                  ])\n                ])\n              ])\n            ]))\n          : _createCommentVNode(\"v-if\", true),\n        _cache[413] || (_cache[413] = _createTextVNode()),\n        ($setup.dcv.isGesprek)\n          ? (_openBlock(), _createElementBlock(\"div\", _hoisted_82, [\n              _createElementVNode(\"div\", {\n                style: _normalizeStyle($setup.dcrt.style(`position:relative;z-index:2;padding:${$setup.dcv.headPad ?? ''};display:flex;justify-content:space-between;align-items:flex-start;gap:16px`))\n              }, [\n                _cache[145] || (_cache[145] = _createElementVNode(\"div\", { style: {\"position\":\"absolute\",\"left\":\"0\",\"right\":\"0\",\"top\":\"100%\",\"height\":\"56px\",\"background\":\"linear-gradient(0deg,var(--bg0,rgba(31,24,78,0)) 0%,var(--bg,#1F184E) 100%)\",\"pointer-events\":\"none\"} }, null, -1 /* CACHED */)),\n                _cache[146] || (_cache[146] = _createTextVNode()),\n                _createElementVNode(\"div\", _hoisted_83, [\n                  _createElementVNode(\"h1\", _hoisted_84, [\n                    ($setup.dcrt.shows($setup.dcv.convTitle))\n                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_85, _toDisplayString($setup.dcv.convTitle), 1 /* TEXT */))\n                      : _createCommentVNode(\"v-if\", true)\n                  ]),\n                  _cache[144] || (_cache[144] = _createTextVNode()),\n                  _createElementVNode(\"p\", _hoisted_86, [\n                    ($setup.dcrt.shows($setup.dcv.convMeta))\n                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_87, _toDisplayString($setup.dcv.convMeta), 1 /* TEXT */))\n                      : _createCommentVNode(\"v-if\", true)\n                  ])\n                ]),\n                _cache[147] || (_cache[147] = _createTextVNode()),\n                ($setup.dcv.headInsightBtn)\n                  ? (_openBlock(), _createElementBlock(\"button\", {\n                      key: 0,\n                      class: \"app-scp3\",\n                      onClick: _cache[19] || (_cache[19] = (...args) => ($setup.dcv.openSide && $setup.dcv.openSide(...args))),\n                      style: {\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"color\":\"inherit\",\"padding\":\"12px 18px\",\"font\":\"600 14px var(--font-body)\",\"cursor\":\"pointer\",\"flex-shrink\":\"0\"}\n                    }, \"Inzicht & bronnen\"))\n                  : _createCommentVNode(\"v-if\", true)\n              ], 4 /* STYLE */),\n              _cache[208] || (_cache[208] = _createTextVNode()),\n              _createElementVNode(\"div\", {\n                ref: (el) => $setup.dcrt.setRef($setup.dcv.msgsRef, el),\n                style: _normalizeStyle($setup.dcrt.style(`flex:1;min-height:0;overflow:auto;padding:${$setup.dcv.msgsPad ?? ''}`))\n              }, [\n                _createElementVNode(\"div\", _hoisted_88, [\n                  ($setup.dcv.convEmpty)\n                    ? (_openBlock(), _createElementBlock(\"p\", _hoisted_89, \"Nog geen berichten. Stel je vraag hieronder.\"))\n                    : _createCommentVNode(\"v-if\", true),\n                  _cache[203] || (_cache[203] = _createTextVNode()),\n                  (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.messages), (m, $index) => {\n                    return (_openBlock(), _createElementBlock(\"div\", {\n                      key: $index,\n                      \"data-msg\": $setup.dcrt.attr(m?.id),\n                      style: _normalizeStyle($setup.dcrt.style(`display:flex;flex-direction:column;gap:12px;align-items:${m?.align ?? ''};border-radius:12px;box-shadow:${m?.flash ?? ''};transition:box-shadow .4s`))\n                    }, [\n                      _createElementVNode(\"span\", _hoisted_91, [\n                        ($setup.dcrt.shows(m?.who))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_92, _toDisplayString(m?.who), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ]),\n                      _cache[192] || (_cache[192] = _createTextVNode()),\n                      (m?.isUser)\n                        ? (_openBlock(), _createElementBlock(\"div\", _hoisted_93, [\n                            ($setup.dcrt.shows(m?.text))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_94, _toDisplayString(m?.text), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ]))\n                        : _createCommentVNode(\"v-if\", true),\n                      _cache[193] || (_cache[193] = _createTextVNode()),\n                      (m?.isKiek)\n                        ? (_openBlock(), _createElementBlock(\"div\", _hoisted_95, [\n                            (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list(m?.blocks), (b, $index) => {\n                              return (_openBlock(), _createElementBlock(_Fragment, { key: $index }, [\n                                (b?.isText)\n                                  ? (_openBlock(), _createElementBlock(\"p\", _hoisted_96, [\n                                      (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list(b?.segs), (sg, $index) => {\n                                        return (_openBlock(), _createElementBlock(_Fragment, { key: $index }, [\n                                          (sg?.isText)\n                                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_97, [\n                                                ($setup.dcrt.shows(sg?.text))\n                                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_98, _toDisplayString(sg?.text), 1 /* TEXT */))\n                                                  : _createCommentVNode(\"v-if\", true)\n                                              ]))\n                                            : _createCommentVNode(\"v-if\", true),\n                                          (sg?.isCite)\n                                            ? (_openBlock(), _createElementBlock(\"button\", {\n                                                key: 1,\n                                                class: \"app-scp5\",\n                                                onClick: sg?.onClick,\n                                                onMouseenter: sg?.onEnter,\n                                                onMouseleave: sg?.onLeave,\n                                                \"aria-label\": $setup.dcrt.attr(sg?.aria),\n                                                title: sg?.title,\n                                                style: _normalizeStyle($setup.dcrt.style(`border:none;border-radius:100px;background:${sg?.bg ?? ''};color:${sg?.color ?? ''};box-shadow:${sg?.ring ?? ''};min-width:22px;height:22px;padding:0 8px;margin:0 3px;font:700 11px/22px var(--font-body);cursor:pointer;vertical-align:1px;white-space:nowrap`))\n                                              }, [\n                                                ($setup.dcrt.shows(sg?.label))\n                                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_100, _toDisplayString(sg?.label), 1 /* TEXT */))\n                                                  : _createCommentVNode(\"v-if\", true)\n                                              ], 44 /* STYLE, PROPS, NEED_HYDRATION */, _hoisted_99))\n                                            : _createCommentVNode(\"v-if\", true),\n                                          (sg?.isCo)\n                                            ? (_openBlock(), _createElementBlock(\"button\", {\n                                                key: 2,\n                                                onClick: sg?.onClick,\n                                                style: {\"border\":\"none\",\"background\":\"none\",\"color\":\"inherit\",\"padding\":\"0\",\"font\":\"600 14px/1.4 var(--font-body)\",\"text-decoration\":\"underline\",\"text-decoration-color\":\"#7D80FF\",\"text-underline-offset\":\"3px\",\"cursor\":\"pointer\"}\n                                              }, [\n                                                ($setup.dcrt.shows(sg?.text))\n                                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_102, _toDisplayString(sg?.text), 1 /* TEXT */))\n                                                  : _createCommentVNode(\"v-if\", true)\n                                              ], 8 /* PROPS */, _hoisted_101))\n                                            : _createCommentVNode(\"v-if\", true)\n                                        ], 64 /* STABLE_FRAGMENT */))\n                                      }), 128 /* KEYED_FRAGMENT */))\n                                    ]))\n                                  : _createCommentVNode(\"v-if\", true),\n                                _cache[171] || (_cache[171] = _createTextVNode()),\n                                (b?.isAsk)\n                                  ? (_openBlock(), _createElementBlock(\"div\", _hoisted_103, [\n                                      _cache[148] || (_cache[148] = _createElementVNode(\"span\", { style: {\"font\":\"700 12px/1.4 var(--font-body)\",\"color\":\"#7D80FF\"} }, \"Verdiepingsvraag\", -1 /* CACHED */)),\n                                      _cache[149] || (_cache[149] = _createTextVNode()),\n                                      _createElementVNode(\"span\", _hoisted_104, [\n                                        ($setup.dcrt.shows(b?.text))\n                                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_105, _toDisplayString(b?.text), 1 /* TEXT */))\n                                          : _createCommentVNode(\"v-if\", true)\n                                      ])\n                                    ]))\n                                  : _createCommentVNode(\"v-if\", true),\n                                _cache[172] || (_cache[172] = _createTextVNode()),\n                                (b?.isAlts)\n                                  ? (_openBlock(), _createElementBlock(\"div\", _hoisted_106, [\n                                      _createElementVNode(\"div\", _hoisted_107, [\n                                        (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list(b?.alts), (a, $index) => {\n                                          return (_openBlock(), _createElementBlock(\"div\", {\n                                            key: $index,\n                                            style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"12px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"justify-content\":\"space-between\",\"gap\":\"16px\",\"min-height\":\"203px\"}\n                                          }, [\n                                            _createElementVNode(\"div\", _hoisted_108, [\n                                              _createElementVNode(\"span\", _hoisted_109, [\n                                                ($setup.dcrt.shows(a?.name))\n                                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_110, _toDisplayString(a?.name), 1 /* TEXT */))\n                                                  : _createCommentVNode(\"v-if\", true)\n                                              ]),\n                                              _cache[151] || (_cache[151] = _createTextVNode()),\n                                              (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list(a?.points), (pt, $index) => {\n                                                return (_openBlock(), _createElementBlock(\"div\", {\n                                                  key: $index,\n                                                  style: {\"display\":\"flex\",\"gap\":\"6px\",\"align-items\":\"flex-start\"}\n                                                }, [\n                                                  _createElementVNode(\"span\", {\n                                                    \"aria-hidden\": \"true\",\n                                                    style: _normalizeStyle($setup.dcrt.style(`font:400 11px/17px var(--font-body);color:${pt?.color ?? ''};flex-shrink:0`))\n                                                  }, [\n                                                    ($setup.dcrt.shows(pt?.mark))\n                                                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_111, _toDisplayString(pt?.mark), 1 /* TEXT */))\n                                                      : _createCommentVNode(\"v-if\", true)\n                                                  ], 4 /* STYLE */),\n                                                  _cache[150] || (_cache[150] = _createTextVNode()),\n                                                  _createElementVNode(\"span\", _hoisted_112, [\n                                                    _createElementVNode(\"span\", _hoisted_113, [\n                                                      ($setup.dcrt.shows(pt?.sr))\n                                                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_114, _toDisplayString(pt?.sr), 1 /* TEXT */))\n                                                        : _createCommentVNode(\"v-if\", true)\n                                                    ]),\n                                                    ($setup.dcrt.shows(pt?.text))\n                                                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_115, _toDisplayString(pt?.text), 1 /* TEXT */))\n                                                      : _createCommentVNode(\"v-if\", true)\n                                                  ])\n                                                ]))\n                                              }), 128 /* KEYED_FRAGMENT */))\n                                            ]),\n                                            _cache[155] || (_cache[155] = _createTextVNode()),\n                                            _createElementVNode(\"button\", {\n                                              class: \"app-scp6\",\n                                              onClick: a?.onClick,\n                                              style: {\"border\":\"none\",\"background\":\"none\",\"color\":\"inherit\",\"padding\":\"0\",\"text-align\":\"left\",\"cursor\":\"pointer\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"4px\"}\n                                            }, [\n                                              _cache[152] || (_cache[152] = _createElementVNode(\"span\", { style: {\"font\":\"400 11px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Onderbouwing\", -1 /* CACHED */)),\n                                              _cache[153] || (_cache[153] = _createTextVNode()),\n                                              _createElementVNode(\"span\", _hoisted_117, [\n                                                (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list(a?.segs), (s, $index) => {\n                                                  return (_openBlock(), _createElementBlock(\"span\", {\n                                                    key: $index,\n                                                    style: _normalizeStyle($setup.dcrt.style(`flex:1;height:4px;border-radius:1px;background:${s?.bg ?? ''}`))\n                                                  }, null, 4 /* STYLE */))\n                                                }), 128 /* KEYED_FRAGMENT */))\n                                              ]),\n                                              _cache[154] || (_cache[154] = _createTextVNode()),\n                                              _createElementVNode(\"span\", _hoisted_118, [\n                                                ($setup.dcrt.shows(a?.count))\n                                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_119, _toDisplayString(a?.count), 1 /* TEXT */))\n                                                  : _createCommentVNode(\"v-if\", true)\n                                              ])\n                                            ], 8 /* PROPS */, _hoisted_116)\n                                          ]))\n                                        }), 128 /* KEYED_FRAGMENT */))\n                                      ]),\n                                      _cache[158] || (_cache[158] = _createTextVNode()),\n                                      _createElementVNode(\"span\", _hoisted_120, [\n                                        _cache[156] || (_cache[156] = _createElementVNode(\"svg\", {\n                                          width: \"14\",\n                                          height: \"14\",\n                                          viewBox: \"0 0 24 24\",\n                                          fill: \"none\",\n                                          stroke: \"currentColor\",\n                                          \"stroke-width\": \"1.6\",\n                                          \"stroke-linecap\": \"round\"\n                                        }, [\n                                          _createElementVNode(\"circle\", {\n                                            cx: \"12\",\n                                            cy: \"12\",\n                                            r: \"9\"\n                                          }),\n                                          _createElementVNode(\"path\", { d: \"M12 11v5\" }),\n                                          _createElementVNode(\"path\", { d: \"M12 7.5h.01\" })\n                                        ], -1 /* CACHED */)),\n                                        _cache[157] || (_cache[157] = _createTextVNode()),\n                                        ($setup.dcrt.shows(b?.basis))\n                                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_121, _toDisplayString(b?.basis), 1 /* TEXT */))\n                                          : _createCommentVNode(\"v-if\", true)\n                                      ])\n                                    ]))\n                                  : _createCommentVNode(\"v-if\", true),\n                                _cache[173] || (_cache[173] = _createTextVNode()),\n                                (b?.isImpact)\n                                  ? (_openBlock(), _createElementBlock(\"div\", _hoisted_122, [\n                                      _createElementVNode(\"div\", _hoisted_123, [\n                                        _cache[159] || (_cache[159] = _createElementVNode(\"span\", { style: {\"font\":\"700 16px/1 var(--font-body)\"} }, \"Jouw impact\", -1 /* CACHED */)),\n                                        _cache[160] || (_cache[160] = _createTextVNode()),\n                                        _createElementVNode(\"span\", _hoisted_124, [\n                                          ($setup.dcrt.shows(b?.scenario))\n                                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_125, _toDisplayString(b?.scenario), 1 /* TEXT */))\n                                            : _createCommentVNode(\"v-if\", true)\n                                        ])\n                                      ]),\n                                      _cache[163] || (_cache[163] = _createTextVNode()),\n                                      (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list(b?.rows), (r, $index) => {\n                                        return (_openBlock(), _createElementBlock(\"div\", {\n                                          key: $index,\n                                          style: {\"display\":\"grid\",\"grid-template-columns\":\"116px 1fr auto\",\"gap\":\"12px\",\"align-items\":\"center\"}\n                                        }, [\n                                          _createElementVNode(\"span\", _hoisted_126, [\n                                            ($setup.dcrt.shows(r?.label))\n                                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_127, _toDisplayString(r?.label), 1 /* TEXT */))\n                                              : _createCommentVNode(\"v-if\", true)\n                                          ]),\n                                          _cache[161] || (_cache[161] = _createTextVNode()),\n                                          _createElementVNode(\"span\", _hoisted_128, [\n                                            _createElementVNode(\"span\", {\n                                              style: _normalizeStyle($setup.dcrt.style(`display:block;height:100%;width:${r?.pct ?? ''};border-radius:100px;background:${r?.color ?? ''}`))\n                                            }, null, 4 /* STYLE */)\n                                          ]),\n                                          _cache[162] || (_cache[162] = _createTextVNode()),\n                                          _createElementVNode(\"span\", _hoisted_129, [\n                                            ($setup.dcrt.shows(r?.verdict))\n                                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_130, _toDisplayString(r?.verdict), 1 /* TEXT */))\n                                              : _createCommentVNode(\"v-if\", true)\n                                          ])\n                                        ]))\n                                      }), 128 /* KEYED_FRAGMENT */)),\n                                      _cache[164] || (_cache[164] = _createTextVNode()),\n                                      _cache[165] || (_cache[165] = _createElementVNode(\"span\", { style: {\"font\":\"400 11px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Kwalitatieve inschatting op basis van de aangehaalde onderzoeken. Geen berekende score.\", -1 /* CACHED */))\n                                    ]))\n                                  : _createCommentVNode(\"v-if\", true),\n                                _cache[174] || (_cache[174] = _createTextVNode()),\n                                (b?.isBtw)\n                                  ? (_openBlock(), _createElementBlock(\"div\", _hoisted_131, [\n                                      _cache[169] || (_cache[169] = _createElementVNode(\"span\", { style: {\"font\":\"700 16px/1 var(--font-body)\"} }, \"Jouw Bruto Twentse Waarde\", -1 /* CACHED */)),\n                                      _cache[170] || (_cache[170] = _createTextVNode()),\n                                      _createElementVNode(\"div\", _hoisted_132, [\n                                        (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list(b?.items), (it, $index) => {\n                                          return (_openBlock(), _createElementBlock(\"div\", {\n                                            key: $index,\n                                            style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"align-items\":\"center\",\"gap\":\"16px\",\"text-align\":\"center\"}\n                                          }, [\n                                            _createElementVNode(\"span\", {\n                                              role: \"img\",\n                                              \"aria-label\": $setup.dcrt.attr(it?.aria),\n                                              style: {\"position\":\"relative\",\"width\":\"76px\",\"height\":\"76px\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\",\"flex-shrink\":\"0\"}\n                                            }, [\n                                              (_openBlock(), _createElementBlock(\"svg\", _hoisted_134, [\n                                                _cache[166] || (_cache[166] = _createElementVNode(\"circle\", {\n                                                  cx: \"38\",\n                                                  cy: \"38\",\n                                                  r: \"34\",\n                                                  fill: \"none\",\n                                                  stroke: \"var(--track,rgba(255,255,255,0.08))\",\n                                                  \"stroke-width\": \"4\"\n                                                }, null, -1 /* CACHED */)),\n                                                _createElementVNode(\"circle\", {\n                                                  cx: \"38\",\n                                                  cy: \"38\",\n                                                  r: \"34\",\n                                                  fill: \"none\",\n                                                  stroke: it?.color,\n                                                  \"stroke-width\": \"4\",\n                                                  \"stroke-linecap\": \"round\",\n                                                  \"stroke-dasharray\": it?.dash\n                                                }, null, 8 /* PROPS */, _hoisted_135)\n                                              ])),\n                                              _cache[167] || (_cache[167] = _createTextVNode()),\n                                              _createElementVNode(\"span\", {\n                                                style: _normalizeStyle($setup.dcrt.style(`width:56px;height:56px;border-radius:50%;background:${it?.color ?? ''};display:flex;align-items:center;justify-content:center;color:#FFFFFF;font:300 22px/1 var(--font-body)`))\n                                              }, \"+\", 4 /* STYLE */)\n                                            ], 8 /* PROPS */, _hoisted_133),\n                                            _cache[168] || (_cache[168] = _createTextVNode()),\n                                            _createElementVNode(\"span\", _hoisted_136, [\n                                              ($setup.dcrt.shows(it?.label))\n                                                ? (_openBlock(), _createElementBlock(\"span\", _hoisted_137, _toDisplayString(it?.label), 1 /* TEXT */))\n                                                : _createCommentVNode(\"v-if\", true)\n                                            ])\n                                          ]))\n                                        }), 128 /* KEYED_FRAGMENT */))\n                                      ])\n                                    ]))\n                                  : _createCommentVNode(\"v-if\", true),\n                                _cache[175] || (_cache[175] = _createTextVNode()),\n                                (b?.isCard)\n                                  ? (_openBlock(), _createElementBlock(\"p\", _hoisted_138, [\n                                      (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list(b?.segs), (sg, $index) => {\n                                        return (_openBlock(), _createElementBlock(_Fragment, { key: $index }, [\n                                          (sg?.isText)\n                                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_139, [\n                                                ($setup.dcrt.shows(sg?.text))\n                                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_140, _toDisplayString(sg?.text), 1 /* TEXT */))\n                                                  : _createCommentVNode(\"v-if\", true)\n                                              ]))\n                                            : _createCommentVNode(\"v-if\", true),\n                                          (sg?.isCite)\n                                            ? (_openBlock(), _createElementBlock(\"button\", {\n                                                key: 1,\n                                                class: \"app-scp5\",\n                                                onClick: sg?.onClick,\n                                                onMouseenter: sg?.onEnter,\n                                                onMouseleave: sg?.onLeave,\n                                                \"aria-label\": $setup.dcrt.attr(sg?.aria),\n                                                title: sg?.title,\n                                                style: _normalizeStyle($setup.dcrt.style(`border:none;border-radius:100px;background:${sg?.bg ?? ''};color:${sg?.color ?? ''};box-shadow:${sg?.ring ?? ''};min-width:22px;height:22px;padding:0 8px;margin:0 3px;font:700 11px/22px var(--font-body);cursor:pointer;vertical-align:1px;white-space:nowrap`))\n                                              }, [\n                                                ($setup.dcrt.shows(sg?.label))\n                                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_142, _toDisplayString(sg?.label), 1 /* TEXT */))\n                                                  : _createCommentVNode(\"v-if\", true)\n                                              ], 44 /* STYLE, PROPS, NEED_HYDRATION */, _hoisted_141))\n                                            : _createCommentVNode(\"v-if\", true),\n                                          (sg?.isCo)\n                                            ? (_openBlock(), _createElementBlock(\"button\", {\n                                                key: 2,\n                                                onClick: sg?.onClick,\n                                                style: {\"border\":\"none\",\"background\":\"none\",\"color\":\"inherit\",\"padding\":\"0\",\"font\":\"600 14px/1.4 var(--font-body)\",\"text-decoration\":\"underline\",\"text-decoration-color\":\"#7D80FF\",\"text-underline-offset\":\"3px\",\"cursor\":\"pointer\"}\n                                              }, [\n                                                ($setup.dcrt.shows(sg?.text))\n                                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_144, _toDisplayString(sg?.text), 1 /* TEXT */))\n                                                  : _createCommentVNode(\"v-if\", true)\n                                              ], 8 /* PROPS */, _hoisted_143))\n                                            : _createCommentVNode(\"v-if\", true)\n                                        ], 64 /* STABLE_FRAGMENT */))\n                                      }), 128 /* KEYED_FRAGMENT */))\n                                    ]))\n                                  : _createCommentVNode(\"v-if\", true)\n                              ], 64 /* STABLE_FRAGMENT */))\n                            }), 128 /* KEYED_FRAGMENT */)),\n                            _cache[190] || (_cache[190] = _createTextVNode()),\n                            (m?.hasSources)\n                              ? (_openBlock(), _createElementBlock(\"div\", _hoisted_145, [\n                                  _cache[181] || (_cache[181] = _createElementVNode(\"span\", { style: {\"font\":\"700 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Onderzoek in dit antwoord\", -1 /* CACHED */)),\n                                  _cache[182] || (_cache[182] = _createTextVNode()),\n                                  _createElementVNode(\"div\", _hoisted_146, [\n                                    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list(m?.sources), (src, $index) => {\n                                      return (_openBlock(), _createElementBlock(\"button\", {\n                                        key: $index,\n                                        class: \"app-scp5\",\n                                        onClick: src?.onClick,\n                                        onMouseenter: src?.onEnter,\n                                        onMouseleave: src?.onLeave,\n                                        style: _normalizeStyle($setup.dcrt.style(`border:none;border-radius:12px;background:var(--surface,#2A2260);box-shadow:${src?.ring ?? ''};color:inherit;padding:12px;text-align:left;cursor:pointer;display:flex;gap:12px;align-items:flex-start`))\n                                      }, [\n                                        _createElementVNode(\"span\", {\n                                          style: _normalizeStyle($setup.dcrt.style(`width:24px;height:24px;border-radius:100px;background:${src?.numBg ?? ''};color:${src?.numColor ?? ''};display:flex;align-items:center;justify-content:center;font:700 11px var(--font-body);flex-shrink:0`))\n                                        }, [\n                                          ($setup.dcrt.shows(src?.n))\n                                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_148, _toDisplayString(src?.n), 1 /* TEXT */))\n                                            : _createCommentVNode(\"v-if\", true)\n                                        ], 4 /* STYLE */),\n                                        _cache[180] || (_cache[180] = _createTextVNode()),\n                                        _createElementVNode(\"span\", _hoisted_149, [\n                                          _createElementVNode(\"span\", _hoisted_150, [\n                                            ($setup.dcrt.shows(src?.title))\n                                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_151, _toDisplayString(src?.title), 1 /* TEXT */))\n                                              : _createCommentVNode(\"v-if\", true)\n                                          ]),\n                                          _cache[177] || (_cache[177] = _createTextVNode()),\n                                          _createElementVNode(\"span\", _hoisted_152, [\n                                            ($setup.dcrt.shows(src?.meta))\n                                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_153, _toDisplayString(src?.meta), 1 /* TEXT */))\n                                              : _createCommentVNode(\"v-if\", true)\n                                          ]),\n                                          _cache[178] || (_cache[178] = _createTextVNode()),\n                                          (src?.cin)\n                                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_154, \"Cinergie Twente\"))\n                                            : _createCommentVNode(\"v-if\", true),\n                                          _cache[179] || (_cache[179] = _createTextVNode()),\n                                          _createElementVNode(\"span\", _hoisted_155, [\n                                            _cache[176] || (_cache[176] = _createTextVNode(\"Bekijk passage\", -1 /* CACHED */)),\n                                            ($setup.dcrt.shows(src?.locLabel))\n                                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_156, _toDisplayString(src?.locLabel), 1 /* TEXT */))\n                                              : _createCommentVNode(\"v-if\", true)\n                                          ])\n                                        ])\n                                      ], 44 /* STYLE, PROPS, NEED_HYDRATION */, _hoisted_147))\n                                    }), 128 /* KEYED_FRAGMENT */))\n                                  ])\n                                ]))\n                              : _createCommentVNode(\"v-if\", true),\n                            _cache[191] || (_cache[191] = _createTextVNode()),\n                            _createElementVNode(\"div\", _hoisted_157, [\n                              _createElementVNode(\"button\", {\n                                class: \"app-scp1\",\n                                onClick: m?.onCopy,\n                                \"aria-label\": $setup.dcrt.attr(m?.copyLabel),\n                                title: m?.copyLabel,\n                                style: {\"width\":\"32px\",\"height\":\"32px\",\"border\":\"none\",\"border-radius\":\"8px\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\",\"cursor\":\"pointer\",\"padding\":\"0\",\"background\":\"none\"}\n                              }, [\n                                (m?.notCopied)\n                                  ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_159, _cache[183] || (_cache[183] = [\n                                      _createElementVNode(\"rect\", {\n                                        x: \"9\",\n                                        y: \"9\",\n                                        width: \"11\",\n                                        height: \"11\",\n                                        rx: \"2\"\n                                      }, null, -1 /* CACHED */),\n                                      _createElementVNode(\"path\", { d: \"M5 15V5a2 2 0 0 1 2-2h8\" }, null, -1 /* CACHED */)\n                                    ])))\n                                  : _createCommentVNode(\"v-if\", true),\n                                _cache[185] || (_cache[185] = _createTextVNode()),\n                                (m?.isCopied)\n                                  ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_160, _cache[184] || (_cache[184] = [\n                                      _createElementVNode(\"path\", { d: \"M5 12.5 10 17 19 7\" }, null, -1 /* CACHED */)\n                                    ])))\n                                  : _createCommentVNode(\"v-if\", true)\n                              ], 8 /* PROPS */, _hoisted_158),\n                              _cache[188] || (_cache[188] = _createTextVNode()),\n                              _createElementVNode(\"button\", {\n                                class: \"app-scp1\",\n                                onClick: m?.onUp,\n                                \"aria-pressed\": $setup.dcrt.attr(m?.upOn),\n                                \"aria-label\": \"Nuttig antwoord\",\n                                title: \"Nuttig\",\n                                style: _normalizeStyle($setup.dcrt.style(`width:32px;height:32px;border:none;border-radius:8px;color:var(--muted,rgba(255,255,255,0.75));display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;background:${m?.upBg ?? ''}`))\n                              }, [\n                                (_openBlock(), _createElementBlock(\"svg\", {\n                                  width: \"16\",\n                                  height: \"16\",\n                                  viewBox: \"0 0 24 24\",\n                                  fill: m?.upFill,\n                                  stroke: \"currentColor\",\n                                  \"stroke-width\": \"1.7\",\n                                  \"stroke-linecap\": \"round\",\n                                  \"stroke-linejoin\": \"round\"\n                                }, _cache[186] || (_cache[186] = [\n                                  _createElementVNode(\"path\", { d: \"M7 10v11\" }, null, -1 /* CACHED */),\n                                  _createElementVNode(\"path\", { d: \"M15 5.9 14 10h5.8a2 2 0 0 1 1.9 2.5l-2.3 7A2 2 0 0 1 17.5 21H7V10l4.3-7a2.1 2.1 0 0 1 3.7 2.9z\" }, null, -1 /* CACHED */),\n                                  _createElementVNode(\"path\", { d: \"M3 10h4v11H3z\" }, null, -1 /* CACHED */)\n                                ]), 8 /* PROPS */, _hoisted_162))\n                              ], 12 /* STYLE, PROPS */, _hoisted_161),\n                              _cache[189] || (_cache[189] = _createTextVNode()),\n                              _createElementVNode(\"button\", {\n                                class: \"app-scp1\",\n                                onClick: m?.onDown,\n                                \"aria-pressed\": $setup.dcrt.attr(m?.downOn),\n                                \"aria-label\": \"Antwoord klopt niet\",\n                                title: \"Klopt niet\",\n                                style: _normalizeStyle($setup.dcrt.style(`width:32px;height:32px;border:none;border-radius:8px;color:var(--muted,rgba(255,255,255,0.75));display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;background:${m?.downBg ?? ''}`))\n                              }, [\n                                (_openBlock(), _createElementBlock(\"svg\", {\n                                  width: \"16\",\n                                  height: \"16\",\n                                  viewBox: \"0 0 24 24\",\n                                  fill: m?.downFill,\n                                  stroke: \"currentColor\",\n                                  \"stroke-width\": \"1.7\",\n                                  \"stroke-linecap\": \"round\",\n                                  \"stroke-linejoin\": \"round\"\n                                }, _cache[187] || (_cache[187] = [\n                                  _createElementVNode(\"path\", { d: \"M17 14V3\" }, null, -1 /* CACHED */),\n                                  _createElementVNode(\"path\", { d: \"M9 18.1 10 14H4.2a2 2 0 0 1-1.9-2.5l2.3-7A2 2 0 0 1 6.5 3H17v11l-4.3 7a2.1 2.1 0 0 1-3.7-2.9z\" }, null, -1 /* CACHED */),\n                                  _createElementVNode(\"path\", { d: \"M17 3h4v11h-4z\" }, null, -1 /* CACHED */)\n                                ]), 8 /* PROPS */, _hoisted_164))\n                              ], 12 /* STYLE, PROPS */, _hoisted_163)\n                            ])\n                          ]))\n                        : _createCommentVNode(\"v-if\", true)\n                    ], 12 /* STYLE, PROPS */, _hoisted_90))\n                  }), 128 /* KEYED_FRAGMENT */)),\n                  _cache[204] || (_cache[204] = _createTextVNode()),\n                  ($setup.dcv.guestWall)\n                    ? (_openBlock(), _createElementBlock(\"div\", _hoisted_165, [\n                        _cache[197] || (_cache[197] = _createElementVNode(\"span\", { style: {\"font\":\"700 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Kiek\", -1 /* CACHED */)),\n                        _cache[198] || (_cache[198] = _createTextVNode()),\n                        _createElementVNode(\"div\", _hoisted_166, [\n                          _cache[195] || (_cache[195] = _createElementVNode(\"div\", { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\"} }, [\n                            _createElementVNode(\"span\", { style: {\"font\":\"800 28px/0.95 Degular,var(--font-display,sans-serif)\",\"letter-spacing\":\"-0.02em\"} }, \"Wil je verder chatten?\"),\n                            _createTextVNode(),\n                            _createElementVNode(\"span\", { style: {\"font\":\"500 15px/1.4 var(--font-body)\"} }, \"Je hebt je 3 gratis vragen gesteld. Maak een account aan, dan blijft dit gesprek bewaard en kun je verder.\")\n                          ], -1 /* CACHED */)),\n                          _cache[196] || (_cache[196] = _createTextVNode()),\n                          _createElementVNode(\"div\", _hoisted_167, [\n                            _createElementVNode(\"button\", {\n                              type: \"button\",\n                              onClick: _cache[20] || (_cache[20] = (...args) => ($setup.dcv.goSignup && $setup.dcv.goSignup(...args))),\n                              style: {\"height\":\"48px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"#1F184E\",\"color\":\"#F9F7F3\",\"padding\":\"0 24px\",\"font\":\"500 15px var(--font-body)\",\"cursor\":\"pointer\"}\n                            }, \"Account aanmaken\"),\n                            _cache[194] || (_cache[194] = _createTextVNode()),\n                            _createElementVNode(\"button\", {\n                              type: \"button\",\n                              onClick: _cache[21] || (_cache[21] = (...args) => ($setup.dcv.goLogin && $setup.dcv.goLogin(...args))),\n                              style: {\"height\":\"48px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"rgba(31,24,78,0.1)\",\"color\":\"#1F184E\",\"padding\":\"0 20px\",\"font\":\"500 15px var(--font-body)\",\"cursor\":\"pointer\"}\n                            }, \"Inloggen\")\n                          ])\n                        ])\n                      ]))\n                    : _createCommentVNode(\"v-if\", true),\n                  _cache[205] || (_cache[205] = _createTextVNode()),\n                  ($setup.dcv.generating)\n                    ? (_openBlock(), _createElementBlock(\"div\", _hoisted_168, [\n                        _cache[201] || (_cache[201] = _createElementVNode(\"span\", { style: {\"font\":\"700 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Kiek\", -1 /* CACHED */)),\n                        _cache[202] || (_cache[202] = _createTextVNode()),\n                        _createElementVNode(\"div\", _hoisted_169, [\n                          _cache[199] || (_cache[199] = _createElementVNode(\"span\", { style: {\"font\":\"400 14px/1.4 var(--font-body)\",\"animation\":\"kiekPulse 1.4s ease-in-out infinite\"} }, \"Kiek zoekt in het onderzoek…\", -1 /* CACHED */)),\n                          _cache[200] || (_cache[200] = _createTextVNode()),\n                          _createElementVNode(\"button\", {\n                            onClick: _cache[22] || (_cache[22] = (...args) => ($setup.dcv.stop && $setup.dcv.stop(...args))),\n                            style: {\"border\":\"none\",\"border-radius\":\"8px\",\"background\":\"none\",\"box-shadow\":\"inset 0 0 0 1px #7D80FF\",\"color\":\"inherit\",\"padding\":\"6px 12px\",\"font\":\"500 12px var(--font-body)\",\"cursor\":\"pointer\"}\n                          }, \"Stop\")\n                        ])\n                      ]))\n                    : _createCommentVNode(\"v-if\", true)\n                ])\n              ], 4 /* STYLE */),\n              _cache[209] || (_cache[209] = _createTextVNode()),\n              _createElementVNode(\"div\", {\n                style: _normalizeStyle($setup.dcrt.style(`position:absolute;left:0;right:0;bottom:0;padding:${$setup.dcv.composerPad ?? ''};background:linear-gradient(180deg,var(--bg0,rgba(31,24,78,0)) 0%,var(--bg,#1F184E) 45.74%);pointer-events:none`))\n              }, [\n                _createElementVNode(\"div\", _hoisted_170, [\n                  _createElementVNode(\"input\", {\n                    ref: (el) => $setup.dcrt.setRef($setup.dcv.inputRef, el),\n                    value: $setup.dcv.draft ?? '',\n                    onInput: _cache[23] || (_cache[23] = (...args) => ($setup.dcv.onDraft && $setup.dcv.onDraft(...args))),\n                    onKeydown: _cache[24] || (_cache[24] = (...args) => ($setup.dcv.onKey && $setup.dcv.onKey(...args))),\n                    placeholder: $setup.dcv.composerPh,\n                    \"aria-label\": \"Bericht aan Kiek\",\n                    style: {\"flex\":\"1\",\"min-width\":\"0\",\"border\":\"none\",\"outline\":\"none\",\"background\":\"none\",\"color\":\"inherit\",\"font\":\"400 14px/1.4 var(--font-body)\"}\n                  }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_171),\n                  _cache[207] || (_cache[207] = _createTextVNode()),\n                  _createElementVNode(\"button\", {\n                    class: \"app-scp2\",\n                    onClick: _cache[25] || (_cache[25] = (...args) => ($setup.dcv.send && $setup.dcv.send(...args))),\n                    \"aria-label\": \"Verstuur\",\n                    style: {\"width\":\"40px\",\"height\":\"40px\",\"border\":\"none\",\"border-radius\":\"8px\",\"background\":\"#7D80FF\",\"color\":\"#F9F7F3\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\",\"cursor\":\"pointer\",\"flex-shrink\":\"0\"}\n                  }, _cache[206] || (_cache[206] = [\n                    _createElementVNode(\"svg\", {\n                      width: \"16\",\n                      height: \"16\",\n                      viewBox: \"0 0 24 24\",\n                      fill: \"none\",\n                      stroke: \"currentColor\",\n                      \"stroke-width\": \"1.8\",\n                      \"stroke-linejoin\": \"round\",\n                      \"stroke-linecap\": \"round\"\n                    }, [\n                      _createElementVNode(\"path\", { d: \"M21 3 10.5 13.5\" }),\n                      _createElementVNode(\"path\", { d: \"M21 3 14.5 21l-4-7.5L3 9.5z\" })\n                    ], -1 /* CACHED */)\n                  ]))\n                ])\n              ], 4 /* STYLE */)\n            ]))\n          : _createCommentVNode(\"v-if\", true),\n        _cache[414] || (_cache[414] = _createTextVNode()),\n        ($setup.dcv.isOnderzoek)\n          ? (_openBlock(), _createElementBlock(\"div\", {\n              key: 5,\n              style: _normalizeStyle($setup.dcrt.style(`flex:1;overflow:auto;padding:${$setup.dcv.pagePad ?? ''}`))\n            }, [\n              ($setup.dcv.rsList)\n                ? (_openBlock(), _createElementBlock(\"div\", _hoisted_172, [\n                    _createElementVNode(\"div\", _hoisted_173, [\n                      _createElementVNode(\"div\", null, [\n                        _createElementVNode(\"h1\", _hoisted_174, [\n                          ($setup.dcrt.shows($setup.dcv.rsH1))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_175, _toDisplayString($setup.dcv.rsH1), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ]),\n                        _cache[210] || (_cache[210] = _createTextVNode()),\n                        _createElementVNode(\"p\", _hoisted_176, [\n                          ($setup.dcrt.shows($setup.dcv.rsIntro))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_177, _toDisplayString($setup.dcv.rsIntro), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ])\n                      ]),\n                      _cache[212] || (_cache[212] = _createTextVNode()),\n                      _createElementVNode(\"button\", {\n                        class: \"app-scp2\",\n                        onClick: _cache[26] || (_cache[26] = (...args) => ($setup.dcv.openUpload && $setup.dcv.openUpload(...args))),\n                        style: {\"height\":\"46px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"#7D80FF\",\"color\":\"#FFFFFF\",\"padding\":\"0 20px\",\"font\":\"500 14px var(--font-body)\",\"cursor\":\"pointer\",\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"8px\"}\n                      }, _cache[211] || (_cache[211] = [\n                        _createElementVNode(\"svg\", {\n                          width: \"16\",\n                          height: \"16\",\n                          viewBox: \"0 0 24 24\",\n                          fill: \"none\",\n                          stroke: \"currentColor\",\n                          \"stroke-width\": \"2\",\n                          \"stroke-linecap\": \"round\",\n                          \"stroke-linejoin\": \"round\"\n                        }, [\n                          _createElementVNode(\"path\", { d: \"M12 16V4\" }),\n                          _createElementVNode(\"path\", { d: \"m7 9 5-5 5 5\" }),\n                          _createElementVNode(\"path\", { d: \"M4 16v3a1.5 1.5 0 0 0 1.5 1.5h13A1.5 1.5 0 0 0 20 19v-3\" })\n                        ], -1 /* CACHED */),\n                        _createTextVNode(\"Onderzoek aanleveren\", -1 /* CACHED */)\n                      ]))\n                    ]),\n                    _cache[268] || (_cache[268] = _createTextVNode()),\n                    ($setup.dcv.showOnboard)\n                      ? (_openBlock(), _createElementBlock(\"div\", {\n                          key: 0,\n                          style: _normalizeStyle($setup.dcrt.style(`display:grid;grid-template-columns:${$setup.dcv.obCols ?? ''};gap:24px;align-items:start`))\n                        }, [\n                          _createElementVNode(\"div\", _hoisted_178, [\n                            _createElementVNode(\"div\", _hoisted_179, [\n                              _createElementVNode(\"div\", _hoisted_180, [\n                                _cache[214] || (_cache[214] = _createElementVNode(\"span\", { style: {\"font\":\"800 28px/1 var(--font-display)\"} }, \"Aan de slag\", -1 /* CACHED */)),\n                                _cache[215] || (_cache[215] = _createTextVNode()),\n                                _createElementVNode(\"span\", _hoisted_181, [\n                                  ($setup.dcrt.shows($setup.dcv.obDone))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_182, _toDisplayString($setup.dcv.obDone), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true),\n                                  _cache[213] || (_cache[213] = _createTextVNode(\" van 3 gedaan\", -1 /* CACHED */))\n                                ])\n                              ]),\n                              _cache[216] || (_cache[216] = _createTextVNode()),\n                              _createElementVNode(\"span\", _hoisted_183, [\n                                (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.obBars), (b, $index) => {\n                                  return (_openBlock(), _createElementBlock(\"span\", {\n                                    key: $index,\n                                    style: _normalizeStyle($setup.dcrt.style(`flex:1;height:4px;border-radius:2px;background:${b?.bg ?? ''}`))\n                                  }, null, 4 /* STYLE */))\n                                }), 128 /* KEYED_FRAGMENT */))\n                              ])\n                            ]),\n                            _cache[224] || (_cache[224] = _createTextVNode()),\n                            (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.obSteps), (st, $index) => {\n                              return (_openBlock(), _createElementBlock(\"div\", {\n                                key: $index,\n                                style: _normalizeStyle($setup.dcrt.style(`display:grid;grid-template-columns:36px minmax(0,1fr);gap:16px;align-items:start;opacity:${st?.op ?? ''}`))\n                              }, [\n                                _createElementVNode(\"span\", {\n                                  style: _normalizeStyle($setup.dcrt.style(`width:36px;height:36px;border-radius:50%;background:${st?.circleBg ?? ''};color:${st?.circleColor ?? ''};display:flex;align-items:center;justify-content:center;font:700 14px var(--font-body)`))\n                                }, [\n                                  (st?.done)\n                                    ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_184, _cache[217] || (_cache[217] = [\n                                        _createElementVNode(\"path\", { d: \"M5 12.5 10 17 19 7\" }, null, -1 /* CACHED */)\n                                      ])))\n                                    : _createCommentVNode(\"v-if\", true),\n                                  _cache[218] || (_cache[218] = _createTextVNode()),\n                                  (st?.todo)\n                                    ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n                                        ($setup.dcrt.shows(st?.n))\n                                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_185, _toDisplayString(st?.n), 1 /* TEXT */))\n                                          : _createCommentVNode(\"v-if\", true)\n                                      ], 64 /* STABLE_FRAGMENT */))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ], 4 /* STYLE */),\n                                _cache[221] || (_cache[221] = _createTextVNode()),\n                                _createElementVNode(\"div\", _hoisted_186, [\n                                  _createElementVNode(\"span\", _hoisted_187, [\n                                    ($setup.dcrt.shows(st?.title))\n                                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_188, _toDisplayString(st?.title), 1 /* TEXT */))\n                                      : _createCommentVNode(\"v-if\", true)\n                                  ]),\n                                  _cache[219] || (_cache[219] = _createTextVNode()),\n                                  _createElementVNode(\"span\", _hoisted_189, [\n                                    ($setup.dcrt.shows(st?.text))\n                                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_190, _toDisplayString(st?.text), 1 /* TEXT */))\n                                      : _createCommentVNode(\"v-if\", true)\n                                  ]),\n                                  _cache[220] || (_cache[220] = _createTextVNode()),\n                                  (st?.todo)\n                                    ? (_openBlock(), _createElementBlock(\"button\", {\n                                        key: 0,\n                                        class: \"app-scp7\",\n                                        onClick: st?.onClick,\n                                        style: _normalizeStyle($setup.dcrt.style(`align-self:flex-start;margin-top:6px;height:42px;border:none;border-radius:12px;background:${st?.btnBg ?? ''};box-shadow:${st?.btnRing ?? ''};color:${st?.btnColor ?? ''};padding:0 18px;font:500 14px var(--font-body);cursor:pointer`))\n                                      }, [\n                                        ($setup.dcrt.shows(st?.btn))\n                                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_192, _toDisplayString(st?.btn), 1 /* TEXT */))\n                                          : _createCommentVNode(\"v-if\", true)\n                                      ], 12 /* STYLE, PROPS */, _hoisted_191))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ])\n                              ], 4 /* STYLE */))\n                            }), 128 /* KEYED_FRAGMENT */)),\n                            _cache[225] || (_cache[225] = _createTextVNode()),\n                            ($setup.dcv.obAllDone)\n                              ? (_openBlock(), _createElementBlock(\"div\", _hoisted_193, [\n                                  _cache[222] || (_cache[222] = _createElementVNode(\"span\", { style: {\"font\":\"400 14px/1.4 var(--font-body)\"} }, \"Je bent klaar. Zodra Kiek je onderzoek aanhaalt, verschijnt het hieronder.\", -1 /* CACHED */)),\n                                  _cache[223] || (_cache[223] = _createTextVNode()),\n                                  _createElementVNode(\"button\", {\n                                    onClick: _cache[27] || (_cache[27] = (...args) => ($setup.dcv.hideOnboard && $setup.dcv.hideOnboard(...args))),\n                                    style: {\"height\":\"40px\",\"border\":\"none\",\"border-radius\":\"10px\",\"background\":\"#7D80FF\",\"color\":\"#FFFFFF\",\"padding\":\"0 16px\",\"font\":\"500 14px var(--font-body)\",\"cursor\":\"pointer\"}\n                                  }, \"Verberg uitleg\")\n                                ]))\n                              : _createCommentVNode(\"v-if\", true)\n                          ]),\n                          _cache[232] || (_cache[232] = _createTextVNode()),\n                          _createElementVNode(\"div\", _hoisted_194, [\n                            _createElementVNode(\"div\", _hoisted_195, [\n                              _cache[227] || (_cache[227] = _createElementVNode(\"span\", { style: {\"font\":\"700 14px/1.3 var(--font-body)\"} }, \"Wat er na aanleveren gebeurt\", -1 /* CACHED */)),\n                              _cache[228] || (_cache[228] = _createTextVNode()),\n                              (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.obFlow), (f, $index) => {\n                                return (_openBlock(), _createElementBlock(\"div\", {\n                                  key: $index,\n                                  style: {\"display\":\"flex\",\"gap\":\"12px\",\"align-items\":\"flex-start\"}\n                                }, [\n                                  _createElementVNode(\"span\", _hoisted_196, [\n                                    ($setup.dcrt.shows(f?.n))\n                                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_197, _toDisplayString(f?.n), 1 /* TEXT */))\n                                      : _createCommentVNode(\"v-if\", true)\n                                  ]),\n                                  _cache[226] || (_cache[226] = _createTextVNode()),\n                                  _createElementVNode(\"span\", _hoisted_198, [\n                                    _createElementVNode(\"span\", _hoisted_199, [\n                                      ($setup.dcrt.shows(f?.title))\n                                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_200, _toDisplayString(f?.title), 1 /* TEXT */))\n                                        : _createCommentVNode(\"v-if\", true)\n                                    ]),\n                                    _createElementVNode(\"span\", _hoisted_201, [\n                                      ($setup.dcrt.shows(f?.text))\n                                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_202, _toDisplayString(f?.text), 1 /* TEXT */))\n                                        : _createCommentVNode(\"v-if\", true)\n                                    ])\n                                  ])\n                                ]))\n                              }), 128 /* KEYED_FRAGMENT */))\n                            ]),\n                            _cache[231] || (_cache[231] = _createTextVNode()),\n                            _createElementVNode(\"div\", _hoisted_203, [\n                              _cache[229] || (_cache[229] = _createElementVNode(\"span\", { style: {\"font\":\"700 14px/1.3 var(--font-body)\"} }, \"Goed om te weten\", -1 /* CACHED */)),\n                              _cache[230] || (_cache[230] = _createTextVNode()),\n                              (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.obNotes), (t, $index) => {\n                                return (_openBlock(), _createElementBlock(\"span\", {\n                                  key: $index,\n                                  style: {\"font\":\"400 13px/1.45 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"}\n                                }, [\n                                  ($setup.dcrt.shows(t))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_204, _toDisplayString(t), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ]))\n                              }), 128 /* KEYED_FRAGMENT */))\n                            ])\n                          ])\n                        ], 4 /* STYLE */))\n                      : _createCommentVNode(\"v-if\", true),\n                    _cache[269] || (_cache[269] = _createTextVNode()),\n                    ($setup.dcv.rsVarLijst)\n                      ? (_openBlock(), _createElementBlock(\"div\", _hoisted_205, [\n                          _createElementVNode(\"span\", _hoisted_206, [\n                            ($setup.dcrt.shows($setup.dcv.rsSummary))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_207, _toDisplayString($setup.dcv.rsSummary), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ]),\n                          _cache[241] || (_cache[241] = _createTextVNode()),\n                          ($setup.dcv.rsWide)\n                            ? (_openBlock(), _createElementBlock(\"div\", _hoisted_208, _cache[233] || (_cache[233] = [\n                                _createElementVNode(\"span\", null, \"Onderzoek\", -1 /* CACHED */),\n                                _createElementVNode(\"span\", null, \"Aangehaald\", -1 /* CACHED */),\n                                _createElementVNode(\"span\", null, \"Jouw feedback\", -1 /* CACHED */),\n                                _createElementVNode(\"span\", null, null, -1 /* CACHED */)\n                              ])))\n                            : _createCommentVNode(\"v-if\", true),\n                          _cache[242] || (_cache[242] = _createTextVNode()),\n                          (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.rsRows), (d, $index) => {\n                            return (_openBlock(), _createElementBlock(\"button\", {\n                              key: $index,\n                              class: \"app-scp3\",\n                              onClick: d?.onClick,\n                              style: _normalizeStyle($setup.dcrt.style(`border:none;border-radius:12px;background:var(--surface,#2A2260);color:inherit;padding:18px 20px;text-align:left;cursor:pointer;display:grid;grid-template-columns:${$setup.dcv.rsRowCols ?? ''};gap:12px 24px;align-items:center`))\n                            }, [\n                              _createElementVNode(\"span\", _hoisted_210, [\n                                _createElementVNode(\"span\", _hoisted_211, [\n                                  ($setup.dcrt.shows(d?.title))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_212, _toDisplayString(d?.title), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ]),\n                                _cache[234] || (_cache[234] = _createTextVNode()),\n                                _createElementVNode(\"span\", _hoisted_213, [\n                                  ($setup.dcrt.shows(d?.meta))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_214, _toDisplayString(d?.meta), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true),\n                                  (d?.cin)\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_215, \"Cinergie Twente\"))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ]),\n                                _cache[235] || (_cache[235] = _createTextVNode()),\n                                (d?.hasNote)\n                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_216, [\n                                      ($setup.dcrt.shows(d?.note))\n                                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_217, _toDisplayString(d?.note), 1 /* TEXT */))\n                                        : _createCommentVNode(\"v-if\", true)\n                                    ]))\n                                  : _createCommentVNode(\"v-if\", true)\n                              ]),\n                              _cache[238] || (_cache[238] = _createTextVNode()),\n                              _createElementVNode(\"span\", _hoisted_218, [\n                                _createElementVNode(\"span\", {\n                                  style: _normalizeStyle($setup.dcrt.style(`font:700 24px/1 var(--font-body);color:${d?.countColor ?? ''}`))\n                                }, [\n                                  ($setup.dcrt.shows(d?.count))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_219, _toDisplayString(d?.count), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ], 4 /* STYLE */),\n                                _cache[236] || (_cache[236] = _createTextVNode()),\n                                _createElementVNode(\"span\", _hoisted_220, [\n                                  ($setup.dcrt.shows(d?.countSub))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_221, _toDisplayString(d?.countSub), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ])\n                              ]),\n                              _cache[239] || (_cache[239] = _createTextVNode()),\n                              _createElementVNode(\"span\", {\n                                style: _normalizeStyle($setup.dcrt.style(`font:400 13px/1.4 var(--font-body);color:${d?.fbColor ?? ''}`))\n                              }, [\n                                ($setup.dcrt.shows(d?.fb))\n                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_222, _toDisplayString(d?.fb), 1 /* TEXT */))\n                                  : _createCommentVNode(\"v-if\", true)\n                              ], 4 /* STYLE */),\n                              _cache[240] || (_cache[240] = _createTextVNode()),\n                              (_openBlock(), _createElementBlock(\"svg\", _hoisted_223, _cache[237] || (_cache[237] = [\n                                _createElementVNode(\"path\", { d: \"m9 5 7 7-7 7\" }, null, -1 /* CACHED */)\n                              ])))\n                            ], 12 /* STYLE, PROPS */, _hoisted_209))\n                          }), 128 /* KEYED_FRAGMENT */))\n                        ]))\n                      : _createCommentVNode(\"v-if\", true),\n                    _cache[270] || (_cache[270] = _createTextVNode()),\n                    ($setup.dcv.rsVarKaarten)\n                      ? (_openBlock(), _createElementBlock(\"div\", _hoisted_224, [\n                          _createElementVNode(\"div\", _hoisted_225, [\n                            (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.rsStats), (st, $index) => {\n                              return (_openBlock(), _createElementBlock(\"div\", {\n                                key: $index,\n                                style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"16px 20px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"4px\",\"min-width\":\"160px\"}\n                              }, [\n                                _createElementVNode(\"span\", _hoisted_226, [\n                                  ($setup.dcrt.shows(st?.n))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_227, _toDisplayString(st?.n), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ]),\n                                _cache[243] || (_cache[243] = _createTextVNode()),\n                                _createElementVNode(\"span\", _hoisted_228, [\n                                  ($setup.dcrt.shows(st?.label))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_229, _toDisplayString(st?.label), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ])\n                              ]))\n                            }), 128 /* KEYED_FRAGMENT */))\n                          ]),\n                          _cache[247] || (_cache[247] = _createTextVNode()),\n                          _createElementVNode(\"div\", _hoisted_230, [\n                            (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.rsDocs), (d, $index) => {\n                              return (_openBlock(), _createElementBlock(\"button\", {\n                                key: $index,\n                                class: \"app-scp3\",\n                                onClick: d?.onClick,\n                                style: {\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"color\":\"inherit\",\"padding\":\"20px\",\"text-align\":\"left\",\"cursor\":\"pointer\",\"display\":\"grid\",\"grid-template-columns\":\"minmax(0,1fr) auto\",\"gap\":\"12px 24px\",\"align-items\":\"center\"}\n                              }, [\n                                _createElementVNode(\"span\", _hoisted_232, [\n                                  _createElementVNode(\"span\", _hoisted_233, [\n                                    ($setup.dcrt.shows(d?.title))\n                                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_234, _toDisplayString(d?.title), 1 /* TEXT */))\n                                      : _createCommentVNode(\"v-if\", true)\n                                  ]),\n                                  _cache[244] || (_cache[244] = _createTextVNode()),\n                                  _createElementVNode(\"span\", _hoisted_235, [\n                                    ($setup.dcrt.shows(d?.meta))\n                                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_236, _toDisplayString(d?.meta), 1 /* TEXT */))\n                                      : _createCommentVNode(\"v-if\", true),\n                                    (d?.cin)\n                                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_237, \"Cinergie Twente\"))\n                                      : _createCommentVNode(\"v-if\", true),\n                                    _createElementVNode(\"span\", {\n                                      style: _normalizeStyle($setup.dcrt.style(`border-radius:100px;background:${d?.stBg ?? ''};color:${d?.stColor ?? ''};padding:6px 10px;font:600 11px/1 var(--font-body);white-space:nowrap`))\n                                    }, [\n                                      ($setup.dcrt.shows(d?.status))\n                                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_238, _toDisplayString(d?.status), 1 /* TEXT */))\n                                        : _createCommentVNode(\"v-if\", true)\n                                    ], 4 /* STYLE */)\n                                  ])\n                                ]),\n                                _cache[246] || (_cache[246] = _createTextVNode()),\n                                _createElementVNode(\"span\", _hoisted_239, [\n                                  _createElementVNode(\"span\", _hoisted_240, [\n                                    ($setup.dcrt.shows(d?.usage))\n                                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_241, _toDisplayString(d?.usage), 1 /* TEXT */))\n                                      : _createCommentVNode(\"v-if\", true)\n                                  ]),\n                                  _cache[245] || (_cache[245] = _createTextVNode()),\n                                  _createElementVNode(\"span\", _hoisted_242, [\n                                    ($setup.dcrt.shows(d?.fbLine))\n                                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_243, _toDisplayString(d?.fbLine), 1 /* TEXT */))\n                                      : _createCommentVNode(\"v-if\", true)\n                                  ])\n                                ])\n                              ], 8 /* PROPS */, _hoisted_231))\n                            }), 128 /* KEYED_FRAGMENT */))\n                          ])\n                        ]))\n                      : _createCommentVNode(\"v-if\", true),\n                    _cache[271] || (_cache[271] = _createTextVNode()),\n                    _createElementVNode(\"div\", {\n                      ref: (el) => $setup.dcrt.setRef($setup.dcv.shareRef, el),\n                      style: _normalizeStyle($setup.dcrt.style(`border-radius:12px;background:var(--surface,#2A2260);box-shadow:${$setup.dcv.shareRing ?? ''};padding:24px;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:24px;align-items:start;margin-top:16px;transition:box-shadow .4s`))\n                    }, [\n                      _createElementVNode(\"div\", _hoisted_244, [\n                        _createElementVNode(\"div\", _hoisted_245, [\n                          _cache[249] || (_cache[249] = _createElementVNode(\"div\", { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"4px\"} }, [\n                            _createElementVNode(\"span\", { style: {\"font\":\"700 16px/1.2 var(--font-body)\"} }, \"Contactgegevens bij verwijzingen\"),\n                            _createTextVNode(),\n                            _createElementVNode(\"span\", { style: {\"font\":\"400 13px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Mogen gebruikers je benaderen als Kiek naar jouw onderzoek verwijst?\")\n                          ], -1 /* CACHED */)),\n                          _cache[250] || (_cache[250] = _createTextVNode()),\n                          _createElementVNode(\"button\", {\n                            onClick: _cache[28] || (_cache[28] = (...args) => ($setup.dcv.toggleShare && $setup.dcv.toggleShare(...args))),\n                            role: \"switch\",\n                            \"aria-checked\": $setup.dcrt.attr($setup.dcv.shareOn),\n                            \"aria-label\": \"Contactgegevens delen\",\n                            style: _normalizeStyle($setup.dcrt.style(`width:48px;height:28px;border:none;border-radius:100px;background:${$setup.dcv.shareTrack ?? ''};padding:3px;cursor:pointer;flex-shrink:0;display:flex;justify-content:${$setup.dcv.shareJustify ?? ''}`))\n                          }, _cache[248] || (_cache[248] = [\n                            _createElementVNode(\"span\", { style: {\"width\":\"22px\",\"height\":\"22px\",\"border-radius\":\"50%\",\"background\":\"#FFFFFF\"} }, null, -1 /* CACHED */)\n                          ]), 12 /* STYLE, PROPS */, _hoisted_246)\n                        ]),\n                        _cache[255] || (_cache[255] = _createTextVNode()),\n                        ($setup.dcv.shareOn)\n                          ? (_openBlock(), _createElementBlock(\"div\", _hoisted_247, [\n                              _cache[253] || (_cache[253] = _createElementVNode(\"span\", { style: {\"font\":\"600 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Wat mag zichtbaar zijn\", -1 /* CACHED */)),\n                              _cache[254] || (_cache[254] = _createTextVNode()),\n                              (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.shareFields), (f, $index) => {\n                                return (_openBlock(), _createElementBlock(\"button\", {\n                                  key: $index,\n                                  onClick: f?.onClick,\n                                  role: \"checkbox\",\n                                  \"aria-checked\": $setup.dcrt.attr(f?.on),\n                                  \"aria-disabled\": $setup.dcrt.attr(f?.locked),\n                                  style: _normalizeStyle($setup.dcrt.style(`border:none;background:none;color:inherit;padding:0;display:flex;align-items:center;gap:12px;cursor:${f?.cursor ?? ''};text-align:left;font:400 14px/1.4 var(--font-body)`))\n                                }, [\n                                  _createElementVNode(\"span\", {\n                                    style: _normalizeStyle($setup.dcrt.style(`width:20px;height:20px;border-radius:6px;background:${f?.boxBg ?? ''};box-shadow:${f?.boxRing ?? ''};display:flex;align-items:center;justify-content:center;flex-shrink:0`))\n                                  }, [\n                                    (f?.on)\n                                      ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_249, _cache[251] || (_cache[251] = [\n                                          _createElementVNode(\"path\", { d: \"M5 12.5 10 17 19 7\" }, null, -1 /* CACHED */)\n                                        ])))\n                                      : _createCommentVNode(\"v-if\", true)\n                                  ], 4 /* STYLE */),\n                                  _cache[252] || (_cache[252] = _createTextVNode()),\n                                  _createElementVNode(\"span\", null, [\n                                    ($setup.dcrt.shows(f?.label))\n                                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_250, _toDisplayString(f?.label), 1 /* TEXT */))\n                                      : _createCommentVNode(\"v-if\", true)\n                                  ]),\n                                  (f?.locked)\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_251, \"altijd\"))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ], 12 /* STYLE, PROPS */, _hoisted_248))\n                              }), 128 /* KEYED_FRAGMENT */))\n                            ]))\n                          : _createCommentVNode(\"v-if\", true),\n                        _cache[256] || (_cache[256] = _createTextVNode()),\n                        _createElementVNode(\"span\", _hoisted_252, [\n                          ($setup.dcrt.shows($setup.dcv.shareNote))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_253, _toDisplayString($setup.dcv.shareNote), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ]),\n                        _cache[257] || (_cache[257] = _createTextVNode()),\n                        ($setup.dcv.shareAsk)\n                          ? (_openBlock(), _createElementBlock(\"button\", {\n                              key: 1,\n                              onClick: _cache[29] || (_cache[29] = (...args) => ($setup.dcv.confirmShare && $setup.dcv.confirmShare(...args))),\n                              style: {\"align-self\":\"flex-start\",\"height\":\"40px\",\"border\":\"none\",\"border-radius\":\"10px\",\"background\":\"#7D80FF\",\"color\":\"#FFFFFF\",\"padding\":\"0 16px\",\"font\":\"500 14px var(--font-body)\",\"cursor\":\"pointer\"}\n                            }, \"Opslaan\"))\n                          : _createCommentVNode(\"v-if\", true)\n                      ]),\n                      _cache[267] || (_cache[267] = _createTextVNode()),\n                      _createElementVNode(\"div\", _hoisted_254, [\n                        _cache[265] || (_cache[265] = _createElementVNode(\"span\", { style: {\"font\":\"600 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Zo zien gebruikers het\", -1 /* CACHED */)),\n                        _cache[266] || (_cache[266] = _createTextVNode()),\n                        _createElementVNode(\"div\", _hoisted_255, [\n                          _cache[262] || (_cache[262] = _createElementVNode(\"span\", { style: {\"font\":\"700 14px/1 var(--font-body)\"} }, \"Contactpersonen & bedrijven\", -1 /* CACHED */)),\n                          _cache[263] || (_cache[263] = _createTextVNode()),\n                          ($setup.dcv.shareOn)\n                            ? (_openBlock(), _createElementBlock(\"div\", _hoisted_256, [\n                                _cache[260] || (_cache[260] = _createElementVNode(\"span\", { style: {\"width\":\"32px\",\"height\":\"32px\",\"border-radius\":\"8px\",\"background\":\"var(--surface2,rgba(125,128,255,0.12))\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\",\"flex-shrink\":\"0\",\"color\":\"#7D80FF\"} }, [\n                                  _createElementVNode(\"svg\", {\n                                    width: \"14\",\n                                    height: \"14\",\n                                    viewBox: \"0 0 24 24\",\n                                    fill: \"none\",\n                                    stroke: \"currentColor\",\n                                    \"stroke-width\": \"1.8\",\n                                    \"stroke-linecap\": \"round\"\n                                  }, [\n                                    _createElementVNode(\"circle\", {\n                                      cx: \"12\",\n                                      cy: \"8\",\n                                      r: \"4\"\n                                    }),\n                                    _createElementVNode(\"path\", { d: \"M4.5 21a7.5 7.5 0 0 1 15 0\" })\n                                  ])\n                                ], -1 /* CACHED */)),\n                                _cache[261] || (_cache[261] = _createTextVNode()),\n                                _createElementVNode(\"span\", _hoisted_257, [\n                                  _cache[258] || (_cache[258] = _createElementVNode(\"span\", { style: {\"font\":\"600 14px/1.2 var(--font-body)\"} }, \"dr. Femke Groen\", -1 /* CACHED */)),\n                                  _cache[259] || (_cache[259] = _createTextVNode()),\n                                  (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.sharePreview), (pv, $index) => {\n                                    return (_openBlock(), _createElementBlock(\"span\", {\n                                      key: $index,\n                                      style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"}\n                                    }, [\n                                      ($setup.dcrt.shows(pv))\n                                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_258, _toDisplayString(pv), 1 /* TEXT */))\n                                        : _createCommentVNode(\"v-if\", true)\n                                    ]))\n                                  }), 128 /* KEYED_FRAGMENT */))\n                                ])\n                              ]))\n                            : _createCommentVNode(\"v-if\", true),\n                          _cache[264] || (_cache[264] = _createTextVNode()),\n                          ($setup.dcv.shareOff)\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_259, \"Je naam staat alleen als auteur bij de bron. Je verschijnt niet als contactpersoon.\"))\n                            : _createCommentVNode(\"v-if\", true)\n                        ])\n                      ])\n                    ], 4 /* STYLE */)\n                  ]))\n                : _createCommentVNode(\"v-if\", true),\n              _cache[330] || (_cache[330] = _createTextVNode()),\n              ($setup.dcv.rsDetail)\n                ? (_openBlock(), _createElementBlock(\"div\", _hoisted_260, [\n                    _createElementVNode(\"div\", _hoisted_261, [\n                      _createElementVNode(\"button\", {\n                        class: \"app-scp8\",\n                        onClick: _cache[30] || (_cache[30] = (...args) => ($setup.dcv.rsBack && $setup.dcv.rsBack(...args))),\n                        style: {\"align-self\":\"flex-start\",\"border\":\"none\",\"background\":\"none\",\"color\":\"#7D80FF\",\"padding\":\"0\",\"cursor\":\"pointer\",\"font\":\"400 12px/1.4 var(--font-body)\",\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"4px\"}\n                      }, _cache[272] || (_cache[272] = [\n                        _createElementVNode(\"svg\", {\n                          width: \"12\",\n                          height: \"12\",\n                          viewBox: \"0 0 24 24\",\n                          fill: \"none\",\n                          stroke: \"currentColor\",\n                          \"stroke-width\": \"2.4\",\n                          \"stroke-linecap\": \"round\"\n                        }, [\n                          _createElementVNode(\"path\", { d: \"m15 5-7 7 7 7\" })\n                        ], -1 /* CACHED */),\n                        _createTextVNode(\"Mijn onderzoeken\", -1 /* CACHED */)\n                      ])),\n                      _cache[274] || (_cache[274] = _createTextVNode()),\n                      _createElementVNode(\"h1\", _hoisted_262, [\n                        ($setup.dcrt.shows($setup.dcv.rs?.title))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_263, _toDisplayString($setup.dcv.rs?.title), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ]),\n                      _cache[275] || (_cache[275] = _createTextVNode()),\n                      _createElementVNode(\"span\", _hoisted_264, [\n                        ($setup.dcrt.shows($setup.dcv.rs?.meta))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_265, _toDisplayString($setup.dcv.rs?.meta), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true),\n                        _cache[273] || (_cache[273] = _createTextVNode()),\n                        ($setup.dcv.rs?.cin)\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_266, \"Cinergie Twente\"))\n                          : _createCommentVNode(\"v-if\", true)\n                      ]),\n                      _cache[276] || (_cache[276] = _createTextVNode()),\n                      ($setup.dcv.rs?.note)\n                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_267, [\n                            ($setup.dcrt.shows($setup.dcv.rs?.note))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_268, _toDisplayString($setup.dcv.rs?.note), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ]))\n                        : _createCommentVNode(\"v-if\", true)\n                    ]),\n                    _cache[328] || (_cache[328] = _createTextVNode()),\n                    ($setup.dcv.rs?.noUses)\n                      ? (_openBlock(), _createElementBlock(\"div\", _hoisted_269, _cache[277] || (_cache[277] = [\n                          _createElementVNode(\"span\", { style: {\"font\":\"700 16px/1.2 var(--font-body)\"} }, \"Nog niet aangehaald\", -1 /* CACHED */),\n                          _createTextVNode(),\n                          _createElementVNode(\"span\", { style: {\"font\":\"400 14px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Dit onderzoek staat in de kennisbank en kan gebruikt worden, maar Kiek heeft het nog in geen enkel antwoord aangehaald. Zodra dat gebeurt, zie je hier het fragment.\", -1 /* CACHED */)\n                        ])))\n                      : _createCommentVNode(\"v-if\", true),\n                    _cache[329] || (_cache[329] = _createTextVNode()),\n                    ($setup.dcv.rs?.hasUses)\n                      ? (_openBlock(), _createElementBlock(\"div\", _hoisted_270, [\n                          _createElementVNode(\"div\", _hoisted_271, [\n                            _createElementVNode(\"div\", _hoisted_272, [\n                              _createElementVNode(\"div\", _hoisted_273, [\n                                _createElementVNode(\"span\", _hoisted_274, [\n                                  _cache[278] || (_cache[278] = _createTextVNode(\"Gebruiksmoment \", -1 /* CACHED */)),\n                                  ($setup.dcrt.shows($setup.dcv.use?.pos))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_275, _toDisplayString($setup.dcv.use?.pos), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true),\n                                  _cache[279] || (_cache[279] = _createTextVNode(\" van \", -1 /* CACHED */)),\n                                  ($setup.dcrt.shows($setup.dcv.use?.total))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_276, _toDisplayString($setup.dcv.use?.total), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ]),\n                                _cache[283] || (_cache[283] = _createTextVNode()),\n                                _createElementVNode(\"span\", _hoisted_277, [\n                                  _createElementVNode(\"button\", {\n                                    onClick: _cache[31] || (_cache[31] = (...args) => ($setup.dcv.use?.prev && $setup.dcv.use?.prev(...args))),\n                                    \"aria-label\": \"Vorig gebruiksmoment\",\n                                    style: _normalizeStyle($setup.dcrt.style(`width:36px;height:36px;border:none;border-radius:10px;background:var(--surface,#2A2260);color:inherit;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:${$setup.dcv.use?.prevOp ?? ''}`))\n                                  }, _cache[280] || (_cache[280] = [\n                                    _createElementVNode(\"svg\", {\n                                      width: \"14\",\n                                      height: \"14\",\n                                      viewBox: \"0 0 24 24\",\n                                      fill: \"none\",\n                                      stroke: \"currentColor\",\n                                      \"stroke-width\": \"2.2\",\n                                      \"stroke-linecap\": \"round\"\n                                    }, [\n                                      _createElementVNode(\"path\", { d: \"m15 5-7 7 7 7\" })\n                                    ], -1 /* CACHED */)\n                                  ]), 4 /* STYLE */),\n                                  _cache[282] || (_cache[282] = _createTextVNode()),\n                                  _createElementVNode(\"button\", {\n                                    onClick: _cache[32] || (_cache[32] = (...args) => ($setup.dcv.use?.next && $setup.dcv.use?.next(...args))),\n                                    \"aria-label\": \"Volgend gebruiksmoment\",\n                                    style: _normalizeStyle($setup.dcrt.style(`width:36px;height:36px;border:none;border-radius:10px;background:var(--surface,#2A2260);color:inherit;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:${$setup.dcv.use?.nextOp ?? ''}`))\n                                  }, _cache[281] || (_cache[281] = [\n                                    _createElementVNode(\"svg\", {\n                                      width: \"14\",\n                                      height: \"14\",\n                                      viewBox: \"0 0 24 24\",\n                                      fill: \"none\",\n                                      stroke: \"currentColor\",\n                                      \"stroke-width\": \"2.2\",\n                                      \"stroke-linecap\": \"round\"\n                                    }, [\n                                      _createElementVNode(\"path\", { d: \"m9 5 7 7-7 7\" })\n                                    ], -1 /* CACHED */)\n                                  ]), 4 /* STYLE */)\n                                ])\n                              ]),\n                              _cache[284] || (_cache[284] = _createTextVNode()),\n                              _createElementVNode(\"div\", _hoisted_278, [\n                                (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.rs?.uses), (u, $index) => {\n                                  return (_openBlock(), _createElementBlock(\"button\", {\n                                    key: $index,\n                                    class: \"app-scp3\",\n                                    onClick: u?.onClick,\n                                    \"aria-pressed\": $setup.dcrt.attr(u?.on),\n                                    style: _normalizeStyle($setup.dcrt.style(`border:none;border-radius:100px;background:${u?.pillBg ?? ''};color:${u?.pillColor ?? ''};padding:8px 14px;font:600 12px/1 var(--font-body);cursor:pointer;display:flex;align-items:center;gap:8px`))\n                                  }, [\n                                    ($setup.dcrt.shows(u?.date))\n                                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_280, _toDisplayString(u?.date), 1 /* TEXT */))\n                                      : _createCommentVNode(\"v-if\", true),\n                                    (u?.hasDot)\n                                      ? (_openBlock(), _createElementBlock(\"span\", {\n                                          key: 1,\n                                          style: _normalizeStyle($setup.dcrt.style(`width:6px;height:6px;border-radius:50%;background:${u?.dot ?? ''}`))\n                                        }, null, 4 /* STYLE */))\n                                      : _createCommentVNode(\"v-if\", true)\n                                  ], 12 /* STYLE, PROPS */, _hoisted_279))\n                                }), 128 /* KEYED_FRAGMENT */))\n                              ])\n                            ]),\n                            _cache[324] || (_cache[324] = _createTextVNode()),\n                            _createElementVNode(\"div\", _hoisted_281, [\n                              _createElementVNode(\"div\", _hoisted_282, [\n                                _createElementVNode(\"span\", _hoisted_283, [\n                                  ($setup.dcrt.shows($setup.dcv.use?.topic))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_284, _toDisplayString($setup.dcv.use?.topic), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ]),\n                                _cache[285] || (_cache[285] = _createTextVNode()),\n                                _createElementVNode(\"span\", {\n                                  style: _normalizeStyle($setup.dcrt.style(`border-radius:100px;background:${$setup.dcv.use?.stBg ?? ''};color:${$setup.dcv.use?.stColor ?? ''};padding:6px 10px;font:600 11px/1 var(--font-body);white-space:nowrap`))\n                                }, [\n                                  ($setup.dcrt.shows($setup.dcv.use?.status))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_285, _toDisplayString($setup.dcv.use?.status), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ], 4 /* STYLE */)\n                              ]),\n                              _cache[294] || (_cache[294] = _createTextVNode()),\n                              _createElementVNode(\"div\", _hoisted_286, [\n                                _cache[286] || (_cache[286] = _createElementVNode(\"span\", { style: {\"font\":\"600 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"De vraag (geanonimiseerd)\", -1 /* CACHED */)),\n                                _cache[287] || (_cache[287] = _createTextVNode()),\n                                _createElementVNode(\"span\", _hoisted_287, [\n                                  ($setup.dcrt.shows($setup.dcv.use?.context))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_288, _toDisplayString($setup.dcv.use?.context), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ])\n                              ]),\n                              _cache[295] || (_cache[295] = _createTextVNode()),\n                              _createElementVNode(\"div\", _hoisted_289, [\n                                _cache[289] || (_cache[289] = _createElementVNode(\"span\", { style: {\"font\":\"600 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Wat Kiek zei\", -1 /* CACHED */)),\n                                _cache[290] || (_cache[290] = _createTextVNode()),\n                                _createElementVNode(\"span\", _hoisted_290, [\n                                  ($setup.dcrt.shows($setup.dcv.use?.statement))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_291, _toDisplayString($setup.dcv.use?.statement), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true),\n                                  _cache[288] || (_cache[288] = _createTextVNode()),\n                                  _createElementVNode(\"span\", {\n                                    style: _normalizeStyle($setup.dcrt.style(`border-radius:100px;background:${$setup.dcv.use?.citeBg ?? ''};color:${$setup.dcv.use?.citeColor ?? ''};padding:3px 8px;font:700 11px/1 var(--font-body);white-space:nowrap;vertical-align:2px`))\n                                  }, [\n                                    ($setup.dcrt.shows($setup.dcv.use?.citeLabel))\n                                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_292, _toDisplayString($setup.dcv.use?.citeLabel), 1 /* TEXT */))\n                                      : _createCommentVNode(\"v-if\", true)\n                                  ], 4 /* STYLE */)\n                                ])\n                              ]),\n                              _cache[296] || (_cache[296] = _createTextVNode()),\n                              _createElementVNode(\"div\", _hoisted_293, [\n                                _createElementVNode(\"span\", _hoisted_294, [\n                                  _cache[291] || (_cache[291] = _createTextVNode(\"Uit jouw onderzoek · \", -1 /* CACHED */)),\n                                  ($setup.dcrt.shows($setup.dcv.use?.loc))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_295, _toDisplayString($setup.dcv.use?.loc), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ]),\n                                _cache[292] || (_cache[292] = _createTextVNode()),\n                                _createElementVNode(\"span\", _hoisted_296, [\n                                  ($setup.dcrt.shows($setup.dcv.use?.quote))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_297, _toDisplayString($setup.dcv.use?.quote), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ]),\n                                _cache[293] || (_cache[293] = _createTextVNode()),\n                                _createElementVNode(\"span\", _hoisted_298, [\n                                  ($setup.dcrt.shows($setup.dcv.use?.version))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_299, _toDisplayString($setup.dcv.use?.version), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ])\n                              ]),\n                              _cache[297] || (_cache[297] = _createTextVNode()),\n                              _cache[298] || (_cache[298] = _createElementVNode(\"span\", { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Je ziet alleen dit fragment. Het volledige gesprek en gegevens van de gebruiker of het bedrijf zijn niet zichtbaar.\", -1 /* CACHED */))\n                            ]),\n                            _cache[325] || (_cache[325] = _createTextVNode()),\n                            _createElementVNode(\"div\", _hoisted_300, [\n                              _cache[304] || (_cache[304] = _createElementVNode(\"div\", { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"4px\"} }, [\n                                _createElementVNode(\"span\", { style: {\"font\":\"700 16px/1.2 var(--font-body)\"} }, \"Jouw feedback\"),\n                                _createTextVNode(),\n                                _createElementVNode(\"span\", { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Klopt de uitspraak? Ondersteunt de passage de conclusie? Wat moet anders?\")\n                              ], -1 /* CACHED */)),\n                              _cache[305] || (_cache[305] = _createTextVNode()),\n                              _createElementVNode(\"textarea\", {\n                                value: $setup.dcv.fbDraft ?? '',\n                                onInput: _cache[33] || (_cache[33] = (...args) => ($setup.dcv.onFbDraft && $setup.dcv.onFbDraft(...args))),\n                                rows: \"4\",\n                                \"aria-label\": \"Jouw feedback op dit gebruik\",\n                                placeholder: \"Bijvoorbeeld: het onderzoek is gedaan in kantoren, niet in productiehallen.\",\n                                style: {\"width\":\"100%\",\"border\":\"none\",\"outline\":\"none\",\"resize\":\"vertical\",\"border-radius\":\"12px\",\"background\":\"var(--bg,#1F184E)\",\"color\":\"inherit\",\"padding\":\"14px\",\"font\":\"400 14px/1.45 var(--font-body)\"}\n                              }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_301),\n                              _cache[306] || (_cache[306] = _createTextVNode()),\n                              _createElementVNode(\"div\", _hoisted_302, [\n                                _cache[299] || (_cache[299] = _createElementVNode(\"span\", { style: {\"font\":\"600 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Label (optioneel)\", -1 /* CACHED */)),\n                                _cache[300] || (_cache[300] = _createTextVNode()),\n                                _createElementVNode(\"div\", _hoisted_303, [\n                                  (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.fbLabelOpts), (l, $index) => {\n                                    return (_openBlock(), _createElementBlock(\"button\", {\n                                      key: $index,\n                                      class: \"app-scp3\",\n                                      onClick: l?.onClick,\n                                      \"aria-pressed\": $setup.dcrt.attr(l?.on),\n                                      style: _normalizeStyle($setup.dcrt.style(`border:none;border-radius:100px;background:${l?.bg ?? ''};color:${l?.color ?? ''};padding:8px 14px;font:600 12px/1 var(--font-body);cursor:pointer`))\n                                    }, [\n                                      ($setup.dcrt.shows(l?.label))\n                                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_305, _toDisplayString(l?.label), 1 /* TEXT */))\n                                        : _createCommentVNode(\"v-if\", true)\n                                    ], 12 /* STYLE, PROPS */, _hoisted_304))\n                                  }), 128 /* KEYED_FRAGMENT */))\n                                ])\n                              ]),\n                              _cache[307] || (_cache[307] = _createTextVNode()),\n                              _createElementVNode(\"div\", _hoisted_306, [\n                                _cache[302] || (_cache[302] = _createElementVNode(\"span\", { style: {\"font\":\"400 11px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\",\"max-width\":\"440px\"} }, \"Kiek leert niet automatisch van iedere opmerking. Een beheerder bekijkt je feedback en legt vast wat ermee gebeurt.\", -1 /* CACHED */)),\n                                _cache[303] || (_cache[303] = _createTextVNode()),\n                                _createElementVNode(\"span\", _hoisted_307, [\n                                  ($setup.dcv.use?.hasNext)\n                                    ? (_openBlock(), _createElementBlock(\"button\", {\n                                        key: 0,\n                                        class: \"app-scp1\",\n                                        onClick: _cache[34] || (_cache[34] = (...args) => ($setup.dcv.saveFb && $setup.dcv.saveFb(...args))),\n                                        style: _normalizeStyle($setup.dcrt.style(`height:46px;border:none;border-radius:12px;background:none;box-shadow:inset 0 0 0 1px #7D80FF;color:inherit;padding:0 18px;font:500 14px var(--font-body);cursor:pointer;opacity:${$setup.dcv.fbSendOpacity ?? ''}`))\n                                      }, \"Opslaan\", 4 /* STYLE */))\n                                    : _createCommentVNode(\"v-if\", true),\n                                  _cache[301] || (_cache[301] = _createTextVNode()),\n                                  _createElementVNode(\"button\", {\n                                    class: \"app-scp2\",\n                                    onClick: _cache[35] || (_cache[35] = (...args) => ($setup.dcv.saveFbNext && $setup.dcv.saveFbNext(...args))),\n                                    style: _normalizeStyle($setup.dcrt.style(`height:46px;border:none;border-radius:12px;background:#7D80FF;color:#FFFFFF;padding:0 22px;font:500 14px var(--font-body);cursor:pointer;opacity:${$setup.dcv.fbSendOpacity ?? ''}`))\n                                  }, [\n                                    ($setup.dcrt.shows($setup.dcv.use?.saveLabel))\n                                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_308, _toDisplayString($setup.dcv.use?.saveLabel), 1 /* TEXT */))\n                                      : _createCommentVNode(\"v-if\", true)\n                                  ], 4 /* STYLE */)\n                                ])\n                              ])\n                            ]),\n                            _cache[326] || (_cache[326] = _createTextVNode()),\n                            _createElementVNode(\"div\", _hoisted_309, [\n                              _cache[316] || (_cache[316] = _createElementVNode(\"span\", { style: {\"font\":\"700 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Feedback op dit gebruik\", -1 /* CACHED */)),\n                              _cache[317] || (_cache[317] = _createTextVNode()),\n                              ($setup.dcv.use?.noFb)\n                                ? (_openBlock(), _createElementBlock(\"span\", _hoisted_310, \"Nog geen feedback van onderzoekers.\"))\n                                : _createCommentVNode(\"v-if\", true),\n                              _cache[318] || (_cache[318] = _createTextVNode()),\n                              (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.use?.fb), (f, $index) => {\n                                return (_openBlock(), _createElementBlock(\"div\", {\n                                  key: $index,\n                                  style: {\"border-radius\":\"12px\",\"box-shadow\":\"inset 0 0 0 1px var(--hair,rgba(255,255,255,0.12))\",\"padding\":\"16px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"10px\"}\n                                }, [\n                                  _createElementVNode(\"div\", _hoisted_311, [\n                                    _createElementVNode(\"span\", _hoisted_312, [\n                                      _createElementVNode(\"span\", _hoisted_313, [\n                                        ($setup.dcrt.shows(f?.who))\n                                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_314, _toDisplayString(f?.who), 1 /* TEXT */))\n                                          : _createCommentVNode(\"v-if\", true)\n                                      ]),\n                                      _createElementVNode(\"span\", _hoisted_315, [\n                                        ($setup.dcrt.shows(f?.date))\n                                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_316, _toDisplayString(f?.date), 1 /* TEXT */))\n                                          : _createCommentVNode(\"v-if\", true)\n                                      ]),\n                                      _cache[308] || (_cache[308] = _createTextVNode()),\n                                      (f?.hasLabel)\n                                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_317, [\n                                            ($setup.dcrt.shows(f?.label))\n                                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_318, _toDisplayString(f?.label), 1 /* TEXT */))\n                                              : _createCommentVNode(\"v-if\", true)\n                                          ]))\n                                        : _createCommentVNode(\"v-if\", true)\n                                    ]),\n                                    _cache[309] || (_cache[309] = _createTextVNode()),\n                                    _createElementVNode(\"span\", {\n                                      style: _normalizeStyle($setup.dcrt.style(`border-radius:100px;background:${f?.stBg ?? ''};color:${f?.stColor ?? ''};padding:6px 10px;font:600 11px/1 var(--font-body);white-space:nowrap`))\n                                    }, [\n                                      ($setup.dcrt.shows(f?.status))\n                                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_319, _toDisplayString(f?.status), 1 /* TEXT */))\n                                        : _createCommentVNode(\"v-if\", true)\n                                    ], 4 /* STYLE */)\n                                  ]),\n                                  _cache[314] || (_cache[314] = _createTextVNode()),\n                                  _createElementVNode(\"span\", _hoisted_320, [\n                                    ($setup.dcrt.shows(f?.text))\n                                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_321, _toDisplayString(f?.text), 1 /* TEXT */))\n                                      : _createCommentVNode(\"v-if\", true)\n                                  ]),\n                                  _cache[315] || (_cache[315] = _createTextVNode()),\n                                  (f?.hasReply)\n                                    ? (_openBlock(), _createElementBlock(\"div\", _hoisted_322, [\n                                        _cache[311] || (_cache[311] = _createElementVNode(\"span\", { style: {\"font\":\"700 11px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Terugkoppeling beheerder\", -1 /* CACHED */)),\n                                        _cache[312] || (_cache[312] = _createTextVNode()),\n                                        _createElementVNode(\"span\", _hoisted_323, [\n                                          ($setup.dcrt.shows(f?.reply))\n                                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_324, _toDisplayString(f?.reply), 1 /* TEXT */))\n                                            : _createCommentVNode(\"v-if\", true)\n                                        ]),\n                                        _cache[313] || (_cache[313] = _createTextVNode()),\n                                        (f?.hasChange)\n                                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_325, [\n                                              _cache[310] || (_cache[310] = _createTextVNode(\"Aangepast: \", -1 /* CACHED */)),\n                                              ($setup.dcrt.shows(f?.change))\n                                                ? (_openBlock(), _createElementBlock(\"span\", _hoisted_326, _toDisplayString(f?.change), 1 /* TEXT */))\n                                                : _createCommentVNode(\"v-if\", true)\n                                            ]))\n                                          : _createCommentVNode(\"v-if\", true)\n                                      ]))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ]))\n                              }), 128 /* KEYED_FRAGMENT */))\n                            ]),\n                            _cache[327] || (_cache[327] = _createTextVNode()),\n                            _createElementVNode(\"div\", _hoisted_327, [\n                              _createElementVNode(\"button\", {\n                                class: \"app-scp1\",\n                                onClick: _cache[36] || (_cache[36] = (...args) => ($setup.dcv.use?.prev && $setup.dcv.use?.prev(...args))),\n                                style: _normalizeStyle($setup.dcrt.style(`height:44px;border:none;border-radius:12px;background:none;box-shadow:inset 0 0 0 1px var(--hair,rgba(255,255,255,0.12));color:inherit;padding:0 16px;font:500 14px var(--font-body);cursor:pointer;display:flex;align-items:center;gap:8px;visibility:${$setup.dcv.use?.prevVis ?? ''}`))\n                              }, _cache[319] || (_cache[319] = [\n                                _createElementVNode(\"svg\", {\n                                  width: \"14\",\n                                  height: \"14\",\n                                  viewBox: \"0 0 24 24\",\n                                  fill: \"none\",\n                                  stroke: \"currentColor\",\n                                  \"stroke-width\": \"2.2\",\n                                  \"stroke-linecap\": \"round\"\n                                }, [\n                                  _createElementVNode(\"path\", { d: \"m15 5-7 7 7 7\" })\n                                ], -1 /* CACHED */),\n                                _createTextVNode(\"Vorige\", -1 /* CACHED */)\n                              ]), 4 /* STYLE */),\n                              _cache[322] || (_cache[322] = _createTextVNode()),\n                              _createElementVNode(\"span\", _hoisted_328, [\n                                ($setup.dcrt.shows($setup.dcv.use?.pos))\n                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_329, _toDisplayString($setup.dcv.use?.pos), 1 /* TEXT */))\n                                  : _createCommentVNode(\"v-if\", true),\n                                _cache[320] || (_cache[320] = _createTextVNode(\" van \", -1 /* CACHED */)),\n                                ($setup.dcrt.shows($setup.dcv.use?.total))\n                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_330, _toDisplayString($setup.dcv.use?.total), 1 /* TEXT */))\n                                  : _createCommentVNode(\"v-if\", true)\n                              ]),\n                              _cache[323] || (_cache[323] = _createTextVNode()),\n                              _createElementVNode(\"button\", {\n                                class: \"app-scp1\",\n                                onClick: _cache[37] || (_cache[37] = (...args) => ($setup.dcv.use?.next && $setup.dcv.use?.next(...args))),\n                                style: _normalizeStyle($setup.dcrt.style(`height:44px;border:none;border-radius:12px;background:none;box-shadow:inset 0 0 0 1px var(--hair,rgba(255,255,255,0.12));color:inherit;padding:0 16px;font:500 14px var(--font-body);cursor:pointer;display:flex;align-items:center;gap:8px;visibility:${$setup.dcv.use?.nextVis ?? ''}`))\n                              }, _cache[321] || (_cache[321] = [\n                                _createTextVNode(\"Volgende\", -1 /* CACHED */),\n                                _createElementVNode(\"svg\", {\n                                  width: \"14\",\n                                  height: \"14\",\n                                  viewBox: \"0 0 24 24\",\n                                  fill: \"none\",\n                                  stroke: \"currentColor\",\n                                  \"stroke-width\": \"2.2\",\n                                  \"stroke-linecap\": \"round\"\n                                }, [\n                                  _createElementVNode(\"path\", { d: \"m9 5 7 7-7 7\" })\n                                ], -1 /* CACHED */)\n                              ]), 4 /* STYLE */)\n                            ])\n                          ])\n                        ]))\n                      : _createCommentVNode(\"v-if\", true)\n                  ]))\n                : _createCommentVNode(\"v-if\", true)\n            ], 4 /* STYLE */))\n          : _createCommentVNode(\"v-if\", true),\n        _cache[415] || (_cache[415] = _createTextVNode()),\n        ($setup.dcv.isPub)\n          ? (_openBlock(), _createElementBlock(\"div\", {\n              key: 6,\n              style: _normalizeStyle($setup.dcrt.style(`flex:1;overflow:auto;padding:${$setup.dcv.pagePad ?? ''}`))\n            }, [\n              _createElementVNode(\"div\", _hoisted_331, [\n                _cache[340] || (_cache[340] = _createElementVNode(\"div\", null, [\n                  _createElementVNode(\"h1\", { style: {\"margin\":\"0\",\"font\":\"800 48px/1 var(--font-display)\",\"letter-spacing\":\"-0.01em\"} }, \"Publicaties\"),\n                  _createTextVNode(),\n                  _createElementVNode(\"p\", { style: {\"margin\":\"8px 0 0\",\"font\":\"400 14px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\",\"max-width\":\"620px\"} }, \"Het onderzoek waar Kiek uit put. Publieke bronnen van Twentse kennisinstellingen, met de versie die Kiek nu gebruikt.\")\n                ], -1 /* CACHED */)),\n                _cache[341] || (_cache[341] = _createTextVNode()),\n                _createElementVNode(\"div\", _hoisted_332, [\n                  _createElementVNode(\"label\", _hoisted_333, [\n                    (_openBlock(), _createElementBlock(\"svg\", _hoisted_334, _cache[331] || (_cache[331] = [\n                      _createElementVNode(\"circle\", {\n                        cx: \"11\",\n                        cy: \"11\",\n                        r: \"7.5\"\n                      }, null, -1 /* CACHED */),\n                      _createElementVNode(\"path\", { d: \"m20.5 20.5-4.2-4.2\" }, null, -1 /* CACHED */)\n                    ]))),\n                    _cache[332] || (_cache[332] = _createTextVNode()),\n                    _createElementVNode(\"input\", {\n                      value: $setup.dcv.pubQ ?? '',\n                      onInput: _cache[38] || (_cache[38] = (...args) => ($setup.dcv.onPubQ && $setup.dcv.onPubQ(...args))),\n                      placeholder: \"Zoek op titel, auteur of thema\",\n                      \"aria-label\": \"Zoek in publicaties\",\n                      style: {\"flex\":\"1\",\"min-width\":\"0\",\"border\":\"none\",\"outline\":\"none\",\"background\":\"none\",\"color\":\"inherit\",\"font\":\"400 15px var(--font-body)\"}\n                    }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_335)\n                  ]),\n                  _cache[333] || (_cache[333] = _createTextVNode()),\n                  _createElementVNode(\"div\", _hoisted_336, [\n                    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.pubFilters), (f, $index) => {\n                      return (_openBlock(), _createElementBlock(\"button\", {\n                        key: $index,\n                        class: \"app-scp3\",\n                        onClick: f?.onClick,\n                        \"aria-pressed\": $setup.dcrt.attr(f?.on),\n                        style: _normalizeStyle($setup.dcrt.style(`border:none;border-radius:100px;background:${f?.bg ?? ''};color:${f?.color ?? ''};padding:9px 14px;font:600 13px/1 var(--font-body);cursor:pointer`))\n                      }, [\n                        ($setup.dcrt.shows(f?.label))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_338, _toDisplayString(f?.label), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ], 12 /* STYLE, PROPS */, _hoisted_337))\n                    }), 128 /* KEYED_FRAGMENT */))\n                  ])\n                ]),\n                _cache[342] || (_cache[342] = _createTextVNode()),\n                _createElementVNode(\"span\", _hoisted_339, [\n                  ($setup.dcrt.shows($setup.dcv.pubCount))\n                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_340, _toDisplayString($setup.dcv.pubCount), 1 /* TEXT */))\n                    : _createCommentVNode(\"v-if\", true)\n                ]),\n                _cache[343] || (_cache[343] = _createTextVNode()),\n                _createElementVNode(\"div\", _hoisted_341, [\n                  (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.pubList), (p, $index) => {\n                    return (_openBlock(), _createElementBlock(\"button\", {\n                      key: $index,\n                      class: \"app-scp3\",\n                      onClick: p?.onClick,\n                      style: {\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"color\":\"inherit\",\"padding\":\"18px 20px\",\"text-align\":\"left\",\"cursor\":\"pointer\",\"display\":\"grid\",\"grid-template-columns\":\"minmax(0,1fr) auto\",\"gap\":\"8px 24px\",\"align-items\":\"center\"}\n                    }, [\n                      _createElementVNode(\"span\", _hoisted_343, [\n                        _createElementVNode(\"span\", _hoisted_344, [\n                          ($setup.dcrt.shows(p?.title))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_345, _toDisplayString(p?.title), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ]),\n                        _cache[334] || (_cache[334] = _createTextVNode()),\n                        _createElementVNode(\"span\", _hoisted_346, [\n                          ($setup.dcrt.shows(p?.meta))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_347, _toDisplayString(p?.meta), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true),\n                          (p?.cin)\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_348, \"Cinergie Twente\"))\n                            : _createCommentVNode(\"v-if\", true)\n                        ]),\n                        _cache[335] || (_cache[335] = _createTextVNode()),\n                        _createElementVNode(\"span\", _hoisted_349, [\n                          ($setup.dcrt.shows(p?.themes))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_350, _toDisplayString(p?.themes), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ])\n                      ]),\n                      _cache[337] || (_cache[337] = _createTextVNode()),\n                      _createElementVNode(\"span\", {\n                        style: _normalizeStyle($setup.dcrt.style(`display:flex;align-items:center;gap:12px;font:400 12px/1.4 var(--font-body);color:${p?.usedColor ?? ''};text-align:right`))\n                      }, [\n                        ($setup.dcrt.shows(p?.used))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_351, _toDisplayString(p?.used), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true),\n                        (_openBlock(), _createElementBlock(\"svg\", _hoisted_352, _cache[336] || (_cache[336] = [\n                          _createElementVNode(\"path\", { d: \"m9 5 7 7-7 7\" }, null, -1 /* CACHED */)\n                        ])))\n                      ], 4 /* STYLE */)\n                    ], 8 /* PROPS */, _hoisted_342))\n                  }), 128 /* KEYED_FRAGMENT */)),\n                  _cache[339] || (_cache[339] = _createTextVNode()),\n                  ($setup.dcv.pubEmpty)\n                    ? (_openBlock(), _createElementBlock(\"div\", _hoisted_353, _cache[338] || (_cache[338] = [\n                        _createElementVNode(\"span\", { style: {\"font\":\"700 15px var(--font-body)\"} }, \"Geen publicaties gevonden\", -1 /* CACHED */),\n                        _createTextVNode(),\n                        _createElementVNode(\"span\", { style: {\"font\":\"400 13px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Probeer een andere zoekterm of filter. Mist er onderzoek? Vraag Kiek ernaar; dan zie je of het onderwerp door bronnen wordt gedekt.\", -1 /* CACHED */)\n                      ])))\n                    : _createCommentVNode(\"v-if\", true)\n                ])\n              ])\n            ], 4 /* STYLE */))\n          : _createCommentVNode(\"v-if\", true),\n        _cache[416] || (_cache[416] = _createTextVNode()),\n        ($setup.dcv.isHist)\n          ? (_openBlock(), _createElementBlock(\"div\", {\n              key: 7,\n              style: _normalizeStyle($setup.dcrt.style(`flex:1;overflow:auto;padding:${$setup.dcv.pagePad ?? ''}`))\n            }, [\n              _createElementVNode(\"div\", _hoisted_354, [\n                _cache[355] || (_cache[355] = _createElementVNode(\"div\", { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"flex-end\",\"gap\":\"16px\",\"flex-wrap\":\"wrap\"} }, [\n                  _createElementVNode(\"div\", null, [\n                    _createElementVNode(\"h1\", { style: {\"margin\":\"0\",\"font\":\"800 48px/1 var(--font-display)\",\"letter-spacing\":\"-0.01em\"} }, \"Gesprekken\"),\n                    _createTextVNode(),\n                    _createElementVNode(\"p\", { style: {\"margin\":\"8px 0 0\",\"font\":\"400 14px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\",\"max-width\":\"620px\"} }, \"Al je gesprekken. Afronden vergrendelt niets: je kunt elk gesprek heropenen en verder praten.\")\n                  ])\n                ], -1 /* CACHED */)),\n                _cache[356] || (_cache[356] = _createTextVNode()),\n                _createElementVNode(\"div\", _hoisted_355, [\n                  _cache[344] || (_cache[344] = _createElementVNode(\"div\", { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\",\"max-width\":\"520px\"} }, [\n                    _createElementVNode(\"h2\", { style: {\"margin\":\"0\",\"font\":\"700 20px/1.2 var(--font-body)\"} }, \"Een nieuw gesprek starten?\"),\n                    _createTextVNode(),\n                    _createElementVNode(\"p\", { style: {\"margin\":\"0\",\"font\":\"400 14px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Vertel Kiek wat je van plan bent. Kiek stelt de juiste vragen en koppelt Twentse kennis aan je keuze.\")\n                  ], -1 /* CACHED */)),\n                  _cache[345] || (_cache[345] = _createTextVNode()),\n                  _createElementVNode(\"button\", {\n                    class: \"app-scp2\",\n                    onClick: _cache[39] || (_cache[39] = (...args) => ($setup.dcv.goNieuw && $setup.dcv.goNieuw(...args))),\n                    style: {\"height\":\"48px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"#7D80FF\",\"color\":\"#FFFFFF\",\"padding\":\"0 24px\",\"font\":\"500 14px var(--font-body)\",\"cursor\":\"pointer\"}\n                  }, \"Vraag aan Kiek\")\n                ]),\n                _cache[357] || (_cache[357] = _createTextVNode()),\n                _createElementVNode(\"div\", _hoisted_356, [\n                  _createElementVNode(\"label\", _hoisted_357, [\n                    (_openBlock(), _createElementBlock(\"svg\", _hoisted_358, _cache[346] || (_cache[346] = [\n                      _createElementVNode(\"circle\", {\n                        cx: \"11\",\n                        cy: \"11\",\n                        r: \"7.5\"\n                      }, null, -1 /* CACHED */),\n                      _createElementVNode(\"path\", { d: \"m20.5 20.5-4.2-4.2\" }, null, -1 /* CACHED */)\n                    ]))),\n                    _cache[347] || (_cache[347] = _createTextVNode()),\n                    _createElementVNode(\"input\", {\n                      value: $setup.dcv.histQ ?? '',\n                      onInput: _cache[40] || (_cache[40] = (...args) => ($setup.dcv.onHistQ && $setup.dcv.onHistQ(...args))),\n                      placeholder: \"Zoek in je gesprekken\",\n                      \"aria-label\": \"Zoek in gesprekken\",\n                      style: {\"flex\":\"1\",\"min-width\":\"0\",\"border\":\"none\",\"outline\":\"none\",\"background\":\"none\",\"color\":\"inherit\",\"font\":\"400 15px var(--font-body)\"}\n                    }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_359)\n                  ]),\n                  _cache[348] || (_cache[348] = _createTextVNode()),\n                  _createElementVNode(\"div\", _hoisted_360, [\n                    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.histFilters), (f, $index) => {\n                      return (_openBlock(), _createElementBlock(\"button\", {\n                        key: $index,\n                        onClick: f?.onClick,\n                        \"aria-pressed\": $setup.dcrt.attr(f?.on),\n                        style: _normalizeStyle($setup.dcrt.style(`height:38px;border:none;border-radius:9px;background:${f?.bg ?? ''};color:${f?.color ?? ''};padding:0 14px;font:500 13px var(--font-body);cursor:pointer`))\n                      }, [\n                        ($setup.dcrt.shows(f?.label))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_362, _toDisplayString(f?.label), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ], 12 /* STYLE, PROPS */, _hoisted_361))\n                    }), 128 /* KEYED_FRAGMENT */))\n                  ])\n                ]),\n                _cache[358] || (_cache[358] = _createTextVNode()),\n                (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.histGroups), (g, $index) => {\n                  return (_openBlock(), _createElementBlock(\"div\", {\n                    key: $index,\n                    style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\"}\n                  }, [\n                    _createElementVNode(\"span\", _hoisted_363, [\n                      ($setup.dcrt.shows(g?.label))\n                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_364, _toDisplayString(g?.label), 1 /* TEXT */))\n                        : _createCommentVNode(\"v-if\", true)\n                    ]),\n                    _cache[353] || (_cache[353] = _createTextVNode()),\n                    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list(g?.items), (c, $index) => {\n                      return (_openBlock(), _createElementBlock(\"div\", {\n                        key: $index,\n                        style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"16px 20px\",\"display\":\"grid\",\"grid-template-columns\":\"minmax(0,1fr) auto\",\"gap\":\"8px 20px\",\"align-items\":\"center\"}\n                      }, [\n                        _createElementVNode(\"button\", {\n                          class: \"app-scp9\",\n                          onClick: c?.onOpen,\n                          style: {\"border\":\"none\",\"background\":\"none\",\"color\":\"inherit\",\"padding\":\"0\",\"text-align\":\"left\",\"cursor\":\"pointer\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\",\"min-width\":\"0\"}\n                        }, [\n                          _createElementVNode(\"span\", _hoisted_366, [\n                            ($setup.dcrt.shows(c?.title))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_367, _toDisplayString(c?.title), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ]),\n                          _cache[349] || (_cache[349] = _createTextVNode()),\n                          _createElementVNode(\"span\", _hoisted_368, [\n                            ($setup.dcrt.shows(c?.meta))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_369, _toDisplayString(c?.meta), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ])\n                        ], 8 /* PROPS */, _hoisted_365),\n                        _cache[352] || (_cache[352] = _createTextVNode()),\n                        _createElementVNode(\"span\", _hoisted_370, [\n                          _createElementVNode(\"span\", {\n                            style: _normalizeStyle($setup.dcrt.style(`border-radius:100px;background:var(--surface2,rgba(125,128,255,0.12));color:${c?.stColor ?? ''};padding:7px 11px;font:600 11px/1 var(--font-body);white-space:nowrap`))\n                          }, [\n                            ($setup.dcrt.shows(c?.status))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_371, _toDisplayString(c?.status), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ], 4 /* STYLE */),\n                          _cache[350] || (_cache[350] = _createTextVNode()),\n                          (c?.hasReport)\n                            ? (_openBlock(), _createElementBlock(\"button\", {\n                                key: 0,\n                                class: \"app-scp1\",\n                                onClick: c?.onReport,\n                                style: {\"height\":\"36px\",\"border\":\"none\",\"border-radius\":\"10px\",\"background\":\"none\",\"box-shadow\":\"inset 0 0 0 1px #7D80FF\",\"color\":\"inherit\",\"padding\":\"0 14px\",\"font\":\"500 13px var(--font-body)\",\"cursor\":\"pointer\"}\n                              }, \"Verslag\", 8 /* PROPS */, _hoisted_372))\n                            : _createCommentVNode(\"v-if\", true),\n                          _cache[351] || (_cache[351] = _createTextVNode()),\n                          _createElementVNode(\"button\", {\n                            class: \"app-scp3\",\n                            onClick: c?.onOpen,\n                            style: {\"height\":\"36px\",\"border\":\"none\",\"border-radius\":\"10px\",\"background\":\"var(--surface2,rgba(125,128,255,0.12))\",\"color\":\"inherit\",\"padding\":\"0 14px\",\"font\":\"500 13px var(--font-body)\",\"cursor\":\"pointer\"}\n                          }, \"Verder praten\", 8 /* PROPS */, _hoisted_373)\n                        ])\n                      ]))\n                    }), 128 /* KEYED_FRAGMENT */))\n                  ]))\n                }), 128 /* KEYED_FRAGMENT */)),\n                _cache[359] || (_cache[359] = _createTextVNode()),\n                ($setup.dcv.histEmpty)\n                  ? (_openBlock(), _createElementBlock(\"div\", _hoisted_374, _cache[354] || (_cache[354] = [\n                      _createElementVNode(\"span\", { style: {\"font\":\"700 15px var(--font-body)\"} }, \"Niets gevonden\", -1 /* CACHED */),\n                      _createTextVNode(),\n                      _createElementVNode(\"span\", { style: {\"font\":\"400 13px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Geen gesprekken die passen bij je zoekterm.\", -1 /* CACHED */)\n                    ])))\n                  : _createCommentVNode(\"v-if\", true)\n              ])\n            ], 4 /* STYLE */))\n          : _createCommentVNode(\"v-if\", true),\n        _cache[417] || (_cache[417] = _createTextVNode()),\n        ($setup.dcv.isUitslag)\n          ? (_openBlock(), _createElementBlock(\"div\", {\n              key: 8,\n              style: _normalizeStyle($setup.dcrt.style(`flex:1;overflow:auto;padding:${$setup.dcv.pagePadNarrowTop ?? ''}`))\n            }, [\n              _createElementVNode(\"div\", _hoisted_375, [\n                _createElementVNode(\"div\", _hoisted_376, [\n                  _createElementVNode(\"div\", _hoisted_377, [\n                    _createElementVNode(\"h1\", _hoisted_378, [\n                      ($setup.dcrt.shows($setup.dcv.convTitle))\n                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_379, _toDisplayString($setup.dcv.convTitle), 1 /* TEXT */))\n                        : _createCommentVNode(\"v-if\", true)\n                    ]),\n                    _cache[360] || (_cache[360] = _createTextVNode()),\n                    _createElementVNode(\"p\", _hoisted_380, [\n                      ($setup.dcrt.shows($setup.dcv.convMeta))\n                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_381, _toDisplayString($setup.dcv.convMeta), 1 /* TEXT */))\n                        : _createCommentVNode(\"v-if\", true)\n                    ])\n                  ]),\n                  _cache[361] || (_cache[361] = _createTextVNode()),\n                  ($setup.dcv.headInsightBtn)\n                    ? (_openBlock(), _createElementBlock(\"button\", {\n                        key: 0,\n                        class: \"app-scp3\",\n                        onClick: _cache[41] || (_cache[41] = (...args) => ($setup.dcv.openSide && $setup.dcv.openSide(...args))),\n                        style: {\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"color\":\"inherit\",\"padding\":\"12px 18px\",\"font\":\"600 14px var(--font-body)\",\"cursor\":\"pointer\",\"flex-shrink\":\"0\"}\n                      }, \"Inzicht & bronnen\"))\n                    : _createCommentVNode(\"v-if\", true)\n                ]),\n                _cache[408] || (_cache[408] = _createTextVNode()),\n                ($setup.dcv.reportBusy)\n                  ? (_openBlock(), _createElementBlock(\"div\", _hoisted_382, _cache[362] || (_cache[362] = [\n                      _createElementVNode(\"span\", { style: {\"font\":\"700 16px var(--font-body)\",\"animation\":\"kiekPulse 1.4s ease-in-out infinite\"} }, \"Gespreksverslag wordt gemaakt…\", -1 /* CACHED */),\n                      _createTextVNode(),\n                      _createElementVNode(\"span\", { style: {\"font\":\"400 14px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Kiek gebruikt dezelfde bronnen en bronversies als in het gesprek.\", -1 /* CACHED */)\n                    ])))\n                  : _createCommentVNode(\"v-if\", true),\n                _cache[409] || (_cache[409] = _createTextVNode()),\n                ($setup.dcv.reportReady)\n                  ? (_openBlock(), _createElementBlock(\"div\", _hoisted_383, [\n                      _createElementVNode(\"div\", _hoisted_384, [\n                        _createElementVNode(\"div\", _hoisted_385, [\n                          _createElementVNode(\"button\", {\n                            class: \"app-scp8\",\n                            onClick: _cache[42] || (_cache[42] = (...args) => ($setup.dcv.backToConv && $setup.dcv.backToConv(...args))),\n                            style: {\"border\":\"none\",\"background\":\"none\",\"color\":\"#7D80FF\",\"padding\":\"0\",\"text-align\":\"left\",\"cursor\":\"pointer\",\"font\":\"400 12px/1.4 var(--font-body)\",\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"4px\"}\n                          }, _cache[363] || (_cache[363] = [\n                            _createElementVNode(\"svg\", {\n                              width: \"12\",\n                              height: \"12\",\n                              viewBox: \"0 0 24 24\",\n                              fill: \"none\",\n                              stroke: \"currentColor\",\n                              \"stroke-width\": \"2.4\",\n                              \"stroke-linecap\": \"round\"\n                            }, [\n                              _createElementVNode(\"path\", { d: \"m15 5-7 7 7 7\" })\n                            ], -1 /* CACHED */),\n                            _createTextVNode(\"Terug naar gesprek\\n                  \", -1 /* CACHED */)\n                          ])),\n                          _cache[364] || (_cache[364] = _createTextVNode()),\n                          _createElementVNode(\"h2\", _hoisted_386, [\n                            ($setup.dcrt.shows($setup.dcv.report?.title))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_387, _toDisplayString($setup.dcv.report?.title), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ]),\n                          _cache[365] || (_cache[365] = _createTextVNode()),\n                          _createElementVNode(\"span\", _hoisted_388, [\n                            ($setup.dcrt.shows($setup.dcv.report?.meta))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_389, _toDisplayString($setup.dcv.report?.meta), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ])\n                        ]),\n                        _cache[367] || (_cache[367] = _createTextVNode()),\n                        _createElementVNode(\"div\", _hoisted_390, [\n                          _createElementVNode(\"button\", {\n                            class: \"app-scpa\",\n                            onClick: _cache[43] || (_cache[43] = (...args) => ($setup.dcv.share && $setup.dcv.share(...args))),\n                            style: {\"height\":\"52px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"#F4F0E9\",\"color\":\"#1F184E\",\"padding\":\"0 24px\",\"font\":\"500 14px var(--font-body)\",\"cursor\":\"pointer\"}\n                          }, \"Delen\"),\n                          _cache[366] || (_cache[366] = _createTextVNode()),\n                          _createElementVNode(\"button\", {\n                            class: \"app-scp2\",\n                            onClick: _cache[44] || (_cache[44] = (...args) => ($setup.dcv.exportPdf && $setup.dcv.exportPdf(...args))),\n                            style: {\"height\":\"52px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"#7D80FF\",\"color\":\"#FFFFFF\",\"padding\":\"0 24px\",\"font\":\"500 14px var(--font-body)\",\"cursor\":\"pointer\"}\n                          }, [\n                            ($setup.dcrt.shows($setup.dcv.exportLabel))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_391, _toDisplayString($setup.dcv.exportLabel), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ])\n                        ])\n                      ]),\n                      _cache[402] || (_cache[402] = _createTextVNode()),\n                      _createElementVNode(\"div\", _hoisted_392, [\n                        _createElementVNode(\"div\", _hoisted_393, [\n                          _cache[368] || (_cache[368] = _createElementVNode(\"span\", { style: {\"font\":\"700 16px/1 var(--font-body)\"} }, \"Jouw impact\", -1 /* CACHED */)),\n                          _cache[369] || (_cache[369] = _createTextVNode()),\n                          _createElementVNode(\"span\", _hoisted_394, [\n                            ($setup.dcrt.shows($setup.dcv.report?.scenario))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_395, _toDisplayString($setup.dcv.report?.scenario), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ])\n                        ]),\n                        _cache[372] || (_cache[372] = _createTextVNode()),\n                        (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.report?.rows), (r, $index) => {\n                          return (_openBlock(), _createElementBlock(\"div\", {\n                            key: $index,\n                            style: {\"display\":\"grid\",\"grid-template-columns\":\"116px 1fr auto\",\"gap\":\"12px\",\"align-items\":\"center\"}\n                          }, [\n                            _createElementVNode(\"span\", _hoisted_396, [\n                              ($setup.dcrt.shows(r?.label))\n                                ? (_openBlock(), _createElementBlock(\"span\", _hoisted_397, _toDisplayString(r?.label), 1 /* TEXT */))\n                                : _createCommentVNode(\"v-if\", true)\n                            ]),\n                            _cache[370] || (_cache[370] = _createTextVNode()),\n                            _createElementVNode(\"span\", _hoisted_398, [\n                              _createElementVNode(\"span\", {\n                                style: _normalizeStyle($setup.dcrt.style(`display:block;height:100%;width:${r?.pct ?? ''};border-radius:100px;background:${r?.color ?? ''}`))\n                              }, null, 4 /* STYLE */)\n                            ]),\n                            _cache[371] || (_cache[371] = _createTextVNode()),\n                            _createElementVNode(\"span\", _hoisted_399, [\n                              ($setup.dcrt.shows(r?.verdict))\n                                ? (_openBlock(), _createElementBlock(\"span\", _hoisted_400, _toDisplayString(r?.verdict), 1 /* TEXT */))\n                                : _createCommentVNode(\"v-if\", true)\n                            ])\n                          ]))\n                        }), 128 /* KEYED_FRAGMENT */))\n                      ]),\n                      _cache[403] || (_cache[403] = _createTextVNode()),\n                      _createElementVNode(\"div\", _hoisted_401, [\n                        _cache[376] || (_cache[376] = _createElementVNode(\"span\", { style: {\"font\":\"700 16px/1 var(--font-body)\"} }, \"Jouw Bruto Twentse Waarde\", -1 /* CACHED */)),\n                        _cache[377] || (_cache[377] = _createTextVNode()),\n                        _createElementVNode(\"div\", _hoisted_402, [\n                          (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.report?.btw), (it, $index) => {\n                            return (_openBlock(), _createElementBlock(\"div\", {\n                              key: $index,\n                              style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"align-items\":\"center\",\"gap\":\"20px\",\"text-align\":\"center\"}\n                            }, [\n                              _createElementVNode(\"span\", {\n                                role: \"img\",\n                                \"aria-label\": $setup.dcrt.attr(it?.aria),\n                                style: {\"position\":\"relative\",\"width\":\"76px\",\"height\":\"76px\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\",\"flex-shrink\":\"0\"}\n                              }, [\n                                (_openBlock(), _createElementBlock(\"svg\", _hoisted_404, [\n                                  _cache[373] || (_cache[373] = _createElementVNode(\"circle\", {\n                                    cx: \"38\",\n                                    cy: \"38\",\n                                    r: \"34\",\n                                    fill: \"none\",\n                                    stroke: \"var(--track,rgba(255,255,255,0.08))\",\n                                    \"stroke-width\": \"4\"\n                                  }, null, -1 /* CACHED */)),\n                                  _createElementVNode(\"circle\", {\n                                    cx: \"38\",\n                                    cy: \"38\",\n                                    r: \"34\",\n                                    fill: \"none\",\n                                    stroke: it?.color,\n                                    \"stroke-width\": \"4\",\n                                    \"stroke-linecap\": \"round\",\n                                    \"stroke-dasharray\": it?.dash\n                                  }, null, 8 /* PROPS */, _hoisted_405)\n                                ])),\n                                _cache[374] || (_cache[374] = _createTextVNode()),\n                                _createElementVNode(\"span\", {\n                                  style: _normalizeStyle($setup.dcrt.style(`width:56px;height:56px;border-radius:50%;background:${it?.color ?? ''};display:flex;align-items:center;justify-content:center;color:#FFFFFF;font:300 22px/1 var(--font-body)`))\n                                }, \"+\", 4 /* STYLE */)\n                              ], 8 /* PROPS */, _hoisted_403),\n                              _cache[375] || (_cache[375] = _createTextVNode()),\n                              _createElementVNode(\"span\", _hoisted_406, [\n                                ($setup.dcrt.shows(it?.label))\n                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_407, _toDisplayString(it?.label), 1 /* TEXT */))\n                                  : _createCommentVNode(\"v-if\", true)\n                              ])\n                            ]))\n                          }), 128 /* KEYED_FRAGMENT */))\n                        ])\n                      ]),\n                      _cache[404] || (_cache[404] = _createTextVNode()),\n                      _createElementVNode(\"div\", _hoisted_408, [\n                        (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.report?.persp), (p, $index) => {\n                          return (_openBlock(), _createElementBlock(\"div\", {\n                            key: $index,\n                            style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"16px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"10px\"}\n                          }, [\n                            _createElementVNode(\"div\", _hoisted_409, [\n                              _createElementVNode(\"span\", _hoisted_410, [\n                                ($setup.dcrt.shows(p?.name))\n                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_411, _toDisplayString(p?.name), 1 /* TEXT */))\n                                  : _createCommentVNode(\"v-if\", true)\n                              ]),\n                              _cache[378] || (_cache[378] = _createTextVNode()),\n                              _createElementVNode(\"span\", {\n                                style: _normalizeStyle($setup.dcrt.style(`border-radius:100px;background:${p?.chipBg ?? ''};color:${p?.chipColor ?? ''};padding:6px 10px;font:600 10px/1 var(--font-body)`))\n                              }, [\n                                ($setup.dcrt.shows(p?.level))\n                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_412, _toDisplayString(p?.level), 1 /* TEXT */))\n                                  : _createCommentVNode(\"v-if\", true)\n                              ], 4 /* STYLE */)\n                            ]),\n                            _cache[379] || (_cache[379] = _createTextVNode()),\n                            _createElementVNode(\"span\", _hoisted_413, [\n                              ($setup.dcrt.shows(p?.text))\n                                ? (_openBlock(), _createElementBlock(\"span\", _hoisted_414, _toDisplayString(p?.text), 1 /* TEXT */))\n                                : _createCommentVNode(\"v-if\", true)\n                            ]),\n                            _cache[380] || (_cache[380] = _createTextVNode()),\n                            _createElementVNode(\"span\", _hoisted_415, [\n                              (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list(p?.segs), (s, $index) => {\n                                return (_openBlock(), _createElementBlock(\"span\", {\n                                  key: $index,\n                                  style: _normalizeStyle($setup.dcrt.style(`flex:1;height:3px;border-radius:1px;background:${s?.bg ?? ''}`))\n                                }, null, 4 /* STYLE */))\n                              }), 128 /* KEYED_FRAGMENT */))\n                            ]),\n                            _cache[381] || (_cache[381] = _createTextVNode()),\n                            _createElementVNode(\"span\", _hoisted_416, [\n                              ($setup.dcrt.shows(p?.count))\n                                ? (_openBlock(), _createElementBlock(\"span\", _hoisted_417, _toDisplayString(p?.count), 1 /* TEXT */))\n                                : _createCommentVNode(\"v-if\", true)\n                            ])\n                          ]))\n                        }), 128 /* KEYED_FRAGMENT */))\n                      ]),\n                      _cache[405] || (_cache[405] = _createTextVNode()),\n                      _createElementVNode(\"div\", _hoisted_418, [\n                        _cache[383] || (_cache[383] = _createElementVNode(\"span\", { style: {\"font\":\"700 16px/1 var(--font-body)\"} }, \"Belangen die botsen\", -1 /* CACHED */)),\n                        _cache[384] || (_cache[384] = _createTextVNode()),\n                        _createElementVNode(\"div\", _hoisted_419, [\n                          (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.report?.clash), (c, $index) => {\n                            return (_openBlock(), _createElementBlock(\"div\", {\n                              key: $index,\n                              style: {\"border-radius\":\"12px\",\"background\":\"var(--surface2,rgba(125,128,255,0.12))\",\"padding\":\"16px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\"}\n                            }, [\n                              _createElementVNode(\"span\", _hoisted_420, [\n                                ($setup.dcrt.shows(c?.title))\n                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_421, _toDisplayString(c?.title), 1 /* TEXT */))\n                                  : _createCommentVNode(\"v-if\", true)\n                              ]),\n                              _cache[382] || (_cache[382] = _createTextVNode()),\n                              _createElementVNode(\"span\", _hoisted_422, [\n                                ($setup.dcrt.shows(c?.text))\n                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_423, _toDisplayString(c?.text), 1 /* TEXT */))\n                                  : _createCommentVNode(\"v-if\", true)\n                              ])\n                            ]))\n                          }), 128 /* KEYED_FRAGMENT */))\n                        ])\n                      ]),\n                      _cache[406] || (_cache[406] = _createTextVNode()),\n                      _createElementVNode(\"div\", _hoisted_424, [\n                        _cache[386] || (_cache[386] = _createElementVNode(\"span\", { style: {\"font\":\"700 16px/1 var(--font-body)\"} }, \"Open vragen en onzekerheden\", -1 /* CACHED */)),\n                        _cache[387] || (_cache[387] = _createTextVNode()),\n                        (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.report?.open), (o, $index) => {\n                          return (_openBlock(), _createElementBlock(\"span\", {\n                            key: $index,\n                            style: {\"font\":\"400 14px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"}\n                          }, [\n                            _cache[385] || (_cache[385] = _createTextVNode(\"— \", -1 /* CACHED */)),\n                            ($setup.dcrt.shows(o))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_425, _toDisplayString(o), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ]))\n                        }), 128 /* KEYED_FRAGMENT */))\n                      ]),\n                      _cache[407] || (_cache[407] = _createTextVNode()),\n                      _createElementVNode(\"div\", _hoisted_426, [\n                        _createElementVNode(\"section\", _hoisted_427, [\n                          _cache[390] || (_cache[390] = _createElementVNode(\"h3\", { style: {\"margin\":\"0 0 4px\",\"font\":\"700 16px/1 var(--font-body)\"} }, \"Gebruikte bronnen\", -1 /* CACHED */)),\n                          _cache[391] || (_cache[391] = _createTextVNode()),\n                          (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.docs), (d, $index) => {\n                            return (_openBlock(), _createElementBlock(\"button\", {\n                              key: $index,\n                              class: \"app-scp3\",\n                              onClick: d?.onClick,\n                              style: {\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"color\":\"inherit\",\"padding\":\"16px\",\"text-align\":\"left\",\"cursor\":\"pointer\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\"}\n                            }, [\n                              _createElementVNode(\"span\", _hoisted_429, [\n                                ($setup.dcrt.shows(d?.title))\n                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_430, _toDisplayString(d?.title), 1 /* TEXT */))\n                                  : _createCommentVNode(\"v-if\", true)\n                              ]),\n                              _cache[389] || (_cache[389] = _createTextVNode()),\n                              _createElementVNode(\"span\", _hoisted_431, [\n                                ($setup.dcrt.shows(d?.meta))\n                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_432, _toDisplayString(d?.meta), 1 /* TEXT */))\n                                  : _createCommentVNode(\"v-if\", true),\n                                _cache[388] || (_cache[388] = _createTextVNode()),\n                                (d?.cin)\n                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_433, \"Cinergie Twente\"))\n                                  : _createCommentVNode(\"v-if\", true)\n                              ])\n                            ], 8 /* PROPS */, _hoisted_428))\n                          }), 128 /* KEYED_FRAGMENT */))\n                        ]),\n                        _cache[401] || (_cache[401] = _createTextVNode()),\n                        _createElementVNode(\"section\", _hoisted_434, [\n                          _cache[399] || (_cache[399] = _createElementVNode(\"h3\", { style: {\"margin\":\"0 0 4px\",\"font\":\"700 16px/1 var(--font-body)\"} }, \"Wat kun je hiermee?\", -1 /* CACHED */)),\n                          _cache[400] || (_cache[400] = _createTextVNode()),\n                          (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.nextSteps), (n, $index) => {\n                            return (_openBlock(), _createElementBlock(\"button\", {\n                              key: $index,\n                              class: \"app-scp3\",\n                              onClick: n?.onClick,\n                              style: {\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"color\":\"inherit\",\"padding\":\"16px\",\"text-align\":\"left\",\"cursor\":\"pointer\",\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"16px\"}\n                            }, [\n                              _createElementVNode(\"span\", _hoisted_436, [\n                                (n?.isChat)\n                                  ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_437, _cache[392] || (_cache[392] = [\n                                      _createElementVNode(\"path\", { d: \"M4 5.5A1.5 1.5 0 0 1 5.5 4h13A1.5 1.5 0 0 1 20 5.5v10a1.5 1.5 0 0 1-1.5 1.5H9l-5 4z\" }, null, -1 /* CACHED */)\n                                    ])))\n                                  : _createCommentVNode(\"v-if\", true),\n                                _cache[395] || (_cache[395] = _createTextVNode()),\n                                (n?.isTrend)\n                                  ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_438, _cache[393] || (_cache[393] = [\n                                      _createElementVNode(\"path\", { d: \"m3 17 6-6 4 4 8-8\" }, null, -1 /* CACHED */),\n                                      _createElementVNode(\"path\", { d: \"M15 7h6v6\" }, null, -1 /* CACHED */)\n                                    ])))\n                                  : _createCommentVNode(\"v-if\", true),\n                                _cache[396] || (_cache[396] = _createTextVNode()),\n                                (n?.isPlus)\n                                  ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_439, _cache[394] || (_cache[394] = [\n                                      _createElementVNode(\"path\", { d: \"M12 5v14\" }, null, -1 /* CACHED */),\n                                      _createElementVNode(\"path\", { d: \"M5 12h14\" }, null, -1 /* CACHED */)\n                                    ])))\n                                  : _createCommentVNode(\"v-if\", true)\n                              ]),\n                              _cache[398] || (_cache[398] = _createTextVNode()),\n                              _createElementVNode(\"span\", _hoisted_440, [\n                                _createElementVNode(\"span\", _hoisted_441, [\n                                  ($setup.dcrt.shows(n?.title))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_442, _toDisplayString(n?.title), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ]),\n                                _cache[397] || (_cache[397] = _createTextVNode()),\n                                _createElementVNode(\"span\", _hoisted_443, [\n                                  ($setup.dcrt.shows(n?.text))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_444, _toDisplayString(n?.text), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ])\n                              ])\n                            ], 8 /* PROPS */, _hoisted_435))\n                          }), 128 /* KEYED_FRAGMENT */))\n                        ])\n                      ])\n                    ]))\n                  : _createCommentVNode(\"v-if\", true)\n              ])\n            ], 4 /* STYLE */))\n          : _createCommentVNode(\"v-if\", true)\n      ]),\n      _cache[547] || (_cache[547] = _createTextVNode()),\n      ($setup.dcv.showSide)\n        ? (_openBlock(), _createElementBlock(\"aside\", {\n            key: 2,\n            style: _normalizeStyle($setup.dcrt.style($setup.dcv.sideStyle))\n          }, [\n            ($setup.dcv.sideOverlayOn)\n              ? (_openBlock(), _createElementBlock(\"button\", {\n                  key: 0,\n                  onClick: _cache[45] || (_cache[45] = (...args) => ($setup.dcv.closeSide && $setup.dcv.closeSide(...args))),\n                  style: {\"align-self\":\"flex-end\",\"border\":\"none\",\"border-radius\":\"8px\",\"background\":\"var(--surface,#2A2260)\",\"color\":\"inherit\",\"padding\":\"8px 14px\",\"font\":\"600 13px var(--font-body)\",\"cursor\":\"pointer\",\"flex-shrink\":\"0\"}\n                }, \"Sluit\"))\n              : _createCommentVNode(\"v-if\", true),\n            _cache[444] || (_cache[444] = _createTextVNode()),\n            _createElementVNode(\"div\", _hoisted_445, [\n              _cache[419] || (_cache[419] = _createElementVNode(\"div\", { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"flex-end\",\"padding\":\"12px 8px\"} }, [\n                _createElementVNode(\"span\", { style: {\"font\":\"700 16px/1 var(--font-body)\"} }, \"Jouw impact\"),\n                _createTextVNode(),\n                _createElementVNode(\"span\", { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"per perspectief\")\n              ], -1 /* CACHED */)),\n              _cache[420] || (_cache[420] = _createTextVNode()),\n              (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.perspRows), (p, $index) => {\n                return (_openBlock(), _createElementBlock(\"div\", {\n                  key: $index,\n                  style: {\"display\":\"flex\",\"flex-direction\":\"column\"}\n                }, [\n                  _createElementVNode(\"button\", {\n                    class: \"app-scp1\",\n                    onClick: p?.onClick,\n                    \"aria-haspopup\": \"dialog\",\n                    style: {\"border\":\"none\",\"border-radius\":\"8px\",\"background\":\"none\",\"color\":\"inherit\",\"padding\":\"12px 8px\",\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"center\",\"cursor\":\"pointer\",\"font\":\"600 14px/1 var(--font-body)\",\"text-align\":\"left\"}\n                  }, [\n                    _createElementVNode(\"span\", null, [\n                      ($setup.dcrt.shows(p?.label))\n                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_447, _toDisplayString(p?.label), 1 /* TEXT */))\n                        : _createCommentVNode(\"v-if\", true)\n                    ]),\n                    _cache[418] || (_cache[418] = _createTextVNode()),\n                    _createElementVNode(\"span\", _hoisted_448, [\n                      ($setup.dcrt.shows(p?.count))\n                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_449, _toDisplayString(p?.count), 1 /* TEXT */))\n                        : _createCommentVNode(\"v-if\", true)\n                    ])\n                  ], 8 /* PROPS */, _hoisted_446)\n                ]))\n              }), 128 /* KEYED_FRAGMENT */))\n            ]),\n            _cache[445] || (_cache[445] = _createTextVNode()),\n            _createElementVNode(\"div\", _hoisted_450, [\n              _createElementVNode(\"div\", _hoisted_451, [\n                _cache[421] || (_cache[421] = _createElementVNode(\"span\", { style: {\"font\":\"700 16px/1 var(--font-body)\"} }, \"Onderzoeken\", -1 /* CACHED */)),\n                _cache[422] || (_cache[422] = _createTextVNode()),\n                _createElementVNode(\"span\", _hoisted_452, [\n                  ($setup.dcrt.shows($setup.dcv.docCountLabel))\n                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_453, _toDisplayString($setup.dcv.docCountLabel), 1 /* TEXT */))\n                    : _createCommentVNode(\"v-if\", true)\n                ])\n              ]),\n              _cache[426] || (_cache[426] = _createTextVNode()),\n              ($setup.dcv.docsEmpty)\n                ? (_openBlock(), _createElementBlock(\"span\", _hoisted_454, \"Nog niets aangehaald. Zodra Kiek een onderzoek gebruikt, verschijnt het hier.\"))\n                : _createCommentVNode(\"v-if\", true),\n              _cache[427] || (_cache[427] = _createTextVNode()),\n              (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.docs), (d, $index) => {\n                return (_openBlock(), _createElementBlock(\"button\", {\n                  key: $index,\n                  class: \"app-scp1\",\n                  onClick: d?.onClick,\n                  onMouseenter: d?.onEnter,\n                  onMouseleave: d?.onLeave,\n                  style: _normalizeStyle($setup.dcrt.style(`border:none;border-radius:8px;background:${d?.bg ?? ''};color:inherit;padding:12px 8px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:4px`))\n                }, [\n                  _createElementVNode(\"span\", _hoisted_456, [\n                    _createElementVNode(\"span\", {\n                      style: _normalizeStyle($setup.dcrt.style(`width:22px;height:22px;border-radius:100px;background:${d?.numBg ?? ''};color:${d?.numColor ?? ''};display:flex;align-items:center;justify-content:center;font:700 11px var(--font-body);flex-shrink:0;margin-top:-3px`))\n                    }, [\n                      ($setup.dcrt.shows(d?.n))\n                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_457, _toDisplayString(d?.n), 1 /* TEXT */))\n                        : _createCommentVNode(\"v-if\", true)\n                    ], 4 /* STYLE */),\n                    _createElementVNode(\"span\", _hoisted_458, [\n                      ($setup.dcrt.shows(d?.title))\n                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_459, _toDisplayString(d?.title), 1 /* TEXT */))\n                        : _createCommentVNode(\"v-if\", true)\n                    ])\n                  ]),\n                  _cache[424] || (_cache[424] = _createTextVNode()),\n                  (d?.hasUsed)\n                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_460, [\n                        ($setup.dcrt.shows(d?.usedLabel))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_461, _toDisplayString(d?.usedLabel), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ]))\n                    : _createCommentVNode(\"v-if\", true),\n                  _cache[425] || (_cache[425] = _createTextVNode()),\n                  _createElementVNode(\"span\", _hoisted_462, [\n                    ($setup.dcrt.shows(d?.meta))\n                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_463, _toDisplayString(d?.meta), 1 /* TEXT */))\n                      : _createCommentVNode(\"v-if\", true),\n                    _cache[423] || (_cache[423] = _createTextVNode()),\n                    (d?.cin)\n                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_464, \"Cinergie Twente\"))\n                      : _createCommentVNode(\"v-if\", true)\n                  ])\n                ], 44 /* STYLE, PROPS, NEED_HYDRATION */, _hoisted_455))\n              }), 128 /* KEYED_FRAGMENT */))\n            ]),\n            _cache[446] || (_cache[446] = _createTextVNode()),\n            _createElementVNode(\"div\", _hoisted_465, [\n              _cache[433] || (_cache[433] = _createElementVNode(\"div\", { style: {\"padding\":\"12px 8px\"} }, [\n                _createElementVNode(\"span\", { style: {\"font\":\"700 16px/1 var(--font-body)\"} }, \"Contactpersonen & bedrijven\")\n              ], -1 /* CACHED */)),\n              _cache[434] || (_cache[434] = _createTextVNode()),\n              ($setup.dcv.contactsEmpty)\n                ? (_openBlock(), _createElementBlock(\"span\", _hoisted_466, \"Onderzoekers en bedrijven uit het gesprek verschijnen hier.\"))\n                : _createCommentVNode(\"v-if\", true),\n              _cache[435] || (_cache[435] = _createTextVNode()),\n              (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.contacts), (c, $index) => {\n                return (_openBlock(), _createElementBlock(\"button\", {\n                  key: $index,\n                  class: \"app-scp1\",\n                  onClick: c?.onClick,\n                  style: {\"border\":\"none\",\"border-radius\":\"8px\",\"background\":\"none\",\"color\":\"inherit\",\"padding\":\"8px\",\"text-align\":\"left\",\"cursor\":\"pointer\",\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"12px\"}\n                }, [\n                  _createElementVNode(\"span\", _hoisted_468, [\n                    (c?.isPerson)\n                      ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_469, _cache[428] || (_cache[428] = [\n                          _createElementVNode(\"circle\", {\n                            cx: \"12\",\n                            cy: \"8\",\n                            r: \"4\"\n                          }, null, -1 /* CACHED */),\n                          _createElementVNode(\"path\", { d: \"M4.5 21a7.5 7.5 0 0 1 15 0\" }, null, -1 /* CACHED */)\n                        ])))\n                      : _createCommentVNode(\"v-if\", true),\n                    _cache[430] || (_cache[430] = _createTextVNode()),\n                    (c?.isCompany)\n                      ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_470, _cache[429] || (_cache[429] = [\n                          _createStaticVNode(\"<rect x=\\\"5\\\" y=\\\"3\\\" width=\\\"14\\\" height=\\\"18\\\" rx=\\\"1.5\\\"></rect><path d=\\\"M9 7.5h2\\\"></path><path d=\\\"M13 7.5h2\\\"></path><path d=\\\"M9 11.5h2\\\"></path><path d=\\\"M13 11.5h2\\\"></path><path d=\\\"M10.5 21v-4h3v4\\\"></path>\", 6)\n                        ])))\n                      : _createCommentVNode(\"v-if\", true)\n                  ]),\n                  _cache[432] || (_cache[432] = _createTextVNode()),\n                  _createElementVNode(\"span\", _hoisted_471, [\n                    _createElementVNode(\"span\", _hoisted_472, [\n                      ($setup.dcrt.shows(c?.name))\n                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_473, _toDisplayString(c?.name), 1 /* TEXT */))\n                        : _createCommentVNode(\"v-if\", true)\n                    ]),\n                    _cache[431] || (_cache[431] = _createTextVNode()),\n                    _createElementVNode(\"span\", _hoisted_474, [\n                      ($setup.dcrt.shows(c?.role))\n                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_475, _toDisplayString(c?.role), 1 /* TEXT */))\n                        : _createCommentVNode(\"v-if\", true)\n                    ])\n                  ])\n                ], 8 /* PROPS */, _hoisted_467))\n              }), 128 /* KEYED_FRAGMENT */))\n            ]),\n            _cache[447] || (_cache[447] = _createTextVNode()),\n            ($setup.dcv.isGesprek)\n              ? (_openBlock(), _createElementBlock(\"div\", _hoisted_476, [\n                  _createElementVNode(\"button\", {\n                    class: \"app-scp2\",\n                    onClick: _cache[46] || (_cache[46] = (...args) => ($setup.dcv.summarize && $setup.dcv.summarize(...args))),\n                    style: _normalizeStyle($setup.dcrt.style(`height:52px;border:none;border-radius:12px;background:#7D80FF;color:#FFFFFF;font:500 14px var(--font-body);cursor:pointer;opacity:${$setup.dcv.actionOpacity ?? ''}`))\n                  }, \"Maak een gespreksverslag\", 4 /* STYLE */),\n                  _cache[436] || (_cache[436] = _createTextVNode()),\n                  _cache[437] || (_cache[437] = _createElementVNode(\"span\", { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\",\"text-align\":\"center\"} }, \"Je gesprek blijft bewaard. Je kunt daarna gewoon verder praten.\", -1 /* CACHED */))\n                ]))\n              : _createCommentVNode(\"v-if\", true),\n            _cache[448] || (_cache[448] = _createTextVNode()),\n            ($setup.dcv.isUitslag)\n              ? (_openBlock(), _createElementBlock(\"div\", _hoisted_477, [\n                  _cache[440] || (_cache[440] = _createElementVNode(\"span\", { style: {\"font\":\"600 14px/1 var(--font-body)\",\"color\":\"#7D80FF\"} }, \"Onderbouwing\", -1 /* CACHED */)),\n                  _cache[441] || (_cache[441] = _createTextVNode()),\n                  _createElementVNode(\"span\", _hoisted_478, [\n                    _createElementVNode(\"span\", _hoisted_479, [\n                      ($setup.dcrt.shows($setup.dcv.report?.total))\n                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_480, _toDisplayString($setup.dcv.report?.total), 1 /* TEXT */))\n                        : _createCommentVNode(\"v-if\", true)\n                    ]),\n                    _cache[438] || (_cache[438] = _createElementVNode(\"span\", { style: {\"font\":\"400 14px var(--font-body)\"} }, \"onderzoeken\", -1 /* CACHED */))\n                  ]),\n                  _cache[442] || (_cache[442] = _createTextVNode()),\n                  _createElementVNode(\"span\", _hoisted_481, [\n                    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.report?.totalSegs), (s, $index) => {\n                      return (_openBlock(), _createElementBlock(\"span\", {\n                        key: $index,\n                        style: _normalizeStyle($setup.dcrt.style(`flex:1;height:3px;border-radius:1px;background:${s?.bg ?? ''}`))\n                      }, null, 4 /* STYLE */))\n                    }), 128 /* KEYED_FRAGMENT */))\n                  ]),\n                  _cache[443] || (_cache[443] = _createTextVNode()),\n                  _createElementVNode(\"span\", _hoisted_482, [\n                    ($setup.dcrt.shows($setup.dcv.report?.cin))\n                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_483, _toDisplayString($setup.dcv.report?.cin), 1 /* TEXT */))\n                      : _createCommentVNode(\"v-if\", true),\n                    _cache[439] || (_cache[439] = _createTextVNode(\" via Cinergie Twente\", -1 /* CACHED */))\n                  ])\n                ]))\n              : _createCommentVNode(\"v-if\", true)\n          ], 4 /* STYLE */))\n        : _createCommentVNode(\"v-if\", true),\n      _cache[548] || (_cache[548] = _createTextVNode()),\n      ($setup.dcv.sideOverlayOn)\n        ? (_openBlock(), _createElementBlock(\"div\", {\n            key: 3,\n            onClick: _cache[47] || (_cache[47] = (...args) => ($setup.dcv.closeSide && $setup.dcv.closeSide(...args))),\n            style: {\"position\":\"absolute\",\"inset\":\"0\",\"background\":\"rgba(10,8,30,0.5)\",\"z-index\":\"29\"}\n          }))\n        : _createCommentVNode(\"v-if\", true),\n      _cache[549] || (_cache[549] = _createTextVNode()),\n      ($setup.dcv.modalOpen)\n        ? (_openBlock(), _createElementBlock(\"div\", {\n            key: 4,\n            onClick: _cache[68] || (_cache[68] = (...args) => ($setup.dcv.closeModal && $setup.dcv.closeModal(...args))),\n            style: {\"position\":\"absolute\",\"inset\":\"0\",\"z-index\":\"40\",\"background\":\"var(--scrim,rgba(10,8,30,0.6))\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\",\"padding\":\"24px\"}\n          }, [\n            _createElementVNode(\"div\", {\n              role: \"dialog\",\n              \"aria-modal\": \"true\",\n              onClick: _cache[67] || (_cache[67] = (...args) => ($setup.dcv.stopProp && $setup.dcv.stopProp(...args))),\n              style: {\"width\":\"100%\",\"max-width\":\"640px\",\"max-height\":\"100%\",\"overflow\":\"auto\",\"border-radius\":\"16px\",\"background\":\"var(--bg,#1F184E)\",\"box-shadow\":\"0 24px 64px rgba(10,8,30,0.45)\",\"padding\":\"32px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"20px\"}\n            }, [\n              _createElementVNode(\"div\", _hoisted_484, [\n                _createElementVNode(\"h2\", _hoisted_485, [\n                  ($setup.dcrt.shows($setup.dcv.modal?.title))\n                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_486, _toDisplayString($setup.dcv.modal?.title), 1 /* TEXT */))\n                    : _createCommentVNode(\"v-if\", true)\n                ]),\n                _cache[449] || (_cache[449] = _createTextVNode()),\n                _createElementVNode(\"button\", {\n                  onClick: _cache[48] || (_cache[48] = (...args) => ($setup.dcv.closeModal && $setup.dcv.closeModal(...args))),\n                  style: {\"border\":\"none\",\"border-radius\":\"8px\",\"background\":\"var(--surface,#2A2260)\",\"color\":\"inherit\",\"padding\":\"8px 14px\",\"font\":\"600 13px var(--font-body)\",\"cursor\":\"pointer\",\"flex-shrink\":\"0\"}\n                }, \"Sluit\")\n              ]),\n              _cache[533] || (_cache[533] = _createTextVNode()),\n              _createElementVNode(\"span\", _hoisted_487, [\n                ($setup.dcrt.shows($setup.dcv.modal?.meta))\n                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_488, _toDisplayString($setup.dcv.modal?.meta), 1 /* TEXT */))\n                  : _createCommentVNode(\"v-if\", true),\n                _cache[450] || (_cache[450] = _createTextVNode()),\n                ($setup.dcv.modal?.cin)\n                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_489, \"Cinergie Twente\"))\n                  : _createCommentVNode(\"v-if\", true)\n              ]),\n              _cache[534] || (_cache[534] = _createTextVNode()),\n              ($setup.dcv.modal?.isDoc)\n                ? (_openBlock(), _createElementBlock(\"div\", _hoisted_490, [\n                    ($setup.dcv.modal?.hasPassages)\n                      ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n                          _createElementVNode(\"div\", _hoisted_491, [\n                            (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.modal?.passTabs), (t, $index) => {\n                              return (_openBlock(), _createElementBlock(\"button\", {\n                                key: $index,\n                                onClick: t?.onClick,\n                                style: _normalizeStyle($setup.dcrt.style(`border:none;border-radius:100px;background:${t?.bg ?? ''};color:${t?.color ?? ''};padding:6px 12px;font:600 12px var(--font-body);cursor:pointer`))\n                              }, [\n                                ($setup.dcrt.shows(t?.label))\n                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_493, _toDisplayString(t?.label), 1 /* TEXT */))\n                                  : _createCommentVNode(\"v-if\", true)\n                              ], 12 /* STYLE, PROPS */, _hoisted_492))\n                            }), 128 /* KEYED_FRAGMENT */))\n                          ]),\n                          _cache[457] || (_cache[457] = _createTextVNode()),\n                          _createElementVNode(\"div\", _hoisted_494, [\n                            _createElementVNode(\"span\", _hoisted_495, [\n                              _cache[451] || (_cache[451] = _createTextVNode(\"Letterlijke passage · \", -1 /* CACHED */)),\n                              ($setup.dcrt.shows($setup.dcv.modal?.loc))\n                                ? (_openBlock(), _createElementBlock(\"span\", _hoisted_496, _toDisplayString($setup.dcv.modal?.loc), 1 /* TEXT */))\n                                : _createCommentVNode(\"v-if\", true)\n                            ]),\n                            _cache[452] || (_cache[452] = _createTextVNode()),\n                            _createElementVNode(\"span\", _hoisted_497, [\n                              ($setup.dcrt.shows($setup.dcv.modal?.before))\n                                ? (_openBlock(), _createElementBlock(\"span\", _hoisted_498, _toDisplayString($setup.dcv.modal?.before), 1 /* TEXT */))\n                                : _createCommentVNode(\"v-if\", true),\n                              _createElementVNode(\"mark\", _hoisted_499, [\n                                ($setup.dcrt.shows($setup.dcv.modal?.quote))\n                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_500, _toDisplayString($setup.dcv.modal?.quote), 1 /* TEXT */))\n                                  : _createCommentVNode(\"v-if\", true)\n                              ]),\n                              ($setup.dcrt.shows($setup.dcv.modal?.after))\n                                ? (_openBlock(), _createElementBlock(\"span\", _hoisted_501, _toDisplayString($setup.dcv.modal?.after), 1 /* TEXT */))\n                                : _createCommentVNode(\"v-if\", true)\n                            ])\n                          ]),\n                          _cache[458] || (_cache[458] = _createTextVNode()),\n                          _createElementVNode(\"div\", _hoisted_502, [\n                            _cache[453] || (_cache[453] = _createElementVNode(\"span\", { style: {\"font\":\"700 12px/1.4 var(--font-body)\"} }, \"Waarom Kiek dit aanhaalt\", -1 /* CACHED */)),\n                            _cache[454] || (_cache[454] = _createTextVNode()),\n                            _createElementVNode(\"span\", _hoisted_503, [\n                              ($setup.dcrt.shows($setup.dcv.modal?.why))\n                                ? (_openBlock(), _createElementBlock(\"span\", _hoisted_504, _toDisplayString($setup.dcv.modal?.why), 1 /* TEXT */))\n                                : _createCommentVNode(\"v-if\", true)\n                            ])\n                          ]),\n                          _cache[459] || (_cache[459] = _createTextVNode()),\n                          ($setup.dcv.modal?.hasUsedIn)\n                            ? (_openBlock(), _createElementBlock(\"button\", {\n                                key: 0,\n                                onClick: _cache[49] || (_cache[49] = (...args) => ($setup.dcv.modal?.goUsed && $setup.dcv.modal?.goUsed(...args))),\n                                style: {\"align-self\":\"flex-start\",\"border\":\"none\",\"background\":\"none\",\"color\":\"#7D80FF\",\"padding\":\"0\",\"font\":\"600 14px var(--font-body)\",\"cursor\":\"pointer\",\"text-decoration\":\"underline\",\"text-underline-offset\":\"3px\"}\n                              }, [\n                                _cache[455] || (_cache[455] = _createTextVNode(\"Naar antwoord \", -1 /* CACHED */)),\n                                ($setup.dcrt.shows($setup.dcv.modal?.usedNo))\n                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_505, _toDisplayString($setup.dcv.modal?.usedNo), 1 /* TEXT */))\n                                  : _createCommentVNode(\"v-if\", true),\n                                _cache[456] || (_cache[456] = _createTextVNode(\" in het gesprek\", -1 /* CACHED */))\n                              ]))\n                            : _createCommentVNode(\"v-if\", true)\n                        ], 64 /* STABLE_FRAGMENT */))\n                      : _createCommentVNode(\"v-if\", true),\n                    _cache[465] || (_cache[465] = _createTextVNode()),\n                    ($setup.dcv.modal?.noPassages)\n                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_506, \"Deze publicatie is beschikbaar in de kennisbank, maar nog niet aangehaald in een gesprek.\"))\n                      : _createCommentVNode(\"v-if\", true),\n                    _cache[466] || (_cache[466] = _createTextVNode()),\n                    _createElementVNode(\"div\", _hoisted_507, [\n                      _cache[460] || (_cache[460] = _createElementVNode(\"span\", { style: {\"font-weight\":\"700\"} }, \"Auteur\", -1 /* CACHED */)),\n                      _createElementVNode(\"span\", null, [\n                        ($setup.dcrt.shows($setup.dcv.modal?.author))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_508, _toDisplayString($setup.dcv.modal?.author), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ]),\n                      _cache[461] || (_cache[461] = _createTextVNode()),\n                      _cache[462] || (_cache[462] = _createElementVNode(\"span\", { style: {\"font-weight\":\"700\"} }, \"Aangeleverd door\", -1 /* CACHED */)),\n                      _createElementVNode(\"span\", null, [\n                        ($setup.dcrt.shows($setup.dcv.modal?.supplier))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_509, _toDisplayString($setup.dcv.modal?.supplier), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ]),\n                      _cache[463] || (_cache[463] = _createTextVNode()),\n                      _cache[464] || (_cache[464] = _createElementVNode(\"span\", { style: {\"font-weight\":\"700\"} }, \"Bronversie\", -1 /* CACHED */)),\n                      _createElementVNode(\"span\", null, [\n                        ($setup.dcrt.shows($setup.dcv.modal?.version))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_510, _toDisplayString($setup.dcv.modal?.version), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ])\n                    ]),\n                    _cache[467] || (_cache[467] = _createTextVNode()),\n                    _createElementVNode(\"button\", {\n                      onClick: _cache[50] || (_cache[50] = (...args) => ($setup.dcv.modal?.openOriginal && $setup.dcv.modal?.openOriginal(...args))),\n                      style: {\"align-self\":\"flex-start\",\"height\":\"44px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"#7D80FF\",\"color\":\"#FFFFFF\",\"padding\":\"0 20px\",\"font\":\"500 14px var(--font-body)\",\"cursor\":\"pointer\"}\n                    }, \"Bekijk origineel document\")\n                  ]))\n                : _createCommentVNode(\"v-if\", true),\n              _cache[535] || (_cache[535] = _createTextVNode()),\n              ($setup.dcv.modal?.isPerson)\n                ? (_openBlock(), _createElementBlock(\"div\", _hoisted_511, [\n                    _createElementVNode(\"div\", _hoisted_512, [\n                      _cache[468] || (_cache[468] = _createElementVNode(\"span\", { style: {\"font-weight\":\"700\"} }, \"Organisatie\", -1 /* CACHED */)),\n                      _createElementVNode(\"span\", null, [\n                        ($setup.dcrt.shows($setup.dcv.modal?.org))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_513, _toDisplayString($setup.dcv.modal?.org), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ]),\n                      _cache[469] || (_cache[469] = _createTextVNode()),\n                      _cache[470] || (_cache[470] = _createElementVNode(\"span\", { style: {\"font-weight\":\"700\"} }, \"Expertise\", -1 /* CACHED */)),\n                      _createElementVNode(\"span\", null, [\n                        ($setup.dcrt.shows($setup.dcv.modal?.expertise))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_514, _toDisplayString($setup.dcv.modal?.expertise), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ]),\n                      _cache[471] || (_cache[471] = _createTextVNode()),\n                      _cache[472] || (_cache[472] = _createElementVNode(\"span\", { style: {\"font-weight\":\"700\"} }, \"Gekoppeld aan\", -1 /* CACHED */)),\n                      _createElementVNode(\"span\", null, [\n                        ($setup.dcrt.shows($setup.dcv.modal?.linked))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_515, _toDisplayString($setup.dcv.modal?.linked), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ])\n                    ]),\n                    _cache[473] || (_cache[473] = _createTextVNode()),\n                    _createElementVNode(\"div\", _hoisted_516, [\n                      ($setup.dcrt.shows($setup.dcv.modal?.route))\n                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_517, _toDisplayString($setup.dcv.modal?.route), 1 /* TEXT */))\n                        : _createCommentVNode(\"v-if\", true)\n                    ])\n                  ]))\n                : _createCommentVNode(\"v-if\", true),\n              _cache[536] || (_cache[536] = _createTextVNode()),\n              ($setup.dcv.modal?.isCompany)\n                ? (_openBlock(), _createElementBlock(\"div\", _hoisted_518, [\n                    _createElementVNode(\"div\", _hoisted_519, [\n                      _cache[474] || (_cache[474] = _createElementVNode(\"span\", { style: {\"font-weight\":\"700\"} }, \"KVK-nummer\", -1 /* CACHED */)),\n                      _createElementVNode(\"span\", null, [\n                        ($setup.dcrt.shows($setup.dcv.modal?.kvk))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_520, _toDisplayString($setup.dcv.modal?.kvk), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ]),\n                      _cache[475] || (_cache[475] = _createTextVNode()),\n                      _cache[476] || (_cache[476] = _createElementVNode(\"span\", { style: {\"font-weight\":\"700\"} }, \"Sector\", -1 /* CACHED */)),\n                      _createElementVNode(\"span\", null, [\n                        ($setup.dcrt.shows($setup.dcv.modal?.sector))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_521, _toDisplayString($setup.dcv.modal?.sector), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ]),\n                      _cache[477] || (_cache[477] = _createTextVNode()),\n                      _cache[478] || (_cache[478] = _createElementVNode(\"span\", { style: {\"font-weight\":\"700\"} }, \"Adres\", -1 /* CACHED */)),\n                      _createElementVNode(\"span\", null, [\n                        ($setup.dcrt.shows($setup.dcv.modal?.address))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_522, _toDisplayString($setup.dcv.modal?.address), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ]),\n                      _cache[479] || (_cache[479] = _createTextVNode()),\n                      _cache[480] || (_cache[480] = _createElementVNode(\"span\", { style: {\"font-weight\":\"700\"} }, \"Telefoon\", -1 /* CACHED */)),\n                      _createElementVNode(\"span\", null, [\n                        ($setup.dcrt.shows($setup.dcv.modal?.phone))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_523, _toDisplayString($setup.dcv.modal?.phone), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ]),\n                      _cache[481] || (_cache[481] = _createTextVNode()),\n                      _cache[482] || (_cache[482] = _createElementVNode(\"span\", { style: {\"font-weight\":\"700\"} }, \"Website\", -1 /* CACHED */)),\n                      _createElementVNode(\"span\", null, [\n                        ($setup.dcrt.shows($setup.dcv.modal?.website))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_524, _toDisplayString($setup.dcv.modal?.website), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ])\n                    ]),\n                    _cache[483] || (_cache[483] = _createTextVNode()),\n                    _cache[484] || (_cache[484] = _createElementVNode(\"span\", { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Opgezocht via het KVK Handelsregister op basis van de bedrijfsnaam in het gesprek. Controleer de gegevens voordat je contact opneemt.\", -1 /* CACHED */))\n                  ]))\n                : _createCommentVNode(\"v-if\", true),\n              _cache[537] || (_cache[537] = _createTextVNode()),\n              ($setup.dcv.modal?.isPersp)\n                ? (_openBlock(), _createElementBlock(\"div\", _hoisted_525, [\n                    ($setup.dcv.modal?.empty)\n                      ? (_openBlock(), _createElementBlock(\"div\", _hoisted_526, [\n                          _cache[485] || (_cache[485] = _createElementVNode(\"span\", { style: {\"font\":\"400 14px/1.45 var(--font-body)\"} }, \"Dit perspectief is nog niet besproken in dit gesprek.\", -1 /* CACHED */)),\n                          _cache[486] || (_cache[486] = _createTextVNode()),\n                          _createElementVNode(\"button\", {\n                            class: \"app-scp2\",\n                            onClick: _cache[51] || (_cache[51] = (...args) => ($setup.dcv.modal?.ask && $setup.dcv.modal?.ask(...args))),\n                            style: {\"align-self\":\"flex-start\",\"height\":\"44px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"#7D80FF\",\"color\":\"#FFFFFF\",\"padding\":\"0 18px\",\"font\":\"500 14px var(--font-body)\",\"cursor\":\"pointer\"}\n                          }, [\n                            ($setup.dcrt.shows($setup.dcv.modal?.askLabel))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_527, _toDisplayString($setup.dcv.modal?.askLabel), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ])\n                        ]))\n                      : _createCommentVNode(\"v-if\", true),\n                    _cache[491] || (_cache[491] = _createTextVNode()),\n                    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.modal?.items), (it, $index) => {\n                      return (_openBlock(), _createElementBlock(\"div\", {\n                        key: $index,\n                        style: {\"border-radius\":\"12px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"16px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"10px\"}\n                      }, [\n                        _createElementVNode(\"span\", _hoisted_528, [\n                          ($setup.dcrt.shows(it?.text))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_529, _toDisplayString(it?.text), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ]),\n                        _cache[489] || (_cache[489] = _createTextVNode()),\n                        (it?.hasSrc)\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_530, [\n                              (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list(it?.srcs), (sr, $index) => {\n                                return (_openBlock(), _createElementBlock(\"button\", {\n                                  key: $index,\n                                  onClick: sr?.onClick,\n                                  style: _normalizeStyle($setup.dcrt.style(`border:none;border-radius:100px;background:${sr?.bg ?? ''};color:${sr?.color ?? ''};padding:6px 10px;font:600 11px/1 var(--font-body);cursor:pointer`))\n                                }, [\n                                  ($setup.dcrt.shows(sr?.label))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_532, _toDisplayString(sr?.label), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ], 12 /* STYLE, PROPS */, _hoisted_531))\n                              }), 128 /* KEYED_FRAGMENT */))\n                            ]))\n                          : _createCommentVNode(\"v-if\", true),\n                        _cache[490] || (_cache[490] = _createTextVNode()),\n                        _createElementVNode(\"button\", {\n                          onClick: it?.onClick,\n                          style: {\"align-self\":\"flex-start\",\"border\":\"none\",\"background\":\"none\",\"color\":\"#7D80FF\",\"padding\":\"0\",\"font\":\"600 13px var(--font-body)\",\"cursor\":\"pointer\",\"text-decoration\":\"underline\",\"text-underline-offset\":\"3px\"}\n                        }, [\n                          _cache[487] || (_cache[487] = _createTextVNode(\"Naar antwoord \", -1 /* CACHED */)),\n                          ($setup.dcrt.shows(it?.no))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_534, _toDisplayString(it?.no), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true),\n                          _cache[488] || (_cache[488] = _createTextVNode(\" in het gesprek\", -1 /* CACHED */))\n                        ], 8 /* PROPS */, _hoisted_533)\n                      ]))\n                    }), 128 /* KEYED_FRAGMENT */))\n                  ]))\n                : _createCommentVNode(\"v-if\", true),\n              _cache[538] || (_cache[538] = _createTextVNode()),\n              ($setup.dcv.modal?.isUpload)\n                ? (_openBlock(), _createElementBlock(\"div\", _hoisted_535, [\n                    _createElementVNode(\"div\", _hoisted_536, [\n                      (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.up?.steps), (st, $index) => {\n                        return (_openBlock(), _createElementBlock(\"span\", {\n                          key: $index,\n                          style: {\"flex\":\"1\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\"}\n                        }, [\n                          _createElementVNode(\"span\", {\n                            style: _normalizeStyle($setup.dcrt.style(`height:4px;border-radius:2px;background:${st?.bar ?? ''}`))\n                          }, null, 4 /* STYLE */),\n                          _createElementVNode(\"span\", {\n                            style: _normalizeStyle($setup.dcrt.style(`font:600 12px/1.3 var(--font-body);color:${st?.color ?? ''}`))\n                          }, [\n                            ($setup.dcrt.shows(st?.label))\n                              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_537, _toDisplayString(st?.label), 1 /* TEXT */))\n                              : _createCommentVNode(\"v-if\", true)\n                          ], 4 /* STYLE */)\n                        ]))\n                      }), 128 /* KEYED_FRAGMENT */))\n                    ]),\n                    _cache[513] || (_cache[513] = _createTextVNode()),\n                    ($setup.dcv.up?.s1)\n                      ? (_openBlock(), _createElementBlock(\"div\", _hoisted_538, [\n                          _createElementVNode(\"button\", {\n                            class: \"app-scp5\",\n                            onClick: _cache[52] || (_cache[52] = (...args) => ($setup.dcv.up?.pick && $setup.dcv.up?.pick(...args))),\n                            style: _normalizeStyle($setup.dcrt.style(`border:none;border-radius:12px;background:var(--surface,#2A2260);box-shadow:inset 0 0 0 1.5px ${$setup.dcv.up?.dropRing ?? ''};color:inherit;padding:32px 20px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center`))\n                          }, [\n                            _cache[492] || (_cache[492] = _createElementVNode(\"svg\", {\n                              width: \"24\",\n                              height: \"24\",\n                              viewBox: \"0 0 24 24\",\n                              fill: \"none\",\n                              stroke: \"#7D80FF\",\n                              \"stroke-width\": \"1.8\",\n                              \"stroke-linecap\": \"round\",\n                              \"stroke-linejoin\": \"round\"\n                            }, [\n                              _createElementVNode(\"path\", { d: \"M12 16V4\" }),\n                              _createElementVNode(\"path\", { d: \"m7 9 5-5 5 5\" }),\n                              _createElementVNode(\"path\", { d: \"M4 16v3a1.5 1.5 0 0 0 1.5 1.5h13A1.5 1.5 0 0 0 20 19v-3\" })\n                            ], -1 /* CACHED */)),\n                            _cache[493] || (_cache[493] = _createTextVNode()),\n                            _createElementVNode(\"span\", _hoisted_539, [\n                              ($setup.dcrt.shows($setup.dcv.up?.fileLabel))\n                                ? (_openBlock(), _createElementBlock(\"span\", _hoisted_540, _toDisplayString($setup.dcv.up?.fileLabel), 1 /* TEXT */))\n                                : _createCommentVNode(\"v-if\", true)\n                            ]),\n                            _cache[494] || (_cache[494] = _createTextVNode()),\n                            _createElementVNode(\"span\", _hoisted_541, [\n                              ($setup.dcrt.shows($setup.dcv.up?.fileSub))\n                                ? (_openBlock(), _createElementBlock(\"span\", _hoisted_542, _toDisplayString($setup.dcv.up?.fileSub), 1 /* TEXT */))\n                                : _createCommentVNode(\"v-if\", true)\n                            ])\n                          ], 4 /* STYLE */),\n                          _cache[496] || (_cache[496] = _createTextVNode()),\n                          ($setup.dcv.up?.hasErr)\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_543, [\n                                ($setup.dcrt.shows($setup.dcv.up?.err))\n                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_544, _toDisplayString($setup.dcv.up?.err), 1 /* TEXT */))\n                                  : _createCommentVNode(\"v-if\", true)\n                              ]))\n                            : _createCommentVNode(\"v-if\", true),\n                          _cache[497] || (_cache[497] = _createTextVNode()),\n                          _createElementVNode(\"span\", _hoisted_545, [\n                            _cache[495] || (_cache[495] = _createTextVNode(\"PDF of Word, maximaal 50 MB. Gescande pagina's en complexe tabellen worden niet altijd goed gelezen; lever bij voorkeur de digitale versie aan. \", -1 /* CACHED */)),\n                            _createElementVNode(\"button\", {\n                              onClick: _cache[53] || (_cache[53] = (...args) => ($setup.dcv.up?.pickBad && $setup.dcv.up?.pickBad(...args))),\n                              style: {\"border\":\"none\",\"background\":\"none\",\"color\":\"#7D80FF\",\"padding\":\"0\",\"font\":\"inherit\",\"cursor\":\"pointer\",\"text-decoration\":\"underline\"}\n                            }, \"Voorbeeld: niet-ondersteund bestand\")\n                          ])\n                        ]))\n                      : _createCommentVNode(\"v-if\", true),\n                    _cache[514] || (_cache[514] = _createTextVNode()),\n                    ($setup.dcv.up?.s2)\n                      ? (_openBlock(), _createElementBlock(\"div\", _hoisted_546, [\n                          _cache[502] || (_cache[502] = _createElementVNode(\"span\", { style: {\"font\":\"400 13px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Kiek heeft deze gegevens uit het bestand gehaald. Controleer en vul aan.\", -1 /* CACHED */)),\n                          _cache[503] || (_cache[503] = _createTextVNode()),\n                          (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.up?.fields), (f, $index) => {\n                            return (_openBlock(), _createElementBlock(\"label\", {\n                              key: $index,\n                              style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\",\"font\":\"600 12px/1.4 var(--font-body)\"}\n                            }, [\n                              ($setup.dcrt.shows(f?.label))\n                                ? (_openBlock(), _createElementBlock(\"span\", _hoisted_547, _toDisplayString(f?.label), 1 /* TEXT */))\n                                : _createCommentVNode(\"v-if\", true),\n                              _cache[498] || (_cache[498] = _createTextVNode()),\n                              _createElementVNode(\"input\", {\n                                value: f?.value ?? '',\n                                onInput: f?.onChange,\n                                placeholder: f?.ph,\n                                style: _normalizeStyle($setup.dcrt.style(`width:100%;border:none;outline:none;border-radius:10px;background:var(--surface,#2A2260);color:inherit;padding:12px 14px;font:400 14px/1.4 var(--font-body);box-shadow:${f?.ring ?? ''}`))\n                              }, null, 44 /* STYLE, PROPS, NEED_HYDRATION */, _hoisted_548),\n                              _cache[499] || (_cache[499] = _createTextVNode()),\n                              (f?.bad)\n                                ? (_openBlock(), _createElementBlock(\"span\", _hoisted_549, \"Vul dit veld in.\"))\n                                : _createCommentVNode(\"v-if\", true)\n                            ]))\n                          }), 128 /* KEYED_FRAGMENT */)),\n                          _cache[504] || (_cache[504] = _createTextVNode()),\n                          _createElementVNode(\"button\", {\n                            onClick: _cache[54] || (_cache[54] = (...args) => ($setup.dcv.up?.toggleCin && $setup.dcv.up?.toggleCin(...args))),\n                            role: \"checkbox\",\n                            \"aria-checked\": $setup.dcrt.attr($setup.dcv.up?.cin),\n                            style: {\"border\":\"none\",\"background\":\"none\",\"color\":\"inherit\",\"padding\":\"0\",\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"12px\",\"cursor\":\"pointer\",\"text-align\":\"left\",\"font\":\"400 14px/1.4 var(--font-body)\"}\n                          }, [\n                            _createElementVNode(\"span\", {\n                              style: _normalizeStyle($setup.dcrt.style(`width:20px;height:20px;border-radius:6px;background:${$setup.dcv.up?.cinBox ?? ''};box-shadow:${$setup.dcv.up?.cinRing ?? ''};display:flex;align-items:center;justify-content:center;flex-shrink:0`))\n                            }, [\n                              ($setup.dcv.up?.cin)\n                                ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_551, _cache[500] || (_cache[500] = [\n                                    _createElementVNode(\"path\", { d: \"M5 12.5 10 17 19 7\" }, null, -1 /* CACHED */)\n                                  ])))\n                                : _createCommentVNode(\"v-if\", true)\n                            ], 4 /* STYLE */),\n                            _cache[501] || (_cache[501] = _createTextVNode(\"\\n                  Onderdeel van het programma Cinergie Twente\\n                \", -1 /* CACHED */))\n                          ], 8 /* PROPS */, _hoisted_550)\n                        ]))\n                      : _createCommentVNode(\"v-if\", true),\n                    _cache[515] || (_cache[515] = _createTextVNode()),\n                    ($setup.dcv.up?.s3)\n                      ? (_openBlock(), _createElementBlock(\"div\", _hoisted_552, [\n                          _createElementVNode(\"div\", _hoisted_553, [\n                            (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.up?.summary), (sm, $index) => {\n                              return (_openBlock(), _createElementBlock(_Fragment, { key: $index }, [\n                                _createElementVNode(\"span\", _hoisted_554, [\n                                  ($setup.dcrt.shows(sm?.k))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_555, _toDisplayString(sm?.k), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ]),\n                                _createElementVNode(\"span\", null, [\n                                  ($setup.dcrt.shows(sm?.v))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_556, _toDisplayString(sm?.v), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ])\n                              ], 64 /* STABLE_FRAGMENT */))\n                            }), 128 /* KEYED_FRAGMENT */))\n                          ]),\n                          _cache[507] || (_cache[507] = _createTextVNode()),\n                          _createElementVNode(\"button\", {\n                            onClick: _cache[55] || (_cache[55] = (...args) => ($setup.dcv.up?.toggleAgree && $setup.dcv.up?.toggleAgree(...args))),\n                            role: \"checkbox\",\n                            \"aria-checked\": $setup.dcrt.attr($setup.dcv.up?.agree),\n                            style: {\"border\":\"none\",\"background\":\"none\",\"color\":\"inherit\",\"padding\":\"0\",\"display\":\"flex\",\"align-items\":\"flex-start\",\"gap\":\"12px\",\"cursor\":\"pointer\",\"text-align\":\"left\",\"font\":\"400 14px/1.4 var(--font-body)\"}\n                          }, [\n                            _createElementVNode(\"span\", {\n                              style: _normalizeStyle($setup.dcrt.style(`width:20px;height:20px;border-radius:6px;background:${$setup.dcv.up?.agreeBox ?? ''};box-shadow:${$setup.dcv.up?.agreeRing ?? ''};display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px`))\n                            }, [\n                              ($setup.dcv.up?.agree)\n                                ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_558, _cache[505] || (_cache[505] = [\n                                    _createElementVNode(\"path\", { d: \"M5 12.5 10 17 19 7\" }, null, -1 /* CACHED */)\n                                  ])))\n                                : _createCommentVNode(\"v-if\", true)\n                            ], 4 /* STYLE */),\n                            _cache[506] || (_cache[506] = _createTextVNode(\"\\n                  Dit onderzoek is openbaar, of ik heb toestemming om het te delen voor gebruik in Kiek.\\n                \", -1 /* CACHED */))\n                          ], 8 /* PROPS */, _hoisted_557),\n                          _cache[508] || (_cache[508] = _createTextVNode()),\n                          ($setup.dcv.up?.hasErr)\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_559, [\n                                ($setup.dcrt.shows($setup.dcv.up?.err))\n                                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_560, _toDisplayString($setup.dcv.up?.err), 1 /* TEXT */))\n                                  : _createCommentVNode(\"v-if\", true)\n                              ]))\n                            : _createCommentVNode(\"v-if\", true),\n                          _cache[509] || (_cache[509] = _createTextVNode()),\n                          _cache[510] || (_cache[510] = _createElementVNode(\"span\", { style: {\"font\":\"400 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Na aanleveren controleert een beheerder de gegevens. Daarna wordt het document verwerkt en is het beschikbaar voor nieuwe antwoorden.\", -1 /* CACHED */))\n                        ]))\n                      : _createCommentVNode(\"v-if\", true),\n                    _cache[516] || (_cache[516] = _createTextVNode()),\n                    ($setup.dcv.up?.s4)\n                      ? (_openBlock(), _createElementBlock(\"div\", _hoisted_561, _cache[511] || (_cache[511] = [\n                          _createElementVNode(\"span\", { style: {\"font\":\"700 16px/1.3 var(--font-body)\"} }, \"Aangeleverd\", -1 /* CACHED */),\n                          _createTextVNode(),\n                          _createElementVNode(\"span\", { style: {\"font\":\"400 14px/1.45 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Je onderzoek staat in Mijn onderzoeken met de status \\\"Wacht op beoordeling\\\". Je krijgt een e-mail zodra het beschikbaar is.\", -1 /* CACHED */)\n                        ])))\n                      : _createCommentVNode(\"v-if\", true),\n                    _cache[517] || (_cache[517] = _createTextVNode()),\n                    _createElementVNode(\"div\", _hoisted_562, [\n                      _createElementVNode(\"button\", {\n                        onClick: _cache[56] || (_cache[56] = (...args) => ($setup.dcv.up?.back && $setup.dcv.up?.back(...args))),\n                        style: _normalizeStyle($setup.dcrt.style(`height:44px;border:none;border-radius:12px;background:none;box-shadow:inset 0 0 0 1px var(--hair,rgba(255,255,255,0.12));color:inherit;padding:0 18px;font:500 14px var(--font-body);cursor:pointer;visibility:${$setup.dcv.up?.backVis ?? ''}`))\n                      }, \"Vorige\", 4 /* STYLE */),\n                      _cache[512] || (_cache[512] = _createTextVNode()),\n                      _createElementVNode(\"button\", {\n                        class: \"app-scp2\",\n                        onClick: _cache[57] || (_cache[57] = (...args) => ($setup.dcv.up?.next && $setup.dcv.up?.next(...args))),\n                        style: {\"height\":\"44px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"#7D80FF\",\"color\":\"#FFFFFF\",\"padding\":\"0 22px\",\"font\":\"500 14px var(--font-body)\",\"cursor\":\"pointer\"}\n                      }, [\n                        ($setup.dcrt.shows($setup.dcv.up?.nextLabel))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_563, _toDisplayString($setup.dcv.up?.nextLabel), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ])\n                    ])\n                  ]))\n                : _createCommentVNode(\"v-if\", true),\n              _cache[539] || (_cache[539] = _createTextVNode()),\n              ($setup.dcv.modal?.isExample)\n                ? (_openBlock(), _createElementBlock(\"div\", _hoisted_564, [\n                    _cache[518] || (_cache[518] = _createStaticVNode(\"<div style=\\\"border-radius:12px;background:var(--surface,#2A2260);padding:20px;display:flex;flex-direction:column;gap:16px;\\\"><div style=\\\"display:flex;flex-direction:column;gap:4px;\\\"><span style=\\\"font:600 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75));\\\">De vraag (geanonimiseerd)</span><span style=\\\"font:400 14px/1.5 var(--font-body);color:var(--muted,rgba(255,255,255,0.75));\\\">Een gebruiker vraagt hoe je medewerkers meekrijgt bij een overstap naar herbruikbare bekers.</span></div> <div style=\\\"display:flex;flex-direction:column;gap:4px;\\\"><span style=\\\"font:600 12px/1.4 var(--font-body);color:var(--muted,rgba(255,255,255,0.75));\\\">Wat Kiek zei</span><span style=\\\"font:400 15px/1.5 var(--font-body);\\\">Betrek medewerkers bij de inrichting van spoelpunten; dan blijft het gebruik stabiel.</span></div> <div style=\\\"border-radius:10px;background:var(--surface2,rgba(125,128,255,0.12));padding:14px;display:flex;flex-direction:column;gap:4px;\\\"><span style=\\\"font:600 12px/1.4 var(--font-body);color:#7D80FF;\\\">Uit jouw onderzoek · hfst. 2 · versie 1</span><span style=\\\"font:400 14px/1.5 var(--font-body);\\\">Waar medewerkers zelf meedachten over de inrichting van spoelpunten, bleef het gebruik na een half jaar stabiel.</span></div></div> \", 2)),\n                    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.exNotes), (t, $index) => {\n                      return (_openBlock(), _createElementBlock(\"div\", {\n                        key: $index,\n                        style: {\"display\":\"flex\",\"gap\":\"12px\",\"align-items\":\"flex-start\"}\n                      }, [\n                        _createElementVNode(\"span\", _hoisted_565, [\n                          ($setup.dcrt.shows(t?.n))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_566, _toDisplayString(t?.n), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ]),\n                        _createElementVNode(\"span\", _hoisted_567, [\n                          ($setup.dcrt.shows(t?.text))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_568, _toDisplayString(t?.text), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ])\n                      ]))\n                    }), 128 /* KEYED_FRAGMENT */)),\n                    _cache[519] || (_cache[519] = _createTextVNode()),\n                    _createElementVNode(\"button\", {\n                      onClick: _cache[58] || (_cache[58] = (...args) => ($setup.dcv.closeModal && $setup.dcv.closeModal(...args))),\n                      style: {\"align-self\":\"flex-start\",\"height\":\"44px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"#7D80FF\",\"color\":\"#FFFFFF\",\"padding\":\"0 20px\",\"font\":\"500 14px var(--font-body)\",\"cursor\":\"pointer\"}\n                    }, \"Begrepen\")\n                  ]))\n                : _createCommentVNode(\"v-if\", true),\n              _cache[540] || (_cache[540] = _createTextVNode()),\n              ($setup.dcv.modal?.isInvite)\n                ? (_openBlock(), _createElementBlock(\"div\", _hoisted_569, [\n                    _createElementVNode(\"label\", _hoisted_570, [\n                      _cache[520] || (_cache[520] = _createTextVNode(\"E-mailadres\\n              \", -1 /* CACHED */)),\n                      _createElementVNode(\"input\", {\n                        value: $setup.dcv.inviteEmail ?? '',\n                        onInput: _cache[59] || (_cache[59] = (...args) => ($setup.dcv.onInviteEmail && $setup.dcv.onInviteEmail(...args))),\n                        onKeydown: _cache[60] || (_cache[60] = (...args) => ($setup.dcv.onInviteKey && $setup.dcv.onInviteKey(...args))),\n                        type: \"email\",\n                        placeholder: \"naam@bedrijf.nl\",\n                        style: _normalizeStyle($setup.dcrt.style(`width:100%;border:none;outline:none;border-radius:10px;background:var(--surface,#2A2260);color:inherit;padding:12px 14px;font:400 14px/1.4 var(--font-body);box-shadow:${$setup.dcv.inviteRing ?? ''}`))\n                      }, null, 44 /* STYLE, PROPS, NEED_HYDRATION */, _hoisted_571),\n                      _cache[521] || (_cache[521] = _createTextVNode()),\n                      ($setup.dcv.inviteBad)\n                        ? (_openBlock(), _createElementBlock(\"span\", _hoisted_572, \"Vul een geldig e-mailadres in.\"))\n                        : _createCommentVNode(\"v-if\", true)\n                    ]),\n                    _cache[526] || (_cache[526] = _createTextVNode()),\n                    _createElementVNode(\"div\", _hoisted_573, [\n                      _createElementVNode(\"button\", {\n                        class: \"app-scp2\",\n                        onClick: _cache[61] || (_cache[61] = (...args) => ($setup.dcv.sendInvite && $setup.dcv.sendInvite(...args))),\n                        style: {\"height\":\"44px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"#7D80FF\",\"color\":\"#FFFFFF\",\"padding\":\"0 20px\",\"font\":\"500 14px var(--font-body)\",\"cursor\":\"pointer\"}\n                      }, \"Verstuur uitnodiging\"),\n                      _cache[522] || (_cache[522] = _createTextVNode()),\n                      _createElementVNode(\"button\", {\n                        class: \"app-scp1\",\n                        onClick: _cache[62] || (_cache[62] = (...args) => ($setup.dcv.copyInvite && $setup.dcv.copyInvite(...args))),\n                        style: {\"height\":\"44px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"none\",\"box-shadow\":\"inset 0 0 0 1px var(--hair,rgba(255,255,255,0.12))\",\"color\":\"inherit\",\"padding\":\"0 18px\",\"font\":\"500 14px var(--font-body)\",\"cursor\":\"pointer\"}\n                      }, [\n                        ($setup.dcrt.shows($setup.dcv.copyLabel))\n                          ? (_openBlock(), _createElementBlock(\"span\", _hoisted_574, _toDisplayString($setup.dcv.copyLabel), 1 /* TEXT */))\n                          : _createCommentVNode(\"v-if\", true)\n                      ])\n                    ]),\n                    _cache[527] || (_cache[527] = _createTextVNode()),\n                    ($setup.dcv.hasInvites)\n                      ? (_openBlock(), _createElementBlock(\"div\", _hoisted_575, [\n                          _cache[524] || (_cache[524] = _createElementVNode(\"span\", { style: {\"font\":\"600 12px/1.4 var(--font-body)\",\"color\":\"var(--muted,rgba(255,255,255,0.75))\"} }, \"Jouw uitnodigingen\", -1 /* CACHED */)),\n                          _cache[525] || (_cache[525] = _createTextVNode()),\n                          (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.invites), (iv, $index) => {\n                            return (_openBlock(), _createElementBlock(\"div\", {\n                              key: $index,\n                              style: {\"border-radius\":\"10px\",\"background\":\"var(--surface,#2A2260)\",\"padding\":\"12px 14px\",\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"center\",\"gap\":\"12px\",\"flex-wrap\":\"wrap\"}\n                            }, [\n                              _createElementVNode(\"span\", _hoisted_576, [\n                                _createElementVNode(\"span\", _hoisted_577, [\n                                  ($setup.dcrt.shows(iv?.email))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_578, _toDisplayString(iv?.email), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ]),\n                                _createElementVNode(\"span\", {\n                                  style: _normalizeStyle($setup.dcrt.style(`font:400 12px/1.4 var(--font-body);color:${iv?.stColor ?? ''}`))\n                                }, [\n                                  ($setup.dcrt.shows(iv?.status))\n                                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_579, _toDisplayString(iv?.status), 1 /* TEXT */))\n                                    : _createCommentVNode(\"v-if\", true)\n                                ], 4 /* STYLE */)\n                              ]),\n                              _cache[523] || (_cache[523] = _createTextVNode()),\n                              (iv?.pending)\n                                ? (_openBlock(), _createElementBlock(\"button\", {\n                                    key: 0,\n                                    onClick: iv?.simulate,\n                                    style: {\"border\":\"none\",\"background\":\"none\",\"color\":\"#7D80FF\",\"padding\":\"0\",\"font\":\"600 12px var(--font-body)\",\"cursor\":\"pointer\",\"text-decoration\":\"underline\"}\n                                  }, \"Simuleer: toegang verleend\", 8 /* PROPS */, _hoisted_580))\n                                : _createCommentVNode(\"v-if\", true)\n                            ]))\n                          }), 128 /* KEYED_FRAGMENT */))\n                        ]))\n                      : _createCommentVNode(\"v-if\", true)\n                  ]))\n                : _createCommentVNode(\"v-if\", true),\n              _cache[541] || (_cache[541] = _createTextVNode()),\n              ($setup.dcv.modal?.isOut)\n                ? (_openBlock(), _createElementBlock(\"div\", _hoisted_581, [\n                    _cache[529] || (_cache[529] = _createElementVNode(\"span\", { style: {\"font\":\"400 15px/1.5 var(--font-body)\"} }, \"Je hebt vandaag 20 vragen gesteld. Morgen krijg je er weer 20. Je gesprekken en verslagen kun je gewoon blijven bekijken.\", -1 /* CACHED */)),\n                    _cache[530] || (_cache[530] = _createTextVNode()),\n                    _createElementVNode(\"div\", _hoisted_582, [\n                      _createElementVNode(\"button\", {\n                        onClick: _cache[63] || (_cache[63] = (...args) => ($setup.dcv.openInvite && $setup.dcv.openInvite(...args))),\n                        style: {\"height\":\"44px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"#7D80FF\",\"color\":\"#FFFFFF\",\"padding\":\"0 20px\",\"font\":\"500 14px var(--font-body)\",\"cursor\":\"pointer\"}\n                      }, \"Nodig iemand uit, +100 vragen\"),\n                      _cache[528] || (_cache[528] = _createTextVNode()),\n                      _createElementVNode(\"button\", {\n                        onClick: _cache[64] || (_cache[64] = (...args) => ($setup.dcv.closeModal && $setup.dcv.closeModal(...args))),\n                        style: {\"height\":\"44px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"none\",\"box-shadow\":\"inset 0 0 0 1px var(--hair,rgba(255,255,255,0.12))\",\"color\":\"inherit\",\"padding\":\"0 18px\",\"font\":\"500 14px var(--font-body)\",\"cursor\":\"pointer\"}\n                      }, \"Sluiten\")\n                    ])\n                  ]))\n                : _createCommentVNode(\"v-if\", true),\n              _cache[542] || (_cache[542] = _createTextVNode()),\n              ($setup.dcv.modal?.isAccount)\n                ? (_openBlock(), _createElementBlock(\"div\", _hoisted_583, [\n                    _createElementVNode(\"button\", {\n                      type: \"button\",\n                      onClick: _cache[65] || (_cache[65] = (...args) => ($setup.dcv.goSignup && $setup.dcv.goSignup(...args))),\n                      style: {\"height\":\"48px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"#7D80FF\",\"color\":\"#FFFFFF\",\"padding\":\"0 24px\",\"font\":\"500 15px var(--font-body)\",\"cursor\":\"pointer\"}\n                    }, \"Account aanmaken\"),\n                    _cache[531] || (_cache[531] = _createTextVNode()),\n                    _createElementVNode(\"button\", {\n                      type: \"button\",\n                      onClick: _cache[66] || (_cache[66] = (...args) => ($setup.dcv.goLogin && $setup.dcv.goLogin(...args))),\n                      style: {\"height\":\"48px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"none\",\"box-shadow\":\"inset 0 0 0 1px var(--hair,rgba(255,255,255,0.12))\",\"color\":\"inherit\",\"padding\":\"0 20px\",\"font\":\"500 15px var(--font-body)\",\"cursor\":\"pointer\"}\n                    }, \"Ik heb al een account\")\n                  ]))\n                : _createCommentVNode(\"v-if\", true),\n              _cache[543] || (_cache[543] = _createTextVNode()),\n              ($setup.dcv.modal?.isTrust)\n                ? (_openBlock(), _createElementBlock(\"div\", _hoisted_584, [\n                    (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.trust), (t, $index) => {\n                      return (_openBlock(), _createElementBlock(\"div\", {\n                        key: $index,\n                        style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"4px\"}\n                      }, [\n                        _createElementVNode(\"span\", _hoisted_585, [\n                          ($setup.dcrt.shows(t?.title))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_586, _toDisplayString(t?.title), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ]),\n                        _cache[532] || (_cache[532] = _createTextVNode()),\n                        _createElementVNode(\"span\", _hoisted_587, [\n                          ($setup.dcrt.shows(t?.text))\n                            ? (_openBlock(), _createElementBlock(\"span\", _hoisted_588, _toDisplayString(t?.text), 1 /* TEXT */))\n                            : _createCommentVNode(\"v-if\", true)\n                        ])\n                      ]))\n                    }), 128 /* KEYED_FRAGMENT */))\n                  ]))\n                : _createCommentVNode(\"v-if\", true),\n              _cache[544] || (_cache[544] = _createTextVNode()),\n              _createElementVNode(\"span\", _hoisted_589, [\n                ($setup.dcrt.shows($setup.dcv.modal?.footnote))\n                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_590, _toDisplayString($setup.dcv.modal?.footnote), 1 /* TEXT */))\n                  : _createCommentVNode(\"v-if\", true)\n              ])\n            ])\n          ]))\n        : _createCommentVNode(\"v-if\", true),\n      _cache[550] || (_cache[550] = _createTextVNode()),\n      ($setup.dcv.toastOn)\n        ? (_openBlock(), _createElementBlock(\"div\", _hoisted_591, [\n            ($setup.dcrt.shows($setup.dcv.toast))\n              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_592, _toDisplayString($setup.dcv.toast), 1 /* TEXT */))\n              : _createCommentVNode(\"v-if\", true)\n          ]))\n        : _createCommentVNode(\"v-if\", true)\n    ], 512 /* NEED_PATCH */)\n  ]))\n}","import script from \"/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/App.vue?type=script\";import { render } from \"/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/App.vue?type=template\"; script.render = render;script.__file = \"../opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/App.vue\";export default script;","// Generated by design-1op1 dc2vue from the <script type=\"text/x-dc\"> of \"Kiek Aanmelden.dc.html\"; do not edit.\nimport { DCLogic, React } from \"../lib/dc\";\nimport { SITE_ROOT } from \"../lib/site\";\n\nclass Component extends DCLogic {\n  state = { first: '', last: '', email: '', pw: '', tried: false, note: '' };\n  params() { try { return new URLSearchParams(window.location.search); } catch (e) { return null; } }\n  enter = (first, last) => {\n    const p = this.params(), q = p && p.get('q');\n    let url = SITE_ROOT + 'app/?account=1&naam=' + encodeURIComponent((first + ' ' + last).trim());\n    if (q) url += '&q=' + encodeURIComponent(q);\n    window.location.href = url;\n  };\n  renderVals() {\n    const s = this.state, okMail = /^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$/.test(s.email), okPw = s.pw.length >= 8;\n    const p = this.params(), fromChat = !!(p && p.get('q'));\n    const q = p && p.get('q');\n    return {\n      bgSrc: SITE_ROOT + 'app/' + (q ? '?gast=1&q=' + encodeURIComponent(q) : ''),\n      close: () => { if (this.closing) return; this.closing = true; const reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches; document.body.setAttribute('data-kp-closing', '1'); setTimeout(() => { window.location.href = q ? SITE_ROOT + 'app/?gast=1&q=' + encodeURIComponent(q) : SITE_ROOT + ''; }, reduce ? 0 : 340); },\n      intro: fromChat ? 'Je eerste antwoord staat klaar. Maak een account aan en praat verder, je gesprek blijft bewaard.' : 'Stel je vragen in gewone taal en krijg antwoord uit Twents onderzoek. Mét bron.',\n      sub: fromChat ? 'Je gesprek van zojuist wordt direct bewaard.' : 'Met je zakelijke account, in een paar seconden.',\n      first: s.first, last: s.last, email: s.email, pw: s.pw, note: s.note,\n      onFirst: e => this.setState({ first: e.target.value }), onLast: e => this.setState({ last: e.target.value }),\n      onEmail: e => this.setState({ email: e.target.value }), onPw: e => this.setState({ pw: e.target.value }),\n      firstErr: s.tried && !s.first.trim(), lastErr: s.tried && !s.last.trim(), emailErr: s.tried && !okMail, pwErr: s.tried && !okPw,\n      submit: e => { e.preventDefault(); if (!s.first.trim() || !s.last.trim() || !okMail || !okPw) { this.setState({ tried: true }); return; } this.enter(s.first.trim(), s.last.trim()); },\n      ssoGoogle: () => this.enter('Marloes', 'ten Berge'), ssoMicrosoft: () => this.enter('Marloes', 'ten Berge'),\n    };\n  }\n}\n\nexport default Component;\n","// Generated by design-1op1 dc2vue from the <helmet> of \"Kiek Aanmelden.dc.html\"; do not edit.\nexport default \"\\n    html,body{margin:0;background:#1F184E}\\n    *{box-sizing:border-box}\\n    a{color:#1F184E;text-decoration:none}\\n    a:hover{color:#1F184E;opacity:0.7}\\n    input::placeholder{color:rgba(31,24,78,0.45)}\\n  @keyframes kp-fade{from{opacity:0}to{opacity:1}}\\n    @keyframes kp-pop{0%{opacity:0;transform:translateY(40px) scale(0.94);border-radius:64px}60%{opacity:1}100%{opacity:1;transform:none;border-radius:32px}}\\n    @keyframes kp-up{from{opacity:0;transform:translateY(32px)}to{opacity:1;transform:none}}\\n    @keyframes kp-card{from{opacity:0;transform:translateX(48px) rotate(2deg)}to{opacity:1;transform:none}}\\n    @keyframes kp-line{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}\\n    @keyframes kp-out{from{opacity:1;transform:none}to{opacity:0;transform:translateY(32px) scale(0.95)}}\\n    @keyframes kp-fadeout{from{opacity:1}to{opacity:0}}\\n    body[data-kp-closing] [role=\\\"dialog\\\"][data-kp]{animation:kp-out 0.35s cubic-bezier(0.4,0,1,1) both !important}\\n    body[data-kp-closing] [data-kp-bg]{animation:kp-fadeout 0.35s ease-in both !important}\\n    @media (prefers-reduced-motion:reduce){[data-kp]{animation:none !important}}\\n  \";\n","<!-- Generated by design-1op1 dc2vue from \"Kiek Aanmelden.dc.html\"; do not edit. -->\n<template><div class=\"sc-host\" data-sc-name=\"Kiek Aanmelden\"><div style=\"position:relative;min-height:100vh;padding:clamp(16px,4vw,56px);display:flex;background:#1F184E\"><iframe :src=\"dcv.bgSrc\" title=\"Kiek app op de achtergrond\" aria-hidden=\"true\" tabindex=\"-1\" style=\"position:fixed;inset:0;width:100%;height:100%;border:0;pointer-events:none\"></iframe><div @click=\"dcv.close\" data-kp=\"1\" data-kp-bg=\"1\" style=\"position:fixed;inset:0;background:rgba(14,10,42,0.6);animation:kp-fade 0.4s ease-out both\"></div><div data-screen-label=\"Aanmelden\" data-kp=\"1\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Account aanmaken\" style=\"position:relative;flex:1;min-height:calc(100vh - 2 * clamp(16px,4vw,56px));border-radius:32px;animation:kp-pop 0.6s cubic-bezier(0.2,0.8,0.2,1) both;background:#1F184E;color:#F9F7F3;font-family:'Golos Text',sans-serif;overflow:hidden;display:flex;flex-direction:column\">\n  <img src=\"/.publisher/sd/kiek/kiek/assets/home/k-outline.svg\" alt=\"\" style=\"position:absolute;left:-140px;top:120px;width:908px;height:1051px;pointer-events:none\">\n\n  <header style=\"position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:24px\">\n    <a :href=\"dcrt.page('')\" aria-label=\"Kiek home\" style=\"display:flex\"><img src=\"/.publisher/sd/kiek/kiek/assets/home/kiek-logo.svg\" alt=\"Kiek\" style=\"width:120px;height:40.195px;display:block\"></a>\n    <button class=\"aanmelden-scp0\" type=\"button\" @click=\"dcv.close\" aria-label=\"Sluiten\" style=\"position:relative;width:54px;height:54px;flex-shrink:0;border:0;border-radius:12px;background:rgba(255,255,255,0.1);cursor:pointer\"><span style=\"position:absolute;left:50%;top:50%;width:22px;height:2px;border-radius:2px;background:#F9F7F3;transform:translate(-50%,-50%) rotate(45deg)\"></span><span style=\"position:absolute;left:50%;top:50%;width:22px;height:2px;border-radius:2px;background:#F9F7F3;transform:translate(-50%,-50%) rotate(-45deg)\"></span></button>\n  </header>\n\n  <main style=\"position:relative;z-index:1;flex:1;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:64px;padding:clamp(24px,4vw,56px) clamp(20px,5.3vw,80px) 80px;max-width:1512px;width:100%;margin:0 auto\">\n    <div style=\"flex:1 1 420px;display:flex;flex-direction:column;gap:40px;min-width:0;container-type:inline-size;animation:kp-up 0.7s cubic-bezier(0.2,0.8,0.2,1) 0.2s both\" data-kp=\"1\">\n      <h1 style=\"margin:0;font-family:Degular,sans-serif;font-weight:800;font-size:clamp(48px,20cqw,136px);line-height:0.75;letter-spacing:-0.02em;color:#F9F7F3;overflow-wrap:normal\">Effe<br><span style=\"position:relative;display:inline-block\"><img src=\"/.publisher/sd/kiek/kiek/assets/home/underline-lavender.svg\" alt=\"\" data-kp=\"1\" style=\"position:absolute;left:-2%;width:104%;bottom:-0.02em;height:0.13em;transform:rotate(-1deg);animation:kp-line 0.6s ease-out 0.7s both\"><span style=\"position:relative\">aanmelden.</span></span></h1>\n      <p style=\"margin:0;max-width:460px;font-size:18px;line-height:1.4;font-weight:500;color:rgba(255,255,255,0.75);text-wrap:pretty\"><span v-if=\"dcrt.shows(dcv.intro)\" class=\"sc-interp\">{{ dcv.intro }}</span></p>\n    </div>\n\n    <div data-kp=\"1\" style=\"flex:0 1 520px;min-width:min(100%,340px);border-radius:32px;background:#7D80FF;animation:kp-card 0.7s cubic-bezier(0.2,0.8,0.2,1) 0.32s both;color:#1F184E;padding:clamp(28px,3.5vw,48px);display:flex;flex-direction:column;gap:24px\">\n      <div style=\"display:flex;flex-direction:column;gap:8px\">\n        <h2 style=\"margin:0;font-family:Degular,sans-serif;font-weight:800;font-size:48px;line-height:0.85;letter-spacing:-0.02em;color:#1F184E\">Maak je account</h2>\n        <span style=\"font-size:16px;line-height:1.4;font-weight:500;color:rgba(31,24,78,0.75)\"><span v-if=\"dcrt.shows(dcv.sub)\" class=\"sc-interp\">{{ dcv.sub }}</span></span>\n      </div>\n      <div style=\"display:flex;flex-direction:column;gap:8px\">\n        <button class=\"aanmelden-scp1\" type=\"button\" @click=\"dcv.ssoGoogle\" style=\"height:54px;border:none;border-radius:12px;background:#F9F7F3;color:#1F184E;font-family:'Golos Text',sans-serif;font-size:16px;font-weight:500;cursor:pointer\">Doorgaan met Google</button>\n        <button class=\"aanmelden-scp1\" type=\"button\" @click=\"dcv.ssoMicrosoft\" style=\"height:54px;border:none;border-radius:12px;background:#F9F7F3;color:#1F184E;font-family:'Golos Text',sans-serif;font-size:16px;font-weight:500;cursor:pointer\">Doorgaan met Microsoft</button>\n      </div>\n      <div style=\"display:flex;align-items:center;gap:12px;font-size:14px;line-height:1.4;font-weight:500;color:rgba(31,24,78,0.75)\">\n        <span style=\"flex:1;height:1px;background:rgba(31,24,78,0.25)\"></span>of met je e-mailadres<span style=\"flex:1;height:1px;background:rgba(31,24,78,0.25)\"></span>\n      </div>\n      <form @submit=\"dcv.submit\" style=\"display:flex;flex-direction:column;gap:16px\">\n        <div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px\">\n          <label style=\"display:flex;flex-direction:column;gap:6px;font-size:14px;line-height:1.4;font-weight:500;color:#1F184E;min-width:0\">Voornaam\n            <input :value=\"dcv.first ?? ''\" @input=\"dcv.onFirst\" autocomplete=\"given-name\" placeholder=\"Marloes\" style=\"height:54px;border:none;border-radius:12px;background:rgba(31,24,78,0.1);color:#1F184E;padding:0 16px;font-family:'Golos Text',sans-serif;font-size:16px;font-weight:500;outline:none;width:100%;min-width:0\">\n            <template v-if=\"dcv.firstErr\"><span style=\"font-size:13px;color:#4F0151\">Vul je voornaam in.</span></template>\n          </label>\n          <label style=\"display:flex;flex-direction:column;gap:6px;font-size:14px;line-height:1.4;font-weight:500;color:#1F184E;min-width:0\">Achternaam\n            <input :value=\"dcv.last ?? ''\" @input=\"dcv.onLast\" autocomplete=\"family-name\" placeholder=\"ten Berge\" style=\"height:54px;border:none;border-radius:12px;background:rgba(31,24,78,0.1);color:#1F184E;padding:0 16px;font-family:'Golos Text',sans-serif;font-size:16px;font-weight:500;outline:none;width:100%;min-width:0\">\n            <template v-if=\"dcv.lastErr\"><span style=\"font-size:13px;color:#4F0151\">Vul je achternaam in.</span></template>\n          </label>\n        </div>\n        <label style=\"display:flex;flex-direction:column;gap:6px;font-size:14px;line-height:1.4;font-weight:500;color:#1F184E\">Zakelijk e-mailadres\n          <input type=\"email\" :value=\"dcv.email ?? ''\" @input=\"dcv.onEmail\" autocomplete=\"email\" placeholder=\"naam@bedrijf.nl\" style=\"height:54px;border:none;border-radius:12px;background:rgba(31,24,78,0.1);color:#1F184E;padding:0 16px;font-family:'Golos Text',sans-serif;font-size:16px;font-weight:500;outline:none\">\n          <template v-if=\"dcv.emailErr\"><span style=\"font-size:13px;color:#4F0151\">Vul een geldig e-mailadres in.</span></template>\n        </label>\n        <label style=\"display:flex;flex-direction:column;gap:6px;font-size:14px;line-height:1.4;font-weight:500;color:#1F184E\">\n          Wachtwoord\n          <input type=\"password\" :value=\"dcv.pw ?? ''\" @input=\"dcv.onPw\" autocomplete=\"new-password\" placeholder=\"Minimaal 8 tekens\" style=\"height:54px;border:none;border-radius:12px;background:rgba(31,24,78,0.1);color:#1F184E;padding:0 16px;font-family:'Golos Text',sans-serif;font-size:16px;font-weight:500;outline:none\">\n          <template v-if=\"dcv.pwErr\"><span style=\"font-size:13px;color:#4F0151\">Kies een wachtwoord van minimaal 8 tekens.</span></template>\n        </label>\n        <button class=\"aanmelden-scp2\" type=\"submit\" style=\"height:54px;display:flex;align-items:center;justify-content:center;gap:12px;border:none;border-radius:12px;background:#1F184E;color:#F9F7F3;font-family:'Golos Text',sans-serif;font-size:16px;font-weight:500;cursor:pointer\">Account aanmaken<img src=\"/.publisher/sd/kiek/kiek/assets/home/arrow-cream.svg\" alt=\"\" style=\"width:26px;height:16px\"></button>\n      </form>\n      <template v-if=\"dcv.note\">\n        <span role=\"status\" style=\"font-size:14px;line-height:1.4;font-weight:500;color:#1F184E\"><span v-if=\"dcrt.shows(dcv.note)\" class=\"sc-interp\">{{ dcv.note }}</span></span>\n      </template>\n      <span style=\"font-size:14px;line-height:1.4;font-weight:500;color:rgba(31,24,78,0.75)\">Heb je al een account? <a :href=\"dcrt.page('inloggen/')\" style=\"color:#1F184E;text-decoration:underline;text-underline-offset:3px\">Inloggen</a></span>\n    </div>\n  </main></div></div></div></template>\n\n<script setup lang=\"ts\">\nimport * as dcrt from \"../lib/dc\";\nimport { useHelmet } from \"../lib/helmet\";\nimport Logic from \"./Aanmelden.logic.js\";\nimport helmetCss from \"./Aanmelden.helmet\";\n\nconst props = defineProps({\n\n});\nuseHelmet(helmetCss);\nconst dcv = dcrt.useDC(Logic, props);\n</script>\n","import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = {\n  class: \"sc-host\",\n  \"data-sc-name\": \"Kiek Aanmelden\"\n}\nconst _hoisted_2 = { style: {\"position\":\"relative\",\"min-height\":\"100vh\",\"padding\":\"clamp(16px,4vw,56px)\",\"display\":\"flex\",\"background\":\"#1F184E\"} }\nconst _hoisted_3 = [\"src\"]\nconst _hoisted_4 = {\n  \"data-screen-label\": \"Aanmelden\",\n  \"data-kp\": \"1\",\n  role: \"dialog\",\n  \"aria-modal\": \"true\",\n  \"aria-label\": \"Account aanmaken\",\n  style: {\"position\":\"relative\",\"flex\":\"1\",\"min-height\":\"calc(100vh - 2 * clamp(16px,4vw,56px))\",\"border-radius\":\"32px\",\"animation\":\"kp-pop 0.6s cubic-bezier(0.2,0.8,0.2,1) both\",\"background\":\"#1F184E\",\"color\":\"#F9F7F3\",\"font-family\":\"'Golos Text',sans-serif\",\"overflow\":\"hidden\",\"display\":\"flex\",\"flex-direction\":\"column\"}\n}\nconst _hoisted_5 = { style: {\"position\":\"relative\",\"z-index\":\"2\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"space-between\",\"gap\":\"24px\",\"padding\":\"24px\"} }\nconst _hoisted_6 = [\"href\"]\nconst _hoisted_7 = { style: {\"position\":\"relative\",\"z-index\":\"1\",\"flex\":\"1\",\"display\":\"flex\",\"flex-wrap\":\"wrap\",\"align-items\":\"center\",\"justify-content\":\"space-between\",\"gap\":\"64px\",\"padding\":\"clamp(24px,4vw,56px) clamp(20px,5.3vw,80px) 80px\",\"max-width\":\"1512px\",\"width\":\"100%\",\"margin\":\"0 auto\"} }\nconst _hoisted_8 = {\n  style: {\"flex\":\"1 1 420px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"40px\",\"min-width\":\"0\",\"container-type\":\"inline-size\",\"animation\":\"kp-up 0.7s cubic-bezier(0.2,0.8,0.2,1) 0.2s both\"},\n  \"data-kp\": \"1\"\n}\nconst _hoisted_9 = { style: {\"margin\":\"0\",\"max-width\":\"460px\",\"font-size\":\"18px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"color\":\"rgba(255,255,255,0.75)\",\"text-wrap\":\"pretty\"} }\nconst _hoisted_10 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_11 = {\n  \"data-kp\": \"1\",\n  style: {\"flex\":\"0 1 520px\",\"min-width\":\"min(100%,340px)\",\"border-radius\":\"32px\",\"background\":\"#7D80FF\",\"animation\":\"kp-card 0.7s cubic-bezier(0.2,0.8,0.2,1) 0.32s both\",\"color\":\"#1F184E\",\"padding\":\"clamp(28px,3.5vw,48px)\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"24px\"}\n}\nconst _hoisted_12 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\"} }\nconst _hoisted_13 = { style: {\"font-size\":\"16px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"color\":\"rgba(31,24,78,0.75)\"} }\nconst _hoisted_14 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_15 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\"} }\nconst _hoisted_16 = { style: {\"display\":\"grid\",\"grid-template-columns\":\"repeat(auto-fit,minmax(160px,1fr))\",\"gap\":\"12px\"} }\nconst _hoisted_17 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\",\"font-size\":\"14px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"color\":\"#1F184E\",\"min-width\":\"0\"} }\nconst _hoisted_18 = [\"value\"]\nconst _hoisted_19 = {\n  key: 0,\n  style: {\"font-size\":\"13px\",\"color\":\"#4F0151\"}\n}\nconst _hoisted_20 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\",\"font-size\":\"14px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"color\":\"#1F184E\",\"min-width\":\"0\"} }\nconst _hoisted_21 = [\"value\"]\nconst _hoisted_22 = {\n  key: 0,\n  style: {\"font-size\":\"13px\",\"color\":\"#4F0151\"}\n}\nconst _hoisted_23 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\",\"font-size\":\"14px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"color\":\"#1F184E\"} }\nconst _hoisted_24 = [\"value\"]\nconst _hoisted_25 = {\n  key: 0,\n  style: {\"font-size\":\"13px\",\"color\":\"#4F0151\"}\n}\nconst _hoisted_26 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\",\"font-size\":\"14px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"color\":\"#1F184E\"} }\nconst _hoisted_27 = [\"value\"]\nconst _hoisted_28 = {\n  key: 0,\n  style: {\"font-size\":\"13px\",\"color\":\"#4F0151\"}\n}\nconst _hoisted_29 = {\n  key: 0,\n  role: \"status\",\n  style: {\"font-size\":\"14px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"color\":\"#1F184E\"}\n}\nconst _hoisted_30 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_31 = { style: {\"font-size\":\"14px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"color\":\"rgba(31,24,78,0.75)\"} }\nconst _hoisted_32 = [\"href\"]\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n  return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n    _createElementVNode(\"div\", _hoisted_2, [\n      _createElementVNode(\"iframe\", {\n        src: $setup.dcv.bgSrc,\n        title: \"Kiek app op de achtergrond\",\n        \"aria-hidden\": \"true\",\n        tabindex: \"-1\",\n        style: {\"position\":\"fixed\",\"inset\":\"0\",\"width\":\"100%\",\"height\":\"100%\",\"border\":\"0\",\"pointer-events\":\"none\"}\n      }, null, 8 /* PROPS */, _hoisted_3),\n      _createElementVNode(\"div\", {\n        onClick: _cache[0] || (_cache[0] = (...args) => ($setup.dcv.close && $setup.dcv.close(...args))),\n        \"data-kp\": \"1\",\n        \"data-kp-bg\": \"1\",\n        style: {\"position\":\"fixed\",\"inset\":\"0\",\"background\":\"rgba(14,10,42,0.6)\",\"animation\":\"kp-fade 0.4s ease-out both\"}\n      }),\n      _createElementVNode(\"div\", _hoisted_4, [\n        _cache[38] || (_cache[38] = _createElementVNode(\"img\", {\n          src: \"/.publisher/sd/kiek/kiek/assets/home/k-outline.svg\",\n          alt: \"\",\n          style: {\"position\":\"absolute\",\"left\":\"-140px\",\"top\":\"120px\",\"width\":\"908px\",\"height\":\"1051px\",\"pointer-events\":\"none\"}\n        }, null, -1 /* CACHED */)),\n        _cache[39] || (_cache[39] = _createTextVNode()),\n        _createElementVNode(\"header\", _hoisted_5, [\n          _createElementVNode(\"a\", {\n            href: $setup.dcrt.page(''),\n            \"aria-label\": \"Kiek home\",\n            style: {\"display\":\"flex\"}\n          }, _cache[9] || (_cache[9] = [\n            _createElementVNode(\"img\", {\n              src: \"/.publisher/sd/kiek/kiek/assets/home/kiek-logo.svg\",\n              alt: \"Kiek\",\n              style: {\"width\":\"120px\",\"height\":\"40.195px\",\"display\":\"block\"}\n            }, null, -1 /* CACHED */)\n          ]), 8 /* PROPS */, _hoisted_6),\n          _cache[11] || (_cache[11] = _createTextVNode()),\n          _createElementVNode(\"button\", {\n            class: \"aanmelden-scp0\",\n            type: \"button\",\n            onClick: _cache[1] || (_cache[1] = (...args) => ($setup.dcv.close && $setup.dcv.close(...args))),\n            \"aria-label\": \"Sluiten\",\n            style: {\"position\":\"relative\",\"width\":\"54px\",\"height\":\"54px\",\"flex-shrink\":\"0\",\"border\":\"0\",\"border-radius\":\"12px\",\"background\":\"rgba(255,255,255,0.1)\",\"cursor\":\"pointer\"}\n          }, _cache[10] || (_cache[10] = [\n            _createElementVNode(\"span\", { style: {\"position\":\"absolute\",\"left\":\"50%\",\"top\":\"50%\",\"width\":\"22px\",\"height\":\"2px\",\"border-radius\":\"2px\",\"background\":\"#F9F7F3\",\"transform\":\"translate(-50%,-50%) rotate(45deg)\"} }, null, -1 /* CACHED */),\n            _createElementVNode(\"span\", { style: {\"position\":\"absolute\",\"left\":\"50%\",\"top\":\"50%\",\"width\":\"22px\",\"height\":\"2px\",\"border-radius\":\"2px\",\"background\":\"#F9F7F3\",\"transform\":\"translate(-50%,-50%) rotate(-45deg)\"} }, null, -1 /* CACHED */)\n          ]))\n        ]),\n        _cache[40] || (_cache[40] = _createTextVNode()),\n        _createElementVNode(\"main\", _hoisted_7, [\n          _createElementVNode(\"div\", _hoisted_8, [\n            _cache[12] || (_cache[12] = _createElementVNode(\"h1\", { style: {\"margin\":\"0\",\"font-family\":\"Degular,sans-serif\",\"font-weight\":\"800\",\"font-size\":\"clamp(48px,20cqw,136px)\",\"line-height\":\"0.75\",\"letter-spacing\":\"-0.02em\",\"color\":\"#F9F7F3\",\"overflow-wrap\":\"normal\"} }, [\n              _createTextVNode(\"Effe\"),\n              _createElementVNode(\"br\"),\n              _createElementVNode(\"span\", { style: {\"position\":\"relative\",\"display\":\"inline-block\"} }, [\n                _createElementVNode(\"img\", {\n                  src: \"/.publisher/sd/kiek/kiek/assets/home/underline-lavender.svg\",\n                  alt: \"\",\n                  \"data-kp\": \"1\",\n                  style: {\"position\":\"absolute\",\"left\":\"-2%\",\"width\":\"104%\",\"bottom\":\"-0.02em\",\"height\":\"0.13em\",\"transform\":\"rotate(-1deg)\",\"animation\":\"kp-line 0.6s ease-out 0.7s both\"}\n                }),\n                _createElementVNode(\"span\", { style: {\"position\":\"relative\"} }, \"aanmelden.\")\n              ])\n            ], -1 /* CACHED */)),\n            _cache[13] || (_cache[13] = _createTextVNode()),\n            _createElementVNode(\"p\", _hoisted_9, [\n              ($setup.dcrt.shows($setup.dcv.intro))\n                ? (_openBlock(), _createElementBlock(\"span\", _hoisted_10, _toDisplayString($setup.dcv.intro), 1 /* TEXT */))\n                : _createCommentVNode(\"v-if\", true)\n            ])\n          ]),\n          _cache[37] || (_cache[37] = _createTextVNode()),\n          _createElementVNode(\"div\", _hoisted_11, [\n            _createElementVNode(\"div\", _hoisted_12, [\n              _cache[14] || (_cache[14] = _createElementVNode(\"h2\", { style: {\"margin\":\"0\",\"font-family\":\"Degular,sans-serif\",\"font-weight\":\"800\",\"font-size\":\"48px\",\"line-height\":\"0.85\",\"letter-spacing\":\"-0.02em\",\"color\":\"#1F184E\"} }, \"Maak je account\", -1 /* CACHED */)),\n              _cache[15] || (_cache[15] = _createTextVNode()),\n              _createElementVNode(\"span\", _hoisted_13, [\n                ($setup.dcrt.shows($setup.dcv.sub))\n                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_14, _toDisplayString($setup.dcv.sub), 1 /* TEXT */))\n                  : _createCommentVNode(\"v-if\", true)\n              ])\n            ]),\n            _cache[31] || (_cache[31] = _createTextVNode()),\n            _createElementVNode(\"div\", _hoisted_15, [\n              _createElementVNode(\"button\", {\n                class: \"aanmelden-scp1\",\n                type: \"button\",\n                onClick: _cache[2] || (_cache[2] = (...args) => ($setup.dcv.ssoGoogle && $setup.dcv.ssoGoogle(...args))),\n                style: {\"height\":\"54px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"#F9F7F3\",\"color\":\"#1F184E\",\"font-family\":\"'Golos Text',sans-serif\",\"font-size\":\"16px\",\"font-weight\":\"500\",\"cursor\":\"pointer\"}\n              }, \"Doorgaan met Google\"),\n              _cache[16] || (_cache[16] = _createTextVNode()),\n              _createElementVNode(\"button\", {\n                class: \"aanmelden-scp1\",\n                type: \"button\",\n                onClick: _cache[3] || (_cache[3] = (...args) => ($setup.dcv.ssoMicrosoft && $setup.dcv.ssoMicrosoft(...args))),\n                style: {\"height\":\"54px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"#F9F7F3\",\"color\":\"#1F184E\",\"font-family\":\"'Golos Text',sans-serif\",\"font-size\":\"16px\",\"font-weight\":\"500\",\"cursor\":\"pointer\"}\n              }, \"Doorgaan met Microsoft\")\n            ]),\n            _cache[32] || (_cache[32] = _createTextVNode()),\n            _cache[33] || (_cache[33] = _createElementVNode(\"div\", { style: {\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"12px\",\"font-size\":\"14px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"color\":\"rgba(31,24,78,0.75)\"} }, [\n              _createElementVNode(\"span\", { style: {\"flex\":\"1\",\"height\":\"1px\",\"background\":\"rgba(31,24,78,0.25)\"} }),\n              _createTextVNode(\"of met je e-mailadres\"),\n              _createElementVNode(\"span\", { style: {\"flex\":\"1\",\"height\":\"1px\",\"background\":\"rgba(31,24,78,0.25)\"} })\n            ], -1 /* CACHED */)),\n            _cache[34] || (_cache[34] = _createTextVNode()),\n            _createElementVNode(\"form\", {\n              onSubmit: _cache[8] || (_cache[8] = (...args) => ($setup.dcv.submit && $setup.dcv.submit(...args))),\n              style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"16px\"}\n            }, [\n              _createElementVNode(\"div\", _hoisted_16, [\n                _createElementVNode(\"label\", _hoisted_17, [\n                  _cache[17] || (_cache[17] = _createTextVNode(\"Voornaam\\n            \", -1 /* CACHED */)),\n                  _createElementVNode(\"input\", {\n                    value: $setup.dcv.first ?? '',\n                    onInput: _cache[4] || (_cache[4] = (...args) => ($setup.dcv.onFirst && $setup.dcv.onFirst(...args))),\n                    autocomplete: \"given-name\",\n                    placeholder: \"Marloes\",\n                    style: {\"height\":\"54px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"rgba(31,24,78,0.1)\",\"color\":\"#1F184E\",\"padding\":\"0 16px\",\"font-family\":\"'Golos Text',sans-serif\",\"font-size\":\"16px\",\"font-weight\":\"500\",\"outline\":\"none\",\"width\":\"100%\",\"min-width\":\"0\"}\n                  }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_18),\n                  _cache[18] || (_cache[18] = _createTextVNode()),\n                  ($setup.dcv.firstErr)\n                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_19, \"Vul je voornaam in.\"))\n                    : _createCommentVNode(\"v-if\", true)\n                ]),\n                _cache[21] || (_cache[21] = _createTextVNode()),\n                _createElementVNode(\"label\", _hoisted_20, [\n                  _cache[19] || (_cache[19] = _createTextVNode(\"Achternaam\\n            \", -1 /* CACHED */)),\n                  _createElementVNode(\"input\", {\n                    value: $setup.dcv.last ?? '',\n                    onInput: _cache[5] || (_cache[5] = (...args) => ($setup.dcv.onLast && $setup.dcv.onLast(...args))),\n                    autocomplete: \"family-name\",\n                    placeholder: \"ten Berge\",\n                    style: {\"height\":\"54px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"rgba(31,24,78,0.1)\",\"color\":\"#1F184E\",\"padding\":\"0 16px\",\"font-family\":\"'Golos Text',sans-serif\",\"font-size\":\"16px\",\"font-weight\":\"500\",\"outline\":\"none\",\"width\":\"100%\",\"min-width\":\"0\"}\n                  }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_21),\n                  _cache[20] || (_cache[20] = _createTextVNode()),\n                  ($setup.dcv.lastErr)\n                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_22, \"Vul je achternaam in.\"))\n                    : _createCommentVNode(\"v-if\", true)\n                ])\n              ]),\n              _cache[26] || (_cache[26] = _createTextVNode()),\n              _createElementVNode(\"label\", _hoisted_23, [\n                _cache[22] || (_cache[22] = _createTextVNode(\"Zakelijk e-mailadres\\n          \", -1 /* CACHED */)),\n                _createElementVNode(\"input\", {\n                  type: \"email\",\n                  value: $setup.dcv.email ?? '',\n                  onInput: _cache[6] || (_cache[6] = (...args) => ($setup.dcv.onEmail && $setup.dcv.onEmail(...args))),\n                  autocomplete: \"email\",\n                  placeholder: \"naam@bedrijf.nl\",\n                  style: {\"height\":\"54px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"rgba(31,24,78,0.1)\",\"color\":\"#1F184E\",\"padding\":\"0 16px\",\"font-family\":\"'Golos Text',sans-serif\",\"font-size\":\"16px\",\"font-weight\":\"500\",\"outline\":\"none\"}\n                }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_24),\n                _cache[23] || (_cache[23] = _createTextVNode()),\n                ($setup.dcv.emailErr)\n                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_25, \"Vul een geldig e-mailadres in.\"))\n                  : _createCommentVNode(\"v-if\", true)\n              ]),\n              _cache[27] || (_cache[27] = _createTextVNode()),\n              _createElementVNode(\"label\", _hoisted_26, [\n                _cache[24] || (_cache[24] = _createTextVNode(\"\\n          Wachtwoord\\n          \", -1 /* CACHED */)),\n                _createElementVNode(\"input\", {\n                  type: \"password\",\n                  value: $setup.dcv.pw ?? '',\n                  onInput: _cache[7] || (_cache[7] = (...args) => ($setup.dcv.onPw && $setup.dcv.onPw(...args))),\n                  autocomplete: \"new-password\",\n                  placeholder: \"Minimaal 8 tekens\",\n                  style: {\"height\":\"54px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"rgba(31,24,78,0.1)\",\"color\":\"#1F184E\",\"padding\":\"0 16px\",\"font-family\":\"'Golos Text',sans-serif\",\"font-size\":\"16px\",\"font-weight\":\"500\",\"outline\":\"none\"}\n                }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_27),\n                _cache[25] || (_cache[25] = _createTextVNode()),\n                ($setup.dcv.pwErr)\n                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_28, \"Kies een wachtwoord van minimaal 8 tekens.\"))\n                  : _createCommentVNode(\"v-if\", true)\n              ]),\n              _cache[28] || (_cache[28] = _createTextVNode()),\n              _cache[29] || (_cache[29] = _createElementVNode(\"button\", {\n                class: \"aanmelden-scp2\",\n                type: \"submit\",\n                style: {\"height\":\"54px\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\",\"gap\":\"12px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"#1F184E\",\"color\":\"#F9F7F3\",\"font-family\":\"'Golos Text',sans-serif\",\"font-size\":\"16px\",\"font-weight\":\"500\",\"cursor\":\"pointer\"}\n              }, [\n                _createTextVNode(\"Account aanmaken\"),\n                _createElementVNode(\"img\", {\n                  src: \"/.publisher/sd/kiek/kiek/assets/home/arrow-cream.svg\",\n                  alt: \"\",\n                  style: {\"width\":\"26px\",\"height\":\"16px\"}\n                })\n              ], -1 /* CACHED */))\n            ], 32 /* NEED_HYDRATION */),\n            _cache[35] || (_cache[35] = _createTextVNode()),\n            ($setup.dcv.note)\n              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_29, [\n                  ($setup.dcrt.shows($setup.dcv.note))\n                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_30, _toDisplayString($setup.dcv.note), 1 /* TEXT */))\n                    : _createCommentVNode(\"v-if\", true)\n                ]))\n              : _createCommentVNode(\"v-if\", true),\n            _cache[36] || (_cache[36] = _createTextVNode()),\n            _createElementVNode(\"span\", _hoisted_31, [\n              _cache[30] || (_cache[30] = _createTextVNode(\"Heb je al een account? \", -1 /* CACHED */)),\n              _createElementVNode(\"a\", {\n                href: $setup.dcrt.page('inloggen/'),\n                style: {\"color\":\"#1F184E\",\"text-decoration\":\"underline\",\"text-underline-offset\":\"3px\"}\n              }, \"Inloggen\", 8 /* PROPS */, _hoisted_32)\n            ])\n          ])\n        ])\n      ])\n    ])\n  ]))\n}","import script from \"/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Aanmelden.vue?type=script\";import { render } from \"/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Aanmelden.vue?type=template\"; script.render = render;script.__file = \"../opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Aanmelden.vue\";export default script;","// Generated by design-1op1 dc2vue from the <script type=\"text/x-dc\"> of \"Kiek Homepage.dc.html\"; do not edit.\nimport { DCLogic, React } from \"../lib/dc\";\nimport { SITE_ROOT } from \"../lib/site\";\n\nclass Component extends DCLogic {\n  state = { q: '', ph: '', w: typeof window !== 'undefined' ? window.innerWidth : 1512 };\n  examples = ['Ik overweeg om een tweede vestiging te openen in Enschede', 'Ik overweeg om over te stappen op lokale leveranciers', 'Ik overweeg om zonnepanelen op ons bedrijfspand te leggen'];\n  componentDidMount() {\n    this.onResize = () => this.setState({ w: window.innerWidth });\n    window.addEventListener('resize', this.onResize);\n    window.addEventListener('message', this.onMsg);\n    this.ex = 0; this.ch = 0; this.dir = 1;\n    this.tick = setInterval(() => {\n      if (this.props.typingDemo === false) { if (this.state.ph !== 'Ik overweeg om e|') this.setState({ ph: 'Ik overweeg om e|' }); return; }\n      const t = this.examples[this.ex];\n      if (this.pause > 0) { this.pause--; return; }\n      this.ch += this.dir;\n      if (this.ch >= t.length) { this.dir = -1; this.pause = 30; }\n      if (this.ch <= 14 && this.dir < 0) { this.dir = 1; this.ex = (this.ex + 1) % this.examples.length; this.pause = 4; }\n      this.setState({ ph: t.slice(0, this.ch) + '|' });\n    }, 60);\n  }\n  componentWillUnmount() { window.removeEventListener('resize', this.onResize); window.removeEventListener('message', this.onMsg); clearInterval(this.tick); }\n  onMsg = e => { if (e.data === 'kiek-close-login') { this.setState({ loginOpen: false }); document.documentElement.style.overflow = ''; } };\n  rowRef = React.createRef();\n  updRow = () => { const el = this.rowRef.current; if (!el) return; const atStart = el.scrollLeft < 8, atEnd = el.scrollLeft + el.clientWidth >= el.scrollWidth - 8; const idx = Math.round(el.scrollLeft / 459) + 1; if (atStart !== this.state.atStart || atEnd !== this.state.atEnd || idx !== this.state.idx) this.setState({ atStart, atEnd, idx }); };\n  step = d => { const el = this.rowRef.current; if (!el) return; const card = el.firstElementChild; const w = card ? card.getBoundingClientRect().width + 24 : 459; const n = Math.max(1, Math.floor(el.clientWidth / w)); el.scrollBy({ left: d * w * n, behavior: 'smooth' }); };\n  componentDidUpdate() { this.updRow(); }\n  go = () => {\n    const q = this.state.q.trim() || this.examples[this.ex || 0];\n    window.location.href = SITE_ROOT + 'app/?gast=1&q=' + encodeURIComponent(q);\n  };\n  renderVals() {\n    const grid = this.props.cardLayout === 'raster';\n    return {\n      q: this.state.q,\n      placeholder: this.state.ph || 'Ik overweeg om e|',\n      onQ: e => this.setState({ q: e.target.value }),\n      onKey: e => { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); this.go(); } },\n      submit: e => { e.preventDefault(); this.go(); },\n      showLinks: this.state.w >= 1000,\n      loginOpen: !!this.state.loginOpen,\n      openLogin: e => { e.preventDefault(); document.documentElement.style.overflow = 'hidden'; this.setState({ loginOpen: true }); },\n      rowRef: this.rowRef, onRowScroll: this.updRow,\n      prev: () => this.step(-1), next: () => this.step(1),\n      showNav: !grid,\n      atStart: this.state.atStart !== false, atEnd: !!this.state.atEnd,\n      prevOpacity: this.state.atStart !== false ? 0.4 : 1, nextOpacity: this.state.atEnd ? 0.4 : 1,\n      pageLabel: (this.state.idx || 1) + ' / 6 onderzoeken',\n      cardRow: grid\n        ? { display: 'grid', gridTemplateColumns: 'repeat(auto-fill,min(435px,82vw))', justifyContent: 'space-between', gap: 24 }\n        : { display: 'flex', gap: 24, overflowX: 'auto', scrollSnapType: 'x mandatory', scrollbarWidth: 'none', marginRight: 'calc(-1 * clamp(20px,5.3vw,80px))', paddingRight: 'clamp(20px,5.3vw,80px)', paddingBottom: 8 },\n    };\n  }\n}\n\nexport default Component;\n","// Generated by design-1op1 dc2vue from the <helmet> of \"Kiek Homepage.dc.html\"; do not edit.\nexport default \"\\n    html,body{margin:0;background:#1F184E}\\n    *{box-sizing:border-box}\\n    a{color:#F9F7F3;text-decoration:none}\\n    a:hover{color:#7D80FF}\\n    textarea::placeholder{color:rgba(249,247,243,0.6)}\\n    .kh-scroll::-webkit-scrollbar{display:none}\\n    @keyframes kh-slide{from{transform:translateX(0)}to{transform:translateX(-50%)}}\\n    .kh-marquee{animation:kh-slide 40s linear infinite}\\n    .kh-marquee:hover{animation-play-state:paused}\\n    @media (prefers-reduced-motion:reduce){.kh-marquee{animation:none}}\\n  \";\n","/** The research cards on the homepage carousel. Titles may contain \"\\n\" for a hard line break. */\nexport type ResearchPair = \"lavender\" | \"pink\" | \"mint\";\n\nexport interface ResearchCard {\n  title: string;\n  image: string;\n  pair: ResearchPair;\n  href: string;\n}\n\nconst assets = \"/.publisher/sd/kiek/kiek/assets/home/\";\n\n/** Block colour, ink and the large K shape per colour pair, as placed in the design. */\nexport const researchPairs: Record<ResearchPair, { block: string; ink: string; shape: string; shapeStyle: string }> = {\n  lavender: { block: \"#7D80FF\", ink: \"#1F184E\", shape: assets + \"k-solid-navy.svg\", shapeStyle: \"position:absolute;left:-199px;top:96px;width:586px;height:679px;opacity:0.25\" },\n  pink: { block: \"#F388FF\", ink: \"#4F0151\", shape: assets + \"k-solid-plum.svg\", shapeStyle: \"position:absolute;left:0;top:0;width:586px;height:679px;transform:matrix(0,-1,1,0,16,678);transform-origin:0 0;opacity:0.25\" },\n  mint: { block: \"#70E9A2\", ink: \"#062D18\", shape: assets + \"k-solid-forest.svg\", shapeStyle: \"position:absolute;left:0;top:0;width:472px;height:546.211px;transform:matrix(0,1,-1,0,387.211,86);transform-origin:0 0;opacity:0.25\" },\n};\n\n// TODO (open punt 2 en 3): echte onderzoekskaarten en bestemmingen; kaart 4 herhaalt kaart 1, 5 en 6 zijn verzonnen.\nexport const researchCards: ResearchCard[] = [\n  { title: \"Wat draagt meer bij aan welzijn: inkomen of sociale verbinding?\", image: assets + \"a24f7e5cc273bdfc.png\", pair: \"lavender\", href: \"#\" },\n  { title: \"De werkelijke kosten van goedkoop inkopen.\", image: assets + \"12b797636bb87260.png\", pair: \"pink\", href: \"#\" },\n  { title: \"Duurzaamheids-\\ngrenzen die Twente het hardst raken.\", image: assets + \"b52843216ccf79a1.png\", pair: \"mint\", href: \"#\" },\n  { title: \"Wat draagt meer bij aan welzijn: inkomen of sociale verbinding?\", image: assets + \"a24f7e5cc273bdfc.png\", pair: \"lavender\", href: \"#\" },\n  { title: \"Wat levert lokaal inkopen de regio op?\", image: assets + \"12b797636bb87260.png\", pair: \"pink\", href: \"#\" },\n  { title: \"Hoe houd je jong talent vast in Twente?\", image: assets + \"b52843216ccf79a1.png\", pair: \"mint\", href: \"#\" },\n];\n","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode } from \"vue\"\n\nconst _hoisted_1 = [\"href\"]\nconst _hoisted_2 = [\"src\"]\nconst _hoisted_3 = { key: 0 }\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n  return (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.researchCards, (card, index) => {\n    return (_openBlock(), _createElementBlock(\"a\", {\n      key: index,\n      class: \"kh-card\",\n      href: card.href,\n      style: _normalizeStyle(`position:relative;flex:0 0 auto;width:min(435px,82vw);height:600px;border-radius:16px;background:url(${card.image}) center / cover no-repeat;padding:304px 16px 16px;display:flex;flex-direction:column;justify-content:flex-end;scroll-snap-align:start`)\n    }, [\n      _createElementVNode(\"div\", {\n        style: _normalizeStyle(`position:relative;height:280px;overflow:hidden;border-radius:24px;background:${$setup.researchPairs[card.pair].block};padding:40px 32px;display:flex;flex-direction:column;gap:8px`)\n      }, [\n        _createElementVNode(\"img\", {\n          src: $setup.researchPairs[card.pair].shape,\n          alt: \"\",\n          style: _normalizeStyle($setup.researchPairs[card.pair].shapeStyle)\n        }, null, 12 /* STYLE, PROPS */, _hoisted_2),\n        _createElementVNode(\"span\", {\n          style: _normalizeStyle(`position:relative;font-size:16px;line-height:1.4;font-weight:500;color:${$setup.researchPairs[card.pair].ink}`)\n        }, \"Uit het onderzoek van Cinergie Twente\", 4 /* STYLE */),\n        _createElementVNode(\"span\", {\n          style: _normalizeStyle(`position:relative;font-family:Degular,sans-serif;font-weight:700;font-size:40px;line-height:0.9;letter-spacing:-0.02em;color:${$setup.researchPairs[card.pair].ink}`)\n        }, [\n          (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(card.title.split('\\n'), (line, li) => {\n            return (_openBlock(), _createElementBlock(_Fragment, { key: li }, [\n              li\n                ? (_openBlock(), _createElementBlock(\"br\", _hoisted_3))\n                : _createCommentVNode(\"v-if\", true),\n              _createTextVNode(_toDisplayString(line), 1 /* TEXT */)\n            ], 64 /* STABLE_FRAGMENT */))\n          }), 128 /* KEYED_FRAGMENT */))\n        ], 4 /* STYLE */),\n        _cache[0] || (_cache[0] = _createElementVNode(\"span\", { style: {\"position\":\"absolute\",\"right\":\"16px\",\"bottom\":\"16px\",\"width\":\"72.5px\",\"height\":\"48px\",\"border-radius\":\"12px\",\"background\":\"#F9F7F3\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\"} }, [\n          _createElementVNode(\"img\", {\n            src: \"/.publisher/sd/kiek/kiek/assets/home/arrow-navy.svg\",\n            alt: \"\",\n            style: {\"width\":\"26px\",\"height\":\"16px\"}\n          })\n        ], -1 /* CACHED */))\n      ], 4 /* STYLE */)\n    ], 12 /* STYLE, PROPS */, _hoisted_1))\n  }), 128 /* KEYED_FRAGMENT */))\n}","import script from \"/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/components/ResearchCards.vue?type=script\";import \"/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/components/ResearchCards.vue?type=style&index=0\";import { render } from \"/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/components/ResearchCards.vue?type=template\"; script.render = render;script.__file = \"../opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/components/ResearchCards.vue\";export default script;","<!-- Generated by design-1op1 dc2vue from \"Kiek Homepage.dc.html\"; do not edit. -->\n<template><div class=\"sc-host\" data-sc-name=\"Kiek Homepage\"><div data-screen-label=\"Homepage\" style=\"position:relative;min-height:100vh;background:#1F184E;color:#F9F7F3;font-family:'Golos Text',sans-serif;overflow-x:hidden\">\n\n  <header style=\"position:relative;z-index:3;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:24px;max-width:1512px;margin:0 auto\">\n    <a href=\"#\" aria-label=\"Kiek\" style=\"display:flex;flex-shrink:0\"><img src=\"/.publisher/sd/kiek/kiek/assets/home/kiek-logo.svg\" alt=\"Kiek\" style=\"width:120px;height:40.195px;display:block\"></a>\n    <template v-if=\"dcv.showLinks\">\n      <nav style=\"position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;align-items:center;gap:19px\">\n        <a href=\"#\" style=\"font-size:14px;line-height:1.4;font-weight:500;white-space:nowrap\">Over ons</a>\n        <a href=\"#\" style=\"font-size:14px;line-height:1.4;font-weight:500;white-space:nowrap\">Onze visie</a>\n        <a href=\"#\" style=\"font-size:14px;line-height:1.4;font-weight:500;white-space:nowrap\">Publicaties</a>\n        <a href=\"#\" style=\"font-size:14px;line-height:1.4;font-weight:500;white-space:nowrap\">Cinergie</a>\n        <a href=\"#\" style=\"font-size:14px;line-height:1.4;font-weight:500;white-space:nowrap\">Bijdragen</a>\n      </nav>\n    </template>\n    <div style=\"display:flex;align-items:center;gap:16px\">\n      <a class=\"homepage-scp0\" :href=\"dcrt.page('inloggen/')\" @click=\"dcv.openLogin\" style=\"display:flex;align-items:center;justify-content:center;height:54px;padding:16px 24px;border-radius:12px;background:#F9F7F3;color:#1F184E;font-size:16px;line-height:1.4;font-weight:500;white-space:nowrap\">Inloggen</a>\n      <a class=\"homepage-scp1\" href=\"#\" style=\"display:flex;align-items:center;justify-content:center;height:54px;padding:16px 24px;border-radius:12px;background:#7D80FF;color:#F9F7F3;font-size:16px;line-height:1.4;font-weight:500;white-space:nowrap\">Contact</a>\n    </div>\n  </header>\n\n  <section style=\"position:relative;z-index:2;max-width:1512px;margin:0 auto;padding:64px clamp(20px,5.3vw,80px) 0;display:flex;flex-direction:column;align-items:center;gap:72px\">\n    <div style=\"width:100%;display:flex;flex-direction:column;align-items:center;gap:48px\">\n      <div style=\"display:flex;flex-direction:column;align-items:center;gap:32px;width:100%\">\n        <h1 style=\"margin:0;font-family:Degular,sans-serif;font-weight:800;font-size:clamp(26px,6.6vw,104px);line-height:0.8;letter-spacing:-0.02em;text-align:center;color:#F9F7F3\"><span style=\"white-space:nowrap\">Belangrijke beslissing nemen?</span><br>Effe <span style=\"position:relative;display:inline-block\"><img src=\"/.publisher/sd/kiek/kiek/assets/home/underline-lavender.svg\" alt=\"\" style=\"position:absolute;left:-28%;right:-2%;width:130%;bottom:-0.06em;height:0.16em;transform:rotate(-1deg);z-index:-1\"><span style=\"position:relative\">Kieken!</span></span></h1>\n        <p style=\"margin:0;max-width:723px;font-size:18px;line-height:1.4;font-weight:500;text-align:center;color:rgba(255,255,255,0.75);text-wrap:pretty\">Kiek zet honderden onderzoeken van Saxion en de Universiteit Twente in voor jouw vraag. Je krijgt een helder antwoord, mét bron. En je ziet wat je keuze betekent voor mens, economie en regio</p>\n      </div>\n      <form @submit=\"dcv.submit\" style=\"position:relative;width:100%;max-width:664px;height:160px;border-radius:16px;background:rgba(255,255,255,0.1);padding:24px\">\n        <textarea :value=\"dcv.q ?? ''\" @input=\"dcv.onQ\" @keydown=\"dcv.onKey\" :placeholder=\"dcv.placeholder\" aria-label=\"Stel je vraag\" style=\"width:100%;height:60px;padding:0;border:0;outline:none;resize:none;background:transparent;color:#F9F7F3;font-family:'Golos Text',sans-serif;font-size:16px;line-height:1.4;font-weight:500\"></textarea>\n        <button class=\"homepage-scp2\" type=\"submit\" style=\"position:absolute;right:8px;bottom:8px;height:54px;display:flex;align-items:center;gap:12px;padding:16px 16px 16px 20px;border:0;border-radius:12px;background:#7D80FF;color:#F9F7F3;font-family:'Golos Text',sans-serif;font-size:16px;line-height:1.4;font-weight:500;cursor:pointer\">Effe kieken<img src=\"/.publisher/sd/kiek/kiek/assets/home/arrow-cream.svg\" alt=\"\" style=\"width:26px;height:16px;display:block\"></button>\n      </form>\n      <div style=\"display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;margin-top:-32px;font-size:13px;line-height:1.4;font-weight:500;color:rgba(255,255,255,0.6)\">\n        <span style=\"display:flex;align-items:center;gap:8px\">Kiek maakt uitsluitend gebruik van Europese diensten.</span>\n      </div>\n    </div>\n    <div style=\"width:100%;display:flex;align-items:center;gap:clamp(32px,9.9vw,149px);flex-wrap:wrap;justify-content:center\">\n      <span style=\"font-size:14px;line-height:1.4;font-weight:500;color:rgba(255,255,255,0.75);white-space:nowrap\">Mede mogelijk gemaakt door</span>\n      <div style=\"position:relative;flex:1 1 560px;min-width:0;max-width:1008px;height:50px;overflow:hidden\">\n        <div class=\"kh-marquee\" style=\"display:flex;align-items:center;width:max-content;height:50px\">\n          <div style=\"display:flex;align-items:center;gap:96px;padding-right:96px;flex-shrink:0\">\n            <img src=\"/.publisher/sd/kiek/kiek/assets/home/logo-saxion.svg\" alt=\"Saxion\" style=\"width:120px;height:47px;flex-shrink:0\">\n            <img src=\"/.publisher/sd/kiek/kiek/assets/home/logo-cinergie.svg\" alt=\"Cinergie Twente\" style=\"width:112px;height:50px;flex-shrink:0\">\n            <img src=\"/.publisher/sd/kiek/kiek/assets/home/logo-roc.svg\" alt=\"ROC van Twente\" style=\"width:112px;height:44px;flex-shrink:0\">\n            <img src=\"/.publisher/sd/kiek/kiek/assets/home/logo-ut.svg\" alt=\"University of Twente\" style=\"width:200px;height:15px;flex-shrink:0\">\n            <img src=\"/.publisher/sd/kiek/kiek/assets/home/logo-twenteboard.svg\" alt=\"Twente Board\" style=\"width:112px;height:41px;flex-shrink:0\">\n          </div>\n          <div aria-hidden=\"true\" style=\"display:flex;align-items:center;gap:96px;padding-right:96px;flex-shrink:0\">\n            <img src=\"/.publisher/sd/kiek/kiek/assets/home/logo-saxion.svg\" alt=\"\" style=\"width:120px;height:47px;flex-shrink:0\">\n            <img src=\"/.publisher/sd/kiek/kiek/assets/home/logo-cinergie.svg\" alt=\"\" style=\"width:112px;height:50px;flex-shrink:0\">\n            <img src=\"/.publisher/sd/kiek/kiek/assets/home/logo-roc.svg\" alt=\"\" style=\"width:112px;height:44px;flex-shrink:0\">\n            <img src=\"/.publisher/sd/kiek/kiek/assets/home/logo-ut.svg\" alt=\"\" style=\"width:200px;height:15px;flex-shrink:0\">\n            <img src=\"/.publisher/sd/kiek/kiek/assets/home/logo-twenteboard.svg\" alt=\"\" style=\"width:112px;height:41px;flex-shrink:0\">\n          </div>\n        </div>\n        <div style=\"position:absolute;left:0;top:0;width:120px;height:50px;pointer-events:none;background:linear-gradient(90deg,#1F184E 0%,rgba(31,24,78,0) 100%)\"></div>\n        <div style=\"position:absolute;right:0;top:0;width:120px;height:50px;pointer-events:none;background:linear-gradient(270deg,#1F184E 0%,rgba(31,24,78,0) 100%)\"></div>\n      </div>\n    </div>\n  </section>\n\n  <section style=\"position:relative;max-width:1512px;margin:160px auto 0;padding:0 clamp(20px,5.3vw,80px)\">\n    <img src=\"/.publisher/sd/kiek/kiek/assets/home/k-outline.svg\" alt=\"\" style=\"position:absolute;left:-99px;top:-88px;width:908px;height:1051px;pointer-events:none;z-index:0\">\n    <div style=\"position:relative;z-index:1;display:flex;flex-direction:column;gap:80px\">\n      <div style=\"display:flex;justify-content:space-between;align-items:flex-end;gap:32px;flex-wrap:wrap\">\n        <h2 style=\"margin:0;font-family:Degular,sans-serif;font-weight:800;font-size:clamp(44px,5.3vw,80px);line-height:0.8;letter-spacing:-0.02em;color:#F9F7F3\">Uit het onderzoek<br>van Cinergie Twente</h2>\n        <p style=\"margin:0;max-width:436px;font-size:18px;line-height:1.4;font-weight:500;color:rgba(255,255,255,0.75);text-wrap:pretty\">Kiek put uit meer dan 100 onderzoeken van Cinergie Twente. Een greep uit de onderzoeken achter de antwoorden.</p>\n      </div>\n      <div class=\"kh-scroll\" :ref=\"(el) => dcrt.setRef(dcv.rowRef, el)\" @scroll=\"dcv.onRowScroll\" :style=\"dcrt.style(dcv.cardRow)\"><ResearchCards /></div>\n      <template v-if=\"dcv.showNav\">\n        <div style=\"display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:-48px\">\n          <span style=\"font-size:14px;line-height:1.4;font-weight:500;color:rgba(255,255,255,0.75)\"><span v-if=\"dcrt.shows(dcv.pageLabel)\" class=\"sc-interp\">{{ dcv.pageLabel }}</span></span>\n          <div style=\"display:flex;gap:12px\">\n            <button class=\"homepage-scp3\" type=\"button\" @click=\"dcv.prev\" :disabled=\"dcv.atStart\" aria-label=\"Vorige onderzoeken\" :style=\"dcrt.style(`width:54px;height:54px;border:0;border-radius:12px;background:#F9F7F3;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:${dcv.prevOpacity ?? ''}`)\"><img src=\"/.publisher/sd/kiek/kiek/assets/home/arrow-navy.svg\" alt=\"\" style=\"width:26px;height:16px;transform:rotate(180deg)\"></button>\n            <button class=\"homepage-scp2\" type=\"button\" @click=\"dcv.next\" :disabled=\"dcv.atEnd\" aria-label=\"Volgende onderzoeken\" :style=\"dcrt.style(`width:54px;height:54px;border:0;border-radius:12px;background:#7D80FF;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:${dcv.nextOpacity ?? ''}`)\"><img src=\"/.publisher/sd/kiek/kiek/assets/home/arrow-cream.svg\" alt=\"\" style=\"width:26px;height:16px\"></button>\n          </div>\n        </div>\n      </template>\n    </div>\n  </section>\n\n  <section style=\"position:relative;max-width:1464px;margin:200px auto 24px;padding:0 24px\">\n    <div style=\"position:relative;border-radius:32px;background:#7D80FF;padding:clamp(56px,7.9vw,120px) clamp(24px,3.7vw,56px);display:flex;flex-direction:column;gap:80px;overflow:hidden\">\n      <h2 style=\"margin:0;font-family:Degular,sans-serif;font-weight:800;font-size:clamp(64px,10.6vw,160px);line-height:0.8;letter-spacing:-0.02em;color:#1F184E\">Van onderzoek<br>naar <span style=\"position:relative;display:inline-block\"><img src=\"/.publisher/sd/kiek/kiek/assets/home/underline-cream.svg\" alt=\"\" style=\"position:absolute;left:-2%;width:104%;bottom:-0.04em;height:0.13em;transform:rotate(-1deg)\"><span style=\"position:relative\">antwoord.</span></span></h2>\n      <div style=\"display:flex;flex-wrap:wrap;align-items:flex-end;gap:clamp(48px,9.2vw,139px)\">\n        <div style=\"flex:1 1 420px;max-width:664px;display:flex;flex-direction:column;gap:56px;align-self:stretch;justify-content:space-between\">\n          <div style=\"display:flex;flex-direction:column;gap:24px\">\n            <span style=\"align-self:flex-start;border-radius:12px;background:rgba(31,24,78,0.1);padding:8px 12px;font-size:16px;line-height:1.4;font-weight:500;color:#1F184E\">Onderzoeksprogramma Cinergie Twente: Saxion, Universiteit Twente en Twente Board</span>\n            <p style=\"margin:0;font-size:24px;line-height:1.4;font-weight:500;color:rgba(31,24,78,0.7);text-wrap:pretty\">Saxion en de Universiteit Twente doen ieder jaar honderden onderzoeken. Naar werk, energie, circulair ondernemen en de regio. Waardevolle kennis. Maar vaak verstopt in een rapport van honderd pagina’s.</p>\n            <p style=\"margin:0;font-size:18px;line-height:1.4;font-weight:500;color:rgba(31,24,78,0.7);text-wrap:pretty\">Daarom startten Saxion, de Universiteit Twente en Twente Board het onderzoeksprogramma Cinergie Twente. Met één doel: onderzoek laten werken voor de ondernemers in de regio.</p>\n            <p style=\"margin:0;font-size:18px;line-height:1.4;font-weight:500;color:rgba(31,24,78,0.7);text-wrap:pretty\">Kiek is daar het resultaat van. Je stelt je vraag in gewone taal. Kiek zoekt in het onderzoek, zet de opties naast elkaar en laat zien waar elk antwoord vandaan komt. Daarnaast kijkt Kiek verder dan je eigen bedrijf. Je ziet wat jouw beslissing betekent voor de regio: voor mens, economie en Twente. Zo neem je betere beslissingen, met Twentse kennis in je achterzak.</p>\n          </div>\n          <a class=\"homepage-scp1\" href=\"https://cinergie.eu/\" target=\"_blank\" rel=\"noopener\" style=\"align-self:flex-start;height:54px;display:flex;align-items:center;padding:16px 24px;border-radius:12px;background:#EDE7D9;color:#1F184E;font-size:16px;line-height:1.4;font-weight:500;white-space:nowrap\">Lees meer over Cinergie Twente</a>\n        </div>\n        <div style=\"flex:0 1 549px;min-width:260px;aspect-ratio:549 / 640;border-radius:16px;background:url(/.publisher/sd/kiek/kiek/assets/home/ee8e76192295188c.png) center / cover no-repeat\"></div>\n      </div>\n    </div>\n  </section>\n\n  <template v-if=\"dcv.loginOpen\">\n    <iframe :src=\"dcrt.page('inloggen/?embed=1')\" title=\"Inloggen\" allowtransparency=\"true\" style=\"position:fixed;inset:0;width:100%;height:100%;border:0;z-index:100;background:transparent;color-scheme:normal\"></iframe>\n  </template></div></div></template>\n\n<script setup lang=\"ts\">\nimport * as dcrt from \"../lib/dc\";\nimport { useHelmet } from \"../lib/helmet\";\nimport Logic from \"./Homepage.logic.js\";\nimport helmetCss from \"./Homepage.helmet\";\nimport ResearchCards from \"../components/ResearchCards.vue\";\n\nconst props = defineProps({\n  typingDemo: { default: true },\n  cardLayout: { default: \"carrousel\" },\n});\nuseHelmet(helmetCss);\nconst dcv = dcrt.useDC(Logic, props);\n</script>\n","import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, normalizeStyle as _normalizeStyle, toDisplayString as _toDisplayString, createStaticVNode as _createStaticVNode } from \"vue\"\n\nconst _hoisted_1 = {\n  class: \"sc-host\",\n  \"data-sc-name\": \"Kiek Homepage\"\n}\nconst _hoisted_2 = {\n  \"data-screen-label\": \"Homepage\",\n  style: {\"position\":\"relative\",\"min-height\":\"100vh\",\"background\":\"#1F184E\",\"color\":\"#F9F7F3\",\"font-family\":\"'Golos Text',sans-serif\",\"overflow-x\":\"hidden\"}\n}\nconst _hoisted_3 = { style: {\"position\":\"relative\",\"z-index\":\"3\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"space-between\",\"gap\":\"24px\",\"padding\":\"24px\",\"max-width\":\"1512px\",\"margin\":\"0 auto\"} }\nconst _hoisted_4 = {\n  key: 0,\n  style: {\"position\":\"absolute\",\"left\":\"50%\",\"top\":\"50%\",\"transform\":\"translate(-50%,-50%)\",\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"19px\"}\n}\nconst _hoisted_5 = { style: {\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"16px\"} }\nconst _hoisted_6 = [\"href\"]\nconst _hoisted_7 = { style: {\"position\":\"relative\",\"z-index\":\"2\",\"max-width\":\"1512px\",\"margin\":\"0 auto\",\"padding\":\"64px clamp(20px,5.3vw,80px) 0\",\"display\":\"flex\",\"flex-direction\":\"column\",\"align-items\":\"center\",\"gap\":\"72px\"} }\nconst _hoisted_8 = { style: {\"width\":\"100%\",\"display\":\"flex\",\"flex-direction\":\"column\",\"align-items\":\"center\",\"gap\":\"48px\"} }\nconst _hoisted_9 = [\"value\", \"placeholder\"]\nconst _hoisted_10 = { style: {\"position\":\"relative\",\"max-width\":\"1512px\",\"margin\":\"160px auto 0\",\"padding\":\"0 clamp(20px,5.3vw,80px)\"} }\nconst _hoisted_11 = { style: {\"position\":\"relative\",\"z-index\":\"1\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"80px\"} }\nconst _hoisted_12 = {\n  key: 0,\n  style: {\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"space-between\",\"gap\":\"24px\",\"margin-top\":\"-48px\"}\n}\nconst _hoisted_13 = { style: {\"font-size\":\"14px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"color\":\"rgba(255,255,255,0.75)\"} }\nconst _hoisted_14 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_15 = { style: {\"display\":\"flex\",\"gap\":\"12px\"} }\nconst _hoisted_16 = [\"disabled\"]\nconst _hoisted_17 = [\"disabled\"]\nconst _hoisted_18 = [\"src\"]\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n  return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n    _createElementVNode(\"div\", _hoisted_2, [\n      _createElementVNode(\"header\", _hoisted_3, [\n        _cache[10] || (_cache[10] = _createElementVNode(\"a\", {\n          href: \"#\",\n          \"aria-label\": \"Kiek\",\n          style: {\"display\":\"flex\",\"flex-shrink\":\"0\"}\n        }, [\n          _createElementVNode(\"img\", {\n            src: \"/.publisher/sd/kiek/kiek/assets/home/kiek-logo.svg\",\n            alt: \"Kiek\",\n            style: {\"width\":\"120px\",\"height\":\"40.195px\",\"display\":\"block\"}\n          })\n        ], -1 /* CACHED */)),\n        _cache[11] || (_cache[11] = _createTextVNode()),\n        ($setup.dcv.showLinks)\n          ? (_openBlock(), _createElementBlock(\"nav\", _hoisted_4, _cache[7] || (_cache[7] = [\n              _createStaticVNode(\"<a href=\\\"#\\\" style=\\\"font-size:14px;line-height:1.4;font-weight:500;white-space:nowrap;\\\">Over ons</a> <a href=\\\"#\\\" style=\\\"font-size:14px;line-height:1.4;font-weight:500;white-space:nowrap;\\\">Onze visie</a> <a href=\\\"#\\\" style=\\\"font-size:14px;line-height:1.4;font-weight:500;white-space:nowrap;\\\">Publicaties</a> <a href=\\\"#\\\" style=\\\"font-size:14px;line-height:1.4;font-weight:500;white-space:nowrap;\\\">Cinergie</a> <a href=\\\"#\\\" style=\\\"font-size:14px;line-height:1.4;font-weight:500;white-space:nowrap;\\\">Bijdragen</a>\", 9)\n            ])))\n          : _createCommentVNode(\"v-if\", true),\n        _cache[12] || (_cache[12] = _createTextVNode()),\n        _createElementVNode(\"div\", _hoisted_5, [\n          _createElementVNode(\"a\", {\n            class: \"homepage-scp0\",\n            href: $setup.dcrt.page('inloggen/'),\n            onClick: _cache[0] || (_cache[0] = (...args) => ($setup.dcv.openLogin && $setup.dcv.openLogin(...args))),\n            style: {\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\",\"height\":\"54px\",\"padding\":\"16px 24px\",\"border-radius\":\"12px\",\"background\":\"#F9F7F3\",\"color\":\"#1F184E\",\"font-size\":\"16px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"white-space\":\"nowrap\"}\n          }, \"Inloggen\", 8 /* PROPS */, _hoisted_6),\n          _cache[8] || (_cache[8] = _createTextVNode()),\n          _cache[9] || (_cache[9] = _createElementVNode(\"a\", {\n            class: \"homepage-scp1\",\n            href: \"#\",\n            style: {\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\",\"height\":\"54px\",\"padding\":\"16px 24px\",\"border-radius\":\"12px\",\"background\":\"#7D80FF\",\"color\":\"#F9F7F3\",\"font-size\":\"16px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"white-space\":\"nowrap\"}\n          }, \"Contact\", -1 /* CACHED */))\n        ])\n      ]),\n      _cache[28] || (_cache[28] = _createTextVNode()),\n      _createElementVNode(\"section\", _hoisted_7, [\n        _createElementVNode(\"div\", _hoisted_8, [\n          _cache[15] || (_cache[15] = _createStaticVNode(\"<div style=\\\"display:flex;flex-direction:column;align-items:center;gap:32px;width:100%;\\\"><h1 style=\\\"margin:0;font-family:Degular,sans-serif;font-weight:800;font-size:clamp(26px,6.6vw,104px);line-height:0.8;letter-spacing:-0.02em;text-align:center;color:#F9F7F3;\\\"><span style=\\\"white-space:nowrap;\\\">Belangrijke beslissing nemen?</span><br>Effe <span style=\\\"position:relative;display:inline-block;\\\"><img src=\\\"/.publisher/sd/kiek/kiek/assets/home/underline-lavender.svg\\\" alt=\\\"\\\" style=\\\"position:absolute;left:-28%;right:-2%;width:130%;bottom:-0.06em;height:0.16em;transform:rotate(-1deg);z-index:-1;\\\"><span style=\\\"position:relative;\\\">Kieken!</span></span></h1> <p style=\\\"margin:0;max-width:723px;font-size:18px;line-height:1.4;font-weight:500;text-align:center;color:rgba(255,255,255,0.75);text-wrap:pretty;\\\">Kiek zet honderden onderzoeken van Saxion en de Universiteit Twente in voor jouw vraag. Je krijgt een helder antwoord, mét bron. En je ziet wat je keuze betekent voor mens, economie en regio</p></div> \", 2)),\n          _createElementVNode(\"form\", {\n            onSubmit: _cache[3] || (_cache[3] = (...args) => ($setup.dcv.submit && $setup.dcv.submit(...args))),\n            style: {\"position\":\"relative\",\"width\":\"100%\",\"max-width\":\"664px\",\"height\":\"160px\",\"border-radius\":\"16px\",\"background\":\"rgba(255,255,255,0.1)\",\"padding\":\"24px\"}\n          }, [\n            _createElementVNode(\"textarea\", {\n              value: $setup.dcv.q ?? '',\n              onInput: _cache[1] || (_cache[1] = (...args) => ($setup.dcv.onQ && $setup.dcv.onQ(...args))),\n              onKeydown: _cache[2] || (_cache[2] = (...args) => ($setup.dcv.onKey && $setup.dcv.onKey(...args))),\n              placeholder: $setup.dcv.placeholder,\n              \"aria-label\": \"Stel je vraag\",\n              style: {\"width\":\"100%\",\"height\":\"60px\",\"padding\":\"0\",\"border\":\"0\",\"outline\":\"none\",\"resize\":\"none\",\"background\":\"transparent\",\"color\":\"#F9F7F3\",\"font-family\":\"'Golos Text',sans-serif\",\"font-size\":\"16px\",\"line-height\":\"1.4\",\"font-weight\":\"500\"}\n            }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_9),\n            _cache[13] || (_cache[13] = _createTextVNode()),\n            _cache[14] || (_cache[14] = _createElementVNode(\"button\", {\n              class: \"homepage-scp2\",\n              type: \"submit\",\n              style: {\"position\":\"absolute\",\"right\":\"8px\",\"bottom\":\"8px\",\"height\":\"54px\",\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"12px\",\"padding\":\"16px 16px 16px 20px\",\"border\":\"0\",\"border-radius\":\"12px\",\"background\":\"#7D80FF\",\"color\":\"#F9F7F3\",\"font-family\":\"'Golos Text',sans-serif\",\"font-size\":\"16px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"cursor\":\"pointer\"}\n            }, [\n              _createTextVNode(\"Effe kieken\"),\n              _createElementVNode(\"img\", {\n                src: \"/.publisher/sd/kiek/kiek/assets/home/arrow-cream.svg\",\n                alt: \"\",\n                style: {\"width\":\"26px\",\"height\":\"16px\",\"display\":\"block\"}\n              })\n            ], -1 /* CACHED */))\n          ], 32 /* NEED_HYDRATION */),\n          _cache[16] || (_cache[16] = _createTextVNode()),\n          _cache[17] || (_cache[17] = _createElementVNode(\"div\", { style: {\"display\":\"flex\",\"flex-wrap\":\"wrap\",\"justify-content\":\"center\",\"align-items\":\"center\",\"gap\":\"12px\",\"margin-top\":\"-32px\",\"font-size\":\"13px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"color\":\"rgba(255,255,255,0.6)\"} }, [\n            _createElementVNode(\"span\", { style: {\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"8px\"} }, \"Kiek maakt uitsluitend gebruik van Europese diensten.\")\n          ], -1 /* CACHED */))\n        ]),\n        _cache[18] || (_cache[18] = _createStaticVNode(\" <div style=\\\"width:100%;display:flex;align-items:center;gap:clamp(32px,9.9vw,149px);flex-wrap:wrap;justify-content:center;\\\"><span style=\\\"font-size:14px;line-height:1.4;font-weight:500;color:rgba(255,255,255,0.75);white-space:nowrap;\\\">Mede mogelijk gemaakt door</span> <div style=\\\"position:relative;flex:1 1 560px;min-width:0;max-width:1008px;height:50px;overflow:hidden;\\\"><div class=\\\"kh-marquee\\\" style=\\\"display:flex;align-items:center;width:max-content;height:50px;\\\"><div style=\\\"display:flex;align-items:center;gap:96px;padding-right:96px;flex-shrink:0;\\\"><img src=\\\"/.publisher/sd/kiek/kiek/assets/home/logo-saxion.svg\\\" alt=\\\"Saxion\\\" style=\\\"width:120px;height:47px;flex-shrink:0;\\\"> <img src=\\\"/.publisher/sd/kiek/kiek/assets/home/logo-cinergie.svg\\\" alt=\\\"Cinergie Twente\\\" style=\\\"width:112px;height:50px;flex-shrink:0;\\\"> <img src=\\\"/.publisher/sd/kiek/kiek/assets/home/logo-roc.svg\\\" alt=\\\"ROC van Twente\\\" style=\\\"width:112px;height:44px;flex-shrink:0;\\\"> <img src=\\\"/.publisher/sd/kiek/kiek/assets/home/logo-ut.svg\\\" alt=\\\"University of Twente\\\" style=\\\"width:200px;height:15px;flex-shrink:0;\\\"> <img src=\\\"/.publisher/sd/kiek/kiek/assets/home/logo-twenteboard.svg\\\" alt=\\\"Twente Board\\\" style=\\\"width:112px;height:41px;flex-shrink:0;\\\"></div> <div aria-hidden=\\\"true\\\" style=\\\"display:flex;align-items:center;gap:96px;padding-right:96px;flex-shrink:0;\\\"><img src=\\\"/.publisher/sd/kiek/kiek/assets/home/logo-saxion.svg\\\" alt=\\\"\\\" style=\\\"width:120px;height:47px;flex-shrink:0;\\\"> <img src=\\\"/.publisher/sd/kiek/kiek/assets/home/logo-cinergie.svg\\\" alt=\\\"\\\" style=\\\"width:112px;height:50px;flex-shrink:0;\\\"> <img src=\\\"/.publisher/sd/kiek/kiek/assets/home/logo-roc.svg\\\" alt=\\\"\\\" style=\\\"width:112px;height:44px;flex-shrink:0;\\\"> <img src=\\\"/.publisher/sd/kiek/kiek/assets/home/logo-ut.svg\\\" alt=\\\"\\\" style=\\\"width:200px;height:15px;flex-shrink:0;\\\"> <img src=\\\"/.publisher/sd/kiek/kiek/assets/home/logo-twenteboard.svg\\\" alt=\\\"\\\" style=\\\"width:112px;height:41px;flex-shrink:0;\\\"></div></div> <div style=\\\"position:absolute;left:0;top:0;width:120px;height:50px;pointer-events:none;background:linear-gradient(90deg,#1F184E 0%,rgba(31,24,78,0) 100%);\\\"></div> <div style=\\\"position:absolute;right:0;top:0;width:120px;height:50px;pointer-events:none;background:linear-gradient(270deg,#1F184E 0%,rgba(31,24,78,0) 100%);\\\"></div></div></div>\", 2))\n      ]),\n      _cache[29] || (_cache[29] = _createTextVNode()),\n      _createElementVNode(\"section\", _hoisted_10, [\n        _cache[26] || (_cache[26] = _createElementVNode(\"img\", {\n          src: \"/.publisher/sd/kiek/kiek/assets/home/k-outline.svg\",\n          alt: \"\",\n          style: {\"position\":\"absolute\",\"left\":\"-99px\",\"top\":\"-88px\",\"width\":\"908px\",\"height\":\"1051px\",\"pointer-events\":\"none\",\"z-index\":\"0\"}\n        }, null, -1 /* CACHED */)),\n        _cache[27] || (_cache[27] = _createTextVNode()),\n        _createElementVNode(\"div\", _hoisted_11, [\n          _cache[23] || (_cache[23] = _createElementVNode(\"div\", { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"align-items\":\"flex-end\",\"gap\":\"32px\",\"flex-wrap\":\"wrap\"} }, [\n            _createElementVNode(\"h2\", { style: {\"margin\":\"0\",\"font-family\":\"Degular,sans-serif\",\"font-weight\":\"800\",\"font-size\":\"clamp(44px,5.3vw,80px)\",\"line-height\":\"0.8\",\"letter-spacing\":\"-0.02em\",\"color\":\"#F9F7F3\"} }, [\n              _createTextVNode(\"Uit het onderzoek\"),\n              _createElementVNode(\"br\"),\n              _createTextVNode(\"van Cinergie Twente\")\n            ]),\n            _createTextVNode(),\n            _createElementVNode(\"p\", { style: {\"margin\":\"0\",\"max-width\":\"436px\",\"font-size\":\"18px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"color\":\"rgba(255,255,255,0.75)\",\"text-wrap\":\"pretty\"} }, \"Kiek put uit meer dan 100 onderzoeken van Cinergie Twente. Een greep uit de onderzoeken achter de antwoorden.\")\n          ], -1 /* CACHED */)),\n          _cache[24] || (_cache[24] = _createTextVNode()),\n          _createElementVNode(\"div\", {\n            class: \"kh-scroll\",\n            ref: (el) => $setup.dcrt.setRef($setup.dcv.rowRef, el),\n            onScroll: _cache[4] || (_cache[4] = (...args) => ($setup.dcv.onRowScroll && $setup.dcv.onRowScroll(...args))),\n            style: _normalizeStyle($setup.dcrt.style($setup.dcv.cardRow))\n          }, [\n            _createVNode($setup[\"ResearchCards\"])\n          ], 36 /* STYLE, NEED_HYDRATION */),\n          _cache[25] || (_cache[25] = _createTextVNode()),\n          ($setup.dcv.showNav)\n            ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n                _createElementVNode(\"span\", _hoisted_13, [\n                  ($setup.dcrt.shows($setup.dcv.pageLabel))\n                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_14, _toDisplayString($setup.dcv.pageLabel), 1 /* TEXT */))\n                    : _createCommentVNode(\"v-if\", true)\n                ]),\n                _cache[22] || (_cache[22] = _createTextVNode()),\n                _createElementVNode(\"div\", _hoisted_15, [\n                  _createElementVNode(\"button\", {\n                    class: \"homepage-scp3\",\n                    type: \"button\",\n                    onClick: _cache[5] || (_cache[5] = (...args) => ($setup.dcv.prev && $setup.dcv.prev(...args))),\n                    disabled: $setup.dcv.atStart,\n                    \"aria-label\": \"Vorige onderzoeken\",\n                    style: _normalizeStyle($setup.dcrt.style(`width:54px;height:54px;border:0;border-radius:12px;background:#F9F7F3;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:${$setup.dcv.prevOpacity ?? ''}`))\n                  }, _cache[19] || (_cache[19] = [\n                    _createElementVNode(\"img\", {\n                      src: \"/.publisher/sd/kiek/kiek/assets/home/arrow-navy.svg\",\n                      alt: \"\",\n                      style: {\"width\":\"26px\",\"height\":\"16px\",\"transform\":\"rotate(180deg)\"}\n                    }, null, -1 /* CACHED */)\n                  ]), 12 /* STYLE, PROPS */, _hoisted_16),\n                  _cache[21] || (_cache[21] = _createTextVNode()),\n                  _createElementVNode(\"button\", {\n                    class: \"homepage-scp2\",\n                    type: \"button\",\n                    onClick: _cache[6] || (_cache[6] = (...args) => ($setup.dcv.next && $setup.dcv.next(...args))),\n                    disabled: $setup.dcv.atEnd,\n                    \"aria-label\": \"Volgende onderzoeken\",\n                    style: _normalizeStyle($setup.dcrt.style(`width:54px;height:54px;border:0;border-radius:12px;background:#7D80FF;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:${$setup.dcv.nextOpacity ?? ''}`))\n                  }, _cache[20] || (_cache[20] = [\n                    _createElementVNode(\"img\", {\n                      src: \"/.publisher/sd/kiek/kiek/assets/home/arrow-cream.svg\",\n                      alt: \"\",\n                      style: {\"width\":\"26px\",\"height\":\"16px\"}\n                    }, null, -1 /* CACHED */)\n                  ]), 12 /* STYLE, PROPS */, _hoisted_17)\n                ])\n              ]))\n            : _createCommentVNode(\"v-if\", true)\n        ])\n      ]),\n      _cache[30] || (_cache[30] = _createStaticVNode(\" <section style=\\\"position:relative;max-width:1464px;margin:200px auto 24px;padding:0 24px;\\\"><div style=\\\"position:relative;border-radius:32px;background:#7D80FF;padding:clamp(56px,7.9vw,120px) clamp(24px,3.7vw,56px);display:flex;flex-direction:column;gap:80px;overflow:hidden;\\\"><h2 style=\\\"margin:0;font-family:Degular,sans-serif;font-weight:800;font-size:clamp(64px,10.6vw,160px);line-height:0.8;letter-spacing:-0.02em;color:#1F184E;\\\">Van onderzoek<br>naar <span style=\\\"position:relative;display:inline-block;\\\"><img src=\\\"/.publisher/sd/kiek/kiek/assets/home/underline-cream.svg\\\" alt=\\\"\\\" style=\\\"position:absolute;left:-2%;width:104%;bottom:-0.04em;height:0.13em;transform:rotate(-1deg);\\\"><span style=\\\"position:relative;\\\">antwoord.</span></span></h2> <div style=\\\"display:flex;flex-wrap:wrap;align-items:flex-end;gap:clamp(48px,9.2vw,139px);\\\"><div style=\\\"flex:1 1 420px;max-width:664px;display:flex;flex-direction:column;gap:56px;align-self:stretch;justify-content:space-between;\\\"><div style=\\\"display:flex;flex-direction:column;gap:24px;\\\"><span style=\\\"align-self:flex-start;border-radius:12px;background:rgba(31,24,78,0.1);padding:8px 12px;font-size:16px;line-height:1.4;font-weight:500;color:#1F184E;\\\">Onderzoeksprogramma Cinergie Twente: Saxion, Universiteit Twente en Twente Board</span> <p style=\\\"margin:0;font-size:24px;line-height:1.4;font-weight:500;color:rgba(31,24,78,0.7);text-wrap:pretty;\\\">Saxion en de Universiteit Twente doen ieder jaar honderden onderzoeken. Naar werk, energie, circulair ondernemen en de regio. Waardevolle kennis. Maar vaak verstopt in een rapport van honderd pagina’s.</p> <p style=\\\"margin:0;font-size:18px;line-height:1.4;font-weight:500;color:rgba(31,24,78,0.7);text-wrap:pretty;\\\">Daarom startten Saxion, de Universiteit Twente en Twente Board het onderzoeksprogramma Cinergie Twente. Met één doel: onderzoek laten werken voor de ondernemers in de regio.</p> <p style=\\\"margin:0;font-size:18px;line-height:1.4;font-weight:500;color:rgba(31,24,78,0.7);text-wrap:pretty;\\\">Kiek is daar het resultaat van. Je stelt je vraag in gewone taal. Kiek zoekt in het onderzoek, zet de opties naast elkaar en laat zien waar elk antwoord vandaan komt. Daarnaast kijkt Kiek verder dan je eigen bedrijf. Je ziet wat jouw beslissing betekent voor de regio: voor mens, economie en Twente. Zo neem je betere beslissingen, met Twentse kennis in je achterzak.</p></div> <a class=\\\"homepage-scp1\\\" href=\\\"https://cinergie.eu/\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\" style=\\\"align-self:flex-start;height:54px;display:flex;align-items:center;padding:16px 24px;border-radius:12px;background:#EDE7D9;color:#1F184E;font-size:16px;line-height:1.4;font-weight:500;white-space:nowrap;\\\">Lees meer over Cinergie Twente</a></div> <div style=\\\"flex:0 1 549px;min-width:260px;aspect-ratio:549 / 640;border-radius:16px;background:url(/.publisher/sd/kiek/kiek/assets/home/ee8e76192295188c.png) center / cover no-repeat;\\\"></div></div></div></section> \", 3)),\n      ($setup.dcv.loginOpen)\n        ? (_openBlock(), _createElementBlock(\"iframe\", {\n            key: 0,\n            src: $setup.dcrt.page('inloggen/?embed=1'),\n            title: \"Inloggen\",\n            allowtransparency: \"true\",\n            style: {\"position\":\"fixed\",\"inset\":\"0\",\"width\":\"100%\",\"height\":\"100%\",\"border\":\"0\",\"z-index\":\"100\",\"background\":\"transparent\",\"color-scheme\":\"normal\"}\n          }, null, 8 /* PROPS */, _hoisted_18))\n        : _createCommentVNode(\"v-if\", true)\n    ])\n  ]))\n}","import script from \"/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Homepage.vue?type=script\";import { render } from \"/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Homepage.vue?type=template\"; script.render = render;script.__file = \"../opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Homepage.vue\";export default script;","// Generated by design-1op1 dc2vue from the <script type=\"text/x-dc\"> of \"Kiek Login.dc.html\"; do not edit.\nimport { DCLogic, React } from \"../lib/dc\";\nimport { SITE_ROOT } from \"../lib/site\";\n\nclass Component extends DCLogic {\n  state = { email: '', pw: '', tried: false, note: '' };\n  embed = (() => { let e = false; try { e = new URLSearchParams(window.location.search).get('embed') === '1' && window.parent !== window; } catch (x) {} if (e) document.documentElement.classList.add('kp-embed'); return e; })();\n  enter = () => { (this.embed ? window.parent : window).location.href = SITE_ROOT + 'app/'; };\n  renderVals() {\n    const s = this.state, okMail = /^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$/.test(s.email);\n    return {\n      bgSrc: this.embed ? 'about:blank' : SITE_ROOT + '',\n      close: () => { if (this.closing) return; this.closing = true; const reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches; document.body.setAttribute('data-kp-closing', '1'); setTimeout(() => { if (this.embed) { window.parent.postMessage('kiek-close-login', '*'); return; } window.location.href = SITE_ROOT + ''; }, reduce ? 0 : 340); },\n      email: s.email, pw: s.pw, note: s.note,\n      onEmail: e => this.setState({ email: e.target.value }),\n      onPw: e => this.setState({ pw: e.target.value }),\n      emailErr: s.tried && !okMail, pwErr: s.tried && !s.pw,\n      submit: e => { e.preventDefault(); if (!okMail || !s.pw) { this.setState({ tried: true }); return; } this.enter(); },\n      ssoGoogle: () => this.enter(), ssoMicrosoft: () => this.enter(),\n      forgot: e => { e.preventDefault(); this.setState({ note: okMail ? 'We hebben een herstellink gestuurd naar ' + s.email + '.' : 'Vul eerst je e-mailadres in, dan sturen we je een herstellink.' }); },\n    };\n  }\n}\n\nexport default Component;\n","// Generated by design-1op1 dc2vue from the <helmet> of \"Kiek Login.dc.html\"; do not edit.\nexport default \"\\n    html,body{margin:0;background:#1F184E}\\n    html.kp-embed,html.kp-embed body{background:transparent !important}\\n    html.kp-embed [data-kp-wrap]{background:transparent !important}\\n    html.kp-embed [data-kp-frame]{display:none !important}\\n    *{box-sizing:border-box}\\n    a{color:#1F184E;text-decoration:none}\\n    a:hover{color:#1F184E;opacity:0.7}\\n    input::placeholder{color:rgba(31,24,78,0.45)}\\n  @keyframes kp-fade{from{opacity:0}to{opacity:1}}\\n    @keyframes kp-pop{0%{opacity:0;transform:translateY(40px) scale(0.94);border-radius:64px}60%{opacity:1}100%{opacity:1;transform:none;border-radius:32px}}\\n    @keyframes kp-up{from{opacity:0;transform:translateY(32px)}to{opacity:1;transform:none}}\\n    @keyframes kp-card{from{opacity:0;transform:translateX(48px) rotate(2deg)}to{opacity:1;transform:none}}\\n    @keyframes kp-line{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}\\n    @keyframes kp-out{from{opacity:1;transform:none}to{opacity:0;transform:translateY(32px) scale(0.95)}}\\n    @keyframes kp-fadeout{from{opacity:1}to{opacity:0}}\\n    body[data-kp-closing] [role=\\\"dialog\\\"][data-kp]{animation:kp-out 0.35s cubic-bezier(0.4,0,1,1) both !important}\\n    body[data-kp-closing] [data-kp-bg]{animation:kp-fadeout 0.35s ease-in both !important}\\n    @media (prefers-reduced-motion:reduce){[data-kp]{animation:none !important}}\\n  \";\n","<!-- Generated by design-1op1 dc2vue from \"Kiek Login.dc.html\"; do not edit. -->\n<template><div class=\"sc-host\" data-sc-name=\"Kiek Login\"><div data-kp-wrap=\"1\" style=\"position:relative;min-height:100vh;padding:clamp(16px,4vw,56px);display:flex;background:#1F184E\"><iframe data-kp-frame=\"1\" :src=\"dcv.bgSrc\" title=\"Kiek homepage op de achtergrond\" aria-hidden=\"true\" tabindex=\"-1\" style=\"position:fixed;inset:0;width:100%;height:100%;border:0;pointer-events:none\"></iframe><div @click=\"dcv.close\" data-kp=\"1\" data-kp-bg=\"1\" style=\"position:fixed;inset:0;background:rgba(14,10,42,0.6);animation:kp-fade 0.4s ease-out both\"></div><div data-screen-label=\"Login\" data-kp=\"1\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Inloggen\" style=\"position:relative;flex:1;min-height:calc(100vh - 2 * clamp(16px,4vw,56px));border-radius:32px;animation:kp-pop 0.6s cubic-bezier(0.2,0.8,0.2,1) both;background:#1F184E;color:#F9F7F3;font-family:'Golos Text',sans-serif;overflow:hidden;display:flex;flex-direction:column\">\n  <img src=\"/.publisher/sd/kiek/kiek/assets/home/k-outline.svg\" alt=\"\" style=\"position:absolute;left:-140px;top:120px;width:908px;height:1051px;pointer-events:none\">\n\n  <header style=\"position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:24px\">\n    <a :href=\"dcrt.page('')\" target=\"_top\" aria-label=\"Kiek home\" style=\"display:flex\"><img src=\"/.publisher/sd/kiek/kiek/assets/home/kiek-logo.svg\" alt=\"Kiek\" style=\"width:120px;height:40.195px;display:block\"></a>\n    <button class=\"login-scp0\" type=\"button\" @click=\"dcv.close\" aria-label=\"Sluiten\" style=\"position:relative;width:54px;height:54px;flex-shrink:0;border:0;border-radius:12px;background:rgba(255,255,255,0.1);cursor:pointer\"><span style=\"position:absolute;left:50%;top:50%;width:22px;height:2px;border-radius:2px;background:#F9F7F3;transform:translate(-50%,-50%) rotate(45deg)\"></span><span style=\"position:absolute;left:50%;top:50%;width:22px;height:2px;border-radius:2px;background:#F9F7F3;transform:translate(-50%,-50%) rotate(-45deg)\"></span></button>\n  </header>\n\n  <main style=\"position:relative;z-index:1;flex:1;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:64px;padding:clamp(24px,4vw,56px) clamp(20px,5.3vw,80px) 80px;max-width:1512px;width:100%;margin:0 auto\">\n    <div style=\"flex:1 1 420px;display:flex;flex-direction:column;gap:40px;min-width:0;container-type:inline-size;animation:kp-up 0.7s cubic-bezier(0.2,0.8,0.2,1) 0.2s both\" data-kp=\"1\">\n      <h1 style=\"margin:0;font-family:Degular,sans-serif;font-weight:800;font-size:clamp(48px,22cqw,136px);line-height:0.75;letter-spacing:-0.02em;color:#F9F7F3\">Effe<br><span style=\"position:relative;display:inline-block\"><img src=\"/.publisher/sd/kiek/kiek/assets/home/underline-lavender.svg\" alt=\"\" data-kp=\"1\" style=\"position:absolute;left:-2%;width:104%;bottom:-0.02em;height:0.13em;transform:rotate(-1deg);animation:kp-line 0.6s ease-out 0.7s both\"><span style=\"position:relative\">inloggen.</span></span></h1>\n      <p style=\"margin:0;max-width:460px;font-size:18px;line-height:1.4;font-weight:500;color:rgba(255,255,255,0.75);text-wrap:pretty\">Je gesprekken, verslagen en bronnen staan klaar. Ga verder waar je gebleven was.</p>\n    </div>\n\n    <div data-kp=\"1\" style=\"flex:0 1 520px;min-width:min(100%,340px);border-radius:32px;background:#7D80FF;animation:kp-card 0.7s cubic-bezier(0.2,0.8,0.2,1) 0.32s both;color:#1F184E;padding:clamp(28px,3.5vw,48px);display:flex;flex-direction:column;gap:24px\">\n      <div style=\"display:flex;flex-direction:column;gap:8px\">\n        <h2 style=\"margin:0;font-family:Degular,sans-serif;font-weight:800;font-size:48px;line-height:0.85;letter-spacing:-0.02em;color:#1F184E\">Welkom terug</h2>\n        <span style=\"font-size:16px;line-height:1.4;font-weight:500;color:rgba(31,24,78,0.75)\">Log in met je zakelijke account.</span>\n      </div>\n      <div style=\"display:flex;flex-direction:column;gap:8px\">\n        <button class=\"login-scp1\" type=\"button\" @click=\"dcv.ssoGoogle\" style=\"height:54px;border:none;border-radius:12px;background:#F9F7F3;color:#1F184E;font-family:'Golos Text',sans-serif;font-size:16px;font-weight:500;cursor:pointer\">Doorgaan met Google</button>\n        <button class=\"login-scp1\" type=\"button\" @click=\"dcv.ssoMicrosoft\" style=\"height:54px;border:none;border-radius:12px;background:#F9F7F3;color:#1F184E;font-family:'Golos Text',sans-serif;font-size:16px;font-weight:500;cursor:pointer\">Doorgaan met Microsoft</button>\n      </div>\n      <div style=\"display:flex;align-items:center;gap:12px;font-size:14px;line-height:1.4;font-weight:500;color:rgba(31,24,78,0.75)\">\n        <span style=\"flex:1;height:1px;background:rgba(31,24,78,0.25)\"></span>of met je e-mailadres<span style=\"flex:1;height:1px;background:rgba(31,24,78,0.25)\"></span>\n      </div>\n      <form @submit=\"dcv.submit\" style=\"display:flex;flex-direction:column;gap:16px\">\n        <label style=\"display:flex;flex-direction:column;gap:6px;font-size:14px;line-height:1.4;font-weight:500;color:#1F184E\">E-mailadres\n          <input type=\"email\" :value=\"dcv.email ?? ''\" @input=\"dcv.onEmail\" autocomplete=\"email\" placeholder=\"naam@bedrijf.nl\" style=\"height:54px;border:none;border-radius:12px;background:rgba(31,24,78,0.1);color:#1F184E;padding:0 16px;font-family:'Golos Text',sans-serif;font-size:16px;font-weight:500;outline:none\">\n          <template v-if=\"dcv.emailErr\"><span style=\"font-size:13px;color:#4F0151\">Vul een geldig e-mailadres in.</span></template>\n        </label>\n        <label style=\"display:flex;flex-direction:column;gap:6px;font-size:14px;line-height:1.4;font-weight:500;color:#1F184E\">\n          <span style=\"display:flex;justify-content:space-between;gap:12px\">Wachtwoord<a href=\"#\" @click=\"dcv.forgot\" style=\"font-size:14px;text-decoration:underline;text-underline-offset:3px\">Vergeten?</a></span>\n          <input type=\"password\" :value=\"dcv.pw ?? ''\" @input=\"dcv.onPw\" autocomplete=\"current-password\" placeholder=\"Je wachtwoord\" style=\"height:54px;border:none;border-radius:12px;background:rgba(31,24,78,0.1);color:#1F184E;padding:0 16px;font-family:'Golos Text',sans-serif;font-size:16px;font-weight:500;outline:none\">\n          <template v-if=\"dcv.pwErr\"><span style=\"font-size:13px;color:#4F0151\">Vul je wachtwoord in.</span></template>\n        </label>\n        <button class=\"login-scp2\" type=\"submit\" style=\"height:54px;display:flex;align-items:center;justify-content:center;gap:12px;border:none;border-radius:12px;background:#1F184E;color:#F9F7F3;font-family:'Golos Text',sans-serif;font-size:16px;font-weight:500;cursor:pointer\">Inloggen<img src=\"/.publisher/sd/kiek/kiek/assets/home/arrow-cream.svg\" alt=\"\" style=\"width:26px;height:16px\"></button>\n      </form>\n      <template v-if=\"dcv.note\">\n        <span role=\"status\" style=\"font-size:14px;line-height:1.4;font-weight:500;color:#1F184E\"><span v-if=\"dcrt.shows(dcv.note)\" class=\"sc-interp\">{{ dcv.note }}</span></span>\n      </template>\n      <span style=\"font-size:14px;line-height:1.4;font-weight:500;color:rgba(31,24,78,0.75)\">Nog geen account? <a :href=\"dcrt.page('aanmelden/')\" target=\"_top\" style=\"color:#1F184E;text-decoration:underline;text-underline-offset:3px\">Maak er een aan</a></span>\n    </div>\n  </main></div></div></div></template>\n\n<script setup lang=\"ts\">\nimport * as dcrt from \"../lib/dc\";\nimport { useHelmet } from \"../lib/helmet\";\nimport Logic from \"./Login.logic.js\";\nimport helmetCss from \"./Login.helmet\";\n\nconst props = defineProps({\n\n});\nuseHelmet(helmetCss);\nconst dcv = dcrt.useDC(Logic, props);\n</script>\n","import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createStaticVNode as _createStaticVNode } from \"vue\"\n\nconst _hoisted_1 = {\n  class: \"sc-host\",\n  \"data-sc-name\": \"Kiek Login\"\n}\nconst _hoisted_2 = {\n  \"data-kp-wrap\": \"1\",\n  style: {\"position\":\"relative\",\"min-height\":\"100vh\",\"padding\":\"clamp(16px,4vw,56px)\",\"display\":\"flex\",\"background\":\"#1F184E\"}\n}\nconst _hoisted_3 = [\"src\"]\nconst _hoisted_4 = {\n  \"data-screen-label\": \"Login\",\n  \"data-kp\": \"1\",\n  role: \"dialog\",\n  \"aria-modal\": \"true\",\n  \"aria-label\": \"Inloggen\",\n  style: {\"position\":\"relative\",\"flex\":\"1\",\"min-height\":\"calc(100vh - 2 * clamp(16px,4vw,56px))\",\"border-radius\":\"32px\",\"animation\":\"kp-pop 0.6s cubic-bezier(0.2,0.8,0.2,1) both\",\"background\":\"#1F184E\",\"color\":\"#F9F7F3\",\"font-family\":\"'Golos Text',sans-serif\",\"overflow\":\"hidden\",\"display\":\"flex\",\"flex-direction\":\"column\"}\n}\nconst _hoisted_5 = { style: {\"position\":\"relative\",\"z-index\":\"2\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"space-between\",\"gap\":\"24px\",\"padding\":\"24px\"} }\nconst _hoisted_6 = [\"href\"]\nconst _hoisted_7 = { style: {\"position\":\"relative\",\"z-index\":\"1\",\"flex\":\"1\",\"display\":\"flex\",\"flex-wrap\":\"wrap\",\"align-items\":\"center\",\"justify-content\":\"space-between\",\"gap\":\"64px\",\"padding\":\"clamp(24px,4vw,56px) clamp(20px,5.3vw,80px) 80px\",\"max-width\":\"1512px\",\"width\":\"100%\",\"margin\":\"0 auto\"} }\nconst _hoisted_8 = {\n  \"data-kp\": \"1\",\n  style: {\"flex\":\"0 1 520px\",\"min-width\":\"min(100%,340px)\",\"border-radius\":\"32px\",\"background\":\"#7D80FF\",\"animation\":\"kp-card 0.7s cubic-bezier(0.2,0.8,0.2,1) 0.32s both\",\"color\":\"#1F184E\",\"padding\":\"clamp(28px,3.5vw,48px)\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"24px\"}\n}\nconst _hoisted_9 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\"} }\nconst _hoisted_10 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\",\"font-size\":\"14px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"color\":\"#1F184E\"} }\nconst _hoisted_11 = [\"value\"]\nconst _hoisted_12 = {\n  key: 0,\n  style: {\"font-size\":\"13px\",\"color\":\"#4F0151\"}\n}\nconst _hoisted_13 = { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"6px\",\"font-size\":\"14px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"color\":\"#1F184E\"} }\nconst _hoisted_14 = { style: {\"display\":\"flex\",\"justify-content\":\"space-between\",\"gap\":\"12px\"} }\nconst _hoisted_15 = [\"value\"]\nconst _hoisted_16 = {\n  key: 0,\n  style: {\"font-size\":\"13px\",\"color\":\"#4F0151\"}\n}\nconst _hoisted_17 = {\n  key: 0,\n  role: \"status\",\n  style: {\"font-size\":\"14px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"color\":\"#1F184E\"}\n}\nconst _hoisted_18 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_19 = { style: {\"font-size\":\"14px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"color\":\"rgba(31,24,78,0.75)\"} }\nconst _hoisted_20 = [\"href\"]\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n  return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n    _createElementVNode(\"div\", _hoisted_2, [\n      _createElementVNode(\"iframe\", {\n        \"data-kp-frame\": \"1\",\n        src: $setup.dcv.bgSrc,\n        title: \"Kiek homepage op de achtergrond\",\n        \"aria-hidden\": \"true\",\n        tabindex: \"-1\",\n        style: {\"position\":\"fixed\",\"inset\":\"0\",\"width\":\"100%\",\"height\":\"100%\",\"border\":\"0\",\"pointer-events\":\"none\"}\n      }, null, 8 /* PROPS */, _hoisted_3),\n      _createElementVNode(\"div\", {\n        onClick: _cache[0] || (_cache[0] = (...args) => ($setup.dcv.close && $setup.dcv.close(...args))),\n        \"data-kp\": \"1\",\n        \"data-kp-bg\": \"1\",\n        style: {\"position\":\"fixed\",\"inset\":\"0\",\"background\":\"rgba(14,10,42,0.6)\",\"animation\":\"kp-fade 0.4s ease-out both\"}\n      }),\n      _createElementVNode(\"div\", _hoisted_4, [\n        _cache[29] || (_cache[29] = _createElementVNode(\"img\", {\n          src: \"/.publisher/sd/kiek/kiek/assets/home/k-outline.svg\",\n          alt: \"\",\n          style: {\"position\":\"absolute\",\"left\":\"-140px\",\"top\":\"120px\",\"width\":\"908px\",\"height\":\"1051px\",\"pointer-events\":\"none\"}\n        }, null, -1 /* CACHED */)),\n        _cache[30] || (_cache[30] = _createTextVNode()),\n        _createElementVNode(\"header\", _hoisted_5, [\n          _createElementVNode(\"a\", {\n            href: $setup.dcrt.page(''),\n            target: \"_top\",\n            \"aria-label\": \"Kiek home\",\n            style: {\"display\":\"flex\"}\n          }, _cache[8] || (_cache[8] = [\n            _createElementVNode(\"img\", {\n              src: \"/.publisher/sd/kiek/kiek/assets/home/kiek-logo.svg\",\n              alt: \"Kiek\",\n              style: {\"width\":\"120px\",\"height\":\"40.195px\",\"display\":\"block\"}\n            }, null, -1 /* CACHED */)\n          ]), 8 /* PROPS */, _hoisted_6),\n          _cache[10] || (_cache[10] = _createTextVNode()),\n          _createElementVNode(\"button\", {\n            class: \"login-scp0\",\n            type: \"button\",\n            onClick: _cache[1] || (_cache[1] = (...args) => ($setup.dcv.close && $setup.dcv.close(...args))),\n            \"aria-label\": \"Sluiten\",\n            style: {\"position\":\"relative\",\"width\":\"54px\",\"height\":\"54px\",\"flex-shrink\":\"0\",\"border\":\"0\",\"border-radius\":\"12px\",\"background\":\"rgba(255,255,255,0.1)\",\"cursor\":\"pointer\"}\n          }, _cache[9] || (_cache[9] = [\n            _createElementVNode(\"span\", { style: {\"position\":\"absolute\",\"left\":\"50%\",\"top\":\"50%\",\"width\":\"22px\",\"height\":\"2px\",\"border-radius\":\"2px\",\"background\":\"#F9F7F3\",\"transform\":\"translate(-50%,-50%) rotate(45deg)\"} }, null, -1 /* CACHED */),\n            _createElementVNode(\"span\", { style: {\"position\":\"absolute\",\"left\":\"50%\",\"top\":\"50%\",\"width\":\"22px\",\"height\":\"2px\",\"border-radius\":\"2px\",\"background\":\"#F9F7F3\",\"transform\":\"translate(-50%,-50%) rotate(-45deg)\"} }, null, -1 /* CACHED */)\n          ]))\n        ]),\n        _cache[31] || (_cache[31] = _createTextVNode()),\n        _createElementVNode(\"main\", _hoisted_7, [\n          _cache[28] || (_cache[28] = _createStaticVNode(\"<div style=\\\"flex:1 1 420px;display:flex;flex-direction:column;gap:40px;min-width:0;container-type:inline-size;animation:kp-up 0.7s cubic-bezier(0.2,0.8,0.2,1) 0.2s both;\\\" data-kp=\\\"1\\\"><h1 style=\\\"margin:0;font-family:Degular,sans-serif;font-weight:800;font-size:clamp(48px,22cqw,136px);line-height:0.75;letter-spacing:-0.02em;color:#F9F7F3;\\\">Effe<br><span style=\\\"position:relative;display:inline-block;\\\"><img src=\\\"/.publisher/sd/kiek/kiek/assets/home/underline-lavender.svg\\\" alt=\\\"\\\" data-kp=\\\"1\\\" style=\\\"position:absolute;left:-2%;width:104%;bottom:-0.02em;height:0.13em;transform:rotate(-1deg);animation:kp-line 0.6s ease-out 0.7s both;\\\"><span style=\\\"position:relative;\\\">inloggen.</span></span></h1> <p style=\\\"margin:0;max-width:460px;font-size:18px;line-height:1.4;font-weight:500;color:rgba(255,255,255,0.75);text-wrap:pretty;\\\">Je gesprekken, verslagen en bronnen staan klaar. Ga verder waar je gebleven was.</p></div> \", 2)),\n          _createElementVNode(\"div\", _hoisted_8, [\n            _cache[21] || (_cache[21] = _createElementVNode(\"div\", { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"8px\"} }, [\n              _createElementVNode(\"h2\", { style: {\"margin\":\"0\",\"font-family\":\"Degular,sans-serif\",\"font-weight\":\"800\",\"font-size\":\"48px\",\"line-height\":\"0.85\",\"letter-spacing\":\"-0.02em\",\"color\":\"#1F184E\"} }, \"Welkom terug\"),\n              _createTextVNode(),\n              _createElementVNode(\"span\", { style: {\"font-size\":\"16px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"color\":\"rgba(31,24,78,0.75)\"} }, \"Log in met je zakelijke account.\")\n            ], -1 /* CACHED */)),\n            _cache[22] || (_cache[22] = _createTextVNode()),\n            _createElementVNode(\"div\", _hoisted_9, [\n              _createElementVNode(\"button\", {\n                class: \"login-scp1\",\n                type: \"button\",\n                onClick: _cache[2] || (_cache[2] = (...args) => ($setup.dcv.ssoGoogle && $setup.dcv.ssoGoogle(...args))),\n                style: {\"height\":\"54px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"#F9F7F3\",\"color\":\"#1F184E\",\"font-family\":\"'Golos Text',sans-serif\",\"font-size\":\"16px\",\"font-weight\":\"500\",\"cursor\":\"pointer\"}\n              }, \"Doorgaan met Google\"),\n              _cache[11] || (_cache[11] = _createTextVNode()),\n              _createElementVNode(\"button\", {\n                class: \"login-scp1\",\n                type: \"button\",\n                onClick: _cache[3] || (_cache[3] = (...args) => ($setup.dcv.ssoMicrosoft && $setup.dcv.ssoMicrosoft(...args))),\n                style: {\"height\":\"54px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"#F9F7F3\",\"color\":\"#1F184E\",\"font-family\":\"'Golos Text',sans-serif\",\"font-size\":\"16px\",\"font-weight\":\"500\",\"cursor\":\"pointer\"}\n              }, \"Doorgaan met Microsoft\")\n            ]),\n            _cache[23] || (_cache[23] = _createTextVNode()),\n            _cache[24] || (_cache[24] = _createElementVNode(\"div\", { style: {\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"12px\",\"font-size\":\"14px\",\"line-height\":\"1.4\",\"font-weight\":\"500\",\"color\":\"rgba(31,24,78,0.75)\"} }, [\n              _createElementVNode(\"span\", { style: {\"flex\":\"1\",\"height\":\"1px\",\"background\":\"rgba(31,24,78,0.25)\"} }),\n              _createTextVNode(\"of met je e-mailadres\"),\n              _createElementVNode(\"span\", { style: {\"flex\":\"1\",\"height\":\"1px\",\"background\":\"rgba(31,24,78,0.25)\"} })\n            ], -1 /* CACHED */)),\n            _cache[25] || (_cache[25] = _createTextVNode()),\n            _createElementVNode(\"form\", {\n              onSubmit: _cache[7] || (_cache[7] = (...args) => ($setup.dcv.submit && $setup.dcv.submit(...args))),\n              style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"16px\"}\n            }, [\n              _createElementVNode(\"label\", _hoisted_10, [\n                _cache[12] || (_cache[12] = _createTextVNode(\"E-mailadres\\n          \", -1 /* CACHED */)),\n                _createElementVNode(\"input\", {\n                  type: \"email\",\n                  value: $setup.dcv.email ?? '',\n                  onInput: _cache[4] || (_cache[4] = (...args) => ($setup.dcv.onEmail && $setup.dcv.onEmail(...args))),\n                  autocomplete: \"email\",\n                  placeholder: \"naam@bedrijf.nl\",\n                  style: {\"height\":\"54px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"rgba(31,24,78,0.1)\",\"color\":\"#1F184E\",\"padding\":\"0 16px\",\"font-family\":\"'Golos Text',sans-serif\",\"font-size\":\"16px\",\"font-weight\":\"500\",\"outline\":\"none\"}\n                }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_11),\n                _cache[13] || (_cache[13] = _createTextVNode()),\n                ($setup.dcv.emailErr)\n                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_12, \"Vul een geldig e-mailadres in.\"))\n                  : _createCommentVNode(\"v-if\", true)\n              ]),\n              _cache[17] || (_cache[17] = _createTextVNode()),\n              _createElementVNode(\"label\", _hoisted_13, [\n                _createElementVNode(\"span\", _hoisted_14, [\n                  _cache[14] || (_cache[14] = _createTextVNode(\"Wachtwoord\", -1 /* CACHED */)),\n                  _createElementVNode(\"a\", {\n                    href: \"#\",\n                    onClick: _cache[5] || (_cache[5] = (...args) => ($setup.dcv.forgot && $setup.dcv.forgot(...args))),\n                    style: {\"font-size\":\"14px\",\"text-decoration\":\"underline\",\"text-underline-offset\":\"3px\"}\n                  }, \"Vergeten?\")\n                ]),\n                _cache[15] || (_cache[15] = _createTextVNode()),\n                _createElementVNode(\"input\", {\n                  type: \"password\",\n                  value: $setup.dcv.pw ?? '',\n                  onInput: _cache[6] || (_cache[6] = (...args) => ($setup.dcv.onPw && $setup.dcv.onPw(...args))),\n                  autocomplete: \"current-password\",\n                  placeholder: \"Je wachtwoord\",\n                  style: {\"height\":\"54px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"rgba(31,24,78,0.1)\",\"color\":\"#1F184E\",\"padding\":\"0 16px\",\"font-family\":\"'Golos Text',sans-serif\",\"font-size\":\"16px\",\"font-weight\":\"500\",\"outline\":\"none\"}\n                }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_15),\n                _cache[16] || (_cache[16] = _createTextVNode()),\n                ($setup.dcv.pwErr)\n                  ? (_openBlock(), _createElementBlock(\"span\", _hoisted_16, \"Vul je wachtwoord in.\"))\n                  : _createCommentVNode(\"v-if\", true)\n              ]),\n              _cache[18] || (_cache[18] = _createTextVNode()),\n              _cache[19] || (_cache[19] = _createElementVNode(\"button\", {\n                class: \"login-scp2\",\n                type: \"submit\",\n                style: {\"height\":\"54px\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\",\"gap\":\"12px\",\"border\":\"none\",\"border-radius\":\"12px\",\"background\":\"#1F184E\",\"color\":\"#F9F7F3\",\"font-family\":\"'Golos Text',sans-serif\",\"font-size\":\"16px\",\"font-weight\":\"500\",\"cursor\":\"pointer\"}\n              }, [\n                _createTextVNode(\"Inloggen\"),\n                _createElementVNode(\"img\", {\n                  src: \"/.publisher/sd/kiek/kiek/assets/home/arrow-cream.svg\",\n                  alt: \"\",\n                  style: {\"width\":\"26px\",\"height\":\"16px\"}\n                })\n              ], -1 /* CACHED */))\n            ], 32 /* NEED_HYDRATION */),\n            _cache[26] || (_cache[26] = _createTextVNode()),\n            ($setup.dcv.note)\n              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_17, [\n                  ($setup.dcrt.shows($setup.dcv.note))\n                    ? (_openBlock(), _createElementBlock(\"span\", _hoisted_18, _toDisplayString($setup.dcv.note), 1 /* TEXT */))\n                    : _createCommentVNode(\"v-if\", true)\n                ]))\n              : _createCommentVNode(\"v-if\", true),\n            _cache[27] || (_cache[27] = _createTextVNode()),\n            _createElementVNode(\"span\", _hoisted_19, [\n              _cache[20] || (_cache[20] = _createTextVNode(\"Nog geen account? \", -1 /* CACHED */)),\n              _createElementVNode(\"a\", {\n                href: $setup.dcrt.page('aanmelden/'),\n                target: \"_top\",\n                style: {\"color\":\"#1F184E\",\"text-decoration\":\"underline\",\"text-underline-offset\":\"3px\"}\n              }, \"Maak er een aan\", 8 /* PROPS */, _hoisted_20)\n            ])\n          ])\n        ])\n      ])\n    ])\n  ]))\n}","import script from \"/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Login.vue?type=script\";import { render } from \"/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Login.vue?type=template\"; script.render = render;script.__file = \"../opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Login.vue\";export default script;","// Generated by design-1op1 dc2vue from the <script type=\"text/x-dc\"> of \"Kiek App v3 Overzicht.dc.html\"; do not edit.\nimport { DCLogic, React } from \"../lib/dc\";\nimport { SITE_ROOT } from \"../lib/site\";\n\nclass Component extends DCLogic {\n  renderVals() {\n    const roles = [\n      ['Gast', 'gast', SITE_ROOT + 'app/?gast=1&q=' + encodeURIComponent('Ik overweeg om over te stappen op lokale leveranciers')],\n      ['Gebruiker', 'gebruiker', SITE_ROOT + 'app/?rol=gebruiker'],\n      ['Onderzoeker', 'onderzoeker', SITE_ROOT + 'app/?rol=onderzoeker'],\n      ['Beheerder', 'beheerder', SITE_ROOT + 'app/?rol=beheerder'],\n    ];\n    return {\n      rows: roles.map(([title, key, base], i) => ({\n        title,\n        frames: [['donker', '#1F184E'], ['licht', '#F4F0E9']].map(([th, bg], j) => ({\n          id: (i + 1) + (j ? 'b' : 'a'),\n          label: title + ' · ' + th,\n          bg,\n          src: base + '&thema=' + th,\n        })),\n      })),\n    };\n  }\n}\n\nexport default Component;\n","// Generated by design-1op1 dc2vue from the <helmet> of \"Kiek App v3 Overzicht.dc.html\"; do not edit.\nexport default \"\\n    body{margin:0;background:#EDE7D9}\\n    a{color:#1F184E}\\n    a:hover{color:#7D80FF}\\n  \";\n","<!-- Generated by design-1op1 dc2vue from \"Kiek App v3 Overzicht.dc.html\"; do not edit. -->\n<template><div class=\"sc-host\" data-sc-name=\"Kiek App v3 Overzicht\"><section data-screen-label=\"Overzicht\" style=\"padding:64px;display:flex;flex-direction:column;gap:48px;font-family:'Golos Text',sans-serif;color:#1F184E;background:#EDE7D9\">\n  <div style=\"display:flex;flex-direction:column;gap:12px;max-width:900px\">\n    <h1 style=\"margin:0;font-family:Degular,sans-serif;font-weight:800;font-size:96px;line-height:0.8;letter-spacing:-0.02em\">Kiek App v3.</h1>\n    <p style=\"margin:0;font-size:20px;line-height:1.4;font-weight:500\">Alle rollen in beide thema’s. Elk venster is de werkende app; klik op een titel om hem los te openen.</p>\n  </div>\n\n  <template v-for=\"(row, $index) in dcrt.list(dcv.rows)\" :key=\"$index\">\n    <div style=\"display:flex;flex-direction:column;gap:16px\">\n      <span style=\"font-family:Degular,sans-serif;font-weight:800;font-size:48px;line-height:0.9;letter-spacing:-0.02em\"><span v-if=\"dcrt.shows(row?.title)\" class=\"sc-interp\">{{ row?.title }}</span></span>\n      <div style=\"display:flex;gap:40px;flex-wrap:wrap\">\n        <template v-for=\"(f, $index) in dcrt.list(row?.frames)\" :key=\"$index\">\n          <div :id=\"f?.id\" style=\"display:flex;flex-direction:column;gap:10px\">\n            <div style=\"display:flex;align-items:center;gap:10px\">\n              <span style=\"border-radius:8px;background:#1F184E;color:#F9F7F3;padding:4px 10px;font-size:14px;font-weight:700\"><span v-if=\"dcrt.shows(f?.id)\" class=\"sc-interp\">{{ f?.id }}</span></span>\n              <a :href=\"f?.src\" target=\"_blank\" style=\"font-size:16px;font-weight:600\"><span v-if=\"dcrt.shows(f?.label)\" class=\"sc-interp\">{{ f?.label }}</span></a>\n            </div>\n            <div :style=\"dcrt.style(`width:1440px;height:900px;border-radius:16px;overflow:hidden;background:${f?.bg ?? ''};box-shadow:0 0 0 1px rgba(31,24,78,0.12)`)\">\n              <iframe :src=\"f?.src\" :title=\"f?.label\" loading=\"lazy\" style=\"width:1440px;height:900px;border:0;display:block\"></iframe>\n            </div>\n          </div>\n        </template>\n      </div>\n    </div>\n  </template></section></div></template>\n\n<script setup lang=\"ts\">\nimport * as dcrt from \"../lib/dc\";\nimport { useHelmet } from \"../lib/helmet\";\nimport Logic from \"./Overzicht.logic.js\";\nimport helmetCss from \"./Overzicht.helmet\";\n\nconst props = defineProps({\n\n});\nuseHelmet(helmetCss);\nconst dcv = dcrt.useDC(Logic, props);\n</script>\n","import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle } from \"vue\"\n\nconst _hoisted_1 = {\n  class: \"sc-host\",\n  \"data-sc-name\": \"Kiek App v3 Overzicht\"\n}\nconst _hoisted_2 = {\n  \"data-screen-label\": \"Overzicht\",\n  style: {\"padding\":\"64px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"48px\",\"font-family\":\"'Golos Text',sans-serif\",\"color\":\"#1F184E\",\"background\":\"#EDE7D9\"}\n}\nconst _hoisted_3 = { style: {\"font-family\":\"Degular,sans-serif\",\"font-weight\":\"800\",\"font-size\":\"48px\",\"line-height\":\"0.9\",\"letter-spacing\":\"-0.02em\"} }\nconst _hoisted_4 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_5 = { style: {\"display\":\"flex\",\"gap\":\"40px\",\"flex-wrap\":\"wrap\"} }\nconst _hoisted_6 = [\"id\"]\nconst _hoisted_7 = { style: {\"display\":\"flex\",\"align-items\":\"center\",\"gap\":\"10px\"} }\nconst _hoisted_8 = { style: {\"border-radius\":\"8px\",\"background\":\"#1F184E\",\"color\":\"#F9F7F3\",\"padding\":\"4px 10px\",\"font-size\":\"14px\",\"font-weight\":\"700\"} }\nconst _hoisted_9 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_10 = [\"href\"]\nconst _hoisted_11 = {\n  key: 0,\n  class: \"sc-interp\"\n}\nconst _hoisted_12 = [\"src\", \"title\"]\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n  return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n    _createElementVNode(\"section\", _hoisted_2, [\n      _cache[3] || (_cache[3] = _createElementVNode(\"div\", { style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"12px\",\"max-width\":\"900px\"} }, [\n        _createElementVNode(\"h1\", { style: {\"margin\":\"0\",\"font-family\":\"Degular,sans-serif\",\"font-weight\":\"800\",\"font-size\":\"96px\",\"line-height\":\"0.8\",\"letter-spacing\":\"-0.02em\"} }, \"Kiek App v3.\"),\n        _createTextVNode(),\n        _createElementVNode(\"p\", { style: {\"margin\":\"0\",\"font-size\":\"20px\",\"line-height\":\"1.4\",\"font-weight\":\"500\"} }, \"Alle rollen in beide thema’s. Elk venster is de werkende app; klik op een titel om hem los te openen.\")\n      ], -1 /* CACHED */)),\n      _cache[4] || (_cache[4] = _createTextVNode()),\n      (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list($setup.dcv.rows), (row, $index) => {\n        return (_openBlock(), _createElementBlock(\"div\", {\n          key: $index,\n          style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"16px\"}\n        }, [\n          _createElementVNode(\"span\", _hoisted_3, [\n            ($setup.dcrt.shows(row?.title))\n              ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, _toDisplayString(row?.title), 1 /* TEXT */))\n              : _createCommentVNode(\"v-if\", true)\n          ]),\n          _cache[2] || (_cache[2] = _createTextVNode()),\n          _createElementVNode(\"div\", _hoisted_5, [\n            (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.dcrt.list(row?.frames), (f, $index) => {\n              return (_openBlock(), _createElementBlock(\"div\", {\n                key: $index,\n                id: f?.id,\n                style: {\"display\":\"flex\",\"flex-direction\":\"column\",\"gap\":\"10px\"}\n              }, [\n                _createElementVNode(\"div\", _hoisted_7, [\n                  _createElementVNode(\"span\", _hoisted_8, [\n                    ($setup.dcrt.shows(f?.id))\n                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_9, _toDisplayString(f?.id), 1 /* TEXT */))\n                      : _createCommentVNode(\"v-if\", true)\n                  ]),\n                  _cache[0] || (_cache[0] = _createTextVNode()),\n                  _createElementVNode(\"a\", {\n                    href: f?.src,\n                    target: \"_blank\",\n                    style: {\"font-size\":\"16px\",\"font-weight\":\"600\"}\n                  }, [\n                    ($setup.dcrt.shows(f?.label))\n                      ? (_openBlock(), _createElementBlock(\"span\", _hoisted_11, _toDisplayString(f?.label), 1 /* TEXT */))\n                      : _createCommentVNode(\"v-if\", true)\n                  ], 8 /* PROPS */, _hoisted_10)\n                ]),\n                _cache[1] || (_cache[1] = _createTextVNode()),\n                _createElementVNode(\"div\", {\n                  style: _normalizeStyle($setup.dcrt.style(`width:1440px;height:900px;border-radius:16px;overflow:hidden;background:${f?.bg ?? ''};box-shadow:0 0 0 1px rgba(31,24,78,0.12)`))\n                }, [\n                  _createElementVNode(\"iframe\", {\n                    src: f?.src,\n                    title: f?.label,\n                    loading: \"lazy\",\n                    style: {\"width\":\"1440px\",\"height\":\"900px\",\"border\":\"0\",\"display\":\"block\"}\n                  }, null, 8 /* PROPS */, _hoisted_12)\n                ], 4 /* STYLE */)\n              ], 8 /* PROPS */, _hoisted_6))\n            }), 128 /* KEYED_FRAGMENT */))\n          ])\n        ]))\n      }), 128 /* KEYED_FRAGMENT */))\n    ])\n  ]))\n}","import script from \"/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Overzicht.vue?type=script\";import { render } from \"/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Overzicht.vue?type=template\"; script.render = render;script.__file = \"../opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/views/Overzicht.vue\";export default script;","import \"@webhare/frontend/src/init\";import \"/opt/wh/whtree/modules/publisher/js/internal/polyfills/all\";\nimport \"/opt/whdata/installedmodules/kiek.20261021T103206.101Z/webdesigns/kiek/frontend/frontend\";const aps = globalThis.whAssetPacks ||= {}; aps[\"kiek:kiek\"]=\"2026-10-21T10:32:21.557Z\";"],"mappings":"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AAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,KAAK,GAAG,GAAG,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,IAAI,KAAK,GAAG,KAAK,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,KAAK,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,MAAM,GAAG,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,KAAK,IAAI,KAAK,KAAK,EAAE,IAAI,EAE1jDC,GAAwB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,KAAK,EAAE,EAAE,GAAG,MAAM,GAAG,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,EAK90B,SAASC,GAAc3pB,EAAc6Q,EAAiC,CACpE,IAAIJ,EAAM,MACV,QAASmZ,EAAI,EAAGnO,EAAS5K,EAAI4K,OAAQmO,EAAInO,EAAQmO,GAAK,EAAG,CAEvD,GADAnZ,GAAOI,EAAI+Y,CAAC,EACRnZ,EAAMzQ,EAAM,MAAO,GAGvB,GADAyQ,GAAOI,EAAI+Y,EAAI,CAAC,EACZnZ,GAAOzQ,EAAM,MAAO,EAC1B,CACA,MAAO,EACT,CAIO,SAAS6pB,GAAkB7pB,EAAuB,CACvD,OAAIA,EAAI,GAAgCA,IAA6B,GACjEA,GAAI,GAAiC,GACrCA,EAAI,GAAgCA,IAA6B,GACjEA,GAAI,IAAiC,GACrCA,GAAQ,MAERA,GAAQ,KAAQupB,GAAwBO,KAAK9b,OAAO+b,aAAa/pB,CAAI,CAAC,EAGnE2pB,GAAc3pB,EAAMypB,EAA0B,CACvD,CAIO,SAASO,GAAiBhqB,EAAuB,CACtD,OAAIA,EAAI,GAA4BA,IAA6B,GAC7DA,EAAI,GAA2B,GAC/BA,EAAI,GAAgC,GACpCA,GAAI,GAAiC,GACrCA,EAAI,GAAgCA,IAA6B,GACjEA,GAAI,IAAiC,GACrCA,GAAQ,MACHA,GAAQ,KAAQwpB,GAAmBM,KAAK9b,OAAO+b,aAAa/pB,CAAI,CAAC,EAGxE2pB,GAAc3pB,EAAMypB,EAA0B,GAC9CE,GAAc3pB,EAAM0pB,EAAqB,CAE7C,CClFA,IAAMO,GAAgB,CACpBlf,QAAS,CACP,QACA,OACA,QACA,WACA,WACA,UACA,KACA,OACA,UACA,MACA,WACA,KACA,SACA,SACA,QACA,MACA,MACA,QACA,QACA,OACA,MACA,OACA,QACA,QACA,UACA,SACA,SACA,OACA,OACA,QACA,KACA,aACA,SACA,OACA,QAAQ,EAEVmf,OAAQ,CACN,aACA,YACA,MACA,UACA,UACA,YACA,SACA,SACA,OAAO,EAETC,WAAY,CAAC,OAAQ,WAAW,CAClC,EACMxM,GAAW,IAAIxP,IAAI8b,GAAclf,OAAO,EACxCqf,GAAyB,IAAIjc,IAAI8b,GAAcC,MAAM,EACrDG,GAA6B,IAAIlc,IAAI8b,GAAcE,UAAU,EAK5D,SAASG,GAAeC,EAAcC,EAA4B,CACvE,OAAQA,GAAYD,IAAS,SAAYA,IAAS,MACpD,CAOO,SAASE,GAAqBF,EAAcC,EAA4B,CAC7E,OAAOF,GAAeC,EAAMC,CAAQ,GAAKJ,GAAuBM,IAAIH,CAAI,CAC1E,CAMO,SAASI,GAA6BJ,EAAuB,CAClE,OAAOF,GAA2BK,IAAIH,CAAI,CAC5C,CAOO,SAASK,GACdL,EACAC,EACS,CACT,OACEC,GAAqBF,EAAMC,CAAQ,GAAKG,GAA6BJ,CAAI,CAE7E,CAEO,SAASM,GAAUN,EAAuB,CAC/C,OAAO5M,GAAS+M,IAAIH,CAAI,CAC1B,CC9EO,SAASO,GACdC,EACAC,EACAC,EACS,CACT,OACEF,IAAO,IACPC,IAAI,IACJnB,GAAkBoB,CAAK,CAE3B,CAOA,IAAMC,GAAsB,IAAI/c,IAAI,CAClC,QACA,OACA,QACA,WACA,WACA,UACA,KACA,OACA,UACA,MACA,WACA,KACA,SACA,SACA,QACA,MACA,MACA,QACA,QACA,OACA,MACA,OACA,QACA,QACA,UACA,SACA,SACA,OACA,OACA,QACA,KACA,aACA,SACA,OACA,SAEA,aACA,YACA,MACA,UACA,UACA,YACA,SACA,SACA,QAEA,OACA,YAEA,OACA,OAAO,CACR,EAEM,SAASgd,GAAkBZ,EAAuB,CACvD,OAAOW,GAAoBR,IAAIH,CAAI,CACrC,CC1EO,IAAMa,GAAN,KAAY,CAKjBjsB,YAAY+U,EAAkB,CAAA,KAJ9BA,MAAmB,EAAC,KACpBmX,MAA+B,IAAIzN,IAAK,KACxC0N,iBAAmB,GAGjB,KAAKpX,MAAQA,CACf,CACF,EAIqBqX,GAAN,KAAiD,CAM9DpsB,YAAYqsB,EAAmBhB,EAAmB,CAAA,KALlDgB,OAAM,OAAA,KACNC,WAA4B,CAAA,EAAE,KAC9BjB,SAAQ,OAAA,KACRkB,iBAA0C,IAAI9N,IAG5C,KAAK4N,OAASA,EACd,KAAKhB,SAAWA,CAClB,CAEA,IAAImB,YAAa,CACf,OAAQ,KAAKC,aAAc,EAAC1X,MAAK,GAAwB,CAC3D,CACA,IAAI2X,YAAa,CACf,OAAQ,KAAKC,qBAAoB,EAAE,GAA8B,CACnE,CACA,IAAIC,YAAa,CACf,OAAQ,KAAKC,sBAAqB,EAAE,IAAsB,CAC5D,CACA,IAAI5T,kBAAmB,CACrB,OAAQ,KAAK4T,sBAAqB,EAAE,IAA6B,CACnE,CACA,IAAIC,gBAAiB,CACnB,OAAQ,KAAKD,sBAAqB,EAAE,KAA2B,CACjE,CACA,IAAIE,SAAU,CACZ,OAAQ,KAAKF,sBAAqB,EAAE,IAA2B,CACjE,CACA,IAAIG,iCAAkC,CACpC,IAAMjY,EAAQ,KAAK8X,sBAAqB,EACxC,OACG9X,EAAK,IAA2B,IAChCA,EAAK,KAAgC,CAE1C,CACA,IAAIkY,eAAgB,CAClB,QAASxC,EAAI,KAAK6B,WAAWhQ,OAAS,GAAKmO,IAAK,CAC9C,GAAM,CAAE1V,MAAAA,CAAM,EAAI,KAAKuX,WAAW7B,CAAC,EACnC,GAAI1V,EAAK,IACP,MAAO,GAET,GAAIA,EAASmY,KAEX,MAAO,EAEX,CACF,CACA,IAAIC,oBAAqB,CACvB,OAAQ,KAAKN,sBAAqB,EAAE,GAA8B,CACpE,CACA,IAAIO,qBAAsB,CACxB,OAAQ,KAAKX,aAAc,EAAC1X,MAAK,KAAuB,CAC1D,CACA,IAAIsY,qBAAsB,CACxB,OAAO,KAAKC,2BAA2B,KAAKb,aAAc,CAAA,CAC5D,CAEAc,YAAYxY,EAAyB,CACnC,OAAO,IAAIkX,GAAMlX,CAAK,CACxB,CAEAyY,MAAMzY,EAAkB,CAGtB,KAAKuX,WAAW9M,KAAK,KAAK+N,YAAYxY,CAAK,CAAC,CAC9C,CAEA0Y,MAAkB,CAEhB,OADc,KAAKnB,WAAWtC,IAAG,EACpBjV,KACf,CAKAuY,2BAA2BI,EAAwB,CACjD,MAAO,CAAC,EACNA,EAAM3Y,MAASmY,KACd,CAAC,KAAKb,OAAOhB,UAAYqC,EAAM3Y,MAAK,EAEzC,CAEA4Y,YAAYhlB,EAAcilB,EAA0B1c,EAAe,CACjE,IAAIwc,EAAQ,KAAKjB,aAAY,EAC7B,GACEmB,EAAW,GACXA,EAAW,GACX,CACA,KAAKC,0BAA0BH,EAAO/kB,EAAMilB,EAAa1c,CAAG,EAE5D,IAAIvO,EAAO+qB,EAAMxB,MAAMza,IAAI9I,CAAI,GAAK,EAEhCilB,EAAW,GACbjrB,EAAOA,EAAI,GAEN+qB,EAAMvB,mBACTuB,EAAMvB,iBAAmBxjB,GAE3BhG,EAAOA,EAAI,GAGb+qB,EAAMxB,MAAMxa,IAAI/I,EAAMhG,CAAI,EAEtBirB,EAAW,GACb,KAAKE,mBAAmBJ,EAAO/kB,CAAI,CAEvC,SAAWilB,EAAW,EACpB,QAASnD,EAAI,KAAK6B,WAAWhQ,OAAS,EAAGmO,GAAK,IAC5CiD,EAAQ,KAAKpB,WAAW7B,CAAC,EACzB,KAAKoD,0BAA0BH,EAAO/kB,EAAMilB,EAAa1c,CAAG,EAC5Dwc,EAAMxB,MAAMxa,IAAI/I,GAAO+kB,EAAMxB,MAAMza,IAAI9I,CAAI,GAAK,GAAC,CAAgB,EACjE,KAAKmlB,mBAAmBJ,EAAO/kB,CAAI,EAE/B+kB,EAAAA,EAAM3Y,MAAK,OANgC,EAAE0V,EAMjD,CAGA,KAAK4B,OAAOhB,UAAYqC,EAAM3Y,MAAK,GACrC,KAAKwX,iBAAiBwB,OAAOplB,CAAI,CAErC,CAEAmlB,mBAAmBJ,EAAe/kB,EAAc,CAC1C,KAAK0jB,OAAOhB,UAAYqC,EAAM3Y,MAAK,GACrC,KAAKwX,iBAAiBwB,OAAOplB,CAAI,CAErC,CAEAklB,0BACEH,EACA/kB,EACAilB,EACA1c,EACA,CACI,KAAK8c,oBAAoBN,EAAO/kB,EAAMilB,CAAW,GACnD,KAAKvB,OAAOhR,MAAM7I,EAAO/E,iBAAkByD,EAAK,CAC9CzQ,eAAgBkI,CAClB,CAAC,CAEL,CAEAqlB,oBACEN,EACA/kB,EACAilB,EACS,CACT,GAAI,EAAEA,EAAW,GAA4B,MAAO,GAEpD,GAAIA,EAAW,EACb,OAAOF,EAAMxB,MAAMX,IAAI5iB,CAAI,EAG7B,IAAMhG,EAAO+qB,EAAMxB,MAAMza,IAAI9I,CAAI,EAEjC,OAAIilB,EAAW,IAEVjrB,EAAI,GAAuB,GAC3B,CAAC,KAAK2qB,2BAA2BI,CAAK,IAAM/qB,EAAI,GAAmB,GAKpEA,EAAI,GAAuB,GAG3B,EACE+qB,EAAM3Y,MAAK,GACX2Y,EAAMvB,mBAAqBxjB,IAE9B,CAAC,KAAK2kB,2BAA2BI,CAAK,IACpC/qB,EAAI,GAAwB,CAEnC,CAEAsrB,iBAAiBxV,EAAkB,CACjC,GAAM,CAAE9P,KAAAA,CAAM,EAAG8P,EACK,KAAK6T,WAAW,CAAC,EACpBJ,MAAMX,IAAI5iB,CAAI,GAC/B,KAAK4jB,iBAAiB7a,IAAI/I,EAAM8P,EAAGvH,IAAI5Q,KAAK,CAEhD,CAEAmsB,cAAuB,CACrB,OAAO,KAAKH,WAAW,KAAKA,WAAWhQ,OAAS,CAAC,CACnD,CAEAqQ,sBAAkC,CAChC,QAASlC,EAAI,KAAK6B,WAAWhQ,OAAS,GAAKmO,IAAK,CAC9C,GAAM,CAAE1V,MAAAA,CAAM,EAAI,KAAKuX,WAAW7B,CAAC,EACnC,GAAI1V,EAAK,KACP,OAAOA,CAEX,CACF,CAGA8X,uBAAmC,CACjC,QAASpC,EAAI,KAAK6B,WAAWhQ,OAAS,GAAKmO,IAAK,CAC9C,GAAM,CAAE1V,MAAAA,CAAM,EAAI,KAAKuX,WAAW7B,CAAC,EACnC,GACE1V,EAASmY,MACT,EAAEnY,EAAK,GAEP,OAAOA,CAEX,CACF,CACF,ECrOMmZ,GAAN,cAAwBjC,EAAM,CAAAjsB,eAAA6Z,EAAA,CAAA,MAAA,GAAAA,CAAA,EAAA,KAE5BsU,iBAAgC,IAAInf,GAAK,CAC3C,EAEqBof,GAAN,cAA+BhC,EAAwB,CACpEmB,YAAYxY,EAA6B,CACvC,OAAO,IAAImZ,GAAUnZ,CAAK,CAC5B,CAEA4Y,YAAYhlB,EAAcilB,EAA0B1c,EAAe,CACjE,IAAMwc,EAAQ,KAAKjB,aAAY,EAC/B,GAAImB,EAAW,KAAqC,CAClD,KAAKC,0BAA0BH,EAAO/kB,EAAMilB,EAAa1c,CAAG,EAC5D,KAAK4c,mBAAmBJ,EAAO/kB,CAAI,EACnC+kB,EAAMS,iBAAiBE,IAAI1lB,CAAI,EAC/B,MACF,CAEA,MAAMglB,YAAYhlB,EAAMilB,EAAa1c,CAAG,CAC1C,CAEA8c,oBACEN,EACA/kB,EACAilB,EACS,CACT,GAAI,MAAMI,oBAAoBN,EAAO/kB,EAAMilB,CAAW,EAAG,MAAO,GAEhE,GACEA,EAAW,MACX,CAACF,EAAMS,iBAAiB5C,IAAI5iB,CAAI,EAChC,CACA,IAAMhG,EAAO+qB,EAAMxB,MAAMza,IAAI9I,CAAI,EACjC,OAAQhG,EAAI,GAAwB,IAAMA,EAAI,GAAuB,CACvE,CAEA,MAAO,EACT,CAEAsrB,iBAAiBxV,EAAkB,CAC5B,KAAK6T,WAAW,CAAC,EAAE6B,iBAAiB5C,IAAI9S,EAAG9P,IAAI,GAClD,MAAMslB,iBAAiBxV,CAAE,CAE7B,CACF,ECzBM6V,GAAgB,IAAItf,IAAI,CAC5B,IACA,MACA,OACA,UACA,QACA,UACA,QACA,YACA,QACA,OACA,SACA,SACA,SACA,OACA,SACA,MAAM,CACP,EAIKuf,GAAa3c,SAAqB,CACtC4c,0BACE,iFACFC,2BACE,yKAGFC,mBAAoBA,CAAC,CAAEC,aAAAA,KACrB,kCAAkCA,CAAY,IAChDC,oBACE,0DACFC,6BACE,sEACFC,8BACE,gDACFC,gCAAiCA,CAAC,CAChCC,WAAAA,EACAC,SAAAA,CAIF,IACE,6DAA6DD,CAAU,mBAAmBA,CAAU,yBAAyBC,CAAQ,MACvIC,wBAAyBA,CAAC,CACxBF,WAAAA,EACAC,SAAAA,CAID,IACC,uDAAuDD,CAAU,6CAA6CC,CAAQ,MACxHE,6BAA8BA,CAAC,CAAEF,SAAAA,KAC/B,UAAUA,CAAQ,wKACpBG,wBAAyBA,CAAC,CACxBC,gBAAAA,EACAJ,SAAAA,CAID,IACC,eAAeI,CAAe,4FAA4FJ,CAAQ,MACpIK,uCAAwCA,CAAC,CACvCL,SAAAA,KAIA,4GAA4GA,CAAQ,MAatHM,wCAAyCA,CAAC,CACxCN,SAAAA,EACAD,WAAAA,EACAQ,aAAAA,KAMA,UAAUP,CAAQ,iBAAiBO,CAAY,+BAA+BR,CAAU,oBAAoBQ,CAAY,YAC1HC,uCAAwCA,CAAC,CACvCR,SAAAA,EACAD,WAAAA,CAKD,IACC,oDAAoDA,CAAU,iBAAiBC,CAAQ,MACzFS,wCAAyCA,CAAC,CACxCT,SAAAA,EACAD,WAAAA,CAKD,IACC,qCAAqCA,CAAU,4EAA4EC,CAAQ,MACrIU,sBAAuBA,CAAC,CACtBV,SAAAA,EACAD,WAAAA,EACAY,WAAAA,CAKF,IACE,qFAAqFZ,CAAU,wBAAwBY,CAAU,iBAAiBX,CAAQ,MAC5JY,+BAAgCA,CAAC,CAC/BZ,SAAAA,EACAD,WAAAA,CAID,IACC,sDAAsDA,CAAU,oBAAoBC,CAAQ,MAC9Fa,0CAA2CA,CAAC,CAC1Cb,SAAAA,KAIA,2GAA2GA,CAAQ,MACrHc,0BAA2B,2CAC3BC,8BACE,yEACFC,oCACE,yKACFC,mBACE,8EACFC,uBACE,2EACFC,gBAAiB,gDACjBC,oCACE,0FACFC,wBACE,0GACFC,oBACE,mEACFC,kBAAmB,0DACnBC,kBAAiBxhB,OAAAC,OAAA,CACflO,QACE,kFAGE,CAAEwP,WAAY,wBAAyB,CAAC,EAG9CkgB,0BAA2B,2CAC3BC,eAAgB,0CAChBC,4BACE,0DACFC,6BACE,oGACFC,0BAA2B,2CAC3BC,qBACE,6DACFC,mBAAoB,qDACpBC,sBACE,oHACFC,kBACE,uEACFC,kCACE,uEACFC,uBAAwBA,CAAC,CAAEzC,aAAAA,KACzB,4BAA4BA,CAAY,IAC1C0C,6BACE,yDACFC,mCACE,wDACFC,qBACE,mEACFC,6BACE,mDACFC,kCACE,oEACFC,gDACE,oHACFC,6BAA8BA,CAAC,CAC7BC,sBAAAA,EACAhC,WAAAA,CAID,IACC,oBAAoBgC,CAAqB,8BAA8BhC,CAAU,cACnFiC,oCACE,oEACFC,wBAAyB,4BAC3B,CAAC,EAGD,SAASC,GAAeC,EAA8B,CACpD,OACEA,EAAYrvB,OAAS,+BACpBqvB,EAAYrvB,OAAS,6BACnB,CAACqvB,EAAYxV,aACXwV,EAAYxV,YAAY7Z,OAAS,aAChCqvB,EAAYxV,YAAY7Z,OAAS,uBAE3C,CAEA,SAASsvB,GACPvvB,EACS,CACT,OAAOA,EAAKwvB,aAAe,QAAUxvB,EAAKwvB,aAAe,QAC3D,CAEA,IAAMC,GAAoB,CACxBC,MAAO,qBACPC,IAAK,qBACL1vB,KAAM,cACN2vB,UAAW,kBACb,EAGA,SAASC,GACPC,EACA7H,EACY,CACZ,IAAM8H,EAAa,CAAA,EACbC,EAAa,CAAA,EACnB,QAASjI,EAAI,EAAGA,EAAI+H,EAAKlW,OAAQmO,KAC9BE,EAAK6H,EAAK/H,CAAC,EAAGA,EAAG+H,CAAI,EAAIC,EAAQC,GAAOlT,KAAKgT,EAAK/H,CAAC,CAAC,EAEvD,MAAO,CAACgI,EAAOC,CAAK,CACtB,CAEA,IAAMC,GAAoB,yBAoC1BC,GAAgBne,GACd,cAA8BA,CAA6B,CAAAzU,eAAA6Z,EAAA,CAAA,MAAA,GAAAA,CAAA,EAAA,KAIzDgZ,WAA8ChgB,MAAS,CAEvDigB,iBAA0D,CACxD,OAAO1E,EACT,CAEA2E,kBAA4B,CAC1B,OAAO,KAAKza,gBAAgB,OAAQ,KAAK,GAAK,KAAKua,aAAe,MACpE,CAEAG,YAAYrwB,EAAiBswB,EAAgB,CAEzCtwB,IAAI,KACJA,IAAI,IACJA,IAAI,IAEA,KAAKkwB,aAAehgB,SACtB,KAAKggB,WAAa,MAGtB,MAAMG,YAAYrwB,EAAMswB,CAAG,CAC7B,CAEAC,WAAWC,EAA0B,CACnC,GAAI,KAAKN,aAAehgB,OAAW,CAEjC,IAAMugB,EAAUT,GAAkBU,KAAKF,EAAQjjB,KAAK,EACpD,GAAKkjB,EAEE,GAAIA,EAAQ,CAAC,IAAM,OACxB,KAAKP,WAAa,eACTO,EAAQ,CAAC,IAAM,SACxB,KAAKP,WAAa,aAElB,OAAM,IAAIze,MAAM,wBAAwB,CAE5C,CACA,MAAM8e,WAAWC,CAAO,CAC1B,CAEAG,yBAAyBC,EAA6B,CACpD,IAAMC,EAAY,KAAKtX,MAAMuX,OAC7B,KAAKvX,MAAMuX,OAAS,GACpB,KAAKC,OAAOH,GAAG,EAAY,EAE3B,IAAM5wB,EAAO,KAAKgxB,cAAa,EAC/B,YAAKzX,MAAMuX,OAASD,EACb7wB,CACT,CAEAixB,oBAAsC,CACpC,IAAMlxB,EAAO,KAAK0W,UAAS,EACrBya,EAAY,KAAK3X,MAAM5B,SAO7B,OANA,KAAKuR,KAAI,EACT,KAAKiI,iBAAgB,GAAW,EAE5B,KAAK5X,MAAMC,gBAAgBhc,MAAQ0zB,EAAU1zB,MAAQ,GACvD,KAAKkb,MAAMkT,GAAW+C,mCAAoCuC,CAAS,EAEjE,KAAKE,IAAG,EAAU,GACpBrxB,EAAKwN,MAAQ,MAAM8jB,gBAAe,EAClC,KAAKN,OAAM,EAAU,EACd,KAAKha,WAAWhX,EAAM,mBAAmB,GAEzC,KAAKgX,WAAWhX,EAAM,mBAAmB,CAEpD,CAEAuxB,sCAGE,CACA,IAAMT,EAAY,KAAKtX,MAAMuX,OAC7B,KAAKvX,MAAMuX,OAAS,GACpB,KAAKC,OAAM,EAAS,EACpB,IAAI/wB,EAAO,KACPuxB,EAAY,KAChB,OAAI,KAAKC,MAAK,EAAU,GACtB,KAAKjY,MAAMuX,OAASD,EACpBU,EAAY,KAAKN,mBAAkB,IAEnCjxB,EAAO,KAAKgxB,cAAa,EACzB,KAAKzX,MAAMuX,OAASD,EAChB,KAAKW,MAAK,EAAU,IACtBD,EAAY,KAAKN,mBAAkB,IAGhC,CAACjxB,EAAMuxB,CAAS,CACzB,CAEAE,sBACE1xB,EACoB,CACpB,YAAKmpB,KAAI,EACT,KAAKwI,sBAAsB3xB,EAAkB,EAAI,EAC1C,KAAKgX,WAAWhX,EAAM,cAAc,CAC7C,CAEA4xB,yBACE5xB,EACuB,CACvB,KAAKmpB,KAAI,EAET,IAAMpT,EAAM/V,EAAK+V,GAAK,KAAK8b,gBAAe,EAEpCC,EAAW,KAAKpb,UAAS,EACzBqb,EAAgB,KAAKrb,UAAS,EAEhC,KAAK+a,MAAK,EAAM,EAClBK,EAASnb,eAAiB,KAAKqb,kCAAiC,EAEhEF,EAASnb,eAAiB,KAG5B,KAAKqa,OAAM,EAAU,EACrB,IAAMiB,EAAM,KAAKC,4BAA2B,EAC5CJ,OAAAA,EAAShd,OAASmd,EAAInd,OACtBgd,EAASniB,KAAOsiB,EAAItiB,KACpBmiB,EAASK,KAAOF,EAAIhQ,MACpB,KAAK+O,OAAM,EAAU,EAErB,CAACc,EAASM,WAAYpyB,EAAKwxB,SAAS,EAClC,KAAKD,qCAAoC,EAE3CQ,EAAcM,eAAiB,KAAKrb,WAClC8a,EACA,wBACF,EAEA/b,EAAGsc,eAAiB,KAAKrb,WAAW+a,EAAe,gBAAgB,EAEnE,KAAKrX,iBAAiB3E,CAAE,EACxB,KAAKuc,UAAS,EAEd,KAAKtH,MAAMC,YACTjrB,EAAK+V,GAAG9P,KAAI,KAEZjG,EAAK+V,GAAGvH,IAAI5Q,KACd,EAEO,KAAKoZ,WAAWhX,EAAM,iBAAiB,CAChD,CAEAuyB,iBACEvyB,EACAwyB,EACe,CACf,GAAI,KAAKf,MAAK,EAAU,EACtB,OAAO,KAAKC,sBAAsB1xB,CAAI,EACjC,GAAI,KAAKyxB,MAAK,EAAa,EAChC,OAAO,KAAKG,yBAAyB5xB,CAAI,EACpC,GAAI,KAAKyxB,MAAK,EAAQ,EAC3B,OAAO,KAAKgB,yBAAyBzyB,CAAI,EACpC,GAAI,KAAK0yB,cAAa,GAAW,EACtC,OAAI,KAAKjB,MAAK,EAAO,EACZ,KAAKkB,8BAA8B3yB,CAAI,GAE1CwyB,GACF,KAAK7Z,MACHkT,GAAWgC,oBACX,KAAKrU,MAAMC,eACb,EAEK,KAAKmZ,uBAAuB5yB,CAAI,GAEpC,GAAI,KAAK6yB,aAAY,GAAS,EACnC,OAAO,KAAKC,0BAA0B9yB,CAAI,EACrC,GAAI,KAAK6yB,aAAY,GAAW,EACrC,OAAO,KAAKE,2BAA2B/yB,CAAI,EACtC,GAAI,KAAK6yB,aAAY,GAAc,EACxC,OAAO,KAAKG,0BAA0BhzB,CAAI,EACrC,GAAI,KAAKyxB,MAAK,EAAW,EAC9B,OAAO,KAAKwB,kCAAkCjzB,EAAMwyB,CAAY,EAEhE,KAAKxtB,WAAU,CAEnB,CAEAytB,yBACEzyB,EACuB,CACvB,YAAKmpB,KAAI,EACTnpB,EAAK+V,GAAK,KAAKmd,mCACc,EAC7B,EACA,KAAKlI,MAAMC,YACTjrB,EAAK+V,GAAG9P,KAAI,EAEZjG,EAAK+V,GAAGvH,IAAI5Q,KACd,EACA,KAAK00B,UAAS,EACP,KAAKtb,WAAWhX,EAAM,iBAAiB,CAChD,CAEA4yB,uBACE5yB,EACqB,CACrB,KAAKgrB,MAAMF,MAAK,CAAgB,EAE5B,KAAK2G,MAAK,GAAU,EACtBzxB,EAAK+V,GAAK,MAAMod,cAAa,EAE7BnzB,EAAK+V,GAAK,KAAK8b,gBAAe,EAGhC,IAAMuB,EAAYpzB,EAAKyV,KAAO,KAAKiB,UAAS,EAEtCjB,EAAQ2d,EAAS3d,KAAO,CAAA,EAE9B,IADA,KAAKub,OAAM,CAAU,EACd,CAAC,KAAKS,MAAK,CAAU,GAAG,CAC7B,IAAI2B,EAAW,KAAK1c,UAAS,EAEzB,KAAK+a,MAAK,EAAW,GACvB,KAAKtI,KAAI,EACL,CAAC,KAAK0J,aAAqB,GAAA,GAAK,CAAC,KAAKpB,MAAK,EAAW,GACxD,KAAK9Y,MACHkT,GAAW8B,oCACX,KAAKnU,MAAMC,eACb,EAEF,MAAM4Z,YAAYD,CAAQ,IAE1B,KAAKhC,iBAAgB,IAEnBvF,GAAWsD,mCACb,EAEAiE,EAAW,KAAKb,iBAAiBa,EAAU,EAAI,GAGjD3d,EAAKqH,KAAKsW,CAAQ,CACpB,CAEA,KAAKpI,MAAMD,KAAI,EAEf,KAAKiG,OAAM,CAAU,EAErB,KAAKha,WAAWoc,EAAU,gBAAgB,EAE1C,IAAI/yB,EAAiC,KACjCizB,EAAkB,GACtB7d,OAAAA,EAAK8d,QAAQjE,GAAe,CACtBD,GAAeC,CAAW,GACxBjvB,IAAS,YACX,KAAKsY,MAAMkT,GAAWE,2BAA4BuD,CAAW,EAE/DjvB,EAAO,MACEivB,EAAYrvB,OAAS,yBAC1BqzB,GACF,KAAK3a,MAAMkT,GAAWO,8BAA+BkD,CAAW,EAE9DjvB,IAAS,MACX,KAAKsY,MAAMkT,GAAWE,2BAA4BuD,CAAW,EAE/DjvB,EAAO,WACPizB,EAAkB,GAEtB,CAAC,EAEDtzB,EAAKK,KAAOA,GAAQ,WACb,KAAK2W,WAAWhX,EAAM,eAAe,CAC9C,CAEAizB,kCACEjzB,EACAwyB,EACgC,CAGhC,GAFA,KAAKxB,OAAM,EAAW,EAElB,KAAKK,IAAG,EAAY,EACtB,OAAI,KAAKI,MAAkB,EAAA,GAAK,KAAKA,MAAe,EAAA,EAGlDzxB,EAAK8Z,YAAc,KAAKyY,iBAAiB,KAAK7b,UAAS,CAAE,GAGzD1W,EAAK8Z,YAAc,KAAKmX,cAAa,EACrC,KAAKqB,UAAS,GAEhBtyB,EAAKwzB,QAAU,GAER,KAAKxc,WAAWhX,EAAM,0BAA0B,EAEvD,GACE,KAAKyxB,MAAe,EAAA,GACpB,KAAKgC,MAAK,IACR,KAAKZ,aAAY,GAAS,GAAK,KAAKA,aAAY,GAAc,IAC9D,CAACL,EACH,CACA,IAAM/W,EAAQ,KAAKjC,MAAMhM,MAKzB,MAAM,KAAKmL,MACTkT,GAAWoD,6BACX,KAAKzV,MAAM5B,SACX,CACEsX,sBAAuBzT,EACvByR,WAAYuC,GAAkBhU,CAAK,CACrC,CACF,CACF,CAEA,GACE,KAAKgW,MAAK,EAAQ,GAClB,KAAKA,MAAkB,EAAA,GACvB,KAAKA,MAAK,EAAU,GACpB,KAAKoB,aAAuB,GAAA,EAE5B7yB,OAAAA,EAAK8Z,YAAc,KAAKyY,iBAAiB,KAAK7b,UAAS,CAAE,EACzD1W,EAAKwzB,QAAU,GAER,KAAKxc,WAAWhX,EAAM,0BAA0B,EAClD,GACL,KAAKyxB,MAAK,EAAQ,GAClB,KAAKA,MAAK,CAAU,GACpB,KAAKoB,aAA0B,GAAA,GAC/B,KAAKA,aAAY,GAAS,GAC1B,KAAKA,aAAY,GAAW,EAM5B,OAJA7yB,EAAO,KAAKqZ,YACVrZ,EACiB,IACnB,EACIA,EAAKC,OAAS,0BAChBD,EAAKwzB,QAAU,GACf,OAAOxzB,EAAK0zB,WACL,KAAK9f,WACV5T,EACA,0BACF,GAEO,KAAK4T,WACV5T,EACA,6BACF,EAKN,KAAKgF,WAAU,CACjB,CAEA2tB,8BACE3yB,EAC4B,CAC5B,YAAKmpB,KAAI,EACT,KAAKiI,iBAAgB,GAAY,EACjCpxB,EAAKqyB,eAAiB,KAAKsB,wBAAuB,EAClD,KAAKrB,UAAS,EAEP,KAAKtb,WAAWhX,EAAM,sBAAsB,CACrD,CAEA8yB,0BACE9yB,EACwB,CACxB,KAAKmpB,KAAI,EACT,IAAMyK,EAAW,KAAKC,mBACpB7zB,CACF,EAEA,YAAK4T,WAAWggB,EAAU,kBAAkB,EACrCA,CACT,CAEAb,2BACE/yB,EACyB,CACzB,KAAKmpB,KAAI,EACT,IAAMyK,EAAW,KAAKE,oBACpB9zB,EACA,EACF,EAEA,YAAK4T,WAAWggB,EAAU,mBAAmB,EACtCA,CACT,CAEAZ,0BACEhzB,EACwB,CACxB,YAAKmpB,KAAI,EACT,KAAKwI,sBAAsB3xB,EAAoB,EAAK,EAC7C,KAAKgX,WAAWhX,EAAM,kBAAkB,CACjD,CAIA2xB,sBAAsB3xB,EAA6B+zB,EAAwB,CAoBzE,GAnBA/zB,EAAK+V,GAAK,KAAKie,8BACC,CAACD,EACG,EACpB,EAEA,KAAK/I,MAAMC,YACTjrB,EAAK+V,GAAG9P,KACR8tB,EAAO,GAAA,KACP/zB,EAAK+V,GAAGvH,IAAI5Q,KACd,EAEI,KAAK6zB,MAAK,EAAM,EAClBzxB,EAAK2W,eAAiB,KAAKqb,kCAAiC,EAE5DhyB,EAAK2W,eAAiB,KAGxB3W,EAAKi0B,QAAU,CAAA,EAEX,KAAK5C,IAAG,EAAY,EACtB,GACErxB,EAAKi0B,QAAQnX,KAAK,KAAKoX,0BAA2B,CAAA,QAC3C,CAACH,GAAW,KAAK1C,IAAG,EAAS,GAGxC,GAAI0C,EAAS,CAIX,GAHA/zB,EAAKm0B,WAAa,CAAA,EAClBn0B,EAAKo0B,OAAS,CAAA,EAEV,KAAK1B,cAAa,GAAW,EAC/B,GACE1yB,EAAKo0B,OAAOtX,KAAK,KAAKoX,0BAA2B,CAAA,QAC1C,KAAK7C,IAAG,EAAS,GAG5B,GAAI,KAAKqB,cAAa,GAAe,EACnC,GACE1yB,EAAKm0B,WAAWrX,KAAK,KAAKoX,0BAA2B,CAAA,QAC9C,KAAK7C,IAAG,EAAS,EAE9B,CAEArxB,EAAKyV,KAAO,KAAK4e,oBAAoB,CACnCC,YAAaP,EACbQ,WAAY,GACZC,YAAa,GACbC,WAAYV,EACZW,aAAc,EAChB,CAAC,CACH,CAEAR,2BAAoD,CAClD,IAAMl0B,EAAO,KAAK0W,UAAS,EAE3B1W,OAAAA,EAAK+V,GAAK,KAAK4e,iCAAgC,EAC3C,KAAKlD,MAAK,EAAM,EAClBzxB,EAAK2W,eAAiB,KAAKie,oCAAmC,EAE9D50B,EAAK2W,eAAiB,KAGjB,KAAKK,WAAWhX,EAAM,kBAAkB,CACjD,CAEA60B,mBAAmB70B,EAAgD,CACjE,YAAK2xB,sBAAsB3xB,EAAoB,EAAK,EAC7C,KAAKgX,WAAWhX,EAAM,sBAAsB,CACrD,CAEA80B,mBAAmBpM,EAAc,CAC3BA,IAAS,KACX,KAAK/P,MACHkT,GAAW8C,6BACX,KAAKnV,MAAM5B,QACb,CAEJ,CAEAmd,kBAAkBrM,EAAc9Q,EAAoBkC,EAAuB,CACpE8R,GAAc/C,IAAIH,CAAI,GAE3B,KAAK/P,MACHmB,EACI+R,GAAWG,mBACXH,GAAW6C,uBACf9W,EACA,CACEqU,aAAcvD,CAChB,CACF,CACF,CAEAsL,8BACEgB,EACAlb,EACc,CACd,YAAKib,kBACH,KAAKvb,MAAMhM,MACX,KAAKgM,MAAM5B,SACXkC,CACF,EACO,KAAK+X,gBAAgBmD,CAAO,CACrC,CAIAnB,mBAAmB7zB,EAAgD,CACjEA,OAAAA,EAAK+V,GAAK,KAAKie,8BACC,GACI,EACpB,EACA,KAAKhJ,MAAMC,YACTjrB,EAAK+V,GAAG9P,KAAI,KAEZjG,EAAK+V,GAAGvH,IAAI5Q,KACd,EAEI,KAAK6zB,MAAK,EAAM,EAClBzxB,EAAK2W,eAAiB,KAAKqb,kCAAiC,EAE5DhyB,EAAK2W,eAAiB,KAGxB3W,EAAKi1B,MAAQ,KAAKrE,yBAAwB,EAAM,EAChD,KAAK0B,UAAS,EAEP,KAAKtb,WAAWhX,EAAM,WAAW,CAC1C,CAEA8zB,oBACE9zB,EACAk1B,EACkB,CAClB,YAAK9D,iBAAgB,GAAS,EAC9BpxB,EAAK+V,GAAK,KAAKie,8BACC,GACI,EACpB,EACA,KAAKhJ,MAAMC,YACTjrB,EAAK+V,GAAG9P,KAAI,KAEZjG,EAAK+V,GAAGvH,IAAI5Q,KACd,EAEI,KAAK6zB,MAAK,EAAM,EAClBzxB,EAAK2W,eAAiB,KAAKqb,kCAAiC,EAE5DhyB,EAAK2W,eAAiB,KAIxB3W,EAAKm1B,UAAY,KACb,KAAK1D,MAAK,EAAS,IACrBzxB,EAAKm1B,UAAY,KAAKvE,yBAAwB,EAAS,GAGzD5wB,EAAKo1B,SAAW,KACXF,IACHl1B,EAAKo1B,SAAW,KAAKxE,yBAAwB,EAAM,GAErD,KAAK0B,UAAS,EAEP,KAAKtb,WAAWhX,EAAM,YAAY,CAC3C,CAIAq1B,uBAAuBC,EAA0B,GAAwB,CACvE,IAAMC,EAAe,KAAK/b,MAAM5B,SAE1B5X,EAAO,KAAK0W,UAAS,EAErB8e,EAAW,KAAKC,kBAAiB,EAEjCC,EAAQ,KAAKxC,mCAAkC,EACrDlzB,OAAAA,EAAKiG,KAAOyvB,EAAMzvB,KAElBjG,EAAKw1B,SAAWA,EAEhBx1B,EAAK21B,MAAQD,EAAMrD,eAEf,KAAKZ,MAAK,EAAM,GAClB,KAAKJ,IAAG,EAAM,EAEdrxB,EAAKwzB,QAAU,KAAKvC,cAAa,GAE7BqE,GACF,KAAK3c,MAAMkT,GAAW+B,wBAAyB2H,CAAY,EAIxD,KAAKve,WAAWhX,EAAM,eAAe,CAC9C,CAEAgyB,mCAAgE,CAC9D,IAAMlB,EAAY,KAAKtX,MAAMuX,OACvB/wB,EAAO,KAAK0W,UAAS,EAC3B1W,EAAK8U,OAAS,CAAA,EAEd,KAAK0E,MAAMuX,OAAS,GAGhB,KAAKU,MAAW,EAAA,GAAK,KAAKA,MAAoB,GAAA,EAChD,KAAKtI,KAAI,EAET,KAAKnkB,WAAU,EAGjB,IAAI4wB,EAAkB,GAEtB,EAAG,CACD,IAAMC,EAAgB,KAAKR,uBAAuBO,CAAe,EAEjE51B,EAAK8U,OAAOgI,KAAK+Y,CAAa,EAE1BA,EAAcrC,UAChBoC,EAAkB,IAGf,KAAKnE,MAAK,EAAM,GACnB,KAAKT,OAAM,EAAS,CAEvB,OAAQ,CAAC,KAAKS,MAAK,EAAM,GAC1B,YAAKT,OAAM,EAAM,EAEjB,KAAKxX,MAAMuX,OAASD,EAEb,KAAK9Z,WAAWhX,EAAM,0BAA0B,CACzD,CAGA81B,sBAAyBC,EAAgB,CACvC,GAAI,KAAKC,WAAU,IAAOzO,GAAGxM,MAAO,CAClC,IAAMkb,EAAa,KAAKzc,MAAM6N,QAC9B,KAAK7N,MAAM6N,QAAU,CAAC4O,EAAW,CAAC,CAAC,EACnC,GAAI,CACF,OAAOF,EAAE,CACX,QAAC,CACC,KAAKvc,MAAM6N,QAAU4O,CACvB,CACF,KACE,QAAOF,EAAE,CAEb,CAIAG,iDAEc,CACZ,GAAI,KAAKC,UAAS,IAAE,GACpB,OAAO,KAAKvB,oCAAmC,CACjD,CAEAA,qCAAoE,CAClE,IAAM50B,EAAO,KAAK0W,UAAS,EACrBoa,EAAY,KAAKtX,MAAMuX,OAE7B,YAAKvX,MAAMuX,OAAS,GACpB/wB,EAAK8U,OAAS,CAAA,EACd,KAAKghB,sBAAsB,IAAM,CAC/B,KAAK9E,OAAM,EAAM,EACjB,IAAMoF,EAAwB,KAAK5c,MAAM6c,mBAEzC,IADA,KAAK7c,MAAM6c,mBAAqB,GACzB,CAAC,KAAK5E,MAAK,EAAM,GACtBzxB,EAAK8U,OAAOgI,KAAK,KAAKmU,cAAe,CAAA,EAChC,KAAKQ,MAAK,EAAM,GACnB,KAAKT,OAAM,EAAS,EAGxB,KAAKxX,MAAM6c,mBAAqBD,CAClC,CAAC,EAED,KAAK5c,MAAMuX,OAASD,EAChB,CAAC,KAAKtX,MAAMuX,QAAU,KAAKiF,WAAY,IAAKzO,GAAGxM,OAGjD,KAAKub,aAAY,EAEnB,KAAKtF,OAAM,EAAM,EAEV,KAAKha,WAAWhX,EAAM,4BAA4B,CAC3D,CAEAu2B,8CAA6E,CAC3E,GAAI,KAAKJ,UAAS,IAAE,GAAY,OAChC,IAAMn2B,EAAO,KAAK0W,UAAS,EACrBoa,EAAY,KAAKtX,MAAMuX,OAM7B,IALA/wB,EAAK8U,OAAS,CAAA,EAEd,KAAK0E,MAAMuX,OAAS,GAEpB,KAAKC,OAAM,EAAM,EACV,CAAC,KAAKS,MAAK,EAAM,GACtBzxB,EAAK8U,OAAOgI,KAAK,KAAK0Z,qCAAsC,CAAA,EACvD,KAAK/E,MAAK,EAAM,GACnB,KAAKT,OAAM,EAAS,EAGxB,YAAKA,OAAM,EAAM,EAEjB,KAAKxX,MAAMuX,OAASD,EAEb,KAAK9Z,WAAWhX,EAAM,4BAA4B,CAC3D,CAEAy2B,wBAA8C,CAC5C,IAAMz2B,EAAO,KAAK0W,UAAS,EAI3B,GAHA,KAAK0a,iBAAgB,GAAc,EAEnCpxB,EAAKi0B,QAAU,CAAA,EACX,KAAK5C,IAAG,EAAY,EACtB,GACErxB,EAAKi0B,QAAQnX,KAAK,KAAKoX,0BAA2B,CAAA,QAC3C,KAAK7C,IAAG,EAAS,GAG5BrxB,OAAAA,EAAKyV,KAAO,KAAK4e,oBAAoB,CACnCC,YAAa,GACbC,WAAY,GACZC,YAAa,GACbC,WAAY,GACZC,aAAc,EAChB,CAAC,EAEM,KAAK1d,WAAWhX,EAAM,yBAAyB,CACxD,CAEA02B,4BAA2C,CACzC,OAAO,KAAKjF,MAAK,GAAO,GAAK,KAAKA,MAAe,GAAA,EAC7C,MAAM0B,cAAe,EACrB,KAAKtB,gBAAgB,EAAI,CAC/B,CAEA8E,2BACE32B,EACA42B,EACApB,EACyB,CACzBx1B,OAAAA,EAAK62B,OAASD,EAGV,KAAKE,UAAS,EAAG72B,OAAI,IACvBD,EAAK+V,GAAK,KAAK2gB,2BAA0B,EACzC12B,EAAK2G,IAAM,KAAKiqB,yBAAwB,IAExC5wB,EAAK+V,GAAK,KACV/V,EAAK2G,IAAM,KAAKsqB,cAAa,GAE/B,KAAKD,OAAM,CAAY,EACvBhxB,EAAKwN,MAAQ,KAAKojB,yBAAwB,EAC1C5wB,EAAKw1B,SAAWA,EAET,KAAKxe,WAAWhX,EAAM,mBAAmB,CAClD,CAEA+2B,gCACE/2B,EACA42B,EAC8B,CAC9B52B,OAAAA,EAAK62B,OAASD,EAEd52B,EAAK+V,GAAK,KAAK2gB,2BAA0B,EACzC,KAAK1F,OAAM,CAAY,EACvB,KAAKA,OAAM,CAAY,EACnB,KAAKS,MAAW,EAAA,GAAK,KAAKA,MAAe,EAAA,GAC3CzxB,EAAK6U,OAAS,GACd7U,EAAK8Y,SAAW,GAChB9Y,EAAKwN,MAAQ,KAAKwpB,6BAChB,KAAKC,YAAYj3B,EAAKwO,IAAI5Q,KAAK,CACjC,IAEAoC,EAAK6U,OAAS,GACV,KAAKwc,IAAG,EAAY,IACtBrxB,EAAK8Y,SAAW,IAElB9Y,EAAKwN,MAAQ,KAAKojB,yBAAwB,GAErC,KAAK5Z,WAAWhX,EAAM,wBAAwB,CACvD,CAEAg3B,6BACEh3B,EAC8B,CAmB9B,IAlBAA,EAAK8U,OAAS,CAAA,EACd9U,EAAK2P,KAAO,KACZ3P,EAAK2W,eAAiB,KACtB3W,EAAKmyB,KAAO,KAER,KAAKV,MAAK,EAAM,IAClBzxB,EAAK2W,eAAiB,KAAKqb,kCAAiC,GAG9D,KAAKhB,OAAM,EAAU,EACjB,KAAKS,MAAK,EAAS,IACrBzxB,EAAKmyB,KAAO,KAAK+E,2BAAuC,EAAI,EAE5Dl3B,EAAKmyB,KAAKlsB,KAAO,KACZ,KAAKwrB,MAAK,EAAU,GACvB,KAAKT,OAAM,EAAS,GAGjB,CAAC,KAAKS,MAAe,EAAA,GAAK,CAAC,KAAKA,MAAK,EAAY,GACtDzxB,EAAK8U,OAAOgI,KAAK,KAAKoa,2BAA2B,EAAK,CAAC,EAClD,KAAKzF,MAAK,EAAU,GACvB,KAAKT,OAAM,EAAS,EAIxB,OAAI,KAAKK,IAAG,EAAY,IACtBrxB,EAAK2P,KAAO,KAAKunB,2BAA2B,EAAK,GAEnD,KAAKlG,OAAM,EAAU,EACrBhxB,EAAKoyB,WAAa,KAAKxB,yBAAwB,EAExC,KAAK5Z,WAAWhX,EAAM,wBAAwB,CACvD,CAEAm3B,gCACEn3B,EACA42B,EAC8B,CAC9B,IAAM/f,EAAY,KAAKH,UAAS,EAChC1W,OAAAA,EAAK62B,OAASD,EACd52B,EAAKwN,MAAQ,KAAKwpB,6BAA6BngB,CAAS,EACjD,KAAKG,WAAWhX,EAAM,wBAAwB,CACvD,CAEAq0B,oBAAoB,CAClBC,YAAAA,EACAC,WAAAA,EACAC,YAAAA,EACAC,WAAAA,EACAC,aAAAA,CAOF,EAA+B,CAC7B,IAAM5D,EAAY,KAAKtX,MAAMuX,OAC7B,KAAKvX,MAAMuX,OAAS,GAEpB,IAAMqG,EAAY,KAAK1gB,UAAS,EAEhC0gB,EAAUC,eAAiB,CAAA,EAC3BD,EAAUE,WAAa,CAAA,EACvBF,EAAUG,SAAW,CAAA,EACrBH,EAAUI,cAAgB,CAAA,EAE1B,IAAIC,EACAC,EACAC,EAAU,GAad,IAZIpD,GAAc,KAAK9C,MAAK,CAAa,GACvC,KAAKT,OAAM,CAAa,EACxByG,EAAuB,EACvBC,EAAQ,KAER,KAAK1G,OAAM,CAAU,EACrByG,EAAoB,EACpBC,EAAQ,IAGVN,EAAUM,MAAQA,EAEX,CAAC,KAAKjG,MAAMgG,CAAQ,GAAG,CAC5B,IAAIb,EAAW,GACXgB,EAA6C,KAC7CC,EAA+C,KAC7C73B,EAAO,KAAK0W,UAAS,EAE3B,GAAI+d,GAAc,KAAK5B,aAAY,GAAU,EAAG,CAC9C,IAAMiE,EAAY,KAAKA,UAAS,EAE5BA,EAAU72B,OAAI,IAAiB62B,EAAU72B,OAAI,KAC/C,KAAKkpB,KAAI,EACTyO,EAAgB,KAAKpe,MAAM5B,SAC3B0c,EAAc,GAElB,CAEA,GAAIA,GAAe,KAAKzB,aAAY,GAAW,EAAG,CAChD,IAAMiE,EAAY,KAAKA,UAAS,EAG5BA,EAAU72B,OAAI,IAAiB62B,EAAU72B,OAAI,KAC/C,KAAKkpB,KAAI,EACTyN,EAAW,GAEf,CAEA,IAAMpB,EAAW,KAAKC,kBAAiB,EAEvC,GAAI,KAAKpE,IAAG,CAAY,EAClBuG,GAAiB,MACnB,KAAK5yB,WAAW4yB,CAAa,EAE3B,KAAKvG,IAAG,CAAY,GAClBmE,GACF,KAAKxwB,WAAWwwB,EAAShnB,IAAI5Q,KAAK,EAEpCw5B,EAAUI,cAAc1a,KACtB,KAAKia,gCAAgC/2B,EAAM42B,CAAQ,CACrD,GAEAQ,EAAUG,SAASza,KACjB,KAAK6Z,2BAA2B32B,EAAM42B,EAAUpB,CAAQ,CAC1D,UAEO,KAAK/D,MAAK,EAAU,GAAK,KAAKA,MAAK,EAAM,EAC9CmG,GAAiB,MACnB,KAAK5yB,WAAW4yB,CAAa,EAE3BpC,GACF,KAAKxwB,WAAWwwB,EAAShnB,IAAI5Q,KAAK,EAEpCw5B,EAAUC,eAAeva,KACvB,KAAKqa,gCAAgCn3B,EAAM42B,CAAQ,CACrD,MACK,CACL,IAAIv2B,EAAO,OAEX,GAAI,KAAKwyB,aAAoB,EAAA,GAAK,KAAKA,aAAoB,GAAA,EAAG,CAC5D,IAAMiE,EAAY,KAAKA,UAAS,EAC5B1Q,GAA2B0Q,EAAU72B,IAAI,IAC3CI,EAAO,KAAKmZ,MAAMhM,MAClB,KAAK2b,KAAI,EAEb,CAEA,IAAM2O,EAAgB,KAAKC,4BACzB/3B,EACA42B,EACAgB,EACApC,EACAn1B,EACAm0B,EACAE,GAAgB,CAACgD,CACnB,EAEII,IAAkB,MACpBH,EAAU,GACVE,EAAkB,KAAKre,MAAMC,iBAE7B2d,EAAUE,WAAWxa,KAAKgb,CAAa,CAE3C,CAEA,KAAKE,wBAAuB,EAG1BH,GACA,CAAC,KAAKpG,MAAK,CAAU,GACrB,CAAC,KAAKA,MAAK,CAAa,GAExB,KAAK9Y,MACHkT,GAAW4C,kCACXoJ,CACF,CAEJ,CAEA,KAAK7G,OAAOyG,CAAQ,EAOhBjD,IACF4C,EAAUO,QAAUA,GAGtB,IAAMM,EAAM,KAAKjhB,WAAWogB,EAAW,sBAAsB,EAE7D,YAAK5d,MAAMuX,OAASD,EAEbmH,CACT,CAEAF,4BACE/3B,EACA42B,EACAgB,EACApC,EACAn1B,EACAm0B,EACAE,EACkE,CAClE,GAAI,KAAKrD,IAAG,EAAY,EAOtB,OALE,KAAKI,MAAK,EAAS,GACnB,KAAKA,MAAK,EAAQ,GAClB,KAAKA,MAAe,CAAA,GACpB,KAAKA,MAAK,CAAa,GAGlB+C,EAKOE,GACV,KAAK/b,MACHkT,GAAW2B,mBACX,KAAKhU,MAAMC,eACb,EARA,KAAKd,MACHkT,GAAW4B,uBACX,KAAKjU,MAAMC,eACb,EAOE+b,GACF,KAAK7c,MAAMkT,GAAW6B,gBAAiB8H,CAAQ,EAG1C,OAGJhB,GACH,KAAK7b,MACHkT,GAAWgD,qBACX,KAAKrV,MAAMC,eACb,EAEEme,GAAiB,MACnB,KAAK5yB,WAAW4yB,CAAa,EAE3BpC,GACF,KAAK7c,MAAMkT,GAAWoC,eAAgBuH,CAAQ,EAGhDx1B,EAAKmP,SAAW,KAAK8hB,cAAa,EAC3B,KAAKja,WAAWhX,EAAM,0BAA0B,GAClD,CACLA,EAAK2G,IAAM,KAAK+vB,2BAA0B,EAC1C12B,EAAK62B,OAASD,EACd52B,EAAKk4B,MAAQN,GAAiB,KAC9B53B,EAAKK,KAAOA,EAEZ,IAAIyY,EAAW,GACf,OAAI,KAAK2Y,MAAW,EAAA,GAAK,KAAKA,MAAe,EAAA,GAE3CzxB,EAAK6U,OAAS,GAEV+iB,GAAiB,MACnB,KAAK5yB,WAAW4yB,CAAa,EAE3BpC,GACF,KAAKxwB,WAAWwwB,EAAShnB,IAAI5Q,KAAK,EAGpCoC,EAAKwN,MAAQ,KAAKwpB,6BAChB,KAAKC,YAAYj3B,EAAKwO,IAAI5Q,KAAK,CACjC,GACIyC,IAAS,OAASA,IAAS,QAC7B,KAAK83B,4BAA4Bn4B,CAAI,EAIrC,CAACw0B,GACDx0B,EAAK2G,IAAIV,OAAS,eAClBjG,EAAKwN,MAAM2kB,MAEX,KAAKxZ,MACHkT,GAAWsC,6BACXnuB,EAAKwN,MAAM2kB,IACb,IAGE9xB,IAAS,QAAQ,KAAK2E,WAAU,EAEpChF,EAAK6U,OAAS,GAEV,KAAKwc,IAAG,EAAY,IACtBvY,EAAW,IAEb9Y,EAAKwN,MAAQ,KAAKojB,yBAAwB,EAC1C5wB,EAAKw1B,SAAWA,GAGlBx1B,EAAK8Y,SAAWA,EAET,KAAK9B,WAAWhX,EAAM,oBAAoB,CACnD,CACF,CAIAm4B,4BACEC,EAGM,CACN,IAAMC,EAAaD,EAAS/3B,OAAS,MAAQ,EAAI,EAC3CuZ,EACJwe,EAAS5qB,MAAMsH,OAAO8E,QAAUwe,EAAS5qB,MAAMmC,KAAO,EAAI,GAExDyoB,EAAS5qB,MAAM2kB,MACjB,KAAKxZ,MACHyf,EAAS/3B,OAAS,MACdwrB,GAAWwB,0BACXxB,GAAWmC,0BACfoK,EAAS5qB,MAAM2kB,IACjB,EAGEvY,IAAWye,GACb,KAAK1f,MACHyf,EAAS/3B,OAAS,MACdyP,EAAOjP,eACPiP,EAAOhP,eACXs3B,CACF,EAGEA,EAAS/3B,OAAS,OAAS+3B,EAAS5qB,MAAMmC,MAC5C,KAAKgJ,MAAM7I,EAAO/O,uBAAwBq3B,CAAQ,CAEtD,CAEAJ,yBAAgC,CAE5B,CAAC,KAAK3G,IAAG,EAAQ,GACjB,CAAC,KAAKA,IAAY,EAAA,GAClB,CAAC,KAAKI,MAAK,CAAU,GACrB,CAAC,KAAKA,MAAkB,CAAA,GAExB,KAAKzsB,WAAU,CAEnB,CAEA2vB,iCACE/c,EACA7B,EAC8C,CAC9C6B,IAAAA,EAAa,KAAK4B,MAAM5B,UACxB,IAAI5X,EACF+V,GAAM,KAAKie,8BAA8B,EAAI,EAE/C,KAAO,KAAK3C,IAAG,EAAO,GAAG,CACvB,IAAMiH,EAAQ,KAAKrB,YAA2Crf,CAAQ,EACtE0gB,EAAMC,cAAgBv4B,EACtBs4B,EAAMviB,GAAK,KAAKie,8BAA8B,EAAI,EAClDh0B,EAAO,KAAKgX,WAAWshB,EAAO,yBAAyB,CACzD,CAEA,OAAOt4B,CACT,CAEAw4B,qBACE5gB,EACA7B,EAC6B,CAC7B,IAAM/V,EAAO,KAAKi3B,YAAyCrf,CAAQ,EAEnE5X,OAAAA,EAAK2W,eAAiB,KACtB3W,EAAK+V,GAAK,KAAK4e,iCAAiC/c,EAAU7B,CAAE,EAExD,KAAK0b,MAAK,EAAM,IAClBzxB,EAAK2W,eAAiB,KAAKie,oCAAmC,GAGzD,KAAK5d,WAAWhX,EAAM,uBAAuB,CACtD,CAEAy4B,qBAAkD,CAChD,IAAMz4B,EAAO,KAAK0W,UAAS,EAC3B,YAAKsa,OAAM,EAAW,EACtBhxB,EAAKmP,SAAW,KAAKupB,qBAAoB,EAClC,KAAK1hB,WAAWhX,EAAM,sBAAsB,CACrD,CAEA24B,oBAAgD,CAC9C,IAAM34B,EAAO,KAAK0W,UAAS,EAI3B,IAHA1W,EAAK8a,MAAQ,CAAA,EACb,KAAKkW,OAAM,CAAY,EAEhB,KAAKxX,MAAM5K,IAAM,KAAKgL,QAAU,CAAC,KAAK6X,MAAK,CAAY,IAC5DzxB,EAAK8a,MAAMgC,KAAK,KAAKmU,cAAe,CAAA,EAChC,MAAKQ,MAAK,CAAY,IAC1B,KAAKT,OAAM,EAAS,EAEtB,YAAKA,OAAM,CAAY,EAChB,KAAKha,WAAWhX,EAAM,qBAAqB,CACpD,CAEAk3B,2BAA2B0B,EAAyC,CAClE,IAAI3yB,EAAO,KACP6S,EAAW,GACXuZ,EAAiB,KACfryB,EAAO,KAAK0W,UAAS,EACrBmiB,EAAK,KAAK/B,UAAS,EACnBgC,EAAS,KAAKtf,MAAMvZ,OAAiB,GAE3C,OAAI44B,EAAG54B,OAAI,IAAiB44B,EAAG54B,OAAI,IAC7B64B,GAAU,CAACF,GACb,KAAKjgB,MAAMkT,GAAWwC,qBAAsBruB,CAAI,EAElDiG,EAAO,KAAK4rB,gBAAgBiH,CAAM,EAC9B,KAAKzH,IAAG,EAAY,IACtBvY,EAAW,GACPggB,GACF,KAAKngB,MAAMkT,GAAWuC,0BAA2BpuB,CAAI,GAGzDqyB,EAAiB,KAAKzB,yBAAwB,GAE9CyB,EAAiB,KAAKpB,cAAa,EAErCjxB,EAAKiG,KAAOA,EACZjG,EAAK8Y,SAAWA,EAChB9Y,EAAKqyB,eAAiBA,EACf,KAAKrb,WAAWhX,EAAM,mBAAmB,CAClD,CAEA+4B,mCACE94B,EACyB,CACzB,IAAMD,EAAO,KAAKi3B,YAAqCh3B,EAAKuO,IAAI5Q,KAAK,EACrEoC,OAAAA,EAAKiG,KAAO,KACZjG,EAAK8Y,SAAW,GAChB9Y,EAAKqyB,eAAiBpyB,EACf,KAAK+W,WAAWhX,EAAM,mBAAmB,CAClD,CAEAkyB,4BAA4Bpd,EAAoC,CAAA,EAI9D,CACA,IAAInF,EAAmD,KACnDsS,EAAoD,KASxD,IARI,KAAKwP,MAAK,EAAS,IACrBxP,EAAQ,KAAKiV,2BAAuC,EAAI,EAExDjV,EAAMhc,KAAO,KACR,KAAKwrB,MAAK,EAAU,GACvB,KAAKT,OAAM,EAAS,GAGjB,CAAC,KAAKS,MAAe,EAAA,GAAK,CAAC,KAAKA,MAAK,EAAY,GACtD3c,EAAOgI,KAAK,KAAKoa,2BAA2B,EAAK,CAAC,EAC7C,KAAKzF,MAAK,EAAU,GACvB,KAAKT,OAAM,EAAS,EAGxB,OAAI,KAAKK,IAAG,EAAY,IACtB1hB,EAAO,KAAKunB,2BAA2B,EAAK,GAEvC,CAAEpiB,OAAAA,EAAQnF,KAAAA,EAAMsS,MAAAA,EACzB,CAEA+W,0BACEphB,EACA5X,EACA+V,EACY,CACZ,OAAQA,EAAG9P,KAAI,CACb,IAAK,MACH,OAAO,KAAK+Q,WAAWhX,EAAM,mBAAmB,EAElD,IAAK,OACL,IAAK,UACH,OAAO,KAAKgX,WAAWhX,EAAM,uBAAuB,EAEtD,IAAK,QACH,OAAO,KAAKgX,WAAWhX,EAAM,qBAAqB,EAEpD,IAAK,QACH,OAAO,KAAKgX,WAAWhX,EAAM,qBAAqB,EAEpD,IAAK,SACH,OAAO,KAAKgX,WAAWhX,EAAM,sBAAsB,EAErD,IAAK,SACH,OAAO,KAAKgX,WAAWhX,EAAM,sBAAsB,EAErD,IAAK,SACH,OAAO,KAAKgX,WAAWhX,EAAM,sBAAsB,EAErD,QACE,YAAK80B,mBAAmB/e,EAAG9P,IAAI,EACxB,KAAKuyB,qBAAqB5gB,EAAU7B,CAAE,CACjD,CACF,CAKA2iB,sBAAmC,CACjC,IAAM9gB,EAAW,KAAK4B,MAAM5B,SACtB5X,EAAO,KAAK0W,UAAS,EACvBub,EACAhyB,EACAg5B,EAAgB,GACd7C,EAAwB,KAAK5c,MAAM6c,mBAEzC,OAAQ,KAAK7c,MAAMvZ,KAAI,CACrB,IAAA,GACE,OAAO,KAAKo0B,oBAAoB,CAC9BC,YAAa,GACbC,WAAY,GACZC,YAAa,GACbC,WAAY,GACZC,aAAc,EAChB,CAAC,EAEH,IAAA,GACE,OAAO,KAAKL,oBAAoB,CAC9BC,YAAa,GACbC,WAAY,GACZC,YAAa,GACbC,WAAY,GACZC,aAAc,EAChB,CAAC,EAEH,IAAA,GACE,YAAKlb,MAAM6c,mBAAqB,GAChCp2B,EAAO,KAAK04B,mBAAkB,EAC9B,KAAKnf,MAAM6c,mBAAqBD,EACzBn2B,EAET,IAAA,IAAY,CACV,IAAMD,EAAO,KAAK0W,UAAS,EAC3B1W,OAAAA,EAAK2W,eAAiB,KAAKqb,kCAAiC,EAC5D,KAAKhB,OAAM,EAAU,EACrBiB,EAAM,KAAKC,4BAA2B,EACtClyB,EAAK8U,OAASmd,EAAInd,OAClB9U,EAAK2P,KAAOsiB,EAAItiB,KAChB3P,EAAKmyB,KAAOF,EAAIhQ,MAChB,KAAK+O,OAAM,EAAU,EAErB,KAAKA,OAAM,EAAS,EAEpBhxB,EAAKoyB,WAAa,KAAKnB,cAAa,EAE7B,KAAKja,WAAWhX,EAAM,wBAAwB,CACvD,CAEA,IAAA,IAAgB,CACd,IAAMA,EAAO,KAAK0W,UAAS,EAI3B,GAHA,KAAKyS,KAAI,EAGL,CAAC,KAAKsI,MAAe,EAAA,GAAK,CAAC,KAAKA,MAAK,EAAY,EACnD,GAAIxL,GAAkB,KAAKzM,MAAMvZ,IAAI,GAAK,KAAKwxB,MAAK,EAAS,EAAG,CAC9D,IAAM5kB,EAAQ,KAAKiqB,UAAS,EAAG72B,KAC/Bg5B,EAAgBpsB,IAAqB,IAAIA,IAAkB,EAC7D,MACEosB,EAAgB,GAIpB,GAAIA,EAAe,CAMjB,GALA,KAAKzf,MAAM6c,mBAAqB,GAChCp2B,EAAO,KAAKgxB,cAAa,EACzB,KAAKzX,MAAM6c,mBAAqBD,EAI9B,KAAK5c,MAAM6c,oBACX,EACE,KAAK5E,MAAc,EAAA,GAClB,KAAKA,MAAe,EAAA,GAAK,KAAKqF,UAAS,EAAG72B,OAAkB,IAG/D,YAAK+wB,OAAM,EAAU,EACd/wB,EAGP,KAAKoxB,IAAG,EAAS,CAErB,CAEA,OAAIpxB,EACFgyB,EAAM,KAAKC,4BAA4B,CACrC,KAAK6G,mCAAmC94B,CAAI,CAAC,CAC9C,EAEDgyB,EAAM,KAAKC,4BAA2B,EAGxClyB,EAAK8U,OAASmd,EAAInd,OAClB9U,EAAK2P,KAAOsiB,EAAItiB,KAChB3P,EAAKmyB,KAAOF,EAAIhQ,MAEhB,KAAK+O,OAAM,EAAU,EAErB,KAAKA,OAAM,EAAS,EAEpBhxB,EAAKoyB,WAAa,KAAKnB,cAAa,EAEpCjxB,EAAK2W,eAAiB,KAEf,KAAKK,WAAWhX,EAAM,wBAAwB,CACvD,CAEA,IAAA,KACE,OAAO,KAAK+S,aACV,KAAKyG,MAAMhM,MACX,6BACF,EAEF,IAAA,IACA,IAAA,IACExN,OAAAA,EAAKwN,MAAQ,KAAKikB,MAAK,EAAS,EAChC,KAAKtI,KAAI,EACF,KAAKnS,WACVhX,EACA,8BACF,EAEF,IAAA,IACE,GAAI,KAAKwZ,MAAMhM,QAAU,IAAK,CAE5B,GADA,KAAK2b,KAAI,EACL,KAAKsI,MAAK,GAAO,EACnB,OAAO,KAAKyH,mBACV,CAAC,KAAK1f,MAAMhM,MACZ,8BACAxN,CACF,EAGF,GAAI,KAAKyxB,MAAK,GAAU,EACtB,OAAO,KAAKyH,mBACV,CAAC,KAAK1f,MAAMhM,MACZ,8BACAxN,CACF,EAGF,MAAM,KAAK2Y,MACTkT,GAAWiD,6BACX,KAAKtV,MAAM5B,QACb,CACF,CACA,KAAK5S,WAAU,EACf,OACF,IAAA,KACE,OAAO,KAAK+N,aACV,KAAKyG,MAAMhM,MACX,6BACF,EAEF,IAAA,KACE,OAAO,KAAKuF,aACV,KAAKyG,MAAMhM,MACX,6BACF,EAEF,IAAA,IACE,YAAK2b,KAAI,EACF,KAAKnS,WAAWhX,EAAM,oBAAoB,EAEnD,IAAA,IACE,YAAKmpB,KAAI,EACF,KAAKnS,WAAWhX,EAAM,2BAA2B,EAE1D,IAAA,IACE,YAAKmpB,KAAI,EACF,KAAKnS,WAAWhX,EAAM,oBAAoB,EAEnD,IAAA,IACE,YAAKmpB,KAAI,EACF,KAAKnS,WAAWhX,EAAM,sBAAsB,EAErD,IAAA,IACE,OAAO,KAAKy4B,oBAAmB,EAEjC,QACE,GAAI/R,GAAe,KAAKlN,MAAMvZ,IAAI,EAAG,CACnC,IAAMwb,EAAQuL,GAAe,KAAKxN,MAAMvZ,IAAI,EAC5C,YAAKkpB,KAAI,EACF,MAAMgQ,iBAAiBn5B,EAA8Byb,CAAK,CAClE,SAAUwK,GAAkB,KAAKzM,MAAMvZ,IAAI,EAC1C,OAAI,KAAK4yB,aAAY,GAAc,EAC1B,KAAK4D,uBAAsB,EAG7B,KAAKuC,0BACVphB,EACA5X,EACA,KAAK6xB,gBAAe,CACtB,CAEN,CAEA,KAAK7sB,WAAU,CACjB,CAEAo0B,sBAAmC,CACjC,IAAMxhB,EAAW,KAAK4B,MAAM5B,SACxB3X,EAAO,KAAKy4B,qBAAoB,EAChCW,EAA4B,GAChC,MACG,KAAK5H,MAAiB,CAAA,GAAK,KAAKA,MAAoB,EAAA,IACrD,CAAC,KAAK6H,mBAAkB,GACxB,CACA,IAAMt5B,EAAO,KAAKi3B,YAAuCrf,CAAQ,EAC3DkB,EAAW,KAAKuY,IAAG,EAAe,EACxCgI,EAA4BA,GAA6BvgB,EACzD,KAAKkY,OAAM,CAAY,EACnB,CAAClY,GAAY,KAAK2Y,MAAK,CAAY,GACrCzxB,EAAKu5B,YAAct5B,EACnB,KAAKkpB,KAAI,EACTlpB,EAAO,KAAK+W,WAAWhX,EAAM,qBAAqB,IAElDA,EAAKw5B,WAAav5B,EAClBD,EAAKy5B,UAAY,KAAKxI,cAAa,EACnC,KAAKD,OAAM,CAAY,EACnBqI,GACFr5B,EAAK8Y,SAAWA,EAChB7Y,EAAO,KAAK+W,WAEVhX,EACA,2BACF,GAEAC,EAAO,KAAK+W,WAEVhX,EACA,mBACF,EAGN,CACA,OAAOC,CACT,CAEAy5B,qBAAkC,CAChC,IAAM15B,EAAO,KAAK0W,UAAS,EAC3B,OAAI,KAAK2a,IAAG,EAAY,GACtBrxB,EAAKqyB,eAAiB,KAAKqH,oBAAmB,EACvC,KAAK1iB,WAAWhX,EAAM,wBAAwB,GAE9C,KAAKo5B,qBAAoB,CAEpC,CAEAO,oCAAiD,CAC/C,IAAMC,EAAQ,KAAKF,oBAAmB,EACtC,GAAI,CAAC,KAAKlgB,MAAM6c,oBAAsB,KAAKhF,IAAY,EAAA,EAAG,CAExD,IAAMrxB,EAAO,KAAKi3B,YAChB2C,EAAMprB,IAAI5Q,KACZ,EACAoC,OAAAA,EAAK8U,OAAS,CAAC,KAAKikB,mCAAmCa,CAAK,CAAC,EAC7D55B,EAAK2P,KAAO,KACZ3P,EAAKmyB,KAAO,KACZnyB,EAAKoyB,WAAa,KAAKnB,cAAa,EACpCjxB,EAAK2W,eAAiB,KACf,KAAKK,WAAWhX,EAAM,wBAAwB,CACvD,CACA,OAAO45B,CACT,CAEAC,2BAAwC,CACtC,IAAM75B,EAAO,KAAK0W,UAAS,EAC3B,KAAK2a,IAAG,EAAc,EACtB,IAAMpxB,EAAO,KAAK05B,mCAAkC,EAEpD,IADA35B,EAAK8a,MAAQ,CAAC7a,CAAI,EACX,KAAKoxB,IAAG,EAAc,GAC3BrxB,EAAK8a,MAAMgC,KAAK,KAAK6c,mCAAoC,CAAA,EAE3D,OAAO35B,EAAK8a,MAAMlB,SAAW,EACzB3Z,EACA,KAAK+W,WAAWhX,EAAM,4BAA4B,CACxD,CAEA85B,oBAAiC,CAC/B,IAAM95B,EAAO,KAAK0W,UAAS,EAC3B,KAAK2a,IAAG,EAAa,EACrB,IAAMpxB,EAAO,KAAK45B,0BAAyB,EAE3C,IADA75B,EAAK8a,MAAQ,CAAC7a,CAAI,EACX,KAAKoxB,IAAG,EAAa,GAC1BrxB,EAAK8a,MAAMgC,KAAK,KAAK+c,0BAA2B,CAAA,EAElD,OAAO75B,EAAK8a,MAAMlB,SAAW,EACzB3Z,EACA,KAAK+W,WAAWhX,EAAM,qBAAqB,CACjD,CAEAixB,eAA4B,CAC1B,IAAMH,EAAY,KAAKtX,MAAMuX,OAC7B,KAAKvX,MAAMuX,OAAS,GACpB,IAAM9wB,EAAO,KAAK65B,mBAAkB,EACpC,YAAKtgB,MAAMuX,OAASD,EACb7wB,CACT,CAEAu2B,sCAAmD,CACjD,GAAI,KAAKhd,MAAMvZ,OAAgB,KAAI,KAAKuZ,MAAMhM,QAAU,IAAK,CAC3D,IAAMoK,EAAW,KAAK4B,MAAM5B,SACtB5X,EAAO,KAAK6xB,gBAAe,EACjC,OAAO,KAAK2G,qBAAqB5gB,EAAU5X,CAAI,CACjD,KACE,QAAO,KAAKixB,cAAa,CAE7B,CAEA0C,yBAA4C,CAC1C,IAAM3zB,EAAO,KAAK0W,UAAS,EAC3B1W,OAAAA,EAAKqyB,eAAiB,KAAKzB,yBAAwB,EAC5C,KAAK5Z,WAAWhX,EAAM,gBAAgB,CAC/C,CAEAkzB,mCACE6G,EACc,CACd,IAAMrE,EAAQqE,EACV,KAAKlI,gBAAe,EACpB,KAAKmC,8BAA6B,EACtC,OAAI,KAAKvC,MAAK,EAAS,IACrBiE,EAAMrD,eAAiB,KAAKsB,wBAAuB,EACnD,KAAKjZ,iBAAiBgb,CAAK,GAEtBA,CACT,CAEAsE,oBAAoBh6B,EAA0C,CAC3DA,OAAAA,EAAKwT,WAA4B6e,eAAiBryB,EAAKqyB,eAExD,KAAK3X,iBAAiB1a,EAAKwT,WAAYxT,EAAKqyB,eAAe7jB,IAAI3Q,GAAG,EAE3DmC,EAAKwT,UACd,CAEAiiB,mBAAuD,CACrD,IAAID,EAAW,KACf,OAAI,KAAK/D,MAAK,EAAW,GACvB+D,EAAW,KAAK9e,UAAS,EACrB,KAAK8C,MAAMhM,QAAU,IACvBgoB,EAASn1B,KAAO,OAEhBm1B,EAASn1B,KAAO,QAElB,KAAK8oB,KAAI,EACF,KAAKnS,WAAWwe,EAAU,UAAU,GAEtCA,CACT,CAMAvf,kBACEjW,EACAi6B,EACA9jB,EAAoB,GACd,CACN,GAAI8jB,EAAqB,CACvB,KAAKC,iCAAiCl6B,EAAM,IAC1C,MAAMiW,kBAAkBjW,EAAM,GAAMmW,CAAQ,CAC9C,EACA,MACF,CAEA,MAAMF,kBAAkBjW,EAAM,GAAOmW,CAAQ,CAC/C,CAEAgkB,2BAMEn6B,EAAiBC,EAAiBkW,EAAoB,GAAU,CAChE,GAAI,KAAKsb,MAAK,EAAS,EAAG,CACxB,IAAMK,EAAW,KAAKpb,UAAS,EAE/B,CACEob,EAASO,eAETryB,EAAKwxB,SAAS,EACZ,KAAKD,qCAAoC,EAE7CvxB,EAAKoyB,WAAaN,EAASO,eACvB,KAAKrb,WAAW8a,EAAU,gBAAgB,EAC1C,IACN,CAEA,OAAO,MAAMqI,2BAA2Bn6B,EAAMC,EAAMkW,CAAQ,CAC9D,CAGAikB,mBAAmB/nB,EAAwC,CAEzD,GAAI,KAAKmH,MAAM6O,QAAU,KAAKwK,aAA0B,GAAA,EAAG,CACzD,IAAMiE,EAAY,KAAKA,UAAS,EAChC,GAAI3Q,GAA2B2Q,EAAU72B,IAAI,EAAG,CAC9C,IAAMD,EAAO,KAAK0W,UAAS,EAC3B,YAAKyS,KAAI,EACF,KAAK0L,mBAAmB70B,CAAI,CACrC,CACD,SAAU,KAAK6yB,aAAY,GAAS,EAAG,CACtC,IAAM7yB,EAAO,KAAK0W,UAAS,EAC3B,YAAKyS,KAAI,EACF,KAAKkR,yBAAyBr6B,CAAI,CAC3C,CACA,IAAMgU,EAAO,MAAMomB,mBAAmB/nB,CAAK,EAE3C,OAAI,KAAK8d,aAAehgB,QAAa,CAAC,KAAK4E,iBAAiBf,CAAI,IAC9D,KAAKmc,WAAa,MAEbnc,CACT,CAGAsmB,yBACEt6B,EACAu6B,EACAjhB,EACuB,CACvB,GAAIihB,EAAKt6B,OAAS,cAChB,GAAIs6B,EAAKt0B,OAAS,WAChB,GACE,KAAKwrB,MAAK,EAAU,GACpBxL,GAAkB,KAAKzM,MAAMvZ,IAAI,GACjC,KAAKwxB,MAAkB,EAAA,GACvB,KAAKA,MAAK,EAAQ,GAClB,KAAKA,MAAK,EAAW,EAGrB,OAAO,KAAKc,iBAAiBvyB,CAAI,UAE1BimB,GAAkB,KAAKzM,MAAMvZ,IAAI,EAAG,CAC7C,GAAIs6B,EAAKt0B,OAAS,YAEhB,OAAO,KAAK4uB,mBAAmB70B,CAAI,EAC9B,GAAIu6B,EAAKt0B,OAAS,OAEvB,OAAO,KAAK4tB,mBAAmB7zB,CAAI,EAC9B,GAAIu6B,EAAKt0B,OAAS,SAEvB,OAAO,KAAK6tB,oBAAoB9zB,EAAM,EAAK,CAE/C,EAGF,OAAO,MAAMs6B,yBAAyBt6B,EAAMu6B,EAAMjhB,CAAU,CAC9D,CAGAkhB,8BAAwC,CACtC,GAAM,CAAEv6B,KAAAA,GAAS,KAAKuZ,MACtB,OAAIvZ,IAAiB,KAAIumB,GAAmCvmB,CAAI,EACvD,CAAC,KAAKuZ,MAAMihB,YAEd,MAAMD,6BAA4B,CAC3C,CAEAE,0BAAoC,CAClC,GAAM,CAAEz6B,KAAAA,GAAS,KAAKuZ,MACtB,OAAIvZ,IAAiB,KAAIumB,GAAmCvmB,CAAI,EACvD,KAAKuZ,MAAMihB,YAGb,MAAMC,yBAAwB,CACvC,CAEAC,8BAA+B,CAC7B,GAAI,KAAK9H,aAAY,GAAS,EAAG,CAC/B,IAAM7yB,EAAO,KAAK0W,UAAS,EAC3B,YAAKyS,KAAI,EACF,KAAKkR,yBAAyBr6B,CAAI,CAC3C,CACA,OAAO,MAAM26B,6BAA4B,CAC3C,CAEAC,iBACEL,EAEA3iB,EACAE,EACc,CACd,GAAI,CAAC,KAAK2Z,MAAK,EAAY,EAAG,OAAO8I,EAErC,GAAI,KAAK/gB,MAAMqhB,uBAAwB,CACrC,IAAMC,EAAS,KAAKC,kBAAiB,EAIrC,GACED,IAA0B,IAC1BA,IAAM,IACNA,IAA0B,IAC1BA,IAAM,GAGN,YAAKE,2BAA2BljB,CAAmB,EAC5CyiB,CAEX,CAEA,KAAKvJ,OAAM,EAAY,EACvB,IAAMxX,EAAQ,KAAKA,MAAMyhB,MAAK,EACxBC,EAAoB,KAAK1hB,MAAM2hB,UAC/Bn7B,EAAO,KAAKi3B,YAAqCrf,CAAQ,EAC3D,CAAEwjB,WAAAA,EAAYC,OAAAA,CAAO,EAAI,KAAKC,8BAA6B,EAC3D,CAACC,EAAOC,CAAO,EAAI,KAAKC,wBAAwBL,CAAU,EAE9D,GAAIC,GAAUG,EAAQ5hB,OAAS,EAAG,CAChC,IAAMuhB,EAAY,CAAC,GAAGD,CAAiB,EAEvC,GAAIM,EAAQ5hB,OAAS,EAAG,CACtB,KAAKJ,MAAQA,EACb,KAAKA,MAAM2hB,UAAYA,EAEvB,QAASpT,EAAI,EAAGA,EAAIyT,EAAQ5hB,OAAQmO,IAClCoT,EAAUre,KAAK0e,EAAQzT,CAAC,EAAEnqB,KAAK,GAGhC,CAAEw9B,WAAAA,EAAYC,OAAAA,CAAO,EAAI,KAAKC,8BAA6B,GAC5D,CAACC,EAAOC,CAAO,EAAI,KAAKC,wBAAwBL,CAAU,CAC5D,CAEIC,GAAUE,EAAM3hB,OAAS,GAM3B,KAAKjB,MAAMkT,GAAWC,0BAA2BtS,EAAM5B,QAAQ,EAG7DyjB,GAAUE,EAAM3hB,SAAW,IAC7B,KAAKJ,MAAQA,EACb2hB,EAAUre,KAAKye,EAAM,CAAC,EAAE39B,KAAK,EAC7B,KAAK4b,MAAM2hB,UAAYA,EACtB,CAAEC,WAAAA,EAAYC,OAAAA,CAAO,EAAI,KAAKC,8BAA6B,EAEhE,CAEA,YAAKG,wBAAwBL,EAAY,EAAI,EAE7C,KAAK5hB,MAAM2hB,UAAYD,EACvB,KAAKlK,OAAM,EAAS,EAEpBhxB,EAAKioB,KAAOsS,EACZv6B,EAAKo7B,WAAaA,EAClBp7B,EAAK07B,UAAY,KAAKxB,iCAAiCl6B,EAAM,IAC3D,KAAK27B,iBAAiBxrB,OAAWA,MAAS,CAC5C,EAEO,KAAK6G,WAAWhX,EAAM,uBAAuB,CACtD,CAEAs7B,+BAGE,CACA,KAAK9hB,MAAMoiB,0BAA0B9e,KAAK,KAAKtD,MAAM5b,KAAK,EAE1D,IAAMw9B,EAAa,KAAKS,wBAAuB,EACzCR,EAAS,CAAC,KAAK5J,MAAK,EAAS,EAEnC,YAAKjY,MAAMoiB,0BAA0BtU,IAAG,EAEjC,CAAE8T,WAAAA,EAAYC,OAAAA,EACvB,CASAI,wBACEz7B,EACA87B,EAC4D,CAC5D,IAAMC,EAAQ,CAAC/7B,CAAI,EACbg8B,EAAsC,CAAA,EAE5C,KAAOD,EAAMniB,SAAW,GAAG,CACzB,IAAM5Z,EAAO+7B,EAAMzU,IAAG,EAEpBtnB,EAAKC,OAAS,2BACdD,EAAKyV,KAAKxV,OAAS,kBAEfD,EAAK2W,gBAAkB,CAAC3W,EAAKoyB,WAE/B,KAAK6J,sBAAsBj8B,CAAI,EAE/Bg8B,EAAOlf,KAAK9c,CAAI,EAElB+7B,EAAMjf,KAAK9c,EAAKyV,IAAI,GACXzV,EAAKC,OAAS,0BACvB87B,EAAMjf,KAAK9c,EAAKo7B,UAAU,EAC1BW,EAAMjf,KAAK9c,EAAK07B,SAAS,EAE7B,CAEA,OAAII,GACFE,EAAOzI,QAAQvzB,GAAQ,KAAKi8B,sBAAsBj8B,CAAI,CAAC,EAChD,CAACg8B,EAAQ,CAAA,CAAE,GAGbnM,GAAUmM,EAAQh8B,GACvBA,EAAK8U,OAAOonB,MAAMtC,GAAS,KAAKzhB,aAAayhB,EAAO,EAAI,CAAC,CAC3D,CACF,CAEAqC,sBAAsBj8B,EAAiC,CAAA,IAAAm8B,EACrD,KAAKC,iBAGHp8B,EAAK8U,QAAMqnB,EACXn8B,EAAK8T,QAALqoB,KAAAA,OAAAA,EAAYE,iBACA,EACd,EAEA,KAAKrR,MAAMF,MAAMN,GAAoC,EAErD,MAAM8R,YAAYt8B,EAAM,GAAO,EAAI,EACnC,KAAKgrB,MAAMD,KAAI,CACjB,CAEAmP,iCACEl6B,EACAgS,EACG,CACH,IAAIuI,EACJ,OACE,KAAKf,MAAMoiB,0BAA0BW,SACnC,KAAKC,kBAAkBx8B,EAAKpC,KAAK,CACnC,GAEA,KAAK4b,MAAMoiB,0BAA0B9e,KAAK,KAAKtD,MAAM5b,KAAK,EAC1D2c,EAASvI,EAAK,EACd,KAAKwH,MAAMoiB,0BAA0BtU,IAAG,GAExC/M,EAASvI,EAAK,EAGTuI,CACT,CAEAkiB,eACEz8B,EACA4X,EACmD,CACnD,IAAM8kB,EAAU,MAAMD,eAAez8B,EAAM4X,CAAQ,EASnD,GARI,KAAKyZ,IAAG,EAAY,IACrBqL,EAAyB5jB,SAAW,GAIrC,KAAK4B,iBAAiB1a,CAAI,GAGxB,KAAKyxB,MAAK,EAAS,EAAG,CACxB,IAAMkL,EAAe,KAAK1F,YAAkCrf,CAAQ,EACpE+kB,OAAAA,EAAanpB,WAAakpB,EAC1BC,EAAatK,eAAiB,KAAKsB,wBAAuB,EAEnD,KAAK3c,WAAW2lB,EAAc,oBAAoB,CAC3D,CAEA,OAAOD,CACT,CAEAE,wBAAwB58B,EAAc,CAEjCA,EAAKC,OAAS,sBACZD,EAAKwvB,aAAe,QAAUxvB,EAAKwvB,aAAe,WACpDxvB,EAAKC,OAAS,0BACbD,EAAK0zB,aAAe,QACrB1zB,EAAKC,OAAS,wBAA0BD,EAAK0zB,aAAe,QAO/D,MAAMkJ,wBAAwB58B,CAAI,CACpC,CAEA68B,uBACE78B,EACkC,CAClC,GAAI,KAAK6yB,aAAY,GAAS,EAAG,CAC/B7yB,EAAK0zB,WAAa,OAElB,IAAMoJ,EAAkB,KAAKpmB,UAAS,EAGtC,OAFA,KAAKyS,KAAI,EAEL,KAAKsI,MAAK,CAAU,GAEtBzxB,EAAK2Z,WAAa,KAAKojB,sBACA,EACvB,EACA,MAAMC,gBAAgBh9B,CAAI,EACnB,MAIA,KAAK6zB,mBAAmBiJ,CAAe,CAEjD,SAAU,KAAKjK,aAAY,GAAW,EAAG,CACxC7yB,EAAK0zB,WAAa,OAElB,IAAMoJ,EAAkB,KAAKpmB,UAAS,EACtC,YAAKyS,KAAI,EAGF,KAAK2K,oBAAoBgJ,EAAiB,EAAK,CACvD,SAAU,KAAKjK,aAAY,GAAc,EAAG,CAC3C7yB,EAAK0zB,WAAa,OAClB,IAAMoJ,EAAkB,KAAKpmB,UAAS,EACtC,YAAKyS,KAAI,EAEF,KAAK0L,mBAAmBiI,CAAe,CAC/C,SAAU,KAAKjK,aAAY,GAAS,EAAG,CACtC7yB,EAAK0zB,WAAa,QAClB,IAAMoJ,EAAkB,KAAKpmB,UAAS,EACtC,YAAKyS,KAAI,EAEF,KAAKkR,yBAAyByC,CAAe,CACtD,KACE,QAAO,MAAMD,uBAAuB78B,CAAI,CAE5C,CAEAi9B,cACEj9B,EACmE,CACnE,OAAI,MAAMi9B,cAAcj9B,CAAI,EAAU,GAElC,KAAK6yB,aAAY,GAAS,GAAK,KAAKiE,UAAW,EAAC72B,OAAI,IAEpDD,EACA0zB,WAAa,OACf,KAAKvK,KAAI,EACT,KAAKA,KAAI,EACF,IAGF,EACT,CAEA+T,mCACEl9B,EAC0C,CAC1C,GAAM,CAAE4X,SAAAA,GAAa,KAAK4B,MACpB2jB,EAAe,MAAMD,mCAAmCl9B,CAAI,EAClE,OAAIm9B,GAAgBn9B,EAAK0zB,aAAe,QACtC,KAAK1uB,WAAW4S,CAAQ,EAEnBulB,CACT,CAEAC,aACEp9B,EACAq9B,EACAC,EACA,CACA,MAAMF,aAAap9B,EAAMq9B,EAAaC,CAAU,EAC5C,KAAK7L,MAAK,EAAM,IAClBzxB,EAAK2W,eAAiB,KAAKqb,kCAAiC,EAEhE,CAEAuL,iBACEC,EACAC,EACAjkB,EACM,CACN,GAAM,CAAE5B,SAAAA,GAAa,KAAK4B,MAC1B,GAAI,KAAKqZ,aAAY,GAAY,EAAG,CAClC,GAAI,MAAM6K,6BAA6BF,EAAWC,CAAM,EAEtD,OAGFA,EAAOvI,QAAU,EACnB,CAEA,MAAMqI,iBAAiBC,EAAWC,EAAQjkB,CAAK,EAE3CikB,EAAOvI,UAEPuI,EAAOx9B,OAAS,iBAChBw9B,EAAOx9B,OAAS,wBAChBw9B,EAAOx9B,OAAS,qBAEhB,KAAK0Y,MAAMkT,GAAWK,oBAAqBtU,CAAQ,EAC1C6lB,EAAOjwB,OAChB,KAAKmL,MAAMkT,GAAWM,6BAA8BsR,EAAOjwB,KAAK,EAGtE,CAEAmwB,WAAWjV,EAAuB,CAChC,OAAOA,IAAS,YAAcA,IAAS,eACzC,CAEAkV,cAAqB,CACnB,IAAMlV,EAAO,MAAMmV,UAAS,EACtBC,EAAW,KAAOpV,GAGpB,CAAC,KAAKiV,WAAWjV,CAAI,GAAK,CAAC,KAAKlP,MAAMuX,SACxC,KAAKpY,MAAM7I,EAAOtL,kBAAmB,KAAKgV,MAAMukB,YAAW,EAAI,CAC7DhgC,eAAgB+/B,CAClB,CAAC,EAGH,KAAKxN,YAAqBwN,IAAAA,CAAQ,CACpC,CAGAE,iBAAiB7/B,EAAoB,CACnC,IAAMgrB,EAAO,KAAK8U,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,EACjDzQ,IAAI,KAAiCgrB,IAAI,IAC3C,KAAKgV,SAAuB,EAAA,CAAC,EAE7B,KAAK3kB,MAAMuX,SACV5yB,IAA8B,IAAIA,IAAI,IAEvC,KAAKggC,SAAShgC,IAAI,GAA0C,GAAA,GAAE,CAAC,EACtD,KAAKqb,MAAMuX,QAAU5yB,IAAI,GAC9BgrB,IAAI,GACN,KAAKgV,SAAyB,GAAA,CAAC,EAG/B,KAAKA,SAAsB,GAAA,CAAC,EAG9BlV,GAAgB9qB,EAAMgrB,EAAM,KAAK8U,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,CAAC,GAErE,KAAK4K,MAAM5K,KAAO,EAClB,KAAKgvB,aAAY,GAEjB,MAAMI,iBAAiB7/B,CAAI,CAE/B,CAEAga,aAAanY,EAAcoY,EAA8B,CACvD,OAAIpY,EAAKC,OAAS,qBACT,KAAKkY,aAAanY,EAAKwT,WAAY4E,CAAS,EAE5C,MAAMD,aAAanY,EAAMoY,CAAS,CAE7C,CAEAC,aAAarY,EAAcsY,EAAiB,GAAa,CAErD,CAACA,GACDtY,EAAKC,OAAS,wBACdD,EAAKo+B,KAAKn+B,OAAS,uBAEnBD,EAAKo+B,KAAO,KAAKpE,oBAAoBh6B,EAAKo+B,IAAI,GAEhD,MAAM/lB,aAAarY,EAAMsY,CAAK,CAChC,CAGA8jB,iBACEiC,EACAhC,EACA/jB,EACM,CACN,QAASyP,EAAI,EAAGA,EAAIsW,EAASzkB,OAAQmO,IAAK,CACxC,IAAMwS,EAAO8D,EAAStW,CAAC,EACnBwS,GAAMt6B,OAAS,uBACjBo+B,EAAStW,CAAC,EAAI,KAAKiS,oBAAoBO,CAAI,EAE/C,CACA,MAAM6B,iBAAiBiC,EAAUhC,EAAkB/jB,CAAK,CAC1D,CAIAgmB,iBACED,EAGAE,EAG8C,CAC9C,QAASxW,EAAI,EAAGA,EAAIsW,EAASzkB,OAAQmO,IAAK,CAAA,IAAAyW,EACxC,IAAMjE,EAAO8D,EAAStW,CAAC,EAErBwS,GACAA,EAAKt6B,OAAS,sBACd,GAAAu+B,EAACjE,EAAKzmB,QAAL0qB,MAAAA,EAAYvpB,iBACZopB,EAASzkB,OAAS,GAAK,CAAC2kB,IAEzB,KAAK5lB,MAAMkT,GAAW2C,kBAAmB+L,EAAKlI,cAAc,CAEhE,CAEA,OAAOgM,CACT,CAEAI,eACEC,EACAC,EACAC,EACA9mB,EACuC,CACvC,IAAM9X,EAAO,MAAMy+B,eACjBC,EACAC,EACAC,EACA9mB,CACF,EAOA,OAAI6mB,GAAgB,CAAC,KAAKnlB,MAAMqhB,wBAC9B,KAAKyD,iBAAiBt+B,EAAK6+B,QAAQ,EAG9B7+B,CACT,CAEAgY,YAAY/X,EAAc6+B,EAA0B5mB,EAAsB,CACxE,OACEjY,IAAS,sBACT,MAAM+X,YAAY/X,EAAM6+B,EAAiB5mB,CAAO,CAEpD,CAGAhB,mBAAmBlX,EAAwC,CACzD,OAAI,KAAKyxB,MAAK,EAAS,IACrBzxB,EAAKqyB,eAAiB,KAAKsB,wBAAuB,GAE7C,MAAMzc,mBAAmBlX,CAAI,CACtC,CAEAqX,0BACErX,EACwB,CACxB,OAAI,KAAKyxB,MAAK,EAAS,IACrBzxB,EAAKqyB,eAAiB,KAAKsB,wBAAuB,GAE7C,MAAMtc,0BAA0BrX,CAAI,CAC7C,CAGA++B,eAAyB,CACvB,OAAO,KAAKtN,MAAW,EAAA,GAAK,MAAMsN,cAAa,CACjD,CAGAC,iBAA2B,CACzB,OAAO,KAAKvN,MAAc,EAAA,GAAK,MAAMuN,gBAAe,CACtD,CAEAC,uBAAuBpqB,EAAkD,CACvE,MAAO,CAAC,KAAK4c,MAAc,EAAA,GAAK,MAAMwN,uBAAuBpqB,CAAM,CACrE,CAGAqqB,gBACE1B,EACA3oB,EACAwB,EACA5B,EACA6B,EACA6oB,EACM,CAkBN,GAjBKtqB,EAAe2gB,UAClB,KAAKxwB,WAAY6P,EAAe2gB,SAAShnB,IAAI5Q,KAAK,EAEpD,OAAQiX,EAAe2gB,SACnB,KAAK/D,MAAK,EAAM,IAClB5c,EAAO8B,eAAiB,KAAKqb,kCAAiC,GAGhE,MAAMkN,gBACJ1B,EACA3oB,EACAwB,EACA5B,EACA6B,EACA6oB,CACF,EAEItqB,EAAOC,QAAUwB,EAAe,CAClC,IAAMxB,EAASD,EAAOC,OAClBA,EAAO8E,OAAS,GAAK,KAAKwlB,YAAYtqB,EAAO,CAAC,CAAC,GACjD,KAAK6D,MAAMkT,GAAWsC,6BAA8BtZ,CAAM,CAG9D,SAEEA,EAAO5U,OAAS,oBAChBqW,GAEAzB,EAAOrH,MAAMsH,OACb,CAEA,IAAMA,EAASD,EAAOrH,MAAMsH,OACxBA,EAAO8E,OAAS,GAAK,KAAKwlB,YAAYtqB,EAAO,CAAC,CAAC,GACjD,KAAK6D,MAAMkT,GAAWsC,6BAA8BtZ,CAAM,CAE9D,CACF,CAEAwqB,uBACE7B,EACA3oB,EACAwB,EACA5B,EACM,CACDI,EAAe2gB,UAClB,KAAKxwB,WAAY6P,EAAe2gB,SAAShnB,IAAI5Q,KAAK,EAEpD,OAAQiX,EAAe2gB,SACnB,KAAK/D,MAAK,EAAM,IAClB5c,EAAO8B,eAAiB,KAAKqb,kCAAiC,GAGhE,MAAMqN,uBAAuB7B,EAAW3oB,EAAQwB,EAAa5B,CAAO,CACtE,CAGA6qB,gBAAgBt/B,EAAqB,CAgBnC,GAfA,MAAMs/B,gBAAgBt/B,CAAI,EAExBA,EAAK+R,aACJ,KAAK0f,MAAK,EAAM,GAEf,KAAKA,MAAkB,EAAA,KAMvBzxB,EAAKu/B,oBACH,KAAKrJ,gDAA+C,GAGtD,KAAKrD,aAAY,GAAe,EAAG,CACrC,KAAK1J,KAAI,EACT,IAAMqW,EAAwCx/B,EAAKm0B,WAAa,CAAA,EAChE,EAAG,CACD,IAAMn0B,EAAO,KAAK0W,UAAS,EAC3B1W,EAAK+V,GAAK,KAAKie,8BAA0C,EAAI,EACzD,KAAKvC,MAAK,EAAM,EAClBzxB,EAAK2W,eAAiB,KAAKie,oCAAmC,EAE9D50B,EAAK2W,eAAiB,KAExB6oB,EAAY1iB,KAAK,KAAK9F,WAAWhX,EAAM,iBAAiB,CAAC,CAC3D,OAAS,KAAKqxB,IAAG,EAAS,EAC5B,CACF,CAEAoO,wBAAwB5qB,EAA8C,CACpE,MAAM4qB,wBAAwB5qB,CAAM,EACpC,IAAMC,EAAS,KAAKF,6BAA6BC,CAAM,EACvD,GAAIC,EAAO8E,OAAS,EAAG,CACrB,IAAMggB,EAAQ9kB,EAAO,CAAC,EAClB,KAAKsqB,YAAYxF,CAAK,GAAK/kB,EAAOxU,OAAS,MAC7C,KAAKsY,MAAMkT,GAAWwB,0BAA2BuM,CAAK,EAC7C,KAAKwF,YAAYxF,CAAK,GAC/B,KAAKjhB,MAAMkT,GAAWmC,0BAA2B4L,CAAK,CAE1D,CACF,CAEA8F,gCACE1/B,EACM,CACNA,EAAKw1B,SAAW,KAAKC,kBAAiB,CACxC,CAGAkK,kBACEhoB,EACAC,EACAvB,EACA5B,EACAoD,EACA+nB,EACA9nB,EACG,CACEH,EAAa6d,UAChB,KAAKxwB,WAAY2S,EAAa6d,SAAShnB,IAAI5Q,KAAK,EAElD,OAAQ+Z,EAAa6d,SAErB,IAAI7e,EAGA,KAAK8a,MAAK,EAAM,GAAK,CAACmO,IACxBjpB,EAAiB,KAAKqb,kCAAiC,EAClD,KAAKP,MAAK,EAAU,GAAG,KAAKzsB,WAAU,GAG7C,IAAMuV,EAAS,MAAMolB,kBACnBhoB,EACAC,EACAvB,EACA5B,EACAoD,EACA+nB,EACA9nB,CACF,EAGA,OAAInB,KAED4D,EAAO/M,OAAS+M,GAAQ5D,eAAiBA,GAErC4D,CACT,CAEAslB,uBAAuBjG,EAA6B,CAClD,OAAI,KAAKvI,IAAG,EAAY,IAClBuI,EAAM35B,OAAS,cACjB,KAAK0Y,MAAMkT,GAAWkC,kBAAmB6L,CAAK,EAE5C,KAAKwF,YAAYxF,CAAK,GACxB,KAAKjhB,MAAMkT,GAAWuC,0BAA2BwL,CAAK,EAGvDA,EAA8B9gB,SAAW,IAExC,KAAK2Y,MAAK,EAAS,EACrBmI,EAAMvH,eAAiB,KAAKsB,wBAAuB,EAC1C,KAAKyL,YAAYxF,CAAK,GAC/B,KAAKjhB,MAAMkT,GAAWqC,4BAA6B0L,CAAK,EAGtD,KAAKnI,MAAK,EAAM,GAAK,KAAK2N,YAAYxF,CAAK,GAC7C,KAAKjhB,MAAMkT,GAAWyC,mBAAoBsL,CAAK,EAGjD,KAAKlf,iBAAiBkf,CAAK,EACpBA,CACT,CAEAkG,kBACEloB,EACAwmB,EACyB,CACzB,IAAMp+B,EAAO,MAAM8/B,kBAAkBloB,EAAUwmB,CAAI,EAEnD,OACEp+B,EAAKC,OAAS,qBACdD,EAAKqyB,gBACLryB,EAAKi1B,MAAMr3B,MAAQoC,EAAKqyB,eAAez0B,OAEvC,KAAK+a,MAAMkT,GAAW0C,sBAAuBvuB,EAAKqyB,cAAc,EAG3DryB,CACT,CAEA+/B,sBAAsB//B,EAAmC,CACvD,MAAM+/B,sBAAsB//B,CAAI,EAC5BA,EAAKggC,QAAUhgC,EAAKwvB,aAAe,SACrC,KAAK7W,MACHkT,GAAWyB,8BACXttB,EAAK2Z,WAAW,CAAC,EAAEnL,IAAI5Q,KACzB,CAEJ,CAEAqiC,0BAKEjgC,EAA2BkgC,EAAsBjgC,EAAuB,CACxEigC,EAAUC,MAAQ5Q,GAAkBvvB,CAAI,EACpC,KAAKg0B,8BACW,GACI,EACpB,EACA,KAAKnC,gBAAe,EAExB7xB,EAAK2Z,WAAWmD,KAAK,KAAKsjB,sBAAsBF,EAAWjgC,CAAI,CAAC,CAClE,CAEAogC,uBAAuBC,EAA4B,CACjD,GAAI,MAAMD,uBAAuBC,CAAQ,EAAG,MAAO,GACnD,GAAI,KAAKzN,aAAY,GAAS,EAAG,CAC/B,GAAI,CAACyN,EAAU,MAAO,GACtB,IAAMC,EAAK,KAAKxF,kBAAiB,EACjC,OAAOwF,IAAE,KAAiCA,IAAyB,EACrE,CACA,MAAO,CAACD,GAAY,KAAKzN,aAAY,EAAW,CAClD,CAEA2N,iBACExgC,EACAsgC,EACAG,EACAjyB,EACM,CAEN,GADA,MAAMgyB,iBAAiBxgC,EAAMsgC,EAAUG,EAAOjyB,CAAG,EAC7C8xB,EAAU,CACZ,GAAI,CAACG,GAAS,KAAKhP,MAAK,EAAY,EAElC,OAEDzxB,EAAkC0zB,WACjC+M,IAAU,OAASA,EAAQ,OAC/B,MACMA,IAAU,QAAU,KAAKhP,MAAa,EAAA,GAAG,KAAKzsB,WAAU,EAC3DhF,EAA6BwvB,WAC5BiR,IAAU,QAAUA,IAAU,SAAWA,EAAQ,OAEvD,CAGAC,qBACER,EACAS,EACAC,EAEAC,EAEA3V,EACmB,CACnB,IAAM4V,EAAaZ,EAAUa,SAEzBC,EAAoB,KACpBF,EAAW7gC,OAAS,eAClB6gC,EAAW76B,OAAS,OACtB+6B,EAAoB,OACXF,EAAW76B,OAAS,WAC7B+6B,EAAoB,WAIxB,IAAI5oB,EAAY,GAChB,GAAI,KAAKya,aAAY,EAAO,GAAK,CAAC,KAAKoO,sBAAsB,IAAI,EAAG,CAClE,IAAMC,EAAW,KAAKrP,gBAAgB,EAAI,EAExCmP,IAAsB,MACtB,CAAC7a,GAA2B,KAAK3M,MAAMvZ,IAAI,GAG3CigC,EAAUa,SAAWG,EACrBhB,EAAU1Q,WAAawR,EACvBd,EAAUC,MAAQ,KAAK3lB,gBAAgB0mB,CAAQ,IAG/ChB,EAAUa,SAAWD,EACrBZ,EAAU1Q,WAAa,KACvB0Q,EAAUC,MAAQ,KAAKtO,gBAAe,EAE1C,KAAO,CACL,GACEmP,IAAsB,MACtB7a,GAA2B,KAAK3M,MAAMvZ,IAAI,EAG1CigC,EAAUa,SAAW,KAAKlP,gBAAgB,EAAI,EAC9CqO,EAAU1Q,WAAawR,MAClB,CACL,GAAIL,EAEF,MAAM,KAAKhoB,MAAM7I,EAAO1M,sBAAuB88B,EAAW,CACxD78B,WAAYy9B,EAAWtzB,KACzB,CAAC,EAGH0yB,EAAUa,SAAWD,EACrBZ,EAAU1Q,WAAa,IACzB,CAEI,KAAKkD,cAAa,EAAO,EAC3BwN,EAAUC,MAAQ,KAAKtO,gBAAe,GAEtCzZ,EAAY,GACZ8nB,EAAUC,MAAQ,KAAK3lB,gBAAgB0lB,EAAUa,QAAQ,EAE7D,CAEA,IAAMI,EAAwB5R,GAAkB2Q,CAAS,EAEzD,OAAIU,GAAsBO,GACxB,KAAKxoB,MAAMkT,GAAW0B,oCAAqC2S,CAAS,GAGlEU,GAAsBO,IACxB,KAAKpM,kBACHmL,EAAUC,MAAMl6B,KAChBi6B,EAAUC,MAAM3xB,IAAI5Q,MACF,EACpB,EAGEwa,GAAa,CAACwoB,GAAsB,CAACO,GACvC,KAAKC,kBACHlB,EAAUC,MAAMl6B,KAChBi6B,EAAU1xB,IAAI5Q,MACd,GACA,EACF,EAGK,KAAKwiC,sBAAsBF,EAAW,iBAAiB,CAChE,CAEAmB,kBAA8B,CAC5B,OAAQ,KAAK7nB,MAAMvZ,OACjB,GAES,KAAK4xB,gBAA8B,EAAI,EAEvC,MAAMwP,iBAAgB,CAEnC,CAGAC,oBACEthC,EACAsW,EACM,CAEN,IAAMjW,EAAOL,EAAKK,KACdA,IAAS,OAASA,IAAS,OAAS,KAAKoxB,MAAK,EAAM,IACtDzxB,EAAK2W,eAAiB,KAAKqb,kCAAiC,GAE9D,MAAMsP,oBAAoBthC,EAAMsW,CAAa,CAC/C,CAGAirB,WACEC,EACAnhC,EACM,CACN,MAAMkhC,WAAWC,EAAMnhC,CAAI,EACvB,KAAKoxB,MAAK,EAAS,IACrB+P,EAAKzrB,GAAGsc,eAAiB,KAAKsB,wBAAuB,EACrD,KAAKjZ,iBAAiB8mB,EAAKzrB,EAAE,EAEjC,CAGA0rB,kCACEzhC,EACA0hC,EAC2B,CAC3B,GAAI,KAAKjQ,MAAK,EAAS,EAAG,CACxB,IAAM2E,EAAwB,KAAK5c,MAAM6c,mBACzC,KAAK7c,MAAM6c,mBAAqB,GAChCr2B,EAAKoyB,WAAa,KAAKuB,wBAAuB,EAC9C,KAAKna,MAAM6c,mBAAqBD,CAClC,CAEA,OAAO,MAAMqL,kCAAkCzhC,EAAM0hC,CAAI,CAC3D,CAGAC,uBAAiC,CAC/B,OAAO,KAAKlQ,MAAc,EAAA,GAAK,MAAMkQ,sBAAqB,CAC5D,CAYAhG,iBACE7jB,EACA8pB,EACc,CAAA,IAAAC,EACd,IAAIroB,EAAQ,KAERsoB,EAEJ,GACE,KAAKrqB,UAAU,KAAK,IACnB,KAAKga,MAAoB,GAAA,GAAK,KAAKA,MAAW,EAAA,GAC/C,CAUA,GATAjY,EAAQ,KAAKA,MAAMyhB,MAAK,EAExB6G,EAAM,KAAKC,SACT,IAAM,MAAMpG,iBAAiB7jB,EAAqB8pB,CAAc,EAChEpoB,CACF,EAII,CAACsoB,EAAIpzB,MAAO,OAAOozB,EAAI9hC,KAK3B,GAAM,CAAEqnB,QAAAA,GAAY,KAAK7N,MACnBwoB,EAAiB3a,EAAQA,EAAQzN,OAAS,CAAC,GAC7CooB,IAAmBza,GAAGvM,QAAUgnB,IAAmBza,GAAGrM,SACxDmM,EAAQC,IAAG,CAEf,CAEA,IAAIua,EAAAC,IAAG,MAAHD,EAAKnzB,OAAS,KAAK+iB,MAAK,EAAM,EAAG,CAAA,IAAAwQ,EAAAC,EACnC1oB,EAAQA,GAAS,KAAKA,MAAMyhB,MAAK,EAEjC,IAAItkB,EAEE6H,EAAQ,KAAKujB,SAAUI,GAAuB,CAAA,IAAAC,EAClDzrB,EAAiB,KAAKqb,kCAAiC,EAEvD,IAAMqQ,EAAkB,KAAKnI,iCAC3BvjB,EACA,IAAM,CACJ,IAAM4D,EAAS,MAAMohB,iBACnB7jB,EACA8pB,CACF,EAEA,YAAKhrB,2BAA2B2D,EAAQ5D,CAAc,EAE/C4D,CACT,CACF,GAIA6nB,EAAIC,EAAgBvuB,QAAK,MAArBsuB,EAAuBntB,eAAektB,EAAK,EAK/C,IAAM5H,EAAO,KAAK+H,8BAA8BD,CAAe,EAE/D,OAAI9H,EAAKt6B,OAAS,2BAA2BkiC,EAAK,EAElD5H,EAAK5jB,eAAiBA,EACtB,KAAKC,2BAA2B2jB,EAAM5jB,CAAc,EAE7C0rB,CACR,EAAE7oB,CAAK,EAEJ6oB,EAIO,KAEX,GACE7jB,EAAMxe,MACN,KAAKsiC,8BAA8B9jB,EAAMxe,IAAI,EAAEC,OAC7C,0BACF,CACA,GAAI,CAACue,EAAM9P,OAAS,CAAC8P,EAAM+jB,QAGzB,OAAI/jB,EAAMxe,KAAKwiC,OAEb,KAAK7pB,MACHkT,GAAWmD,gDACXrY,CACF,EAEK6H,EAAMxe,KAIfqiC,EAAkB7jB,EAAMxe,IAC1B,CAQA,IAAAiiC,EAAIH,IAAG,MAAHG,EAAKjiC,KAEP,YAAKwZ,MAAQsoB,EAAIW,UACVX,EAAI9hC,KAGb,GAAIqiC,EAEF,YAAK7oB,MAAQgF,EAAMikB,UACZJ,EAGT,MAAAH,EAAIJ,IAAAI,MAAAA,EAAKQ,OAAcZ,EAAIpzB,MACvB8P,EAAMkkB,OAAclkB,EAAM9P,MAGxB,KAAKiK,MACTkT,GAAWkD,kCACXpY,CACF,CACF,CAEA,OAAO,MAAMglB,iBAAiB7jB,EAAqB8pB,CAAc,CACnE,CAGAe,WACE3iC,EACsD,CACtD,GAAI,KAAKyxB,MAAK,EAAS,EAAG,CAExB,IAAMlX,EAAS,KAAKwnB,SAA2B,IAAM,CACnD,IAAM3L,EAAwB,KAAK5c,MAAM6c,mBACzC,KAAK7c,MAAM6c,mBAAqB,GAEhC,IAAMvE,EAAW,KAAKpb,UAAS,EAE/B,OACEob,EAASO,eAETryB,EAAKwxB,SAAS,EACZ,KAAKD,qCAAoC,EAE7C,KAAK/X,MAAM6c,mBAAqBD,EAE5B,KAAKkD,mBAAkB,GAAI,KAAKt0B,WAAU,EACzC,KAAKysB,MAAK,EAAS,GAAG,KAAKzsB,WAAU,EAEnC8sB,CACT,CAAC,EAED,GAAIvX,EAAOmoB,OAAQ,OAAO,KAGtBnoB,EAAO7L,QAAO,KAAK8K,MAAQe,EAAOkoB,WAItCziC,EAAKoyB,WAAa7X,EAAOva,KAAKqyB,eAC1B,KAAKrb,WAAWuD,EAAOva,KAAM,gBAAgB,EAC7C,IACN,CAEA,OAAO,MAAM2iC,WAAW3iC,CAAI,CAC9B,CAEA4iC,iBAAiB9tB,EAAgC,CAC/C,OAAO,KAAK2c,MAAc,EAAA,GAAK,MAAMmR,iBAAiB9tB,CAAM,CAC9D,CAEA+tB,2BACE7iC,EACA8U,EAGM,CAEJ,KAAK0E,MAAMoiB,0BAA0BW,SACnC,KAAKC,kBAAkBx8B,EAAKpC,KAAK,CACnC,EAEAoC,EAAK8U,OAASA,EAEd,MAAM+tB,2BAA2B7iC,EAAM8U,CAAM,CAEjD,CAEAwnB,YACEt8B,EACA8iC,EACAC,EACAC,EAA6B,GACvB,CACN,GACED,EAAAA,GACA,KAAKvpB,MAAMoiB,0BAA0BW,SACnC,KAAKC,kBAAkBx8B,EAAKpC,KAAK,CACnC,GAMF,SAASmqB,EAAI,EAAGA,EAAI/nB,EAAK8U,OAAO8E,OAAQmO,IAClC,KAAKqX,YAAYp/B,EAAK8U,OAAOiT,CAAC,CAAC,GAAKA,EAAI,GAC1C,KAAKpP,MAAMkT,GAAWwC,qBAAsBruB,EAAK8U,OAAOiT,CAAC,CAAC,EAI9D,MAAMuU,YACJt8B,EACA8iC,EACAC,EACAC,CACF,EACF,CAEAC,mCAAmCC,EAAmC,CACpE,OAAO,MAAMD,mCACXC,GACE,CAAC,KAAK1pB,MAAM2hB,UAAUoB,SACpB,KAAK4G,kBAAkB,KAAK3pB,MAAM5b,KAAK,CACzC,CACJ,CACF,CAEAwlC,gBACEnpB,EACArC,EACAyrB,EACc,CACd,GACEppB,EAAKha,OAAS,cACdga,EAAKhU,OAAS,SACd,KAAKuT,MAAM2hB,UAAUoB,SAAS3kB,EAASna,KAAK,EAC5C,CACA,KAAK0rB,KAAI,EAET,IAAMnpB,EAAO,KAAKi3B,YAA8Brf,CAAQ,EACxD5X,EAAK+Y,OAASkB,EACdja,EAAKiZ,UAAY,MAAMqqB,6BAA4B,EACnDrpB,EAAO,KAAKjD,WAAWhX,EAAM,gBAAgB,CAC9C,SACCia,EAAKha,OAAS,cACdga,EAAKhU,OAAS,SACd,KAAKwrB,MAAK,EAAM,EAChB,CACA,IAAMjY,EAAQ,KAAKA,MAAMyhB,MAAK,EACxBzc,EAAQ,KAAKujB,SACjBI,GAAS,KAAKoB,kCAAkC3rB,CAAQ,GAAKuqB,EAAO,EACpE3oB,CACF,EAIA,GAAI,CAACgF,EAAM9P,OAAS,CAAC8P,EAAM+jB,QAAS,OAAO/jB,EAAMxe,KAEjD,IAAMua,EAAS,KAAKwnB,SAClB,IAAM,MAAMqB,gBAAgBnpB,EAAMrC,EAAUyrB,CAAO,EACnD7pB,CACF,EAEA,GAAIe,EAAOva,MAAQ,CAACua,EAAO7L,MAAO,OAAO6L,EAAOva,KAEhD,GAAIwe,EAAMxe,KACR,YAAKwZ,MAAQgF,EAAMikB,UAEZjkB,EAAMxe,KAGf,GAAIua,EAAOva,KACT,YAAKwZ,MAAQe,EAAOkoB,UACbloB,EAAOva,KAGhB,MAAMwe,EAAM9P,OAAS6L,EAAO7L,KAC9B,CAEA,OAAO,MAAM00B,gBAAgBnpB,EAAMrC,EAAUyrB,CAAO,CACtD,CAEAG,eACEvpB,EAEArC,EACAyrB,EACAI,EACc,CACd,GAAI,KAAKhS,MAAoB,EAAA,GAAK,KAAKiS,oBAAmB,EAAI,CAE5D,GADAD,EAAevpB,oBAAsB,GACjCmpB,EACFI,OAAAA,EAAeE,KAAO,GACf1pB,EAET,KAAKkP,KAAI,EACT,IAAMnpB,EAAO,KAAKi3B,YAAsCrf,CAAQ,EAChE5X,OAAAA,EAAK+Y,OAASkB,EACdja,EAAK4jC,cACH,KAAK1N,gDAA+C,EACtD,KAAKlF,OAAM,EAAU,EACrBhxB,EAAKiZ,UAAY,KAAKqqB,6BAA4B,EAClDtjC,EAAK8Y,SAAW,GACT,KAAKF,qBAAqB5Y,EAAqB,EAAI,CAC3D,SACC,CAACqjC,GACD,KAAKhT,iBAAkB,IACtB,KAAKoB,MAAW,EAAA,GAEf,KAAKA,MAAK,EAAa,GACzB,CACA,IAAMzxB,EAAO,KAAKi3B,YAEhBrf,CAAQ,EACV5X,EAAK+Y,OAASkB,EAEd,IAAMM,EAAS,KAAKwnB,SAAS,KAC3B/hC,EAAK4jC,cACH,KAAKrN,6CAA4C,EACnD,KAAKvF,OAAM,EAAU,EACrBhxB,EAAKiZ,UAAY,MAAMqqB,6BAA4B,EAC/CG,EAAevpB,sBAChBla,EAA0C8Y,SAAW,IAEjD,KAAKF,qBACV5Y,EACAyjC,EAAevpB,mBACjB,EACD,EAED,GAAIK,EAAOva,KACT,OAAIua,EAAO7L,QAAO,KAAK8K,MAAQe,EAAOkoB,WAC/BloB,EAAOva,IAElB,CAEA,OAAO,MAAMwjC,eACXvpB,EAEArC,EACAyrB,EACAI,CACF,CACF,CAEAI,eAAe7jC,EAA6B,CAC1C,MAAM6jC,eAAe7jC,CAAI,EAEzB,IAAI8jC,EAAQ,KACR,KAAKzT,iBAAkB,GAAI,KAAKoB,MAAW,EAAA,IAC7CqS,EAAQ,KAAK/B,SAAS,IACpB,KAAKxL,6CAA4C,CACnD,EAAEv2B,MAEJA,EAAK4jC,cAAgBE,CACvB,CAEAP,kCACE3rB,EAC8C,CAC9C,IAAM5X,EAAO,KAAKi3B,YAAuCrf,CAAQ,EAEjE,GADA,KAAK0pB,oBAAoBthC,EAAM,EAAK,EAChC,EAAC,KAAK2iC,WAAW3iC,CAAI,EACzB,OAAO,MAAM+jC,qBACX/jC,EACamQ,OACC,EAChB,CACF,CAEA6zB,sBAAsB7lC,EAAoB,CACxC,IAAMgrB,EAAO,KAAK8U,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,EACrD,GACEzQ,IAA2B,IAC3BgrB,IAAI,IACJ,KAAK3P,MAAMyqB,eACX,CACA,KAAKzqB,MAAMyqB,eAAiB,GAC5B,KAAKzqB,MAAM5K,KAAO,EAClB,KAAKs1B,UAAS,EACd,MACF,CAEA,MAAMF,sBAAsB7lC,CAAI,CAClC,CAEAgmC,mBAAmBhmC,EAAoB,CACrC,IAAMgrB,EAAO,KAAK8U,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,EACrD,GACEzQ,IAAI,KACJgrB,IAAI,IACJ,CAEA,KAAKgV,SAAuB,EAAA,CAAC,EAC7B,MACF,CAEA,MAAMgG,mBAAmBhmC,CAAI,CAC/B,CAEAimC,cAAcnyB,EAAcoyB,EAA4B,CACtD,IAAMC,EAAW,MAAMF,cAAcnyB,EAAMoyB,CAAO,EAClD,OAAI,KAAK7qB,MAAMyqB,gBACb,KAAKtrB,MACHkT,GAAWuD,wBACX,KAAK5V,MAAMukB,YAAW,CACxB,EAEKuG,CACT,CAEAC,kBAA+C,CAC7C,GAAI,KAAK9sB,UAAU,cAAc,GAAK,KAAK+sB,gBAAe,EAAI,CAC5D,GAAI,KAAKhrB,MAAMyqB,eACb,MAAM,KAAKtrB,MAAMkT,GAAWiC,kBAAmB,KAAKtU,MAAM5B,QAAQ,EAEpE,KAAK6sB,yBAAwB,EAC7B,IAAMC,EAAc,KAAKF,gBAAe,EACpCE,IACF,KAAKlrB,MAAM5K,KAAO81B,EAClB,KAAKlrB,MAAMyqB,eAAiB,IAE9B,MACF,CAEA,OAAO,MAAMM,iBAAiB,KAAK/qB,MAAMyqB,eAAiB,MAAQ,IAAI,CACxE,CAEAO,iBAAkC,CAChC,GAAM,CAAE51B,IAAAA,GAAQ,KAAK4K,MACjBmrB,EAA4B,EAChC,KACE,CAAgC,GAAA,CAAA,EAACpI,SAE/B,KAAK0B,MAAMC,WAAWtvB,EAAM+1B,CAAyB,CACvD,GAEAA,IAGF,IAAMC,EAAM,KAAK3G,MAAMC,WAAWyG,EAA4B/1B,CAAG,EAC3Di2B,EAAM,KAAK5G,MAAMC,WAAWyG,EAA4B/1B,EAAM,CAAC,EAErE,OAAIg2B,IAAG,IAAwBC,IAAG,GACzBF,EAA4B,EAGnC,KAAK1G,MAAM6G,MACTH,EAA4B/1B,EAC5B+1B,EAA4B/1B,EAAM,EACpC,IAAM,eAEC+1B,EAA4B,GAEjCC,IAAG,IAAwBC,IAAG,GACzBF,EAEF,EACT,CAEAF,0BAAiC,CAE/B,GADY,KAAKxG,MAAM8G,QAAQ,KAAM,KAAKvrB,MAAM5K,GAAG,IACvC,GACV,MAAM,KAAK+J,MAAM7I,EAAOrF,oBAAqB,KAAK+O,MAAMukB,YAAW,CAAE,CAEzE,CAIAiH,yCACEx2B,EACA,CACE+d,SAAAA,EACAD,WAAAA,CAIF,EACM,CACN,KAAK3T,MAAMkT,GAAWQ,gCAAiC7d,EAAK,CAC1D8d,WAAAA,EACAC,SAAAA,CACF,CAAC,CACH,CAEA0Y,sCACEz2B,EACA02B,EACA,CACA,OAAO,KAAKvsB,MACTusB,EAAYpY,aAEToY,EAAYpY,eAAiB,SAC3BjB,GAAWkB,uCACXlB,GAAWgB,wCAHbhB,GAAWmB,wCAIfxe,EACA02B,CACF,CACF,CAEAC,wCACE32B,EACAC,EAIM,CACN,KAAKkK,MAAMkT,GAAWsB,+BAAgC3e,EAAKC,CAAO,CACpE,CAEA22B,mDACEplC,EACAyO,EAGM,CACN,KAAKkK,MACHkT,GAAWuB,0CACXptB,EACAyO,CACF,CACF,CAEA42B,oBAAqC,CACnC,IAAMztB,EAAW,KAAK4B,MAAM5B,SACtB0tB,EAAYA,IAAM,KAAK7T,MAAc,EAAA,GAAK,KAAKA,MAAK,CAAU,EACpE,OAAQ,KAAKjY,MAAMvZ,KAAI,CACrB,IAAA,KAAa,CACX,IAAMslC,EAAU,KAAKtyB,oBAAoB,KAAKuG,MAAMhM,KAAK,EACzD,OAAI83B,EAAS,EACJ,CAAErlC,KAAM,SAAUuO,IAAK+2B,EAAQ/2B,IAAI5Q,MAAO4P,MAAO+3B,GAEnD,CAAEtlC,KAAM,UAAWuO,IAAKoJ,EACjC,CACA,IAAA,KAAgB,CACd,IAAM2tB,EAAU,KAAKvyB,mBAAmB,KAAKwG,MAAMhM,KAAK,EACxD,OAAI83B,EAAS,EACJ,CAAErlC,KAAM,SAAUuO,IAAK+2B,EAAQ/2B,IAAI5Q,MAAO4P,MAAO+3B,GAEnD,CAAEtlC,KAAM,UAAWuO,IAAKoJ,EACjC,CACA,IAAA,IACA,IAAA,IAAgB,CACd,IAAM2tB,EAAU,KAAKpyB,oBAAoB,KAAKse,MAAc,EAAA,CAAC,EAC7D,OAAI6T,EAAS,EACJ,CACLrlC,KAAM,UACNuO,IAAK+2B,EAAQ/2B,IAAI5Q,MACjB4P,MAAO+3B,GAGJ,CAAEtlC,KAAM,UAAWuO,IAAKoJ,EACjC,CACA,QACE,MAAO,CAAE3X,KAAM,UAAWuO,IAAKoJ,EACnC,CACF,CAEA4tB,mBAGE,CACA,IAAMh3B,EAAM,KAAKgL,MAAM5B,SACjB7B,EAAK,KAAK8b,gBAAgB,EAAI,EAC9B4T,EAAO,KAAKpU,IAAG,EAAM,EACvB,KAAKgU,mBAAkB,EACvB,CAAEplC,KAAM,OAAiBuO,IAAAA,GAC7B,MAAO,CAAEuH,GAAAA,EAAI0vB,KAAAA,EACf,CAEAC,kCACEl3B,EACA6Y,EACAse,EACM,CACN,GAAM,CAAE7Y,aAAAA,CAAc,EAAGzF,EACrByF,IAAiB,MAGjBA,IAAiB6Y,GACnB,KAAKV,sCAAsCz2B,EAAK6Y,CAAO,CAE3D,CAEAue,gBAAgB,CACdrZ,SAAAA,EACAO,aAAAA,CAIF,EAoBE,CACA,IAAM+Y,EAAY,IAAIv5B,IAChBw5B,EAAU,CAEdC,eAAgB,CAAA,EAEhBC,cAAe,CAAA,EAEfC,cAAe,CAAA,EAEfC,iBAAkB,CAAA,GAEhBC,EAAoB,GACxB,KAAO,CAAC,KAAK1U,MAAK,CAAU,GAAG,CAC7B,GAAI,KAAKJ,IAAG,EAAY,EAAG,CACzB8U,EAAoB,GACpB,KACF,CACA,IAAMC,EAAa,KAAK1vB,UAAS,EAC3B,CAAEX,GAAAA,EAAI0vB,KAAAA,CAAK,EAAI,KAAKD,kBAAiB,EACrClZ,EAAavW,EAAG9P,KACtB,GAAIqmB,IAAe,GACjB,SAEE,SAASrE,KAAKqE,CAAU,GAC1B,KAAK3T,MAAMkT,GAAWoB,sBAAuBlX,EAAI,CAC/CuW,WAAAA,EACAY,WAAYZ,EAAW,CAAC,EAAE+Z,YAAW,EAAK/Z,EAAWwY,MAAM,CAAC,EAC5DvY,SAAAA,CACF,CAAC,EAECsZ,EAAUhd,IAAIyD,CAAU,GAC1B,KAAK3T,MAAMkT,GAAWW,wBAAyBzW,EAAI,CACjDuW,WAAAA,EACAC,SAAAA,CACF,CAAC,EAEHsZ,EAAUla,IAAIW,CAAU,EACxB,IAAMjF,EAAU,CAAEkF,SAAAA,EAAUO,aAAAA,EAAcR,WAAAA,GAE1C,OADA8Z,EAAWrwB,GAAKA,EACR0vB,EAAKxlC,KAAI,CACf,IAAK,UAAW,CACd,KAAKylC,kCACHD,EAAKj3B,IACL6Y,EACA,SACF,EACA+e,EAAWX,KAAOA,EAAKj4B,MACvBs4B,EAAQC,eAAejpB,KACrB,KAAK9F,WAAWovB,EAAY,mBAAmB,CACjD,EACA,KACF,CACA,IAAK,SAAU,CACb,KAAKV,kCAAkCD,EAAKj3B,IAAK6Y,EAAS,QAAQ,EAClE+e,EAAWX,KAAOA,EAAKj4B,MACvBs4B,EAAQE,cAAclpB,KACpB,KAAK9F,WAAWovB,EAAY,kBAAkB,CAChD,EACA,KACF,CACA,IAAK,SAAU,CACb,KAAKV,kCAAkCD,EAAKj3B,IAAK6Y,EAAS,QAAQ,EAClE+e,EAAWX,KAAOA,EAAKj4B,MACvBs4B,EAAQG,cAAcnpB,KACpB,KAAK9F,WAAWovB,EAAY,kBAAkB,CAChD,EACA,KACF,CACA,IAAK,UACH,MAAM,KAAKnB,sCAAsCQ,EAAKj3B,IAAK6Y,CAAO,EAEpE,IAAK,OACH,OAAQyF,EAAY,CAClB,IAAK,UACH,KAAKkY,yCACHS,EAAKj3B,IACL6Y,CACF,EACA,MACF,IAAK,SACH,KAAK8d,wCAAwCM,EAAKj3B,IAAK6Y,CAAO,EAC9D,MACF,QACEye,EAAQI,iBAAiBppB,KACvB,KAAK9F,WAAWovB,EAAY,qBAAqB,CACnD,CACJ,CAEJ,CAEK,KAAK3U,MAAK,CAAU,GACvB,KAAKT,OAAM,EAAS,CAExB,CACA,MAAO,CAAE8U,QAAAA,EAASK,kBAAAA,EACpB,CAEAG,sBACEC,EACAL,EACA,CACE3Z,SAAAA,CAGF,EACe,CACf,GAAIga,EAAmB3sB,SAAW,EAChC,OAAOssB,EACF,GAAIA,EAAiBtsB,SAAW,EACrC,OAAO2sB,EACF,GAAIL,EAAiBtsB,OAAS2sB,EAAmB3sB,OAAQ,CAC9D,QAAW6jB,KAAU8I,EACnB,KAAKnB,mDAAmD3H,EAAQ,CAC9DlR,SAAAA,CACF,CAAC,EAEH,OAAO2Z,CACT,KAAO,CACL,QAAWzI,KAAUyI,EACnB,KAAKd,mDAAmD3H,EAAQ,CAC9DlR,SAAAA,CACF,CAAC,EAEH,OAAOga,CACT,CACF,CAEAC,0BAA0B,CACxBja,SAAAA,CAGF,EAAqB,CACnB,GAAI,CAAC,KAAKmG,cAAa,GAAO,EAAG,OAAO,KAExC,GAAI,CAACzM,GAAkB,KAAKzM,MAAMvZ,IAAI,EACpC,MAAM,KAAK0Y,MACTkT,GAAWe,uCACX,KAAKpT,MAAM5B,SACX,CACE2U,SAAAA,CACF,CACF,EAGF,GAAM,CAAE/e,MAAAA,GAAU,KAAKgM,MACvB,YAAK2P,KAAI,EAGP3b,IAAU,WACVA,IAAU,UACVA,IAAU,UACVA,IAAU,UAEV,KAAKmL,MAAMkT,GAAWa,wBAAyB,KAAKlT,MAAM5B,SAAU,CAClE2U,SAAAA,EACAI,gBAAiBnf,CACnB,CAAC,EAGIA,CACT,CAEAi5B,aAAazmC,EAA8B+V,EAA0B,CACnE,IAAMwW,EAAWxW,EAAG9P,KACdygC,EAAU3wB,EAAGvH,IAAI5Q,MACjBkvB,EAAe,KAAK0Z,0BAA0B,CAAEja,SAAAA,CAAS,CAAC,EAChE,KAAKyE,OAAM,CAAU,EACrB,GAAM,CAAE8U,QAAAA,EAASK,kBAAAA,CAAkB,EAAI,KAAKP,gBAAgB,CAC1DrZ,SAAAA,EACAO,aAAAA,CACF,CAAC,EAGD,OAFA9sB,EAAKmmC,kBAAoBA,EAEjBrZ,EAAY,CAClB,IAAK,UACH9sB,OAAAA,EAAK8sB,aAAe,GACpB9sB,EAAK8lC,QAAUA,EAAQC,eACvB,KAAK/U,OAAM,CAAU,EACd,KAAKha,WAAWhX,EAAM,iBAAiB,EAChD,IAAK,SACHA,OAAAA,EAAK8sB,aAAe,GACpB9sB,EAAK8lC,QAAUA,EAAQE,cACvB,KAAKhV,OAAM,CAAU,EACd,KAAKha,WAAWhX,EAAM,gBAAgB,EAC/C,IAAK,SACHA,OAAAA,EAAK8sB,aAAe,GACpB9sB,EAAK8lC,QAAU,KAAKQ,sBAClBR,EAAQG,cACRH,EAAQI,iBACR,CAAE3Z,SAAAA,CAAS,CACb,EACA,KAAKyE,OAAM,CAAU,EACd,KAAKha,WAAWhX,EAAM,gBAAgB,EAC/C,IAAK,SACHA,OAAAA,EAAK8lC,QAAUA,EAAQI,iBACvB,KAAKlV,OAAM,CAAU,EACd,KAAKha,WAAWhX,EAAM,gBAAgB,EAC/C,QAAS,CAEP,IAAM2mC,EAAQA,KACZ3mC,EAAK8lC,QAAU,CAAA,EACf,KAAK9U,OAAM,CAAU,EACd,KAAKha,WAAWhX,EAAM,gBAAgB,GAE/CA,EAAK8sB,aAAe,GAEpB,IAAM8Z,EAAWd,EAAQC,eAAensB,OAClCitB,EAAUf,EAAQE,cAAcpsB,OAChCktB,EAAUhB,EAAQG,cAAcrsB,OAChCmtB,EAAejB,EAAQI,iBAAiBtsB,OAE9C,GAAI,CAACgtB,GAAY,CAACC,GAAW,CAACC,GAAW,CAACC,EACxC,OAAOJ,EAAK,EACP,GAAI,CAACC,GAAY,CAACC,EACvB7mC,OAAAA,EAAK8lC,QAAU,KAAKQ,sBAClBR,EAAQG,cACRH,EAAQI,iBACR,CAAE3Z,SAAAA,CAAS,CACb,EACA,KAAKyE,OAAM,CAAU,EACd,KAAKha,WAAWhX,EAAM,gBAAgB,EACxC,GAAI,CAAC6mC,GAAW,CAACC,GAAWF,GAAYG,EAAc,CAC3D,QAAWtJ,KAAUqI,EAAQI,iBAC3B,KAAKlB,yCAAyCvH,EAAOjvB,IAAI5Q,MAAO,CAC9D2uB,SAAAA,EACAD,WAAYmR,EAAO1nB,GAAG9P,IACxB,CAAC,EAEHjG,OAAAA,EAAK8lC,QAAUA,EAAQC,eACvB,KAAK/U,OAAM,CAAU,EACd,KAAKha,WAAWhX,EAAM,iBAAiB,CAC/C,SAAU,CAAC4mC,GAAY,CAACE,GAAWD,GAAWE,EAAc,CAC3D,QAAWtJ,KAAUqI,EAAQI,iBAC3B,KAAKf,wCAAwC1H,EAAOjvB,IAAI5Q,MAAO,CAC7D2uB,SAAAA,EACAD,WAAYmR,EAAO1nB,GAAG9P,IACxB,CAAC,EAEHjG,OAAAA,EAAK8lC,QAAUA,EAAQE,cACvB,KAAKhV,OAAM,CAAU,EACd,KAAKha,WAAWhX,EAAM,gBAAgB,CAC/C,KACE,aAAK2Y,MAAMkT,GAAWY,6BAA8Bia,EAAS,CAC3Dna,SAAAA,CACF,CAAC,EACMoa,EAAK,CAEhB,CACF,CACF,CAEAtM,yBACEr6B,EACuB,CACvB,IAAM+V,EAAK,KAAK8b,gBAAe,EAC/B7xB,OAAAA,EAAK+V,GAAKA,EACV/V,EAAKyV,KAAO,KAAKgxB,aAAa,KAAK/vB,UAAS,EAAIX,CAAE,EAC3C,KAAKiB,WAAWhX,EAAM,iBAAiB,CAChD,CAEAgnC,gCACEhnC,EACqB,CACrB,OAAI,KAAKqwB,iBAAgB,IACnB,KAAKoB,MAAW,EAAA,GAAK,KAAKA,MAAkB,EAAA,KAC9CzxB,EAAK4jC,cACH,KAAK1N,gDAA+C,GAInD,MAAM8Q,gCAAgChnC,CAAI,CACnD,CAGA0jC,qBAA+B,CAC7B,IAAMva,EAAO,KAAK8d,eAAc,EAChC,GAAI,KAAKhJ,MAAMC,WAAW/U,CAAI,IAAC,GAAyB,CACtD,IAAM+d,EAAY,KAAKjJ,MAAMC,WAAW/U,EAAO,CAAC,EAChD,OACE+d,IAAS,IAA2BA,IAAgC,EAExE,CACA,MAAO,EACT,CAGA5Q,cAAe,CACb,GAAM,CAAEr2B,KAAAA,GAAS,KAAKuZ,MAClBvZ,IAAI,IACN,KAAKuZ,MAAM5K,KAAO,EAClB,KAAKu4B,aAAY,GACRlnC,IAAI,KACb,KAAKuZ,MAAM5K,KAAO,EAClB,KAAKw4B,aAAY,EAErB,CAEAjR,WAAY,CACV,GAAM,CAAEl2B,KAAAA,GAAS,KAAKuZ,MACtB,OAAIvZ,IAAI,IACN,KAAKuZ,MAAM5K,KAAO,EAClB,KAAKuvB,SAAgB,GAAA,CAAC,EACtB,IAEKl+B,CACT,CAEAqiC,8BAA8BtiC,EAAc,CAC1C,OAAOA,EAAKC,OAAS,qBAAuBD,EAAKwT,WAAaxT,CAChE,CACF,ECtzHIqnC,GAAuC,CAC3CC,UAAW,KACXC,KAAM,IACNC,IAAK,IACLC,KAAM,IACNvnB,GAAI,IACJC,GAAI,IACJunB,KAAM,OACNC,MAAO,OACPC,KAAM,OACNC,MAAO,OACPC,OAAQ,OACRC,IAAK,OACLC,OAAQ,OACRC,KAAM,OACNC,IAAK,OACLC,KAAM,OACNC,KAAM,OACNC,MAAO,OACPC,IAAK,OACLC,IAAK,OACLC,IAAK,OACLC,KAAM,OACNC,IAAK,OACLC,OAAQ,OACRC,KAAM,OACNC,KAAM,OACNC,MAAO,OACPC,MAAO,OACPC,KAAM,OACNC,OAAQ,OACRC,MAAO,OACPC,KAAM,OACNC,KAAM,OACNC,MAAO,OACPC,OAAQ,OACRC,OAAQ,OACRC,OAAQ,OACRC,OAAQ,OACRC,OAAQ,OACRC,OAAQ,OACRC,MAAO,OACPC,OAAQ,OACRC,KAAM,OACNC,MAAO,OACPC,MAAO,OACPC,OAAQ,OACRC,OAAQ,OACRC,OAAQ,OACRC,MAAO,OACPC,KAAM,OACNC,OAAQ,OACRC,OAAQ,OACRC,MAAO,OACPC,KAAM,OACNC,IAAK,OACLC,OAAQ,OACRC,OAAQ,OACRC,OAAQ,OACRC,MAAO,OACPC,OAAQ,OACRC,KAAM,OACNC,MAAO,OACPC,OAAQ,OACRC,OAAQ,OACRC,OAAQ,OACRC,MAAO,OACPC,KAAM,OACNC,OAAQ,OACRC,MAAO,OACPC,MAAO,OACPC,OAAQ,OACRC,OAAQ,OACRC,MAAO,OACPC,OAAQ,OACRC,KAAM,OACNC,MAAO,OACPC,MAAO,OACPC,OAAQ,OACRC,OAAQ,OACRC,OAAQ,OACRC,MAAO,OACPC,KAAM,OACNC,OAAQ,OACRC,OAAQ,OACRC,MAAO,OACPC,KAAM,OACNC,IAAK,OACLC,OAAQ,OACRC,OAAQ,OACRC,OAAQ,OACRC,MAAO,OACPC,OAAQ,OACRC,KAAM,OACNC,OAAQ,OACRC,OAAQ,OACRC,OAAQ,OACRC,OAAQ,OACRC,MAAO,OACPC,KAAM,OACNC,OAAQ,OACRC,MAAO,OACPC,KAAM,OACNC,MAAO,SACPC,MAAO,SACPC,OAAQ,SACRC,OAAQ,SACRC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNzuB,MAAO,SACP0uB,MAAO,SACPC,KAAM,SACNC,MAAO,SACPC,MAAO,SACPC,QAAS,SACTC,KAAM,SACNC,IAAK,SACLC,MAAO,SACPC,KAAM,SACNC,MAAO,SACPC,OAAQ,SACRC,GAAI,SACJC,GAAI,SACJC,GAAI,SACJC,QAAS,SACTC,GAAI,SACJC,IAAK,SACLC,MAAO,SACPC,IAAK,SACLC,QAAS,SACTC,IAAK,SACLC,IAAK,SACLC,IAAK,SACLC,MAAO,SACPC,MAAO,SACPC,KAAM,SACNC,MAAO,SACPC,MAAO,SACPC,QAAS,SACTC,KAAM,SACNC,IAAK,SACLC,MAAO,SACPC,KAAM,SACNC,MAAO,SACPC,OAAQ,SACRC,GAAI,SACJC,GAAI,SACJC,GAAI,SACJC,QAAS,SACTC,GAAI,SACJC,IAAK,SACLC,OAAQ,SACRC,MAAO,SACPC,IAAK,SACLC,QAAS,SACTC,IAAK,SACLC,IAAK,SACLC,IAAK,SACLC,MAAO,SACPC,SAAU,SACVC,MAAO,SACPC,IAAK,SACLC,KAAM,SACNC,KAAM,SACNC,OAAQ,SACRC,KAAM,SACNC,IAAK,SACLC,IAAK,SACLC,IAAK,SACLC,MAAO,SACPC,MAAO,SACPC,MAAO,SACPC,MAAO,SACPC,MAAO,SACPC,MAAO,SACPC,MAAO,SACPC,MAAO,SACPC,OAAQ,SACRC,OAAQ,SACRC,KAAM,SACNC,OAAQ,SACRC,OAAQ,SACRC,MAAO,SACPC,MAAO,SACPC,OAAQ,SACRC,OAAQ,SACRC,MAAO,SACPC,MAAO,SACPC,KAAM,SACNC,MAAO,SACPC,OAAQ,SACRC,KAAM,SACNC,MAAO,SACPC,QAAS,SACTC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,MAAO,SACPC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,OAAQ,SACRC,KAAM,SACNC,MAAO,SACPvN,MAAO,SACPwN,MAAO,SACPC,KAAM,SACNC,MAAO,SACPC,GAAI,SACJC,KAAM,SACNC,IAAK,SACLC,MAAO,SACPC,OAAQ,SACRC,MAAO,SACPh9B,KAAM,SACNi9B,MAAO,SACPC,IAAK,SACLC,IAAK,SACLC,GAAI,SACJC,IAAK,SACLC,IAAK,SACLC,IAAK,SACLC,OAAQ,SACRC,IAAK,SACLC,KAAM,SACNC,MAAO,SACPC,GAAI,SACJC,MAAO,SACPC,GAAI,SACJC,GAAI,SACJC,IAAK,SACLC,IAAK,SACLC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,MAAO,SACPC,OAAQ,SACRC,KAAM,SACNC,KAAM,SACNC,MAAO,SACPC,MAAO,SACPC,OAAQ,SACRC,OAAQ,SACRC,KAAM,SACNC,KAAM,SACNC,IAAK,SACLC,OAAQ,SACRC,MAAO,SACPC,OAAQ,SACRC,MAAO,QACT,EC3PaC,GAAY,0BACZC,GAAa,IAAIzkC,OAAOwkC,GAAU/9B,OAAQ,GAAG,EAGnD,SAASi+B,GAAU94C,EAAuB,CAC/C,OAAQA,EAAI,CACV,IAAA,IACA,IAAA,IACA,IAAA,MACA,IAAA,MACE,MAAO,GAET,QACE,MAAO,EACX,CACF,CAEO,SAAS+4C,GAAWjZ,EAAergC,EAAeC,EAAsB,CAC7E,QAASkqB,EAAInqB,EAAOmqB,EAAIlqB,EAAKkqB,IAC3B,GAAIkvB,GAAUhZ,EAAMC,WAAWnW,CAAC,CAAC,EAC/B,MAAO,GAGX,MAAO,EACT,CAEO,IAAMovB,GAAiB,gCAEjBC,GACX,iDAGK,SAASC,GAAal5C,EAAuB,CAClD,OAAQA,EAAI,CACV,IAAK,GACL,IAAK,IACL,IAAK,IACL,IAAA,IACA,IAAA,KACA,IAAA,MACA,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,OACL,IAAK,OACH,MAAO,GAET,QACE,MAAO,EACX,CACF,CC1CA,IAAMm5C,GAAYpoC,QAAoB,CACpCqoC,iBACE,+DACFC,yBAA0BA,CAAC,CAAEC,eAAAA,KAC3B,+CAA+CA,CAAc,KAC/DC,0BAA2B,iDAC3BC,6BACE,2GAEFjuC,gBAAiBA,CAAC,CAChB1E,WAAAA,EACA4yC,WAAAA,CAIF,IACE,sBAAsB5yC,CAAU,sBAAsB4yC,CAAU,aAAa5yC,CAAU,QACzF6yC,oBACE,iEACFC,uBAAwB,6BACxBC,6BACE,kGACJ,CAAC,EAID,SAASC,GAAWpmC,EAAsD,CACxE,OAAOA,EACHA,EAAO3R,OAAS,sBACd2R,EAAO3R,OAAS,qBAClB,EACN,CAIA,SAASg4C,GACPrmC,EACQ,CACR,GAAIA,EAAO3R,OAAS,gBAClB,OAAO2R,EAAO3L,KAGhB,GAAI2L,EAAO3R,OAAS,oBAClB,OAAO2R,EAAOsmC,UAAUjyC,KAAO,IAAM2L,EAAO3L,KAAKA,KAGnD,GAAI2L,EAAO3R,OAAS,sBAClB,OACEg4C,GAAoBrmC,EAAOA,MAAM,EACjC,IACAqmC,GAAoBrmC,EAAOwmB,QAAQ,EAMvC,MAAM,IAAI1mB,MAAM,6BAA+BE,EAAO3R,IAAI,CAC5D,CAeA,IAAA6hC,GAAgB/vB,GACd,cAA6BA,CAA8C,CAGzEomC,cAAqB,CACnB,IAAIlgB,EAAM,GACNmgB,EAAa,KAAK5+B,MAAM5K,IAC5B,OAAS,CACP,GAAI,KAAK4K,MAAM5K,KAAO,KAAKgL,OACzB,MAAM,KAAKjB,MACT2+B,GAAUQ,uBACV,KAAKt+B,MAAM5B,QACb,EAGF,IAAM2oB,EAAK,KAAKtC,MAAMC,WAAW,KAAK1kB,MAAM5K,GAAG,EAE/C,OAAQ2xB,EAAE,CACR,IAAA,IACA,IAAA,KACE,GAAI,KAAK/mB,MAAM5K,MAAQ,KAAK4K,MAAM5b,MAAO,CACnC2iC,IAAE,IAA2B,KAAK/mB,MAAM6+B,oBAC1C,EAAE,KAAK7+B,MAAM5K,IACb,KAAK0hB,YAAW,GAAe,GAE/B,MAAM0N,iBAAiBuC,CAAE,EAE3B,MACF,CACAtI,GAAO,KAAKgG,MAAM6G,MAAMsT,EAAY,KAAK5+B,MAAM5K,GAAG,EAClD,KAAK0hB,YAAwB2H,IAAAA,CAAG,EAChC,OAEF,IAAA,IACEA,GAAO,KAAKgG,MAAM6G,MAAMsT,EAAY,KAAK5+B,MAAM5K,GAAG,EAClDqpB,GAAO,KAAKqgB,cAAa,EACzBF,EAAa,KAAK5+B,MAAM5K,IACxB,MAaF,QACMqoC,GAAU1W,CAAE,GACdtI,GAAO,KAAKgG,MAAM6G,MAAMsT,EAAY,KAAK5+B,MAAM5K,GAAG,EAClDqpB,GAAO,KAAKsgB,eAAe,EAAI,EAC/BH,EAAa,KAAK5+B,MAAM5K,KAExB,EAAE,KAAK4K,MAAM5K,GAEnB,CACF,CACF,CAEA2pC,eAAeC,EAAgC,CAC7C,IAAMjY,EAAK,KAAKtC,MAAMC,WAAW,KAAK1kB,MAAM5K,GAAG,EAC3CqpB,EACJ,QAAE,KAAKze,MAAM5K,IAEX2xB,IAA+B,IAC/B,KAAKtC,MAAMC,WAAW,KAAK1kB,MAAM5K,GAAG,IAAC,IAErC,EAAE,KAAK4K,MAAM5K,IACbqpB,EAAMugB,EAAgB;EAAO;GAE7BvgB,EAAM9rB,OAAO+b,aAAaqY,CAAE,EAE9B,EAAE,KAAK/mB,MAAMi/B,QACb,KAAKj/B,MAAMk/B,UAAY,KAAKl/B,MAAM5K,IAE3BqpB,CACT,CAEA0gB,cAAcC,EAAqB,CACjC,IAAI3gB,EAAM,GACNmgB,EAAa,EAAE,KAAK5+B,MAAM5K,IAC9B,OAAS,CACP,GAAI,KAAK4K,MAAM5K,KAAO,KAAKgL,OACzB,MAAM,KAAKjB,MAAM7I,EAAOnF,mBAAoB,KAAK6O,MAAM5B,QAAQ,EAGjE,IAAM2oB,EAAK,KAAKtC,MAAMC,WAAW,KAAK1kB,MAAM5K,GAAG,EAC/C,GAAI2xB,IAAOqY,EAAO,MACdrY,IAAE,IACJtI,GAAO,KAAKgG,MAAM6G,MAAMsT,EAAY,KAAK5+B,MAAM5K,GAAG,EAClDqpB,GAAO,KAAKqgB,cAAa,EACzBF,EAAa,KAAK5+B,MAAM5K,KACfqoC,GAAU1W,CAAE,GACrBtI,GAAO,KAAKgG,MAAM6G,MAAMsT,EAAY,KAAK5+B,MAAM5K,GAAG,EAClDqpB,GAAO,KAAKsgB,eAAe,EAAK,EAChCH,EAAa,KAAK5+B,MAAM5K,KAExB,EAAE,KAAK4K,MAAM5K,GAEjB,CACAqpB,GAAO,KAAKgG,MAAM6G,MAAMsT,EAAY,KAAK5+B,MAAM5K,KAAK,EACpD,KAAK0hB,YAAuB2H,IAAAA,CAAG,CACjC,CAEAqgB,eAAwB,CACtB,IAAMO,EAAW,EAAE,KAAKr/B,MAAM5K,IAC9B,GAAI,KAAKkqC,eAAe,KAAKt/B,MAAM5K,GAAG,IAAC,GAA2B,CAChE,EAAE,KAAK4K,MAAM5K,IAEb,IAAIzK,EAAQ,GACR,KAAK20C,eAAe,KAAKt/B,MAAM5K,GAAG,IAAC,MACrCzK,EAAQ,GACR,EAAE,KAAKqV,MAAM5K,KAGf,IAAMmqC,EAAY,KAAKC,QACrB70C,EACUgM,OACK,GACS,MAC1B,EACA,GACE4oC,IAAc,MACd,KAAKD,eAAe,KAAKt/B,MAAM5K,GAAG,IAAC,GAEnC,QAAE,KAAK4K,MAAM5K,IACNzC,OAAOC,cAAc2sC,CAAS,CAEzC,KAAO,CACL,IAAIE,EAAQ,EACR/6B,EAAO,GACX,KACE+6B,IAAU,IACV,KAAKz/B,MAAM5K,IAAM,KAAKgL,QACtB,EAAEsE,EAAO,KAAK46B,eAAe,KAAKt/B,MAAM5K,GAAG,IAAC,KAE5C,EAAE,KAAK4K,MAAM5K,IAGf,GAAIsP,EAAM,CACR,IAAMg7B,EAAO,KAAKjb,MAAM6G,MAAM+T,EAAU,KAAKr/B,MAAM5K,GAAG,EAChDuqC,EAASC,GAAcF,CAAI,EAGjC,GAFA,EAAE,KAAK1/B,MAAM5K,IAETuqC,EACF,OAAOA,CAEX,CACF,CAGA,YAAK3/B,MAAM5K,IAAMiqC,EACV,GACT,CASAQ,aAAoB,CAClB,IAAI9Y,EACE3iC,EAAQ,KAAK4b,MAAM5K,IACzB,GACE2xB,EAAK,KAAKtC,MAAMC,WAAW,EAAE,KAAK1kB,MAAM5K,GAAG,QACpCuZ,GAAiBoY,CAAE,GAAKA,IAAqB,IACtD,KAAKjQ,YAAW,IAAa,KAAK2N,MAAM6G,MAAMlnC,EAAO,KAAK4b,MAAM5K,GAAG,CAAC,CACtE,CAIA0qC,oBAAsC,CACpC,IAAMt5C,EAAO,KAAK0W,UAAS,EAC3B,OAAI,KAAK+a,MAAK,GAAW,EACvBzxB,EAAKiG,KAAO,KAAKuT,MAAMhM,MACdkZ,GAAe,KAAKlN,MAAMvZ,IAAI,EACvCD,EAAKiG,KAAO+gB,GAAe,KAAKxN,MAAMvZ,IAAI,EAE1C,KAAK+E,WAAU,EAEjB,KAAKmkB,KAAI,EACF,KAAKnS,WAAWhX,EAAM,eAAe,CAC9C,CAIAu5C,wBAAgE,CAC9D,IAAM3hC,EAAW,KAAK4B,MAAM5B,SACtB3R,EAAO,KAAKqzC,mBAAkB,EACpC,GAAI,CAAC,KAAKjoB,IAAG,EAAS,EAAG,OAAOprB,EAEhC,IAAMjG,EAAO,KAAKi3B,YAAiCrf,CAAQ,EAC3D5X,OAAAA,EAAKk4C,UAAYjyC,EACjBjG,EAAKiG,KAAO,KAAKqzC,mBAAkB,EAC5B,KAAKtiC,WAAWhX,EAAM,mBAAmB,CAClD,CAKAw5C,qBAG0B,CACxB,IAAM5hC,EAAW,KAAK4B,MAAM5B,SACxB5X,EACF,KAAKu5C,uBAAsB,EAC7B,GAAIv5C,EAAKC,OAAS,oBAChB,OAAOD,EAET,KAAO,KAAKqxB,IAAG,EAAO,GAAG,CACvB,IAAMqL,EAAU,KAAKzF,YAAmCrf,CAAQ,EAChE8kB,EAAQ9qB,OAAS5R,EACjB08B,EAAQtE,SAAW,KAAKkhB,mBAAkB,EAC1Ct5C,EAAO,KAAKgX,WAAW0lB,EAAS,qBAAqB,CACvD,CACA,OAAO18B,CACT,CAIAy5C,wBAGoB,CAClB,IAAIz5C,EACJ,OAAQ,KAAKwZ,MAAMvZ,KAAI,CACrB,IAAA,GACED,OAAAA,EAAO,KAAK0W,UAAS,EACrB,KAAKgjC,WAAWnyB,GAAGxM,KAAK,EACxB,KAAKoO,KAAI,EACTnpB,EAAO,KAAK25C,4BAA4B35C,EAAMunB,GAAGvM,MAAM,EACnDhb,EAAKwT,WAAWvT,OAAS,sBAC3B,KAAK0Y,MAAM2+B,GAAUC,iBAAkBv3C,CAAI,EAEtCA,EAET,IAAA,KACA,IAAA,KACE,OAAO,KAAKmzB,cAAa,EAE3B,QACE,MAAM,KAAKxa,MAAM2+B,GAAUO,oBAAqB,KAAKr+B,MAAM5B,QAAQ,CACvE,CACF,CAMAgiC,yBAAgD,CAC9C,IAAM55C,EAAO,KAAKi3B,YAAY,KAAKzd,MAAMmB,aAAa,EACtD,OAAO,KAAKlH,aAAazT,EAAM,qBAAsB,KAAKwZ,MAAM5B,QAAQ,CAC1E,CAIAiiC,oBAAoB75C,EAAkD,CACpE,YAAKmpB,KAAI,EACTnpB,EAAKwT,WAAa,KAAK8d,gBAAe,EACtC,KAAKooB,WAAWnyB,GAAGrM,MAAM,EACzB,KAAK1B,MAAM6+B,mBAAqB,GAChC,KAAKrnB,OAAM,CAAU,EAEd,KAAKha,WAAWhX,EAAM,gBAAgB,CAC/C,CAIA25C,4BACE35C,EACA85C,EAC0B,CAC1B,GAAI,KAAKroB,MAAK,CAAU,EACtBzxB,EAAKwT,WAAa,KAAKomC,wBAAuB,MACzC,CACL,IAAMpmC,EAAa,KAAK8d,gBAAe,EAcvCtxB,EAAKwT,WAAaA,CACpB,CACA,YAAKkmC,WAAWI,CAAe,EAC/B,KAAKtgC,MAAM6+B,mBAAqB,GAChC,KAAKrnB,OAAM,CAAU,EAEd,KAAKha,WAAWhX,EAAM,wBAAwB,CACvD,CAIA+5C,mBAA2D,CACzD,IAAM/5C,EAAO,KAAK0W,UAAS,EAC3B,OAAI,KAAK+a,MAAK,CAAU,GACtB,KAAKioB,WAAWnyB,GAAGxM,KAAK,EACxB,KAAKoO,KAAI,EACT,KAAK6H,OAAM,EAAY,EACvBhxB,EAAKmP,SAAW,KAAK0sB,wBAAuB,EAC5C,KAAK6d,WAAWnyB,GAAGvM,MAAM,EACzB,KAAKxB,MAAM6+B,mBAAqB,GAChC,KAAKrnB,OAAM,CAAU,EACd,KAAKha,WAAWhX,EAAM,oBAAoB,IAEnDA,EAAKiG,KAAO,KAAKszC,uBAAsB,EACvCv5C,EAAKwN,MAAQ,KAAK6jB,IAAG,EAAM,EAAI,KAAKooB,uBAAwB,EAAG,KACxD,KAAKziC,WAAWhX,EAAM,cAAc,EAC7C,CAIAg6C,yBACEpiC,EAC4C,CAC5C,IAAM5X,EAAO,KAAKi3B,YAChBrf,CACF,EACA,OAAI,KAAKyZ,IAAG,GAAa,EAChB,KAAKra,WAAWhX,EAAM,oBAAoB,GAEnDA,EAAKiG,KAAO,KAAKuzC,oBAAmB,EAC7B,KAAKxS,gCACVhnC,CACF,EACF,CAEAgnC,gCACEhnC,EACqB,CACrB,IAAMmZ,EAAwD,CAAA,EAC9D,KAAO,CAAC,KAAKsY,MAAc,EAAA,GAAK,CAAC,KAAKA,MAAK,GAAa,GACtDtY,EAAW2D,KAAK,KAAKi9B,kBAAmB,CAAA,EAE1C/5C,OAAAA,EAAKmZ,WAAaA,EAClBnZ,EAAKi6C,YAAc,KAAK5oB,IAAG,EAAS,EACpC,KAAKL,OAAM,GAAa,EACjB,KAAKha,WAAWhX,EAAM,mBAAmB,CAClD,CAIAk6C,yBACEtiC,EAC4C,CAC5C,IAAM5X,EAAO,KAAKi3B,YAChBrf,CACF,EACA,OAAI,KAAKyZ,IAAG,GAAa,EAChB,KAAKra,WAAWhX,EAAM,oBAAoB,GAEnDA,EAAKiG,KAAO,KAAKuzC,oBAAmB,EACpC,KAAKxoB,OAAM,GAAa,EACjB,KAAKha,WAAWhX,EAAM,mBAAmB,EAClD,CAKAm6C,kBAAkBviC,EAAkD,CAClE,IAAM5X,EAAO,KAAKi3B,YAA0Crf,CAAQ,EAC9DwiC,EAAW,CAAA,EACXC,EAAiB,KAAKL,yBAAyBpiC,CAAQ,EACzD0iC,EAAiB,KAErB,GAAI,CAACD,EAAeJ,YAAa,CAC/BM,EAAU,OACR,OAAQ,KAAK/gC,MAAMvZ,KAAI,CACrB,IAAA,KAGE,GAFA2X,EAAW,KAAK4B,MAAM5B,SACtB,KAAKuR,KAAI,EACL,KAAKkI,IAAG,EAAS,EAAG,CACtBipB,EAAiB,KAAKJ,yBAAyBtiC,CAAQ,EACvD,MAAM2iC,CACR,CACAH,EAASt9B,KAAK,KAAKq9B,kBAAkBviC,CAAQ,CAAC,EAC9C,MAEF,IAAA,KACEwiC,EAASt9B,KAAK,KAAK/J,aAAa,KAAKyG,MAAMhM,MAAO,SAAS,CAAC,EAC5D,MAEF,IAAA,GAAgB,CACd,IAAMxN,EAAO,KAAK0W,UAAS,EAG3B,KAAKgjC,WAAWnyB,GAAGxM,KAAK,EACxB,KAAKoO,KAAI,EACL,KAAKsI,MAAK,EAAY,EACxB2oB,EAASt9B,KAAK,KAAK+8B,oBAAoB75C,CAAI,CAAC,EAE5Co6C,EAASt9B,KACP,KAAK68B,4BAA4B35C,EAAMunB,GAAGrM,MAAM,CAClD,EAGF,KACF,CAEA,QACE,KAAKlW,WAAU,CACnB,CAIAgzC,GAAWqC,CAAc,GACzB,CAACrC,GAAWsC,CAAc,GAC1BA,IAAmB,KAEnB,KAAK3hC,MAAM2+B,GAAUI,0BAA2B4C,CAAc,EACrD,CAACtC,GAAWqC,CAAc,GAAKrC,GAAWsC,CAAc,EACjE,KAAK3hC,MAAM2+B,GAAUE,yBAA0B8C,EAAgB,CAC7D7C,eAAgBQ,GAAoBoC,EAAep0C,IAAI,CACzD,CAAC,EACQ,CAAC+xC,GAAWqC,CAAc,GAAK,CAACrC,GAAWsC,CAAc,GAEhErC,GAAoBqC,EAAer0C,IAAI,IACvCgyC,GAAoBoC,EAAep0C,IAAI,GAEvC,KAAK0S,MAAM2+B,GAAUE,yBAA0B8C,EAAgB,CAC7D7C,eAAgBQ,GAAoBoC,EAAep0C,IAAI,CACzD,CAAC,CAGP,CAUA,GARI+xC,GAAWqC,CAAc,GAC3Br6C,EAAKw6C,gBAAkBH,EACvBr6C,EAAKy6C,gBAAkBH,IAEvBt6C,EAAKq6C,eAAiBA,EACtBr6C,EAAKs6C,eAAiBA,GAExBt6C,EAAKo6C,SAAWA,EACZ,KAAK3oB,MAAK,EAAM,EAClB,MAAM,KAAK9Y,MACT2+B,GAAUS,6BACV,KAAKv+B,MAAM5B,QACb,EAGF,OAAOogC,GAAWqC,CAAc,EAC5B,KAAKrjC,WAAWhX,EAAM,aAAa,EACnC,KAAKgX,WAAWhX,EAAM,YAAY,CACxC,CAIA06C,iBAAgD,CAC9C,IAAM9iC,EAAW,KAAK4B,MAAM5B,SAC5B,YAAKuR,KAAI,EACF,KAAKgxB,kBAAkBviC,CAAQ,CACxC,CAEA8hC,WAAWiB,EAAwB,CACjC,GAAM,CAAEtzB,QAAAA,GAAY,KAAK7N,MACzB6N,EAAQA,EAAQzN,OAAS,CAAC,EAAI+gC,CAChC,CAMAxnB,cAAcrb,EAA6D,CACzE,OAAI,KAAK2Z,MAAK,GAAe,EACpB,KAAKipB,gBAAe,EAE3B,KAAKjpB,MAAW,EAAA,GAChB,KAAKwM,MAAMC,WAAW,KAAK1kB,MAAM5K,GAAG,IAAC,IAIrC,KAAKgsC,aAAY,GAAe,EACzB,KAAKF,gBAAe,GAEpB,MAAMvnB,cAAcrb,CAAmB,CAElD,CAEA+iC,WAAY,CACS,KAAK7kB,WAAU,EAClBnb,eAAe,MAAMggC,UAAS,CAChD,CAEA7c,iBAAiB7/B,EAAoB,CACnC,IAAMkpB,EAAU,KAAK2O,WAAU,EAE/B,GAAI3O,IAAYE,GAAGrM,OAAQ,CACzB,KAAKi9B,aAAY,EACjB,MACF,CAEA,GAAI9wB,IAAYE,GAAGvM,QAAUqM,IAAYE,GAAGtM,OAAQ,CAClD,GAAI+M,GAAkB7pB,CAAI,EAAG,CAC3B,KAAKk7C,YAAW,EAChB,MACF,CAEA,GAAIl7C,IAAI,GAA4B,CAClC,EAAE,KAAKqb,MAAM5K,IACb,KAAK0hB,YAAW,GAAa,EAC7B,MACF,CAEA,IACGnyB,IAAgC,IAAIA,IAAI,KACzCkpB,IAAYE,GAAGvM,OACf,CACA,KAAK29B,cAAcx6C,CAAI,EACvB,MACF,CACF,CAEA,GACEA,IAA2B,IAC3B,KAAKqb,MAAM6+B,oBACX,KAAKpa,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,IAAC,GACzC,CACA,EAAE,KAAK4K,MAAM5K,IACb,KAAK0hB,YAAW,GAAe,EAC/B,MACF,CAEA,MAAM0N,iBAAiB7/B,CAAI,CAC7B,CAEA0d,cAAci/B,EAA2B,CACvC,GAAM,CAAEzzB,QAAAA,EAASpnB,KAAAA,GAAS,KAAKuZ,MAC/B,GAAIvZ,IAAI,IAAiB66C,IAAQ,IAG/BzzB,EAAQ0zB,OAAO,GAAI,EAAGxzB,GAAGtM,MAAM,EAC/B,KAAKzB,MAAM6+B,mBAAqB,WACvBp4C,IAAI,IAEbonB,EAAQvK,KAAKyK,GAAGvM,MAAM,UACb/a,IAAI,IAAmB,CAChC,IAAMg4B,EAAM5Q,EAAQA,EAAQzN,OAAS,CAAC,EACjCqe,IAAQ1Q,GAAGvM,QAAU8/B,IAAqB,IAAK7iB,IAAQ1Q,GAAGtM,QAC7DoM,EAAQC,IAAG,EACX,KAAK9N,MAAM6+B,mBACThxB,EAAQA,EAAQzN,OAAS,CAAC,IAAM2N,GAAGrM,SAErC,KAAKw+B,WAAWnyB,GAAGrM,MAAM,EACzB,KAAK1B,MAAM6+B,mBAAqB,GAEpC,MACE,KAAK7+B,MAAM6+B,mBAAqBhyB,GAA2BpmB,CAAI,CAEnE,CACF,EC5nBI+6C,GAAN,cAA8BzxB,EAAM,CAAAjsB,eAAA6Z,EAAA,CAAA,MAAA,GAAAA,CAAA,EAAA,KAClC8jC,QAAmC,IAAIl/B,GAAK,CAC9C,EAKqBm/B,GAAN,cAAqCxxB,EAA8B,CAAApsB,eAAA6Z,EAAA,CAAA,MAAA,GAAAA,CAAA,EAAA,KAChFgkC,aAA8B,CAAA,CAAE,CAEhCtwB,YAAYxY,EAAmC,CAC7C,YAAK8oC,aAAar+B,KAAK,IAAIxQ,GAAK,EAEzB,IAAI0uC,GAAgB3oC,CAAK,CAClC,CAEAyY,MAAMzY,EAAwB,CACxBA,IAAK,MACP,KAAK8oC,aAAar+B,KAAK,IAAIxQ,GAAK,EAGlC,MAAMwe,MAAMzY,CAAK,CACnB,CAEA0Y,MAAO,CACL,IAAM1Y,EAAQ,MAAM0Y,KAAI,EAExB,OAAI1Y,IAAK,MACP,KAAK8oC,aAAa7zB,IAAG,EAGhBjV,CACT,CAEA+oC,UAAUn1C,EAAco1C,EAAuB,CAC7C,IAAMC,EAAM,KAAKH,aAAavhC,OAC9B,GAAI,KAAKuhC,aAAaG,EAAM,CAAC,EAAEzyB,IAAI5iB,CAAI,EACrC,MAAO,GAET,GAAI,CAACo1C,GAAeC,EAAM,GACxB,QAASvzB,EAAI,EAAGA,EAAIuzB,EAAM,EAAGvzB,IAC3B,GAAI,KAAKozB,aAAapzB,CAAC,EAAEc,IAAI5iB,CAAI,EAAG,MAAO,GAG/C,MAAO,EACT,CAEAglB,YAAYhlB,EAAcilB,EAA0B1c,EAAe,CACjE,GAAI0c,EAAW,KAA+B,CACxC,KAAKkwB,UAAUn1C,EAAM,EAAI,GAC3B,KAAK0jB,OAAOhR,MAAM7I,EAAO/E,iBAAkByD,EAAK,CAC9CzQ,eAAgBkI,CAClB,CAAC,EAEH,KAAKk1C,aAAa,KAAKA,aAAavhC,OAAS,CAAC,EAAE+R,IAAI1lB,CAAI,EACxD,MACF,CAEA,IAAM+kB,EAAQ,KAAKjB,aAAY,EAC3B9pB,EAAO+qB,EAAMiwB,QAAQlsC,IAAI9I,CAAI,GAAK,EAEtC,GAAIilB,EAAW,KAAoC,CACjD,KAAKE,mBAAmBJ,EAAO/kB,CAAI,EACnC+kB,EAAMiwB,QAAQjsC,IAAI/I,EAAMhG,EAAI,EAAgC,EAC5D,MACF,CAEA,MAAMgrB,YAAYhlB,EAAMilB,EAAa1c,CAAG,EAEpC0c,EAAW,IACPA,EAAW,IAEf,KAAKC,0BAA0BH,EAAO/kB,EAAMilB,EAAa1c,CAAG,EAC5D,KAAK4c,mBAAmBJ,EAAO/kB,CAAI,GAErChG,EAAOA,EAAuB,GAE5BirB,EAAW,MACbjrB,EAAOA,EAAuB,GAE5BirB,EAAW,MACbjrB,EAAOA,EAA4B,GAEjCirB,EAAW,MACbjrB,EAAOA,EAAyB,GAE9BA,GAAM+qB,EAAMiwB,QAAQjsC,IAAI/I,EAAMhG,CAAI,CACxC,CAEAqrB,oBACEN,EACA/kB,EACAilB,EACS,CACT,IAAMjrB,EAAO+qB,EAAMiwB,QAAQlsC,IAAI9I,CAAI,EACnC,IAAKhG,EAAuB,GAAI,EAAG,CACjC,GAAIirB,EAAW,IAA6B,CAG1C,IAAMqwB,EAAU,CAAC,EAAErwB,EAAW,KACxBswB,GAAYv7C,EAAI,GAA4B,EAClD,OAAOs7C,IAAYC,CACrB,CACA,MAAO,EACT,CACA,OACEtwB,EAAW,MACVjrB,EAAI,GAAyB,EAE1B+qB,EAAMxB,MAAMza,IAAI9I,CAAI,EAAC,EAEhB,CAAC,EAAEilB,EAAW,GAGd,GAGPA,EAAW,IAA6BjrB,EAAI,GAAuB,EAC9D,GAGF,MAAMqrB,oBAAoBN,EAAO/kB,EAAMilB,CAAW,CAC3D,CAEAK,iBAAiBxV,EAAkB,CACjC,GAAM,CAAE9P,KAAAA,CAAM,EAAG8P,EAEjB,GAAI,KAAKqlC,UAAUn1C,CAAI,EAAG,OAE1B,IAAMq1C,EAAM,KAAK1xB,WAAWhQ,OAC5B,QAASmO,EAAIuzB,EAAM,EAAGvzB,GAAK,EAAGA,IAAK,CAEjC,IAAM9nB,EADQ,KAAK2pB,WAAW7B,CAAC,EACZkzB,QAAQlsC,IAAI9I,CAAI,EACnC,IACGhG,EAAI,GAAuB,IAC3BA,EAAI,IAAoC,EAEzC,MAEJ,CAEA,MAAMsrB,iBAAiBxV,CAAE,CAC3B,CACF,ECzHqB0lC,GAAN,KAAiC,CAAAn+C,aAAA,CAAA,KAC9Co+C,OAA2B,CAAA,CAAE,CAC7B5wB,MAAMzY,EAAkB,CACtB,KAAKqpC,OAAO5+B,KAAKzK,CAAK,CACxB,CAEA0Y,MAAO,CACL,KAAK2wB,OAAOp0B,IAAG,CACjB,CAEAq0B,cAA0B,CACxB,OAAO,KAAKD,OAAO,KAAKA,OAAO9hC,OAAS,CAAC,CAC3C,CAEA,IAAIgiC,UAAoB,CACtB,OAAQ,KAAKD,aAAY,EAAE,GAA4B,CACzD,CAEA,IAAIE,UAAoB,CACtB,OAAQ,KAAKF,aAAY,EAAE,GAA4B,CACzD,CAEA,IAAIG,WAAqB,CACvB,OAAQ,KAAKH,aAAY,EAAE,GAA6B,CAC1D,CAEA,IAAII,OAAiB,CACnB,OAAQ,KAAKJ,aAAY,EAAE,GAAyB,CACtD,CACF,EAEO,SAASK,GACdvnC,EACA4B,EACW,CACX,OACG5B,EAAO,EAA2B,IAClC4B,EAAW,EAA2B,EAE3C,CCpEe,IAAM4lC,GAAN,KAAiB,CAAA3+C,aAAA,CAAA,KAe9B4+C,kBAA6B,GAAK,KAClCC,4BAAuC,EAAK,CAW5ChZ,kBAAkBiZ,EAAmB,CACnC,OAAOA,EAAY,KAAKhsC,UAC1B,CAEAosB,kBAAkB6f,EAAmB,CACnC,OAAOA,EAAY,KAAKjsC,UAC1B,CAMAqH,UAAU6kC,EAAqC,CAC7C,GAAI,OAAOA,GAAiB,SAC1B,OAAO,KAAKxrC,QAAQ+X,IAAIyzB,CAAY,EAC/B,CACL,GAAM,CAACC,EAAYC,CAAa,EAAIF,EACpC,GAAI,CAAC,KAAK7kC,UAAU8kC,CAAU,EAC5B,MAAO,GAET,IAAME,EAAgB,KAAK3rC,QAAQ/B,IAAIwtC,CAAU,EACjD,QAAW51C,KAAO4F,OAAOiD,KACvBgtC,CACF,EACE,GAAIC,IAAgB91C,CAAG,IAAM61C,EAAc71C,CAAG,EAC5C,MAAO,GAGX,MAAO,EACT,CACF,CAEAiP,gBAGE8mC,EAAoBz2C,EAAkB,CAAA,IAAA02C,EACtC,OAAAA,EAAQ,KAAK7rC,QAAQ/B,IAAI2tC,CAAM,IAAC,KAAA,OAAzBC,EACL12C,CAAI,CAER,CACF,ECvCA,SAAS22C,GAAoB58C,EAAoB68C,EAA0B,CACrE78C,EAAK88C,mBAAqB3sC,OAC5BnQ,EAAK88C,iBAAmBD,EAExB78C,EAAK88C,iBAAiBC,QAAQ,GAAGF,CAAQ,CAE7C,CAOA,SAASG,GAAmBh9C,EAAoB68C,EAA0B,CACpE78C,EAAKi9C,kBAAoB9sC,OAC3BnQ,EAAKi9C,gBAAkBJ,EAEvB78C,EAAKi9C,gBAAgBF,QAAQ,GAAGF,CAAQ,CAE5C,CAOO,SAASK,GACdl9C,EACA68C,EACA,CACI78C,EAAKm9C,gBAAkBhtC,OACzBnQ,EAAKm9C,cAAgBN,EAErB78C,EAAKm9C,cAAcJ,QAAQ,GAAGF,CAAQ,CAE1C,CAOA,SAASO,GACPp9C,EACA6+B,EACAwe,EACA,CACA,IAAIC,EAAc,KACdv1B,EAAI8W,EAASjlB,OACjB,KAAO0jC,IAAgB,MAAQv1B,EAAI,GACjCu1B,EAAcze,EAAS,EAAE9W,CAAC,EAExBu1B,IAAgB,MAAQA,EAAY1/C,MAAQy/C,EAAUz/C,MACxDs/C,GAAiBl9C,EAAMq9C,EAAUR,QAAQ,EAEzCD,GAAoBU,EAAaD,EAAUR,QAAQ,CAEvD,CAEe,IAAMU,GAAN,cAA6BtB,EAAW,CACrDzrB,WAAWC,EAAwB,CAC7B,KAAK3yB,WAAU2yB,EAAQjiB,IAAI1Q,SAAW,KAAKA,UAC/C,GAAM,CAAE0/C,YAAAA,GAAgB,KAAKhkC,MACzB,KAAKqjC,SAASjjC,SAAW4jC,IAC3B,KAAKX,SAASjjC,OAAS4jC,GAEzB,KAAKX,SAAS//B,KAAK2T,CAAO,EAC1B,KAAKjX,MAAMgkC,aACb,CAMAC,eAAez9C,EAAkB,CAC/B,GAAM,CAAE09C,aAAAA,GAAiB,KAAKlkC,MACxBmkC,EAAqBD,EAAa9jC,OACxC,GAAI+jC,IAAuB,EAAG,OAC9B,IAAI51B,EAAI41B,EAAqB,EACvBC,EAAgBF,EAAa31B,CAAC,EAEhC61B,EAAchgD,QAAUoC,EAAKnC,MAC/B+/C,EAAcC,YAAc79C,EAC5B+nB,KAGF,GAAM,CAAEnqB,MAAOw5B,CAAW,EAAGp3B,EAE7B,KAAO+nB,GAAK,EAAGA,IAAK,CAClB,IAAMs1B,EAAYK,EAAa31B,CAAC,EAC1B+1B,EAAaT,EAAUx/C,IAC7B,GAAIigD,EAAa1mB,EAOfimB,EAAUU,eAAiB/9C,EAC3B,KAAKg+C,gBAAgBX,CAAS,EAC9BK,EAAa3C,OAAOhzB,EAAG,CAAC,MACnB,CACD+1B,IAAe1mB,IACjBimB,EAAUY,aAAej+C,GAG3B,KACF,CACF,CACF,CAMAg+C,gBAAgBX,EAA8B,CAAA,IAAAa,EAC5C,GAAM,CAAErB,SAAAA,CAAU,EAAGQ,EACrB,GAAIA,EAAUQ,cAAgB,MAAQR,EAAUY,eAAiB,KAC3DZ,EAAUQ,cAAgB,MAC5BjB,GAAoBS,EAAUQ,YAAahB,CAAQ,EAEjDQ,EAAUY,eAAiB,MAC7BjB,GAAmBK,EAAUY,aAAcpB,CAAQ,MAEhD,CAEL,GAAM,CAAEkB,eAAgB/9C,EAAMpC,MAAOugD,CAAc,EAAGd,EACtD,GACE,KAAKpf,MAAMC,WAAW,KAAK1B,kBAAkB2hB,CAAY,EAAI,CAAC,IAAC,GAM/D,OAAQn+C,EAAKC,KAAI,CACf,IAAK,mBACL,IAAK,gBACL,IAAK,mBACHm9C,GAAoBp9C,EAAMA,EAAKs3B,WAAY+lB,CAAS,EACpD,MACF,IAAK,iBACL,IAAK,yBACHD,GAAoBp9C,EAAMA,EAAKiZ,UAAWokC,CAAS,EACnD,MACF,IAAK,mBACHD,GACEp9C,EACA,CAACA,EAAKgZ,QAAMklC,EAAEl+C,EAAKyR,UAAO,KAAAysC,EAAI,IAAI,EAClCb,CACF,EACA,MACF,IAAK,sBACL,IAAK,qBACL,IAAK,0BACL,IAAK,eACL,IAAK,cACL,IAAK,qBACHD,GAAoBp9C,EAAMA,EAAK8U,OAAQuoC,CAAS,EAChD,MACF,IAAK,kBACL,IAAK,eACL,IAAK,kBACHD,GAAoBp9C,EAAMA,EAAK6+B,SAAUwe,CAAS,EAClD,MACF,IAAK,yBACL,IAAK,oBACHD,GAAoBp9C,EAAMA,EAAK2Z,WAAY0jC,CAAS,EACpD,MACF,IAAK,oBAEDD,GAAoBp9C,EAAMA,EAAK8lC,QAASuX,CAAS,EAInD,MACF,IAAK,aACHD,GAAoBp9C,EAAMA,EAAK8lC,QAASuX,CAAS,EACjD,MACF,QACEH,GAAiBl9C,EAAM68C,CAAQ,CAEnC,MAEAK,GAAiBl9C,EAAM68C,CAAQ,CAEnC,CACF,CAQAuB,2BAA4B,CAC1B,GAAM,CAAEV,aAAAA,GAAiB,KAAKlkC,MAC9B,QAASuO,EAAI21B,EAAa9jC,OAAS,EAAGmO,GAAK,EAAGA,IAC5C,KAAKi2B,gBAAgBN,EAAa31B,CAAC,CAAC,EAEtC,KAAKvO,MAAMkkC,aAAe,CAAA,CAC5B,CAqBAW,kCAAkCr+C,EAAY,CAC5C,GAAM,CAAE09C,aAAAA,GAAiB,KAAKlkC,MACxB,CAAEI,OAAAA,CAAQ,EAAG8jC,EACnB,GAAI9jC,IAAW,EAAG,OAClB,IAAMyjC,EAAYK,EAAa9jC,EAAS,CAAC,EACrCyjC,EAAUQ,cAAgB79C,IAC5Bq9C,EAAUQ,YAAc,KAE5B,CASAS,wBAAwBt+C,EAAYpC,EAAeC,EAAa,CAC9D,GAAM,CAAE6/C,aAAAA,GAAiB,KAAKlkC,MACxBmkC,EAAqBD,EAAa9jC,OACxC,GAAI+jC,IAAuB,EAAG,OAC9B,IAAI51B,EAAI41B,EAAqB,EAE7B,KAAO51B,GAAK,EAAGA,IAAK,CAClB,IAAMs1B,EAAYK,EAAa31B,CAAC,EAC1B+1B,EAAaT,EAAUx/C,IAG7B,GAFqBw/C,EAAUz/C,QAEVC,EACnBw/C,EAAUQ,YAAc79C,UACf89C,IAAelgD,EACxBy/C,EAAUY,aAAej+C,UAChB89C,EAAalgD,EACtB,KAEJ,CACF,CACF,EC5QqB2gD,GAAN,MAAMA,CAAM,CAAAjhD,aAAA,CAAA,KACZ+U,MAAK,KAAA,KAIlBjC,WAAU,OAAA,KACVqoC,QAAO,OAAA,KACPC,UAAS,OAAA,KAIT9gC,SAAQ,OAAA,KACRvE,OAAM,OAAA,KA0BNmrC,OAA4B,CAAA,EAAE,KAG9BC,iBAA2B,GAAE,KAM7BtjB,UAAsB,CAAA,EAAE,KAQxBS,0BAAsC,CAAA,EAAE,KAYxC8iB,aAAkC,CAChCC,yBAA0B,EAC1BC,cAAe,MAChB,KAODC,OAIK,CAAA,EAAE,KAEPrB,YAAc,EAAC,KAEfE,aAAyC,CAAA,EAAE,KAG3C9uC,IAAc,EAAC,KAIf3O,KAAI,IAAA,KAGJuN,MAAa,KAAI,KAGjB5P,MAAgB,EAAC,KACjBC,IAAc,EAAC,KAIf8c,cAA0B,KAAI,KAE9BlB,gBAA4B,KAAI,KAIhC4N,QAA6B,CAACy3B,GAAG/jC,KAAK,EAAC,KAYvCgkC,8BAAiD,KAAI,KAYrDC,aAA6D,IAAIjjC,IAAK,KAGtEkjC,aAAuB,CAAC,CAAA,IArIV52B,QAAM,CAAA,OAAA,KAFPhW,MAAK,GAAA,CAAA,CAAA,IAEJgW,OAAM62B,EAAA,CAAAA,EAAA,KAFP7sC,OAAK,EAAA,KAALA,OAAK,EAAA,CAalBozB,KAAK,CACH10B,WAAAA,EACAd,WAAAA,EACAG,WAAAA,EACAE,UAAAA,EACAD,YAAAA,CACO,EAAS,CAChB,KAAKgY,OACHtX,IAAe,GACX,GACAA,IAAe,GACb,GACAd,IAAe,SAEvB,KAAKG,WAAaA,EAClB,KAAKqoC,QAAUnoC,EACf,KAAKooC,UAAY,CAACroC,EAClB,KAAKuH,SAAW,KAAKvE,OAAS,IAAIhW,GAChCiT,EACAD,EACAD,CACF,CACF,CAAC,IAsBayqB,wBAAsB,CAAA,OAAA,KAzDvBxoB,MAAK,GAAA,CAAA,CAAA,IAyDJwoB,uBAAsBqkB,EAAA,CAAAA,EAAA,KAzDvB7sC,OAAK,EAAA,KAALA,OAAK,EAAA,CAAA,IA0DJ0e,QAAM,CAAA,OAAA,KA1DP1e,MAAK,GAAA,CAAA,CAAA,IA0DJ0e,OAAMmuB,EAAA,CAAAA,EAAA,KA1DP7sC,OAAK,EAAA,KAALA,OAAK,EAAA,CAAA,IA2DJgkB,oBAAkB,CAAA,OAAA,KA3DnBhkB,MAAK,GAAA,CAAA,CAAA,IA2DJgkB,mBAAkB6oB,EAAA,CAAAA,EAAA,KA3DnB7sC,OAAK,EAAA,KAALA,OAAK,EAAA,CAAA,IA4DJ4xB,gBAAc,CAAA,OAAA,KA5Df5xB,MAAK,IAAA,CAAA,CAAA,IA4DJ4xB,eAAcib,EAAA,CAAAA,EAAA,KA5Df7sC,OAAK,GAAA,KAALA,OAAK,GAAA,CAAA,IA6DJ8sC,kBAAgB,CAAA,OAAA,KA7DjB9sC,MAAK,IAAA,CAAA,CAAA,IA6DJ8sC,iBAAgBD,EAAA,CAAAA,EAAA,KA7DjB7sC,OAAK,GAAA,KAALA,OAAK,GAAA,CAAA,IA8DJ+sC,iBAAe,CAAA,OAAA,KA9DhB/sC,MAAK,IAAA,CAAA,CAAA,IA8DJ+sC,gBAAeF,EAAA,CAAAA,EAAA,KA9DhB7sC,OAAK,GAAA,KAALA,OAAK,GAAA,CAAA,IA+DJgtC,mCAAiC,CAAA,OAAA,KA/DlChtC,MAAK,KAAA,CAAA,CAAA,IA+DJgtC,kCAAiCH,EAAA,CAAAA,EAAA,KA/DlC7sC,OAAK,IAAA,KAALA,OAAK,IAAA,CAAA,IAwEJitC,WAAS,CAAA,OAAA,KAxEVjtC,MAAK,KAAA,CAAA,CAAA,IAwEJitC,UAASJ,EAAA,CAAAA,EAAA,KAxEV7sC,OAAK,IAAA,KAALA,OAAK,IAAA,CAAA,IAyEJktC,4BAA0B,CAAA,OAAA,KAzE3BltC,MAAK,KAAA,CAAA,CAAA,IAyEJktC,2BAA0BL,EAAA,CAAAA,EAAA,KAzE3B7sC,OAAK,IAAA,KAALA,OAAK,IAAA,CAAA,IA+GJgmC,oBAAkB,CAAA,OAAA,KA/GnBhmC,MAAK,MAAA,CAAA,CAAA,IA+GJgmC,mBAAkB6G,EAAA,CAAAA,EAAA,KA/GnB7sC,OAAK,KAAA,KAALA,OAAK,KAAA,CAAA,IAoHJooB,aAAW,CAAA,OAAA,KApHZpoB,MAAK,MAAA,CAAA,CAAA,IAoHJooB,YAAWykB,EAAA,CAAAA,EAAA,KApHZ7sC,OAAK,KAAA,KAALA,OAAK,KAAA,CAAA,IA0HJmtC,kBAAgB,CAAA,OAAA,KA1HjBntC,MAAK,MAAA,CAAA,CAAA,IA0HJmtC,iBAAgBN,EAAA,CAAAA,EAAA,KA1HjB7sC,OAAK,KAAA,KAALA,OAAK,KAAA,CA8IlB0rB,aAAwB,CACtB,OAAO,IAAI1gC,GACT,KAAKo7C,QACL,KAAK7pC,IAAM,KAAK8pC,UAChB,KAAK9pC,IAAM,KAAKwB,UAClB,CACF,CAEA6qB,OAAe,CACb,IAAMzhB,EAAQ,IAAI+kC,EAClB/kC,OAAAA,EAAMnH,MAAQ,KAAKA,MACnBmH,EAAMpJ,WAAa,KAAKA,WACxBoJ,EAAMi/B,QAAU,KAAKA,QACrBj/B,EAAMk/B,UAAY,KAAKA,UACvBl/B,EAAM5B,SAAW,KAAKA,SACtB4B,EAAMnG,OAAS,KAAKA,OACpBmG,EAAMglC,OAAS,KAAKA,OAAO1Z,MAAK,EAChCtrB,EAAMilC,iBAAmB,KAAKA,iBAC9BjlC,EAAM2hB,UAAY,KAAKA,UAAU2J,MAAK,EACtCtrB,EAAMoiB,0BAA4B,KAAKA,0BAA0BkJ,MAAK,EACtEtrB,EAAMklC,aAAe,KAAKA,aAC1BllC,EAAMqlC,OAAS,KAAKA,OAAO/Z,MAAK,EAChCtrB,EAAMgkC,YAAc,KAAKA,YACzBhkC,EAAMkkC,aAAe,KAAKA,aAAa5Y,MAAK,EAC5CtrB,EAAM5K,IAAM,KAAKA,IACjB4K,EAAMvZ,KAAO,KAAKA,KAClBuZ,EAAMhM,MAAQ,KAAKA,MACnBgM,EAAM5b,MAAQ,KAAKA,MACnB4b,EAAM3b,IAAM,KAAKA,IACjB2b,EAAMmB,cAAgB,KAAKA,cAC3BnB,EAAMC,gBAAkB,KAAKA,gBAC7BD,EAAM6N,QAAU,KAAKA,QAAQyd,MAAK,EAClCtrB,EAAMulC,8BAAgC,KAAKA,8BAC3CvlC,EAAMwlC,aAAe,KAAKA,aAC1BxlC,EAAMylC,aAAe,KAAKA,aAEnBzlC,CACT,CACF,KCrNA,SAAiBrb,EAAM,CACrB,OAAOA,GAAI,IAAcA,GAAc,EACzC,EAIMshD,GAAoC,CACxCC,UAAW,IAAIpzC,IAAY,CAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,CAS1B,EACDqzC,IAAK,IAAIrzC,IAAY,CAKpB,GAAA,GAAA,GAAA,GAAA,CAAA,CACH,EAEMszC,GAAmC,CAEvCC,IAAMtf,GAAeA,IAAuB,IAAIA,IAAuB,GAGvEuf,IAAMvf,GAAeA,GAAsB,IAAIA,GAAsB,GAGrEwf,IAAMxf,GAAeA,GAAsB,IAAIA,GAAsB,GAGrEof,IAAMpf,GACHA,GAAsB,IAAIA,GAAsB,IAChDA,GAAE,IAA4BA,GAAE,IAChCA,GAAE,IAA4BA,GAAE,GACrC,EAUO,SAASyf,GACd//C,EACAg+B,EACArvB,EACA8pC,EACAD,EACA+F,EACA,CACA,IAAMyB,EAAarxC,EACbsxC,EAAmBxH,EACnByH,EAAiB1H,EAEnBxgB,EAAM,GACNmoB,EAAkB,KAClBhI,EAAaxpC,EACX,CAAEgL,OAAAA,CAAQ,EAAGqkB,EACnB,OAAS,CACP,GAAIrvB,GAAOgL,EAAQ,CACjB4kC,EAAO6B,aAAaJ,EAAYC,EAAkBC,CAAc,EAChEloB,GAAOgG,EAAM6G,MAAMsT,EAAYxpC,CAAG,EAClC,KACF,CACA,IAAM2xB,EAAKtC,EAAMC,WAAWtvB,CAAG,EAC/B,GAAI0xC,GAAYrgD,EAAMsgC,EAAItC,EAAOrvB,CAAG,EAAG,CACrCqpB,GAAOgG,EAAM6G,MAAMsT,EAAYxpC,CAAG,EAClC,KACF,CACA,GAAI2xB,IAAE,GAA0B,CAC9BtI,GAAOgG,EAAM6G,MAAMsT,EAAYxpC,CAAG,EAClC,IAAM2xC,EAAMC,GACVviB,EACArvB,EACA8pC,EACAD,EACAx4C,IAAS,WACTu+C,CACF,EACI+B,EAAIhgB,KAAO,MAAQ,CAAC6f,EACtBA,EAAkB,CAAExxC,IAAAA,EAAK8pC,UAAAA,EAAWD,QAAAA,GAEpCxgB,GAAOsoB,EAAIhgB,GAEZ,CAAE3xB,IAAAA,EAAK8pC,UAAAA,EAAWD,QAAAA,CAAS,EAAG8H,EAC/BnI,EAAaxpC,CACd,MACC2xB,IAAE,MACFA,IAAE,MAEF,EAAE3xB,EACF,EAAE6pC,EACFC,EAAY9pC,GACH2xB,IAAE,IAA2BA,IAAE,GACpCtgC,IAAS,YACXg4B,GAAOgG,EAAM6G,MAAMsT,EAAYxpC,CAAG,EAAI;EACtC,EAAEA,EAEA2xB,IAA+B,IAC/BtC,EAAMC,WAAWtvB,CAAG,IAAC,IAErB,EAAEA,EAEJ,EAAE6pC,EACFL,EAAaM,EAAY9pC,GAEzB4vC,EAAO6B,aAAaJ,EAAYC,EAAkBC,CAAc,EAGlE,EAAEvxC,CAEN,CACA,MAEI,CACEA,IAAAA,EACA6xC,IAAKxoB,EACLmoB,gBAAAA,EACA1H,UAAAA,EACAD,QAAAA,EACAiI,gBAAiB,CAAC,CAACN,EAE3B,CAEA,SAASE,GACPrgD,EACAsgC,EACAtC,EACArvB,EACA,CACA,OAAI3O,IAAS,WAETsgC,IAAE,IACDA,IAAE,IACDtC,EAAMC,WAAWtvB,EAAM,CAAC,IAA+B,IAI3D2xB,KAAQtgC,IAAS,SAAQ,GAAA,GAE7B,CAOA,SAASugD,GACPviB,EACArvB,EACA8pC,EACAD,EACAkI,EACAnC,EACA,CACA,IAAMoC,EAAiB,CAACD,EACxB/xC,IAEA,IAAM2xC,EAAOhgB,IAAuB,CAAE3xB,IAAAA,EAAK2xB,GAAAA,EAAImY,UAAAA,EAAWD,QAAAA,CAAQ,GAE5DlY,EAAKtC,EAAMC,WAAWtvB,GAAK,EACjC,OAAQ2xB,EAAE,CACR,IAAA,KACE,OAAOggB,EAAI;CAAI,EACjB,IAAA,KACE,OAAOA,EAAI,IAAI,EACjB,IAAA,KAA2B,CACzB,IAAIpiD,EACJ,MAAC,CAAEA,KAAAA,EAAMyQ,IAAAA,CAAI,EAAIiyC,GACf5iB,EACArvB,EACA8pC,EACAD,EACA,EACA,GACAmI,EACApC,CACF,EACO+B,EAAIpiD,IAAS,KAAO,KAAOgO,OAAO+b,aAAa/pB,CAAI,CAAC,CAC7D,CACA,IAAA,KAA2B,CACzB,IAAIA,EACJ,MAAC,CAAEA,KAAAA,EAAMyQ,IAAAA,CAAI,EAAIkyC,GACf7iB,EACArvB,EACA8pC,EACAD,EACAmI,EACApC,CACF,EACO+B,EAAIpiD,IAAS,KAAO,KAAOgO,OAAOC,cAAcjO,CAAI,CAAC,CAC9D,CACA,IAAA,KACE,OAAOoiD,EAAI,GAAI,EACjB,IAAA,IACE,OAAOA,EAAI,IAAI,EACjB,IAAA,KACE,OAAOA,EAAI,IAAQ,EACrB,IAAA,KACE,OAAOA,EAAI,IAAI,EACjB,IAAA,IACMtiB,EAAMC,WAAWtvB,CAAG,IAAC,IACvB,EAAEA,EAGN,IAAA,IACE8pC,EAAY9pC,EACZ,EAAE6pC,EAEJ,IAAA,MACA,IAAA,MACE,OAAO8H,EAAI,EAAE,EACf,IAAA,IACA,IAAA,IACE,GAAII,EACF,OAAOJ,EAAI,IAAI,EAEf/B,EAAOuC,oBAAoBnyC,EAAM,EAAG8pC,EAAWD,CAAO,EAG1D,QACE,GAAIlY,GAAE,IAAwBA,GAAE,GAAsB,CACpD,IAAMsY,EAAWjqC,EAAM,EAGnBoyC,EAFU,UAAUrwB,KAAKsN,EAAM6G,MAAM+T,EAAUjqC,EAAM,CAAC,CAAC,EAEtC,CAAC,EAElBqyC,EAAQC,SAASF,EAAU,CAAC,EAC5BC,EAAQ,MACVD,EAAWA,EAASlc,MAAM,EAAG,EAAE,EAC/Bmc,EAAQC,SAASF,EAAU,CAAC,GAE9BpyC,GAAOoyC,EAASpnC,OAAS,EACzB,IAAMuP,EAAO8U,EAAMC,WAAWtvB,CAAG,EACjC,GACEoyC,IAAa,KACb73B,IAAyB,IACzBA,IAAI,GACJ,CACA,GAAIw3B,EACF,OAAOJ,EAAI,IAAI,EAEf/B,EAAOuC,oBAAoBlI,EAAUH,EAAWD,CAAO,CAE3D,CAEA,OAAO8H,EAAIp0C,OAAO+b,aAAa+4B,CAAK,CAAC,CACvC,CAEA,OAAOV,EAAIp0C,OAAO+b,aAAaqY,CAAE,CAAC,CACtC,CACF,CAOA,SAASsgB,GACP5iB,EACArvB,EACA8pC,EACAD,EACA6C,EACA6F,EACAP,EACApC,EACA,CACA,IAAMyB,EAAarxC,EACfwyC,EACJ,MAAC,CAAEA,EAAAA,EAAGxyC,IAAAA,CAAK,EAAGoqC,GACZ/a,EACArvB,EACA8pC,EACAD,EACA,GACA6C,EACA6F,EACA,GACA3C,EACkB,CAACoC,CACrB,EACIQ,IAAM,OACJR,EACFpC,EAAO6C,sBAAsBpB,EAAYvH,EAAWD,CAAO,EAE3D7pC,EAAMqxC,EAAa,GAGhB,CAAE9hD,KAAMijD,EAAGxyC,IAAAA,EACpB,CAuBO,SAASoqC,GACd/a,EACArvB,EACA8pC,EACAD,EACAt0C,EACAm3C,EACA6F,EACAG,EACA9C,EACA+C,EACA,CACA,IAAM3jD,EAAQgR,EACR4yC,EACJr9C,IAAU,GACNs7C,GAAkCE,IAClCF,GAAkCC,UAClC+B,EACJt9C,IAAU,GACNy7C,GAAiCD,IACjCx7C,IAAU,GACRy7C,GAAiCG,IACjC57C,IAAU,EACRy7C,GAAiCE,IACjCF,GAAiCC,IAEvCrkB,EAAU,GACVkmB,EAAQ,EAEZ,QAAS35B,EAAI,EAAG45B,EAAIrG,GAAcsG,IAAgB75B,EAAI45B,EAAG,EAAE55B,EAAG,CAC5D,IAAM5pB,EAAO8/B,EAAMC,WAAWtvB,CAAG,EAC7B2hB,EAEJ,GAAIpyB,IAA6B,IAAImjD,IAAsB,OAAQ,CACjE,IAAMO,EAAO5jB,EAAMC,WAAWtvB,EAAM,CAAC,EAC/Bua,EAAO8U,EAAMC,WAAWtvB,EAAM,CAAC,EAErC,GAAK0yC,GAGE,GACLQ,OAAOC,MAAM54B,CAAI,GACjB,CAACs4B,EAAiBt4B,CAAI,GACtBq4B,EAAkB34B,IAAIg5B,CAAI,GAC1BL,EAAkB34B,IAAIM,CAAI,EAC1B,CACA,GAAIo4B,EAAa,MAAO,CAAEH,EAAG,KAAMxyC,IAAAA,GACnC4vC,EAAOwD,2BAA2BpzC,EAAK8pC,EAAWD,CAAO,CAC3D,MAXwB,CACtB,GAAI8I,EAAa,MAAO,CAAEH,EAAG,KAAMxyC,IAAAA,GACnC4vC,EAAOyD,iCAAiCrzC,EAAK8pC,EAAWD,CAAO,CACjE,CAWA,EAAE7pC,EACF,QACF,CAWA,GATIzQ,GAAI,GACNoyB,EAAMpyB,EAAI,GAA4C,GAC7CA,GAAI,GACboyB,EAAMpyB,EAAI,GAA4C,GAC7C+jD,GAAkB/jD,CAAI,EAC/BoyB,EAAMpyB,EAAuB,GAE7BoyB,EAAMqxB,IAEJrxB,GAAOpsB,EAAO,CAGhB,GAAIosB,GAAO,GAAKgxB,EACd,MAAO,CAAEH,EAAG,KAAMxyC,IAAAA,GACb,GACL2hB,GAAO,GACPiuB,EAAO2D,aAAavzC,EAAK8pC,EAAWD,EAASt0C,CAAK,EAElDosB,EAAM,UACG4wB,EACT5wB,EAAM,EACNiL,EAAU,OAEV,MAEJ,CACA,EAAE5sB,EACF8yC,EAAQA,EAAQv9C,EAAQosB,CAC1B,CACA,OAAI3hB,IAAQhR,GAAU09C,GAAO,MAAQ1sC,EAAMhR,IAAU09C,GAAQ9f,EACpD,CAAE4lB,EAAG,KAAMxyC,IAAAA,GAGb,CAAEwyC,EAAGM,EAAO9yC,IAAAA,EACrB,CAMO,SAASkyC,GACd7iB,EACArvB,EACA8pC,EACAD,EACAmI,EACApC,EACA,CACA,IAAMje,EAAKtC,EAAMC,WAAWtvB,CAAG,EAC3BzQ,EAEJ,GAAIoiC,IAAE,KAaJ,GAZA,EAAE3xB,EACD,CAAEzQ,KAAAA,EAAMyQ,IAAAA,GAAQiyC,GACf5iB,EACArvB,EACA8pC,EACAD,EACAxa,EAAM8G,QAAQ,IAAKn2B,CAAG,EAAIA,EAC1B,GACAgyC,EACApC,CACF,EACA,EAAE5vC,EACEzQ,IAAS,MAAQA,EAAO,QAC1B,GAAIyiD,EACFpC,EAAO4D,iBAAiBxzC,EAAK8pC,EAAWD,CAAO,MAE/C,OAAO,CAAEt6C,KAAM,KAAMyQ,IAAAA,QAIxB,CAAEzQ,KAAAA,EAAMyQ,IAAAA,CAAI,EAAIiyC,GACf5iB,EACArvB,EACA8pC,EACAD,EACA,EACA,GACAmI,EACApC,CACF,GAEF,MAAO,CAAErgD,KAAAA,EAAMyQ,IAAAA,EACjB,CC5ZA,SAASyzC,GAAczzC,EAAa8pC,EAAmBD,EAAiB,CACtE,OAAO,IAAIp7C,GAASo7C,EAAS7pC,EAAM8pC,EAAW9pC,CAAG,CACnD,CAEA,IAAM0zC,GAAoB,IAAIh2C,IAAI,CAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,CASjC,EAMYi2C,GAAN,KAAY,CACjBjlD,YAAYkc,EAAc,CACxB,IAAMpJ,EAAaoJ,EAAMpJ,YAAc,EACvC,KAAKnQ,KAAOuZ,EAAMvZ,KAClB,KAAKuN,MAAQgM,EAAMhM,MACnB,KAAK5P,MAAQwS,EAAaoJ,EAAM5b,MAChC,KAAKC,IAAMuS,EAAaoJ,EAAM3b,IAC9B,KAAK2Q,IAAM,IAAI7Q,GAAe6b,EAAM5B,SAAU4B,EAAMnG,MAAM,CAC5D,CAOF,EAI8BmvC,GAAf,cAAiCjF,EAAe,CAM7DjgD,YAAYmU,EAAkBwsB,EAAe,CAC3C,MAAK,EAAG,KANVwkB,YAAW,OAAA,KAGXxxC,OAAmC,CAAA,EAAE,KAi9CrCyxC,sBAA0C,CACxCP,aAAcA,CAACvzC,EAAK8pC,EAAWD,EAASt0C,IAChC,KAAK+N,YAAW,MAEtB,KAAKyG,MAAM7I,EAAO5L,aAAcm+C,GAAczzC,EAAK8pC,EAAWD,CAAO,EAAG,CACtEt0C,MAAAA,CACF,CAAC,EAEM,IANqD,GAQ9D89C,iCAAkC,KAAKU,aACrC7yC,EAAO1I,gCACT,EACA46C,2BAA4B,KAAKW,aAC/B7yC,EAAOxG,0BACT,GACD,KAEDs5C,4BAA2Br2C,OAAAC,OACtB,CAAA,EAAA,KAAKk2C,sBAAqB,CAC7BrB,sBAAuB,KAAKsB,aAAa7yC,EAAO1L,qBAAqB,EACrEg+C,iBAAkB,KAAKO,aAAa7yC,EAAOhM,gBAAgB,CAAC,CAAA,EAAA,KAG9D++C,wCAAuCt2C,OAAAC,OAClC,CAAA,EAAA,KAAKo2C,4BAA2B,CACnC7B,oBAAqBA,CAACnyC,EAAK8pC,EAAWD,IAAY,CAChD,KAAKqK,uBACHhzC,EAAOjE,oBACPw2C,GAAczzC,EAAK8pC,EAAWD,CAAO,CACvC,CACD,EACD4H,aAAcA,CAACzxC,EAAK8pC,EAAWD,IAAY,CACzC,MAAM,KAAK9/B,MACT7I,EAAOnF,mBACP03C,GAAczzC,EAAM,EAAG8pC,EAAWD,CAAO,CAC3C,CACF,CAAC,CAAA,EAAA,KAGHsK,0CAAyCx2C,OAAAC,OACpC,CAAA,EAAA,KAAKo2C,4BAA2B,CACnC7B,oBAAqB,KAAK4B,aAAa7yC,EAAOjE,mBAAmB,EACjEw0C,aAAcA,CAACzxC,EAAK8pC,EAAWD,IAAY,CACzC,MAAM,KAAK9/B,MACT7I,EAAOlF,qBACPy3C,GAAczzC,EAAK8pC,EAAWD,CAAO,CACvC,CACF,CAAC,CAAA,EA7/CD,KAAKj/B,MAAQ,IAAI+kC,GACjB,KAAK/kC,MAAMisB,KAAKh0B,CAAO,EACvB,KAAKwsB,MAAQA,EACb,KAAKrkB,OAASqkB,EAAMrkB,OACpB,KAAKijC,SAAW,CAAA,EAChB,KAAK4F,YAAc,EACrB,CAEAO,UAAUn2C,EAA0B,CAGlC,KAAKoE,OAAO2I,OAAS,KAAKJ,MAAMylC,aAChC,KAAKhuC,OAAO6L,KAAKjQ,CAAK,EACtB,EAAE,KAAK2M,MAAMylC,YACf,CAIA91B,MAAa,CACX,KAAK85B,oBAAmB,EACpB,KAAK/wC,YAAW,KAClB,KAAK8wC,UAAU,IAAIT,GAAM,KAAK/oC,KAAK,CAAC,EAGtC,KAAKA,MAAMmB,cAAgB,KAAKnB,MAAMnG,OACtC,KAAKmG,MAAMC,gBAAkB,KAAKD,MAAM5B,SACxC,KAAKssB,UAAS,CAChB,CAEA7S,IAAIpxB,EAA0B,CAC5B,OAAI,KAAKwxB,MAAMxxB,CAAI,GACjB,KAAKkpB,KAAI,EACF,IAEA,EAEX,CAKAsI,MAAMxxB,EAA0B,CAC9B,OAAO,KAAKuZ,MAAMvZ,OAASA,CAC7B,CAKAijD,qBAAqB1pC,EAA8B,CACjD,MAAO,CACL5K,IAAK4K,EAAM5K,IACXpB,MAAO,KACPvN,KAAMuZ,EAAMvZ,KACZrC,MAAO4b,EAAM5b,MACbC,IAAK2b,EAAM3b,IACXwpB,QAAS,CAAC,KAAK2O,WAAU,CAAE,EAC3BjF,OAAQvX,EAAMuX,OACdnZ,SAAU4B,EAAM5B,SAChB+C,cAAenB,EAAMmB,cACrB89B,QAASj/B,EAAMi/B,QACfC,UAAWl/B,EAAMk/B,UACjB3a,YAAavkB,EAAMukB,YAEvB,CAeAjH,WAA4B,CAC1B,IAAMqsB,EAAM,KAAK3pC,MAEjB,KAAKA,MAAQ,KAAK0pC,qBAAqBC,CAAG,EAE1C,KAAKV,YAAc,GACnB,KAAKve,UAAS,EACd,KAAKue,YAAc,GAEnB,IAAMW,EAAO,KAAK5pC,MAClB,YAAKA,MAAQ2pC,EACNC,CACT,CAEAnc,gBAAyB,CACvB,OAAO,KAAKoc,oBAAoB,KAAK7pC,MAAM5K,GAAG,CAChD,CAEAy0C,oBAAoBz0C,EAAqB,CACvCuoC,OAAAA,GAAemM,UAAY10C,EACpBuoC,GAAelvB,KAAK,KAAKgW,KAAK,EAAIkZ,GAAemM,UAAY10C,CACtE,CAEAmsB,mBAA4B,CAC1B,OAAO,KAAKwoB,uBAAuB,KAAK/pC,MAAM5K,GAAG,CACnD,CAEA20C,uBAAuB30C,EAAqB,CAC1C,OAAO,KAAKqvB,MAAMC,WAAW,KAAKmlB,oBAAoBz0C,CAAG,CAAC,CAC5D,CAQA40C,sBAA+B,CAC7B,OAAO,KAAKC,0BAA0B,KAAKjqC,MAAM5K,GAAG,CACtD,CAEA60C,0BAA0B70C,EAAqB,CAC7CwoC,OAAAA,GAAqBkM,UAAY10C,EAC1BwoC,GAAqBnvB,KAAK,KAAKgW,KAAK,EACvCmZ,GAAqBkM,UACrB10C,CACN,CASA80C,yBAAkC,CAChC,OAAO,KAAKzlB,MAAMC,WAAW,KAAKslB,qBAAsB,CAAA,CAC1D,CAEA1K,eAAelqC,EAAqB,CAKlC,IAAI+0C,EAAK,KAAK1lB,MAAMC,WAAWtvB,CAAG,EAClC,IAAK+0C,EAAK,SAAY,OAAU,EAAE/0C,EAAM,KAAKqvB,MAAMrkB,OAAQ,CACzD,IAAMgqC,EAAQ,KAAK3lB,MAAMC,WAAWtvB,CAAG,GAClCg1C,EAAQ,SAAY,QACvBD,EAAK,QAAYA,EAAK,OAAU,KAAOC,EAAQ,MAEnD,CACA,OAAOD,CACT,CAKAE,UAAUx7B,EAAuB,CAC/B,KAAK7O,MAAM6O,OAASA,EAChBA,IAKF,KAAK7O,MAAMwlC,aAAazrB,QAAQ,CAAC,CAACuwB,EAAchlC,CAAE,IAChD,KAAKnG,MAAMmrC,EAAchlC,CAAE,CAC7B,EACA,KAAKtF,MAAMwlC,aAAa+E,MAAK,EAEjC,CAEA/tB,YAAyB,CACvB,OAAO,KAAKxc,MAAM6N,QAAQ,KAAK7N,MAAM6N,QAAQzN,OAAS,CAAC,CACzD,CAGAsqB,WAAkB,CAIhB,GAHA,KAAK2W,UAAS,EACd,KAAKrhC,MAAM5b,MAAQ,KAAK4b,MAAM5K,IACzB,KAAK6zC,cAAa,KAAKjpC,MAAM5B,SAAW,KAAK4B,MAAMukB,YAAW,GAC/D,KAAKvkB,MAAM5K,KAAO,KAAKgL,OAAQ,CACjC,KAAK0W,YAAW,GAAO,EACvB,MACF,CAEA,KAAK0N,iBAAiB,KAAK8a,eAAe,KAAKt/B,MAAM5K,GAAG,CAAC,CAC3D,CAKA21B,iBAAiBuZ,EAAsD,CACrE,IAAIlmC,EACC,KAAK6qC,cAAa7qC,EAAW,KAAK4B,MAAMukB,YAAW,GACxD,IAAMngC,EAAQ,KAAK4b,MAAM5K,IACnB/Q,EAAM,KAAKogC,MAAM8G,QAAQ+Y,EAAYlgD,EAAQ,CAAC,EACpD,GAAIC,IAAQ,GAIV,MAAM,KAAK8a,MAAM7I,EAAOrF,oBAAqB,KAAK+O,MAAMukB,YAAW,CAAE,EAKvE,IAFA,KAAKvkB,MAAM5K,IAAM/Q,EAAMigD,EAAWlkC,OAClCo9B,GAAWsM,UAAY1lD,EAAQ,EACxBo5C,GAAW/uB,KAAK,KAAKgW,KAAK,GAAK+Y,GAAWsM,WAAazlD,GAC5D,EAAE,KAAK2b,MAAMi/B,QACb,KAAKj/B,MAAMk/B,UAAY1B,GAAWsM,UAKpC,GAAI,KAAKb,YAAa,OAGtB,IAAMhyB,EAA0B,CAC9BxwB,KAAM,eACNuN,MAAO,KAAKywB,MAAM6G,MAAMlnC,EAAQ,EAAGC,CAAG,EACtCD,MAAO,KAAKulC,kBAAkBvlC,CAAK,EACnCC,IAAK,KAAKslC,kBAAkBtlC,EAAMigD,EAAWlkC,MAAM,EACnDpL,IAAK,IAAI7Q,GAAeia,EAAU,KAAK4B,MAAMukB,YAAW,CAAE,GAE5D,OAAI,KAAK7rB,YAAW,KAAuB,KAAK8wC,UAAUvyB,CAAO,EAC1DA,CACT,CAEAuzB,gBAAgBC,EAA8C,CAC5D,IAAMrmD,EAAQ,KAAK4b,MAAM5K,IACrBgJ,EACC,KAAK6qC,cAAa7qC,EAAW,KAAK4B,MAAMukB,YAAW,GACxD,IAAIwC,EAAK,KAAKtC,MAAMC,WAAY,KAAK1kB,MAAM5K,KAAOq1C,CAAU,EAC5D,GAAI,KAAKzqC,MAAM5K,IAAM,KAAKgL,OACxB,KAAO,CAACq9B,GAAU1W,CAAE,GAAK,EAAE,KAAK/mB,MAAM5K,IAAM,KAAKgL,QAC/C2mB,EAAK,KAAKtC,MAAMC,WAAW,KAAK1kB,MAAM5K,GAAG,EAM7C,GAAI,KAAK6zC,YAAa,OAEtB,IAAM5kD,EAAM,KAAK2b,MAAM5K,IAGjB6hB,EAAyB,CAC7BxwB,KAAM,cACNuN,MAJY,KAAKywB,MAAM6G,MAAMlnC,EAAQqmD,EAAWpmD,CAAG,EAKnDD,MAAO,KAAKulC,kBAAkBvlC,CAAK,EACnCC,IAAK,KAAKslC,kBAAkBtlC,CAAG,EAC/B2Q,IAAK,IAAI7Q,GAAeia,EAAU,KAAK4B,MAAMukB,YAAW,CAAE,GAE5D,OAAI,KAAK7rB,YAAW,KAAuB,KAAK8wC,UAAUvyB,CAAO,EAC1DA,CACT,CAKAoqB,WAAkB,CAChB,IAAMqJ,EAAa,KAAK1qC,MAAM5K,IACxBiuC,EACJ,KAAK3qC,YAAW,KAA+B,CAAA,EAAK,KACtDiyC,EAAM,KAAO,KAAK3qC,MAAM5K,IAAM,KAAKgL,QAAQ,CACzC,IAAM2mB,EAAK,KAAKtC,MAAMC,WAAW,KAAK1kB,MAAM5K,GAAG,EAC/C,OAAQ2xB,EAAE,CACR,IAAA,IACA,IAAA,KACA,IAAA,GACE,EAAE,KAAK/mB,MAAM5K,IACb,MACF,IAAA,IAEI,KAAKqvB,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,IAAC,IAEzC,EAAE,KAAK4K,MAAM5K,IAGjB,IAAA,IACA,IAAA,MACA,IAAA,MACE,EAAE,KAAK4K,MAAM5K,IACb,EAAE,KAAK4K,MAAMi/B,QACb,KAAKj/B,MAAMk/B,UAAY,KAAKl/B,MAAM5K,IAClC,MAEF,IAAA,IACE,OAAQ,KAAKqvB,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,EAAC,CAC/C,IAAA,IAAyB,CACvB,IAAM6hB,EAAU,KAAK8T,iBAAiB,IAAI,EACtC9T,IAAYtgB,SACd,KAAKqgB,WAAWC,CAAO,EACvBosB,GAAU//B,KAAK2T,CAAO,GAExB,KACF,CAEA,IAAA,IAAsB,CACpB,IAAMA,EAAU,KAAKuzB,gBAAgB,CAAC,EAClCvzB,IAAYtgB,SACd,KAAKqgB,WAAWC,CAAO,EACvBosB,GAAU//B,KAAK2T,CAAO,GAExB,KACF,CAEA,QACE,MAAM0zB,CACV,CACA,MAEF,QACE,GAAI9M,GAAa9W,CAAE,EACjB,EAAE,KAAK/mB,MAAM5K,YAEb2xB,IAAqB,IACrB,CAAC,KAAK5X,UACN,KAAKzW,YAAW,KAChB,CACA,IAAMtD,EAAM,KAAK4K,MAAM5K,IACvB,GACE,KAAKqvB,MAAMC,WAAWtvB,EAAM,CAAC,IAAC,IAC9B,KAAKqvB,MAAMC,WAAWtvB,EAAM,CAAC,IAAC,KAC7Bs1C,IAAe,GAAK,KAAK1qC,MAAMk/B,UAAYwL,GAC5C,CAEA,IAAMzzB,EAAU,KAAKuzB,gBAAgB,CAAC,EAClCvzB,IAAYtgB,SACd,KAAKqgB,WAAWC,CAAO,EACvBosB,GAAU//B,KAAK2T,CAAO,EAE1B,KACE,OAAM0zB,CAEV,SACE5jB,IAAyB,IACzB,CAAC,KAAK5X,UACN,KAAKzW,YAAW,KAChB,CACA,IAAMtD,EAAM,KAAK4K,MAAM5K,IACvB,GACE,KAAKqvB,MAAMC,WAAWtvB,EAAM,CAAC,IAA+B,IAC5D,KAAKqvB,MAAMC,WAAWtvB,EAAM,CAAC,IAAoB,IACjD,KAAKqvB,MAAMC,WAAWtvB,EAAM,CAAC,IAAC,GAC9B,CAEA,IAAM6hB,EAAU,KAAKuzB,gBAAgB,CAAC,EAClCvzB,IAAYtgB,SACd,KAAKqgB,WAAWC,CAAO,EACvBosB,GAAU//B,KAAK2T,CAAO,EAE1B,KACE,OAAM0zB,CAEV,KACE,OAAMA,CAEZ,CACF,CAEA,GAAItH,GAAUjjC,OAAS,EAAG,CACxB,IAAM/b,EAAM,KAAK2b,MAAM5K,IACjBw1C,EAAuC,CAC3CxmD,MAAO,KAAKulC,kBAAkB+gB,CAAU,EACxCrmD,IAAK,KAAKslC,kBAAkBtlC,CAAG,EAC/Bg/C,SAAAA,EACAgB,YAAa,KACbI,aAAc,KACdF,eAAgB,MAElB,KAAKvkC,MAAMkkC,aAAa5gC,KAAKsnC,CAAiB,CAChD,CACF,CAOA9zB,YAAYrwB,EAAiBswB,EAAiB,CAC5C,KAAK/W,MAAM3b,IAAM,KAAK2b,MAAM5K,IAC5B,KAAK4K,MAAMnG,OAAS,KAAKmG,MAAMukB,YAAW,EAC1C,IAAM+c,EAAW,KAAKthC,MAAMvZ,KAC5B,KAAKuZ,MAAMvZ,KAAOA,EAClB,KAAKuZ,MAAMhM,MAAQ+iB,EAEd,KAAKkyB,aACR,KAAK5mC,cAAci/B,CAAQ,CAE/B,CAEAF,aAAa36C,EAAuB,CAClC,KAAKuZ,MAAMvZ,KAAOA,EAGlB,KAAK4b,cAAa,CACpB,CAYAwoC,sBAA6B,CAC3B,GAAI,KAAK7qC,MAAM5K,MAAQ,GAAK,KAAK01C,sBAAqB,EACpD,OAGF,IAAMC,EAAU,KAAK/qC,MAAM5K,IAAM,EAC3Bua,EAAO,KAAK2vB,eAAeyL,CAAO,EACxC,GAAIp7B,GAAI,IAAwBA,GAAI,GAClC,MAAM,KAAKxQ,MACT7I,EAAO/G,yBACP,KAAKyQ,MAAMukB,YAAW,CACxB,EAGF,GAEG5U,IAAI,KACFA,IAAoC,IACnC,KAAK1R,UAAU,gBAAgB,EACnC,CAMA,GADA,KAAK+sC,aAAa,gBAAgB,EAGhC,KAAK5uC,gBAAgB,iBAAkB,YAAY,IAAM,MAEzD,MAAM,KAAK+C,MACTwQ,IAAiC,IAC7BrZ,EAAO9H,6CACP8H,EAAOlH,4CACX,KAAK4Q,MAAMukB,YACb,CAAA,EAGF,KAAKvkB,MAAM5K,KAAO,EACdua,IAAI,IAEN,KAAKmH,YAAW,CAAc,EAG9B,KAAKA,YAAW,CAAgB,CAEpC,MAAWtI,GAAkBmB,CAAI,GAC/B,EAAE,KAAK3P,MAAM5K,IACb,KAAK0hB,YAA4B,IAAA,KAAKuN,UAAU1U,CAAI,CAAC,GAC5CA,IAAI,IACb,EAAE,KAAK3P,MAAM5K,IACb,KAAK0hB,YAA4B,IAAA,KAAKuN,UAAW,CAAA,GAEjD,KAAKM,SAAkB,GAAA,CAAC,CAE5B,CAEAsmB,eAAsB,CACpB,IAAMt7B,EAAO,KAAK8U,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,EACrD,GAAIua,GAAI,IAAwBA,GAAI,GAAsB,CACxD,KAAKu7B,WAAW,EAAI,EACpB,MACF,CAGEv7B,IAAsB,IACtB,KAAK8U,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,IAAC,IAEzC,KAAK4K,MAAM5K,KAAO,EAClB,KAAK0hB,YAAW,EAAY,IAE5B,EAAE,KAAK9W,MAAM5K,IACb,KAAK0hB,YAAW,EAAO,EAE3B,CAEAq0B,iBAAwB,CACT,KAAK1mB,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,IAC7C,GACN,KAAKuvB,SAAyB,GAAA,CAAC,EAE/B,KAAKA,SAAmB,GAAA,CAAC,CAE7B,CAEAmmB,uBAAiC,CAC/B,GAAI,KAAK9qC,MAAM5K,MAAQ,GAAK,KAAKgL,OAAS,EAAG,MAAO,GAEpD,IAAI2mB,EAAK,KAAKtC,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,EACjD,GAAI2xB,IAAE,GAAgC,MAAO,GAE7C,IAAM3iC,EAAQ,KAAK4b,MAAM5K,IAGzB,IAFA,KAAK4K,MAAM5K,KAAO,EAEX,CAACqoC,GAAU1W,CAAE,GAAK,EAAE,KAAK/mB,MAAM5K,IAAM,KAAKgL,QAC/C2mB,EAAK,KAAKtC,MAAMC,WAAW,KAAK1kB,MAAM5K,GAAG,EAG3C,IAAMpB,EAAQ,KAAKywB,MAAM6G,MAAMlnC,EAAQ,EAAG,KAAK4b,MAAM5K,GAAG,EAExD,YAAK0hB,YAAqC9iB,GAAAA,CAAK,EAExC,EACT,CAEAw2B,sBAAsB7lC,EAAoB,CAExC,IAAI8B,EAAO9B,IAAI,GAA6C,GAAA,GACxDymD,EAAQ,EACRz7B,EAAO,KAAK8U,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,EAG/CzQ,IAAI,IAA2BgrB,IAAI,KACrCy7B,IACAz7B,EAAO,KAAK8U,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,EAC/C3O,EAAkB,IAIhBkpB,IAAI,IAA2B,CAAC,KAAK3P,MAAMuX,SAC7C6zB,IAIA3kD,EAAO9B,IAAI,GAAwD,GAAA,IAGrE,KAAKggC,SAASl+B,EAAM2kD,CAAK,CAC3B,CAEAzgB,mBAAmBhmC,EAAoB,CAErC,IAAMgrB,EAAO,KAAK8U,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,EAErD,GAAIua,IAAShrB,EAAM,CACb,KAAK8/B,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,IAAC,GAC3C,KAAKuvB,SAAoB,GAAA,CAAC,EAE1B,KAAKA,SACHhgC,IAAI,IAAyD,GAAA,GAC7D,CACF,EAEF,MACF,CAEA,GAAIA,IAAI,IAA4B,CAElC,GAAIgrB,IAAI,GAA4B,CAClC,KAAKgV,SAAsB,GAAA,CAAC,EAC5B,MACF,CAEA,GAEE,KAAK1mB,UAAU,gBAAgB,GAC/B0R,IAAI,IACJ,CACA,GAAI,KAAKvT,gBAAgB,iBAAkB,YAAY,IAAM,MAC3D,MAAM,KAAK+C,MACT7I,EAAOhI,0CACP,KAAK0R,MAAMukB,YAAW,CACxB,EAEF,KAAKvkB,MAAM5K,KAAO,EAClB,KAAK0hB,YAAW,CAAa,EAC7B,MACF,CAGA,GAEE,KAAK7Y,UAAU,gBAAgB,GAC/B0R,IAAI,GACJ,CACA,GAAI,KAAKvT,gBAAgB,iBAAkB,YAAY,IAAM,MAC3D,MAAM,KAAK+C,MACT7I,EAAOpH,yCACP,KAAK8Q,MAAMukB,YAAW,CACxB,EAEF,KAAKvkB,MAAM5K,KAAO,EAClB,KAAK0hB,YAAW,CAAe,EAC/B,MACF,CACF,CAEA,GAAInH,IAAI,GAAyB,CAC/B,KAAKgV,SAAoB,GAAA,CAAC,EAC1B,MACF,CAEA,KAAKA,SACHhgC,IAAI,IAAyD,GAAA,GAC7D,CACF,CACF,CAEA0mD,iBAAwB,CACtB,IAAM17B,EAAO,KAAK8U,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,EAGjDua,IAAI,IAA2B,CAAC,KAAK3P,MAAMuX,OAI7C,KAAKoN,SAAuB,GAAA,CAAC,EAI7BhV,IAAwB,IAGxB,KAAK1R,UAAU,CACb,mBACA,CAAEqtC,SAAU,OAAQC,WAAY,IAAM,CAAA,CACvC,GAED,KAAK5mB,SAAyB,GAAA,CAAC,EAGX,KAAKF,MAAM+mB,YAAY,KAAKxrC,MAAM5K,GAAG,IAC1C,IACb,KAAK5J,WAAU,GAKjB,KAAKm5B,SAAwB,GAAA,CAAC,CAElC,CAEA8mB,kBAAyB,CACV,KAAKhnB,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,IAI/C,IACJ,KAAK6I,UAAU,CACb,mBACA,CAAEqtC,SAAU,OAAQC,WAAY,IAAM,CAAA,CACvC,EAED,KAAK5mB,SAAsB,GAAA,CAAC,EAI5B,KAAKA,SAAgB,GAAA,CAAC,CAE1B,CAEA+mB,mBAAmB/mD,EAAoB,CAErC,IAAMgrB,EAAO,KAAK8U,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,EAErD,GAAIua,IAAShrB,EAAM,CACjB,KAAKggC,SAAoB,GAAA,CAAC,EAC1B,MACF,CAEIhV,IAAI,GACN,KAAKgV,SAAoB,GAAA,CAAC,EAE1B,KAAKA,SAAqB,GAAA,CAAC,CAE/B,CAEAgJ,cAAqB,CAEnB,GAAM,CAAEv4B,IAAAA,GAAQ,KAAK4K,MACf2P,EAAO,KAAK8U,MAAMC,WAAWtvB,EAAM,CAAC,EAE1C,GAAIua,IAAI,GAAyB,CAC/B,GAAI,KAAK8U,MAAMC,WAAWtvB,EAAM,CAAC,IAAC,GAAyB,CACzD,KAAKuvB,SAAoB,GAAA,CAAC,EAC1B,MACF,CACA,KAAKA,SAAuB,GAAA,CAAC,EAC7B,MACF,CAEA,GAAIhV,IAAI,GAAyB,CAE/B,KAAKgV,SAAwB,GAAA,CAAC,EAC9B,MACF,CAEA,KAAKA,SAAgB,GAAA,CAAC,CACxB,CAEAiJ,cAAqB,CAEnB,GAAM,CAAEx4B,IAAAA,GAAQ,KAAK4K,MACf2P,EAAO,KAAK8U,MAAMC,WAAWtvB,EAAM,CAAC,EAE1C,GAAIua,IAAI,GAA4B,CAClC,IAAMg8B,EACJ,KAAKlnB,MAAMC,WAAWtvB,EAAM,CAAC,IAAC,GAA6B,EAAI,EACjE,GAAI,KAAKqvB,MAAMC,WAAWtvB,EAAMu2C,CAAI,IAAC,GAAyB,CAC5D,KAAKhnB,SAAQ,GAAYgnB,EAAO,CAAC,EACjC,MACF,CACA,KAAKhnB,SAAuBgnB,GAAAA,CAAI,EAChC,MACF,CAEA,GAAIh8B,IAAI,GAAyB,CAE/B,KAAKgV,SAAwB,GAAA,CAAC,EAC9B,MACF,CAEA,KAAKA,SAAgB,GAAA,CAAC,CACxB,CAEAinB,kBAAkBjnD,EAAoB,CAEpC,IAAMgrB,EAAO,KAAK8U,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,EACrD,GAAIua,IAAI,GAAyB,CAC/B,KAAKgV,SAEH,GAAA,KAAKF,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,IAAC,GACrC,EACA,CACN,EACA,MACF,CACA,GAAIzQ,IAAI,IAA2BgrB,IAAI,GAA4B,CAEjE,KAAK3P,MAAM5K,KAAO,EAClB,KAAK0hB,YAAW,EAAS,EACzB,MACF,CACA,KAAK6N,SAAShgC,IAAI,GAAyC,GAAA,GAAE,CAAC,CAChE,CAEAknD,oBAA2B,CAEzB,IAAMl8B,EAAO,KAAK8U,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,EAC/Cwa,EAAQ,KAAK6U,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,EAClDua,IAAI,GACFC,IAAK,GAEP,KAAK+U,SAAoB,GAAA,CAAC,EAG1B,KAAKA,SAA+B,GAAA,CAAC,EAGvChV,IAAI,IACJ,EAAEC,GAAK,IAAwBA,GAAyB,KAGxD,KAAK5P,MAAM5K,KAAO,EAClB,KAAK0hB,YAAW,EAAe,IAE/B,EAAE,KAAK9W,MAAM5K,IACb,KAAK0hB,YAAW,EAAY,EAEhC,CAEA0N,iBAAiB7/B,EAAoB,CACnC,OAAQA,EAAI,CAIV,IAAA,IACE,KAAKsmD,cAAa,EAClB,OAEF,IAAA,IACE,EAAE,KAAKjrC,MAAM5K,IACb,KAAK0hB,YAAW,EAAU,EAC1B,OACF,IAAA,IACE,EAAE,KAAK9W,MAAM5K,IACb,KAAK0hB,YAAW,EAAU,EAC1B,OACF,IAAA,IACE,EAAE,KAAK9W,MAAM5K,IACb,KAAK0hB,YAAW,EAAQ,EACxB,OACF,IAAA,IACE,EAAE,KAAK9W,MAAM5K,IACb,KAAK0hB,YAAW,EAAS,EACzB,OACF,IAAA,IACE,GAEE,KAAK7Y,UAAU,gBAAgB,GAC/B,KAAKwmB,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,IAAC,IACzC,CACA,GAAI,KAAKgH,gBAAgB,iBAAkB,YAAY,IAAM,MAC3D,MAAM,KAAK+C,MACT7I,EAAOnH,2CACP,KAAK6Q,MAAMukB,YAAW,CACxB,EAIF,KAAKvkB,MAAM5K,KAAO,EAClB,KAAK0hB,YAAW,CAAe,CACjC,KACE,EAAE,KAAK9W,MAAM5K,IACb,KAAK0hB,YAAW,CAAY,EAE9B,OACF,IAAA,IACE,EAAE,KAAK9W,MAAM5K,IACb,KAAK0hB,YAAW,CAAY,EAC5B,OACF,IAAA,KACE,GAEE,KAAK7Y,UAAU,gBAAgB,GAC/B,KAAKwmB,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,IAAC,IACzC,CACA,GAAI,KAAKgH,gBAAgB,iBAAkB,YAAY,IAAM,MAC3D,MAAM,KAAK+C,MACT7I,EAAO/H,4CACP,KAAKyR,MAAMukB,YAAW,CACxB,EAIF,KAAKvkB,MAAM5K,KAAO,EAClB,KAAK0hB,YAAW,CAAa,CAC/B,KACE,EAAE,KAAK9W,MAAM5K,IACb,KAAK0hB,YAAW,CAAU,EAE5B,OACF,IAAA,KACE,EAAE,KAAK9W,MAAM5K,IACb,KAAK0hB,YAAW,CAAU,EAC1B,OAEF,IAAA,IAEI,KAAK7Y,UAAU,cAAc,GAC7B,KAAKwmB,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,IAAC,GAEzC,KAAKuvB,SAAyB,GAAA,CAAC,GAE/B,EAAE,KAAK3kB,MAAM5K,IACb,KAAK0hB,YAAW,EAAS,GAE3B,OAEF,IAAA,IACE,KAAK+0B,mBAAkB,EACvB,OAEF,IAAA,IACE,KAAKC,kBAAiB,EACtB,OAEF,IAAA,IAAuB,CACrB,IAAMn8B,EAAO,KAAK8U,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,EAErD,GAAIua,IAAI,KAA6BA,IAAI,GAA2B,CAClE,KAAKo8B,gBAAgB,EAAE,EACvB,MACF,CAEA,GAAIp8B,IAAI,KAA6BA,IAAI,GAA2B,CAClE,KAAKo8B,gBAAgB,CAAC,EACtB,MACF,CAEA,GAAIp8B,IAAI,IAA6BA,IAAI,GAA2B,CAClE,KAAKo8B,gBAAgB,CAAC,EACtB,MACF,CACF,CAGA,IAAA,IACA,IAAA,IACA,IAAA,IACA,IAAA,IACA,IAAA,IACA,IAAA,IACA,IAAA,IACA,IAAA,IACA,IAAA,IACE,KAAKb,WAAW,EAAK,EACrB,OAGF,IAAA,IACA,IAAA,IACE,KAAKc,WAAWrnD,CAAI,EACpB,OAOF,IAAA,IACE,KAAKwmD,gBAAe,EACpB,OAEF,IAAA,IACA,IAAA,IACE,KAAK3gB,sBAAsB7lC,CAAI,EAC/B,OAEF,IAAA,KACA,IAAA,IACE,KAAKgmC,mBAAmBhmC,CAAI,EAC5B,OAEF,IAAA,IACE,KAAK0mD,gBAAe,EACpB,OAEF,IAAA,IACA,IAAA,IACE,KAAKK,mBAAmB/mD,CAAI,EAC5B,OAEF,IAAA,IACE,KAAKgpC,aAAY,EACjB,OAEF,IAAA,IACE,KAAKC,aAAY,EACjB,OAEF,IAAA,IACA,IAAA,IACE,KAAKge,kBAAkBjnD,CAAI,EAC3B,OAEF,IAAA,KACE,KAAKggC,SAAmB,GAAA,CAAC,EACzB,OAEF,IAAA,IACE,KAAK8mB,iBAAgB,EACrB,OAEF,IAAA,IACE,KAAKZ,qBAAoB,EACzB,OAEF,IAAA,IACE,KAAKoB,SAAQ,EACb,OAEF,QACE,GAAIz9B,GAAkB7pB,CAAI,EAAG,CAC3B,KAAKsnD,SAAStnD,CAAI,EAClB,MACF,CACJ,CAEA,MAAM,KAAKwa,MACT7I,EAAO/K,yBACP,KAAKyU,MAAMukB,YAAW,EACtB,CACE/4B,WAAYmH,OAAOC,cAAcjO,CAAI,CACvC,CACF,CACF,CAEAggC,SAASl+B,EAAiBklD,EAAoB,CAC5C,IAAM1E,EAAM,KAAKxiB,MAAM6G,MAAM,KAAKtrB,MAAM5K,IAAK,KAAK4K,MAAM5K,IAAMu2C,CAAI,EAClE,KAAK3rC,MAAM5K,KAAOu2C,EAClB,KAAK70B,YAAYrwB,EAAMwgD,CAAG,CAC5B,CAEAiF,YAAmB,CACjB,IAAM9tC,EAAW,KAAK4B,MAAM5B,SACtBha,EAAQ,KAAK4b,MAAM5b,MAAQ,EAC7B+nD,EAASt7B,EACT,CAAEzb,IAAAA,GAAQ,KAAK4K,MACnB,MAAS,EAAE5K,EAAK,CACd,GAAIA,GAAO,KAAKgL,OAEd,MAAM,KAAKjB,MACT7I,EAAOpF,mBACP1M,GAA+B4Z,EAAU,CAAC,CAC5C,EAEF,IAAM2oB,EAAK,KAAKtC,MAAMC,WAAWtvB,CAAG,EACpC,GAAIqoC,GAAU1W,CAAE,EACd,MAAM,KAAK5nB,MACT7I,EAAOpF,mBACP1M,GAA+B4Z,EAAU,CAAC,CAC5C,EAEF,GAAI+tC,EACFA,EAAU,OACL,CACL,GAAIplB,IAAE,GACJlW,EAAU,WACDkW,IAAmC,IAAIlW,EAChDA,EAAU,WACDkW,IAAE,IAAwB,CAAClW,EACpC,MAEFs7B,EAAUplB,IAA0B,EACtC,CACF,CACA,IAAMqlB,EAAU,KAAK3nB,MAAM6G,MAAMlnC,EAAOgR,CAAG,EAC3C,EAAEA,EAEF,IAAIi3C,EAAO,GAELtB,EAAUA,IAEdvmD,GAA+B4Z,EAAUhJ,EAAM,EAAIhR,CAAK,EAE1D,KAAOgR,EAAM,KAAKgL,QAAQ,CACxB,IAAM+pC,EAAK,KAAK7K,eAAelqC,CAAG,EAE5Bk3C,EAAO35C,OAAO+b,aAAay7B,CAAE,EAGnC,GAAIrB,GAAkBz5B,IAAI86B,CAAE,EACtBA,IAAE,IACAkC,EAAKtpB,SAAS,GAAG,GACnB,KAAK5jB,MAAM7I,EAAOlM,0BAA2B2gD,EAAS,CAAA,EAE/CZ,IAAE,KACPkC,EAAKtpB,SAAS,GAAG,GACnB,KAAK5jB,MAAM7I,EAAOlM,0BAA2B2gD,EAAS,CAAA,EAGtDsB,EAAKtpB,SAASupB,CAAI,GACpB,KAAKntC,MAAM7I,EAAOzN,qBAAsBkiD,EAAS,CAAA,UAE1Cp8B,GAAiBw7B,CAAE,GAAKA,IAAE,GACnC,KAAKhrC,MAAM7I,EAAOpK,qBAAsB6+C,EAAS,CAAA,MAEjD,OAGF,EAAE31C,EACFi3C,GAAQC,CACV,CACA,KAAKtsC,MAAM5K,IAAMA,EAEjB,KAAK0hB,YAAuB,IAAA,CAC1Ble,QAASwzC,EACTvzC,MAAOwzC,CACT,CAAC,CACH,CAWA7M,QACE70C,EACAm3C,EACA6F,EAAoB,GACpBG,EAAsC,GACvB,CACf,GAAM,CAAEF,EAAAA,EAAGxyC,IAAAA,CAAI,EAAIoqC,GACjB,KAAK/a,MACL,KAAKzkB,MAAM5K,IACX,KAAK4K,MAAMk/B,UACX,KAAKl/B,MAAMi/B,QACXt0C,EACAm3C,EACA6F,EACAG,EACA,KAAKoB,sBACa,EACpB,EACA,YAAKlpC,MAAM5K,IAAMA,EACVwyC,CACT,CAEAmE,gBAAgBphD,EAAqB,CACnC,IAAMvG,EAAQ,KAAK4b,MAAM5K,IACnBgJ,EAAW,KAAK4B,MAAMukB,YAAW,EACnCgoB,EAAW,GAEf,KAAKvsC,MAAM5K,KAAO,EAClB,IAAM2hB,EAAM,KAAKyoB,QAAQ70C,CAAK,EAC1BosB,GAAO,MACT,KAAK5X,MACH7I,EAAO5L,aAEPlG,GAA+B4Z,EAAU,CAAC,EAC1C,CACEzT,MAAAA,CACF,CACF,EAEF,IAAMglB,EAAO,KAAK8U,MAAMC,WAAW,KAAK1kB,MAAM5K,GAAG,EAEjD,GAAIua,IAAI,IACN,EAAE,KAAK3P,MAAM5K,IACbm3C,EAAW,WACF58B,IAAI,IACb,MAAM,KAAKxQ,MAAM7I,EAAO7L,eAAgB2T,CAAQ,EAGlD,GAAIoQ,GAAkB,KAAK8wB,eAAe,KAAKt/B,MAAM5K,GAAG,CAAC,EACvD,MAAM,KAAK+J,MAAM7I,EAAO3I,iBAAkB,KAAKqS,MAAMukB,YAAW,CAAE,EAGpE,GAAIgoB,EAAU,CACZ,IAAMtF,EAAM,KAAKxiB,MAAM6G,MAAMlnC,EAAO,KAAK4b,MAAM5K,GAAG,EAAEo3C,QAAQ,QAAS,EAAE,EACvE,KAAK11B,YAAuBmwB,IAAAA,CAAG,EAC/B,MACF,CAEA,KAAKnwB,YAAoBC,IAAAA,CAAG,CAC9B,CAIAm0B,WAAWuB,EAA8B,CACvC,IAAMroD,EAAQ,KAAK4b,MAAM5K,IACnBgJ,EAAW,KAAK4B,MAAMukB,YAAW,EACnCmoB,EAAU,GACVH,EAAW,GACXI,EAAc,GACdC,EAAU,GAEV,CAACH,GAAiB,KAAKjN,QAAQ,EAAE,IAAM,MACzC,KAAKrgC,MAAM7I,EAAOjL,cAAe,KAAK2U,MAAMukB,YAAW,CAAE,EAE3D,IAAMsoB,EACJ,KAAK7sC,MAAM5K,IAAMhR,GAAS,GAC1B,KAAKqgC,MAAMC,WAAWtgC,CAAK,IAAsB,GAEnD,GAAIyoD,EAAgB,CAClB,IAAMC,EAAU,KAAKroB,MAAM6G,MAAMlnC,EAAO,KAAK4b,MAAM5K,GAAG,EAEtD,GADA,KAAKk0C,uBAAuBhzC,EAAOhE,mBAAoB8L,CAAQ,EAC3D,CAAC,KAAK4B,MAAM6O,OAAQ,CAEtB,IAAMk+B,EAAgBD,EAAQvhB,QAAQ,GAAG,EACrCwhB,EAAgB,GAElB,KAAK5tC,MACH7I,EAAOzE,0BACPrN,GAA+B4Z,EAAU2uC,CAAa,CACxD,CAEJ,CACAH,EAAUC,GAAkB,CAAC,OAAOp+B,KAAKq+B,CAAO,CAClD,CAEA,IAAIn9B,EAAO,KAAK8U,MAAMC,WAAW,KAAK1kB,MAAM5K,GAAG,EAkC/C,GAjCIua,IAAI,IAAsB,CAACi9B,IAC7B,EAAE,KAAK5sC,MAAM5K,IACb,KAAKoqC,QAAQ,EAAE,EACfkN,EAAU,GACV/8B,EAAO,KAAK8U,MAAMC,WAAW,KAAK1kB,MAAM5K,GAAG,IAI1Cua,IAA6B,IAAIA,IAA6B,MAC/D,CAACi9B,IAEDj9B,EAAO,KAAK8U,MAAMC,WAAW,EAAE,KAAK1kB,MAAM5K,GAAG,GACzCua,IAAI,IAA2BA,IAAI,KACrC,EAAE,KAAK3P,MAAM5K,IAEX,KAAKoqC,QAAQ,EAAE,IAAM,MACvB,KAAKrgC,MAAM7I,EAAOhL,yBAA0B8S,CAAQ,EAEtDsuC,EAAU,GACVC,EAAc,GACdh9B,EAAO,KAAK8U,MAAMC,WAAW,KAAK1kB,MAAM5K,GAAG,GAGzCua,IAAI,OAGF+8B,GAAWG,IACb,KAAK1tC,MAAM7I,EAAOjM,qBAAsB+T,CAAQ,EAElD,EAAE,KAAK4B,MAAM5K,IACbm3C,EAAW,IAGwB58B,IAAI,IAA2B,CAClE,KAAKq7B,aAAa,UAAW,KAAKhrC,MAAMukB,YAAW,CAAE,GACjDooB,GAAeE,IACjB,KAAK1tC,MAAM7I,EAAO7L,eAAgB2T,CAAQ,EAE5C,EAAE,KAAK4B,MAAM5K,IAEb,IAAI43C,EAAY,EAClB,CAEA,GAAIx+B,GAAkB,KAAK8wB,eAAe,KAAKt/B,MAAM5K,GAAG,CAAC,EACvD,MAAM,KAAK+J,MAAM7I,EAAO3I,iBAAkB,KAAKqS,MAAMukB,YAAW,CAAE,EAIpE,IAAM0iB,EAAM,KAAKxiB,MAAM6G,MAAMlnC,EAAO,KAAK4b,MAAM5K,GAAG,EAAEo3C,QAAQ,SAAU,EAAE,EAExE,GAAID,EAAU,CACZ,KAAKz1B,YAAuBmwB,IAAAA,CAAG,EAC/B,MACF,CAEA,GAAqC+F,EAAW,CAC9C,KAAKl2B,YAAwBmwB,IAAAA,CAAG,EAChC,MACF,CAEA,IAAMlwB,EAAM61B,EAAUlF,SAAST,EAAK,CAAC,EAAIgG,WAAWhG,CAAG,EACvD,KAAKnwB,YAAoBC,IAAAA,CAAG,CAC9B,CAIAuwB,cAAcF,EAAwC,CACpD,GAAM,CAAEziD,KAAAA,EAAMyQ,IAAAA,CAAI,EAAIkyC,GACpB,KAAK7iB,MACL,KAAKzkB,MAAM5K,IACX,KAAK4K,MAAMk/B,UACX,KAAKl/B,MAAMi/B,QACXmI,EACA,KAAKgC,2BACP,EACA,YAAKppC,MAAM5K,IAAMA,EACVzQ,CACT,CAEAqnD,WAAW5M,EAAqB,CAC9B,GAAM,CAAE6H,IAAAA,EAAK7xC,IAAAA,EAAK6pC,QAAAA,EAASC,UAAAA,CAAU,EAAIsH,GACvCpH,IAAK,GAA+B,SAAW,SAC/C,KAAK3a,MACL,KAAKzkB,MAAM5K,IAAM,EACjB,KAAK4K,MAAMk/B,UACX,KAAKl/B,MAAMi/B,QACX,KAAKoK,uCACP,EACA,KAAKrpC,MAAM5K,IAAMA,EAAM,EACvB,KAAK4K,MAAMk/B,UAAYA,EACvB,KAAKl/B,MAAMi/B,QAAUA,EACrB,KAAKnoB,YAAuBmwB,IAAAA,CAAG,CACjC,CAGAiG,0BAAiC,CAC1B,KAAKj1B,MAAK,CAAU,GACvB,KAAKzsB,WAAW,KAAI,CAAW,EAGjC,KAAKwU,MAAM5K,MACX,KAAK02C,kBAAiB,CACxB,CAGAA,mBAA0B,CACxB,IAAMqB,EAAU,KAAK1oB,MAAM,KAAKzkB,MAAM5K,GAAG,EACnC,CAAE6xC,IAAAA,EAAKL,gBAAAA,EAAiBxxC,IAAAA,EAAK6pC,QAAAA,EAASC,UAAAA,CAAU,EACpDsH,GACE,WACA,KAAK/hB,MACL,KAAKzkB,MAAM5K,IAAM,EACjB,KAAK4K,MAAMk/B,UACX,KAAKl/B,MAAMi/B,QACX,KAAKsK,yCACP,EACF,KAAKvpC,MAAM5K,IAAMA,EAAM,EACvB,KAAK4K,MAAMk/B,UAAYA,EACvB,KAAKl/B,MAAMi/B,QAAUA,EAEjB2H,IACF,KAAK5mC,MAAMulC,8BAAgC,IAAI1hD,GAC7C+iD,EAAgB3H,QAChB2H,EAAgBxxC,IAAMwxC,EAAgB1H,UACtC,KAAKvV,kBAAkBid,EAAgBxxC,GAAG,CAC5C,GAGE,KAAKqvB,MAAM+mB,YAAYp2C,CAAG,IAAC,GAC7B,KAAK0hB,YAEH8vB,GAAAA,EAAkB,KAAOuG,EAAUlG,EAAM,GAC3C,GAEA,KAAKjnC,MAAM5K,MACX,KAAK0hB,YAEH8vB,GAAAA,EAAkB,KAAOuG,EAAUlG,EAAM,IAC3C,EAEJ,CAEAqC,uBAAuBgB,EAAmChlC,EAAc,CACtE,IAAMrhB,EAAQqhB,EAAGrhB,MAEb,KAAK+b,MAAM6O,QAAU,CAAC,KAAK7O,MAAMwlC,aAAan2B,IAAIprB,CAAK,EACzD,KAAKkb,MAAMmrC,EAAchlC,CAAE,EAE3B,KAAKtF,MAAMwlC,aAAahwC,IAAIvR,EAAO,CAACqmD,EAAchlC,CAAE,CAAC,CAEzD,CAWA+e,UAAU+oB,EAA4B,CACpC,KAAKptC,MAAMihB,YAAc,GACzB,IAAI/R,EAAO,GACL9qB,EAAQ,KAAK4b,MAAM5K,IACrBwpC,EAAa,KAAK5+B,MAAM5K,IAK5B,IAJIg4C,IAAcz2C,SAChB,KAAKqJ,MAAM5K,KAAOg4C,GAAa,MAAS,EAAI,GAGvC,KAAKptC,MAAM5K,IAAM,KAAKgL,QAAQ,CACnC,IAAM2mB,EAAK,KAAKuY,eAAe,KAAKt/B,MAAM5K,GAAG,EAC7C,GAAIuZ,GAAiBoY,CAAE,EACrB,KAAK/mB,MAAM5K,KAAO2xB,GAAM,MAAS,EAAI,UAC5BA,IAAE,GAA0B,CACrC,KAAK/mB,MAAMihB,YAAc,GAEzB/R,GAAQ,KAAKuV,MAAM6G,MAAMsT,EAAY,KAAK5+B,MAAM5K,GAAG,EACnD,IAAMi4C,EAAW,KAAKrtC,MAAMukB,YAAW,EACjC+oB,EACJ,KAAKttC,MAAM5K,MAAQhR,EAAQoqB,GAAoBG,GAEjD,GAAI,KAAK8V,MAAMC,WAAW,EAAE,KAAK1kB,MAAM5K,GAAG,IAAC,IAA2B,CACpE,KAAK+J,MAAM7I,EAAOxJ,qBAAsB,KAAKkT,MAAMukB,YAAW,CAAE,EAChEqa,EAAa,KAAK5+B,MAAM5K,IAAM,EAC9B,QACF,CAEA,EAAE,KAAK4K,MAAM5K,IACb,IAAMm4C,EAAM,KAAKjG,cAAc,EAAI,EAC/BiG,IAAQ,OACLD,EAAgBC,CAAG,GACtB,KAAKpuC,MAAM7I,EAAOvN,2BAA4BskD,CAAQ,EAGxDn+B,GAAQvc,OAAOC,cAAc26C,CAAG,GAElC3O,EAAa,KAAK5+B,MAAM5K,GAC1B,KACE,MAEJ,CACA,OAAO8Z,EAAO,KAAKuV,MAAM6G,MAAMsT,EAAY,KAAK5+B,MAAM5K,GAAG,CAC3D,CAKA62C,SAASmB,EAA0B,CACjC,IAAMl+B,EAAO,KAAKmV,UAAU+oB,CAAS,EAC/B3mD,EAAO+mD,GAAaj4C,IAAI2Z,CAAI,EAC9BzoB,IAASkQ,OAGX,KAAKmgB,YAAYrwB,EAAM+mB,GAAe/mB,CAAI,CAAC,EAE3C,KAAKqwB,YAAqB5H,IAAAA,CAAI,CAElC,CAEAu6B,qBAA4B,CAC1B,GAAM,CAAEhjD,KAAAA,GAAS,KAAKuZ,MAClBkN,GAAezmB,CAAI,GAAK,KAAKuZ,MAAMihB,aACrC,KAAK9hB,MAAM7I,EAAOxL,2BAA4B,KAAKkV,MAAM5B,SAAU,CACjErT,aAAcyiB,GAAe/mB,CAAI,CACnC,CAAC,CAEL,CAcA0Y,MACEmrC,EACAhlC,EACArQ,EAAwB,CAAA,EACE,CAC1B,IAAMD,EAAMsQ,aAAczhB,GAAWyhB,EAAKA,EAAGtQ,IAAI5Q,MAC3C8Q,EAAQo1C,EAAat1C,EAAKC,CAAO,EAEvC,GAAI,EAAE,KAAKyD,YAAW,MAA+B,MAAMxD,EAC3D,OAAK,KAAK+zC,aAAa,KAAKjpC,MAAMglC,OAAO1hC,KAAKpO,CAAK,EAE5CA,CACT,CAQAu4C,eACEnD,EACAhlC,EACArQ,EAAwB,CAAA,EACU,CAClC,IAAMD,EAAMsQ,aAAczhB,GAAWyhB,EAAKA,EAAGtQ,IAAI5Q,MAC3CgR,EAAMJ,EAAI/Q,MACV+gD,EAAS,KAAKhlC,MAAMglC,OAE1B,QAASz2B,EAAIy2B,EAAO5kC,OAAS,EAAGmO,GAAK,EAAGA,IAAK,CAC3C,IAAMrZ,EAAQ8vC,EAAOz2B,CAAC,EACtB,GAAIrZ,EAAMF,IAAI/Q,QAAUmR,EACtB,OAAQ4vC,EAAOz2B,CAAC,EAAI+7B,EAAat1C,EAAKC,CAAO,EAE/C,GAAIC,EAAMF,IAAI/Q,MAAQmR,EAAK,KAC7B,CAEA,OAAO,KAAK+J,MAAMmrC,EAAchlC,EAAIrQ,CAAO,CAC7C,CAIAoN,cAAci/B,EAA2B,CAAC,CAG1C91C,WAAWwJ,EAAuBvO,EAAwB,CACxD,MAAM,KAAK0Y,MACT7I,EAAOpG,gBACP8E,GAAoB,KAAKgL,MAAM5B,SAC/B,CACEjO,SAAU1J,EAAO+mB,GAAe/mB,CAAI,EAAI,IAC1C,CACF,CACF,CAEAukD,aAAajI,EAAoB/tC,EAAsB,CACrD,GAAI,KAAKiJ,UAAU8kC,CAAU,EAC3B,MAAO,GAGT,MAAM,KAAK5jC,MACT7I,EAAOhK,cACP0I,GAAoB,KAAKgL,MAAM5B,SAC/B,CACE7R,cAAe,CAACw2C,CAAU,CAC5B,CACF,CACF,CAEA2K,gBAAgBC,EAA6B,CAC3C,GAAI,CAACA,EAAYC,KAAKnhD,GAAQ,KAAKwR,UAAUxR,CAAI,CAAC,EAChD,MAAM,KAAK0S,MAAM7I,EAAOzJ,oBAAqB,KAAKmT,MAAM5B,SAAU,CAChE7R,cAAeohD,CACjB,CAAC,CAEL,CAEAxE,aAAaj0C,EAAsC,CACjD,MAAO,CAACE,EAAa8pC,EAAmBD,IAAoB,CAC1D,KAAK9/B,MAAMjK,EAAO2zC,GAAczzC,EAAK8pC,EAAWD,CAAO,CAAC,EAE5D,CAoDF,ECxlDa4O,GAAN,KAAiB,CAAA/pD,aAAA,CAAA,KAEtBgqD,aAA4B,IAAIh7C,IAAK,KAGrCi7C,cAA+C,IAAIxrC,IAAK,KAIxDyrC,sBAA+C,IAAIzrC,GAAK,CAC1D,EAEqB0rC,GAAN,KAAwB,CAKrCnqD,YAAYqsB,EAAmB,CAAA,KAJ/BA,OAAM,OAAA,KACNoS,MAA2B,CAAA,EAAE,KAC7ByrB,sBAA+C,IAAIzrC,IAGjD,KAAK4N,OAASA,CAChB,CAEAT,SAAsB,CACpB,OAAO,KAAK6S,MAAM,KAAKA,MAAMniB,OAAS,CAAC,CACzC,CAEAkR,OAAQ,CACN,KAAKiR,MAAMjf,KAAK,IAAIuqC,EAAY,CAClC,CAEAt8B,MAAO,CACL,IAAM28B,EAAgB,KAAK3rB,MAAMzU,IAAG,EAK9B4B,EAAU,KAAKA,QAAO,EAG5B,OAAW,CAACjjB,EAAMuI,CAAG,IAAKY,MAAMu4C,KAAKD,EAAcF,qBAAqB,EAClEt+B,EACGA,EAAQs+B,sBAAsB3+B,IAAI5iB,CAAI,GACzCijB,EAAQs+B,sBAAsBx4C,IAAI/I,EAAMuI,CAAG,EAG7C,KAAKmb,OAAOhR,MAAM7I,EAAO5K,8BAA+BsJ,EAAK,CAC3DzQ,eAAgBkI,CAClB,CAAC,CAGP,CAEA2hD,mBACE3hD,EACAszB,EACA/qB,EACA,CACA,GAAM,CAAE84C,aAAAA,EAAcC,cAAAA,EAAeC,sBAAAA,CAAsB,EACzD,KAAKt+B,QAAO,EACV2+B,EAAYP,EAAaz+B,IAAI5iB,CAAI,EAErC,GAAIszB,EAAW,EAAmC,CAChD,IAAMuuB,EAAWD,GAAaN,EAAcx4C,IAAI9I,CAAI,EACpD,GAAI6hD,EAAU,CACZ,IAAMC,EAAYD,EAAQ,EACpBE,EAAYzuB,EAAW,EAEvB0uB,EAAUH,EAAQ,EAClBI,EAAU3uB,EAAW,EAK3BsuB,EAAYI,IAAYC,GAAWH,IAAcC,EAE5CH,GAAWN,EAAcl8B,OAAOplB,CAAI,CAC3C,MAAY4hD,GACVN,EAAcv4C,IAAI/I,EAAMszB,CAAW,CAEvC,CAEIsuB,GACF,KAAKl+B,OAAOhR,MAAM7I,EAAOjI,yBAA0B2G,EAAK,CACtDzQ,eAAgBkI,CAClB,CAAC,EAGHqhD,EAAa37B,IAAI1lB,CAAI,EACrBuhD,EAAsBn8B,OAAOplB,CAAI,CACnC,CAEAuS,eAAevS,EAAcuI,EAAe,CAC1C,IAAI+J,EACJ,IAAKA,KAAc,KAAKwjB,MACtB,GAAIxjB,EAAW+uC,aAAaz+B,IAAI5iB,CAAI,EAAG,OAGrCsS,EACFA,EAAWivC,sBAAsBx4C,IAAI/I,EAAMuI,CAAG,EAG9C,KAAKmb,OAAOhR,MAAM7I,EAAO5K,8BAA+BsJ,EAAK,CAC3DzQ,eAAgBkI,CAClB,CAAC,CAEL,CACF,ECrDMkiD,GAAN,KAAsB,CAGpB7qD,YAAY2C,EAAyB,EAAoC,CACvE,KAAKA,KAAOA,CACd,CAEAmoD,gCAAgE,CAC9D,OACE,KAAKnoD,OAAI,GACT,KAAKA,OAA4D,CAErE,CAEAooD,iCAAkC,CAChC,OAAO,KAAKpoD,OAAkD,CAChE,CACF,EAUMqoD,GAAN,cAAoCH,EAAgB,CAGlD7qD,YACE2C,EAGA,CACA,MAAMA,CAAI,EAAE,KAPdsoD,kBACE,IAAIxsC,GAON,CACAysC,uBACEC,EACA3pC,EACA,CACA,IAAMrhB,EAAQqhB,EAAGrhB,MAEjB,KAAK8qD,kBAAkBv5C,IAAIvR,EAAO,CAACgrD,EAAmB3pC,CAAE,CAAC,CAC3D,CACA4pC,sBAAsBjrD,EAAe,CACnC,KAAK8qD,kBAAkBl9B,OAAO5tB,CAAK,CACrC,CACAkrD,cACEC,EACA,CACA,KAAKL,kBAAkBh1B,QAAQq1B,CAAQ,CACzC,CACF,EAEqBC,GAAN,KAA6B,CAI1CvrD,YAAYqsB,EAAmB,CAAA,KAH/BA,OAAM,OAAA,KACNoS,MAAgC,CAAC,IAAIosB,EAAiB,EAGpD,KAAKx+B,OAASA,CAChB,CACAmB,MAAME,EAAwB,CAC5B,KAAK+Q,MAAMjf,KAAKkO,CAAK,CACvB,CAEAD,MAAO,CACL,KAAKgR,MAAMzU,IAAG,CAChB,CASAwhC,gCACEhF,EACA9jD,EACM,CACN,IAAM+oD,EAAS/oD,EAAKwO,IAAI5Q,MAClB,CAAEm+B,MAAAA,CAAO,EAAG,KACdhU,EAAIgU,EAAMniB,OAAS,EACnBoR,EAAyB+Q,EAAMhU,CAAC,EACpC,KAAO,CAACiD,EAAMq9B,gCAA+B,GAAI,CAC/C,GAAIr9B,EAAMo9B,+BAA8B,EACtCp9B,EAAMw9B,uBAAuB1E,EAAciF,CAAM,MAIjD,QAEF/9B,EAAQ+Q,EAAM,EAAEhU,CAAC,CACnB,CACA,KAAK4B,OAAOhR,MAAMmrC,EAAciF,CAAM,CACxC,CAqBAC,iCACEt6C,EACA1O,EACM,CACN,GAAM,CAAE+7B,MAAAA,CAAO,EAAG,KACZ/Q,EAAyB+Q,EAAMA,EAAMniB,OAAS,CAAC,EAC/CmvC,EAAS/oD,EAAKwO,IAAI5Q,MACxB,GAAIotB,EAAMq9B,gCAA+B,EACvC,KAAK1+B,OAAOhR,MAAMjK,EAAOq6C,CAAM,UACtB/9B,EAAMo9B,+BAA8B,EAC7Cp9B,EAAMw9B,uBAAuB95C,EAAOq6C,CAAM,MAE1C,OAEJ,CAQAE,gCAAgCnqC,EAAoB,CAClD,GAAM,CAAEid,MAAAA,CAAO,EAAG,KACdhU,EAAIgU,EAAMniB,OAAS,EACnBoR,EAAyB+Q,EAAMhU,CAAC,EACpC,KAAOiD,EAAMo9B,+BAA8B,GAEvCp9B,EAAM/qB,OAAI,GAEV+qB,EAAMw9B,uBAAuB14C,EAAOtP,uBAAwBse,CAAE,EAEhEkM,EAAQ+Q,EAAM,EAAEhU,CAAC,CAErB,CAEAmhC,mBAA0B,CACxB,GAAM,CAAEntB,MAAAA,CAAO,EAAG,KACZhS,EAAegS,EAAMA,EAAMniB,OAAS,CAAC,EACtCmQ,EAAaq+B,+BAA8B,GAChDr+B,EAAa4+B,cAAc,CAAC,CAAC7E,EAAct1C,CAAG,IAAM,CAClD,KAAKmb,OAAOhR,MAAMmrC,EAAct1C,CAAG,EAEnC,IAAIuZ,EAAIgU,EAAMniB,OAAS,EACnBoR,EAAQ+Q,EAAMhU,CAAC,EACnB,KAAOiD,EAAMo9B,+BAA8B,GACzCp9B,EAAM09B,sBAAsBl6C,EAAI/Q,KAAK,EACrCutB,EAAQ+Q,EAAM,EAAEhU,CAAC,CAErB,CAAC,CACH,CACF,EAEO,SAASohC,IAA+B,CAC7C,OAAO,IAAIhB,GAAe,CAA0C,CACtE,CAEO,SAASiB,IAAoB,CAClC,OAAO,IAAId,GAAqB,CAEhC,CACF,CAEO,SAASe,IAAqB,CACnC,OAAO,IAAIf,GAAqB,CAEhC,CACF,CAEO,SAASgB,IAAqB,CACnC,OAAO,IAAInB,EACb,CC1Me,IAAeoB,GAAf,cAAkC/G,EAAU,CAIzDgH,SACExpD,EACA2G,EACA6G,EACAE,EAAsB,GAChB,CACN,GAAI,CAAC1N,EAAM,OAEX,GAAI,CAAE8T,MAAAA,CAAO,EAAG9T,EACZ8T,GAAS,OACXA,EAAQ,CAAA,EACR9T,EAAK8T,MAAQA,GAGXpG,EACFoG,EAAMnN,CAAG,EAAI6G,EAEbjB,OAAOkB,eAAeqG,EAAOnN,EAAK,CAAE+G,WAAAA,EAAYF,MAAAA,CAAM,CAAC,CAE3D,CAIAqlB,aAAahmB,EAA2B,CACtC,OAAO,KAAK2M,MAAMvZ,OAAS4M,GAAS,CAAC,KAAK2M,MAAMihB,WAClD,CAEAgvB,qBAAqBC,EAAmBzjD,EAAuB,CAC7D,GAAI,KAAKg4B,MAAM0rB,WAAW1jD,EAAMyjD,CAAS,EAAG,CAC1C,IAAM5uB,EAAS,KAAKmD,MAAMC,WAAWwrB,EAAYzjD,EAAK2T,MAAM,EAC5D,MAAO,EACLuO,GAAiB2S,CAAM,IAItBA,EAAS,SAAY,MAE1B,CACA,MAAO,EACT,CAEAmG,sBAAsBh7B,EAAuB,CAC3C,IAAMkjB,EAAO,KAAK8d,eAAc,EAChC,OAAO,KAAKwiB,qBAAqBtgC,EAAMljB,CAAI,CAC7C,CAIAysB,cAAc7lB,EAA2B,CACvC,OAAI,KAAKgmB,aAAahmB,CAAK,GACzB,KAAKsc,KAAI,EACF,IAEF,EACT,CAIAiI,iBACEvkB,EACAi3C,EACM,CACN,GAAI,CAAC,KAAKpxB,cAAc7lB,CAAK,EAAG,CAC9B,GAAIi3C,GAAgB,KAClB,MAAM,KAAKnrC,MAAMmrC,EAAc,KAAKtqC,MAAM5B,QAAQ,EAEpD,KAAK5S,WAAW,KAAM6H,CAAK,CAC7B,CACF,CAIAysB,oBAA8B,CAC5B,OACE,KAAK7H,MAAY,GAAA,GACjB,KAAKA,MAAK,CAAU,GACpB,KAAKm4B,sBAAqB,CAE9B,CAEAA,uBAAiC,CAC/B,OAAO1S,GACL,KAAKjZ,MACL,KAAKzB,kBAAkB,KAAKhjB,MAAMmB,cAAcld,KAAK,EACrD,KAAK+b,MAAM5b,KACb,CACF,CAEAisD,uBAAiC,CAC/B,OAAO3S,GAAW,KAAKjZ,MAAO,KAAKzkB,MAAM3b,IAAK,KAAKopC,eAAc,CAAE,CACrE,CAEA6iB,kBAA4B,CAC1B,OAAO,KAAKz4B,IAAW,EAAA,GAAK,KAAKiI,mBAAkB,CACrD,CAKAhH,UAAUy3B,EAAoB,GAAY,EACpCA,EAAW,KAAKD,iBAAgB,EAAK,KAAKz4B,IAAG,EAAQ,IACzD,KAAK1Y,MAAM7I,EAAOjK,iBAAkB,KAAK2T,MAAMmB,aAAa,CAC9D,CAKAqW,OAAO/wB,EAAiBuO,EAA6B,CAC9C,KAAK6iB,IAAIpxB,CAAI,GAChB,KAAK+E,WAAWwJ,EAAKvO,CAAI,CAE7B,CAIA8hC,SACEioB,EACAC,EAAkB,KAAKzwC,MAAMyhB,MAAK,EAIa,CAC/C,IAAMivB,EAEF,CAAElqD,KAAM,MACZ,GAAI,CACF,IAAMA,EAAOgqD,EAAG,CAAChqD,EAAO,OAAS,CAC/BkqD,MAAAA,EAAYlqD,KAAOA,EAEbkqD,CACR,CAAC,EACD,GAAI,KAAK1wC,MAAMglC,OAAO5kC,OAASqwC,EAASzL,OAAO5kC,OAAQ,CACrD,IAAM6oB,EAAY,KAAKjpB,MACvB,YAAKA,MAAQywC,EAIb,KAAKzwC,MAAMylC,aAAexc,EAAUwc,aAC7B,CACLj/C,KAAAA,EACA0O,MAAO+zB,EAAU+b,OAAOyL,EAASzL,OAAO5kC,MAAM,EAC9C8oB,OAAQ,GACRH,QAAS,GACTE,UAAAA,EAEJ,CAEA,MAAO,CACLziC,KAAAA,EACA0O,MAAO,KACPg0B,OAAQ,GACRH,QAAS,GACTE,UAAW,KAEd,OAAQ/zB,EAAO,CACd,IAAM+zB,EAAY,KAAKjpB,MAEvB,GADA,KAAKA,MAAQywC,EACTv7C,aAAiBC,YAEnB,MAAO,CAAE3O,KAAM,KAAM0O,MAAAA,EAAOg0B,OAAQ,GAAMH,QAAS,GAAOE,UAAAA,GAE5D,GAAI/zB,IAAUw7C,EACZ,MAAO,CACLlqD,KAAMkqD,EAAYlqD,KAClB0O,MAAO,KACPg0B,OAAQ,GACRH,QAAS,GACTE,UAAAA,GAIJ,MAAM/zB,CACR,CACF,CAEAy7C,sBACEryC,EACAsyC,EACA,CACA,GAAI,CAACtyC,EAAqB,MAAO,GACjC,GAAM,CACJuyC,mBAAAA,EACAC,eAAAA,EACAC,cAAAA,EACAC,sBAAAA,EACAC,eAAAA,CACD,EAAG3yC,EAEE4yC,EACJ,CAAC,CAACL,GACF,CAAC,CAACC,GACF,CAAC,CAACE,GACF,CAAC,CAACD,GACF,CAAC,CAACE,EAEJ,GAAI,CAACL,EACH,OAAOM,EAGLL,GAAsB,MACxB,KAAK1xC,MAAM7I,EAAO9L,4BAA6BqmD,CAAkB,EAG/DC,GAAkB,MACpB,KAAK3xC,MAAM7I,EAAO1N,eAAgBkoD,CAAc,EAG9CC,GAAiB,MACnB,KAAK5xC,MAAM7I,EAAOvG,uBAAwBghD,CAAa,EAGrDC,GAAyB,MAC3B,KAAKxlD,WAAWwlD,CAAqB,EAGnCC,GAAkB,MACpB,KAAK9xC,MAAM7I,EAAO/L,2BAA4B0mD,CAAc,CAEhE,CAWAE,uBAAiC,CAC/B,OAAOvkC,GAA2B,KAAK5M,MAAMvZ,IAAI,CACnD,CAMA+V,cAAchW,EAAiC,CAC7C,OAAOA,EAAKC,OAAS,aACvB,CAOA6V,iBAAiB9V,EAA2B,CAC1C,OAAOA,EAAK+V,GAAG9P,IACjB,CAOAoU,yBAAyBra,EAAqB,CAC5C,OACGA,EAAKC,OAAS,oBACbD,EAAKC,OAAS,6BAChB,KAAK+V,cAAchW,EAAKo4B,QAAQ,CAEpC,CAEAzjB,iBACE3U,EACmD,CACnD,OAAOA,EAAKC,OAAS,gBACvB,CAEAqa,eAAeta,EAAkC,CAC/C,OAAOA,EAAKC,OAAS,cACvB,CAEA2qD,iBAEEjiC,EAAoB,KAAKlX,QAAQxB,aAAe,SACpC,CAEZ,IAAM46C,EAAY,KAAKrxC,MAAMqlC,OAC7B,KAAKrlC,MAAMqlC,OAAS,CAAA,EAEpB,IAAMiM,EAAyB,KAAKC,oBACpC,KAAKA,oBAAsB,IAAIz+C,IAG/B,IAAM0+C,EAAc,KAAKriC,SACzB,KAAKA,SAAWA,EAEhB,IAAMsiC,EAAW,KAAKjgC,MAChBtB,EAAe,KAAK0G,gBAAe,EACzC,KAAKpF,MAAQ,IAAItB,EAAa,KAAMf,CAAQ,EAE5C,IAAMuiC,EAAe,KAAKC,UAC1B,KAAKA,UAAY,IAAI1P,GAErB,IAAMiM,EAAgB,KAAKnvC,WAC3B,KAAKA,WAAa,IAAIkvC,GAAkB,IAAI,EAE5C,IAAM2D,EAAqB,KAAKC,gBAChC,YAAKA,gBAAkB,IAAIxC,GAAuB,IAAI,EAE/C,IAAM,CAEX,KAAKrvC,MAAMqlC,OAASgM,EACpB,KAAKE,oBAAsBD,EAG3B,KAAKniC,SAAWqiC,EAChB,KAAKhgC,MAAQigC,EACb,KAAKE,UAAYD,EACjB,KAAK3yC,WAAamvC,EAClB,KAAK2D,gBAAkBD,EAE3B,CAEAE,oBAAqB,CACnB,IAAIC,EAAU,GAEZ,KAAK5iC,UACL,KAAKzW,YAAW,KAEhBq5C,GAAU,GAER,KAAKr5C,YAAW,KAClBq5C,GAAU,GAIZ,IAAMC,EAAa,CAAC,KAAK7iC,UAAY,KAAKlX,QAAQxB,aAAe,YAE/Du7C,GACA,KAAKt5C,YAAW,KAEhBq5C,GAAU,GAEZ,KAAKJ,UAAUrgC,MAAMygC,CAAU,EAC/B,IAAIE,EAAaD,EAAU,IAAA,EACvB,KAAKt5C,YAAW,IAClBu5C,GAAU,KAEZ,KAAKzgC,MAAMF,MAAM2gC,CAAU,CAC7B,CAEAC,0BAA0B5zC,EAAuC,CAC/D,GAAM,CAAEyyC,cAAAA,CAAe,EAAGzyC,EACtByyC,IAAkB,MACpB,KAAK/F,aAAa,uBAAwB+F,CAAa,CAE3D,CACF,EAeaoB,GAAN,KAAuB,CAAAruD,aAAA,CAAA,KAC5B+sD,mBAAkD,KAAI,KACtDC,eAA8C,KAAI,KAClDC,cAA6C,KAAI,KACjDC,sBAAqD,KAAI,KACzDC,eAA8C,IAAI,CACpD,EClZMmB,GAAN,KAA+B,CAC7BtuD,YAAYqsB,EAAoB/a,EAAaJ,EAAe,CAAA,KAQ5DvO,KAAe,GAPb,KAAKrC,MAAQgR,EACb,KAAK/Q,IAAM,EACX,KAAK2Q,IAAM,IAAI7Q,GAAe6Q,CAAG,EAC7Bmb,GAAQzX,YAAW,MAAuB,KAAKkC,MAAQ,CAACxF,EAAK,CAAC,GAC9D+a,GAAM,MAANA,EAAQ7rB,WAAU,KAAK0Q,IAAI1Q,SAAW6rB,EAAO7rB,SACnD,CAaF,EACM+tD,GAAgBD,GAAKr3C,UAIzBs3C,GAAcC,QAAU,UAAkB,CACxC,IAAMpvB,EAAU,IAAIkvB,GAAKz7C,OAAW,KAAKvS,MAAO,KAAK4Q,IAAI5Q,KAAK,EACxD4R,EAAOjD,OAAOiD,KAAK,IAAI,EAC7B,QAASuY,EAAI,EAAGnO,EAASpK,EAAKoK,OAAQmO,EAAInO,EAAQmO,IAAK,CACrD,IAAMphB,EAAM6I,EAAKuY,CAAC,EAGhBphB,IAAQ,mBACRA,IAAQ,oBACRA,IAAQ,kBAGR+1B,EAAQ/1B,CAAG,EAAI,KAAKA,CAAG,EAE3B,CAEA,OAAO+1B,GAMJ,IAAeqvB,GAAf,cAAiCxC,EAAW,CACjD7yC,WAAmD,CACjD,IAAMlI,EAAM,KAAKgL,MAAM5B,SACvB,OAAO,IAAIg0C,GAAK,KAAMp9C,EAAI/Q,MAAO+Q,CAAG,CACtC,CAEAyoB,YAAwCzoB,EAA0B,CAChE,OAAO,IAAIo9C,GAAK,KAAMp9C,EAAI/Q,MAAO+Q,CAAG,CACtC,CAGA+E,gBACEtT,EACW,CACX,OAAO,KAAKg3B,YAAYh3B,EAAKuO,IAAI5Q,KAAK,CACxC,CAIAoZ,WAA+BhX,EAAiBC,EAAoB,CAClE,OAAO,KAAKwT,aAAazT,EAAMC,EAAM,KAAKuZ,MAAMmB,aAAa,CAC/D,CAIAlH,aACEzT,EACAC,EACAoT,EACG,CAOFrT,OAAAA,EAAWC,KAAOA,EACnBD,EAAKnC,IAAMwV,EAAO5V,MAClBuC,EAAKwO,IAAI3Q,IAAMwV,EACX,KAAKnB,YAAW,MAAuBlS,EAAKoU,MAAM,CAAC,EAAIf,EAAO5V,OAC9D,KAAKyU,YAAW,MAClB,KAAKurC,eAAez9C,CAAS,EAExBA,CACT,CAEA+Z,mBAAmB/Z,EAAgB4X,EAA0B,CAC3D5X,EAAKpC,MAAQga,EAASna,MACtBuC,EAAKwO,IAAI5Q,MAAQga,EACb,KAAK1F,YAAW,MAAuBlS,EAAKoU,MAAM,CAAC,EAAIwD,EAASna,MACtE,CAEAid,iBACE1a,EACAqT,EAAmB,KAAKmG,MAAMmB,cACxB,CACN3a,EAAKnC,IAAMwV,EAAO5V,MAClBuC,EAAKwO,IAAI3Q,IAAMwV,EACX,KAAKnB,YAAW,MAAuBlS,EAAKoU,MAAM,CAAC,EAAIf,EAAO5V,MACpE,CAKAmZ,2BAA2B5W,EAAgBgsD,EAA8B,CACvE,KAAKjyC,mBAAmB/Z,EAAMgsD,EAAax9C,IAAI5Q,KAAK,CACtD,CAEAgW,WACE5T,EACAC,EACgC,CAChCD,OAAAA,EAAKC,KAAOA,EACLD,CACT,CAEAwa,gBAAoDxa,EAAY,CAI9D,GAAM,CAAEC,KAAAA,EAAMrC,MAAAA,EAAOC,IAAAA,EAAK2Q,IAAAA,EAAK4F,MAAAA,EAAOnO,KAAAA,CAAM,EAAGjG,EACzCqU,EAAS9H,OAAO+H,OAAOu3C,EAAa,EAC1Cx3C,OAAAA,EAAOpU,KAAOA,EACdoU,EAAOzW,MAAQA,EACfyW,EAAOxW,IAAMA,EACbwW,EAAO7F,IAAMA,EACb6F,EAAOD,MAAQA,EACfC,EAAOpO,KAAOA,EACVjG,EAAK8T,QAAOO,EAAOP,MAAQ9T,EAAK8T,OAC7BO,CACT,CAEAoG,mBACEza,EACG,CACH,GAAM,CAAEC,KAAAA,EAAMrC,MAAAA,EAAOC,IAAAA,EAAK2Q,IAAAA,EAAK4F,MAAAA,EAAON,MAAAA,CAAO,EAAG9T,EAC1CqU,EAAS9H,OAAO+H,OAAOu3C,EAAa,EAC1Cx3C,OAAAA,EAAOpU,KAAOA,EACdoU,EAAOzW,MAAQA,EACfyW,EAAOxW,IAAMA,EACbwW,EAAO7F,IAAMA,EACb6F,EAAOD,MAAQA,EACfC,EAAOP,MAAQA,EACfO,EAAO7G,MAASxN,EAAuBwN,MAChC6G,CACT,CACF,ECrIM43C,GAAiCjsD,GAC9BA,EAAKC,OAAS,0BACjBgsD,GAA8BjsD,EAAKwT,UAAU,EAC7CxT,EASwBksD,GAAf,cAAkCH,EAAU,CAmDzD1zC,aAAarY,EAAYsY,EAAiB,GAAmC,CAAA,IAAA6jB,EAAAgwB,EAC3E,IAAIl3C,EA2BJ,QA1BIjV,EAAKC,OAAS,4BAAyBk8B,EAAIn8B,EAAK8T,QAAK,MAAVqoB,EAAYlnB,iBACzDA,EAAgBg3C,GAA8BjsD,CAAI,EAC9CsY,EAKErD,EAAchV,OAAS,aACzB,KAAKorD,gBAAgBrC,iCACnBl5C,EAAO7K,+BACPjF,CACF,EAEAiV,EAAchV,OAAS,oBACvB,CAAC,KAAKma,2BAA2BnF,CAAa,GAK9C,KAAK0D,MAAM7I,EAAO7K,+BAAgCjF,CAAI,EAGxD,KAAK2Y,MAAM7I,EAAO7K,+BAAgCjF,CAAI,GAIlDA,EAAKC,KAAI,CACf,IAAK,aACL,IAAK,gBACL,IAAK,eACL,IAAK,oBACL,IAAK,cACL,IAAK,cACH,MAEF,IAAK,mBACH,KAAK2T,WAAW5T,EAAM,eAAe,EACrC,QACM+nB,EAAI,EAAGnO,EAAS5Z,EAAKs3B,WAAW1d,OAAQwyC,EAAOxyC,EAAS,EAC5DmO,EAAInO,EACJmO,IACA,CAAA,IAAAskC,EACA,IAAM10C,EAAO3X,EAAKs3B,WAAWvP,CAAC,EACxBrP,EAASqP,IAAMqkC,EACrB,KAAK3zC,iCAAiCd,EAAMe,EAAQJ,CAAK,EAGvDI,GACCf,EAAc1X,OAAS,gBAAaosD,EACrCrsD,EAAK8T,QAAK,MAAVu4C,EAAYhwB,kBAEZ,KAAK1jB,MAAM7I,EAAO5H,kBAAmBlI,EAAK8T,MAAMuoB,gBAAgB,CAEpE,CACA,MAEF,IAAK,iBAAkB,CACrB,GAAM,CAAE11B,IAAAA,EAAK6G,MAAAA,CAAO,EAAGxN,EACnB,KAAKgW,cAAcrP,CAAG,GACxB,KAAK4R,WAAWC,eACd,KAAK1C,iBAAiBnP,CAAG,EACzBA,EAAI6H,IAAI5Q,KACV,EAEF,KAAKya,aAAa7K,EAAO8K,CAAK,EAC9B,KACF,CAEA,IAAK,gBACH,MAAM,IAAI5G,MACR,8HAEF,EAGF,IAAK,kBACH,KAAKkC,WAAW5T,EAAM,cAAc,EACpC,KAAKo8B,iBACHp8B,EAAK6+B,UAAQstB,EACbnsD,EAAK8T,QAALq4C,KAAAA,OAAAA,EAAY9vB,iBACZ/jB,CACF,EACA,MAEF,IAAK,uBACCtY,EAAKssD,WAAa,KACpB,KAAK3zC,MAAM7I,EAAOlK,sBAAuB5F,EAAKo+B,KAAK5vB,IAAI3Q,GAAG,EAG5D,KAAK+V,WAAW5T,EAAM,mBAAmB,EACzC,OAAOA,EAAKssD,SACRtsD,EAAKo+B,KAAKn+B,OAAS,eACrB,KAAK0Y,MAAM7I,EAAO7E,uBAAwBjL,EAAKo+B,IAAI,EAErD,KAAK/lB,aAAarY,EAAKo+B,KAAM9lB,CAAK,EAClC,MAEF,IAAK,0BAEH,KAAKD,aAAapD,EAAeqD,CAAK,EACtC,KAKJ,CACF,CAEAG,iCACEd,EACAe,EACAJ,EACA,CACA,GAAIX,EAAK1X,OAAS,eAChB,KAAK0Y,MACHhB,EAAKtX,OAAS,OAASsX,EAAKtX,OAAS,MACjCyP,EAAOpI,mBACPoI,EAAOnI,iBACXgQ,EAAKhR,GACP,UACSgR,EAAK1X,OAAS,gBAAiB,CACxC,KAAK2T,WAAW+D,EAAM,aAAa,EACnC,IAAM40C,EAAM50C,EAAKxI,SACjB,KAAKq9C,sBAAsBD,EAAwB,EAAK,EACxD,KAAKl0C,aAAak0C,EAAKj0C,CAAK,EAEvBI,GACH,KAAKC,MAAM7I,EAAO5H,kBAAmByP,CAAI,CAE7C,MACE,KAAKU,aAAaV,EAAMW,CAAK,CAEjC,CAIA8jB,iBACEiC,EAQAhC,EACA/jB,EACM,CACN,IAAMza,EAAMwgC,EAASzkB,OAAS,EAE9B,QAASmO,EAAI,EAAGA,GAAKlqB,EAAKkqB,IAAK,CAC7B,IAAM0kC,EAAMpuB,EAAStW,CAAC,EACjB0kC,IAEL,KAAKC,qBAAqBruB,EAAUtW,EAAGzP,CAAK,EAExCm0C,EAAIxsD,OAAS,gBACX8nB,EAAIlqB,EACN,KAAK8a,MAAM7I,EAAO5H,kBAAmBukD,CAAG,EAC/BpwB,GACT,KAAK1jB,MAAM7I,EAAO5H,kBAAmBm0B,CAAgB,GAG3D,CACF,CAEAqwB,qBACEruB,EAOA5gC,EACA6a,EACM,CACN,IAAMtY,EAAOq+B,EAAS5gC,CAAK,EAC3B,GAAIuC,EAAKC,OAAS,gBAAiB,CACjC,KAAK2T,WAAW5T,EAAM,aAAa,EACnC,IAAMusD,EAAMvsD,EAAKmP,SACjB,KAAKq9C,sBAAsBD,EAAwB,EAAI,EACvD,KAAKl0C,aAAak0C,EAAKj0C,CAAK,CAC9B,MACE,KAAKD,aAAarY,EAAMsY,CAAK,CAEjC,CAEAH,aAAanY,EAAYoY,EAA8B,CACrD,OAAQpY,EAAKC,KAAI,CACf,IAAK,aACL,IAAK,gBACL,IAAK,eACL,IAAK,oBACL,IAAK,cACL,IAAK,cACH,MAAO,GAET,IAAK,mBAAoB,CACvB,IAAMmsD,EAAOpsD,EAAKs3B,WAAW1d,OAAS,EACtC,OAAO5Z,EAAKs3B,WAAW4E,MAAM,CAACvkB,EAAMoQ,IAEhCpQ,EAAK1X,OAAS,iBACb8nB,IAAMqkC,GAAQz0C,EAAK1X,OAAS,kBAC7B,KAAKkY,aAAaR,CAAI,CAEzB,CACH,CAEA,IAAK,iBACH,OAAO,KAAKQ,aAAanY,EAAKwN,KAAK,EAErC,IAAK,gBACH,OAAO,KAAK2K,aAAanY,EAAKmP,QAAQ,EAExC,IAAK,kBACH,OAAOnP,EAAK6+B,SAAS3C,MACnBywB,GAAWA,IAAY,MAAQ,KAAKx0C,aAAaw0C,CAAO,CAC1D,EAEF,IAAK,uBACH,OAAO3sD,EAAKssD,WAAa,IAE3B,IAAK,0BACH,OAAO,KAAKn0C,aAAanY,EAAKwT,UAAU,EAE1C,IAAK,mBACL,IAAK,2BACH,MAAO,CAAC4E,EAEV,QACE,MAAO,EACX,CACF,CAIAkmB,iBACED,EAQAE,EAOI,CACJ,OAAOF,CACT,CAEAuuB,qBACEvuB,EAOAE,EACM,CACN,KAAKD,iBAAiBD,EAAUE,CAAmB,EAEnD,QAAWhE,KAAQ8D,EACb9D,GAAMt6B,OAAS,mBACjB,KAAK2sD,qBAAqBryB,EAAKsE,QAAQ,CAG7C,CAIAguB,YAEE/0C,EACe,CACf,IAAM9X,EAAO,KAAK0W,UAAS,EAC3B,YAAKyS,KAAI,EACTnpB,EAAKmP,SAAW,KAAK0sB,wBACnB/jB,EACA3H,MACF,EACO,KAAK6G,WAAWhX,EAAM,eAAe,CAC9C,CAGA8sD,kBAA4C,CAC1C,IAAM9sD,EAAO,KAAK0W,UAAS,EAC3B,KAAKyS,KAAI,EACT,IAAMha,EAAW,KAAKkyB,iBAAgB,EACtC,OAAIlyB,EAASlP,OAAS,eACpB,KAAK0Y,MAAM7I,EAAOhG,sBAAuBqF,CAAQ,EAEnDnP,EAAKmP,SAAWA,EACT,KAAK6H,WAAWhX,EAAM,aAAa,CAC5C,CAGAqhC,kBAAwC,CAEtC,OAAQ,KAAK7nB,MAAMvZ,KAAI,CACrB,IAAA,GAAkB,CAChB,IAAMD,EAAO,KAAK0W,UAAS,EAC3B,YAAKyS,KAAI,EACTnpB,EAAK6+B,SAAW,KAAKkuB,iBAGnBC,EAAAA,GAAAA,CACF,EACO,KAAKh2C,WAAWhX,EAAM,cAAc,CAC7C,CAEA,IAAA,GACE,OAAO,KAAKitD,gBAAe,EAAY,EAAI,EAE7C,IAAA,IACE,OAAO,KAAKC,iBAAiB,IAAI,CACrC,CAGA,OAAO,KAAKr7B,gBAAe,CAC7B,CAeAk7B,iBAEEruB,EACAyuB,EACA96C,EACsC,CACtC,IAAM+6C,EAAa/6C,EAAK,EAElBg7C,EAA6C,CAAA,EAC/Cz0B,EAAQ,GACZ,KAAO,CAAC,KAAKvH,IAAIqN,CAAK,GAMpB,GALI9F,EACFA,EAAQ,GAER,KAAK5H,OAAM,EAAS,EAElBo8B,GAAc,KAAK37B,MAAK,EAAS,EACnC47B,EAAKvwC,KAAK,IAAI,MACT,IAAI,KAAKuU,IAAIqN,CAAK,EACvB,MACK,GAAI,KAAKjN,MAAK,EAAY,EAAG,CAClC,IAAI9hB,EAAgB,KAAKm9C,iBAAgB,EAQzC,IANoC,KAAKr1C,UAAU,MAAM,GACvDpF,EAAK,KAEL1C,EAAO,KAAKkwB,uBAAuBlwB,CAAI,GAEzC09C,EAAKvwC,KAAKnN,CAAI,EACV,CAAC,KAAK29C,oBAAoBH,CAAa,EAAG,CAC5C,KAAKn8B,OAAO0N,CAAK,EACjB,KACF,CACF,KAAO,CACL,IAAMplB,EAAa,CAAA,EACnB,GAAIjH,EAAK,EAQP,IAPI,KAAKof,MAAK,EAAM,GAAK,KAAKha,UAAU,YAAY,GAClD,KAAKkB,MACH7I,EAAOxF,8BACP,KAAKkP,MAAM5B,QACb,EAGK,KAAK6Z,MAAK,EAAM,GACrBnY,EAAWwD,KAAK,KAAKywC,eAAgB,CAAA,EAGzCF,EAAKvwC,KAAK,KAAK0wC,oBAAoBn7C,EAAOiH,CAAU,CAAC,CACvD,EAEF,OAAO+zC,CACT,CAGAI,yBAEE91C,EACa,CACb,YAAKwR,KAAI,EACL,KAAK1R,UAAU,gBAAgB,GAAK,KAAKga,MAAc,EAAA,GACzD9Z,EAAKxI,SAAW,KAAK+9C,iBAAiB,IAAI,EAC1C,KAAKv0C,MAAM7I,EAAOhG,sBAAuB6N,EAAKxI,QAAQ,GAGtDwI,EAAKxI,SAAW,KAAK0iB,gBAAe,EAEtC,KAAKy7B,oBAAmB,GAA0B,EAC3C,KAAKt2C,WAAWW,EAAM,aAAa,CAC5C,CAGA+1C,sBAAqE,CACnE,GAAM,CAAEztD,KAAAA,EAAM2X,SAAAA,GAAa,KAAK4B,MAChC,GAAIvZ,IAAI,GACN,OAAO,KAAKwtD,yBAAyB,KAAK/2C,UAAW,CAAA,EAGvD,IAAMiB,EAAO,KAAKjB,UAAS,EAC3B,OAAIzW,IAAI,KACN,KAAKukD,aAAa,uBAAwB5sC,CAAQ,EAClD,KAAKW,WAAWC,eAAe,KAAKgB,MAAMhM,MAAOoK,CAAQ,EACzDD,EAAKhR,IAAM,KAAKgP,iBAAgB,GAEhC,KAAKg4C,kBAAkBh2C,CAAI,EAE7BA,EAAK9C,OAAS,GACP,KAAK8qB,kBACVhoB,EACAC,EACA,GACA,GACA,GACA,EACF,CACF,CAGA41C,oBAEEn7C,EACAiH,EAC+B,CAC/B,IAAM8kB,EAAO,KAAK0B,kBAAiB,EACnC,OACoC,KAAKroB,UAAU,MAAM,GACvDpF,EAAK,IAEL,KAAKwtB,uBAAuBzB,CAAI,EAE9B9kB,EAAWM,SACbwkB,EAAK9kB,WAAaA,EAClB,KAAK1C,2BAA2BwnB,EAAM9kB,EAAW,CAAC,CAAC,GAEzC,KAAKwmB,kBAAkB1B,EAAK5vB,IAAI5Q,MAAOwgC,CAAI,CAEzD,CAGAyB,uBAAuBjG,EAAyB,CAC9C,OAAOA,CACT,CASAkG,kBAEEloB,EACAwmB,EACS,CAGT,GAFAxmB,IAAAA,EAAa,KAAK4B,MAAM5B,UACxBwmB,EAAOA,GAAQ,KAAKiD,iBAAgB,EAChC,CAAC,KAAKhQ,IAAG,EAAM,EAAG,OAAO+M,EAE7B,IAAMp+B,EAAO,KAAKi3B,YAA+Brf,CAAQ,EACzD,OAAIwmB,EAAKn+B,OAAS,eAChB,KAAK0Y,MAAM7I,EAAO7E,uBAAwBmzB,CAAI,EAEhDp+B,EAAKo+B,KAAOA,EACZp+B,EAAKi1B,MAAQ,KAAK4G,wBAAuB,EAClC,KAAK7kB,WAAWhX,EAAM,mBAAmB,CAClD,CA8BAgY,YACE/X,EAEAgY,EAEAC,EACsC,CACtC,OAAQjY,EAAI,CACV,IAAK,oBACH,MAAO,OACT,IAAK,cACH,MAAO,WACT,IAAK,iBACH,MAAO,QACT,IAAK,0BACH,MAAO,aACT,IAAK,eACH,MAAO,WACT,IAAK,gBACH,MAAO,aACT,IAAK,cACH,MAAO,EACX,CACA,MAAO,EACT,CAGAma,2BAA2B5G,EAA2B,CACpD,OAAOA,EAAWvT,OAAS,0BAC7B,CA0BA2tD,UACEp6C,EAMA9O,EACAwT,EAAoB,GACpB21C,EAAoC,GACpC7qB,EAA6B,GAC7B8qB,EAAoC,GAC9B,CAAA,IAAAC,EACN,IAAM9tD,EAAOuT,EAAWvT,KAKxB,GAAI,KAAKqa,eAAe9G,CAAU,EAAG,OAErC,IAAM4G,EACJ,KAAKA,2BAA2B5G,CAAU,EAE5C,GAAI4G,GAA8Bna,IAAS,mBAAoB,CACzDma,IACF,KAAKoqC,aAAa,yBAA0BhxC,EAAWhF,IAAI5Q,KAAK,EAC5D8G,EAASzE,OAAS,wBACpB,KAAK0Y,MAAM7I,EAAOlL,2BAA4B4O,EAAY,CACxD9O,SAAAA,CACF,CAAC,GAIDwT,IAAO,IACT,KAAKS,MAAM7I,EAAO3K,8BAA+BqO,CAAU,EAE7D,MACF,CAEA,GAAIvT,IAAS,aAAc,CACzB,KAAK+tD,gBAAgBx6C,EAAY0E,EAAS8qB,CAAiB,EAE3D,GAAM,CAAE/8B,KAAAA,CAAM,EAAGuN,EAEbq6C,IACEA,EAAahlC,IAAI5iB,CAAI,EACvB,KAAK0S,MAAM7I,EAAOrI,UAAW+L,CAAU,EAEvCq6C,EAAaliC,IAAI1lB,CAAI,GAIzB,MACD,MAAUhG,IAAS,eAAiByE,EAASzE,OAAS,eACrD,KAAK0Y,MAAM7I,EAAO9E,4BAA6BwI,CAAU,EAG3D,IAAMy6C,EAAW,KAAKj2C,YACpB/X,EACA,EAAE6tD,IAAwBC,EAAIv6C,EAAWM,QAAXi6C,MAAAA,EAAkB94C,gBAC9CvQ,EAASzE,OAAS,uBACpBiY,CACF,EAEA,GAAI+1C,IAAa,GAAM,OACvB,GAAIA,IAAa,GAAO,CACtB,IAAMC,EACJh2C,IAAO,GACHpI,EAAOrL,WACPqL,EAAOnL,kBAEb,KAAKgU,MAAMu1C,EAAiB16C,EAAY,CAAE9O,SAAAA,CAAS,CAAC,EACpD,MACF,CAEA,IAAIiC,EAAawnD,EACb,OAAOF,GAAa,UACtBtnD,EAAMsnD,EACNE,EAA4BluD,IAAS,2BAErC,CAAC0G,EAAKwnD,CAAyB,EAAIF,EAGrC,IAAMG,EACJnuD,IAAS,gBAAkBA,IAAS,gBAC/B,CAAEA,KAAAA,CAAM,EACTyE,EAGA6rB,EAAM/c,EAAW7M,CAAG,EAC1B,GAAIyI,MAAMC,QAAQkhB,CAAG,EACnB,QAAW89B,KAAS99B,EACd89B,GACF,KAAKT,UACHS,EACAD,EACAl2C,EACA21C,EACA7qB,EACAmrB,CACF,OAGK59B,GACT,KAAKq9B,UACHr9B,EACA69B,EACAl2C,EACA21C,EACA7qB,EACAmrB,CACF,CAEJ,CAEAH,gBACElvC,EACAoM,EACA8X,EAA6B,GAC7B,CAEE,KAAKxpB,MAAM6O,SACV2a,EACGja,GAAyBjK,EAAG7Y,KAAM,KAAK0iB,QAAQ,EAC/CG,GAA6BhK,EAAG7Y,IAAI,KAEpCilB,IAAW,GACb,KAAKvS,MAAM7I,EAAOtE,oBAAqBsT,EAAI,CAAErT,cAAeqT,EAAG7Y,IAAK,CAAC,EAErE,KAAK0S,MAAM7I,EAAOpE,2BAA4BoT,EAAI,CAChDnT,YAAamT,EAAG7Y,IAClB,CAAC,GAIDilB,EAAW,MAAyCpM,EAAG7Y,OAAS,OAClE,KAAK0S,MAAM7I,EAAOtK,oBAAqBsZ,CAAE,EAGrCoM,EAAW,IACf,KAAKojC,0BAA0BxvC,EAAIoM,CAAW,CAElD,CAEAojC,0BAA0BC,EAAwBr2C,EAAsB,CACtE,KAAK8S,MAAMC,YAAYsjC,EAAWtoD,KAAMiS,EAASq2C,EAAW//C,IAAI5Q,KAAK,CACvE,CAEA4uD,sBAAsBxsD,EAAYwuD,EAA6B,CAC7D,OAAQxuD,EAAKC,KAAI,CACf,IAAK,0BACH,KAAKusD,sBAAsBxsD,EAAKwT,WAAYg7C,CAAY,EACxD,MACF,IAAK,aACL,IAAK,mBACH,MACF,IAAK,kBACL,IAAK,mBACH,GAAIA,EAAc,MAEpB,QACE,KAAK71C,MAAM7I,EAAOzK,6BAA8BrF,CAAI,CACxD,CACF,CAEAstD,oBACE5uB,EACS,CACT,OAAK,KAAKjN,MAAK,EAAS,GAIxB,KAAK9Y,MACH,KAAKoiB,kBAAiB,IAAO2D,EACzB5uB,EAAO5H,kBACP4H,EAAOxN,iBACX,KAAKkX,MAAM5B,QACb,EAEO,IAVE,EAWX,CACF,EC9yBA,SAAS62C,GAAWC,EAAiB,CACnC,GAAIA,GAAK,KACP,MAAM,IAAIh9C,MAAM,cAAcg9C,CAAC,SAAS,EAE1C,OAAOA,CACT,CAEA,SAASC,GAAOD,EAAkB,CAChC,GAAI,CAACA,EACH,MAAM,IAAIh9C,MAAM,aAAa,CAEjC,CAgBA,IAAMk9C,GAAW1/C,eAA2B,CAC1C2/C,gCAAiCA,CAAC,CAAEC,WAAAA,KAClC,WAAWA,CAAU,iEACvBC,+BAAgCA,CAAC,CAC/BC,aAAAA,KAIA,aAAaA,CAAY,8DAC3BC,yBACE,sDACF/gD,mCACE,8DACFC,iCAAkC,2CAClC+gD,sBAAuB,oDACvBC,uBAAwB,qDACxB/gD,mEACE,6GACFghD,6BACE,8DACFC,gBAAiBA,CAAC,CAAEhvD,KAAAA,KAClB,+BAA+BA,CAAI,QACrCivD,gCACE,oDACFC,iCACE,4DACFC,+BAAgCA,CAAC,CAC/BC,SAAAA,KAGI,yCAAyCA,CAAQ,KACvDC,kBAAmBA,CAAC,CAAED,SAAAA,KACpB,wBAAwBA,CAAQ,KAGlCE,wBAAyBA,CAAC,CAAE9iD,MAAAA,KAC1B,IAAIA,CAAK,0BACX+iD,mBAAoB,sCACpBC,oBAAqB,uCACrBC,kCACE,+DACFC,yBAA0B,6CAC1BziC,8BACE,6DACF0iC,sBAAuBA,CAAC,CACtBC,UAAAA,KAIA,IAAIA,EAAU,CAAC,CAAC,mCAAmCA,EAAU,CAAC,CAAC,cACjEC,0BACE,wDACFC,+BAAgCA,CAAC,CAC/BV,SAAAA,KAIA,4DAA4DA,CAAQ,MACtEW,yBACE,uDACFC,0BACE,2DACFC,wBACE,sDACFC,sCACE,oDACFC,0BAA2BA,CAAC,CAAE3jD,MAAAA,KAC5B,IAAIA,CAAK,uFACX4jD,uCAAyChB,GACvC,IAAIA,CAAQ,0DACdiB,4BAA6BA,CAAC,CAAEjB,SAAAA,KAC9B,IAAIA,CAAQ,6CACdkB,+BAAgCA,CAAC,CAAElB,SAAAA,KACjC,IAAIA,CAAQ,gDACdmB,wCAAyCA,CAAC,CACxCnB,SAAAA,KAIA,IAAIA,CAAQ,sFAEdoB,kCAAoCpB,GAClC,IAAIA,CAAQ,mDACdqB,sBAAuBA,CAAC,CACtBC,iBAAAA,KAIA,IAAIA,EAAiB,CAAC,CAAC,4BAA4BA,EAAiB,CAAC,CAAC,cACxEC,kDACE,4JAEFC,wBACE,0DACFC,qBACE,8DACFC,kCACE,6DACFC,0CACE,mFACFC,2BACE,wDACFC,sBACE,6GACFvjC,kBACE,iFACFwjC,0BACE,wDACFC,+BAAgCA,CAAC,CAC/B/B,SAAAA,KAIA,4DAA4DA,CAAQ,MACtEgC,2BACE,oFACFC,uBACE,iHACFC,sBACE,oGACFtjD,uCACE,sDACFC,mCACE,+CACFC,gCACE,yDACFqjD,wCAAyCA,CAAC,CACxCC,kBAAAA,CAGD,IACC,yBAAyBA,CAAiB,kDAAkDA,CAAiB,MAC/GC,8BACE,gDACFC,uBACE,2KACFC,0BACE,oHACFC,uCACE,mFACFC,gCACE,2GACFC,gCACE,2GACFC,4BACE,wEACFC,mBACE,+EACFC,yBAA0B,yCAC1BC,8BAA+B,8CAC/BC,8BACE,sDACFC,iCACE,oEACFC,kCAAmCA,CAAC,CAAEzyD,KAAAA,KACpC,yFAAyFA,CAAI,IAC/F0yD,iCAAmCtyD,GACjC,IAAIA,CAAI,qDACZ,CAAC,EAMD,SAASuyD,GAAoBplD,EAAgD,CAC3E,OAAQA,EAAK,CACX,IAAK,MACH,MAAO,eACT,IAAK,UACH,MAAO,mBACT,IAAK,SACH,MAAO,kBACT,IAAK,QACH,MAAO,iBACT,IAAK,SACH,MAAO,kBACT,IAAK,SACH,MAAO,kBACT,IAAK,SACH,MAAO,kBACT,IAAK,SACH,MAAO,kBACT,IAAK,YACH,MAAO,qBACT,IAAK,UACH,MAAO,mBACT,QACE,MACJ,CACF,CAEA,SAASqlD,GAAmBpD,EAA+C,CACzE,OACEA,IAAa,WAAaA,IAAa,UAAYA,IAAa,WAEpE,CAEA,SAASqD,GACPrD,EACmC,CACnC,OAAOA,IAAa,MAAQA,IAAa,KAC3C,CA0BA,IAAAsD,GAAgBhhD,GACd,cAAoCA,CAA6B,CAAAzU,eAAA6Z,EAAA,CAAA,MAAA,GAAAA,CAAA,EAAA,KAgd/D67C,sBAAwB,KAAKC,iBAAiBC,KAAK,KAAM,CACvDC,iBAAkB,CAAC,KAAM,KAAK,EAC9BC,oBAAqB,CACnB,QACA,SACA,UACA,YACA,WACA,UACA,WACA,UAAU,EAEZC,cAAezE,GAAS+B,8BAC1B,CAAC,EAAC,KAEF2C,qBAAuB,KAAKL,iBAAiBC,KAAK,KAAM,CACtDC,iBAAkB,CAAC,OAAO,EAE1BC,oBAAqB,CAAC,KAAM,KAAK,EACjCC,cAAezE,GAASgC,uCAC1B,CAAC,EAAC,KAEF2C,2BAA6B,KAAKN,iBAAiBC,KAAK,KAAM,CAC5DC,iBAAkB,CAAC,KAAM,MAAO,OAAO,EACvCC,oBAAqB,CACnB,SACA,UACA,YACA,WACA,UACA,WACA,UAAU,EAEZC,cAAezE,GAAS+B,8BAC1B,CAAC,CAAC,CAjfFvgC,iBAAgE,CAC9D,OAAO8qB,EACT,CAEAsY,gBAA0B,CAGxB,OAAOvtC,GAAkB,KAAKzM,MAAMvZ,IAAI,CAC1C,CAEAwzD,0BAA2B,CACzB,OACE,KAAKhiC,MAAK,CAAY,GACtB,KAAKA,MAAK,CAAU,GACpB,KAAKA,MAAa,EAAA,GAClB,KAAKA,MAAiB,EAAA,GACtB,KAAKA,MAAK,GAAe,GACzB,KAAKk5B,sBAAqB,CAE9B,CAEA+I,2CAA4C,CAE1C,OADA,KAAKvqC,KAAI,EACL,KAAKygC,sBAAqB,EACrB,GAEF,KAAK6J,yBAAwB,CACtC,CAEAE,8BAA+B,CAI7B,OAAI,KAAKliC,MAAK,GAAW,GACvB,KAAKtI,KAAI,EACF,KAAKsqC,yBAAwB,GAE/B,KAAKC,0CAAyC,CACvD,CAGAE,gBACET,EACAU,EACAC,EACsB,CACtB,GACE,CAAC7tC,GAAkB,KAAKzM,MAAMvZ,IAAI,GAClC,KAAKuZ,MAAMvZ,OAAI,IACf,KAAKuZ,MAAMvZ,OAAI,GAEf,OAGF,IAAMwvD,EAAW,KAAKj2C,MAAMhM,MAC5B,GAAI2lD,EAAiB52B,SAASkzB,CAAQ,EAAG,CAIvC,GAHIqE,GAAyB,KAAKriC,MAAK,GAAW,GAG9CoiC,GAAiC,KAAKE,wBAAuB,EAC/D,OAEF,GAAI,KAAKC,WAAW,KAAKL,6BAA6BT,KAAK,IAAI,CAAC,EAC9D,OAAOzD,CAEX,CAEF,CAOAwD,iBACE,CACEE,iBAAAA,EACAC,oBAAAA,EACAS,8BAAAA,EACAR,cAAAA,EAAgBzE,GAAS8B,2BAM1B,EACDuD,EACM,CACN,IAAMC,EAAeA,CACnB1lD,EACAihD,EACA0E,EACAC,IACG,CACC3E,IAAa0E,GAAUF,EAASG,CAAK,GACvC,KAAKz7C,MAAMi2C,GAASkC,sBAAuBtiD,EAAK,CAC9CuiD,iBAAkB,CAACoD,EAAQC,CAAK,CAClC,CAAC,GAGCC,EAAeA,CACnB7lD,EACAihD,EACA6E,EACAC,IACG,EAEAN,EAASK,CAAI,GAAK7E,IAAa8E,GAC/BN,EAASM,CAAI,GAAK9E,IAAa6E,IAEhC,KAAK37C,MAAMi2C,GAASoB,sBAAuBxhD,EAAK,CAC9CyhD,UAAW,CAACqE,EAAMC,CAAI,CACxB,CAAC,GAIL,OAAS,CACP,GAAM,CAAE38C,SAAAA,GAAa,KAAK4B,MACpBi2C,EAA0C,KAAKmE,gBACnDT,EAAiBz9C,OAAO09C,GAAuB,CAAA,CAAE,EACjDS,EACAI,EAASp9B,MACX,EAEA,GAAI,CAAC44B,EAAU,MAEXoD,GAAmBpD,CAAQ,EACzBwE,EAASO,cACX,KAAK77C,MAAMi2C,GAASY,+BAAgC53C,EAAU,CAC5D63C,SAAAA,CACF,CAAC,GAEDyE,EAAat8C,EAAU63C,EAAUA,EAAU,UAAU,EACrDyE,EAAat8C,EAAU63C,EAAUA,EAAU,QAAQ,EACnDyE,EAAat8C,EAAU63C,EAAUA,EAAU,UAAU,EAErDwE,EAASO,cAAgB/E,GAElBqD,GAAwBrD,CAAQ,GACrCwE,EAASxE,CAAQ,GACnB,KAAK92C,MAAMi2C,GAASc,kBAAmB93C,EAAU,CAAE63C,SAAAA,CAAS,CAAC,EAE/DwE,EAASxE,CAAQ,EAAI,GAErByE,EAAat8C,EAAU63C,EAAU,KAAM,KAAK,IAExCgF,eAAA/yB,KAAcuyB,EAAUxE,CAAQ,EAClC,KAAK92C,MAAMi2C,GAASc,kBAAmB93C,EAAU,CAAE63C,SAAAA,CAAS,CAAC,GAE7DyE,EAAat8C,EAAU63C,EAAU,SAAU,UAAU,EACrDyE,EAAat8C,EAAU63C,EAAU,SAAU,UAAU,EACrDyE,EAAat8C,EAAU63C,EAAU,WAAY,UAAU,EACvDyE,EAAat8C,EAAU63C,EAAU,WAAY,UAAU,EAEvD4E,EAAaz8C,EAAU63C,EAAU,UAAW,UAAU,EACtD4E,EAAaz8C,EAAU63C,EAAU,SAAU,UAAU,GAEvDwE,EAASxE,CAAQ,EAAI,IAGnB2D,GAAmB,MAAnBA,EAAqB72B,SAASkzB,CAAQ,GACxC,KAAK92C,MAAM06C,EAAez7C,EAAU,CAClC63C,SAAAA,CACF,CAAC,CAEL,CACF,CAEAiF,mBAAmBr0D,EAA+B,CAChD,OAAQA,EAAI,CACV,IAAK,cACL,IAAK,cACH,OAAO,KAAKoxB,MAAK,CAAU,EAC7B,IAAK,wBACH,OAAO,KAAKA,MAAK,CAAU,EAC7B,IAAK,oBACH,OAAO,KAAKA,MAAK,CAAY,EAC/B,IAAK,4BACH,OAAO,KAAKA,MAAK,EAAM,CAC3B,CACF,CAEAkjC,YACEt0D,EACAu0D,EACK,CACL,IAAMr6C,EAAc,CAAA,EACpB,KAAO,CAAC,KAAKm6C,mBAAmBr0D,CAAI,GAElCka,EAAOuC,KAAK83C,EAAY,CAAE,EAE5B,OAAOr6C,CACT,CAEAs6C,qBACEx0D,EACAu0D,EACAE,EAGK,CACL,OAAOrG,GACL,KAAKsG,2BACH10D,EACAu0D,EACoB,GACpBE,CACF,CACF,CACF,CAMAC,2BACE10D,EACAu0D,EACAI,EACAF,EAGiB,CACjB,IAAMv6C,EAAc,CAAA,EAChB06C,EAAmB,GAEvB,KACM,MAAKP,mBAAmBr0D,CAAI,GADzB,CAIP40D,EAAmB,GAEnB,IAAMtI,EAAUiI,EAAY,EAC5B,GAAIjI,GAAW,KACb,OAIF,GAFApyC,EAAOuC,KAAK6vC,CAAO,EAEf,KAAKt7B,IAAG,EAAS,EAAG,CACtB4jC,EAAmB,KAAKz7C,MAAMC,gBAAgBhc,MAC9C,QACF,CAEA,GAAI,KAAKi3D,mBAAmBr0D,CAAI,EAC9B,MAGE20D,GAEF,KAAKhkC,OAAM,EAAS,EAEtB,MACF,CAEA,OAAI8jC,IACFA,EAAoBtnD,MAAQynD,GAGvB16C,CACT,CAEA26C,qBACE70D,EACAu0D,EACAO,EACAC,EACAN,EAGK,CACAM,IACCD,EACF,KAAKnkC,OAAM,CAAY,EAEvB,KAAKA,OAAM,EAAM,GAIrB,IAAMzW,EAAS,KAAKs6C,qBAClBx0D,EACAu0D,EACAE,CACF,EAEA,OAAIK,EACF,KAAKnkC,OAAM,CAAY,EAEvB,KAAKA,OAAM,EAAM,EAGZzW,CACT,CAEA86C,mBAAoC,CAClC,IAAMr1D,EAAO,KAAK0W,UAAS,EAC3B,YAAKsa,OAAM,EAAW,EACtB,KAAKA,OAAM,EAAU,EAChB,KAAKS,MAAK,GAAU,EAarBzxB,EAAKmP,SAAW,KAAK6D,mBAAmB,KAAKwG,MAAMhM,KAAK,GAZ1D,KAAKmL,MAAMi2C,GAAS4D,8BAA+B,KAAKh5C,MAAM5B,QAAQ,EAKpE5X,EAAKmP,SAAW,MAAMgkB,cAAa,GAUnC,KAAK9B,IAAG,EAAS,EACnBrxB,EAAKyR,QAAU,KAAK6jD,yBAAwB,EAE5Ct1D,EAAKyR,QAAU,KAEjB,KAAKuf,OAAM,EAAU,EAEjB,KAAKK,IAAG,EAAO,IAGjBrxB,EAAKu1D,UAAY,KAAKC,kBACpBC,CAEF,GAEE,KAAKhkC,MAAK,EAAM,IAIhBzxB,EAAK2W,eAAiB,KAAK++C,qBAAoB,GAG5C,KAAK1+C,WAAWhX,EAAM,cAAc,CAC7C,CAEAs1D,0BAA+C,CAC7C,IAAMt1D,EAAO,KAAK0W,UAAS,EAC3B,KAAKsa,OAAM,CAAU,EACrB,IAAM2kC,EAAe,KAAKj/C,UAAS,EACnC,OAAI,KAAKmc,aAAY,EAAS,GAC5B8iC,EAAa9gD,OAAS,GACtB8gD,EAAahvD,IAAM,KAAKkrB,gBAAgB,EAAI,EAC5C8jC,EAAa7+C,SAAW,GACxB6+C,EAAa5+C,UAAY,IAEzB,KAAK/R,WAAW,KAAI,EAAU,EAEhC,KAAKgsB,OAAM,EAAS,EACpB2kC,EAAanoD,MAAQ,KAAKooD,mCAAkC,EAC5D51D,EAAKs3B,WAAa,CAAC,KAAKvf,qBAAqB49C,CAAY,CAAC,EAC1D,KAAKtkC,IAAG,EAAS,EACjB,KAAKL,OAAM,CAAU,EACd,KAAKha,WAAWhX,EAAM,kBAAkB,CACjD,CAEA41D,oCAAyD,CACvD,IAAM51D,EAAO,KAAK0W,UAAS,EACrB4gB,EAAa,CAAA,EAEnB,IADA,KAAKtG,OAAM,CAAU,EACd,CAAC,KAAKS,MAAK,CAAU,GAAG,CAC7B,IAAMxxB,EAAO,KAAKuZ,MAAMvZ,KACpBgmB,GAAkBhmB,CAAI,GAAKA,IAAI,IACjCq3B,EAAWxa,KAAK,MAAM+4C,wBAAwB,IAAI,CAAC,EAEnD,KAAK7wD,WAAU,EAEjB,KAAKqsB,IAAG,EAAS,CACnB,CACArxB,OAAAA,EAAKs3B,WAAaA,EAClB,KAAKnO,KAAI,EACF,KAAKnS,WAAWhX,EAAM,kBAAkB,CACjD,CAEAw1D,kBAAkBnjD,EAA+C,CAC/D,IAAI8mC,EACJ,GACE9mC,EAAK,GACL,KAAKof,MAAc,EAAA,EAEnB,GAAIpf,EAAK,EACP8mC,EAAS,KAAKtnB,gBAAgB,EAAI,MAC7B,CACL,IAAM7xB,EAAO,KAAK0W,UAAS,EAC3B,KAAKyS,KAAI,EACTgwB,EAAS,KAAKniC,WAAWhX,EAAM,gBAAgB,CACjD,MAEAm5C,EAAS,KAAKtnB,gBACZ,CAAC,EAAExf,EAAK,EACV,EAEF,KAAO,KAAKgf,IAAG,EAAO,GAAG,CACvB,IAAMrxB,EACJ,KAAKuT,gBAAmC4lC,CAAM,EAChDn5C,EAAKo+B,KAAO+a,EACZn5C,EAAKi1B,MAAQ,KAAKpD,gBAChB,CAAC,EAAExf,EAAK,EACV,EACA8mC,EAAS,KAAKniC,WAAWhX,EAAM,iBAAiB,CAClD,CACA,OAAOm5C,CACT,CAEA2c,sBAA0C,CACxC,IAAM91D,EAAO,KAAK0W,UAAS,EAC3B1W,OAAAA,EAAK+1D,SAAW,KAAKP,kBAAiB,CAEtC,EACI,CAAC,KAAK5L,sBAAqB,GAAM,KAAKn4B,MAAW,EAAA,IAIjDzxB,EAAK2W,eAAiB,KAAK++C,qBAAoB,GAG5C,KAAK1+C,WAAWhX,EAAM,iBAAiB,CAChD,CAEAg2D,yBAAyBC,EAAsC,CAC7D,KAAK9sC,KAAI,EACT,IAAMnpB,EAAO,KAAKuT,gBAAmC0iD,CAAG,EACxDj2D,OAAAA,EAAKk2D,cAAgBD,EACrBj2D,EAAKqyB,eAAiB,KAAK8jC,sBAAqC,EAAK,EACrEn2D,EAAKo2D,QAAU,GACR,KAAKp/C,WAAWhX,EAAM,iBAAiB,CAChD,CAEAq2D,qBAAoC,CAClC,IAAMr2D,EAAO,KAAK0W,UAAS,EAC3B,YAAKyS,KAAI,EACF,KAAKnS,WAAWhX,EAAM,YAAY,CAC3C,CAEAs2D,kBAAkC,CAChC,IAAMt2D,EAAO,KAAK0W,UAAS,EAC3B,YAAKsa,OAAM,EAAW,EAClB,KAAKS,MAAK,EAAW,EACvBzxB,EAAKu2D,SAAW,KAAKlB,kBAAiB,EAOpCr1D,EAAKu2D,SAAW,KAAKf,kBACnBC,CAEF,EAGA,CAAC,KAAK7L,sBAAqB,GAAM,KAAKn4B,MAAW,EAAA,IAIjDzxB,EAAK2W,eAAiB,KAAK++C,qBAAoB,GAG5C,KAAK1+C,WAAWhX,EAAM,aAAa,CAC5C,CAsCAw2D,qBACEC,EACmB,CACnB,IAAMz2D,EAAO,KAAK0W,UAAS,EAE3B+/C,OAAAA,EAAez2D,CAAI,EAEnBA,EAAKiG,KAAO,KAAKywD,yBAAwB,EACzC12D,EAAK22D,WAAa,KAAKC,mBAAkB,EAAY,EACrD52D,EAAKwzB,QAAU,KAAKojC,mBAAkB,EAAM,EACrC,KAAK5/C,WAAWhX,EAAM,iBAAiB,CAChD,CAEA62D,yBACEJ,EACiD,CACjD,GAAI,KAAKhlC,MAAK,EAAM,EAClB,OAAO,KAAKqlC,sBAAsBL,CAAc,CAEpD,CAEAK,sBAAsBL,EAAmD,CACvE,IAAMz2D,EAAO,KAAK0W,UAAS,EAEvB,KAAK+a,MAAW,EAAA,GAAK,KAAKA,MAAoB,GAAA,EAChD,KAAKtI,KAAI,EAET,KAAKnkB,WAAU,EAGjB,IAAM8vD,EAAsB,CAAEtnD,MAAO,IAErCxN,OAAAA,EAAK8U,OAAS,KAAKogD,qBACjB,4BACA,KAAKsB,qBAAqBtD,KAAK,KAAMuD,CAAc,EACrC,GACO,GACrB3B,CACF,EACI90D,EAAK8U,OAAO8E,SAAW,GACzB,KAAKjB,MAAMi2C,GAASiB,oBAAqB7vD,CAAI,EAE3C80D,EAAoBtnD,QAAU,IAChC,KAAKg8C,SAASxpD,EAAM,gBAAiB80D,EAAoBtnD,KAAK,EAEzD,KAAKwJ,WAAWhX,EAAM,4BAA4B,CAC3D,CAIA+2D,gBACEC,EACAC,EACM,CAEN,IAAMC,EAAsBF,IAAwB,GAG9CG,EAAsD,aACtDC,EAEF,iBAEJH,EAAUtgD,eAAiB,KAAKkgD,yBAC9B,KAAKvD,oBACP,EACA,KAAKtiC,OAAM,EAAU,EACrBimC,EAAUE,CAAS,EAAI,KAAKE,+BAA8B,EACtDH,EACFD,EAAUG,CAAa,EACrB,KAAKE,qCAAqCN,CAAW,EAC9C,KAAKvlC,MAAMulC,CAAW,IAC/BC,EAAUG,CAAa,EACrB,KAAKE,qCAAqCN,CAAW,EAE3D,CAEAK,gCAME,CACA,IAAMvnC,EAAO,MAAMi9B,iBAGjBC,GAAAA,GAAAA,CACF,EACA,QAAW56C,KAAW0d,EAAM,CAC1B,GAAM,CAAE7vB,KAAAA,CAAM,EAAGmS,GACbnS,IAAS,qBAAuBA,IAAS,wBAC3C,KAAK0Y,MAAMi2C,GAAS8D,kCAAmCtgD,EAAS,CAC9DnS,KAAAA,CACF,CAAC,CAEL,CACA,OAAO6vB,CAIT,CAEAynC,4BAAmC,CAC7B,CAAC,KAAKlmC,IAAY,EAAA,GAAK,CAAC,KAAKy4B,iBAAgB,GAC/C,KAAK94B,OAAM,EAAQ,CAEvB,CAEAwmC,uBACEn3D,EACAL,EAGkE,CAClE,YAAK+2D,gBAA0B/2D,GAAAA,CAAI,EACnC,KAAKu3D,2BAA0B,EACxB,KAAKvgD,WAAWhX,EAAMK,CAAI,CACnC,CAEAo3D,iCAAkC,CAEhC,OADA,KAAKtuC,KAAI,EACLlD,GAAkB,KAAKzM,MAAMvZ,IAAI,GACnC,KAAKkpB,KAAI,EACF,KAAKsI,MAAK,EAAS,GAErB,EACT,CAEAimC,yBACE13D,EACgC,CAChC,GACE,EACE,KAAKyxB,MAAK,CAAY,GACtB,KAAKkmC,YAAY,KAAKF,gCAAgCvE,KAAK,IAAI,CAAC,GAGlE,OAGF,KAAKliC,OAAM,CAAY,EACvB,IAAMjb,EAAK,KAAK8b,gBAAe,EAC/B9b,EAAGsc,eAAiB,KAAK8jC,sBAAqB,EAC9C,KAAKz7C,iBAAiB3E,CAAE,EAExB,KAAKib,OAAM,CAAY,EACvBhxB,EAAK43D,WAAa,CAAC7hD,CAAE,EAErB,IAAM9V,EAAO,KAAK43D,yBAAwB,EAC1C,OAAI53D,IAAMD,EAAKqyB,eAAiBpyB,GAChC,KAAKs3D,2BAA0B,EACxB,KAAKvgD,WAAWhX,EAAM,kBAAkB,CACjD,CAEA83D,iCACE93D,EACA+3D,EAC6C,CAG7C,GAFI,KAAK1mC,IAAe,EAAA,IAAGrxB,EAAK8Y,SAAW,IAEvC,KAAK2Y,MAAe,EAAA,GAAK,KAAKA,MAAW,EAAA,EAAG,CAC1CsmC,GACF,KAAKp/C,MAAMi2C,GAAS6C,2BAA4BzxD,CAAI,EAEtD,IAAM6U,EAAS7U,EACX6U,EAAOxU,MAAQ,KAAKoxB,MAAW,EAAA,GACjC,KAAK9Y,MACHi2C,GAASzgD,iCACT,KAAKqL,MAAMukB,YAAW,CACxB,EAEF,KAAKg5B,gBAA0BliD,GAAAA,CAAM,EACrC,KAAK0iD,2BAA0B,EAC/B,IAAMJ,EAEF,aACEC,EAEF,iBACJ,GAAIviD,EAAOxU,OAAS,MACdwU,EAAOsiD,CAAS,EAAEv9C,OAAS,IAC7B,KAAKjB,MAAM7I,EAAOjP,eAAgB,KAAK2Y,MAAMukB,YAAW,CAAE,EACtD,KAAKqB,YAAYvqB,EAAOsiD,CAAS,EAAE,CAAC,CAAC,GACvC,KAAKx+C,MACHi2C,GAAS1gD,mCACT,KAAKsL,MAAMukB,YAAW,CACxB,WAGKlpB,EAAOxU,OAAS,MAAO,CAChC,GAAIwU,EAAOsiD,CAAS,EAAEv9C,SAAW,EAC/B,KAAKjB,MAAM7I,EAAOhP,eAAgB,KAAK0Y,MAAMukB,YAAW,CAAE,MACrD,CACL,IAAMi6B,EAAiBnjD,EAAOsiD,CAAS,EAAE,CAAC,EACtC,KAAK/3B,YAAY44B,CAAc,GACjC,KAAKr/C,MACHi2C,GAAS1gD,mCACT,KAAKsL,MAAMukB,YAAW,CACxB,EAGAi6B,EAAe/3D,OAAS,cACxB+3D,EAAel/C,UAEf,KAAKH,MACHi2C,GAASvgD,uCACT,KAAKmL,MAAMukB,YAAW,CACxB,EAEEi6B,EAAe/3D,OAAS,eAC1B,KAAK0Y,MACHi2C,GAAStgD,mCACT,KAAKkL,MAAMukB,YAAW,CACxB,CAEJ,CACIlpB,EAAOuiD,CAAa,GACtB,KAAKz+C,MACHi2C,GAASrgD,gCACTsG,EAAOuiD,CAAa,CACtB,CAEJ,MACEviD,EAAOxU,KAAO,SAEhB,OAAO,KAAK2W,WAAWnC,EAAQ,mBAAmB,CACpD,KAAO,CACL,IAAMujB,EAAWp4B,EACb+3D,IAAU3/B,EAAS2/B,SAAW,IAClC,IAAM93D,EAAO,KAAK43D,yBAAwB,EAC1C,OAAI53D,IAAMm4B,EAAS/F,eAAiBpyB,GACpC,KAAKs3D,2BAA0B,EACxB,KAAKvgD,WAAWohB,EAAU,qBAAqB,CACxD,CACF,CAEA6/B,mBAAqC,CACnC,IAAMj4D,EAAY,KAAK0W,UAAS,EAEhC,GAAI,KAAK+a,MAAe,EAAA,GAAK,KAAKA,MAAW,EAAA,EAC3C,OAAO,KAAK+lC,uBAAuB,6BAA8Bx3D,CAAI,EAGvE,GAAI,KAAKyxB,MAAK,EAAQ,EAAG,CACvB,IAAM1b,EAAK,KAAKW,UAAS,EAEzB,OADA,KAAKyS,KAAI,EACL,KAAKsI,MAAe,EAAA,GAAK,KAAKA,MAAW,EAAA,EACpC,KAAK+lC,uBACV,kCACAx3D,CACF,GAEAA,EAAK2G,IAAM,KAAKwyB,iBAAiBpjB,EAAI,KAAK,EACnC,KAAK+hD,iCAAiC93D,EAAM,EAAK,EAE5D,CAEA,KAAKizD,iBACH,CACEE,iBAAkB,CAAC,UAAU,EAC7BC,oBAAqB,CACnB,UACA,WACA,UACA,YACA,SACA,SACA,UAAU,CAEb,EACDpzD,CACF,EAEA,IAAMk4D,EAAM,KAAKR,yBAAyB13D,CAAI,EAC9C,OAAIk4D,IAIJ,MAAMvK,kBAAkB3tD,CAAI,EAE1B,CAACA,EAAK8W,UACN9W,EAAK2G,IAAI1G,OAAS,eACjBD,EAAK2G,IAAIV,OAAS,OAASjG,EAAK2G,IAAIV,OAAS,QAC9C,KAAKwtD,yBAAwB,IAE7BzzD,EAAKK,KAAOL,EAAK2G,IAAIV,KACrB,MAAM0nD,kBAAkB3tD,CAAI,EAExB,CAAC,KAAKyxB,MAAe,EAAA,GAAK,CAAC,KAAKA,MAAK,EAAM,GAC7C,KAAKzsB,WAAW,KAAI,EAAW,GAG5B,KAAK8yD,iCAAiC93D,EAAM,CAAC,CAACA,EAAK+3D,QAAQ,EACpE,CAEAI,oBAAsC,CACpC,IAAMn4D,EAAO,KAAK0W,UAAS,EAC3B1W,OAAAA,EAAK8lC,QAAU,KAAKsyB,yBAAwB,EACrC,KAAKphD,WAAWhX,EAAM,eAAe,CAC9C,CAEAo4D,0BAAmD,CACjD,KAAKpnC,OAAM,CAAU,EACrB,IAAM8U,EAAU,KAAK6uB,YACnB,cACA,KAAKsD,kBAAkB/E,KAAK,IAAI,CAClC,EACA,YAAKliC,OAAM,CAAU,EACd8U,CACT,CAEAuyB,uBAAiC,CAE/B,OADA,KAAKlvC,KAAI,EACL,KAAKkI,IAAG,EAAW,EACd,KAAKwB,aAAY,GAAa,GAEnC,KAAKA,aAAY,GAAa,GAChC,KAAK1J,KAAI,EAEP,CAAC,KAAKsI,MAAK,CAAY,IAG3B,KAAKtI,KAAI,EACL,CAAC,KAAKqqC,eAAc,GACf,IAET,KAAKrqC,KAAI,EACF,KAAKsI,MAAK,EAAO,GAC1B,CAEA6mC,mBAAoC,CAClC,IAAMt4D,EAAO,KAAK0W,UAAS,EAE3B,KAAKsa,OAAM,CAAU,EAEjB,KAAKS,MAAK,EAAW,GACvBzxB,EAAK+3D,SAAW,KAAKv+C,MAAMhM,MAC3B,KAAK2b,KAAI,EACT,KAAKiI,iBAAgB,GAAa,GACzB,KAAKsB,cAAa,GAAa,IACxC1yB,EAAK+3D,SAAW,IAGlB,KAAK/mC,OAAM,CAAY,EAIhB,CACL,IAAM6E,EAAgB,KAAKnf,UAAS,EACpCmf,EAAc5vB,KAAO,KAAKywD,yBAAwB,EAClD7gC,EAAc8gC,WAAa,KAAK4B,sBAAqB,EAAO,EAE5Dv4D,EAAK61B,cAAgB,KAAK7e,WAAW6e,EAAe,iBAAiB,CACvE,CACA71B,OAAAA,EAAKw4D,SAAW,KAAK9lC,cAAa,EAAO,EAAI,KAAK+lC,YAAa,EAAG,KAElE,KAAKznC,OAAM,CAAY,EAEnB,KAAKS,MAAK,EAAW,GACvBzxB,EAAK8Y,SAAW,KAAKU,MAAMhM,MAC3B,KAAK2b,KAAI,EACT,KAAK6H,OAAM,EAAY,GACd,KAAKK,IAAG,EAAY,IAC7BrxB,EAAK8Y,SAAW,IAGlB9Y,EAAKqyB,eAAiB,KAAKqmC,eAAc,EACzC,KAAKpmC,UAAS,EACd,KAAKtB,OAAM,CAAU,EAEd,KAAKha,WAAWhX,EAAM,cAAc,CAC7C,CAEA24D,kBAAkC,CAChC,IAAM34D,EAAO,KAAK0W,UAAS,EAC3B1W,EAAK44D,aAAe,KAAK1D,qBACvB,oBACA,KAAK2D,wBAAwB3F,KAAK,IAAI,EACxB,GACO,EACvB,EAIA,IAAI4F,EAAsB,GAC1B94D,OAAAA,EAAK44D,aAAarlC,QAAQwlC,GAAe,CACvC,GAAM,CAAE94D,KAAAA,CAAM,EAAG84D,EAGfD,GACA74D,IAAS,cACTA,IAAS,kBACT,EAAEA,IAAS,sBAAwB84D,EAAYjgD,WAE/C,KAAKH,MAAMi2C,GAASyC,2BAA4B0H,CAAW,EAG7DD,IAAAA,EACG74D,IAAS,sBAAwB84D,EAAYjgD,UAC9C7Y,IAAS,iBACb,CAAC,EAEM,KAAK+W,WAAWhX,EAAM,aAAa,CAC5C,CAEA64D,yBAA2D,CAGzD,IAAMG,EAAe,KAAKx/C,MAAM5B,SAE1BjI,EAAO,KAAK0hB,IAAG,EAAY,EAC3B,CAAEzZ,SAAAA,GAAa,KAAK4B,MAEtBy/C,EACAx9C,EACA3C,EACA7Y,EAGEi5D,EADS/yC,GAA2B,KAAK3M,MAAMvZ,IAAI,EAC5B,KAAK86B,kBAAiB,EAAK,KACxD,GAAIm+B,IAAW,GACbD,EAAU,GACVngD,EAAW,GACX2C,EAAQ,KAAKoW,gBAAgB,EAAI,EACjC,KAAKb,OAAM,EAAS,EACpB/wB,EAAO,KAAKw4D,YAAW,UACdS,IAAW,GAA6B,CACjDpgD,EAAW,GACX,IAAMqgD,EAAW,KAAK3/C,MAAMhM,MACtB4rD,EAAc,KAAKC,oBAAmB,EAExC,KAAKt+B,kBAAmB,IAAA,IAC1Bk+B,EAAU,GACVx9C,EAAQ,KAAK0d,iBACX,KAAKlC,YAA0Brf,CAAQ,EACvCuhD,CACF,EACA,KAAKnoC,OAAM,EAAY,EACvB,KAAKA,OAAM,EAAS,EACpB/wB,EAAO,KAAKw4D,YAAW,IAEvBQ,EAAU,GACVh5D,EAAOm5D,EACP,KAAKpoC,OAAM,EAAY,EAE3B,MACE/wB,EAAO,KAAKw4D,YAAW,EACvB3/C,EAAW,KAAKuY,IAAG,EAAY,EAI/B4nC,EAAU,KAAK5nC,IAAG,EAAS,EAG7B,GAAI4nC,EAAS,CACX,IAAIK,EACA79C,GACF69C,EAAc,KAAKriC,YAAkCrf,CAAQ,EAC7D0hD,EAAYxgD,SAAWA,EACvBwgD,EAAY79C,MAAQA,EACpB69C,EAAY//B,YAAct5B,EAEtB,KAAKoxB,IAAG,EAAY,IACtBioC,EAAYxgD,SAAW,GACvB,KAAKH,MACHi2C,GAASmD,uBACT,KAAKv4C,MAAMC,eACb,KAGF6/C,EAAc,KAAKriC,YAAkCrf,CAAQ,EAC7D0hD,EAAYxgD,SAAWA,EACvB,KAAKH,MAAMi2C,GAASqC,wBAAyBhxD,CAAI,EAGjDq5D,EAAY79C,MAAQxb,EACpBq5D,EAAY//B,YAAc,KAAKk/B,YAAW,GAE5Cx4D,EAAO,KAAK+W,WAAWsiD,EAAa,oBAAoB,CACzD,SAAUxgD,EAAU,CACnB,IAAMygD,EAAmB,KAAKtiC,YAA8Brf,CAAQ,EACpE2hD,EAAiBlnC,eAAiBpyB,EAClCA,EAAO,KAAK+W,WAAWuiD,EAAkB,gBAAgB,CAC3D,CAEA,GAAI5pD,EAAM,CACR,IAAM6pD,EAAW,KAAKviC,YAA0B+hC,CAAY,EAC5DQ,EAASnnC,eAAiBpyB,EAC1BA,EAAO,KAAK+W,WAAWwiD,EAAU,YAAY,CAC/C,CAEA,OAAOv5D,CACT,CAEAw5D,0BAAkD,CAChD,IAAMz5D,EAAO,KAAK0W,UAAS,EAC3B,YAAKsa,OAAM,EAAU,EACrBhxB,EAAKqyB,eAAiB,KAAKomC,YAAW,EACtC,KAAKznC,OAAM,EAAU,EACd,KAAKha,WAAWhX,EAAM,qBAAqB,CACpD,CAEA05D,iCACEz5D,EACAuX,EAC+B,CAC/B,IAAMxX,EAAO,KAAK0W,UAAS,EAG3B,OAAIzW,IAAS,sBACVD,EAAqCwX,SAAW,CAAC,CAACA,EAC/CA,GAAU,KAAK2R,KAAI,EACvB,KAAKA,KAAI,GAEX,KAAKwwC,iCAAiC,IACpC,KAAK5C,gBAAe,GAAW/2D,CAAI,CACrC,EACO,KAAKgX,WAAWhX,EAAMC,CAAI,CACnC,CAEA25D,wBAA0C,CACxC,IAAM55D,EAAO,KAAK0W,UAAS,EAC3B,OAAQ,KAAK8C,MAAMvZ,KAAI,CACrB,IAAA,KACA,IAAA,KACA,IAAA,KACA,IAAA,IACA,IAAA,IAGED,EAAKulC,QAAU,MAAMpS,cAAa,EAClC,MACF,QACE,KAAKnuB,WAAU,CACnB,CACA,OAAO,KAAKgS,WAAWhX,EAAM,eAAe,CAC9C,CAEA65D,4BAAwE,CAwB/D,CACL,IAAM75D,EAAO,KAAK0W,UAAS,EAC3B1W,OAAAA,EAAKulC,QAAU,MAAMu0B,cAAc,EAAK,EACjC,KAAK9iD,WAAWhX,EAAM,eAAe,CAC9C,CACF,CAEA+5D,2BAAqD,CACnD,OAAI,KAAKvgD,MAAMuX,OAAe,KAAK0nC,YAAW,EACvC,MAAMsB,0BAAyB,CACxC,CAEAC,oCAAuE,CACrE,IAAMC,EAAc,KAAK5D,oBAAmB,EAC5C,OAAI,KAAKxjC,aAAY,GAAO,GAAK,CAAC,KAAK+2B,sBAAqB,EACnD,KAAKoM,yBAAyBiE,CAAW,EAEzCA,CAEX,CAEAZ,qBAAgC,CAC9B,OAAQ,KAAK7/C,MAAMvZ,KAAI,CACrB,IAAA,KACA,IAAA,KACA,IAAA,KACA,IAAA,IACA,IAAA,IACE,OAAO,KAAK25D,uBAAsB,EACpC,IAAA,IACE,GAAI,KAAKpgD,MAAMhM,QAAU,IAAK,CAC5B,IAAMxN,EAAO,KAAK0W,UAAS,EACrBwtB,EAAY,KAAKpN,UAAS,EAChC,OAAIoN,EAAUjkC,OAAI,KAAeikC,EAAUjkC,OAAI,KAC7C,KAAK+E,WAAU,EAEjBhF,EAAKulC,QAAU,KAAK20B,gBAAe,EAC5B,KAAKljD,WAAWhX,EAAM,eAAe,CAC9C,CACA,MACF,IAAA,IACE,OAAO,KAAKg6D,mCAAkC,EAChD,IAAA,IACE,OAAO,KAAK1D,iBAAgB,EAC9B,IAAA,IACE,OAAO,KAAKjB,kBAAiB,EAC/B,IAAA,GACE,OAAO,KAAKsC,YAAY,KAAKU,sBAAsBnF,KAAK,IAAI,CAAC,EACzD,KAAKoF,kBAAiB,EACtB,KAAKH,mBAAkB,EAC7B,IAAA,GACE,OAAO,KAAKQ,iBAAgB,EAC9B,IAAA,IAeE,OAAO,KAAKc,yBAAwB,EACtC,IAAA,IACA,IAAA,IACE,OAAO,KAAKI,2BAA0B,EACxC,QAAS,CACP,GAAM,CAAE55D,KAAAA,GAAS,KAAKuZ,MACtB,GACEyM,GAAkBhmB,CAAI,GACtBA,IAAiB,IACjBA,IAAI,GACJ,CACA,IAAMk6D,EACJl6D,IAAI,GACA,gBACAA,IAAI,GACF,gBACA2yD,GAAoB,KAAKp5C,MAAMhM,KAAK,EAC5C,GACE2sD,IAAahqD,QACb,KAAK4qB,kBAAiB,IAAE,GACxB,CACA,IAAM/6B,EAAO,KAAK0W,UAAS,EAC3B,YAAKyS,KAAI,EACF,KAAKnS,WAAWhX,EAAMm6D,CAAQ,CACvC,CACA,OAAO,KAAKrE,qBAAoB,CAClC,CACF,CACF,CAEA,KAAK9wD,WAAU,CACjB,CAEAo1D,0BAAqC,CACnC,GAAM,CAAExiD,SAAAA,GAAa,KAAK4B,MACtBvZ,EAAO,KAAKo5D,oBAAmB,EACnC,KAAO,CAAC,KAAKzP,sBAAqB,GAAM,KAAKv4B,IAAe,CAAA,GAC1D,GAAI,KAAKI,MAAK,CAAY,EAAG,CAC3B,IAAMzxB,EAAO,KAAKi3B,YAA2Brf,CAAQ,EACrD5X,EAAKu5B,YAAct5B,EACnB,KAAK+wB,OAAM,CAAY,EACvB/wB,EAAO,KAAK+W,WAAWhX,EAAM,aAAa,CAC5C,KAAO,CACL,IAAMA,EAAO,KAAKi3B,YAAmCrf,CAAQ,EAC7D5X,EAAKw5B,WAAav5B,EAClBD,EAAKy5B,UAAY,KAAKg/B,YAAW,EACjC,KAAKznC,OAAM,CAAY,EACvB/wB,EAAO,KAAK+W,WAAWhX,EAAM,qBAAqB,CACpD,CAEF,OAAOC,CACT,CAEAo6D,qBAAwC,CACtC,IAAMr6D,EAAO,KAAK0W,UAAS,EACrB41C,EAAW,KAAK9yC,MAAMhM,MAC5B,YAAK2b,KAAI,EACTnpB,EAAKssD,SAAWA,EAChBtsD,EAAKqyB,eAAiB,KAAKioC,4BAA2B,EAElDhO,IAAa,YACf,KAAKiO,iCAAiCv6D,CAAI,EAGrC,KAAKgX,WAAWhX,EAAM,gBAAgB,CAC/C,CAEAu6D,iCAAiCv6D,EAAgC,CAC/D,OAAQA,EAAKqyB,eAAepyB,KAAI,CAC9B,IAAK,cACL,IAAK,cACH,OACF,QACE,KAAK0Y,MAAMi2C,GAASyD,mBAAoBryD,CAAI,CAChD,CACF,CAEAw6D,kBAAkC,CAChC,IAAMx6D,EAAO,KAAK0W,UAAS,EAC3B,KAAK0a,iBAAgB,GAAU,EAC/B,IAAMyE,EAAgB,KAAKnf,UAAS,EACpCmf,OAAAA,EAAc5vB,KAAO,KAAKywD,yBAAwB,EAClD7gC,EAAc8gC,WAAa,KAAK3C,WAAW,IACzC,KAAKyG,8BAA6B,CACpC,EACAz6D,EAAK61B,cAAgB,KAAK7e,WAAW6e,EAAe,iBAAiB,EAC9D,KAAK7e,WAAWhX,EAAM,aAAa,CAC5C,CAEAy6D,+BAAgC,CAC9B,GAAI,KAAKppC,IAAG,EAAY,EAAG,CACzB,IAAMslC,EAAa,KAAK+D,oCAAoC,IAC1D,KAAKjC,YAAW,CAClB,EACA,GACE,KAAKj/C,MAAM6lC,mCACX,CAAC,KAAK5tB,MAAiB,EAAA,EAEvB,OAAOklC,CAEX,CACF,CAEA2D,6BAAwC,CAGtC,OADExzC,GAAsB,KAAKtN,MAAMvZ,IAAI,GAAK,CAAC,KAAKuZ,MAAMihB,YAEpD,KAAK4/B,oBAAqB,EAC1B,KAAKxnC,aAAY,GAAU,EACzB,KAAK2nC,iBAAgB,EACrB,KAAKb,iCAAiC,IACpC,KAAKS,yBAAwB,CAC/B,CACR,CAEAO,+BACEt6D,EACAu6D,EACAtO,EACU,CACV,IAAMtsD,EAAO,KAAK0W,UAAS,EACrBmkD,EAAqB,KAAKxpC,IAAIi7B,CAAQ,EACtCxxC,EAAQ,CAAA,EACd,GACEA,EAAMgC,KAAK89C,EAAoB,CAAE,QAC1B,KAAKvpC,IAAIi7B,CAAQ,GAC1B,OAAIxxC,EAAMlB,SAAW,GAAK,CAACihD,EAClB//C,EAAM,CAAC,GAEhB9a,EAAK8a,MAAQA,EACN,KAAK9D,WAAWhX,EAAMK,CAAI,EACnC,CAEAy6D,iCAA4C,CAC1C,OAAO,KAAKH,+BACV,qBACA,KAAKL,4BAA4BpH,KAAK,IAAI,EAAC,EAE7C,CACF,CAEA6H,0BAA2B,CACzB,OAAO,KAAKJ,+BACV,cACA,KAAKG,gCAAgC5H,KAAK,IAAI,EAAC,EAEjD,CACF,CAEA8H,yBAA0B,CACxB,OAAI,KAAKvpC,MAAK,EAAM,EACX,GAGP,KAAKA,MAAK,EAAU,GACpB,KAAKkmC,YAAY,KAAKsD,qCAAqC/H,KAAK,IAAI,CAAC,CAEzE,CAEAgI,sBAAgC,CAC9B,GAAIj1C,GAAkB,KAAKzM,MAAMvZ,IAAI,GAAK,KAAKwxB,MAAK,EAAS,EAC3D,YAAKtI,KAAI,EACF,GAGT,GAAI,KAAKsI,MAAK,CAAU,EAAG,CAEzB,GAAM,CAAE+sB,OAAAA,GAAW,KAAKhlC,MAClB2hD,EAAqB3c,EAAO5kC,OAClC,GAAI,CACF,YAAKqzC,gBAA2B,EAAA,EAAI,EAC7BzO,EAAO5kC,SAAWuhD,CAC1B,MAAO,CACN,MAAO,EACT,CACF,CAEA,GAAI,KAAK1pC,MAAK,CAAY,EAAG,CAC3B,KAAKtI,KAAI,EAET,GAAM,CAAEq1B,OAAAA,GAAW,KAAKhlC,MAClB2hD,EAAqB3c,EAAO5kC,OAClC,GAAI,CACF,aAAMmzC,iBAAgB,EAAA,GAAA,CAItB,EACOvO,EAAO5kC,SAAWuhD,CAC1B,MAAO,CACN,MAAO,EACT,CACF,CAEA,MAAO,EACT,CAEAF,sCAAgD,CAO9C,OANA,KAAK9xC,KAAI,EACL,QAAKsI,MAAe,EAAA,GAAK,KAAKA,MAAiB,EAAA,GAK/C,KAAKypC,qBAAoB,IAEzB,KAAKzpC,MAAK,EAAS,GACnB,KAAKA,MAAc,EAAA,GACnB,KAAKA,MAAK,EAAY,GACtB,KAAKA,MAAW,EAAA,GAQd,KAAKA,MAAK,EAAU,IACtB,KAAKtI,KAAI,EACL,KAAKsI,MAAK,EAAS,IAO7B,CAEA6lC,qCACEN,EACoB,CACpB,OAAO,KAAKoE,SAAS,IAAM,CACzB,IAAMC,EAAI,KAAK3kD,UAAS,EACxB,KAAKsa,OAAOgmC,CAAW,EAEvB,IAAMh3D,EAAO,KAAK0W,UAAS,EAErB0/C,EAAU,CAAC,CAAC,KAAKpC,WACrB,KAAKsH,4BAA4BpI,KAAK,IAAI,CAC5C,EAEA,GAAIkD,GAAW,KAAK3kC,MAAK,EAAS,EAAG,CAGnC,IAAI8pC,EAAoB,KAAKvB,mCAAkC,EAG/D,OAAIuB,EAAkBt7D,OAAS,cAC7BD,EAAKk2D,cAAgBqF,EACrBv7D,EAAKo2D,QAAU,GACdp2D,EAA2BqyB,eAAiB,KAC7CkpC,EAAoB,KAAKvkD,WAAWhX,EAAM,iBAAiB,IAE3D,KAAK4W,2BAA2B2kD,EAAmBv7D,CAAI,EACvDu7D,EAAkBnF,QAAU,IAE9BiF,EAAEhpC,eAAiBkpC,EACZ,KAAKvkD,WAAWqkD,EAAG,kBAAkB,CAC9C,CAEA,IAAMG,EACJ,KAAKhI,eAAc,GACnB,KAAKQ,WAAW,KAAKyH,2BAA2BvI,KAAK,IAAI,CAAC,EAE5D,GAAI,CAACsI,EACH,OAAKpF,GAMLp2D,EAAKk2D,cAAgB,KAAKrkC,gBAAe,EACzC7xB,EAAKo2D,QAAUA,EACdp2D,EAA2BqyB,eAAiB,KAC7CgpC,EAAEhpC,eAAiB,KAAKrb,WAAWhX,EAAM,iBAAiB,EACnD,KAAKgX,WAAWqkD,EAAG,kBAAkB,GARnC,KAAKlF,sBAAqC,GAAOkF,CAAC,EAY7D,IAAMp7D,EAAO,KAAKk2D,sBAAqC,EAAK,EAC5Dn2D,OAAAA,EAAKk2D,cAAgBsF,EACrBx7D,EAAKqyB,eAAiBpyB,EACtBD,EAAKo2D,QAAUA,EACfiF,EAAEhpC,eAAiB,KAAKrb,WAAWhX,EAAM,iBAAiB,EACnD,KAAKgX,WAAWqkD,EAAG,kBAAkB,CAC9C,CAAC,CACH,CAEAK,yCAA0E,CACxE,GAAI,KAAKjqC,MAAK,EAAS,EACrB,OAAO,KAAK6lC,qCAAoC,EAAS,CAE7D,CAEAO,0BAA2D,CACzD,GAAI,KAAKpmC,MAAK,EAAS,EACrB,OAAO,KAAK0kC,sBAAqB,CAErC,CAEAuC,gBAAuC,CACrC,OAAO,KAAK9B,mBAAkB,EAAS,CACzC,CAEA6E,4BAAuD,CACrD,IAAM1lD,EAAK,KAAK8b,gBAAe,EAC/B,GAAI,KAAKgB,aAAY,GAAO,GAAK,CAAC,KAAK+2B,sBAAqB,EAC1D,YAAKzgC,KAAI,EACFpT,CAEX,CAEAulD,6BAAuC,CACrC,GAAI,KAAK9hD,MAAMvZ,OAAI,IACjB,MAAO,GAET,IAAMw6B,EAAc,KAAKjhB,MAAMihB,YAE/B,OADA,KAAKtR,KAAI,EACL,CAAClD,GAAkB,KAAKzM,MAAMvZ,IAAI,GAAK,CAAC,KAAKwxB,MAAK,EAAS,EACtD,IAGLgJ,GACF,KAAK9hB,MACH7I,EAAOxL,2BACP,KAAKkV,MAAMC,gBACX,CACElV,aAAc,SAChB,CACF,EAGK,GACT,CAEA4xD,sBACEwF,EAAW,GACXN,EAAgC,KAAK3kD,UAAS,EAC1B,CACpB,YAAK0kD,SAAS,IAAM,CACdO,GAAU,KAAK3qC,OAAM,EAAS,EAClCqqC,EAAEhpC,eAAiB,KAAKomC,YAAW,CACrC,CAAC,EACM,KAAKzhD,WAAWqkD,EAAG,kBAAkB,CAC9C,CAGA5C,aAAwB,CAEtB9J,GAAO,KAAKn1C,MAAMuX,MAAM,EACxB,IAAM9wB,EAAO,KAAK27D,0BAAyB,EAE3C,GACE,KAAKpiD,MAAM6lC,mCACX,KAAKuK,sBAAuB,GAC5B,CAAC,KAAKv4B,IAAG,EAAY,EAErB,OAAOpxB,EAET,IAAMD,EAAO,KAAKuT,gBAAqCtT,CAAI,EAC3DD,OAAAA,EAAK67D,UAAY57D,EAEjBD,EAAK87D,YAAc,KAAKpB,oCAAoC,IAC1D,KAAKkB,0BAAyB,CAChC,EAEA,KAAK5qC,OAAM,EAAY,EACvBhxB,EAAK+7D,SAAW,KAAKpC,iCAAiC,IACpD,KAAKlB,YAAW,CAClB,EAEA,KAAKznC,OAAM,EAAS,EACpBhxB,EAAKg8D,UAAY,KAAKrC,iCAAiC,IACrD,KAAKlB,YAAW,CAClB,EAEO,KAAKzhD,WAAWhX,EAAM,mBAAmB,CAClD,CAEAi8D,gCAA0C,CACxC,OACE,KAAKppC,aAAyB,GAAA,GAAK,KAAKoO,sBAAsB,KAAK,CAEvE,CAEA26B,2BAAsC,CACpC,OAAI,KAAKZ,wBAAuB,EACvB,KAAKtB,iCAAiC,gBAAgB,EAE3D,KAAKjoC,MAAK,EAAQ,EAEb,KAAKioC,iCAAiC,mBAAmB,EACvD,KAAKuC,+BAA8B,EAErC,KAAKvC,iCACV,oBACe,EACjB,EAEK,KAAKqB,yBAAwB,CACtC,CAEAmB,sBAA0C,CACpC,KAAKtmD,gBAAgB,aAAc,0BAA0B,GAC/D,KAAK+C,MAAMi2C,GAAS+C,sBAAuB,KAAKn4C,MAAM5B,QAAQ,EAGhE,IAAM5X,EAAO,KAAK0W,UAAS,EAC3B1W,OAAAA,EAAKqyB,eAAiB,KAAK+oC,SAAS,KAClC,KAAKjyC,KAAI,EACF,KAAKsI,MAAe,EAAA,EACvB,KAAKqkC,qBAAsB,EAC3B,KAAK2C,YAAW,EACrB,EACD,KAAKznC,OAAM,EAAM,EACjBhxB,EAAKwT,WAAa,KAAK0mD,gBAAe,EAC/B,KAAKljD,WAAWhX,EAAM,iBAAiB,CAChD,CAIAm8D,sBACEtvD,EAC2D,CAC3D,IAAMuvD,EAAmB,KAAK5iD,MAAM5B,SAE9BykD,EAAgB,KAAKxH,qBACzB,wBACA,IAAM,CA2BG,CACL,IAAM70D,EAAO,KAAK0W,UAAS,EAI3B1W,OAAAA,EAAKwT,WAAa,KAAKgiD,kBACrBC,CAEF,EACI,KAAKhkC,MAAK,EAAM,IAElBzxB,EAAK2W,eAAiB,KAAK++C,qBAAoB,GAG1C,KAAK1+C,WACVhX,EAEA,+BACF,CACF,CACF,CACF,EAEA,OAAKq8D,EAAcziD,QACjB,KAAKjB,MAAMi2C,GAASe,wBAAyByM,EAAkB,CAC7DvvD,MAAAA,CACF,CAAC,EAGIwvD,CAGT,CAEAC,4BACEt8D,EACAs3B,EAEI,CAAA,EAC6B,CACjC,GAAI,KAAKuyB,sBAAqB,EAAI,OAAO,KACzC,KAAKz4B,iBAAgB,GAAc,EAC/BkG,EAAWpC,UAASl1B,EAAKk1B,QAAU,IACnCjP,GAAkB,KAAKzM,MAAMvZ,IAAI,GACnCD,EAAK+V,GAAK,KAAK8b,gBAAe,EAC9B,KAAKm8B,gBAAgBhuD,EAAK+V,GAAE,GAA+B,IAE3D/V,EAAK+V,GAAK,KACV,KAAK4C,MAAMi2C,GAASsC,qBAAsB,KAAK13C,MAAM5B,QAAQ,GAG/D5X,EAAK2W,eAAiB,KAAKkgD,yBACzB,KAAKtD,0BACP,EACI,KAAKliC,IAAG,EAAY,IACtBrxB,EAAKi0B,QAAU,KAAKkoC,sBAAsB,SAAS,GAErD,IAAM1mD,EAAO,KAAKiB,UAAS,EAC3BjB,OAAAA,EAAKA,KAAO,KAAK2lD,SAAS,KAAKhD,yBAAyBlF,KAAK,IAAI,CAAC,EAClElzD,EAAKyV,KAAO,KAAKuB,WAAWvB,EAAM,iBAAiB,EAC5C,KAAKuB,WAAWhX,EAAM,wBAAwB,CACvD,CAEAu8D,4BACEv8D,EAC0B,CAC1BA,OAAAA,EAAK+V,GAAK,KAAK8b,gBAAe,EAC9B,KAAKm8B,gBAAgBhuD,EAAK+V,GAAE,CAA0B,EAEtD/V,EAAKqyB,eAAiB,KAAK+oC,SAAS,IAAM,CAOxC,GANAp7D,EAAK2W,eAAiB,KAAKkgD,yBACzB,KAAK7D,qBACP,EAEA,KAAKhiC,OAAM,EAAM,EAGf,KAAK6B,aAAY,GAAc,GAC/B,KAAKkI,kBAAmB,IAAA,GACxB,CACA,IAAM/6B,EAAO,KAAK0W,UAAS,EAC3B,YAAKyS,KAAI,EACF,KAAKnS,WAAWhX,EAAM,oBAAoB,CACnD,CAEA,OAAO,KAAKy4D,YAAW,CACzB,CAAC,EAED,KAAKnmC,UAAS,EACP,KAAKtb,WAAWhX,EAAM,wBAAwB,CACvD,CAGAw8D,oBAAuBzmC,EAAgB,CACrC,GAAI,KAAKC,WAAU,IAAOzO,GAAGxM,MAAO,CAClC,IAAMkb,EAAa,KAAKzc,MAAM6N,QAC9B,KAAK7N,MAAM6N,QAAU,CAAC4O,EAAW,CAAC,CAAC,EACnC,GAAI,CACF,OAAOF,EAAE,CACX,QAAC,CACC,KAAKvc,MAAM6N,QAAU4O,CACvB,CACF,KACE,QAAOF,EAAE,CAEb,CAOAqlC,SAAYrlC,EAAgB,CAC1B,IAAMjF,EAAY,KAAKtX,MAAMuX,OAC7B,KAAKvX,MAAMuX,OAAS,GACpB,GAAI,CACF,OAAOgF,EAAE,CACX,QAAC,CACC,KAAKvc,MAAMuX,OAASD,CACtB,CACF,CAEA4pC,oCAAuC3kC,EAAgB,CACrD,IAAM0mC,EACJ,KAAKjjD,MAAM6lC,kCACb,KAAK7lC,MAAM6lC,kCAAoC,GAC/C,GAAI,CACF,OAAOtpB,EAAE,CACX,QAAC,CACC,KAAKvc,MAAM6lC,kCACTod,CACJ,CACF,CAEA9C,iCAAoC5jC,EAAgB,CAClD,IAAM0mC,EACJ,KAAKjjD,MAAM6lC,kCACb,KAAK7lC,MAAM6lC,kCAAoC,GAC/C,GAAI,CACF,OAAOtpB,EAAE,CACX,QAAC,CACC,KAAKvc,MAAM6lC,kCACTod,CACJ,CACF,CAEA7F,mBAAmB/pD,EAAwC,CACzD,GAAI,KAAK4kB,MAAM5kB,CAAK,EAClB,OAAO,KAAK6vD,oBAAmB,CAEnC,CAEAnE,sBAAsB1rD,EAA4B,CAChD,OAAO,KAAKuuD,SAAS,KACnB,KAAKpqC,OAAOnkB,CAAK,EACV,KAAK4rD,YAAW,EACxB,CACH,CAEAiE,qBAAgC,CAC9B,OAAO,KAAKtB,SAAS,KACnB,KAAKjyC,KAAI,EACF,KAAKsvC,YAAW,EACxB,CACH,CAEAkE,mBAAoC,CAClC,IAAM38D,EAAO,KAAK0W,UAAS,EAE3B1W,OAAAA,EAAK+V,GAAK,KAAK0b,MAAe,GAAA,EAC1B,MAAMze,mBAAmB,KAAKwG,MAAMhM,KAAK,EACzC,KAAKqkB,gBAA8B,EAAI,EACvC,KAAKR,IAAG,EAAM,IAChBrxB,EAAK48D,YAAc,MAAM/gC,wBAAuB,GAE3C,KAAK7kB,WAAWhX,EAAM,cAAc,CAC7C,CAEA68D,uBACE78D,EACAs3B,EAGI,CAAA,EACiB,CACrB,OAAIA,EAAW5H,QAAO1vB,EAAK0vB,MAAQ,IAC/B4H,EAAWpC,UAASl1B,EAAKk1B,QAAU,IACvC,KAAK9D,iBAAgB,GAAS,EAC9BpxB,EAAK+V,GAAK,KAAK8b,gBAAe,EAC9B,KAAKm8B,gBACHhuD,EAAK+V,GACL/V,EAAK0vB,MAAK,KAAA,IACZ,EAKE,KAAKsB,OAAM,CAAU,EACrBhxB,EAAK8lC,QAAU,KAAK+uB,qBAClB,cACA,KAAK8H,kBAAkBzJ,KAAK,IAAI,CAClC,EACA,KAAKliC,OAAM,CAAU,EAEhB,KAAKha,WAAWhX,EAAM,mBAAmB,CAClD,CAEA88D,iBAAgC,CAC9B,IAAM98D,EAAO,KAAK0W,UAAS,EAC3B,YAAKsa,OAAM,CAAU,EACrBhxB,EAAK8lC,QAAU,KAAK+uB,qBAClB,cACA,KAAK8H,kBAAkBzJ,KAAK,IAAI,CAClC,EACA,KAAKliC,OAAM,CAAU,EACd,KAAKha,WAAWhX,EAAM,YAAY,CAC3C,CAEA+8D,oBAAsC,CACpC,IAAM/8D,EAAO,KAAK0W,UAAS,EAC3B,YAAKsU,MAAMF,MAAK,CAAgB,EAEhC,KAAKkG,OAAM,CAAU,EAErB,MAAMgsC,4BACHh9D,EAAKyV,KAAO,CAAA,EACItF,OACF,GAAI,CAErB,EACA,KAAK6a,MAAMD,KAAI,EACR,KAAK/T,WAAWhX,EAAM,eAAe,CAC9C,CAEAi9D,oCACEj9D,EACAk9D,EAAkB,GACK,CAYvB,GAXAl9D,EAAK+V,GAED,KAAK8b,gBAAe,EAG0CqrC,GAGhE,KAAKlP,gBAAgBhuD,EAAK+V,GAAE,IAA+B,EAGxB,KAAKsb,IAAG,EAAO,EAAG,CACrD,IAAM8rC,EAAQ,KAAKzmD,UAAS,EAC5B,KAAKumD,oCAAoCE,EAAO,EAAI,EAEpDn9D,EAAKyV,KAAO0nD,CACd,MACE,KAAKnyC,MAAMF,MAAK,IAAoB,EACpC,KAAKqgC,UAAUrgC,MAAK,CAAgB,EACpC9qB,EAAKyV,KAAO,KAAKsnD,mBAAkB,EACnC,KAAK5R,UAAUpgC,KAAI,EACnB,KAAKC,MAAMD,KAAI,EAEjB,OAAO,KAAK/T,WAAWhX,EAAM,qBAAqB,CACpD,CAEAo9D,wCACEp9D,EACuB,CACvB,OAAI,KAAK6yB,aAAY,GAAW,GAC9B7yB,EAAKK,KAAO,SAEVL,EAAKq9D,OAAS,GAEhBr9D,EAAK+V,GAAK,KAAK8b,gBAAe,GACrB,KAAKJ,MAAK,GAAU,GAC7BzxB,EAAKK,KAAO,SACZL,EAAK+V,GAAK,MAAM/C,mBAAmB,KAAKwG,MAAMhM,KAAK,GAEnD,KAAKxI,WAAU,EAEb,KAAKysB,MAAK,CAAU,GACtB,KAAKzG,MAAMF,MAAK,IAAoB,EACpC,KAAKqgC,UAAUrgC,MAAK,CAAgB,EACpC9qB,EAAKyV,KAAO,KAAKsnD,mBAAkB,EACnC,KAAK5R,UAAUpgC,KAAI,EACnB,KAAKC,MAAMD,KAAI,GAEf,KAAKuH,UAAS,EAGT,KAAKtb,WAAWhX,EAAM,qBAAqB,CACpD,CAEAs9D,+BACEt9D,EACAu9D,EACAj9B,EAC6B,CAE3BtgC,EAAKsgC,SAAWA,GAAY,GAE9BtgC,EAAK+V,GAAKwnD,GAA0B,KAAK1rC,gBAAe,EACxD,KAAKm8B,gBAAgBhuD,EAAK+V,GAAE,IAAkC,EAC9D,KAAKib,OAAM,EAAM,EACjB,IAAMwsC,EAAkB,KAAKC,uBAAsB,EACnD,OACEz9D,EAAKwvB,aAAe,QACpBguC,EAAgBv9D,OAAS,6BAEzB,KAAK0Y,MAAMi2C,GAASmB,yBAA0ByN,CAAe,EAE/Dx9D,EAAKw9D,gBAAkBA,EACvB,KAAKlrC,UAAS,EACP,KAAKtb,WAAWhX,EAAM,2BAA2B,CAC1D,CAEA09D,6BAAuC,CACrC,OACE,KAAK7qC,aAAwB,GAAA,GAC7B,KAAKkI,kBAAmB,IAA8B,EAE1D,CAEA0iC,wBAA8C,CAC5C,OAAO,KAAKC,4BAA6B,EACrC,KAAKC,+BAA8B,EACnC,KAAKnI,kBAAiB,CAA4B,CACxD,CAEAmI,gCAA8D,CAC5D,IAAM39D,EAAO,KAAK0W,UAAS,EAC3B,YAAK0a,iBAAgB,GAAY,EACjC,KAAKJ,OAAM,EAAU,EAChB,KAAKS,MAAK,GAAU,GACvB,KAAKzsB,WAAU,EAGjBhF,EAAKwT,WAAa,MAAM2f,cAAa,EACrC,KAAKnC,OAAM,EAAU,EACrB,KAAKkrB,kBAAoB,GAClB,KAAKllC,WAAWhX,EAAM,2BAA2B,CAC1D,CAIA23D,YAAeiG,EAAe,CAC5B,IAAMpkD,EAAQ,KAAKA,MAAMyhB,MAAK,EACxBslB,EAAMqd,EAAC,EACb,YAAKpkD,MAAQA,EACN+mC,CACT,CAEAsd,mBACED,EACsB,CACtB,IAAMrjD,EAAS,KAAKwnB,SAClBI,GAEEy7B,EAAG,GAAIz7B,EAAK,CAChB,EAEA,GAAI5nB,EAAAA,EAAOgoB,SAAW,CAAChoB,EAAOva,MAC9B,OAAIua,EAAO7L,QAAO,KAAK8K,MAAQe,EAAOkoB,WAE/BloB,EAAOva,IAChB,CAEAg0D,WAAc4J,EAA+C,CAC3D,IAAMpkD,EAAQ,KAAKA,MAAMyhB,MAAK,EACxB1gB,EAASqjD,EAAC,EAChB,GAAIrjD,IAAWpK,QAAaoK,IAAW,GACrC,OAAOA,EAET,KAAKf,MAAQA,CACf,CAEAskD,kBAAkB99D,EAAW,CAC3B,GAAI,KAAK8pD,iBAAgB,EACvB,OAEF,IAAMiU,EAAY,KAAKvkD,MAAMvZ,KAC7B,OAAO,KAAK+9D,mBAAmB,IAAM,CACnC,OAAQD,EAAS,CACf,IAAA,IACE/9D,OAAAA,EAAKk1B,QAAU,GACR,MAAM+oC,uBACXj+D,EACY,GACe,EAC7B,EACF,IAAA,IAGEA,OAAAA,EAAKk1B,QAAU,GACR,KAAKgpC,WACVl+D,EACkB,GACD,EACnB,EACF,IAAA,KACE,OAAO,KAAK68D,uBAAuB78D,EAAM,CAAEk1B,QAAS,EAAK,CAAC,EAC5D,IAAA,KACE,OAAO,KAAKkoC,wCAAwCp9D,CAAI,EAC1D,IAAA,KACE,GAAI,KAAKwZ,MAAMihB,YACb,OAGJ,IAAA,IACA,IAAA,IACE,MAAI,CAAC,KAAKhJ,MAAK,EAAU,GAAK,CAAC,KAAKwP,sBAAsB,MAAM,GAC9DjhC,EAAKk1B,QAAU,GACR,KAAKipC,kBAAkBn+D,EAAM,KAAKwZ,MAAMhM,MAAO,EAAI,IAI5D,KAAKwjB,OAAM,EAAU,EACd,KAAK6rC,uBAAuB78D,EAAM,CACvC0vB,MAAO,GACPwF,QAAS,EACX,CAAC,GACH,IAAA,KACE,GAAI,KAAKkpC,QAAO,EACd,YAAKzlD,MACHi2C,GAASiC,kCACT,KAAKr3C,MAAM5B,SACX,SACF,EACA5X,EAAKk1B,QAAU,GACR,KAAKipC,kBAAkBn+D,EAAM,QAAS,EAAI,EAEnD,MACF,IAAA,IACE,GAAI,KAAKq+D,aAAY,EACnB,YAAK1lD,MACHi2C,GAAS6B,uCACT,KAAKj3C,MAAM5B,SACX,SACF,EACA5X,EAAKk1B,QAAU,GACf,KAAK/L,KAAI,EACF,KAAKg1C,kBAAkBn+D,EAAM,cAAe,EAAI,EAEzD,MACF,IAAA,KAAoB,CAClB,IAAMua,EAAS,KAAK+hD,4BAA4Bt8D,EAAM,CACpDk1B,QAAS,EACX,CAAC,EACD,GAAI3a,EAAQ,OAAOA,CACrB,CAEA,QACE,GAAI0L,GAAkB83C,CAAS,EAC7B,OAAO,KAAKO,mBACVt+D,EACA,KAAKwZ,MAAMhM,MACA,GACM,IACnB,CAEN,CACF,CAAC,CACH,CAGA+wD,6BAAyD,CACvD,OAAO,KAAKD,mBACV,KAAK5nD,UAAW,EAChB,KAAK8C,MAAMhM,MACA,GACM,IACnB,CACF,CAEAgxD,2BACEx+D,EACAu6B,EACAjhB,EAC2B,CAC3B,OAAQihB,EAAKt0B,KAAI,CACf,IAAK,UAAW,CACd,IAAM6T,EAAc,KAAKgkD,kBAAkB99D,CAAI,EAC/C,OAAI8Z,IACFA,EAAYob,QAAU,IAEjBpb,CACT,CACA,IAAK,SAGH,GAAI,KAAK2X,MAAK,CAAU,EAAG,CACzB,KAAKzG,MAAMF,MAAK,IAAoB,EACpC,KAAKqgC,UAAUrgC,MAAK,CAAgB,EACpC,IAAM2zC,EAAMz+D,EACZy+D,OAAAA,EAAIp+D,KAAO,SAETL,EAAKq9D,OAAS,GAEhBoB,EAAI1oD,GAAKwkB,EACTkkC,EAAIhpD,KAAO,KAAKsnD,mBAAkB,EAClC,KAAK/xC,MAAMD,KAAI,EACf,KAAKogC,UAAUpgC,KAAI,EACZ,KAAK/T,WAAWynD,EAAK,qBAAqB,CACnD,CACA,MAEF,QACE,OAAO,KAAKH,mBACVt+D,EACAu6B,EAAKt0B,KACM,GACXqT,CACF,CACJ,CACF,CAGAglD,mBACEt+D,EACAwN,EACA2b,EACA7P,EACA,CAEA,OAAQ9L,EAAK,CACX,IAAK,WACH,GACE,KAAKkxD,sBAAsBv1C,CAAI,IAC9B,KAAKsI,MAAK,EAAU,GAAKxL,GAAkB,KAAKzM,MAAMvZ,IAAI,GAE3D,OAAO,KAAK0+D,2BAA2B3+D,EAAMsZ,CAAU,EAEzD,MAEF,IAAK,SACH,GAAI,KAAKolD,sBAAsBv1C,CAAI,EAAG,CACpC,GAAI,KAAKsI,MAAK,GAAU,EACtB,OAAO,KAAK2rC,wCAAwCp9D,CAAI,EACnD,GAAIimB,GAAkB,KAAKzM,MAAMvZ,IAAI,EAC1CD,OAAAA,EAAKK,KAAO,SACL,KAAK48D,oCAAoCj9D,CAAI,CAExD,CACA,MAEF,IAAK,YACH,GACE,KAAK0+D,sBAAsBv1C,CAAI,GAC/BlD,GAAkB,KAAKzM,MAAMvZ,IAAI,EAEjCD,OAAAA,EAAKK,KAAO,YACL,KAAK48D,oCAAoCj9D,CAAI,EAEtD,MAEF,IAAK,OACH,GACE,KAAK0+D,sBAAsBv1C,CAAI,GAC/BlD,GAAkB,KAAKzM,MAAMvZ,IAAI,EAEjC,OAAO,KAAKs8D,4BAA4Bv8D,CAAI,EAE9C,KACJ,CACF,CAEA0+D,sBAAsBv1C,EAAe,CACnC,OAAIA,EACE,KAAK0gC,sBAAqB,EAAW,IACzC,KAAK1gC,KAAI,EACF,IAEF,CAAC,KAAK2gC,iBAAgB,CAC/B,CAEA8U,oCACEhnD,EACuC,CACvC,GAAI,CAAC,KAAK6Z,MAAK,EAAM,EAAG,OAExB,IAAMotC,EAA4B,KAAKrlD,MAAMqhB,uBAC7C,KAAKrhB,MAAMqhB,uBAAyB,GAEpC,IAAM0lB,EACJ,KAAKsd,mBAAmB,IAAM,CAC5B,IAAM79D,EAAO,KAAKi3B,YAAuCrf,CAAQ,EACjE5X,OAAAA,EAAK2W,eAAiB,KAAKmgD,sBACzB,KAAKxD,oBACP,EAEA,MAAMhyB,oBAAoBthC,CAAI,EAC9BA,EAAKoyB,WAAa,KAAKspC,wCAAuC,EAC9D,KAAK1qC,OAAM,EAAS,EACbhxB,CACT,CAAC,EAIH,GAFA,KAAKwZ,MAAMqhB,uBAAyBgkC,EAEhC,EAACte,EAEL,OAAO,MAAMxc,qBACXwc,EAC6B,KACjB,EACd,CACF,CAIAue,kCAEc,CACZ,GAAI,KAAK3oC,UAAS,IAAE,GACpB,OAAO,KAAKu/B,qBAAoB,CAClC,CAEAA,sBAAuD,CACrD,IAAM11D,EAAO,KAAK0W,UAAS,EAC3B1W,OAAAA,EAAK8U,OAAS,KAAKsmD,SAAS,IAC1B,KAAKoB,oBAAoB,KACvB,KAAKxrC,OAAM,EAAM,EACV,KAAK6jC,qBACV,4BACA,KAAK4D,YAAYvF,KAAK,IAAI,CAC5B,EACD,CACH,EACIlzD,EAAK8U,OAAO8E,SAAW,EACzB,KAAKjB,MAAMi2C,GAASgB,mBAAoB5vD,CAAI,EACnC,CAAC,KAAKwZ,MAAMuX,QAAU,KAAKiF,WAAU,IAAOzO,GAAGxM,OAGxD,KAAKub,aAAY,EAEnB,KAAKtF,OAAM,EAAM,EACV,KAAKha,WAAWhX,EAAM,8BAA8B,CAC7D,CAEA++D,sBAAgC,CAC9B,OAAOh4C,GAA0B,KAAKvN,MAAMvZ,IAAI,CAClD,CAMAy6B,0BAAoC,CAClC,OAAI,KAAKqkC,qBAAoB,EAAW,GACjC,MAAMrkC,yBAAwB,CACvC,CAEA8yB,oBACEn7C,EACAiH,EACmC,CAEnC,IAAM1B,EAAW0B,EAAWM,OACxBN,EAAW,CAAC,EAAE9K,IAAI5Q,MAClB,KAAK4b,MAAM5B,SAETq8C,EAAyB,CAAA,EAC/B,KAAKhB,iBACH,CACEE,iBAAkB,CAChB,SACA,UACA,YACA,WACA,UAAU,CAEb,EACDc,CACF,EACA,IAAMO,EAAgBP,EAASO,cACzBwK,EAAW/K,EAAS+K,SACpBjH,EAAW9D,EAAS8D,SAExB,EAAE1lD,EAAK,KACNmiD,GAAiBuD,GAAYiH,IAE9B,KAAKrmD,MAAMi2C,GAASwD,4BAA6Bx6C,CAAQ,EAG3D,IAAMwmB,EAAO,KAAK0B,kBAAiB,EAC/BztB,EAAK,GACP,KAAKwtB,uBAAuBzB,CAAI,EAElC,IAAMquB,EAAM,KAAK3sB,kBAAkB1B,EAAK5vB,IAAI5Q,MAAOwgC,CAAI,EACvD,GAAIo2B,GAAiBuD,GAAYiH,EAAU,CACzC,IAAMC,EAAK,KAAKhoC,YAAmCrf,CAAQ,EAC3D,OAAI0B,EAAWM,SACbqlD,EAAG3lD,WAAaA,GAEdk7C,IAAeyK,EAAGzK,cAAgBA,GAClCuD,IAAUkH,EAAGlH,SAAWA,GACxBiH,IAAUC,EAAGD,SAAWA,GACxBvS,EAAIxsD,OAAS,cAAgBwsD,EAAIxsD,OAAS,qBAC5C,KAAK0Y,MAAMi2C,GAAS6D,iCAAkCwM,CAAE,EAE1DA,EAAGC,UAAYzS,EACR,KAAKz1C,WAAWioD,EAAI,qBAAqB,CAClD,CAEA,OAAI3lD,EAAWM,SACbwkB,EAAK9kB,WAAaA,GAGbmzC,CACT,CAEA0S,kBAAkBn/D,EAAkD,CAClE,OACGA,EAAKC,OAAS,uBACb,MAAMk/D,kBAAkBn/D,EAAKk/D,SAAS,GACxC,MAAMC,kBAAkBn/D,CAAI,CAEhC,CAEAo/D,0BAA0Bp/D,EAA0B,CAClD,QAAW45B,KAAS55B,EAAK8U,OAErB8kB,EAAM35B,OAAS,cACd25B,EAAc9gB,UACf,CAAC,KAAKU,MAAM2lC,kBAEZ,KAAKxmC,MAAMi2C,GAAS7gC,kBAAmB6L,CAAK,CAGlD,CAEAiJ,2BACE7iC,EACA8U,EACAunB,EACM,CACN,MAAMwG,2BAA2B7iC,EAAM8U,EAAQunB,CAAgB,EAC/D,KAAK+iC,0BAA0Bp/D,CAAI,CACrC,CAEAm6B,2BAMEn6B,EAAiBC,EAAiBkW,EAAoB,GAAU,CAC5D,KAAKsb,MAAK,EAAS,IACrBzxB,EAAKoyB,WAAa,KAAKklC,qCAAoC,EAAS,GAGtE,IAAM+H,EACJp/D,IAAS,sBACL,oBACAA,IAAS,eAAiBA,IAAS,qBACjC,kBACAkQ,OACR,OAAIkvD,GAAgB,CAAC,KAAK5tC,MAAK,CAAU,GAAK,KAAKq4B,iBAAgB,EAC1D,KAAK9yC,WAAWhX,EAAMq/D,CAAY,EAEvCA,IAAiB,qBAAuB,KAAK7lD,MAAM2lC,mBACrD,KAAKxmC,MAAMi2C,GAASW,iCAAkCvvD,CAAI,EACrDA,EAAuCk1B,SACnC,MAAMiF,2BAA2Bn6B,EAAMq/D,EAAclpD,CAAQ,GAGxE,KAAKipD,0BAA0Bp/D,CAAI,EAE5B,MAAMm6B,2BAA2Bn6B,EAAMC,EAAMkW,CAAQ,EAC9D,CAEAmpD,4BAA4Bt/D,EAAwB,CAC9C,CAACA,EAAKyV,MAAQzV,EAAK+V,GAGrB,KAAKi4C,gBAAgBhuD,EAAK+V,GAAE,IAA6B,EAEzD,MAAMupD,4BAA4Bt/D,CAAI,CAE1C,CAEAu/D,2BAA2BC,EAA8C,CACvEA,EAAMjsC,QAAQvzB,GAAQ,CAChBA,GAAMC,OAAS,wBACjB,KAAK0Y,MAAMi2C,GAAS0D,yBAA0BtyD,EAAKqyB,cAAc,CAErE,CAAC,CACH,CAEAiM,iBACED,EAEAohC,EACwC,CAKxC,YAAKF,2BAA2BlhC,CAAQ,EACjCA,CACT,CAEAI,eACEC,EACAC,EACAC,EACA9mB,EACuC,CACvC,IAAM9X,EAAO,MAAMy+B,eACjBC,EACAC,EACAC,EACA9mB,CACF,EAEA,OAAI9X,EAAKC,OAAS,mBAChB,KAAKs/D,2BAA2Bv/D,EAAK6+B,QAAQ,EAGxC7+B,CACT,CAEAwjC,eACEvpB,EAEArC,EACAyrB,EACA7pB,EACc,CACd,GAAI,CAAC,KAAKowC,sBAAqB,GAAM,KAAKn4B,MAAa,EAAA,EAAG,CAIxD,KAAKjY,MAAM6+B,mBAAqB,GAChC,KAAKlvB,KAAI,EAET,IAAMu2C,EACJ,KAAKzoC,YAAmCrf,CAAQ,EAClD8nD,OAAAA,EAAkBlsD,WAAayG,EACxB,KAAKjD,WAAW0oD,EAAmB,qBAAqB,CACjE,CAEA,IAAIC,EAAiB,GACrB,GACE,KAAKluC,MAAK,EAAe,GACzB,KAAKsJ,kBAAmB,IAAA,GACxB,CACA,GAAIsI,EACF7pB,OAAAA,EAAMmqB,KAAO,GACN1pB,EAETT,EAAMU,oBAAsBylD,EAAiB,GAC7C,KAAKx2C,KAAI,CACX,CAGA,GAAI,KAAKsI,MAAW,EAAA,GAAK,KAAKA,MAAkB,EAAA,EAAG,CACjD,IAAImuC,EAIErlD,EAAS,KAAKsjD,mBAAmB,IAAM,CAC3C,GAAI,CAACx6B,GAAW,KAAKw8B,qBAAqB5lD,CAAI,EAAG,CAG/C,IAAM6lD,EACJ,KAAKlB,oCAAoChnD,CAAQ,EACnD,GAAIkoD,EACFtmD,OAAAA,EAAMmqB,KAAO,GACNm8B,CAEX,CAEA,IAAMl8B,EAAgB,KAAKk7B,iCAAgC,EAC3D,GAAI,CAACl7B,EAAe,OAEpB,GAAI+7B,GAAkB,CAAC,KAAKluC,MAAK,EAAU,EAAG,CAC5CmuC,EAAuB,KAAKpmD,MAAMukB,YAAW,EAC7C,MACF,CAEA,GAAI5W,GAAgB,KAAK3N,MAAMvZ,IAAI,EAAG,CACpC,IAAMsa,EAAS,MAAMwlD,8BACnB9lD,EACArC,EACA4B,CACF,EAIEe,OAAAA,EAAO5D,eAAiBitB,EAEnBrpB,CACT,CAEA,GAAI,CAAC8oB,GAAW,KAAKhS,IAAG,EAAU,EAAG,CACnC,IAAMrxB,EAAO,KAAKi3B,YAEhBrf,CAAQ,EACV5X,OAAAA,EAAK+Y,OAASkB,EAEdja,EAAKiZ,UAAY,KAAKqqB,6BAA4B,EAGlD,KAAKi8B,2BAA2Bv/D,EAAKiZ,SAAS,EAK5CjZ,EAAK2W,eAAiBitB,EAGpBpqB,EAAMU,sBACPla,EAA0C8Y,SACzC6mD,GAGG,KAAK/mD,qBAAqB5Y,EAAMwZ,EAAMU,mBAAmB,CAClE,CAEA,IAAM8lD,EAAY,KAAKxmD,MAAMvZ,KAC7B,GAEE+/D,IAAS,IAETA,IAAS,IAERA,IAAS,IACR15C,GAAwB05C,CAAS,GACjC,CAAC,KAAKpW,sBAAqB,EAG7B,OAGF,IAAM5pD,EAAO,KAAKi3B,YAAyCrf,CAAQ,EACnE5X,OAAAA,EAAKwT,WAAayG,EAIhBja,EAAK2W,eAAiBitB,EAEjB,KAAK5sB,WAAWhX,EAAM,2BAA2B,CAC1D,CAAC,EAMD,GAJI4/D,GACF,KAAK56D,WAAW46D,EAAoB,EAAW,EAG7CrlD,EACF,OAAIA,EAAOta,OAAS,+BAEhB,KAAKwxB,MAAK,EAAO,GAChB,KAAKA,MAAoB,EAAA,GACxB,KAAKsJ,kBAAiB,IAAE,KAE1B,KAAKpiB,MACHi2C,GAASoC,kDACT,KAAKx3C,MAAM5B,QACb,EAEE,CAAC,KAAK6Z,MAAY,EAAA,GAAK,CAAC,KAAKA,MAAK,EAAe,IAInDlX,EAAO/G,WAAa,MAAMwG,mBAAmBC,EAAMT,CAAK,IAGrDe,CAEX,CAEA,OAAO,MAAMipB,eAAevpB,EAAMrC,EAAUyrB,EAAS7pB,CAAK,CAC5D,CAEAqqB,eAAe7jC,EAA6B,CAAA,IAAAigE,EAC1C,MAAMp8B,eAAe7jC,CAAI,EAEzB,GAAM,CAAE+Y,OAAAA,CAAQ,EAAG/Y,EAEjB+Y,EAAO9Y,OAAS,6BAChB,GAAAggE,EAAClnD,EAAOjF,QAAK,MAAZmsD,EAAchrD,iBAKbjV,EAAK2W,eAAiBoC,EAAOpC,eAE/B3W,EAAK+Y,OAASA,EAAOvF,WAEzB,CAEA0sD,YACE9hC,EACA+hC,EACAC,EACc,CACd,IAAIC,EACJ,GACEp5C,GAAuB,EAAO,EAAIm5C,GAClC,CAAC,KAAKxW,sBAAqB,IAC1B,KAAK/2B,aAAmB,EAAA,IACtBwtC,EAAc,KAAKxtC,aAA0B,GAAA,IAChD,CACA,IAAM7yB,EAAO,KAAKi3B,YAEhBkpC,CAAY,EACdngE,OAAAA,EAAKwT,WAAa4qB,EAClBp+B,EAAKqyB,eAAiB,KAAK+oC,SAAS,KAClC,KAAKjyC,KAAI,EACL,KAAKsI,MAAK,EAAU,GAClB4uC,GACF,KAAK1nD,MAAM7I,EAAO7G,kBAAmB,KAAKuQ,MAAM5B,SAAU,CACxD1O,QAAS,OACX,CAAC,EAEI,KAAK4sD,qBAAoB,GAG3B,KAAK2C,YAAW,EACxB,EACD,KAAKzhD,WACHhX,EACAqgE,EAAc,wBAA0B,gBAC1C,EAEA,KAAK/pC,aAAY,EACV,KAAK4pC,YAEVlgE,EACAmgE,EACAC,CACF,CACF,CAEA,OAAO,MAAMF,YAAY9hC,EAAM+hC,EAAcC,CAAO,CACtD,CAEAh/B,kBACE1Y,EACA9Q,EACA0oD,EACAloD,EACM,CAGD,KAAKoB,MAAM2lC,kBACd,MAAM/d,kBAAkB1Y,EAAM9Q,EAAU0oD,EAAeloD,CAAS,CAEpE,CAEA2nB,sBAAsB//B,EAAmC,CACvD,MAAM+/B,sBAAsB//B,CAAI,EAC5BA,EAAKggC,QAAUhgC,EAAKwvB,aAAe,SACrC,KAAK7W,MACHi2C,GAASthC,8BACTttB,EAAK2Z,WAAW,CAAC,EAAEnL,IAAI5Q,KACzB,CAEJ,CAWA2iE,uBAAwB,CAAC,CAEzBlgC,uBAAuBC,EAA4B,CACjD,GAAI,MAAMD,uBAAuBC,CAAQ,EAAG,MAAO,GACnD,GAAI,KAAKzN,aAAY,GAAS,EAAG,CAC/B,IAAM0N,EAAK,KAAKxF,kBAAiB,EACjC,OAAOuF,EACHC,IAAE,KAAiCA,IAAE,GACrCA,IAAyB,EAC/B,CACA,MAAO,CAACD,GAAY,KAAKzN,aAAY,EAAW,CAClD,CAEA2N,iBACExgC,EACAsgC,EACAG,EACAjyB,EACM,CACN,MAAMgyB,iBAAiBxgC,EAAMsgC,EAAUG,EAAOjyB,CAAG,EAC7C8xB,EACDtgC,EAAkC0zB,WACjC+M,IAAU,OAAS,OAAS,QAE7BzgC,EAA6BwvB,WAC5BiR,IAAU,QAAUA,IAAU,SAAWA,EAAQ,OAEvD,CAEApN,YACErzB,EACa,CACb,GAAI,KAAKyxB,MAAK,GAAU,EACtBzxB,OAAAA,EAAKwvB,WAAa,QACX,MAAM6D,YAAYrzB,CAAmC,EAG9D,IAAIwgE,EACJ,GACEv6C,GAAkB,KAAKzM,MAAMvZ,IAAI,GACjC,KAAK86B,kBAAmB,IAAA,GAExB/6B,OAAAA,EAAKwvB,WAAa,QACX,KAAK8tC,+BACVt9D,CACF,EACK,GAAI,KAAK6yB,aAAY,GAAS,EAAG,CACtC,IAAM0qC,EAAyB,KAAKkD,sBAClCzgE,EACe,EACjB,EACA,GAAI,KAAK+6B,kBAAmB,IAAA,GAC1B,OAAO,KAAKuiC,+BACVt9D,EACAu9D,CACF,EAEAiD,EAAa,MAAME,8BACjB1gE,EACAu9D,CACF,CAEJ,MACEiD,EAAa,MAAMntC,YAAYrzB,CAAmC,EAKpE,OACEwgE,EAAWhxC,aAAe,QAE1BgxC,EAAW7mD,WAAWC,OAAS,GAE/B4mD,EAAW7mD,WAAW,CAAC,EAAE1Z,OAAS,0BAElC,KAAK0Y,MAAMi2C,GAASqD,uCAAwCuO,CAAU,EAGjEA,CACT,CAEAnnD,YACErZ,EAKAsZ,EACa,CACb,GAAI,KAAKmY,MAAK,EAAW,EAAG,CAE1B,IAAMkvC,EAED3gE,EACL,KAAKmpB,KAAI,EACT,IAAIo0C,EAA8C,KAClD,OACE,KAAK1qC,aAAY,GAAS,GAE1B,KAAKwN,uBAAsC,EAAK,EAEhDk9B,EAAyB,KAAKkD,sBAC5BE,EACe,EACjB,EAEAA,EAAiBnxC,WAAa,QAEZ,KAAK8tC,+BACvBqD,EACApD,EACe,EACjB,CAWD,SAAU,KAAKlsC,IAAG,EAAM,EAAG,CAE1B,IAAM7kB,EAASxM,EACfwM,OAAAA,EAAOgH,WAAa,MAAM8d,gBAAe,EACzC,KAAKgB,UAAS,EACd,KAAK4pB,kBAAoB,GAClB,KAAKllC,WAAWxK,EAAQ,oBAAoB,CACpD,SAAU,KAAKkmB,cAAa,EAAO,EAAG,CAErC,IAAM8O,EAAOxhC,EAEb,YAAKoxB,iBAAgB,GAAc,EACnCoQ,EAAKzrB,GAAK,KAAK8b,gBAAe,EAC9B,KAAKS,UAAS,EACP,KAAKtb,WAAWwqB,EAAM,8BAA8B,CAC7D,KACE,QAAO,MAAMnoB,YACXrZ,EACAsZ,CACF,CAEJ,CAEAsnD,iBAA2B,CACzB,OACE,KAAK/tC,aAAyB,GAAA,GAAK,KAAKoO,sBAAsB,OAAO,CAEzE,CAEAtG,8BAA0E,CACxE,GAAI,KAAKimC,gBAAe,EAAI,CAC1B,IAAMC,EAAM,KAAKnqD,UAAS,EAC1B,YAAKyS,KAAI,EACT03C,EAAIrpD,SAAW,GACR,KAAK0mD,WAAW2C,EAAK,GAAM,EAAI,CACxC,CAIA,GAAI,KAAKpvC,MAAK,GAAc,EAAG,CAC7B,IAAMlX,EAAS,KAAK+hD,4BAClB,KAAK5lD,UACP,CAAA,EACA,GAAI6D,EAAQ,OAAOA,CACrB,CAEA,OAAO,MAAMogB,6BAA4B,CAC3C,CAEAwjC,kBACEn+D,EACAK,EACAygE,EAAmC,GACnC,CACA,GAAM,CAAE3hB,iBAAAA,GAAqB,KAAK3lC,MAC5BM,EAAc,MAAMqkD,kBACxBn+D,EACAK,EACAygE,GAA2B3hB,CAC7B,EAEA,GAAI,CAACA,EAAkB,OAAOrlC,EAG9B,GAAI,CAAC9Z,EAAKk1B,UAAY70B,IAAS,SAAWA,IAAS,eACjD,YAAK4mD,eACH2H,GAAS+D,iCACT3yD,EACAK,CACF,EACOyZ,EAGT,OAAW,CAAE/D,GAAAA,EAAI0vB,KAAAA,CAAK,IAAK3rB,EAAYinD,aAEhCt7B,IAGDplC,IAAS,OAASA,IAAS,OAAW0V,EAAGsc,eAC3C,KAAK1Z,MAAMi2C,GAAS2B,sCAAuC9qB,CAAI,EAE9Du7B,GAA+Bv7B,EAAM,KAAKhuB,UAAU,QAAQ,CAAC,GAE9D,KAAKkB,MACHi2C,GAASxgD,mEACTq3B,CACF,GAIJ,OAAO3rB,CACT,CAEAmnD,sBACE5uD,EACAiH,EACa,CACb,GAAI,KAAKmY,MAAK,EAAU,GAAK,KAAKwP,sBAAsB,MAAM,EAAG,CAC/D,IAAMjhC,EAAO,KAAK0W,UAAS,EAC3B,YAAKsa,OAAM,EAAU,EACd,KAAK6rC,uBAAuB78D,EAAM,CAAE0vB,MAAO,EAAK,CAAC,CAC1D,CAEA,GAAI,KAAKmD,aAAY,GAAS,EAC5B,OAAO,KAAKgqC,uBACV,KAAKnmD,UACP,CAAA,EAGF,GAAI,KAAKmc,aAAY,GAAc,EAAG,CACpC,IAAMtY,EAAS,KAAK+hD,4BAA4B,KAAK5lD,UAAW,CAAA,EAChE,GAAI6D,EAAQ,OAAOA,CACrB,CAEA,OAAO,MAAM0mD,sBAAsB5uD,EAAOiH,CAAU,CACtD,CAEA4nD,qBAA0D,CACxD,OAAO,KAAKtN,gBAAgB,CAAC,SAAU,YAAa,SAAS,CAAC,CAChE,CAEAuN,mBAAmB1jC,EAAawyB,EAA2C,CACzE,OAAOA,EAAU7I,KAAKqI,GAChBoD,GAAmBpD,CAAQ,EACtBhyB,EAAO+2B,gBAAkB/E,EAE3B,CAAC,CAAChyB,EAAOgyB,CAAQ,CACzB,CACH,CAEAsE,yBAA0B,CACxB,OACE,KAAKlhC,aAAuB,GAAA,GAC5B,KAAKkI,kBAAmB,IAA6B,GAEzD,CAEAwC,iBACEC,EACAC,EACAjkB,EACM,CACN,IAAMy2C,EAAY,CAChB,UACA,UACA,SACA,YACA,WACA,WACA,WACA,QAAQ,EAEV,KAAKgD,iBACH,CACEE,iBAAkBlD,EAClBmD,oBAAqB,CAAC,KAAM,KAAK,EACjCS,8BAA+B,GAC/BR,cAAezE,GAASgC,uCACzB,EACDnzB,CACF,EAEA,IAAM2jC,EAAmCA,IAAM,CACzC,KAAKrN,wBAAuB,GAC9B,KAAK5qC,KAAI,EACT,KAAKA,KAAI,EACL,KAAKg4C,mBAAmB1jC,EAAQwyB,CAAS,GAC3C,KAAKt3C,MACHi2C,GAASkD,8BACT,KAAKt4C,MAAMukB,YAAW,CACxB,EAEF,MAAMsjC,sBAAsB7jC,EAAWC,CAAuB,GAE9D,KAAK6jC,6BACH9jC,EACAC,EACAjkB,EACA,CAAC,CAACikB,EAAO5G,MACX,GAGA4G,EAAOvI,QACT,KAAK8oC,mBAAmBoD,CAAgC,EAExDA,EAAgC,CAEpC,CAEAE,6BACE9jC,EACAC,EACAjkB,EACAod,EACM,CACN,IAAMshC,EAAM,KAAKR,yBACfj6B,CACF,EACA,GAAIy6B,EAAK,CACP16B,EAAU/nB,KAAKqH,KAAKo7C,CAAG,EAElBz6B,EAAejmB,UAClB,KAAKmB,MAAMi2C,GAASsB,0BAA2BzyB,CAAM,EAElDA,EAAe+2B,eAClB,KAAK77C,MAAMi2C,GAASuB,+BAAgC1yB,EAAQ,CAC1DgyB,SAAWhyB,EAAe+2B,aAC5B,CAAC,EAEE/2B,EAAevI,SAClB,KAAKvc,MAAMi2C,GAASwB,yBAA0B3yB,CAAM,EAEjDA,EAAeuhC,UAClB,KAAKrmD,MAAMi2C,GAASyB,0BAA2B5yB,CAAM,EAGvD,MACF,CAEI,CAAC,KAAKjkB,MAAM4lC,iBAAoB3hB,EAAejmB,UACjD,KAAKmB,MAAMi2C,GAASuC,kCAAmC1zB,CAAM,EAG1DA,EAAeuhC,WACbxlD,EAAM+nD,eACT,KAAK5oD,MAAMi2C,GAAS0C,sBAAuB7zB,CAAM,GAMrD,MAAM6jC,6BACJ9jC,EACAC,EACAjkB,EACAod,CACF,CACF,CAEA4qC,6BACEC,EACM,CACW,KAAKpwC,IAAG,EAAY,IACvBowC,EAAa3oD,SAAW,IAEjC2oD,EAAqB1J,UAAY,KAAKtmC,MAAe,EAAA,GACxD,KAAK9Y,MAAMi2C,GAASO,uBAAwBsS,CAAY,EAGrDA,EAAqBvsC,SAAW,KAAKzD,MAAe,EAAA,GACvD,KAAK9Y,MAAMi2C,GAASM,sBAAuBuS,CAAY,CAE3D,CAOAnnC,yBACEt6B,EACAu6B,EACAjhB,EACa,CAMb,OAJEihB,EAAKt6B,OAAS,aAEV,KAAKu+D,2BAA2Bx+D,EAAMu6B,EAAMjhB,CAAU,EACtDnJ,SACS,MAAMmqB,yBAAyBt6B,EAAMu6B,EAAMjhB,CAAU,CACtE,CAIAkhB,8BAAwC,CACtC,OAAI,KAAKukC,qBAAoB,EAAW,GACjC,MAAMvkC,6BAA4B,CAC3C,CAGAI,iBACEL,EAEA3iB,EACAE,EACc,CACd,GAAI,CAAC,KAAK2Z,MAAK,EAAY,EAAG,OAAO8I,EAErC,GAAI,KAAK/gB,MAAMqhB,uBAAwB,CACrC,IAAMC,EAAS,KAAKC,kBAAiB,EAIrC,GACED,IAA0B,IAC1BA,IAAM,IACNA,IAA0B,IAC1BA,IAAM,GAGN,YAAKE,2BAA2BljB,CAAmB,EAC5CyiB,CAEX,CAEA,OAAO,MAAMK,iBAAiBL,EAAM3iB,EAAUE,CAAmB,CACnE,CAIA2kB,eACEz8B,EACA4X,EAC4B,CAC5B,IAAM8kB,EAAU,MAAMD,eAAez8B,EAAM4X,CAAQ,EASnD,GARI,KAAKyZ,IAAG,EAAY,IACrBqL,EAAyB5jB,SAAW,GAIrC,KAAK4B,iBAAiB1a,CAAI,GAGxB,KAAKyxB,MAAK,EAAS,EAAG,CACxB,IAAMkL,EAAe,KAAK1F,YAAoCrf,CAAQ,EACtE+kB,OAAAA,EAAanpB,WAAaxT,EAC1B28B,EAAatK,eAAiB,KAAK8jC,sBAAqB,EAEjD,KAAKn/C,WAAW2lB,EAAc,sBAAsB,CAC7D,CAEA,OAAO38B,CACT,CAEA68B,uBACE78B,EACkC,CAClC,GAAI,CAAC,KAAKwZ,MAAM2lC,kBAAoB,KAAKtsB,aAAwB,GAAA,EAC/D,OAAO,KAAKmrC,mBAAmB,IAAM,KAAKnhC,uBAAuB78B,CAAI,CAAC,EAIxE,IAAM4X,EAAW,KAAK4B,MAAM5B,SAEtB8pD,EAAY,KAAKhvC,cAAa,GAAY,EAEhD,GACEgvC,IACC,KAAK7uC,aAAwB,GAAA,GAAK,CAAC,KAAK2H,6BAA4B,GAErE,MAAM,KAAK7hB,MACTi2C,GAASkB,kCACT,KAAKt2C,MAAM5B,QACb,EAIF,IAAMkC,EADemM,GAAkB,KAAKzM,MAAMvZ,IAAI,GAEnC,KAAKs+D,4BAA6B,GACnD,MAAM1hC,uBAAuB78B,CAAI,EAEnC,OAAK8Z,IAGHA,EAAY7Z,OAAS,0BACrB6Z,EAAY7Z,OAAS,0BACrByhE,KAEA1hE,EAAK0zB,WAAa,QAGhBguC,GAAa5nD,EAAY7Z,OAAS,8BAEpC,KAAK8Z,mBAAmBD,EAAalC,CAAQ,EAE7CkC,EAAYob,QAAU,IAGjBpb,GAjBkB,IAkB3B,CAEAsjB,aACEp9B,EACAq9B,EACAC,EAEApS,EACM,CACN,IAAK,CAACmS,GAAeC,IAAe,KAAKzK,aAA2B,GAAA,EAClE,OAGF,MAAMuK,aACJp9B,EACAq9B,EACAC,EACCt9B,EAAak1B,QAAO,KAAA,IAGvB,EACA,IAAMve,EAAiB,KAAKkgD,yBAC1B,KAAKtD,0BACP,EACI58C,IAAgB3W,EAAK2W,eAAiBA,EAC5C,CAEAgrD,6BACE3hE,EACM,CACDA,EAAK8Y,WACJ,KAAKuY,IAAG,EAAQ,EAClBrxB,EAAK4hE,SAAW,GACP,KAAKvwC,IAAG,EAAY,IAC7BrxB,EAAK8Y,SAAW,KAIpB,IAAM7Y,EAAO,KAAK43D,yBAAwB,EACtC53D,IAAMD,EAAKqyB,eAAiBpyB,EAClC,CAEAiX,mBAAmBlX,EAAwC,CAazD,GAZA,KAAK2hE,6BAA6B3hE,CAAI,EAGpC,KAAKwZ,MAAM2lC,kBACX,EAAEn/C,EAAK+3D,UAAY,CAAC/3D,EAAKqyB,iBACzB,KAAKZ,MAAW,EAAA,GAEhB,KAAK9Y,MACHi2C,GAASU,gCACT,KAAK91C,MAAM5B,QACb,EAEE5X,EAAKwX,UAAY,KAAKia,MAAW,EAAA,EAAG,CACtC,GAAM,CAAE9qB,IAAAA,CAAK,EAAG3G,EAChB,KAAK2Y,MACHi2C,GAASG,+BACT,KAAKv1C,MAAM5B,SACX,CACEo3C,aACEroD,EAAI1G,OAAS,cAAgB,CAACD,EAAK8W,SAC/BnQ,EAAIV,KACJ,IAAI,KAAKg4B,MAAM6G,MAAM,KAAKtI,kBAAkB71B,EAAI/I,KAAK,EAAG,KAAK4+B,kBAAkB71B,EAAI9I,GAAG,CAAC,CAAC,GAChG,CACF,CACF,CAEA,OAAO,MAAMqZ,mBAAmBlX,CAAI,CACtC,CAEAqX,0BACErX,EACwB,CACxB,OAAIA,EAAKwX,UACP,KAAKmB,MAAMi2C,GAAS2C,0BAA2BvxD,CAAI,EAGjDA,EAAKw0D,eACP,KAAK77C,MAAMi2C,GAAS4C,+BAAgCxxD,EAAM,CACxDyvD,SAAUzvD,EAAKw0D,aACjB,CAAC,EAGH,KAAKmN,6BAA6B3hE,CAAI,EAC/B,MAAMqX,0BAA0BrX,CAAI,CAC7C,CAEAsX,2BACEtX,EACyB,CACzB,YAAK2hE,6BAA6B3hE,CAAI,EAClCA,EAAK8Y,UACP,KAAKH,MAAMi2C,GAASK,yBAA0BjvD,CAAI,EAE7C,MAAMsX,2BAA2BtX,CAAI,CAC9C,CAEAk/B,gBACE1B,EACA3oB,EACAwB,EACA5B,EACA6B,EACA6oB,EACM,CACN,IAAMxoB,EAAiB,KAAKkgD,yBAC1B,KAAKvD,oBACP,EACI38C,GAAkBL,GACpB,KAAKqC,MAAMi2C,GAASQ,6BAA8Bz4C,CAAc,EAGlE,GAAM,CAAEue,QAAAA,EAAU,GAAO70B,KAAAA,CAAM,EAAGwU,EAE9BqgB,IAAY70B,IAAS,OAASA,IAAS,QACzC,KAAKsY,MAAMi2C,GAASS,gBAAiBx6C,EAAQ,CAAExU,KAAAA,CAAK,CAAC,EAEnDsW,IAAgB9B,EAAO8B,eAAiBA,GAC5C,MAAMuoB,gBACJ1B,EACA3oB,EACAwB,EACA5B,EACA6B,EACA6oB,CACF,CACF,CAEAE,uBACE7B,EACA3oB,EACAwB,EACA5B,EACM,CACN,IAAMkC,EAAiB,KAAKkgD,yBAC1B,KAAKvD,oBACP,EACI38C,IAAgB9B,EAAO8B,eAAiBA,GAC5C,MAAM0oB,uBAAuB7B,EAAW3oB,EAAQwB,EAAa5B,CAAO,CACtE,CAEAotD,iCACE7hE,EACAK,EACA,CACIL,EAAKC,OAAS,oBAGfD,EAAgBC,OAAS,oBACzBD,EAA6CwN,MAAMiI,MAAQ,MAK9D,MAAMosD,iCAAiC7hE,EAAMK,CAAI,EACnD,CAEAi/B,gBAAgBt/B,EAAqB,CACnC,MAAMs/B,gBAAgBt/B,CAAI,EAEtBA,EAAK+R,aAAe,KAAK0f,MAAK,EAAM,GAAK,KAAKA,MAAkB,EAAA,KAIhEzxB,EAAKu/B,oBAAsB,KAAKu/B,iCAAgC,GAGhE,KAAKpsC,cAAa,GAAe,IACnC1yB,EAAKm0B,WAAa,KAAKgoC,sBAAsB,YAAY,EAE7D,CAEAx8B,kBACEhoB,EACAC,EACAvB,EACA5B,EACAoD,EACA+nB,EACA9nB,EACG,CACH,IAAMnB,EAAiB,KAAKkgD,yBAC1B,KAAKvD,oBACP,EACA,OAAI38C,IAAgBgB,EAAKhB,eAAiBA,GAEnC,MAAMgpB,kBACXhoB,EAEAC,EACAvB,EACA5B,EACAoD,EACA+nB,EACA9nB,CACF,CACF,CAEAwpB,oBAAoBthC,EAAkBsW,EAA8B,CAClE,IAAMK,EAAiB,KAAKkgD,yBAC1B,KAAKvD,oBACP,EACI38C,IAAgB3W,EAAK2W,eAAiBA,GAC1C,MAAM2qB,oBAAoBthC,EAAMsW,CAAa,CAC/C,CAGAirB,WACEC,EACAnhC,EACM,CACN,MAAMkhC,WAAWC,EAAMnhC,CAAI,EAEzBmhC,EAAKzrB,GAAG9V,OAAS,cACjB,CAAC,KAAK2pD,sBAAqB,GAC3B,KAAKv4B,IAAG,EAAQ,IAEhBmQ,EAAKogC,SAAW,IAGlB,IAAM3hE,EAAO,KAAK43D,yBAAwB,EACtC53D,IACFuhC,EAAKzrB,GAAGsc,eAAiBpyB,EACzB,KAAKya,iBAAiB8mB,EAAKzrB,EAAE,EAEjC,CAGA0rB,kCACEzhC,EACA0hC,EAC2B,CAC3B,OAAI,KAAKjQ,MAAK,EAAS,IACrBzxB,EAAKoyB,WAAa,KAAK+jC,sBAAqB,GAEvC,MAAM10B,kCAAkCzhC,EAAM0hC,CAAI,CAC3D,CAEA/F,iBACE7jB,EACA8pB,EACc,CAAA,IAAAC,EAAAI,EAAA6/B,EAAA5/B,EAAA6/B,EAGd,IAAIvoD,EACAsoB,EACAkgC,EAEJ,GACE,KAAKvqD,UAAU,KAAK,IACnB,KAAKga,MAAoB,GAAA,GAAK,KAAKA,MAAW,EAAA,GAC/C,CAWA,GATAjY,EAAQ,KAAKA,MAAMyhB,MAAK,EAExB6G,EAAM,KAAKC,SACT,IAAM,MAAMpG,iBAAiB7jB,EAAqB8pB,CAAc,EAChEpoB,CACF,EAII,CAACsoB,EAAIpzB,MAAO,OAAOozB,EAAI9hC,KAK3B,GAAM,CAAEqnB,QAAAA,GAAY,KAAK7N,MACnBwoB,EAAiB3a,EAAQA,EAAQzN,OAAS,CAAC,GAC7CooB,IAAmBza,GAAGvM,QAAUgnB,IAAmBza,GAAGrM,SACxDmM,EAAQC,IAAG,CAEf,CAEA,GAAI,GAAAua,EAACC,IAAG,MAAHD,EAAKnzB,QAAS,CAAC,KAAK+iB,MAAK,EAAM,EAClC,OAAO,MAAMkK,iBAAiB7jB,EAAqB8pB,CAAc,GAQ/D,CAACpoB,GAASA,IAAU,KAAKA,SAAOA,EAAQ,KAAKA,MAAMyhB,MAAK,GAE5D,IAAItkB,EAEE6H,EAAQ,KAAKujB,SAAUI,GAAuB,CAAA,IAAA3D,EAAAyjC,EAElDtrD,EAAiB,KAAKmgD,sBAAsB,KAAKxD,oBAAoB,EACrE,IAAM/4B,EAAO,MAAMoB,iBACjB7jB,EACA8pB,CACF,EAEA,OACErH,EAAKt6B,OAAS,4BAAyBu+B,EACvCjE,EAAKzmB,QAAK,MAAV0qB,EAAYvpB,gBAEZktB,EAAK,IAIH8/B,EAAAtrD,IAAAsrD,KAAAA,OAAAA,EAAgBntD,OAAO8E,UAAW,GACpC,KAAKhD,2BAA2B2jB,EAAM5jB,CAAc,EAEtD4jB,EAAK5jB,eAAiBA,EA2Bf4jB,CACR,EAAE/gB,CAAK,EAGR,GAAI,CAACgF,EAAM9P,OAAS,CAAC8P,EAAM+jB,QAIzB,OAAI5rB,GAAgB,KAAKurD,6BAA6BvrD,CAAc,EAC7D6H,EAAMxe,KAGf,GAAI,CAAC8hC,IAIH6sB,GAAO,CAAC,KAAKl3C,UAAU,KAAK,CAAC,EAI7BuqD,EAAW,KAAKjgC,SACd,IAAM,MAAMpG,iBAAiB7jB,EAAqB8pB,CAAc,EAChEpoB,CACF,EAGI,CAACwoD,EAAStzD,OAAO,OAAOszD,EAAShiE,KAGvC,IAAAiiC,EAAIH,IAAG,MAAHG,EAAKjiC,KAEP,YAAKwZ,MAAQsoB,EAAIW,UACVX,EAAI9hC,KAGb,GAAIwe,EAAMxe,KAER,YAAKwZ,MAAQgF,EAAMikB,UACf9rB,GAAgB,KAAKurD,6BAA6BvrD,CAAc,EAC7D6H,EAAMxe,KAGf,IAAA8hE,EAAIE,IAAQ,MAARF,EAAU9hE,KAEZ,YAAKwZ,MAAQwoD,EAASv/B,UACfu/B,EAAShiE,KAGlB,OAAMkiC,EAAAJ,IAAAI,KAAAA,OAAAA,EAAKxzB,QAAS8P,EAAM9P,SAAKqzD,EAAIC,IAAAD,KAAAA,OAAAA,EAAUrzD,MAC/C,CAEAwzD,6BAA6BliE,EAAW,CAAA,IAAAqsD,EAEpCrsD,EAAK8U,OAAO8E,SAAW,GACvB,CAAC5Z,EAAK8U,OAAO,CAAC,EAAE6hD,YAChB,GAAAtK,EAACrsD,EAAK8T,QAAK,MAAVu4C,EAAY8V,gBACb,KAAKvsD,gBAAgB,aAAc,0BAA0B,GAE7D,KAAK+C,MAAMi2C,GAAS8C,uBAAwB1xD,CAAI,CAEpD,CAGAk6D,gBACEpiD,EACAsqD,EACc,CACd,MAAI,CAAC,KAAK3qD,UAAU,KAAK,GAAK,KAAKga,MAAK,EAAM,EACrC,KAAKyqC,qBAAoB,EAE3B,MAAMhC,gBAAgBpiD,EAAqBsqD,CAAQ,CAC5D,CAEAz/B,WACE3iC,EACsD,CACtD,GAAI,KAAKyxB,MAAK,EAAS,EAAG,CAIxB,IAAMlX,EAAS,KAAKwnB,SAASI,GAAS,CACpC,IAAM/P,EAAa,KAAKklC,qCAAoC,EAE5D,EACA,OAAI,KAAKh+B,mBAAkB,GAAM,CAAC,KAAK7H,MAAc,EAAA,IAAG0Q,EAAK,EACtD/P,CACT,CAAC,EAED,GAAI7X,EAAOgoB,QAAS,OAEfhoB,EAAOmoB,SACNnoB,EAAO7L,QAAO,KAAK8K,MAAQe,EAAOkoB,WAEtCziC,EAAKoyB,WAAa7X,EAAOva,KAE7B,CAEA,OAAO,MAAM2iC,WAAW3iC,CAAI,CAC9B,CAGA6/B,uBAAuBjG,EAAkB,CACnC,KAAKvI,IAAG,EAAY,IACrBuI,EAA8B9gB,SAAW,IAE5C,IAAM7Y,EAAO,KAAK43D,yBAAwB,EAC1C,OAAI53D,IAAM25B,EAAMvH,eAAiBpyB,GACjC,KAAKya,iBAAiBkf,CAAK,EAEpBA,CACT,CAEAzhB,aAAanY,EAAcoY,EAA8B,CACvD,OAAQpY,EAAKC,KAAI,CACf,IAAK,uBACH,OAAO,KAAKkY,aAAanY,EAAKwT,WAAY4E,CAAS,EACrD,IAAK,sBACH,MAAO,GACT,QACE,OAAO,MAAMD,aAAanY,EAAMoY,CAAS,CAC7C,CACF,CAEAC,aAAarY,EAAcsY,EAAiB,GAAa,CACvD,OAAQtY,EAAKC,KAAI,CACf,IAAK,0BACH,KAAKoiE,oCAAoCriE,EAAMsY,CAAK,EACpD,MACF,IAAK,iBACL,IAAK,wBACL,IAAK,sBACL,IAAK,kBACCA,EACF,KAAK+yC,gBAAgBrC,iCACnB4F,GAAS2D,8BACTvyD,CACF,EAEA,KAAK2Y,MAAMi2C,GAAS2D,8BAA+BvyD,CAAI,EAEzD,KAAKqY,aAAarY,EAAKwT,WAAY8E,CAAK,EACxC,MACF,IAAK,uBACC,CAACA,GAAStY,EAAKo+B,KAAKn+B,OAAS,yBAC/BD,EAAKo+B,KAAO,KAAKpE,oBAAoBh6B,EAAKo+B,IAAI,GAGlD,QACE,MAAM/lB,aAAarY,EAAMsY,CAAK,CAClC,CACF,CAEA+pD,oCACEriE,EACAsY,EACM,CACN,OAAQtY,EAAKwT,WAAWvT,KAAI,CAC1B,IAAK,iBACL,IAAK,wBACL,IAAK,sBACL,IAAK,kBACL,IAAK,0BACH,KAAKoY,aAAarY,EAAKwT,WAAY8E,CAAK,EACxC,MACF,QACE,MAAMD,aAAarY,EAAMsY,CAAK,CAClC,CACF,CAEAk0C,sBAAsBxsD,EAAcwuD,EAA6B,CAC/D,OAAQxuD,EAAKC,KAAI,CACf,IAAK,iBACL,IAAK,wBACL,IAAK,kBACL,IAAK,sBACH,KAAKusD,sBAAsBxsD,EAAKwT,WAAY,EAAK,EACjD,MACF,QACE,MAAMg5C,sBAAsBxsD,EAAMwuD,CAAY,CAClD,CACF,CAEAx2C,YACE/X,EAQAgY,EACAC,EACA,CACA,OAAQjY,EAAI,CAIV,IAAK,uBACH,MAAO,GACT,IAAK,sBACH,MAAO,YACT,IAAK,sBACH,MAAO,aACT,IAAK,iBACL,IAAK,wBACL,IAAK,kBACH,OACGiY,IAAO,IAA8B,CAACD,IACtC,CAAC,aAAc,EAAI,EAExB,QACE,OAAO,MAAMD,YAAY/X,EAAMgY,EAA2BC,CAAO,CACrE,CACF,CAEAmpB,kBAA8B,CAC5B,OAAI,KAAK7nB,MAAMvZ,OAAI,GACV,KAAK4xB,gBAA8B,EAAI,EAEzC,MAAMwP,iBAAgB,CAC/B,CAEAihC,6BACE/nC,EACA3iB,EACc,CAEd,GAAI,KAAK6Z,MAAW,EAAA,GAAK,KAAKA,MAAkB,EAAA,EAAG,CACjD,IAAMmS,EAAgB,KAAKk7B,iCAAgC,EAE3D,GAAI,KAAKrtC,MAAK,EAAU,EAAG,CACzB,IAAMiQ,EAAO,MAAM4gC,6BACjB/nC,EACA3iB,CACF,EAIE8pB,OAAAA,EAAK/qB,eAAiBitB,EAGjBlC,CACT,CAEA,KAAK18B,WAAW,KAAI,EAAW,CACjC,CAEA,OAAO,MAAMs9D,6BAA6B/nC,EAAM3iB,CAAQ,CAC1D,CAEA01C,oBACE5uB,EACS,CACT,OACE,KAAKllB,MAAM2lC,kBACX,KAAK1tB,MAAK,EAAS,GACnB,KAAKsJ,kBAAmB,IAAK2D,GAE7B,KAAKvV,KAAI,EACF,IAEF,MAAMmkC,oBAAoB5uB,CAAK,CACxC,CAOAK,eAAyB,CACvB,OAAO,KAAKtN,MAAW,EAAA,GAAK,MAAMsN,cAAa,CACjD,CAEAC,iBAA2B,CACzB,OACE,KAAKvN,MAAa,EAAA,GAAK,KAAKA,MAAK,EAAS,GAAK,MAAMuN,gBAAe,CAExE,CAEAc,kBACEloB,EACAwmB,EACyB,CACzB,IAAMp+B,EAAO,MAAM8/B,kBAAkBloB,EAAUwmB,CAAI,EAEnD,OACEp+B,EAAKC,OAAS,qBACdD,EAAKqyB,gBACLryB,EAAKi1B,MAAMr3B,MAAQoC,EAAKqyB,eAAez0B,OAEvC,KAAK+a,MAAMi2C,GAASoD,0BAA2BhyD,EAAKqyB,cAAc,EAG7DryB,CACT,CAGAg+B,iBAAiB7/B,EAAoB,CACnC,GAAI,KAAKqb,MAAMuX,OAAQ,CACrB,GAAI5yB,IAAI,GAA4B,CAClC,KAAKggC,SAAgB,GAAA,CAAC,EACtB,MACF,CACA,GAAIhgC,IAAI,GAAyB,CAC/B,KAAKggC,SAAgB,GAAA,CAAC,EACtB,MACF,CACF,CACA,MAAMH,iBAAiB7/B,CAAI,CAC7B,CAGAm4B,cAAe,CACb,GAAM,CAAEr2B,KAAAA,GAAS,KAAKuZ,MAClBvZ,IAAI,IACN,KAAKuZ,MAAM5K,KAAO,EAClB,KAAKu4B,aAAY,GACRlnC,IAAI,KACb,KAAKuZ,MAAM5K,KAAO,EAClB,KAAKw4B,aAAY,EAErB,CAEAjR,WAAY,CACV,GAAM,CAAEl2B,KAAAA,GAAS,KAAKuZ,MACtB,OAAIvZ,IAAI,IACN,KAAKuZ,MAAM5K,KAAO,EAClB,KAAKuvB,SAAgB,GAAA,CAAC,EACtB,IAEKl+B,CACT,CAEAysD,qBACEruB,EACA5gC,EACA6a,EACM,CACN,IAAMtY,EAAOq+B,EAAS5gC,CAAK,EACvBuC,EAAKC,OAAS,yBAChBo+B,EAAS5gC,CAAK,EAAI,KAAKu8B,oBAAoBh6B,CAAI,GAEjD,MAAM0sD,qBAAqBruB,EAAU5gC,EAAO6a,CAAK,CACnD,CAEA0hB,oBAAoBh6B,EAA4C,CAC7DA,OAAAA,EAAKwT,WAA4B6e,eAAiBryB,EAAKqyB,eAExD,KAAK3X,iBAAiB1a,EAAKwT,WAAYxT,EAAKqyB,eAAe7jB,IAAI3Q,GAAG,EAE3DmC,EAAKwT,UACd,CAEAovB,iBAAiB9tB,EAAuB,CACtC,OAAI,KAAK2c,MAAK,EAAS,EACd3c,EAAOonB,MAAM3B,GAAQ,KAAKpiB,aAAaoiB,EAAM,EAAI,CAAC,EAEpD,MAAMqI,iBAAiB9tB,CAAM,CACtC,CAEA6sB,uBAAiC,CAC/B,OAAO,KAAKlQ,MAAc,EAAA,GAAK,MAAMkQ,sBAAqB,CAC5D,CAEA4gC,yBAA0B,CAExB,OAAO,MAAMA,wBAAuB,GAAM,KAAK3B,gBAAe,CAChE,CAEA55B,gCACEhnC,EACqB,CAErB,GAAI,KAAKyxB,MAAW,EAAA,GAAK,KAAKA,MAAkB,EAAA,EAAG,CACjD,IAAMmS,EAAgB,KAAKi6B,mBAAmB,IAC5C,KAAKiB,iCAAgC,CACvC,EACIl7B,IAIA5jC,EAAK2W,eAAiBitB,EAG5B,CACA,OAAO,MAAMoD,gCAAgChnC,CAAI,CACnD,CAEAwiE,kCACE3tD,EACQ,CACR,IAAM4tD,EAAY,MAAMD,kCAAkC3tD,CAAM,EAE1D6tD,EADS,KAAK9tD,6BAA6BC,CAAM,EAC7B,CAAC,EAG3B,OAFwB6tD,GAAc,KAAKtjC,YAAYsjC,CAAU,EAExCD,EAAY,EAAIA,CAC3C,CAEAE,uBAAmC,CACjC,IAAM/oC,EAAQ,MAAM+oC,sBAAqB,EACnC1iE,EAAO,KAAK43D,yBAAwB,EAE1C,OAAI53D,IACF25B,EAAMvH,eAAiBpyB,EACvB,KAAKya,iBAAiBkf,CAAK,GAGtBA,CACT,CAEAokC,mBAAsBjoC,EAAgB,CACpC,GAAM,CAAEopB,iBAAkByjB,EAAqBv6C,OAAQw6C,GACrD,KAAKrpD,MACP,KAAKA,MAAM2lC,iBAAmB,GAC9B,KAAK3lC,MAAM6O,OAAS,GACpB,GAAI,CACF,OAAO0N,EAAE,CACX,QAAC,CACC,KAAKvc,MAAM2lC,iBAAmByjB,EAC9B,KAAKppD,MAAM6O,OAASw6C,CACtB,CACF,CAEA3E,WACEl+D,EACAq9B,EACAC,EACG,CACH,IAAMwlC,EAAqB,KAAKtpD,MAAM4lC,gBACtC,KAAK5lC,MAAM4lC,gBAAkB,CAAC,CAAEp/C,EAAawX,SAC7C,GAAI,CACF,OAAO,MAAM0mD,WAAWl+D,EAAMq9B,EAAaC,CAAU,CACvD,QAAC,CACC,KAAK9jB,MAAM4lC,gBAAkB0jB,CAC/B,CACF,CAEAnE,2BACE3+D,EACAsZ,EACkE,CAClE,GAAI,KAAKmY,MAAK,EAAU,EACtBzxB,OAAAA,EAAKwX,SAAW,GACT,KAAKurD,oBACVzpD,EACA,KAAK4kD,WACHl+D,EACkB,GACD,EACnB,CACF,EACK,GAAI,KAAK6yB,aAAY,GAAc,GAMxC,GAAI,CAAC,KAAKg3B,sBAAqB,EAC7B7pD,OAAAA,EAAKwX,SAAW,GAChB,KAAKmB,MAAMi2C,GAASwC,0CAA2CpxD,CAAI,EAC5D,KAAKs8D,4BACVt8D,CACF,OAGF,KAAKgF,WAAW,KAAI,EAAW,CAEnC,CAEAoR,YAGEpW,EACAqW,EACA5B,EACA6B,EACAC,EACAtW,EACAuW,EACA,CACA,IAAM3B,EAAS,MAAMuB,YACnBpW,EACAqW,EACA5B,EACA6B,EACAC,EACAtW,EACAuW,CACF,EAEA,IAAI3B,EAAO2C,UAAY3C,EAAO5U,OAAS,gCACb,KAAKwX,UAAU,QAAQ,EAG3C5C,EAAOrH,MACPqH,GACSY,KAAM,CACjB,GAAM,CAAE9O,IAAAA,CAAK,EAAGkO,EAChB,KAAK8D,MAAMi2C,GAASC,gCAAiCh6C,EAAQ,CAC3Di6C,WACEnoD,EAAI1G,OAAS,cAAgB,CAAC4U,EAAOiC,SACjCnQ,EAAIV,KACJ,IAAI,KAAKg4B,MAAM6G,MAAM,KAAKtI,kBAAkB71B,EAAI/I,KAAK,EAAG,KAAK4+B,kBAAkB71B,EAAI9I,GAAG,CAAC,CAAC,GAChG,CAAC,CACH,CAEF,OAAOgX,CACT,CAEA6hD,0BAAkD,CAEhD,OAD+B,KAAK7kC,gBAAe,EACO5rB,IAC5D,CAEA+8D,6BAAuC,CACrC,MAAO,CAAC,CAAC,KAAKptD,gBAAgB,aAAc,KAAK,CACnD,CAEA5D,OAAQ,CACN,OAAI,KAAKgxD,4BAA2B,IAClC,KAAKxpD,MAAM2lC,iBAAmB,IAEzB,MAAMntC,MAAK,CACpB,CAEAixD,eAAgB,CACd,OAAI,KAAKD,4BAA2B,IAClC,KAAKxpD,MAAM2lC,iBAAmB,IAEzB,MAAM8jB,cAAa,CAC5B,CAEAC,qBACEljE,EACAmjE,EACAC,EACAviC,EACA,CACA,MAAI,CAACsiC,GAAYtiC,GACf,KAAKwiC,mCACHrjE,EACe,GACfojE,CACF,EACO,KAAKpsD,WAA8BhX,EAAM,iBAAiB,IAEnEA,EAAK0zB,WAAa,QACX,MAAMwvC,qBACXljE,EACAmjE,EACAC,EACAviC,CACF,EACF,CAEAH,qBACER,EACAS,EACAC,EACAC,EAEA3V,EACmB,CACnB,MAAI,CAACyV,GAAoBE,GACvB,KAAKwiC,mCACHnjC,EACe,GACfU,CACF,EACO,KAAK5pB,WAA8BkpB,EAAW,iBAAiB,IAExEA,EAAU1Q,WAAa,QAChB,MAAMkR,qBACXR,EACAS,EACAC,EACAC,EACAD,EAAkB,KAAA,IAGpB,EACF,CAEAyiC,mCACErjE,EACAsjE,EACAC,EACM,CACN,IAAMC,EAAcF,EAAW,WAAa,QACtCG,EAAeH,EAAW,QAAU,WAEtCI,EAAW1jE,EAAKwjE,CAAW,EAC3BG,EAEAC,EAAmB,GACnBC,EAAoB,GAElBr1D,EAAMk1D,EAASl1D,IAAI5Q,MAOzB,GAAI,KAAKi1B,aAAY,EAAO,EAAG,CAE7B,IAAMixC,EAAU,KAAKjyC,gBAAe,EACpC,GAAI,KAAKgB,aAAY,EAAO,EAAG,CAE7B,IAAMkxC,EAAW,KAAKlyC,gBAAe,EACjC1L,GAA2B,KAAK3M,MAAMvZ,IAAI,GAE5C2jE,EAAmB,GACnBF,EAAWI,EACXH,EAAYL,EACR,KAAKzxC,gBAAe,EACpB,KAAKmyC,sBAAqB,EAC9BH,EAAoB,KAGpBF,EAAYI,EACZF,EAAoB,GAEvB,MAAU19C,GAA2B,KAAK3M,MAAMvZ,IAAI,GAEnD4jE,EAAoB,GACpBF,EAAYL,EACR,KAAKzxC,gBAAe,EACpB,KAAKmyC,sBAAqB,IAG9BJ,EAAmB,GACnBF,EAAWI,EAEd,MAAU39C,GAA2B,KAAK3M,MAAMvZ,IAAI,IAEnD2jE,EAAmB,GACfN,GACFI,EAAW,KAAK7xC,gBAAgB,EAAI,EAC/B,KAAKgB,aAAY,EAAO,GAC3B,KAAKuO,kBACHsiC,EAASz9D,KACTy9D,EAASl1D,IAAI5Q,MACb,GACA,EACF,GAGF8lE,EAAW,KAAKM,sBAAqB,GAGrCJ,GAAoBL,GACtB,KAAK5qD,MACH2qD,EACI1U,GAASuD,gCACTvD,GAASsD,gCACb1jD,CACF,EAGFxO,EAAKwjE,CAAW,EAAIE,EACpB1jE,EAAKyjE,CAAY,EAAIE,EAErB,IAAMM,EAAUX,EAAW,aAAe,aAC1CtjE,EAAKikE,CAAO,EAAIL,EAAmB,OAAS,QAExCC,GAAqB,KAAKnxC,cAAa,EAAO,IAChD1yB,EAAKyjE,CAAY,EAAIH,EACjB,KAAKzxC,gBAAe,EACpB,KAAKmyC,sBAAqB,GAE3BhkE,EAAKyjE,CAAY,IACpBzjE,EAAKyjE,CAAY,EAAI,KAAKjpD,gBAAgBxa,EAAKwjE,CAAW,CAAC,GAEzDF,GACF,KAAKtV,gBACHhuD,EAAKyjE,CAAY,EACjBG,EAAgB,KAAA,IAGlB,CAEJ,CAUA1vD,kCAAkClU,EAAoB,CAAA,IAAAkkE,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GAAAC,GAAAC,GAAAC,EAAAC,GAAAC,GAAAC,GAAAC,GAAAC,EAAAC,GAAAC,GAAAroB,GAAAsoB,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACpD,OAAQ9mE,EAAKC,KAAI,CACf,IAAK,uBACHikE,EAAAlkE,EAAK2T,YAAS,OAAd3T,EAAK2T,UAAcxD,QACnB,OACF,IAAK,cACHnQ,EAAKwN,MAAQ2C,OAEf,IAAK,aACL,IAAK,eACL,IAAK,oBACL,IAAK,iBACHg0D,EAAAnkE,EAAKsZ,aAAU,OAAftZ,EAAKsZ,WAAe,CAAA,IACpB8qD,EAAApkE,EAAK8Y,WAAQ,OAAb9Y,EAAK8Y,SAAa,KAClBurD,EAAArkE,EAAKqyB,iBAAc,OAAnBryB,EAAKqyB,eAAmBliB,QACxB,OACF,IAAK,uBACHm0D,EAAAtkE,EAAKw0D,gBAAa,OAAlBx0D,EAAKw0D,cAAkBrkD,SACvBo0D,EAAAvkE,EAAKsZ,aAAU,OAAftZ,EAAKsZ,WAAe,CAAA,IACpBkrD,EAAAxkE,EAAKg/D,WAAQ,OAAbh/D,EAAKg/D,SAAa,KAClByF,EAAAzkE,EAAK+3D,WAAQ,OAAb/3D,EAAK+3D,SAAa,KAClB2M,EAAA1kE,EAAK62B,SAAM,OAAX72B,EAAK62B,OAAW,IAChB,OACF,IAAK,gCACH72B,EAAKyV,KAAO,KAEd,IAAK,oBACL,IAAK,sBACL,IAAK,qBACL,IAAK,cACL,IAAK,sBACHkvD,EAAA3kE,EAAKk1B,UAAO,OAAZl1B,EAAKk1B,QAAY,KACjB0vC,EAAA5kE,EAAKoyB,aAAU,OAAfpyB,EAAKoyB,WAAejiB,SACpB00D,EAAA7kE,EAAK2W,iBAAc,OAAnB3W,EAAK2W,eAAmBxG,QACxB,OACF,IAAK,YACH20D,EAAA9kE,EAAK8Y,WAAQ,OAAb9Y,EAAK8Y,SAAa,IAClB,OACF,IAAK,oBACL,IAAK,uBACHisD,EAAA/kE,EAAK8Y,WAAQ,OAAb9Y,EAAK8Y,SAAa,IAEpB,IAAK,oBACHksD,EAAAhlE,EAAKw0D,gBAAa,OAAlBx0D,EAAKw0D,cAAkBrkD,SACvB80D,EAAAjlE,EAAK+3D,WAAQ,OAAb/3D,EAAK+3D,SAAa,KAClBmN,EAAAllE,EAAK62B,SAAM,OAAX72B,EAAK62B,OAAW,IAChB,OACF,IAAK,+BACL,IAAK,qBACL,IAAK,6BACL,IAAK,oBACHsuC,EAAAnlE,EAAKk1B,UAAO,OAAZl1B,EAAKk1B,QAAY,KACjBkwC,EAAAplE,EAAK4hE,WAAQ,OAAb5hE,EAAK4hE,SAAa,KAClByD,EAAArlE,EAAK+3D,WAAQ,OAAb/3D,EAAK+3D,SAAa,KAClBuN,EAAAtlE,EAAKqyB,iBAAc,OAAnBryB,EAAKqyB,eAAmBliB,QAE1B,IAAK,6BACL,IAAK,oBACHo1D,EAAAvlE,EAAKw0D,gBAAa,OAAlBx0D,EAAKw0D,cAAkBrkD,SACvBq1D,EAAAxlE,EAAKsZ,aAAU,OAAftZ,EAAKsZ,WAAe,CAAA,IACpBmsD,EAAAzlE,EAAKg/D,WAAQ,OAAbh/D,EAAKg/D,SAAa,KAClB0G,EAAA1lE,EAAK8Y,WAAQ,OAAb9Y,EAAK8Y,SAAa,IAClB,OACF,IAAK,mBACH6sD,EAAA3lE,EAAK+V,KAAE,OAAP/V,EAAK+V,GAAO,MAEd,IAAK,oBACH6vD,EAAA5lE,EAAKwX,WAAQ,OAAbxX,EAAKwX,SAAa,KAClBquD,GAAA7lE,EAAKk1B,UAAO,OAAZl1B,EAAKk1B,QAAY,KACjB4wC,GAAA9lE,EAAKsZ,aAAU,OAAftZ,EAAKsZ,WAAe,CAAA,IACpBysD,GAAA/lE,EAAKm0B,aAAU,OAAfn0B,EAAKm0B,WAAe,CAAA,IACpB6xC,EAAAhmE,EAAK+mE,qBAAkB,OAAvB/mE,EAAK+mE,mBAAuB52D,SAC5B81D,GAAAjmE,EAAK2W,iBAAc,OAAnB3W,EAAK2W,eAAmBxG,QACxB,OACF,IAAK,yBACL,IAAK,uBACH+1D,GAAAlmE,EAAKk1B,UAAO,OAAZl1B,EAAKk1B,QAAY,IACjB,OACF,IAAK,sBACHixC,GAAAnmE,EAAK4hE,WAAQ,OAAb5hE,EAAK4hE,SAAa,IAClB,OACF,IAAK,qBACHwE,GAAApmE,EAAK0vB,QAAK,OAAV1vB,EAAK0vB,MAAU,KACf22C,EAAArmE,EAAKk1B,UAAO,OAAZl1B,EAAKk1B,QAAY,IACjB,OACF,IAAK,gBACHoxC,GAAAtmE,EAAK8W,WAAQ,OAAb9W,EAAK8W,SAAa,IAClB,OACF,IAAK,gBACHyvD,GAAAvmE,EAAKu1D,YAAS,OAAdv1D,EAAKu1D,UAAc,OACnBrX,GAAAl+C,EAAKyR,UAAO,OAAZzR,EAAKyR,QAAY,MAIjB,OACF,IAAK,0BACH+0D,GAAAxmE,EAAKk1B,UAAO,OAAZl1B,EAAKk1B,QAAY,KACjBuxC,GAAAzmE,EAAKi0B,UAAO,OAAZj0B,EAAKi0B,QAAY,CAAA,GACjB,OACF,IAAK,uBACHyyC,GAAA1mE,EAAKk1B,UAAO,OAAZl1B,EAAKk1B,QAAY,KACjByxC,GAAA3mE,EAAKq9D,SAAM,OAAXr9D,EAAKq9D,OAAWr9D,EAAKK,OAAS,UAC9B,OACF,IAAK,mBACHumE,GAAA5mE,EAAK0vB,QAAK,OAAV1vB,EAAK0vB,MAAU,KACfm3C,GAAA7mE,EAAKgnE,KAAE,OAAPhnE,EAAKgnE,GAAO,KACZF,GAAA9mE,EAAKi4B,MAAG,OAARj4B,EAAKi4B,IAAQ,IACb,MACJ,CACF,CACF,EAEF,SAASgvC,GAAsBzzD,EAAmC,CAChE,GAAIA,EAAWvT,OAAS,mBAAoB,MAAO,GAEnD,GAAM,CAAE6W,SAAAA,EAAUshB,SAAAA,CAAU,EAAG5kB,EAE/B,OACEsD,GACAshB,EAASn4B,OAAS,kBACjBm4B,EAASn4B,OAAS,mBAAqBm4B,EAAS8uC,YAAYttD,OAAS,GAE/D,GAGFutD,GAAkC3zD,EAAW5B,MAAM,CAC5D,CAQA,SAASovD,GACPxtD,EACA1B,EACS,CAAA,IAAAi8C,EACT,GAAM,CAAE9tD,KAAAA,CAAM,EAAGuT,EACjB,IAAAu6C,EAAIv6C,EAAWM,QAAXi6C,MAAAA,EAAkB94C,cACpB,MAAO,GAET,GAAInD,GACF,GAAI7R,IAAS,UAAW,CACtB,GAAM,CAAEuN,MAAAA,CAAO,EAAGgG,EAClB,GAAI,OAAOhG,GAAU,UAAY,OAAOA,GAAU,UAChD,MAAO,EAEX,UAEIvN,IAAS,iBAAmBA,IAAS,iBACvC,MAAO,GASX,MANImnE,GAAAA,GAAS5zD,EAAY1B,CAAM,GAAKu1D,GAAiB7zD,EAAY1B,CAAM,GAGnE7R,IAAS,mBAAqBuT,EAAW0zD,YAAYttD,SAAW,GAGhEqtD,GAAsBzzD,CAAU,EAItC,CAEA,SAAS4zD,GAAS5zD,EAA0B1B,EAA0B,CACpE,OAAIA,EAEA0B,EAAWvT,OAAS,YACnB,OAAOuT,EAAWhG,OAAU,UAAY,WAAYgG,GAIvDA,EAAWvT,OAAS,kBAAoBuT,EAAWvT,OAAS,eAEhE,CAEA,SAASonE,GAAiB7zD,EAA0B1B,EAA0B,CAC5E,GAAI0B,EAAWvT,OAAS,kBAAmB,CACzC,GAAM,CAAEqsD,SAAAA,EAAUn9C,SAAAA,CAAU,EAAGqE,EAC/B,GAAI84C,IAAa,KAAO8a,GAASj4D,EAAU2C,CAAM,EAC/C,MAAO,EAEX,CACA,MAAO,EACT,CAEA,SAASq1D,GAAkC3zD,EAAmC,CAC5E,OAAIA,EAAWvT,OAAS,aAAqB,GACzCuT,EAAWvT,OAAS,oBAAsBuT,EAAWsD,SAChD,GAGFqwD,GAAkC3zD,EAAW5B,MAAM,CAC5D,CCjiJA,IAAM01D,GAAoBp4D,iBAA6B,CACrDq4D,oBAAqB,4BACrBC,gBAAiB,kCACnB,CAAC,EAEDC,GAAgB11D,GACd,cAAsCA,CAA6B,CACjE21D,iBACEC,EACuD,CACvD,GAAI,KAAKl2C,MAAK,GAAe,EAAG,CAC9B,IAAMzxB,EAAO,KAAK0W,UAAS,EAC3B,YAAKyS,KAAI,EACT,KAAKy+C,cAAa,EAIlB5nE,EAAKiG,KAAO,MAAM4rB,gBAA8B,EAAI,EAEpD,KAAK+1C,cAAa,EAClB,KAAK52C,OAAM,GAAe,EACnB,KAAK62C,kBAAkB7nE,EAAM2nE,CAAY,CAClD,CACF,CAEAE,kBACE7nE,EACA2nE,EAC0C,CAC1C,IAAIpiD,EAAcvlB,EAElB,OAAI,CAACulB,EAAYoiD,cAAgB,CAACpiD,EAAYtlB,QAC5CslB,EAAc,KAAKvO,WACjBuO,EACA,aACF,GAGFA,EAAYoiD,aAAeA,EACpBpiD,CACT,CAMAyY,iBAAiB7/B,EAAc,CAE3BA,IAA8B,IAC9B,KAAK8/B,MAAMC,WAAW,KAAK1kB,MAAM5K,IAAM,CAAC,IAAC,GAEzC,KAAKuvB,SAAyB,IAAA,CAAC,EAE/B,MAAMH,iBAAiB7/B,CAAI,CAE/B,CAMAg1B,cACErb,EACgC,CAChC,OACE,KAAK4vD,iBAAiB,YAAY,GAClC,MAAMv0C,cAAcrb,CAAmB,CAE3C,CAEA+Z,gBAAgBmD,EAAmD,CAKjE,OACE,KAAK0yC,iBAAiB,YAAY,GAAK,MAAM71C,gBAAgBmD,CAAO,CAExE,CAEAoM,kBACE1Y,EACA9Q,EACA0oD,EACAloD,EACA,CAIIsQ,IAASvY,QACX,MAAMixB,kBAAkB1Y,EAAM9Q,EAAU0oD,EAAeloD,CAAS,CAEpE,CAMAoC,gBAAwDxa,EAAY,CAClE,IAAMqU,EAAS,MAAMmG,gBAAgBxa,CAAI,EACzC,OAAIqU,EAAOpU,OAAS,gBAClBoU,EAAOszD,aAAgB3nE,EAAuB2nE,cAEzCtzD,CACT,CAEAoG,mBAEEza,EAAY,CACZ,OAAIA,EAAKC,OAAS,cACT,KAAKua,gBAAgBxa,CAAI,EAE3B,MAAMya,mBAAmBza,CAAI,CACtC,CAMAqhC,kBAAgD,CAC9C,OAAO,KAAKqmC,iBAAiB,SAAS,GAAK,MAAMrmC,iBAAgB,CACnE,CAEArpB,YAAY/X,EAAc6+B,EAA0B5mB,EAAsB,CACxE,OACEjY,IAAS,eACT,MAAM+X,YAAY/X,EAAM6+B,EAAiB5mB,CAAO,CAEpD,CAEAG,aAAarY,EAAcsY,EAAsB,CAE7CtY,GACAA,EAAKC,OAAS,eACdD,EAAK2nE,eAAiB,aAEtB3nE,EAAK2nE,aAAe,UAEpB,MAAMtvD,aAAarY,EAAMsY,CAAK,CAElC,CAMAwvD,0BAA0BvnC,EAAY3xB,EAAsB,CAC1D,GAAI,MAAMk5D,0BAA0BvnC,EAAI3xB,CAAG,EACzC,MAAO,GAKT,IAAMua,EAAO,KAAK8d,eAAc,EAChC,OACE,KAAKhJ,MAAMC,WAAW/U,CAAI,IAA2B,IACrD,KAAK8U,MAAMC,WAAW/U,EAAO,CAAC,IAAC,EAMnC,CAEA4+C,oBACE/nE,EACAgoE,EACA,CAEIhoE,EAAKyb,OAASzb,EAAKyb,MAAMxb,OAAS,eACtC,MAAM8nE,oBAAoB/nE,EAAMgoE,CAAO,CACzC,CAGA1tC,yBACEt6B,EACAu6B,EAC+B,CAAA,IAAAiE,EAE/B,GAAIjE,EAAKt6B,OAAS,gBAAau+B,EAAIjE,EAAKzmB,QAAK,MAAV0qB,EAAYvpB,cAE7C,OAAO,MAAMqlB,yBAAyBt6B,EAAMu6B,CAAI,EAGlD,GAAI,KAAK9I,MAAK,EAAS,EAAG,CAExB,IAAMzd,EAA2BhU,EACjCgU,OAAAA,EAAKyH,MAAQ,KAAKosD,kBAAkBttC,EAAM,YAAY,EACtD,KAAKpR,KAAI,EACTnV,EAAKyB,KAAO,MAAMwyD,gDAA+C,EAC1D,KAAKjxD,WAAWhD,EAAM,kBAAkB,CACjD,CAEA,KAAKse,UAAS,EACd,IAAM41C,EAAkBloE,EACxBkoE,OAAAA,EAAgBjiE,KAAQs0B,EAAuBt0B,KACxC,KAAK4hE,kBAAkBK,EAAiB,WAAW,CAC5D,CAEAC,WACEhzD,EACAizD,EACA/yD,EACoC,CACpC,OACE,KAAKqyD,iBAAiB,gBAAgB,GACtC,MAAMS,WACJhzD,EACAizD,EACA/yD,CACF,CAEJ,CAEAgzD,gBACEC,EACmD,CACnD,OACE,KAAKZ,iBAAiB,YAAY,GAAK,MAAMW,gBAAgBC,CAAS,CAE1E,CAEApK,WACEl+D,EACAq9B,EACAC,EACG,CACH,IAAMr9B,EAAOo9B,EAAc,mBAAqB,kBAEhD,KAAKlU,KAAI,EACT,IAAM05C,EAAY,KAAKrpD,MAAM6O,OAEvB9C,EAAc,KAAKmiD,iBAAiB,YAAY,EACtD,GAAIniD,EACF,GACE,KAAKkM,MAAiB,EAAA,GACtB,KAAKA,MAAK,GAAe,GACzB,KAAKA,MAAK,CAAU,EAEpBzxB,EAAK+V,GAAKwP,MACL,IAAI+X,GAAc,CAACD,EACxBr9B,OAAAA,EAAK+V,GAAK,KACV/V,EAAKyV,KAAO,KAAKoyD,kBAAkBtiD,EAAa,WAAW,EACpD,KAAKvO,WAAWhX,EAAMC,CAAI,EAEjC,MAAM,KAAK0Y,MACT2uD,GAAkBC,oBAClB,KAAK/tD,MAAM5B,QACb,OAGF,KAAKwlB,aAAap9B,EAAMq9B,EAAaC,CAAU,EAGjD,aAAMgC,gBAAgBt/B,CAAI,EAC1BA,EAAKyV,KACH,KAAKiyD,iBAAiB,WAAW,GACjC,MAAMa,eAAe,CAAC,CAACvoE,EAAK+R,WAAY8wD,CAAS,EAC5C,KAAK7rD,WAAWhX,EAAMC,CAAI,CACnC,CAEAoZ,YACErZ,EAKAsZ,EACa,CACb,IAAMiM,EAAc,KAAKmiD,iBAAiB,YAAY,EACtD,GAAI,CAACniD,EAAa,OAAO,MAAMlM,YAAYrZ,EAAMsZ,CAAU,EAE3D,IAAMgf,EAAQt4B,EAEd,GAAI,CAAC,KAAK6yB,aAAqB,EAAA,GAAK,CAAC,KAAKpB,MAAK,EAAS,EAEtD6G,OAAAA,EAAM3e,WAAa,CAAA,EACnB2e,EAAMtf,OAAS,KACfsf,EAAMxe,YAAc,KAAK+tD,kBAAkBtiD,EAAa,aAAa,EAC9D,KAAKvO,WAAWshB,EAAO,wBAAwB,EAIxD,KAAKksB,aAAa,mBAAmB,EACrC,IAAMtkB,EAAY,KAAKxpB,UAAS,EAChCwpB,OAAAA,EAAUxmB,SAAW6L,EACrB+S,EAAM3e,WAAa,CAAC,KAAK3C,WAAWkpB,EAAW,wBAAwB,CAAC,EAEjE,MAAM7mB,YAAYif,EAAOhf,CAAU,CAC5C,CAEAohB,0BAAoC,CAClC,GAAI,KAAKjJ,MAAK,EAAY,EAAG,CAC3B,IAAMtI,EAAO,KAAK8d,eAAc,EAChC,GAAI,KAAKwiB,qBAAqBtgC,EAAM,MAAM,GAEtC,KAAK8U,MAAM0rB,WACT3iC,GAA6B,GAAA,EAC7B,KAAKq8B,oBAAoBl6B,EAAO,CAAC,CACnC,EAEA,MAAO,EAGb,CACA,OAAO,MAAMuR,yBAAwB,CACvC,CAEA8tC,iCACExoE,EAKAu9D,EAC0C,CAAA,IAAAkL,EAC1C,OAAAA,EAAKzoE,EAAkC2Z,aAAnC8uD,MAAAA,EAA+C7uD,OAE1C,GAEF,MAAM4uD,iCACXxoE,EACAu9D,CACF,CACF,CAEAmL,YAAY1oE,EAAsC,CAChD,GAAM,CAAE2Z,WAAAA,CAAY,EAAG3Z,EACnB2Z,GAAU,MAAVA,EAAYC,SACd5Z,EAAK2Z,WAAaA,EAAWgvD,OAE3B3oE,GAAQA,EAAK0Z,SAASzZ,OAAS,aACjC,GAEF,MAAMyoE,YAAY1oE,CAAI,EACtBA,EAAK2Z,WAAaA,CACpB,CAEA0Z,YACErzB,EACmD,CACnD,IAAMulB,EAAc,KAAKmiD,iBAAiB,YAAY,EACtD,GAAI,CAACniD,EAAa,OAAO,MAAM8N,YAAYrzB,CAAI,EAI/C,GAFAA,EAAK2Z,WAAa,CAAA,EAEd,CAAC,KAAKkZ,aAAqB,EAAA,GAAK,CAAC,KAAKpB,MAAK,EAAS,EAEtDzxB,OAAAA,EAAKgZ,OAAS,KAAK6uD,kBAAkBtiD,EAAa,eAAe,EACjE,KAAK+M,UAAS,EACP,KAAKtb,WAAWhX,EAAM,mBAAmB,EAIlD,IAAMkgC,EACJ,KAAK3sB,gBAA0CgS,CAAW,EAC5D2a,OAAAA,EAAUC,MAAQ5a,EAClBvlB,EAAK2Z,WAAWmD,KACd,KAAK9F,WAAWkpB,EAAW,wBAAwB,CACrD,EAEI,KAAK7O,IAAG,EAAS,IAEG,KAAKu3C,8BAA8B5oE,CAAI,GAGzC,KAAK6oE,2BAA2B7oE,CAAI,GAG1D,KAAKoxB,iBAAgB,EAAS,EAC9BpxB,EAAKgZ,OAAS,KAAK8vD,kBAAiB,EACpC,KAAKx2C,UAAS,EACP,KAAKtb,WAAWhX,EAAM,mBAAmB,CAClD,CAEA8oE,mBAAuD,CAGrD,OACE,KAAKpB,iBAAiB,eAAe,GAAK,MAAMoB,kBAAiB,CAErE,CAGAlB,eAAsB,CAElB,KAAKpuD,MAAM5b,MACX,KAAK4+B,kBAAkB,KAAKhjB,MAAMmB,cAAcld,KAAK,GAErD,KAAKkb,MAAM2uD,GAAkBE,gBAAiB,KAAKhuD,MAAMmB,aAAa,CAE1E,CACF,ECnaFouD,GAAgBh3D,GACd,cAA+BA,CAA6B,CAC1Di3D,kBAAiC,CAC/B,GAAI,KAAKv3C,MAAK,EAAU,EAAG,CACzB,IAAMw3C,EAAsB,KAAKzvD,MAAM5B,SAEjC5X,EAAO,KAAK0W,UAAS,EAE3B,GADA,KAAKyS,KAAI,EACLlD,GAAkB,KAAKzM,MAAMvZ,IAAI,EAAG,CACtC,IAAMgG,EAAO,KAAKijE,oBAAmB,EAC/B3a,EAAa,KAAKp1B,iBAAiBn5B,EAAMiG,CAAI,EAEnD,GADA,KAAK2N,WAAW26C,EAAY,uBAAuB,EAC/C,KAAK98B,MAAK,EAAU,EACtB,OAAO88B,CAEX,CACA,KAAKvpD,WAAWikE,CAAmB,CACrC,CACF,CAMA91C,cAAcrb,EAA6D,CACzE,OACE,KAAKkxD,iBAAkB,GAAI,MAAM71C,cAAcrb,CAAmB,CAEtE,CACF,ECzBIqxD,GAEF,CAAC,UAAW,SAAU,OAAQ,OAAO,EACnCC,GAAe,CAAC,KAAM,KAAM,IAAK,IAAK,GAAG,EAExC,SAASC,GAAgBC,EAA8B,CAC5D,GAAIA,EAAWzgD,IAAI,YAAY,EAAG,CAChC,GAAIygD,EAAWzgD,IAAI,mBAAmB,EACpC,MAAM,IAAInX,MACR,iEACF,EAGF,IAAM63D,EACJD,EAAWv6D,IAAI,YAAY,EAAEw6D,uBAC/B,GACEA,GAA0B,MAC1B,OAAOA,GAA2B,UAElC,MAAM,IAAI73D,MACR,2DACF,EAGF,IAAM83D,EACJF,EAAWv6D,IAAI,YAAY,EAAEy6D,uBAC/B,GACEA,GAA0B,MAC1B,OAAOA,GAA2B,UAElC,MAAM,IAAI93D,MAAM,6CAA6C,CAEjE,CAEA,GAAI43D,EAAWzgD,IAAI,MAAM,GAAKygD,EAAWzgD,IAAI,YAAY,EACvD,MAAM,IAAInX,MAAM,6CAA6C,EAG/D,GAAI43D,EAAWzgD,IAAI,cAAc,GAAKygD,EAAWzgD,IAAI,aAAa,EAChE,MAAM,IAAInX,MAAM,sDAAsD,EAGxE,GAAI43D,EAAWzgD,IAAI,kBAAkB,EAAG,CAAA,IAAA4gD,EACtC,IAAM3kB,EAAWwkB,EAAWv6D,IAAI,kBAAkB,EAAE+1C,SAEpD,GAAI,CAACqkB,GAAmB5sC,SAASuoB,CAAQ,EAAG,CAC1C,IAAM4kB,EAAeP,GAAmBnjE,IAAI2jE,GAAK,IAAIA,CAAC,GAAG,EAAEvjE,KAAK,IAAI,EACpE,MAAM,IAAIsL,MACR,6EAA6Eg4D,CAAY,GAC3F,CACF,CAEA,GAAI5kB,IAAa,OAAQ,CACvB,GAAIwkB,EAAWzgD,IAAI,cAAc,EAC/B,MAAM,IAAInX,MACR,0DACF,EAGF,GAAI43D,EAAWzgD,IAAI,aAAa,EAC9B,MAAM,IAAInX,MACR,yDACF,EAGF,IAAMqzC,EAAaukB,EAAWv6D,IAAI,kBAAkB,EAAEg2C,WAEtD,GAAI,CAACqkB,GAAa7sC,SAASwoB,CAAU,EAAG,CACtC,IAAM6kB,EAAYR,GAAapjE,IAAIq1D,GAAK,IAAIA,CAAC,GAAG,EAAEj1D,KAAK,IAAI,EAE3D,MAAM,IAAIsL,MACR,iHAAiHk4D,CAAS,GAC5H,CACF,CAEmC,CAAA,IAAAC,EACjC,GACE9kB,IAAe,OACf8kB,EAAAP,EAAWv6D,IAAI,gBAAgB,IAA/B86D,KAAAA,OAAAA,EAAkCC,cAAe,OAEjD,MAAM,IAAIp4D,MACR,iGAAiGxL,KAAKC,UAAU,CAAC,iBAAkBmjE,EAAWv6D,IAAI,gBAAgB,CAAC,CAAC,CAAC,KACvK,CAEJ,CACD,SAEC+1C,IAAa,WACb2kB,EAAAH,EAAWv6D,IAAI,gBAAgB,IAAC,KAAA,OAAhC06D,EAAkCK,cAAe,OAEjD,MAAM,IAAIp4D,MACR,iFAAiFxL,KAAKC,UAAU,CAAC,iBAAkBmjE,EAAWv6D,IAAI,gBAAgB,CAAC,CAAC,CAAC,KACvJ,CAEJ,CAEA,GAAIu6D,EAAWzgD,IAAI,kBAAkB,EAK5B,CACL,GACEygD,EAAWzgD,IAAI,wBAAwB,GACvCygD,EAAWzgD,IAAI,kBAAkB,EAEjC,MAAM,IAAInX,MACR,uFACF,EAIF,GADE43D,EAAWv6D,IAAI,kBAAkB,EAAEg7D,UACO,WAC1C,MAAM,IAAIr4D,MACR,sJAGF,CAEJ,CAEF,GAAI43D,EAAWzgD,IAAI,kBAAkB,GAMxBygD,EAAWzgD,IAAI,wBAAwB,EAChD,MAAM,IAAInX,MACR,qEACF,EAkBJ,GAdE,CAAC43D,EAAWzgD,IAAI,wBAAwB,GACxCygD,EAAWzgD,IAAI,kBAAkB,GACjCygD,EAAWv6D,IAAI,kBAAkB,EAAEi7D,wBAQjCV,EAAWt6D,IAAI,yBAA0B,CAAA,CAAE,EAI3Cs6D,EAAWzgD,IAAI,gBAAgB,EAK1B,CACL,IAAMihD,EAAaR,EAAWv6D,IAAI,gBAAgB,EAAE+6D,WACpD,GAAIA,GAAc,KAAM,CACtB,IAAMG,EAAgC,CAAC,OAAQ,KAAK,EACpD,GAAI,CAACA,EAA8B1tC,SAASutC,CAAU,EACpD,MAAM,IAAIp4D,MACR,0EACEu4D,EAA8BjkE,IAAI2jE,GAAK,IAAIA,CAAC,GAAG,EAAEvjE,KAAK,IAAI,CAC9D,CAEJ,CACF,CAGF,GACEkjE,EAAWzgD,IAAI,oBAAoB,GACnC,CAACygD,EAAWzgD,IAAI,eAAe,EAC/B,CACA,IAAMna,EAAQ,IAAIgD,MAChB,8FACF,EAEAhD,MAAAA,EAAMw7D,eAAiB,gBACjBx7D,CACR,CAEA,GACE46D,EAAWzgD,IAAI,wBAAwB,GACvCygD,EAAWv6D,IAAI,wBAAwB,EAAEg7D,UAAY,UAErD,MAAM,IAAIr4D,MACR,2JAGF,EAGF,GACE43D,EAAWzgD,IAAI,gBAAgB,GAC/BygD,EAAWv6D,IAAI,gBAAgB,EAAE+6D,aAAe,OAEhD,MAAM,IAAIp4D,MACR,2GACF,CAgBJ,CAYO,IAAMy4D,GAAe,CAC1Br4D,OAAAA,GACAgwB,IAAAA,GACA5R,KAAAA,GACA6iC,WAAAA,GACAgW,YAAAA,GACAtB,aAAAA,EACF,EAEa2C,GAAmB79D,OAAOiD,KAAK26D,EAAY,EC9K1BE,GAAf,cAAwCne,EAAW,CAuChEoe,WACE3yD,EACA4yD,EACAC,EACA1yD,EACS,CACT,GACEH,EAAK1X,OAAS,iBACd,KAAKqa,eAAe3C,CAAI,GACxBA,EAAKb,UACLa,EAAKZ,UAEL,OAAOyzD,EAGT,IAAM7jE,EAAMgR,EAAKhR,IAQjB,OAFaA,EAAI1G,OAAS,aAAe0G,EAAIV,KAAOU,EAAI6G,SAE3C,YACP+8D,GACF,KAAK5xD,MAAM7I,EAAO7H,cAAetB,CAAG,EAC7B,KAEL6jE,IACE1yD,EAGEA,EAAoBwyC,iBAAmB,OACzCxyC,EAAoBwyC,eAAiB3jD,EAAI6H,IAAI5Q,OAG/C,KAAK+a,MAAM7I,EAAO1N,eAAgBuE,CAAG,GAIlC,IAGF6jE,CACT,CAEAC,qBACElwC,EACAkkB,EACmC,CACnC,OACElkB,EAAKt6B,OAAS,2BACd,KAAKu8B,kBAAkBjC,EAAK38B,KAAK,IAAM6gD,CAE3C,CAGAwkB,eAA2D,CAGzD,GAFA,KAAK3X,mBAAkB,EACvB,KAAKpnB,UAAS,EACV,KAAKzS,MAAK,GAAO,EACnB,MAAM,KAAK9Y,MAAM7I,EAAO7D,0BAA2B,KAAKuN,MAAM5B,QAAQ,EAExE,IAAM2iB,EAAO,KAAKjJ,gBAAe,EACjC,GAAI,CAAC,KAAKG,MAAK,GAAO,EACpB,MAAM,KAAK9Y,MAAM7I,EAAO5D,0BAA2B,KAAKsN,MAAM5B,SAAU,CACtE5S,WAAY,KAAKi5B,MAAM+mB,YAAY,KAAKxrC,MAAM5b,KAAK,CACrD,CAAC,EAIH,YAAKwgD,0BAAyB,EAC9B7jB,EAAKsiB,SAAW,KAAKA,SACrBtiB,EAAKikB,OAAS,KAAKhlC,MAAMglC,OACrB,KAAKtsC,YAAW,MAClBqoB,EAAKtpB,OAAS,KAAKA,QAEdspB,CACT,CAqBAjJ,gBAEEo5C,EACA5yD,EACc,CACd,OAAI4yD,EACK,KAAKC,cAAc,IACxB,KAAKC,oBAAoB9yD,CAAmB,CAC9C,EAEK,KAAK+yD,WAAW,IAAM,KAAKD,oBAAoB9yD,CAAmB,CAAC,CAC5E,CAGA8yD,oBAEE9yD,EACc,CACd,IAAMF,EAAW,KAAK4B,MAAM5B,SACtB2iB,EAAO,KAAKoB,iBAAiB7jB,CAAmB,EACtD,GAAI,KAAK2Z,MAAK,EAAS,EAAG,CACxB,IAAMzxB,EAAO,KAAKi3B,YAAkCrf,CAAQ,EAE5D,IADA5X,EAAKknE,YAAc,CAAC3sC,CAAI,EACjB,KAAKlJ,IAAG,EAAS,GACtBrxB,EAAKknE,YAAYpqD,KAAK,KAAK6e,iBAAiB7jB,CAAmB,CAAC,EAElE,YAAKwmB,iBAAiBt+B,EAAKknE,WAAW,EAC/B,KAAKlwD,WAAWhX,EAAM,oBAAoB,CACnD,CACA,OAAOu6B,CACT,CAGAuwC,2BAEEhzD,EACA8pB,EACA,CACA,OAAO,KAAK+oC,cAAc,IACxB,KAAKhvC,iBAAiB7jB,EAAqB8pB,CAAc,CAC3D,CACF,CAGA/F,wBAEE/jB,EACA8pB,EACA,CACA,OAAO,KAAKipC,WAAW,IACrB,KAAKlvC,iBAAiB7jB,EAAqB8pB,CAAc,CAC3D,CACF,CAIA5G,2BAA2BljB,EAAuC,CAChEA,EAAoB0yC,sBAAwB,KAAKhxC,MAAM5B,QACzD,CAKA+jB,iBAEE7jB,EACA8pB,EACc,CACd,IAAMhqB,EAAW,KAAK4B,MAAM5B,SACtBmzD,EAAU,KAAKl4C,aAAY,GAAU,EAC3C,GAAIk4C,GACE,KAAK5f,UAAUtP,SAAU,CAC3B,KAAK1yB,KAAI,EACT,IAAIiV,EAAO,KAAK4sC,WAAWpzD,CAAQ,EACnC,OAAIgqB,IACFxD,EAAOwD,EAAeF,KAAK,KAAMtD,EAAMxmB,CAAQ,GAE1CwmB,CACT,CAGF,IAAI6sC,EACAnzD,EACFmzD,EAAsB,IAEtBnzD,EAAsB,IAAI6zC,GAC1Bsf,EAAsB,IAExB,GAAM,CAAEhrE,KAAAA,GAAS,KAAKuZ,OAElBvZ,IAAkB,IAAIgmB,GAAkBhmB,CAAI,KAC9C,KAAKuZ,MAAMilC,iBAAmB,KAAKjlC,MAAM5b,OAG3C,IAAIwgC,EAAO,KAAK8sC,sBAAsBpzD,CAAmB,EAIzD,GAHI8pB,IACFxD,EAAOwD,EAAeF,KAAK,KAAMtD,EAAMxmB,CAAQ,GAE7C2O,GAAkB,KAAK/M,MAAMvZ,IAAI,EAAG,CACtC,IAAMD,EAAO,KAAKi3B,YAAoCrf,CAAQ,EACxD00C,EAAW,KAAK9yC,MAAMhM,MAG5B,GAFAxN,EAAKssD,SAAWA,EAEZ,KAAK76B,MAAK,EAAM,EAAG,CACrB,KAAKpZ,aAAa+lB,EAAkB,EAAI,EACxCp+B,EAAKo+B,KAAOA,EAEZ,IAAMhuB,EAAawH,EAASna,MAE1Bqa,EAAoBwyC,gBAAkB,MACtCxyC,EAAoBwyC,eAAe7sD,OAAS2S,IAE5C0H,EAAoBwyC,eAAiB,MAGrCxyC,EAAoBuyC,oBAAsB,MAC1CvyC,EAAoBuyC,mBAAmB5sD,OAAS2S,IAEhD0H,EAAoBuyC,mBAAqB,MAGzCvyC,EAAoByyC,eAAiB,MACrCzyC,EAAoByyC,cAAc9sD,OAAS2S,IAE3C,KAAKs7C,0BAA0B5zC,CAAmB,EAClDA,EAAoByyC,cAAgB,MAGpCzyC,EAAoB2yC,gBAAkB,MACtC3yC,EAAoB2yC,eAAehtD,OAAS2S,IAE5C0H,EAAoB2yC,eAAiB,KAEzC,MACEzqD,EAAKo+B,KAAOA,EAGd,YAAKjV,KAAI,EACTnpB,EAAKi1B,MAAQ,KAAK0G,iBAAgB,EAClC,KAAKiyB,UAAUxvB,EAAM,KAAKpnB,WAAWhX,EAAM,sBAAsB,CAAC,EAE3DA,CACR,MAAUirE,GACT,KAAK9gB,sBAAsBryC,EAAqB,EAAI,EAGtD,GAAIizD,EAAS,CACX,GAAM,CAAE9qE,KAAAA,GAAS,KAAKuZ,MAItB,IAHmB,KAAK/B,UAAU,aAAa,EAC3C6O,GAAwBrmB,CAAI,EAC5BqmB,GAAwBrmB,CAAI,GAAK,CAAC,KAAKwxB,MAAK,EAAU,IACxC,CAAC,KAAK05C,8BAA6B,EACnD,YAAKlkB,eAAen3C,EAAO1E,4BAA6BwM,CAAQ,EACzD,KAAKozD,WAAWpzD,CAAQ,CAEnC,CAEA,OAAOwmB,CACT,CAKA8sC,sBAEEpzD,EACc,CACd,IAAMF,EAAW,KAAK4B,MAAM5B,SACtB6mC,EAAmB,KAAKjlC,MAAMilC,iBAC9BlkB,EAAO,KAAK6wC,aAAatzD,CAAmB,EAElD,OAAI,KAAK2yD,qBAAqBlwC,EAAMkkB,CAAgB,EAC3ClkB,EAGF,KAAKK,iBAAiBL,EAAM3iB,EAAUE,CAAmB,CAClE,CAEA8iB,iBAEEL,EACA3iB,EAEAE,EACc,CACd,GAAI,KAAKuZ,IAAG,EAAY,EAAG,CACzB,IAAMrxB,EAAO,KAAKi3B,YAAqCrf,CAAQ,EAC/D5X,OAAAA,EAAKioB,KAAOsS,EACZv6B,EAAKo7B,WAAa,KAAKS,wBAAuB,EAC9C,KAAK7K,OAAM,EAAS,EACpBhxB,EAAK07B,UAAY,KAAKC,iBAAgB,EAC/B,KAAK3kB,WAAWhX,EAAM,uBAAuB,CACtD,CACA,OAAOu6B,CACT,CAEA8wC,yBAEEvzD,EAC8B,CAC9B,OAAO,KAAK2Z,MAAoB,GAAA,EAC5B,KAAK9b,iBAAgB,EACrB,KAAKukD,gBAAgBpiD,CAAmB,CAC9C,CAKAszD,aAEEtzD,EACc,CACd,IAAMF,EAAW,KAAK4B,MAAM5B,SACtB6mC,EAAmB,KAAKjlC,MAAMilC,iBAC9BlkB,EAAO,KAAK8wC,yBAAyBvzD,CAAmB,EAE9D,OAAI,KAAK2yD,qBAAqBlwC,EAAMkkB,CAAgB,EAC3ClkB,EAGF,KAAK2lC,YAAY3lC,EAAM3iB,EAAU,EAAE,CAC5C,CAQAsoD,YAEE9hC,EACA+hC,EACAC,EACc,CACd,GAAI,KAAKpqD,cAAcooB,CAAI,EAAG,CAK5B,IAAM5wB,EAAQ,KAAKsI,iBAAiBsoB,CAAI,GAGtCgiC,GAAWn5C,GAAuB,EAAO,GACzC,CAAC,KAAKkkC,UAAUpP,OAChB,CAAC,KAAKtqB,MAAK,EAAO,IAElB,KAAK9Y,MAAM7I,EAAOlI,oBAAqBw2B,EAAM,CAC3CrgC,eAAgByP,CAClB,CAAC,EAGH,KAAK+K,WAAWC,eAAehL,EAAO4wB,EAAK5vB,IAAI5Q,KAAK,CACtD,CAEA,IAAM0tE,EAAK,KAAK9xD,MAAMvZ,KACtB,GAAI0mB,GAAgB2kD,CAAE,IAAM,KAAKngB,UAAUpP,OAAS,CAAC,KAAKtqB,MAAY,EAAA,GAAI,CACxE,IAAI85C,EAAOtkD,GAAwBqkD,CAAE,EACrC,GAAIC,EAAOnL,EAAS,CAClB,GAAIkL,IAAE,GAAkB,CAEtB,GADA,KAAK9mB,aAAa,kBAAkB,EAChC,KAAKhrC,MAAM+lC,2BAEb,OAAOnhB,EAET,KAAKotC,6BAA6BptC,EAAsB+hC,CAAY,CACtE,CACA,IAAMngE,EAAO,KAAKi3B,YAChBkpC,CACF,EACAngE,EAAKo+B,KAAOA,EACZp+B,EAAKssD,SAAW,KAAK9yC,MAAMhM,MAE3B,IAAMi+D,EAAUH,IAAmB,IAAIA,IAAoB,GACrDI,EAAWJ,IAA2B,GAU5C,GARII,IAGFH,EAAOtkD,GAAuB,EAAc,GAG9C,KAAKkC,KAAI,EAIPmiD,IAAE,IAEF,KAAK7zD,UAAU,CAAC,mBAAoB,CAAEqtC,SAAU,SAAW,CAAA,CAAC,GAExD,KAAKtrC,MAAMvZ,OAAI,IAAkB,KAAKkrD,UAAUvP,SAClD,MAAM,KAAKjjC,MACT7I,EAAOhH,iCACP,KAAK0Q,MAAM5B,QACb,EAIJ5X,EAAKi1B,MAAQ,KAAK02C,qBAAqBL,EAAIC,CAAI,EAC/C,IAAMK,EAAe,KAAK50D,WACxBhX,EACAyrE,GAAWC,EAAW,oBAAsB,kBAC9C,EAMMG,EAAS,KAAKryD,MAAMvZ,KAC1B,GACGyrE,IAAaG,IAAM,IAAqBA,IAAwB,KAChEJ,GAAWI,IAAM,GAElB,MAAM,KAAKlzD,MACT7I,EAAOvJ,0BACP,KAAKiT,MAAM5B,QACb,EAGF,OAAO,KAAKsoD,YAAY0L,EAAczL,EAAcC,CAAO,CAC7D,CACF,CAEA,OAAOhiC,CACT,CAKAutC,qBAEEL,EACAC,EACc,CACd,IAAM3zD,EAAW,KAAK4B,MAAM5B,SAC5B,OAAQ0zD,EAAE,CACR,IAAA,IACE,OAAQ,KAAK11D,gBAAgB,mBAAoB,UAAU,EAAC,CAC1D,IAAK,OACH,OAAO,KAAKk2D,wBAAwB,IAC3B,KAAKC,kBAAiB,CAC9B,EAEH,IAAK,SACH,OAAO,KAAKC,+BAA+B,IAClC,KAAKC,wBAAwBV,CAAI,CACzC,CACL,CAEA,GAGE,KAAK31D,gBAAgB,mBAAoB,UAAU,IAAM,QAEzD,OAAO,KAAKk2D,wBAAwB,IAAM,CACxC,GAAI,KAAK3gB,UAAUtP,UAAY,KAAKhpB,aAAsB,GAAA,EACxD,MAAM,KAAKla,MAAM7I,EAAOrD,kBAAmB,KAAK+M,MAAM5B,QAAQ,EAEhE,OAAO,KAAKs0D,8BACV,KAAKC,yBAAyBb,EAAIC,CAAI,EACtC3zD,CACF,CACF,CAAC,EAIL,QACE,OAAO,KAAKu0D,yBAAyBb,EAAIC,CAAI,CACjD,CACF,CAKAY,yBAEEb,EACAC,EACc,CACd,IAAM3zD,EAAW,KAAK4B,MAAM5B,SAE5B,OAAO,KAAKsoD,YACV,KAAKmL,yBAAwB,EAC7BzzD,EACAsP,GAAwBokD,CAAE,EAAIC,EAAO,EAAIA,CAC3C,CACF,CAEAQ,mBAA8C,CAAA,IAAAK,EAC5C,GAAM,CAAEx0D,SAAAA,GAAa,KAAK4B,MACpB/D,EAAO,KAAKkmB,iBAAgB,EAOlC,OAN4BtvB,GAAoCwc,IAE9DpT,EAAKxV,IACP,GAG2B,GAAAmsE,EAAC32D,EAAK3B,QAALs4D,MAAAA,EAAYn3D,gBACtC,KAAK0D,MAAM7I,EAAO/C,wBAAyB6K,EAAU,CACnD3X,KAAMwV,EAAKxV,IACb,CAAC,EAEE,KAAKosE,sCAAqC,GAE7C,KAAK1zD,MAAM7I,EAAOhD,gBAAiB8K,CAAQ,EAGtCnC,CACT,CAEA62D,2BACEtsE,EACA,CACI,KAAKyxB,MAAK,EAAY,GACxB,KAAK9Y,MAAM7I,EAAOlG,mCAAoC5J,EAAKmP,QAAQ,CAEvE,CAIA+qD,gBAEEpiD,EACAsqD,EACc,CACd,IAAMxqD,EAAW,KAAK4B,MAAM5B,SACtB20D,EAAU,KAAK15C,aAAY,EAAU,EAE3C,GAAI05C,GAAW,KAAKC,qBAAoB,EAAI,CAC1C,KAAKrjD,KAAI,EACT,IAAMoR,EAAO,KAAKkyC,WAAW70D,CAAQ,EACrC,OAAKwqD,GAAU,KAAKkK,2BAA2B/xC,CAAI,EAC5CA,CACT,CACA,IAAMmyC,EAAS,KAAKj7C,MAAK,EAAU,EAC7BzxB,EAAO,KAAK0W,UAAS,EAC3B,GAAImQ,GAAc,KAAKrN,MAAMvZ,IAAI,EAAG,CAClCD,EAAKssD,SAAW,KAAK9yC,MAAMhM,MAC3BxN,EAAKE,OAAS,GAEV,KAAKuxB,MAAK,EAAU,GACtB,KAAK+yB,aAAa,kBAAkB,EAEtC,IAAMmoB,EAAW,KAAKl7C,MAAK,EAAW,EAOtC,GANA,KAAKtI,KAAI,EAETnpB,EAAKmP,SAAW,KAAK+qD,gBAAgB,KAAM,EAAI,EAE/C,KAAK/P,sBAAsBryC,EAAqB,EAAI,EAEhD,KAAK0B,MAAM6O,QAAUskD,EAAU,CACjC,IAAMpgB,EAAMvsD,EAAKmP,SAEbo9C,EAAItsD,OAAS,aACf,KAAK0Y,MAAM7I,EAAOvE,aAAcvL,CAAI,EAC3B,KAAKqa,yBAAyBkyC,CAAG,GAC1C,KAAK5zC,MAAM7I,EAAOhO,mBAAoB9B,CAAI,CAE9C,CAEA,GAAI,CAAC0sE,EACH,OAAKtK,GACH,KAAKkK,2BAA2BtsE,CAAiC,EAE5D,KAAKgX,WAAWhX,EAAM,iBAAiB,CAElD,CAEA,IAAMu6B,EAAO,KAAKqyC,YAEhB5sE,EACA0sE,EACA50D,CACF,EAEA,GAAIy0D,EAAS,CACX,GAAM,CAAEtsE,KAAAA,GAAS,KAAKuZ,MAItB,IAHmB,KAAK/B,UAAU,aAAa,EAC3C6O,GAAwBrmB,CAAI,EAC5BqmB,GAAwBrmB,CAAI,GAAK,CAAC,KAAKwxB,MAAK,EAAU,IACxC,CAAC,KAAK05C,8BAA6B,EACnD,YAAKlkB,eAAen3C,EAAOlP,uBAAwBgX,CAAQ,EACpD,KAAK60D,WAAW70D,CAAQ,CAEnC,CAEA,OAAO2iB,CACT,CAGAqyC,YAEE5sE,EACA0sE,EACA50D,EACc,CACd,GAAI40D,EAAQ,CACV,IAAMG,EAAuB7sE,EAC7B,YAAK4tD,UACHif,EAAqB19D,SACrB,KAAK6H,WAAW61D,EAAsB,kBAAkB,CAC1D,EACO7sE,CACT,CAEA,IAAM4X,EAAW,KAAK4B,MAAM5B,SACxB2iB,EAAO,KAAKuyC,oBAAoBh1D,CAAmB,EACvD,GAAI,KAAKqyC,sBAAsBryC,EAAqB,EAAK,EAAG,OAAOyiB,EACnE,KAAO3T,GAAe,KAAKpN,MAAMvZ,IAAI,GAAK,CAAC,KAAKq5B,mBAAkB,GAAI,CACpE,IAAMt5B,EAAO,KAAKi3B,YAAgCrf,CAAQ,EAC1D5X,EAAKssD,SAAW,KAAK9yC,MAAMhM,MAC3BxN,EAAKE,OAAS,GACdF,EAAKmP,SAAWorB,EAChB,KAAKpR,KAAI,EACT,KAAKykC,UAAUrzB,EAAOA,EAAO,KAAKvjB,WAAWhX,EAAM,kBAAkB,CAAE,CACzE,CACA,OAAOu6B,CACT,CAIAuyC,oBAEEh1D,EACc,CACd,IAAMF,EAAW,KAAK4B,MAAM5B,SACtB6mC,EAAmB,KAAKjlC,MAAMilC,iBAC9BlkB,EAAO,KAAKpH,cAAcrb,CAAmB,EAEnD,OAAI,KAAK2yD,qBAAqBlwC,EAAMkkB,CAAgB,EAC3ClkB,EAGF,KAAK6I,gBAAgB7I,EAAM3iB,CAAQ,CAC5C,CAEAwrB,gBAEEnpB,EACArC,EACAyrB,EACc,CACd,IAAM7pB,EAAQ,CACZU,oBAAqB,GACrB6yD,gBAAiB,KAAKlN,qBAAqB5lD,CAAI,EAC/C0pB,KAAM,IAER,GACE1pB,EAAO,KAAKupB,eAAevpB,EAAMrC,EAAUyrB,EAAS7pB,CAAK,EAGzDA,EAAMuzD,gBAAkB,SACjB,CAACvzD,EAAMmqB,MAChB,OAAO1pB,CACT,CAMAupB,eAEEvpB,EACArC,EACAyrB,EACA7pB,EACc,CACd,GAAM,CAAEvZ,KAAAA,GAAS,KAAKuZ,MACtB,GAAI,CAAC6pB,GAAWpjC,IAAI,GAClB,OAAO,KAAK+sE,UAAU/yD,EAAMrC,EAAUyrB,EAAS7pB,CAAK,EAC/C,GAAI2N,GAAgBlnB,CAAI,EAC7B,OAAO,KAAK8/D,8BAA8B9lD,EAAMrC,EAAU4B,CAAK,EAGjE,IAAIV,EAAW,GAEf,GAAI7Y,IAAI,GAAqB,CAC3B,GAAIojC,IACF,KAAK1qB,MAAM7I,EAAOxI,sBAAuB,KAAKkS,MAAM5B,QAAQ,EACxD,KAAKmjB,kBAAmB,IAAA,IAE1B,OAAO,KAAK/gB,mBAAmBC,EAAMT,CAAK,EAG9CA,EAAMU,oBAAsBpB,EAAW,GACvC,KAAKqQ,KAAI,CACX,CAEA,GAAI,CAACka,GAAW,KAAK5R,MAAK,EAAU,EAClC,OAAO,KAAKw7C,gCACVhzD,EACArC,EACA4B,EACAV,CACF,EACK,CACL,IAAMhC,EAAW,KAAKua,IAAG,CAAY,EACrC,OAAIva,GAAYgC,GAAY,KAAKuY,IAAU,EAAA,EAClC,KAAKlX,YAAYF,EAAMrC,EAAU4B,EAAO1C,EAAUgC,CAAQ,EAE1D,KAAKkB,mBAAmBC,EAAMT,CAAK,CAE9C,CACF,CAEAQ,mBAEEC,EACAT,EACA,CACAA,OAAAA,EAAMmqB,KAAO,GACN1pB,CACT,CAMAE,YAEEF,EACArC,EACA4B,EACA1C,EACAgC,EACiD,CACjD,IAAM9Y,EAAO,KAAKi3B,YAEhBrf,CAAQ,EAgBV,OAfA5X,EAAK4R,OAASqI,EACdja,EAAK8W,SAAWA,EACZA,GACF9W,EAAKo4B,SAAW,KAAK9G,gBAAe,EACpC,KAAKN,OAAM,CAAY,GACd,KAAKS,MAAK,GAAe,GAC9BxX,EAAKha,OAAS,SAChB,KAAK0Y,MAAM7I,EAAOtH,kBAAmBoP,CAAQ,EAE/C,KAAKW,WAAWC,eAAe,KAAKgB,MAAMhM,MAAO,KAAKgM,MAAM5B,QAAQ,EACpE5X,EAAKo4B,SAAW,KAAKziB,iBAAgB,GAErC3V,EAAKo4B,SAAW,KAAKvG,gBAAgB,EAAI,EAGvCrY,EAAMU,qBACPla,EAA4C8Y,SAAWA,EACjD,KAAK9B,WAAWhX,EAAM,0BAA0B,GAEhD,KAAKgX,WAAWhX,EAAM,kBAAkB,CAEnD,CAGAgtE,UAEE/yD,EACArC,EACAyrB,EACA7pB,EACc,CACd,IAAMxZ,EAAO,KAAKi3B,YAA8Brf,CAAQ,EACxD5X,OAAAA,EAAK4R,OAASqI,EACd,KAAKkP,KAAI,EACTnpB,EAAK+Y,OAAS,KAAKm0D,gBAAe,EAClC1zD,EAAMmqB,KAAO,GACN,KAAKP,gBACV,KAAKpsB,WAAWhX,EAAM,gBAAgB,EACtC4X,EACAyrB,CACF,CACF,CAMA4pC,gCAEEhzD,EACArC,EACA4B,EACAV,EACc,CACd,IAAM+lD,EAA4B,KAAKrlD,MAAMqhB,uBACzC/iB,EAA+C,KAEnD,KAAK0B,MAAMqhB,uBAAyB,GACpC,KAAK1R,KAAI,EAET,IAAMnpB,EAAO,KAAKi3B,YAChBrf,CACF,EACA5X,EAAK+Y,OAASkB,EACd,GAAM,CAAE8yD,gBAAAA,EAAiB7yD,oBAAAA,CAAqB,EAAGV,EAE7CuzD,IACF,KAAK1hB,gBAAgBvgC,MAAMu+B,GAAoB,CAAA,EAC/CvxC,EAAsB,IAAI6zC,IAGxBzxC,IACDla,EAA0C8Y,SAAWA,GAGpDA,EACF9Y,EAAKiZ,UAAY,KAAKqqB,6BAA4B,EAElDtjC,EAAKiZ,UAAY,KAAKqqB,6BACpBrpB,EAAKha,OAAS,QACdD,EACA8X,CACF,EAEF,IAAI8zD,EAG4B,KAAKhzD,qBACnC5Y,EACAka,CACF,EAEA,OAAI6yD,GAAmB,KAAKprC,sBAAuB,GAAI,CAAC7oB,GAEtDU,EAAMmqB,KAAO,GACb,KAAK+nB,0BAA0B5zC,CAAmB,EAClD,KAAKuzC,gBAAgBnC,kBAAiB,EACtC,KAAKmC,gBAAgBtgC,KAAI,EACzB6gD,EAAe,KAAKnqC,kCAClB,KAAKxK,YAAuCrf,CAAQ,EACpDg0D,CACF,IAEImB,IACF,KAAK5iB,sBAAsBryC,EAAqB,EAAI,EACpD,KAAKuzC,gBAAgBtgC,KAAI,GAE3B,KAAK3R,sBAAsBwyD,CAAY,GAGzC,KAAKpyD,MAAMqhB,uBAAyBgkC,EAE7B+M,CACT,CAEAxyD,sBACEpZ,EACAu+B,EACA,CACA,KAAKquB,qBAAqB5sD,EAAKiZ,UAAWslB,CAAmB,CAC/D,CAIAwhC,8BAEE9lD,EACArC,EACA4B,EAC4B,CAC5B,IAAMxZ,EAAO,KAAKi3B,YAAwCrf,CAAQ,EAClE5X,OAAAA,EAAKmtE,IAAMlzD,EACXja,EAAKotE,MAAQ,KAAKtT,cAAc,EAAI,EAChCtgD,EAAMU,qBACR,KAAKvB,MAAM7I,EAAOvI,2BAA4BqQ,CAAQ,EAEjD,KAAKZ,WAAWhX,EAAM,0BAA0B,CACzD,CAEA6/D,qBAAqB5lD,EAA6B,CAChD,OACEA,EAAKha,OAAS,cACdga,EAAKhU,OAAS,SACd,KAAKuT,MAAMmB,cAAcld,QAAUwc,EAAKpc,KACxC,CAAC,KAAKy7B,mBAAkB,GAExBrf,EAAKpc,IAAMoc,EAAKrc,QAAU,GAC1B,KAAK4+B,kBAAkBviB,EAAKrc,KAAK,IAAM,KAAK4b,MAAMilC,gBAEtD,CAEA7lC,qBACE5Y,EACA8Y,EACG,CACH,GAAI9Y,EAAK+Y,OAAO9Y,OAAS,SACvB,GAAID,EAAKiZ,UAAUW,SAAW,GAAK5Z,EAAKiZ,UAAUW,OAAS,EACzD,KAAKjB,MAAM7I,EAAOxM,gBAAiBtD,CAAI,MAEvC,SAAWusD,KAAOvsD,EAAKiZ,UACjBszC,EAAItsD,OAAS,iBACf,KAAK0Y,MAAM7I,EAAOtM,yBAA0B+oD,CAAG,EAKvD,OAAO,KAAKv1C,WACVhX,EACA8Y,EAAW,yBAA2B,gBACxC,CACF,CAEAwqB,6BAEE+pC,EACAC,EACAx1D,EACqB,CACrB,IAAMu1C,EAAuB,CAAA,EACzBz0B,EAAQ,GACN20C,EAAgC,KAAK/zD,MAAM+lC,2BAGjD,IAFA,KAAK/lC,MAAM+lC,2BAA6B,GAEjC,CAAC,KAAKluB,IAAG,EAAU,GAAG,CAC3B,GAAIuH,EACFA,EAAQ,WAER,KAAK5H,OAAM,EAAS,EAChB,KAAKS,MAAK,EAAU,EAAG,CACrB67C,GACF,KAAKE,4BAA4BF,CAAY,EAE/C,KAAKnkD,KAAI,EACT,KACF,CAGFkkC,EAAKvwC,KACH,KAAK2wD,kBAEH,GAAA,GACA31D,EACAu1D,CACF,CACF,CACF,CAEA,YAAK7zD,MAAM+lC,2BAA6BguB,EAEjClgB,CACT,CAEA1rB,uBAAiC,CAC/B,OAAO,KAAKlQ,MAAc,EAAA,GAAK,CAAC,KAAK6H,mBAAkB,CACzD,CAEAmI,kCAEEzhC,EACA0hC,EAC2B,CAAA,IAAAgsC,EAC3B,YAAKrvB,kCAAkC3c,CAAI,EAC3C,KAAK1Q,OAAM,EAAS,EACpB,KAAK+S,qBACH/jC,EACA0hC,EAAKzoB,UACL,IAAIy0D,EACJhsC,EAAK5tB,QAAK,KAAA,OAAV45D,EAAYrxC,gBACd,EAEIqF,EAAKyb,eACPD,GAAiBl9C,EAAM0hC,EAAKyb,aAAa,EAGvCzb,EAAK3oB,OAAO+jC,kBACdI,GAAiBl9C,EAAM0hC,EAAK3oB,OAAO+jC,gBAAgB,EAE9C98C,CACT,CAIAktE,iBAA4C,CAC1C,IAAMt1D,EAAW,KAAK4B,MAAM5B,SAC5B,OAAO,KAAKwrB,gBAAgB,KAAKjQ,cAAa,EAAIvb,EAAU,EAAI,CAClE,CAcAub,cAEErb,EACc,CACd,IAAI9X,EACAsZ,EAAmC,KAEjC,CAAErZ,KAAAA,GAAS,KAAKuZ,MACtB,OAAQvZ,EAAI,CACV,IAAA,IACE,OAAO,KAAK0tE,WAAU,EAExB,IAAA,IAIE,OAHA3tE,EAAO,KAAK0W,UAAS,EACrB,KAAKyS,KAAI,EAEL,KAAKsI,MAAK,EAAO,EACZ,KAAKm8C,mCACV5tE,CACF,EAGE,KAAKyxB,MAAK,EAAU,EAClB,KAAKvf,YAAW,IACX,KAAK27D,gBAAgB7tE,CAAkC,EAEvD,KAAKgX,WAAWhX,EAAM,QAAQ,GAGvC,KAAK2Y,MAAM7I,EAAO5F,kBAAmB,KAAKsP,MAAMC,eAAe,EACxD,KAAKzC,WAAWhX,EAAM,QAAQ,GAGzC,IAAA,IACEA,OAAAA,EAAO,KAAK0W,UAAS,EACrB,KAAKyS,KAAI,EACF,KAAKnS,WAAWhX,EAAM,gBAAgB,EAE/C,IAAA,IACE,OAAO,KAAK8tE,QAAQ,KAAKp3D,UAAW,EAAE,EAAK,EAG7C,IAAA,IACA,IAAA,IACE,YAAKgvC,WAAU,EACR,KAAKvzC,mBAAmB,KAAKqH,MAAMhM,KAAK,EAGjD,IAAA,KACE,OAAO,KAAKyF,oBAAoB,KAAKuG,MAAMhM,KAAK,EAElD,IAAA,KACE,OAAO,KAAKiF,mBAAmB,KAAK+G,MAAMhM,KAAK,EAEjD,IAAA,KACE,OAAO,KAAKwF,mBAAmB,KAAKwG,MAAMhM,KAAK,EAEjD,IAAA,IACE,OAAO,KAAK0F,iBAAgB,EAE9B,IAAA,IACE,OAAO,KAAKC,oBAAoB,EAAI,EACtC,IAAA,IACE,OAAO,KAAKA,oBAAoB,EAAK,EAEvC,IAAA,IAAgB,CACd,IAAM+vB,EAAa,KAAK1pB,MAAMilC,mBAAqB,KAAKjlC,MAAM5b,MAC9D,OAAO,KAAKqlC,mCAAmCC,CAAU,CAC3D,CAEA,IAAA,GACE,OAAO,KAAKzE,eAAc,EAEL,GACL,GACd3mB,CACF,EAEF,IAAA,GACE,OAAO,KAAKm1C,gBAAe,EAET,GACD,GACfn1C,CACF,EAEF,IAAA,IACE,OAAO,KAAKi2D,4BAA2B,EAEzC,IAAA,IACEz0D,EAAa,KAAK00D,gBAAe,EAEnC,IAAA,IACE,OAAO,KAAK9P,WACV,KAAK6E,oBACHzpD,EACA,KAAK5C,UAAS,CAChB,EACA,EACF,EAEF,IAAA,IACE,OAAO,KAAKu3D,oBAAmB,EAEjC,IAAA,IACA,IAAA,IACE,OAAO,KAAKnU,cAAc,EAAK,EAIjC,IAAA,IAAqB,CACnB95D,EAAO,KAAK0W,UAAS,EACrB,KAAKyS,KAAI,EACTnpB,EAAK4R,OAAS,KACd,IAAMmH,EAAU/Y,EAAK+Y,OAAS,KAAKm0D,gBAAe,EAClD,GAAIn0D,EAAO9Y,OAAS,mBAClB,OAAO,KAAK+W,WAAWhX,EAAM,gBAAgB,EAE7C,MAAM,KAAK2Y,MAAM7I,EAAO/F,gBAAiBgP,CAAM,CAEnD,CAEA,IAAA,KAOE,YAAKJ,MAAM7I,EAAOlI,oBAAqB,KAAK4R,MAAM5B,SAAU,CAC1D7Z,eAAgB,KAAKyb,MAAMhM,KAC7B,CAAC,EACM,KAAKmI,iBAAgB,EAG9B,IAAA,IACE,OAAO,KAAKu4D,kCAAiC,GAAY,GAAG,EAG9D,IAAA,IACE,OAAO,KAAKA,kCAAiC,GAAgB,GAAG,EAGlE,IAAA,IACA,IAAA,IACE,OAAO,KAAKC,oBAAoB,MAAM,EAGxC,IAAA,IACA,IAAA,IACA,IAAA,IAAc,CACZ,IAAMC,EAAe,KAAKx4D,gBACxB,mBACA,UACF,EAEA,GAAIw4D,EACF,OAAO,KAAKD,oBAAoBC,CAAY,EAE9C,KAAKppE,WAAU,EACf,KACF,CAEA,IAAA,IAAY,CACV,IAAMqpE,EAAc,KAAKpwC,MAAM+mB,YAAY,KAAK/d,eAAc,CAAE,EAE9Djf,GAAkBqmD,CAAW,GAC7BA,IAAW,GAEX,KAAKnnB,gBAAgB,CAAC,MAAO,OAAQ,YAAY,CAAC,EAElD,KAAKliD,WAAU,EAEjB,KACF,CAEA,QACqC,CACjC,GAAI/E,IAAI,IACN,OAAO,KAAK4S,oBAAoB,KAAK2G,MAAMhM,KAAK,EAC3C,GAAIvN,IAAI,GAAuBA,IAAI,EACxC,OAAO,KAAKw+B,eACV,KAAKjlB,MAAMvZ,OAAI,EAAkD,EAAA,EAC9C,GACL,EAChB,EACK,GAAIA,IAAI,GAAqBA,IAAI,EACtC,OAAO,KAAKgtD,gBACV,KAAKzzC,MAAMvZ,OAAI,EAA4C,EAAA,EAC3C,GACD,EACjB,CAEJ,CAEA,GAAIgmB,GAAkBhmB,CAAI,EAAG,CAC3B,GACE,KAAK4yB,aAAY,GAAW,GAC5B,KAAK6wB,wBAAyB,IAAA,IAE9B,OAAO,KAAK4qB,sBAAqB,EAEnC,IAAMprC,EAAa,KAAK1pB,MAAMilC,mBAAqB,KAAKjlC,MAAM5b,MACxD68B,EAAc,KAAKjhB,MAAMihB,YACzB1kB,EAAK,KAAK8b,gBAAe,EAE/B,GACE,CAAC4I,GACD1kB,EAAG9P,OAAS,SACZ,CAAC,KAAKqzB,mBAAkB,EACxB,CACA,GAAM,CAAEr5B,KAAAA,GAAS,KAAKuZ,MACtB,GAAIvZ,IAAI,GACN,YAAKo+C,kCAAkCtoC,CAAE,EACzC,KAAKoT,KAAI,EACF,KAAKolD,6BACV,KAAKh7D,gBAAgBwC,CAAE,CACzB,EACK,GAAIkQ,GAAkBhmB,CAAI,EAI/B,OAAI,KAAK86B,kBAAmB,IAAA,GAInB,KAAKyzC,6BACV,KAAKj7D,gBAAgBwC,CAAE,CACzB,EAIOA,EAEJ,GAAI9V,IAAI,GACb,YAAKo+C,kCAAkCtoC,CAAE,EAClC,KAAK+3D,QAAQ,KAAKv6D,gBAAgBwC,CAAE,EAAG,EAAI,CAEtD,CAEA,OACEmtB,GACA,KAAKzR,MAAc,EAAA,GACnB,CAAC,KAAK6H,mBAAkB,GAExB,KAAKnQ,KAAI,EACF,KAAK4a,qBACV,KAAKxwB,gBAAgBwC,CAAE,EACvB,CAACA,CAAE,EACH,EACF,GAGKA,CACT,MACE,KAAK/Q,WAAU,CAErB,CACF,CAYAkpE,kCACEO,EACAC,EACc,CACd,IAAMN,EAAe,KAAKx4D,gBAAgB,mBAAoB,UAAU,EAExE,GAAIw4D,EAKF,YAAK50D,MAAMvZ,KAAOwuE,EAClB,KAAKj1D,MAAMhM,MAAQkhE,EAGnB,KAAKl1D,MAAM5K,MACX,KAAK4K,MAAM3b,MAGX,KAAK2b,MAAMnG,OAASrV,GAA+B,KAAKwb,MAAMnG,OAAQ,EAAE,EAEjE,KAAK86D,oBAAoBC,CAAY,EAE5C,KAAKppE,WAAU,CAEnB,CAQAmpE,oBAAoBC,EAAoC,CACtD,IAAMpuE,EAAO,KAAK0W,UAAS,EACrBkB,EAAW,KAAK4B,MAAM5B,SACtBooD,EAAY,KAAKxmD,MAAMvZ,KAG7B,YAAKkpB,KAAI,EAKF,KAAKwlD,qBAAqB3uE,EAAM4X,EAAUw2D,EAAcpO,CAAS,CAC1E,CAeA2O,qBAGE3uE,EACA4X,EACAw2D,EACApO,EACG,CACH,GACE,KAAK4O,gCAAgCR,EAAcx2D,EAAUooD,CAAS,EAKtE,OAAoCoO,IAAiB,QAC9C,KAAKS,wCAAuC,GAC/C,KAAKl2D,MAAM7I,EAAOnD,iBAAkBiL,CAAQ,EAK9C,KAAKk3D,uBAAsB,EAEpB,KAAK93D,WAAWhX,EAAM,gBAAgB,IAIxC,KAAK6uE,wCAAuC,GAC/C,KAAKl2D,MAAM7I,EAAO1C,uBAAwBwK,CAAQ,EAEpD,KAAKk3D,uBAAsB,EACpB,KAAK93D,WAAWhX,EAAM,+BAA+B,GAI9D,MAAM,KAAK2Y,MAAM7I,EAAOlD,2BAA4BgL,EAAU,CAC5D/K,MAAOma,GAAeg5C,CAAS,CACjC,CAAC,CAEL,CAWA4O,gCACER,EACAx2D,EACAooD,EACS,CACT,OAAQoO,EAAY,CAClB,IAAK,OACH,OAAO,KAAK32D,UAAU,CACpB,mBACA,CAEEstC,WAAY/9B,GAAeg5C,CAAS,CACrC,CAAA,CACF,EAEH,IAAK,QACH,OAAOA,IAAqB,GAC9B,QACE,MAAM,KAAKrnD,MAAM7I,EAAOpD,2BAA4BkL,CAAQ,CAChE,CACF,CAGA42D,6BAEExuE,EAC2B,CAG3B,KAAKmrD,UAAUrgC,MAAMkxB,GAAc,GAAM,KAAKmP,UAAUtP,QAAQ,CAAC,EACjE,IAAM/mC,EAAS,CAAC,KAAK+c,gBAAiB,CAAA,EACtC,YAAKs5B,UAAUpgC,KAAI,EACf,KAAK6+B,sBAAqB,GAC5B,KAAKjxC,MAAM7I,EAAOrK,0BAA2B,KAAK+T,MAAMukB,YAAW,CAAE,EAEvE,KAAK/M,OAAM,EAAS,EAEb,KAAK+S,qBAAqB/jC,EAAM8U,EAAQ,EAAI,CACrD,CAIAg5D,QAEE9tE,EACAyU,EACgB,CAChB,KAAK+vC,aAAa,eAAe,EAC7B/vC,GACF,KAAK+vC,aAAa,oBAAoB,EAExCxkD,EAAKwiC,MAAQ/tB,EACb,KAAK0U,KAAI,EACT,IAAM0hC,EAAY,KAAKrxC,MAAMqlC,OAC7B,YAAKrlC,MAAMqlC,OAAS,CAAA,EAChBpqC,GAGF,KAAK02C,UAAUrgC,MAAK,CAAsB,EAC1C9qB,EAAKyV,KAAO,KAAK0yD,WAAU,EAC3B,KAAKhd,UAAUpgC,KAAI,GAEnB/qB,EAAKyV,KAAO,KAAK0yD,WAAU,EAG7B,KAAK3uD,MAAMqlC,OAASgM,EACb,KAAK7zC,WAAWhX,EAAM,cAAc,CAC7C,CAGA2tE,YAAsB,CACpB,IAAM3tE,EAAO,KAAK0W,UAAS,EAC3B,YAAKyS,KAAI,EAEP,KAAKsI,MAAK,EAAU,GACpB,CAAC,KAAKzG,MAAMzU,kBACZ,EAAE,KAAKrE,YAAW,IAElB,KAAKyG,MAAM7I,EAAOvH,gBAAiBvI,CAAI,EAEvC,CAAC,KAAKgrB,MAAMd,YACZ,EAAE,KAAKhY,YAAW,KAElB,KAAKyG,MAAM7I,EAAOrG,gBAAiBzJ,CAAI,EAIvC,CAAC,KAAKyxB,MAAK,EAAU,GACrB,CAAC,KAAKA,MAAiB,CAAA,GACvB,CAAC,KAAKA,MAAK,EAAO,GAElB,KAAK9Y,MAAM7I,EAAOtF,iBAAkBxK,CAAI,EAGnC,KAAKgX,WAAWhX,EAAM,OAAO,CACtC,CAEA2V,kBAAkC,CAChC,IAAM3V,EAAO,KAAK0W,UAAS,EACrBX,EAAK,KAAKkhB,YAGdj5B,GAA+B,KAAKwb,MAAM5B,SAAU,CAAC,CACvD,EACM3R,EAAO,KAAKuT,MAAMhM,MACxB,YAAK2b,KAAI,EACTnpB,EAAK+V,GAAK,KAAKojB,iBAAiBpjB,EAAI9P,CAAI,EACjC,KAAK+Q,WAAWhX,EAAM,aAAa,CAC5C,CAEA+tE,6BAEyC,CACvC,IAAM/tE,EAAO,KAAK0W,UAAS,EAS3B,GAFA,KAAKyS,KAAI,EAEL,KAAKgiC,UAAUtP,UAAY,KAAKpqB,MAAY,EAAA,EAAG,CACjD,IAAMs9C,EAAO,KAAK51C,iBAChB,KAAK5lB,gBAA8BvT,CAAI,EACvC,UACF,EACA,YAAKmpB,KAAI,EAEL,KAAKsI,MAAK,GAAS,EACrB,KAAK+yB,aAAa,cAAc,EACtB,KAAK/sC,UAAU,cAAc,GAEvC,KAAKzS,WAAU,EAEV,KAAKgqE,kBACVhvE,EACA+uE,EACA,MACF,CACF,CACA,OAAO,KAAKE,cAAcjvE,CAAoC,CAChE,CAEAgvE,kBACEhvE,EACA+uE,EACA/f,EACgB,CAChBhvD,EAAK+uE,KAAOA,EAEZ,IAAMt0C,EAAc,KAAKjhB,MAAMihB,YAE/Bz6B,OAAAA,EAAKo4B,SAAW,KAAKvG,gBAAgB,EAAI,GAErC7xB,EAAKo4B,SAASnyB,OAAS+oD,GAAgBv0B,IACzC,KAAK9hB,MAAM7I,EAAO3F,wBAAyBnK,EAAKo4B,SAAU,CACxDhuB,OAAQ2kE,EAAK9oE,KACboE,sBAAuB2kD,CACzB,CAAC,EAGI,KAAKh4C,WAAWhX,EAAM,cAAc,CAC7C,CAIA4tE,mCAEE5tE,EACqC,CAGrC,GAFA,KAAKmpB,KAAI,EAEL,KAAK0J,aAAuB,GAAA,GAAK,KAAKA,aAAsB,EAAA,EAAG,CACjE,IAAMq8C,EAAW,KAAKr8C,aAAY,GAAW,EAE7C,YAAK2xB,aACH0qB,EAAW,qBAAuB,0BACpC,EACA,KAAK/lD,KAAI,EACRnpB,EAAoCygC,MAAQyuC,EACzC,SACA,QACG,KAAKrB,gBAAgB7tE,CAAkC,CAChE,KAAO,CACL,IAAM+V,EAAK,KAAKo5D,mBACd,KAAK57D,gBAA8BvT,CAAI,EACvC,SACA,KAAKwZ,MAAMC,eACb,EACA,OAAI,KAAKoZ,aAAY,GAAS,IACvB,KAAKlK,UACR,KAAKhQ,MAAM7I,EAAOzR,wBAAyB0X,CAAE,EAE/C,KAAKmmC,kBAAoB,IAEpB,KAAK8yB,kBAAkBhvE,EAAgC+V,EAAI,MAAM,CAC1E,CACF,CAEAmjB,mBACE1rB,EACAvN,EACAD,EACG,CACH,YAAKwpD,SAASxpD,EAAM,WAAYwN,CAAK,EACrC,KAAKg8C,SACHxpD,EACA,MACA,KAAKi+B,MAAM6G,MAAM,KAAKtI,kBAAkBx8B,EAAKpC,KAAK,EAAG,KAAK4b,MAAM3b,GAAG,CACrE,EACAmC,EAAKwN,MAAQA,EACb,KAAK2b,KAAI,EACF,KAAKnS,WAAchX,EAAMC,CAAI,CACtC,CAEA8S,aAA+BvF,EAAYvN,EAAoB,CAC7D,IAAMD,EAAO,KAAK0W,UAAS,EAC3B,OAAO,KAAKwiB,mBAAmB1rB,EAAOvN,EAAMD,CAAI,CAClD,CAEAgT,mBAAmBxF,EAAY,CAC7B,OAAO,KAAKuF,aAA8BvF,EAAO,eAAe,CAClE,CAEAyF,oBAAoBzF,EAAY,CAC9B,OAAO,KAAKuF,aAA+BvF,EAAO,gBAAgB,CACpE,CAEAiF,mBAAmBjF,EAAY,CAc3B,OAAO,KAAKuF,aAA8BvF,EAAO,eAAe,CAEpE,CAGAqF,oBAAoBrF,EAAY,CAC9B,OAAO,KAAKuF,aAA+BvF,EAAO,gBAAgB,CACpE,CAEA2E,mBAAmB3E,EAIhB,CACD,IAAMxN,EAAO,KAAK0W,UAAS,EAC3B,YAAK8yC,SACHxpD,EACA,MACA,KAAKi+B,MAAM6G,MAAM,KAAKtI,kBAAkBx8B,EAAKpC,KAAK,EAAG,KAAK4b,MAAM3b,GAAG,CACrE,EACAmC,EAAKoS,QAAU5E,EAAM4E,QACrBpS,EAAKqS,MAAQ7E,EAAM6E,MACnB,KAAK8W,KAAI,EACF,KAAKnS,WAAWhX,EAAM,eAAe,CAC9C,CAEAmT,oBAAoB3F,EAAgB,CAClC,IAAMxN,EAAO,KAAK0W,UAAS,EAC3B1W,OAAAA,EAAKwN,MAAQA,EACb,KAAK2b,KAAI,EACF,KAAKnS,WAAWhX,EAAM,gBAAgB,CAC/C,CAEAkT,kBAAmB,CACjB,IAAMlT,EAAO,KAAK0W,UAAS,EAC3B,YAAKyS,KAAI,EACF,KAAKnS,WAAWhX,EAAM,aAAa,CAC5C,CAGAijC,mCAEEC,EACc,CACd,IAAMtrB,EAAW,KAAK4B,MAAM5B,SAExB2Y,EACJ,KAAKpH,KAAI,EACT,KAAKkiC,gBAAgBvgC,MAAMs+B,GAAmB,CAAA,EAE9C,IAAMyV,EAA4B,KAAKrlD,MAAMqhB,uBACvC0yC,EAAgC,KAAK/zD,MAAM+lC,2BACjD,KAAK/lC,MAAMqhB,uBAAyB,GACpC,KAAKrhB,MAAM+lC,2BAA6B,GAExC,IAAM6vB,EAAgB,KAAK51D,MAAM5B,SAC3BymB,EAKA,CAAA,EACAvmB,EAAsB,IAAI6zC,GAC5B/yB,EAAQ,GACRy2C,EACAC,EAEJ,KAAO,CAAC,KAAK79C,MAAK,EAAU,GAAG,CAC7B,GAAImH,EACFA,EAAQ,WAER,KAAK5H,OAEHlZ,GAAAA,EAAoB0yC,wBAA0B,KAC1C,KACA1yC,EAAoB0yC,qBAC1B,EACI,KAAK/4B,MAAK,EAAU,EAAG,CACzB69C,EAAwB,KAAK91D,MAAM5B,SACnC,KACF,CAGF,GAAI,KAAK6Z,MAAK,EAAY,EAAG,CAC3B,IAAM89C,EAAqB,KAAK/1D,MAAM5B,SAMtC,GALAy3D,EAAiB,KAAK71D,MAAM5B,SAC5BymB,EAASvhB,KACP,KAAK2f,eAAe,KAAKqwB,iBAAkB,EAAEyiB,CAAkB,CACjE,EAEI,CAAC,KAAKjiB,oBAAmB,EAA2B,EACtD,KAEJ,MACEjvB,EAASvhB,KACP,KAAK0yD,qCAEH13D,GAAAA,EACA,KAAK2kB,cACP,CACF,CAEJ,CAEA,IAAMgzC,EAAc,KAAKj2D,MAAMmB,cAC/B,KAAKqW,OAAM,EAAU,EAErB,KAAKxX,MAAMqhB,uBAAyBgkC,EACpC,KAAKrlD,MAAM+lC,2BAA6BguB,EAExC,IAAImC,EAAY,KAAKz4C,YAAuCrf,CAAQ,EACpE,OACEsrB,GACA,KAAKN,iBAAiBvE,CAAQ,IAC7BqxC,EAAY,KAAK/sC,WAAW+sC,CAAS,IAEtC,KAAKhkB,0BAA0B5zC,CAAmB,EAClD,KAAKuzC,gBAAgBnC,kBAAiB,EACtC,KAAKmC,gBAAgBtgC,KAAI,EACzB,KAAKgZ,qBAAqB2rC,EAAWrxC,EAAU,EAAK,EAE7CqxC,IAET,KAAKrkB,gBAAgBtgC,KAAI,EAEpBsT,EAASzkB,QACZ,KAAK5U,WAAW,KAAKwU,MAAMC,eAAe,EAExC61D,GAAuB,KAAKtqE,WAAWsqE,CAAqB,EAC5DD,GAAgB,KAAKrqE,WAAWqqE,CAAc,EAClD,KAAKllB,sBAAsBryC,EAAqB,EAAI,EAEpD,KAAK80C,qBAAqBvuB,EAAoC,EAAI,EAC9DA,EAASzkB,OAAS,GACpB2W,EAAM,KAAK0G,YAAkCm4C,CAAa,EAC1D7+C,EAAI22C,YAAc7oC,EAElB,KAAKrnB,WAAWuZ,EAAK,oBAAoB,EACzC,KAAK7V,iBAAiB6V,EAAKk/C,CAAW,GAEtCl/C,EAAM8N,EAAS,CAAC,EAGX,KAAKsxC,gBACV/3D,EAEA2Y,CACF,EACF,CAEAo/C,gBAAgB/3D,EAAoBpE,EAAwC,CAC1E,GAAI,EAAE,KAAKtB,YAAW,MACpB,YAAKs3C,SAASh2C,EAAY,gBAAiB,EAAI,EAC/C,KAAKg2C,SAASh2C,EAAY,aAAcoE,EAASna,KAAK,EAEtD,KAAK6gD,wBACH9qC,EACAoE,EAASna,MACT,KAAK+b,MAAMmB,cAAcld,KAC3B,EAEO+V,EAGT,IAAMo8D,EACJ,KAAK34C,YAAuCrf,CAAQ,EACtDg4D,OAAAA,EAAgBp8D,WAAaA,EACtB,KAAKwD,WAAW44D,EAAiB,yBAAyB,CACnE,CAGAhtC,iBAAiB9tB,EAAgC,CAC/C,MAAO,CAAC,KAAKwkB,mBAAkB,CACjC,CAEAqJ,WACE3iC,EAC+C,CAC/C,GAAI,KAAKqxB,IAAG,EAAS,EACnB,OAAOrxB,CAEX,CAEAy8B,eACEz8B,EAEA4X,EACmD,CACnD,OAAO5X,CACT,CAEAiuE,qBAAoE,CAClE,IAAMjuE,EAAO,KAAK0W,UAAS,EAE3B,GADA,KAAKyS,KAAI,EACL,KAAKsI,MAAK,EAAO,EAAG,CAEtB,IAAMs9C,EAAO,KAAK51C,iBAChB,KAAK5lB,gBAA8BvT,CAAI,EACvC,KACF,EACA,KAAKmpB,KAAI,EACT,IAAM0mD,EAAW,KAAKb,kBACpBhvE,EACA+uE,EACA,QACF,EAEA,OAAK,KAAK/jD,MAAMZ,gBACd,KAAKzR,MAAM7I,EAAOzG,oBAAqBwmE,CAAQ,EAG1CA,CACT,CAEA,OAAO,KAAKC,SAAS9vE,CAA+B,CACtD,CAQA8vE,SAAuB9vE,EAAgD,CAGrE,GAFA,KAAK6jC,eAAe7jC,CAAI,EAEpB,KAAKqxB,IAAG,EAAU,EAAG,CACvB,IAAMla,EAAO,KAAK44D,cAAa,EAAU,EACzC,KAAKzxC,iBAAiBnnB,CAAI,EAE1BnX,EAAKiZ,UAAY9B,CACnB,MACEnX,EAAKiZ,UAAY,CAAA,EAGnB,OAAO,KAAKjC,WAAWhX,EAAM,eAAe,CAC9C,CAEA6jC,eAA6B7jC,EAAqC,CAChE,IAAMsjE,EAAW,KAAK7xC,MAAK,EAAW,EAChC1Y,EAAS,KAAKm0D,gBAAe,EACnCltE,EAAK+Y,OAASA,EAEZuqD,IACCvqD,EAAO9Y,OAAS,UAAY8Y,EAAO9Y,OAAS,qBAE7C,KAAK0Y,MAAM7I,EAAOvM,2BAA4BwV,CAAM,CAExD,CAIAi3D,qBAAqBC,EAAsC,CACzD,GAAM,CAAEryE,MAAAA,EAAOga,SAAAA,EAAU/Z,IAAAA,EAAK2P,MAAAA,GAAU,KAAKgM,MACvC02D,EAAYtyE,EAAQ,EACpBuyE,EAAO,KAAKl5C,YAChBj5B,GAA+B4Z,EAAU,CAAC,CAC5C,EACIpK,IAAU,OACPyiE,GACH,KAAKt3D,MACH7I,EAAOzL,8BAEPrG,GACE,KAAKwb,MAAMulC,8BACX,CACF,CACF,GAIJ,IAAMqxB,EAAS,KAAK3+C,MAAK,EAAgB,EACnC4+C,EAAYD,EAAS,GAAK,GAC1BE,EAAUzyE,EAAMwyE,EACtBF,EAAK3iE,MAAQ,CACXqG,IAAK,KAAKoqB,MAAM6G,MAAMorC,EAAWI,CAAO,EAAEtqB,QAAQ,SAAU;CAAI,EAChEuqB,OAAQ/iE,IAAU,KAAO,KAAOA,EAAMs3B,MAAM,EAAGurC,CAAS,GAE1DF,EAAKK,KAAOJ,EACZ,KAAKjnD,KAAI,EACT,IAAMyiD,EAAe,KAAK50D,WAAWm5D,EAAM,iBAAiB,EAC5D,YAAKz1D,iBACHkxD,EACA5tE,GAA+B,KAAKwb,MAAMmB,cAAe01D,CAAS,CACpE,EACOzE,CACT,CAGA9R,cAA4BmW,EAAsC,CAChE,IAAMjwE,EAAO,KAAK0W,UAAS,EACvB+5D,EAAS,KAAKT,qBAAqBC,CAAQ,EACzCS,EAAS,CAACD,CAAM,EAChBE,EAAgB,CAAA,EACtB,KAAO,CAACF,EAAOD,MACbG,EAAc7zD,KAAK,KAAKi9C,0BAA2B,CAAA,EACnD,KAAKrT,yBAAwB,EAC7BgqB,EAAO5zD,KAAM2zD,EAAS,KAAKT,qBAAqBC,CAAQ,CAAE,EAI5DjwE,OAAAA,EAAKknE,YAAcyJ,EACnB3wE,EAAK0wE,OAASA,EACP,KAAK15D,WAAWhX,EAAM,iBAAiB,CAChD,CAGA+5D,2BAAiE,CAC/D,OAAO,KAAKzoC,gBAAe,CAC7B,CAsBA27B,gBAEEvuB,EACA7mB,EACA0yD,EACAzyD,EACG,CACCyyD,GACF,KAAK/lB,aAAa,gBAAgB,EAEpC,IAAM+oB,EAAgC,KAAK/zD,MAAM+lC,2BACjD,KAAK/lC,MAAM+lC,2BAA6B,GACxC,IAAIirB,EAAW,GACX5xC,EAAQ,GACN54B,EAAO,KAAK0W,UAAS,EAO3B,IAHA1W,EAAKs3B,WAAa,CAAA,EAClB,KAAKnO,KAAI,EAEF,CAAC,KAAKsI,MAAMiN,CAAK,GAAG,CACzB,GAAI9F,EACFA,EAAQ,WAER,KAAK5H,OAAM,EAAS,EAChB,KAAKS,MAAMiN,CAAK,EAAG,CACrB,KAAK8uC,4BAA4BxtE,CAAI,EACrC,KACF,CAGF,IAAI2X,EACAE,EACFF,EAAO,KAAK+1C,qBAAoB,GAEhC/1C,EAAO,KAAKk+C,wBAAwB/9C,CAAmB,EACvD0yD,EAAW,KAAKF,WACd3yD,EACA4yD,EACAC,EACA1yD,CACF,GAIAyyD,GACA,CAAC,KAAK51D,iBAAiBgD,CAAI,GAC3BA,EAAK1X,OAAS,iBAEd,KAAK0Y,MAAM7I,EAAO1K,sBAAuBuS,CAAI,EAKzCA,EAAKZ,WACP,KAAKyyC,SAAS7xC,EAAM,YAAa,EAAI,EAKzC3X,EAAKs3B,WAAWxa,KAAKnF,CAAI,CAC3B,CAEA,KAAKwR,KAAI,EAET,KAAK3P,MAAM+lC,2BAA6BguB,EACxC,IAAIttE,EAAO,mBACX,OAAI4X,EACF5X,EAAO,gBACEsqE,IACTtqE,EAAO,oBAGF,KAAK+W,WAAWhX,EAAMC,CAAI,CACnC,CAEAutE,4BAA4BxtE,EAA4B,CACtD,KAAKwpD,SAASxpD,EAAM,gBAAiB,KAAKwZ,MAAMC,gBAAgBhc,KAAK,EACrE,KAAK+rD,SAASxpD,EAAM,mBAAoB,KAAKwZ,MAAMC,gBAAiB,EAAK,CAC3E,CAKAm3D,yBACEj5D,EAC6C,CAC7C,MACE,CAACA,EAAKb,UACNa,EAAKhR,IAAI1G,OAAS,eACjB,KAAK0qD,sBAAqB,GACzB,KAAKl5B,MAAK,CAAY,GACtB,KAAKA,MAAK,EAAQ,EAExB,CAGAokC,wBAEE/9C,EACkC,CAClC,IAAIwB,EAAa,CAAA,EACjB,GAAI,KAAKmY,MAAK,EAAM,EAOlB,IANI,KAAKha,UAAU,YAAY,GAC7B,KAAKkB,MAAM7I,EAAOvF,6BAA8B,KAAKiP,MAAM5B,QAAQ,EAK9D,KAAK6Z,MAAK,EAAM,GACrBnY,EAAWwD,KAAK,KAAKywC,eAAgB,CAAA,EAIzC,IAAM51C,EAAO,KAAKjB,UAAS,EACvBjC,EAAU,GACVmrB,EAAa,GACbhoB,EAEJ,GAAI,KAAK6Z,MAAK,EAAY,EACxB,OAAInY,EAAWM,QAAQ,KAAK5U,WAAU,EAC/B,KAAK6nD,YAAW,EAGrBvzC,EAAWM,SACbjC,EAAK2B,WAAaA,EAClBA,EAAa,CAAA,GAGf3B,EAAK9C,OAAS,GAEViD,IACFF,EAAW,KAAK4B,MAAM5B,UAGxB,IAAIvB,EAAc,KAAKgb,IAAG,EAAQ,EAClC,KAAKqO,gCAAgC/nB,CAAI,EACzC,IAAM8iB,EAAc,KAAKjhB,MAAMihB,YAG/B,GAFA,KAAKkzB,kBAAkBh2C,EAAMG,CAAmB,EAE5C,CAACzB,GAAe,CAACokB,GAAe,KAAKm2C,yBAAyBj5D,CAAI,EAAG,CACvE,GAAM,CAAEhR,IAAAA,CAAK,EAAGgR,EACVk5D,EAAUlqE,EAAIV,KAGhB4qE,IAAY,SAAW,CAAC,KAAKjnB,sBAAqB,IACpDn1C,EAAU,GACV,KAAK4pC,kCAAkC13C,CAAG,EAC1C0P,EAAc,KAAKgb,IAAG,EAAQ,EAC9B,KAAKs8B,kBAAkBh2C,CAAI,IAIzBk5D,IAAY,OAASA,IAAY,SACnCjxC,EAAa,GACb,KAAKye,kCAAkC13C,CAAG,EAC1CgR,EAAKtX,KAAOwwE,EACR,KAAKp/C,MAAK,EAAQ,IACpBpb,EAAc,GACd,KAAKsC,MAAM7I,EAAO1P,oBAAqB,KAAKoZ,MAAMukB,YAAW,EAAI,CAC/D19B,KAAMwwE,CACR,CAAC,EACD,KAAK1nD,KAAI,GAEX,KAAKwkC,kBAAkBh2C,CAAI,EAE/B,CAEA,OAAO,KAAKgoB,kBACVhoB,EACAC,EACAvB,EACA5B,EACA,GACAmrB,EACA9nB,CACF,CACF,CAEA0qD,kCACE3tD,EACQ,CACR,OAAOA,EAAOxU,OAAS,MAAQ,EAAI,CACrC,CAGAuU,6BAA6BC,EAAwC,CACnE,OAAOA,EAAOC,MAChB,CAIA2qB,wBAAwB5qB,EAA8C,CAAA,IAAAi8D,EACpE,IAAMz4C,EAAa,KAAKmqC,kCAAkC3tD,CAAM,EAC1DC,EAAS,KAAKF,6BAA6BC,CAAM,EAEnDC,EAAO8E,SAAWye,GACpB,KAAK1f,MACH9D,EAAOxU,OAAS,MAAQyP,EAAOjP,eAAiBiP,EAAOhP,eACvD+T,CACF,EAIAA,EAAOxU,OAAS,SAChBywE,EAAAh8D,EAAOA,EAAO8E,OAAS,CAAC,IAAC,KAAA,OAAzBk3D,EAA2B7wE,QAAS,eAEpC,KAAK0Y,MAAM7I,EAAO/O,uBAAwB8T,CAAM,CAEpD,CAGAk8D,kBAEEp5D,EACAtB,EACA5B,EACAoD,EACA+nB,EACmC,CACnC,GAAIA,EAAY,CAEd,IAAMoxC,EAAe,KAAK56D,YACxBuB,EAGAtB,EACc,GACM,GACpB,GACA,cACF,EACA,YAAKopB,wBAAwBuxC,CAAY,EAClCA,CACT,CAEA,GAAIv8D,GAAW4B,GAAe,KAAKob,MAAe,EAAA,EAChD,OAAI5Z,GAAW,KAAK7S,WAAU,EAC9B2S,EAAKtX,KAAO,SACZsX,EAAK9C,OAAS,GACP,KAAKuB,YACVuB,EACAtB,EACA5B,EACoB,GACpB,GACA,cACF,CAEJ,CAIAiD,oBAEEC,EACAC,EACAC,EACAC,EACqC,CAGrC,GAFAH,EAAKZ,UAAY,GAEb,KAAKsa,IAAG,EAAS,EACnB1Z,OAAAA,EAAKnK,MAAQqK,EACT,KAAKioB,kBAAkB,KAAKtmB,MAAM5B,QAAQ,EAC1C,KAAK43D,qCAEH13D,EAAAA,CACF,EAEG,KAAKC,qBAAqBJ,CAAI,EAGvC,GAAI,CAACA,EAAKb,UAAYa,EAAKhR,IAAI1G,OAAS,aAAc,CAOpD,GAFA,KAAKmhC,kBAAkBzpB,EAAKhR,IAAIV,KAAM0R,EAAKhR,IAAI6H,IAAI5Q,MAAO,GAAM,EAAK,EAEjEia,EACFF,EAAKnK,MAAQ,KAAKsyB,kBAChBloB,EACA,KAAK4C,gBAAgB7C,EAAKhR,GAAG,CAC/B,UACS,KAAK8qB,MAAK,EAAM,EAAG,CAC5B,IAAM44B,EAAqB,KAAK7wC,MAAM5B,SAClCE,GAAuB,KACrBA,EAAoBuyC,qBAAuB,OAC7CvyC,EAAoBuyC,mBAAqBA,GAG3C,KAAK1xC,MAAM7I,EAAO9L,4BAA6BqmD,CAAkB,EAEnE1yC,EAAKnK,MAAQ,KAAKsyB,kBAChBloB,EACA,KAAK4C,gBAAgB7C,EAAKhR,GAAG,CAC/B,CACF,MACEgR,EAAKnK,MAAQ,KAAKgN,gBAAgB7C,EAAKhR,GAAG,EAE5CgR,OAAAA,EAAKZ,UAAY,GAEV,KAAKgB,qBAAqBJ,CAAI,CACvC,CACF,CAEAI,qBAAqB/X,EAAgC,CACnD,OAAO,KAAKgX,WAAWhX,EAAM,gBAAgB,CAC/C,CAEA2/B,kBAEEhoB,EACAC,EACAvB,EACA5B,EACAoD,EACA+nB,EACA9nB,EACG,CACH,IAAM9X,EAAQ,KAAK+wE,kBACjBp5D,EACAtB,EACA5B,EACAoD,EACA+nB,CACF,GACE,KAAKloB,oBACHC,EACAC,EACAC,EACAC,CACF,EAEF,OAAK9X,GAAM,KAAKgF,WAAU,EAEnBhF,CACT,CAKA2tD,kBAEEh2C,EAGAG,EACM,CACN,GAAI,KAAKuZ,IAAG,CAAY,EACrB1Z,EAAuCb,SAAW,GACnDa,EAAKhR,IAAM,KAAKk1B,wBAAuB,EACvC,KAAK7K,OAAM,CAAY,MAClB,CAEL,GAAM,CAAE/wB,KAAAA,EAAMuN,MAAAA,GAAU,KAAKgM,MACzB7S,EAEJ,GAAIwf,GAA2BlmB,CAAI,EACjC0G,EAAM,KAAKkrB,gBAAgB,EAAI,MAE/B,QAAQ5xB,EAAI,CACV,IAAA,KACE0G,EAAM,KAAKsM,oBAAoBzF,CAAK,EACpC,MACF,IAAA,KACE7G,EAAM,KAAKqM,mBAAmBxF,CAAK,EACnC,MACF,IAAA,KACE7G,EAAM,KAAK8L,mBAAmBjF,CAAK,EACnC,MACF,IAAA,KAAqB,CAEnB,IAAM+8C,EAAgB,KAAK/wC,MAAM5B,SAC7BE,GAAuB,KACrBA,EAAoByyC,gBAAkB,OACxCzyC,EAAoByyC,cAAgBA,GAGtC,KAAK5xC,MAAM7I,EAAOvG,uBAAwBghD,CAAa,EAEzD5jD,EAAM,KAAKgP,iBAAgB,EAC3B,KACF,CACA,QACE,GAAqC1V,IAAI,IAAiB,CACxD0G,EAAM,KAAKkM,oBAAoBrF,CAAK,EACpC,KACF,CAEA,KAAKxI,WAAU,CACnB,CAED2S,EAAahR,IAAMA,EAChB1G,IAAI,MAEN0X,EAAKb,SAAW,GAEpB,CACF,CAIAtC,aAAaxU,EAAsCyU,EAAwB,CACzEzU,EAAK+V,GAAK,KACV/V,EAAKixE,UAAY,GACjBjxE,EAAKwiC,MAAQ/tB,CACf,CAIA2B,YAEEpW,EACAqW,EACA5B,EACA6B,EACAC,EACAtW,EACAuW,EAAwB,GACrB,CACH,KAAKhC,aAAaxU,EAAMyU,CAAO,EAC/BzU,EAAKixE,UAAY56D,EACjB,KAAK2U,MAAMF,MACTN,KAEGhU,EAAY,IAAqB,IACjCD,EAAgB,GAA4B,EACjD,EACA,KAAK40C,UAAUrgC,MAAMkxB,GAAcvnC,EAASzU,EAAKixE,SAAS,CAAC,EAC3D,KAAK3vC,oBAAoBthC,EAAMsW,CAAa,EAC5C,IAAMs1D,EAAe,KAAKzxC,2BAA2Bn6B,EAAMC,EAAM,EAAI,EACrE,YAAKkrD,UAAUpgC,KAAI,EACnB,KAAKC,MAAMD,KAAI,EAER6gD,CACT,CAKAntC,eAEEC,EACAC,EACAC,EACA9mB,EACuC,CACnC8mB,GACF,KAAK4lB,aAAa,gBAAgB,EAEpC,IAAM+oB,EAAgC,KAAK/zD,MAAM+lC,2BACjD,KAAK/lC,MAAM+lC,2BAA6B,GACxC,IAAMv/C,EAAO,KAAK0W,UAAS,EAC3B,YAAKyS,KAAI,EACTnpB,EAAK6+B,SAAW,KAAKkxC,cACnBrxC,EACiB,CAACE,EAClB9mB,EAEA9X,CACF,EACA,KAAKwZ,MAAM+lC,2BAA6BguB,EACjC,KAAKv2D,WACVhX,EACA4+B,EAAU,kBAAoB,iBAChC,CACF,CAKAmF,qBAEE/jC,EACA8U,EAOAL,EACA4nB,EAC2B,CAC3B,KAAKrR,MAAMF,MAAMN,GAAoC,EACrD,IAAInY,EAAQ2pC,GAAcvnC,EAAS,EAAK,EAIpC,CAAC,KAAKgd,MAAe,CAAA,GAAK,KAAK05B,UAAUpP,QAC3C1pC,GAAK,GAEP,KAAK84C,UAAUrgC,MAAMzY,CAAK,EAC1B,KAAKmC,aAAaxU,EAAMyU,CAAO,EAC/B,IAAMoqD,EAA4B,KAAKrlD,MAAMqhB,uBAE7C,OAAI/lB,IACF,KAAK0E,MAAMqhB,uBAAyB,GACpC,KAAKgI,2BAA2B7iC,EAAM8U,EAAQunB,CAAgB,GAEhE,KAAK7iB,MAAMqhB,uBAAyB,GACpC,KAAK5kB,kBAAkBjW,EAAM,EAAI,EAEjC,KAAKmrD,UAAUpgC,KAAI,EACnB,KAAKC,MAAMD,KAAI,EACf,KAAKvR,MAAMqhB,uBAAyBgkC,EAE7B,KAAK7nD,WAAWhX,EAAM,yBAAyB,CACxD,CAEA6iC,2BACE7iC,EACA8U,EAOAunB,EACM,CACN,KAAKD,iBAAiBtnB,EAAQunB,EAAkB,EAAK,EACrDr8B,EAAK8U,OAASA,CAChB,CAEAqlB,2BAMEn6B,EAAiBC,EAAiBkW,EAAoB,GAAU,CAEhE,YAAKF,kBAAkBjW,EAAM,GAAOmW,CAAQ,EACrC,KAAKa,WAAWhX,EAAMC,CAAI,CACnC,CAGAgW,kBAEEjW,EACAkW,EACAC,EAAoB,GACd,CACN,IAAM+6D,EAAeh7D,GAAmB,CAAC,KAAKub,MAAK,CAAU,EAG7D,GAFA,KAAK45B,gBAAgBvgC,MAAMw+B,GAAoB,CAAA,EAE3C4nB,EAEDlxE,EAA2CyV,KAC1C,KAAKkmB,iBAAgB,EACvB,KAAKW,YAAYt8B,EAAM,GAAOkW,EAAiB,EAAK,MAC/C,CACL,IAAM2sD,EAAY,KAAKrpD,MAAM6O,OAGvBwiC,EAAY,KAAKrxC,MAAMqlC,OAC7B,KAAKrlC,MAAMqlC,OAAS,CAAA,EAIpB,KAAKsM,UAAUrgC,MACb,KAAKqgC,UAAUxP,aAAc,EAAA,CAC/B,EACA37C,EAAKyV,KAAO,KAAK0yD,WACf,GACA,GAECgJ,GAAoC,CACnC,IAAMC,EAAY,CAAC,KAAKC,kBAAkBrxE,EAAK8U,MAAM,EAEjDq8D,GAA0BC,GAE5B,KAAKz4D,MACH7I,EAAO7M,8BAENjD,EAAKK,OAAS,UAAYL,EAAKK,OAAS,gBAErCL,EAAK2G,IAEL3G,EAAK2G,IAAI6H,IAAI3Q,IACbmC,CACN,EAGF,IAAMgjC,EAAoB,CAAC6/B,GAAa,KAAKrpD,MAAM6O,OAInD,KAAKiU,YACHt8B,EACA,CAAC,KAAKwZ,MAAM6O,QAAU,CAACnS,GAAmB,CAACC,GAAY,CAACi7D,EACxDl7D,EACA8sB,CACF,EAGI,KAAKxpB,MAAM6O,QAAUroB,EAAK+V,IAC5B,KAAKi4C,gBACHhuD,EAAK+V,GAAE,GAEPitB,CACF,CAEJ,CACF,EACA,KAAKmoB,UAAUpgC,KAAI,EACnB,KAAKvR,MAAMqlC,OAASgM,CACtB,CACA,KAAKQ,gBAAgBtgC,KAAI,CAC3B,CAEAo0C,kBAAkBn/D,EAAkD,CAClE,OAAOA,EAAKC,OAAS,YACvB,CAEAoxE,kBACEv8D,EACS,CACT,QAASiT,EAAI,EAAGuzB,EAAMxmC,EAAO8E,OAAQmO,EAAIuzB,EAAKvzB,IAC5C,GAAI,CAAC,KAAKo3C,kBAAkBrqD,EAAOiT,CAAC,CAAC,EAAG,MAAO,GAEjD,MAAO,EACT,CAEAuU,YACEt8B,EACA8iC,EACAC,EACAC,EAA6B,GACvB,CACN,IAAM6qB,EAAe,CAAC/qB,GAAmB,IAAIx2B,IAOvCglE,EAAmB,CAAErxE,KAAM,oBACjC,QAAW25B,KAAS55B,EAAK8U,OACvB,KAAK84C,UACHh0B,EACA03C,EAAgB,EAEhBzjB,EACA7qB,CACF,CAEJ,CAQA+sC,cAEErxC,EACA0uB,EACAt1C,EACAw1D,EACyB,CACzB,IAAMjgB,EAAgC,CAAA,EAClCz0B,EAAQ,GAEZ,KAAO,CAAC,KAAKvH,IAAIqN,CAAK,GAAG,CACvB,GAAI9F,EACFA,EAAQ,WAER,KAAK5H,OAAM,EAAS,EAChB,KAAKS,MAAMiN,CAAK,EAAG,CACjB4uC,GACF,KAAKE,4BAA4BF,CAAY,EAE/C,KAAKnkD,KAAI,EACT,KACF,CAGFkkC,EAAKvwC,KAAK,KAAK2wD,kBAAkB/uC,EAAO0uB,EAAYt1C,CAAmB,CAAC,CAC1E,CACA,OAAOu1C,CACT,CAgBAogB,kBAEE/uC,EACA0uB,EACAt1C,EACAu1D,EAOO,CACP,IAAI5gB,EACJ,GAAI,KAAKh7B,MAAK,EAAS,EAChB27B,GACH,KAAKz0C,MAAM7I,EAAOpG,gBAAiB,KAAK8P,MAAMukB,YAAW,EAAI,CAC3D/4B,WAAY,GACd,CAAC,EAEHynD,EAAM,aACG,KAAKh7B,MAAK,EAAY,EAAG,CAClC,IAAM89C,EAAqB,KAAK/1D,MAAM5B,SAEtC60C,EAAM,KAAKhwB,eACT,KAAKowB,YAAY/0C,CAAmB,EACpCy3D,CACF,CACD,SAAU,KAAK99C,MAAK,EAAY,EAAG,CAClC,KAAK+yB,aAAa,oBAAoB,EACjC6oB,GACH,KAAK10D,MAAM7I,EAAOjH,8BAA+B,KAAK2Q,MAAM5B,QAAQ,EAEtE,IAAM5X,EAAO,KAAK0W,UAAS,EAC3B,KAAKyS,KAAI,EACTsjC,EAAM,KAAKz1C,WAAWhX,EAAM,qBAAqB,CACnD,MACEysD,EAAM,KAAK+iB,qCACT9wC,EACA5mB,EACA,KAAK2kB,cACP,EAEF,OAAOgwB,CACT,CAQA56B,gBAAgBmD,EAAiC,CAC/C,IAAMh1B,EAAO,KAAK0W,UAAS,EACrBzQ,EAAO,KAAKijE,oBAAoBl0C,CAAO,EAE7C,OAAO,KAAKmE,iBAAiBn5B,EAAMiG,CAAI,CACzC,CAEAkzB,iBAAiBn5B,EAA4BiG,EAA4B,CACvEjG,OAAAA,EAAKiG,KAAOA,EACZjG,EAAKwO,IAAIzQ,eAAiBkI,EAEnB,KAAK+Q,WAAWhX,EAAM,YAAY,CAC3C,CAEAmvE,mBACEnvE,EACAiG,EACAoN,EACc,CACdrT,OAAAA,EAAKiG,KAAOA,EACZjG,EAAKwO,IAAIzQ,eAAiBkI,EAEnB,KAAKwN,aAAazT,EAAM,aAAcqT,CAAM,CACrD,CAEA61D,oBAAoBl0C,EAA2B,CAC7C,IAAI/uB,EAEE,CAAE2R,SAAAA,EAAU3X,KAAAA,GAAS,KAAKuZ,MAE5B2M,GAA2BlmB,CAAI,EACjCgG,EAAO,KAAKuT,MAAMhM,MAElB,KAAKxI,WAAU,EAGjB,IAAM0hB,EAAiBR,GAAkCjmB,CAAI,EAE7D,OAAI+0B,EAGEtO,GACF,KAAKk0B,aAAY,GAAQ,EAG3B,KAAKxZ,kBAAkBn7B,EAAM2R,EAAU8O,EAAgB,EAAK,EAG9D,KAAKyC,KAAI,EAEFljB,CACT,CAEAm7B,kBACE1Y,EACA9Q,EACA0oD,EACAloD,EACM,CAON,GALIsQ,EAAK9O,OAAS,IAKd,CAAC0P,GAAkBZ,CAAI,EACzB,OAGF,GAAI43C,GAAiBt3C,GAAUN,CAAI,EAAG,CACpC,KAAK/P,MAAM7I,EAAO7G,kBAAmB2O,EAAU,CAC7C1O,QAASwf,CACX,CAAC,EACD,MACF,CAQA,IANsB,KAAKlP,MAAM6O,OAE7BjQ,EACE2Q,GACAH,GAHFH,IAKaC,EAAM,KAAKC,QAAQ,EAAG,CACrC,KAAKhQ,MAAM7I,EAAOtG,uBAAwBoO,EAAU,CAClDrT,aAAcmkB,CAChB,CAAC,EACD,MACF,SAAWA,IAAS,SAClB,GAAI,KAAKyiC,UAAUtP,SAAU,CAC3B,KAAKljC,MAAM7I,EAAO5E,uBAAwB0M,CAAQ,EAClD,MACF,UACS8Q,IAAS,QAAS,CAC3B,GAAI,KAAKyiC,UAAUvP,SAAU,CAC3B,KAAKjjC,MAAM7I,EAAOtP,uBAAwBoX,CAAQ,EAClD,MACF,CAEA,GAAI,KAAKoT,MAAMT,cAAe,CAC5B,KAAK5R,MAAM7I,EAAOrP,oCAAqCmX,CAAQ,EAC/D,MACF,CAEA,KAAKyzC,gBAAgBpC,gCAAgCrxC,CAAQ,CAC/D,SAAW8Q,IAAS,aACd,KAAKsC,MAAMV,gCAAiC,CAC9C,KAAK3R,MAAM7I,EAAOxP,iBAAkBsX,CAAQ,EAC5C,MACF,CAEJ,CAIA40D,sBAAgC,CAC9B,IAAM+E,EAAiB,KAAKpmB,UAAUvP,SAEtC,OAAI21B,GAAkB,CAAC,KAAKvmD,MAAMhB,aAChC,KAAKxQ,MAAMgmC,iBAAmB,IAGzB+xB,CACT,CAIA9E,WAAyB70D,EAAuC,CAC9D,IAAM5X,EAAO,KAAKi3B,YAA+Brf,CAAQ,EAEzD,YAAKyzC,gBAAgBvC,gCACnBh5C,EAAOpP,+BACPV,CACF,EAEI,KAAKqxB,IAAG,EAAQ,GAClB,KAAK1Y,MAAM7I,EAAOzI,kBAAmBrH,CAAI,EAIzC,CAAC,KAAKgrB,MAAMhB,YACZ,EAAE,KAAK9X,YAAW,KAEd,KAAKi5D,8BAA6B,EACpC,KAAKhvB,4BAA8B,GAEnC,KAAKD,kBAAoB,IAIxB,KAAK1iC,MAAM8lC,YACdt/C,EAAKmP,SAAW,KAAK+qD,gBAAgB,KAAM,EAAI,GAG1C,KAAKljD,WAAWhX,EAAM,iBAAiB,CAChD,CAEAmrE,+BAAyC,CACvC,GAAI,KAAKvhB,sBAAqB,EAAI,MAAO,GACzC,GAAM,CAAE3pD,KAAAA,GAAS,KAAKuZ,MACtB,OAGEvZ,IAAmB,IACnBA,IAAI,IACJA,IAAI,GACJknB,GAAgBlnB,CAAI,GACnBA,IAAI,KAAe,CAAC,KAAKuZ,MAAMihB,aAGhCx6B,IAAI,KACJA,IAAiB,IAGhB,KAAKwX,UAAU,aAAa,GAAKxX,IAAI,EAE1C,CAIA+qE,WAAyBpzD,EAAuC,CAC9D,IAAM5X,EAAO,KAAKi3B,YAA+Brf,CAAQ,EAEzD,KAAKyzC,gBAAgBvC,gCACnBh5C,EAAO3E,iBACPnL,CACF,EAEA,IAAIwxE,EAAa,GACbriE,EAAgC,KACpC,GAAI,CAAC,KAAKy6C,sBAAqB,EAE7B,OADA4nB,EAAa,KAAKngD,IAAG,EAAQ,EACrB,KAAK7X,MAAMvZ,KAAI,CACrB,IAAA,IACA,IAAA,KACA,IAAA,GACA,IAAA,IACA,IAAA,GACA,IAAA,GACA,IAAA,IACA,IAAA,IAIE,GAAI,CAACuxE,EAAY,MAEnB,QACEriE,EAAW,KAAKwsB,iBAAgB,CACpC,CAEF37B,OAAAA,EAAKyxE,SAAWD,EAChBxxE,EAAKmP,SAAWA,EACT,KAAK6H,WAAWhX,EAAM,iBAAiB,CAChD,CAGA6tE,gBAEE7tE,EACoB,CAIpB,GAHA,KAAKmpB,KAAI,EACTnpB,EAAKgZ,OAAS,KAAK6iB,wBAAuB,EAC1C77B,EAAKyR,QAAU,KACX,KAAK4f,IAAG,EAAS,GACnB,GAAK,KAAKI,MAAK,EAAU,EAevB,KAAK+7C,4BAA4BxtE,EAAKgZ,MAAM,UAd5ChZ,EAAKyR,QAAU,KAAKoqB,wBAAuB,EACvC,KAAKxK,IAAG,EAAS,IACnB,KAAKm8C,4BAA4BxtE,EAAKyR,OAAO,EACzC,CAAC,KAAKggB,MAAK,EAAU,GAAG,CAG1B,GACE,KAAKoK,wBAAuB,QACrB,KAAKxK,IAAY,EAAA,GAAK,CAAC,KAAKI,MAAK,EAAU,GAEpD,KAAK9Y,MAAM7I,EAAOxM,gBAAiBtD,CAAI,CACzC,EAMN,YAAKgxB,OAAM,EAAU,EACd,KAAKha,WAAWhX,EAAM,kBAAkB,CACjD,CAKAwrE,6BAA6BptC,EAAoB+hC,EAAwB,CAEnE,KAAK1oD,UAAU,CAAC,mBAAoB,CAAEqtC,SAAU,OAAS,CAAA,CAAC,GACxD1mB,EAAKn+B,OAAS,sBAGhB,KAAK0Y,MAAM7I,EAAO5C,+BAAgCizD,CAAY,CAGpE,CAEA+L,8BAA8BwF,EAAyB95D,EAAoB,CACzE,GAAI,KAAK+5D,kBAAkBD,CAAS,EAAG,CACrC,IAAMt+C,EAAW,KAAK6D,YAAoCrf,CAAQ,EAClEwb,OAAAA,EAASra,OAAS24D,EACX,KAAK16D,WAAWoc,EAAU,sBAAsB,CACzD,KAAO,CACL,IAAMA,EAAW,KAAK6D,YAAuCrf,CAAQ,EACrE,YAAKg6D,mCAAmCh6D,CAAQ,EAChDwb,EAAS5f,WAAak+D,EACf,KAAK16D,WAAWoc,EAAU,yBAAyB,CAC5D,CACF,CAEAu+C,kBAAkBn+D,EAAmC,CACnD,OAAQA,EAAWvT,KAAI,CACrB,IAAK,mBACH,MACE,CAACuT,EAAWsD,UAAY,KAAK66D,kBAAkBn+D,EAAW5B,MAAM,EAEpE,IAAK,aACH,MAAO,GACT,QACE,MAAO,EACX,CACF,CAMAggE,mCAAmCh6D,EAA0B,CAO3D,GAAI,KAAK6Z,MAAK,EAAS,EACrB,MAAM,KAAK9Y,MAAM7I,EAAO9C,oBAAqB,KAAKwM,MAAM5B,QAAQ,EAI7D,KAAKy0D,sCAAqC,GAC7C,KAAK1zD,MAAM7I,EAAO3C,oBAAqByK,CAAQ,CAEnD,CAQAk0D,wBAA2B+F,EAAsB,CAC/C,IAAMC,EAAyB,KAAKt4D,MAAMklC,aAC1C,KAAKllC,MAAMklC,aAAe,CAExBC,yBAA0B,EAE1BC,cAAe,MAGjB,GAAI,CACF,OAAOizB,EAAQ,CACjB,QAAC,CACC,KAAKr4D,MAAMklC,aAAeozB,CAC5B,CACF,CAUAC,mCAAsCF,EAAsB,CAG1D,GAGE,KAAKp6D,UAAU,CAAC,mBAAoB,CAAEqtC,SAAU,OAAS,CAAA,CAAC,EAC1D,CAEA,IAAMgtB,EAAyB,KAAKt4D,MAAMklC,aAC1C,KAAKllC,MAAMklC,aAAe,CAExBC,yBAA0B,EAE1BC,cAAe,MAGjB,GAAI,CACF,OAAOizB,EAAQ,CACjB,QAAC,CACC,KAAKr4D,MAAMklC,aAAeozB,CAC5B,CACF,KAKE,QAAOD,EAAQ,CAEnB,CAEA7F,+BAAkC6F,EAAsB,CACtD,IAAMG,EAA6B,KAAKx4D,MAAM8lC,UAC9C,KAAK9lC,MAAM8lC,UAAY,GAEvB,GAAI,CACF,OAAOuyB,EAAQ,CACjB,QAAC,CACC,KAAKr4D,MAAM8lC,UAAY0yB,CACzB,CACF,CAEAnH,WAAcgH,EAAsB,CAClC,IAAMx/D,EAAQ,KAAK84C,UAAUxP,aAAY,EAEzC,GADuBs2B,EAAqB,CAAC5/D,EACzB,CAClB,KAAK84C,UAAUrgC,MAAMzY,EAAK,CAAqB,EAC/C,GAAI,CACF,OAAOw/D,EAAQ,CACjB,QAAC,CACC,KAAK1mB,UAAUpgC,KAAI,CACrB,CACF,CACA,OAAO8mD,EAAQ,CACjB,CAEAlH,cAAiBkH,EAAsB,CACrC,IAAMx/D,EAAQ,KAAK84C,UAAUxP,aAAY,EAEzC,GADyBs2B,EAAqB5/D,EACxB,CACpB,KAAK84C,UAAUrgC,MAAMzY,EAAQ,EAAmB,EAChD,GAAI,CACF,OAAOw/D,EAAQ,CACjB,QAAC,CACC,KAAK1mB,UAAUpgC,KAAI,CACrB,CACF,CACA,OAAO8mD,EAAQ,CACjB,CAIA/C,wBAA+B,CAC7B,KAAKt1D,MAAMklC,aAAaE,cAAgB,CAC1C,CAEAiwB,yCAAmD,CACjD,OAAO,KAAKr1D,MAAMklC,aAAaC,0BAA4B,CAC7D,CAEA0tB,uCAAiD,CAC/C,OACE,KAAK7yD,MAAMklC,aAAaE,eAAiB,MACzC,KAAKplC,MAAMklC,aAAaE,eAAiB,CAE7C,CAEAqtB,wBAAsCV,EAA4B,CAChE,IAAM3zD,EAAW,KAAK4B,MAAM5B,SAE5B,KAAK4B,MAAMilC,iBAAmB,KAAKjlC,MAAM5b,MACzC,IAAM2vE,EAAgC,KAAK/zD,MAAM+lC,2BACjD,KAAK/lC,MAAM+lC,2BAA6B,GAExC,IAAM2yB,EAAM,KAAKhS,YACf,KAAKmL,yBAAwB,EAC7BzzD,EACA2zD,CACF,EAEA,YAAK/xD,MAAM+lC,2BAA6BguB,EAEjC2E,CACT,CAGA5D,uBAAwD,CACtD,KAAK9pB,aAAa,cAAc,EAChC,IAAMxkD,EAAO,KAAK0W,UAAS,EAC3B,KAAKyS,KAAI,EACJ,KAAKsI,MAAK,CAAU,GACvB,KAAKzsB,WAAW,KAAI,CAAW,EAGjC,IAAMq/B,EAAU,KAAKpN,YAAuB,KAAKzd,MAAMnG,MAAM,EAC7D,KAAK8V,KAAI,EAET,IAAMgpD,EAAe,KAAKvnB,iBAAiC,EAAI,EAC/D,KAAKU,mBAAkB,EAEvB,GAAI,CACFtrD,EAAKyV,KAAO,KAAK28D,aAAa/tC,EAAoB,EAAA,QAAQ,CAC5D,QAAC,CACC8tC,EAAY,CACd,CACA,OAAO,KAAKn7D,WAA+BhX,EAAM,kBAAkB,CACrE,CAEAktD,iBAEEp1C,EACe,CACf,KAAK0sC,aAAa,gBAAgB,EAClC,IAAMxkD,EAAO,KAAK0W,UAAS,EAC3B,OAAIoB,GAAuB,OACzBA,EAAoB2yC,eAAiB,KAAKjxC,MAAM5B,UAElD,KAAKuR,KAAI,EACF,KAAKnS,WAAWhX,EAAM,aAAa,CAC5C,CAEAwvE,qCAEE9wC,EACA5mB,EACA8pB,EACA,CACA,GAAI9pB,GAAuB,MAAQ,KAAK2Z,MAAc,EAAA,EAAG,CACvD,IAAM4gD,EAAW,KAAKt3C,kBAAiB,EACvC,GACEs3C,IAAQ,IACRA,KACG3zC,IAAK,EAEFA,GAAAA,IAAK,EAEuB,IAAA,KAClC2zC,IAAQ,GAIR,OAAO,KAAKvyC,kBACV,KAAKtmB,MAAM5B,SACX,KAAKs1C,iBAAiBp1C,CAAmB,CAC3C,CAEJ,CACA,OAAO,KAAK+jB,wBAAwB/jB,EAAqB8pB,CAAc,CACzE,CAGAlC,gCAEE/nB,EACM,CAAC,CACX,EC/sGM26D,GAAY,CAAEjyE,KAAI,CAA+B,EACrDkyE,GAAc,CAAElyE,KAAI,GAkBhBmyE,GAAgB,mBAEhBC,GAA4B,mBAUlC,SAASC,GACPzhE,EACAgtB,EACA7tB,EACA,CACA,QAAS2X,EAAI,EAAGA,EAAI9W,EAAO2I,OAAQmO,IAAK,CACtC,IAAMlb,EAAQoE,EAAO8W,CAAC,EAChB,CAAE9nB,KAAAA,CAAM,EAAG4M,EACjB,GAAI,OAAO5M,GAAS,SAAU,CACO,CACjC,GAAIA,IAAI,IAAqB,CAC3B,GAAM,CAAEuO,IAAAA,EAAK5Q,MAAAA,EAAO4P,MAAAA,EAAO3P,IAAAA,CAAK,EAAGgP,EAC7B8lE,EAAa/0E,EAAQ,EACrBg1E,EAAa50E,GAA+BwQ,EAAI5Q,MAAO,CAAC,EAC9DqT,EAAO8pC,OACLhzB,EACA,EACA,IAAIw6B,GAAM,CAERtiD,KAAMmnB,GAAgB,EAAQ,EAC9B5Z,MAAO,IACP5P,MAAOA,EACPC,IAAK80E,EACL/6D,SAAUpJ,EAAI5Q,MACdyV,OAAQu/D,CACV,CAAC,EACD,IAAIrwB,GAAM,CAERtiD,KAAMmnB,GAAgB,GAAQ,EAC9B5Z,MAAOA,EACP5P,MAAO+0E,EACP90E,IAAKA,EACL+Z,SAAUg7D,EACVv/D,OAAQ7E,EAAI3Q,GACb,CAAA,CACH,EACAkqB,IACA,QACF,CAEA,GAAIZ,GAAgBlnB,CAAI,EAAG,CACzB,GAAM,CAAEuO,IAAAA,EAAK5Q,MAAAA,EAAO4P,MAAAA,EAAO3P,IAAAA,CAAK,EAAGgP,EAC7BgmE,EAAej1E,EAAQ,EACvBk1E,EAAkB90E,GAA+BwQ,EAAI5Q,MAAO,CAAC,EAC/Dm1E,EACA90C,EAAMC,WAAWtgC,EAAQwS,CAAU,IAAC,GACtC2iE,EAAa,IAAIxwB,GAAM,CAErBtiD,KAAMmnB,GAAgB,EAAa,EACnC5Z,MAAO,IACP5P,MAAOA,EACPC,IAAKg1E,EACLj7D,SAAUpJ,EAAI5Q,MACdyV,OAAQy/D,CACV,CAAC,EAEDC,EAAa,IAAIxwB,GAAM,CAErBtiD,KAAMmnB,GAAgB,CAAU,EAChC5Z,MAAO,IACP5P,MAAOA,EACPC,IAAKg1E,EACLj7D,SAAUpJ,EAAI5Q,MACdyV,OAAQy/D,CACV,CAAC,EAEH,IAAIE,EACFC,EACAC,EACAC,EACElzE,IAAI,IAENgzE,EAAqBp1E,EAAM,EAC3Bq1E,EAAwBl1E,GAA+BwQ,EAAI3Q,IAAK,EAAE,EAClEm1E,EAAgBxlE,IAAU,KAAO,KAAOA,EAAMs3B,MAAM,EAAG,EAAE,EACzDquC,EAAW,IAAI5wB,GAAM,CAEnBtiD,KAAMmnB,GAAgB,EAAa,EACnC5Z,MAAO,IACP5P,MAAOq1E,EACPp1E,IAAKA,EACL+Z,SAAUs7D,EACV7/D,OAAQ7E,EAAI3Q,GACd,CAAC,IAGDo1E,EAAqBp1E,EAAM,EAC3Bq1E,EAAwBl1E,GAA+BwQ,EAAI3Q,IAAK,EAAE,EAClEm1E,EAAgBxlE,IAAU,KAAO,KAAOA,EAAMs3B,MAAM,EAAG,EAAE,EACzDquC,EAAW,IAAI5wB,GAAM,CAEnBtiD,KAAMmnB,GAAgB,EAAgB,EACtC5Z,MAAO,KACP5P,MAAOq1E,EACPp1E,IAAKA,EACL+Z,SAAUs7D,EACV7/D,OAAQ7E,EAAI3Q,GACd,CAAC,GAEHoT,EAAO8pC,OACLhzB,EACA,EACAgrD,EACA,IAAIxwB,GAAM,CAERtiD,KAAMmnB,GAAgB,EAAY,EAClC5Z,MAAOwlE,EACPp1E,MAAOi1E,EACPh1E,IAAKo1E,EACLr7D,SAAUk7D,EACVz/D,OAAQ6/D,EACT,EACDC,CACF,EACAprD,GAAK,EACL,QACF,CACF,CAEAlb,EAAM5M,KAAOmnB,GAAiBnnB,CAAI,CACpC,CACF,CACA,OAAOgR,CACT,CACe,IAAemiE,GAAf,cAAuC/I,EAAiB,CAQrEjmC,cAEEnyB,EACAoyB,EACQ,CACRpyB,OAAAA,EAAKoyB,QAAU,KAAK+tC,aAClB/tC,EAEA,IAAA,KAAK5yB,QAAQxB,aAAe,SAAW,SAAW,QACpD,EACAgC,EAAK4qC,SAAW,KAAKA,SAEjB,KAAK3qC,YAAW,MAClBD,EAAKhB,OAASyhE,GACZ,KAAKzhE,OACL,KAAKgtB,MACL,KAAK7tB,UACP,GAGK,KAAK4G,WAAW/E,EAAM,MAAM,CACrC,CAEAmgE,aAEE/tC,EACAxmC,EACAoS,EACW,CAIX,GAHAo0B,EAAQp0B,WAAaA,EACrBo0B,EAAQgvC,YAAc,KAAKC,0BAAyB,EACpD,KAAKp+D,eAAemvB,EAAS,GAAM,GAAMxmC,CAAG,EACxC,KAAK8qB,SAAU,CACjB,GACE,EAAE,KAAKzW,YAAW,KAClB,KAAK8Y,MAAMnB,iBAAiBs7B,KAAO,EAEnC,OAAW,CAAC1iD,EAAWqc,CAAE,IAAK1P,MAAMu4C,KAAK,KAAK38B,MAAMnB,gBAAgB,EAClE,KAAKlR,MAAM7I,EAAO/I,sBAAuB+X,EAAI,CAAErc,UAAAA,CAAU,CAAC,EAG9D,KAAK+mD,SAASnlB,EAAS,gBAAiB,KAAK7qB,MAAMgmC,gBAAgB,CACrE,CACA,IAAI+zB,EACJ,OAAI11E,IAAG,IAEL01E,EAAkB,KAAKv8D,WAAWqtB,EAAS,SAAS,EAGpDkvC,EAAkB,KAAK9/D,aACrB4wB,EACA,UACArmC,GAA+B,KAAKwb,MAAM5B,SAAU,EAAE,CACxD,EAEK27D,CACT,CAKAC,gBAAgBx/D,EAA0C,CACxD,IAAML,EAAY,KAAKC,WAAWI,EAAM,WAAW,EAE7Cy/D,EAAmB,KAAK7/D,WAC5BI,EAAKR,WACL,kBACF,EACMO,EAAkB0/D,EAAiBjmE,MACnCqG,EAAM,KAAKoqB,MAAM6G,MACrB,KAAKtI,kBAAkBi3C,EAAiB71E,KAAK,EAC7C,KAAK4+B,kBAAkBi3C,EAAiB51E,GAAG,CAC7C,EACM0yB,EAAOkjD,EAAiBjmE,MAAQqG,EAAIixB,MAAM,EAAG,EAAE,EAErD,YAAK0kB,SAASiqB,EAAkB,MAAO5/D,CAAG,EAC1C,KAAK21C,SAASiqB,EAAkB,WAAYljD,CAAG,EAC/C,KAAKi5B,SAASiqB,EAAkB,kBAAmB1/D,CAAe,EAElEJ,EAAUnG,MAAQimE,EAClB,OAAOz/D,EAAKR,WAELG,CACT,CAEA2/D,2BAA2D,CACzD,GAAI,CAAC,KAAK7hD,MAAK,EAAwB,EACrC,OAAO,KAGT,IAAMzxB,EAAO,KAAK0W,UAAS,EAC3B1W,OAAAA,EAAKwN,MAAQ,KAAKgM,MAAMhM,MACxB,KAAK2b,KAAI,EACF,KAAKnS,WAAWhX,EAAM,sBAAsB,CACrD,CAEAyzB,OAAiB,CACf,OAAK,KAAKZ,aAAY,GAAQ,EAGvB,KAAK6gD,wBAAuB,EAF1B,EAGX,CAEAtV,SAAmB,CACjB,GAAI,CAAC,KAAKvrC,aAAY,GAAU,EAC9B,MAAO,GAET,IAAM1J,EAAO,KAAKq6B,qBAAoB,EAChC1oB,EAAS,KAAKge,eAAe3vB,CAAI,EACvC,OAAO,KAAK2+C,0BAA0BhtC,EAAQ3R,CAAI,CACpD,CAEAwqD,YAAsB,CACpB,GAAI,CAAC,KAAK9gD,aAAY,GAAU,EAC9B,MAAO,GAET,IAAM1J,EAAO,KAAKq6B,qBAAoB,EAChC1oB,EAAS,KAAKge,eAAe3vB,CAAI,EACvC,GAAI,KAAKsgC,qBAAqBtgC,EAAM,IAAI,EAAG,CACzC,IAAMyqD,EAAkB,KAAKrwB,uBAAuBp6B,EAAO,CAAC,EAG5D,GACEyqD,IAAe,IACfA,IAAe,IAEfA,IAAe,GAEf,MAAO,EAEX,CACA,MACE,QAAK9L,0BAA0BhtC,EAAQ3R,CAAI,GAC3C,KAAKsgC,qBAAqBtgC,EAAM,MAAM,EAK1C,CAEAk1C,cAAwB,CACtB,GAAI,CAAC,KAAKxrC,aAAY,EAAU,EAC9B,MAAO,GAET,IAAI1J,EAAO,KAAKq6B,qBAAoB,EACpC,GAAI,KAAKiG,qBAAqBtgC,EAAM,OAAO,EAAG,CAC5CA,EAAO,KAAKs6B,0BAA0Bt6B,EAAO,CAAC,EAC9C,IAAM2R,EAAS,KAAKge,eAAe3vB,CAAI,EACvC,GAAI,KAAK2+C,0BAA0BhtC,EAAQ3R,CAAI,EAC7C,MAAO,EAEX,CACA,MAAO,EACT,CAEA2+C,0BAA0BvnC,EAAY3xB,EAAa,CACjD,GAAIoZ,GAAkBuY,CAAE,EAAG,CAEzB,GADAkyC,GAA0BnvB,UAAY10C,EAClC6jE,GAA0BxqD,KAAK,KAAKgW,KAAK,EAAG,CAG9C,IAAM41C,EAAQ,KAAK/6B,eAAe25B,GAA0BnvB,SAAS,EACrE,GAAI,CAACn7B,GAAiB0rD,CAAK,GAAKA,IAAK,GACnC,MAAO,EAEX,CACA,MAAO,EACT,KAAO,QAAItzC,IAAE,EAKf,CAEAuzC,uBAAuBvzC,EAAY,CACjC,OACEA,IAAE,IAAoCA,IAA+B,GAEzE,CAMAmzC,yBAAmC,CACjC,IAAMvqD,EAAO,KAAK8d,eAAc,EAC1BnM,EAAS,KAAKge,eAAe3vB,CAAI,EACvC,OACE,KAAK2qD,uBAAuBh5C,CAAM,GAClC,KAAKgtC,0BAA0BhtC,EAAQ3R,CAAI,CAE/C,CAOA4qD,4CAAsD,CACpD,IAAM5qD,EAAO,KAAKq6B,qBAAoB,EAChC1oB,EAAS,KAAKge,eAAe3vB,CAAI,EACvC,OACE2R,IAAmC,KACnC,KAAKgtC,0BAA0BhtC,EAAQ3R,CAAI,CAE/C,CAEA6qD,aAAuB,CACrB,OACG,KAAKhpD,MAAMrC,UAAY,CAAC,KAAKqC,MAAMlB,aACpC,CAAC,KAAKkB,MAAMN,mBAEhB,CAGAupD,iBAA8B,CAC5B,OAAO,KAAK75C,mBACV85C,EAMF,CACF,CAGAC,wBAAqC,CACnC,OAAO,KAAK/5C,mBACV85C,GAEG,CAAC,KAAKziE,QAAQH,QAAU,KAAKkI,MAAM6O,OAChC,EAAC,EAET,CACF,CAEA4/C,gDAEEmM,EAAgC,GAChC,CACA,IAAI/hE,EAAyB,EAC7B,OAAI,KAAKZ,QAAQH,QAAU,CAAC,KAAKkI,MAAM6O,SACrChW,GAAK,EACD+hE,IACF/hE,GAAK,IAGF,KAAK+nB,mBAAmB/nB,CAAK,CACtC,CASAgiE,gBAA6B,CAC3B,OAAO,KAAKj6C,mBAAkB,CAAiC,CACjE,CAIAA,mBAEE/nB,EAOyB,CACzB,IAAIiH,EAAmC,KAEvC,OAAI,KAAKmY,MAAK,EAAM,IAClBnY,EAAa,KAAK00D,gBAAgB,EAAI,GAEjC,KAAK/M,sBAAsB5uD,EAAOiH,CAAU,CACrD,CAEA2nD,sBAEE5uD,EACAiH,EACa,CACb,IAAMykD,EAAY,KAAKvkD,MAAMvZ,KACvBD,EAAO,KAAK0W,UAAS,EACrB49D,EAAmB,CAAC,EAAEjiE,EAAK,GAC3BkiE,EAA2B,CAAC,EAChCliE,EAAK,GAED+C,EAAW/C,EAAK,EAMtB,OAAQ0rD,EAAS,CACf,IAAA,IACE,OAAO,KAAKyW,4BAA4Bx0E,EAAoB,EAAI,EAClE,IAAA,IACE,OAAO,KAAKw0E,4BAA4Bx0E,EAAoB,EAAK,EACnE,IAAA,IACE,OAAO,KAAKy0E,uBAAuBz0E,CAAmC,EACxE,IAAA,IACE,OAAO,KAAK00E,sBAAsB10E,CAAkC,EACtE,IAAA,IACE,OAAO,KAAK20E,kBAAkB30E,CAA8B,EAC9D,IAAA,IACE,GAAI,KAAK+6B,kBAAiB,IAAE,GAAoB,MAChD,OAAKw5C,GACH,KAAK57D,MACH,KAAKa,MAAM6O,OACPvY,EAAOlE,eACP,KAAK6F,QAAQH,OACXxB,EAAO1H,qBACP0H,EAAO3H,eACb,KAAKqR,MAAM5B,QACb,EAEK,KAAKqmD,uBACVj+D,EACA,GACA,CAACs0E,GAAoBC,CACvB,EACF,IAAA,IACE,OAAKD,GAAkB,KAAKtvE,WAAU,EAC/B,KAAKk5D,WACV,KAAK6E,oBACHzpD,EACAtZ,CACF,EACA,EACF,EAEF,IAAA,IACE,OAAO,KAAK40E,iBAAiB50E,CAA6B,EAC5D,IAAA,IACE,OAAO,KAAK60E,qBAAqB70E,CAAiC,EACpE,IAAA,IACE,OAAO,KAAK80E,qBAAqB90E,CAAiC,EACpE,IAAA,IACE,OAAO,KAAK+0E,oBAAoB/0E,CAAgC,EAClE,IAAA,IACE,OAAO,KAAKg1E,kBAAkBh1E,CAA8B,EAE9D,IAAA,IAEE,GAAI,KAAKq+D,aAAY,EACnB,OAAK,KAAK2V,YAAW,EAETM,EAEA,KAAK9H,qBAAoB,GACnC,KAAK7zD,MAAM7I,EAAOnP,4BAA6BX,CAAI,EAFnD,KAAK2Y,MAAM7I,EAAO1G,6BAA8BpJ,CAAI,EAFpD,KAAK2Y,MAAM7I,EAAOjG,2BAA4B7J,CAAI,EAMpD,KAAKmpB,KAAI,EACF,KAAKg1C,kBACVn+D,EACA,aACF,EAEF,MACF,IAAA,KAEE,GACE,KAAKwZ,MAAMihB,aACX,CAAC,KAAKs5C,2CAA0C,EAEhD,MAEF,OAAK,KAAKC,YAAW,EAETM,GACV,KAAK37D,MAAM7I,EAAO1G,6BAA8B,KAAKoQ,MAAM5B,QAAQ,EAFnE,KAAKe,MAAM7I,EAAOjG,2BAA4B,KAAK2P,MAAM5B,QAAQ,EAI5D,KAAKumD,kBACVn+D,EACA,OACF,EACF,IAAA,KAAc,CACZ,GAAI,KAAKwZ,MAAMihB,YACb,MAIF,IAAMtR,EAAO,KAAK8d,eAAc,EAC1BnM,EAAS,KAAKge,eAAe3vB,CAAI,EACvC,GAAI2R,IAAM,KACJ,CAACw5C,GAAoB,KAAKzqB,sBAAuB,GAEnD,CAAC,KAAKie,0BAA0BhtC,EAAQ3R,CAAI,GAC5C2R,IAAM,KAEN,KAGN,CAEA,IAAA,IACOw5C,GACH,KAAK37D,MAAM7I,EAAO1G,6BAA8B,KAAKoQ,MAAM5B,QAAQ,EAIvE,IAAA,IAAc,CACZ,IAAMvX,EAAO,KAAKmZ,MAAMhM,MACxB,OAAO,KAAK2wD,kBACVn+D,EACAK,CACF,CACF,CACA,IAAA,IACE,OAAO,KAAK40E,oBAAoBj1E,CAAgC,EAClE,IAAA,IACE,OAAO,KAAKk1E,mBAAmBl1E,CAA+B,EAChE,IAAA,GACE,OAAO,KAAKmoE,WAAU,EACxB,IAAA,IACE,OAAO,KAAKgN,oBAAoBn1E,CAAgC,EAClE,IAAA,IAAiB,CACf,IAAMo1E,EAAoB,KAAKr6C,kBAAiB,EAChD,GACEq6C,IAAiB,IACjBA,IAAiB,GAEjB,KAEJ,CAEA,IAAA,IAAiB,CAEb,EAAE,KAAKljE,YAAW,IAClB,CAACkD,GAED,KAAKuD,MAAM7I,EAAO9G,uBAAwB,KAAKwQ,MAAM5B,QAAQ,EAG/D,KAAKuR,KAAI,EAET,IAAI5O,EACJ,OAAIwjD,IAAS,GACXxjD,EAAS,KAAK8Y,YAAYrzB,CAAmC,EAE7Dua,EAAS,KAAKlB,YACZrZ,EAKAsZ,CACF,EAGF,KAAKsjB,wBAAwBriB,CAAM,EAE5BA,CACT,CAEA,QACE,GAAI,KAAK86D,gBAAe,EACtB,OAAKf,GACH,KAAK37D,MACH7I,EAAOvP,sCACP,KAAKiZ,MAAM5B,QACb,EAEF,KAAKuR,KAAI,EACF,KAAK80C,uBACVj+D,EACA,GACA,CAACs0E,GAAoBC,CACvB,CAGN,CAOA,IAAMe,EAAY,KAAK97D,MAAMhM,MACvB+sB,EAAO,KAAKjJ,gBAAe,EAEjC,OACErL,GAAkB83C,CAAS,GAC3BxjC,EAAKt6B,OAAS,cACd,KAAKoxB,IAAG,EAAS,EAEV,KAAKkkD,sBACVv1E,EACAs1E,EACA/6C,EACAloB,CACF,EAEO,KAAKioB,yBACVt6B,EACAu6B,EACAjhB,CACF,CAEJ,CAEAsjB,wBAAwB58B,EAAoB,CAExC,EAAE,KAAKkS,YAAW,IAClB,CAAC,KAAKyW,UAEN,KAAKhQ,MAAM7I,EAAOvR,oBAAqByB,CAAI,CAE/C,CAEAw1E,+BAAyC,CACvC,OAAI,KAAK/9D,UAAU,mBAAmB,EAAU,GAE9C,KAAKA,UAAU,YAAY,GAC3B,KAAK7B,gBAAgB,aAAc,wBAAwB,IAAM,EAErE,CAQAmtD,oBACE0S,EACAC,EACAC,EACG,CACH,GAAIF,EAAiB,CAAA,IAAAG,GACnBA,EAAIF,EAAUp8D,aAAVs8D,MAAAA,EAAsBh8D,QAItB,OAAO,KAAKhE,gBACV,aACA,wBACF,GAAM,WAKN,KAAK+C,MACH7I,EAAOtO,4BACPk0E,EAAUp8D,WAAW,CAAC,CACxB,EAEFo8D,EAAUp8D,WAAWyjC,QAAQ,GAAG04B,CAAe,GAE/CC,EAAUp8D,WAAam8D,EAEzB,KAAK7+D,2BAA2B8+D,EAAWD,EAAgB,CAAC,CAAC,EACzDE,GAAY,KAAK/+D,2BAA2B++D,EAAYD,CAAS,CACvE,CACA,OAAOA,CACT,CAEAnT,yBAAmC,CACjC,OAAO,KAAK9wC,MAAK,EAAU,CAC7B,CAEAu8C,gBAA8B6H,EAAsC,CAClE,IAAMv8D,EAAa,CAAA,EACnB,GACEA,EAAWwD,KAAK,KAAKywC,eAAgB,CAAA,QAC9B,KAAK97B,MAAK,EAAM,GAEzB,GAAI,KAAKA,MAAK,EAAW,EAClBokD,GACH,KAAK7wE,WAAU,EAGZ,KAAKwwE,8BAA6B,GACrC,KAAK78D,MAAM7I,EAAOpO,qBAAsB,KAAK8X,MAAM5B,QAAQ,UAEpD,CAAC,KAAK2qD,wBAAuB,EACtC,MAAM,KAAK5pD,MAAM7I,EAAO3G,2BAA4B,KAAKqQ,MAAM5B,QAAQ,EAGzE,OAAO0B,CACT,CAEAi0C,gBAA0C,CACxC,KAAKrG,gBAAgB,CAAC,aAAc,mBAAmB,CAAC,EAExD,IAAMlnD,EAAO,KAAK0W,UAAS,EAG3B,GAFA,KAAKyS,KAAI,EAEL,KAAK1R,UAAU,YAAY,EAAG,CAChC,IAAMG,EAAW,KAAK4B,MAAM5B,SACxB2iB,EAEJ,GAAI,KAAK9I,MAAK,EAAU,EAAG,CACzB,IAAM7Z,EAAW,KAAK4B,MAAM5B,SAC5B,KAAKuR,KAAI,EACToR,EAAO,KAAKjJ,gBAAe,EAC3B,KAAKN,OAAM,EAAU,EACrBuJ,EAAO,KAAKo1C,gBAAgB/3D,EAAU2iB,CAAI,EAE1C,IAAMu7C,EAAiB,KAAKt8D,MAAM5B,SAClC5X,EAAKwT,WAAa,KAAK8uD,6BAA6B/nC,EAAM3iB,CAAQ,EAEhE,KAAKhC,gBAAgB,aAAc,wBAAwB,IACzD,IACF5V,EAAKwT,aAAe+mB,GAEpB,KAAK5hB,MACH7I,EAAOxO,qCACPw0E,CACF,CAEJ,KAAO,CAGL,IAFAv7C,EAAO,KAAK1I,gBAAgB,EAAK,EAE1B,KAAKR,IAAG,EAAO,GAAG,CACvB,IAAMrxB,EAAO,KAAKi3B,YAAgCrf,CAAQ,EAC1D5X,EAAK4R,OAAS2oB,EACV,KAAK9I,MAAK,GAAe,GAC3B,KAAKlZ,WAAWC,eACd,KAAKgB,MAAMhM,MACX,KAAKgM,MAAM5B,QACb,EACA5X,EAAKo4B,SAAW,KAAKziB,iBAAgB,GAErC3V,EAAKo4B,SAAW,KAAKvG,gBAAgB,EAAI,EAE3C7xB,EAAK8W,SAAW,GAChByjB,EAAO,KAAKvjB,WAAWhX,EAAM,kBAAkB,CACjD,CAEAA,EAAKwT,WAAa,KAAK8uD,6BAA6B/nC,EAAM3iB,CAAQ,CACpE,CACF,MACE5X,EAAKwT,WAAa,KAAKs5D,oBAAmB,EAE5C,OAAO,KAAK91D,WAAWhX,EAAM,WAAW,CAC1C,CAEAsiE,6BAEE/nC,EACA3iB,EACc,CACd,GAAI,KAAKyZ,IAAG,EAAU,EAAG,CACvB,IAAMrxB,EAAO,KAAKi3B,YAA8Brf,CAAQ,EACxD5X,OAAAA,EAAK+Y,OAASwhB,EACdv6B,EAAKiZ,UAAY,KAAKqqB,6BAA4B,EAClD,KAAKhF,iBAAiBt+B,EAAKiZ,SAAS,EAC7B,KAAKjC,WAAWhX,EAAM,gBAAgB,CAC/C,CAEA,OAAOu6B,CACT,CAUAi6C,4BACEx0E,EACAgoE,EACwC,CACxC,YAAK7+C,KAAI,EAEL,KAAK2gC,iBAAgB,EACvB9pD,EAAKyb,MAAQ,MAEbzb,EAAKyb,MAAQ,KAAKoW,gBAAe,EACjC,KAAKS,UAAS,GAGhB,KAAKy1C,oBAAoB/nE,EAAMgoE,CAAO,EAE/B,KAAKhxD,WACVhX,EACAgoE,EAAU,iBAAmB,mBAC/B,CACF,CAEAD,oBACE/nE,EACAgoE,EACA,CACA,IAAIjgD,EACJ,IAAKA,EAAI,EAAGA,EAAI,KAAKvO,MAAMqlC,OAAOjlC,OAAQ,EAAEmO,EAAG,CAC7C,IAAMguD,EAAM,KAAKv8D,MAAMqlC,OAAO92B,CAAC,EAC/B,IAAI/nB,EAAKyb,OAAS,MAAQs6D,EAAI9vE,OAASjG,EAAKyb,MAAMxV,QAC5C8vE,EAAI11E,MAAQ,OAAS2nE,GAAW+N,EAAI11E,OAAI,IAGxCL,EAAKyb,OAASusD,GAAS,KAE/B,CACA,GAAIjgD,IAAM,KAAKvO,MAAMqlC,OAAOjlC,OAAQ,CAClC,IAAM3Z,EAAO+nE,EAAU,iBAAmB,oBAC1C,KAAKrvD,MAAM7I,EAAO9M,qBAAsBhD,EAAM,CAAEC,KAAAA,CAAK,CAAC,CACxD,CACF,CAEAw0E,uBACEz0E,EACqB,CACrB,YAAKmpB,KAAI,EACT,KAAKmJ,UAAS,EACP,KAAKtb,WAAWhX,EAAM,mBAAmB,CAClD,CAEAg2E,uBAAkD,CAChD,KAAKhlD,OAAM,EAAU,EACrB,IAAMT,EAAM,KAAKe,gBAAe,EAChC,YAAKN,OAAM,EAAU,EACdT,CACT,CAGAmkD,sBAEE10E,EACoB,CACpB,YAAKmpB,KAAI,EACT,KAAK3P,MAAMqlC,OAAO/hC,KAAKw1D,EAAS,EAGhCtyE,EAAKyV,KAIH,KAAKs8D,mCAAmC,IAEtC,KAAKsC,eAAc,CACrB,EAEF,KAAK76D,MAAMqlC,OAAOv3B,IAAG,EAErB,KAAK0J,OAAM,EAAU,EACrBhxB,EAAKioB,KAAO,KAAK+tD,sBAAqB,EACtC,KAAK3kD,IAAG,EAAQ,EACT,KAAKra,WAAWhX,EAAM,kBAAkB,CACjD,CAUA20E,kBAEE30E,EACW,CACX,KAAKmpB,KAAI,EACT,KAAK3P,MAAMqlC,OAAO/hC,KAAKw1D,EAAS,EAEhC,IAAI2D,EAAU,KASd,GAPI,KAAKpjD,aAAsB,EAAA,GAAK,KAAK25C,qBAAoB,IAC3DyJ,EAAU,KAAKz8D,MAAM5B,SACrB,KAAKuR,KAAI,GAEX,KAAK6B,MAAMF,MAAK,CAAgB,EAChC,KAAKkG,OAAM,EAAU,EAEjB,KAAKS,MAAK,EAAQ,EACpB,OAAIwkD,IAAY,MACd,KAAKjxE,WAAWixE,CAAO,EAElB,KAAKC,SAASl2E,EAAgC,IAAI,EAG3D,IAAMm2E,EAAgB,KAAKtjD,aAAY,GAAQ,EAC/C,CACE,IAAMujD,EAAuB,KAAK/X,aAAY,EACxCgY,EACJD,GAAwB,KAAKzC,WAAU,EACnC2C,EACHH,GAAiB,KAAKzC,wBAAuB,GAC9C2C,EAEF,GAAI,KAAK5kD,MAAK,EAAQ,GAAK,KAAKA,MAAK,EAAU,GAAK6kD,EAAc,CAChE,IAAMC,EAAW,KAAK7/D,UAAS,EAC3BrW,EACA+1E,GACF/1E,EAAO,cACF,KAAKmsE,qBAAoB,GAC5B,KAAK7zD,MAAM7I,EAAOnP,4BAA6B,KAAK6Y,MAAM5B,QAAQ,EAEpE,KAAKuR,KAAI,GAET9oB,EAAO,KAAKmZ,MAAMhM,MAEpB,KAAK2b,KAAI,EACT,KAAKqtD,SAASD,EAAU,GAAMl2E,CAAI,EAClC,IAAMolC,EAAO,KAAKzuB,WAAWu/D,EAAU,qBAAqB,EAEtDE,EAAU,KAAKhlD,MAAK,EAAO,EAIjC,OAHIglD,GAAWJ,GACb,KAAK19D,MAAM7I,EAAOlN,WAAY6iC,CAAI,GAGjCgxC,GAAW,KAAK5jD,aAAmB,GAAA,IACpC4S,EAAKs7B,aAAannD,SAAW,EAEtB,KAAK88D,WAAW12E,EAA2BylC,EAAMwwC,CAAO,GAE7DA,IAAY,MACd,KAAKjxE,WAAWixE,CAAO,EAElB,KAAKC,SAASl2E,EAAgCylC,CAAI,EAC3D,CACF,CAIA,IAAMkxC,EAAkB,KAAK9jD,aAAY,EAAU,EAE7C/a,EAAsB,IAAI6zC,GAC1BlmB,EAAO,KAAKnU,gBAAgB,GAAMxZ,CAAmB,EACrD8+D,EAAU,KAAK/jD,aAAY,GAAO,EAoBxC,GAnBI+jD,IAEET,GACF,KAAKx9D,MAAM7I,EAAOhN,SAAU2iC,CAAI,EAKhCwwC,IAAY,MACZU,GACAlxC,EAAKxlC,OAAS,cAMd,KAAK0Y,MAAM7I,EAAOjN,WAAY4iC,CAAI,GAGlCmxC,GAAW,KAAKnlD,MAAK,EAAO,EAAG,CACjC,KAAKi6B,0BAA0B5zC,CAAmB,EAClD,KAAKO,aAAaotB,EAAkB,EAAI,EACxC,IAAMxlC,EAAO22E,EAAU,iBAAmB,iBAC1C,YAAKhpB,UAAUnoB,EAAM,CAAExlC,KAAAA,CAAK,CAAC,EACtB,KAAKy2E,WACV12E,EAEAylC,EACAwwC,CACF,CACF,MACE,KAAK9rB,sBAAsBryC,EAAqB,EAAI,EAEtD,OAAIm+D,IAAY,MACd,KAAKjxE,WAAWixE,CAAO,EAElB,KAAKC,SAASl2E,EAAgCylC,CAAI,CAC3D,CAGAw4B,uBAEEj+D,EACAyU,EACAoiE,EACuB,CACvB,YAAK1tD,KAAI,EACF,KAAK8lD,cACVjvE,EACA82E,GACGD,EAAoB,EAA0C,IAC9DpiE,EAAO,EAA6B,EACzC,CACF,CAGAmgE,iBAA+B50E,EAA6B,CAC1D,YAAKmpB,KAAI,EACTnpB,EAAKioB,KAAO,KAAK+tD,sBAAqB,EAGtCh2E,EAAKo7B,WAAa,KAAK6sC,gDAA+C,EACtEjoE,EAAK07B,UAAY,KAAKrK,IAAG,EAAS,EAC9B,KAAK42C,gDAAiD,EACtD,KACG,KAAKjxD,WAAWhX,EAAM,aAAa,CAC5C,CAEA60E,qBAAmC70E,EAAiC,CAClE,OAAK,KAAKmrD,UAAUrP,WAClB,KAAKnjC,MAAM7I,EAAO5M,cAAe,KAAKsW,MAAM5B,QAAQ,EAGtD,KAAKuR,KAAI,EAML,KAAK2gC,iBAAgB,EACvB9pD,EAAKmP,SAAW,MAEhBnP,EAAKmP,SAAW,KAAKmiB,gBAAe,EACpC,KAAKgB,UAAS,GAGT,KAAKtb,WAAWhX,EAAM,iBAAiB,CAChD,CAGA80E,qBAAmC90E,EAAiC,CAClE,KAAKmpB,KAAI,EACTnpB,EAAK+2E,aAAe,KAAKf,sBAAqB,EAC9C,IAAMgB,EAAqCh3E,EAAKg3E,MAAQ,CAAA,EACxD,KAAKhmD,OAAM,CAAU,EACrB,KAAKxX,MAAMqlC,OAAO/hC,KAAKy1D,EAAW,EAClC,KAAKvnD,MAAMF,MAAK,GAAiB,EAMjC,IAAImsD,EACJ,QAASC,EAAY,CAAC,KAAKzlD,MAAe,CAAA,GACxC,GAAI,KAAKA,MAAc,EAAA,GAAK,KAAKA,MAAiB,EAAA,EAAG,CACnD,IAAM0lD,EAAS,KAAK1lD,MAAK,EAAS,EAC9BwlD,GAAK,KAAKjgE,WAAWigE,EAAK,YAAY,EAE1CD,EAAMl6D,KAAMm6D,EAAM,KAAKvgE,UAA0B,CAAA,EACjDugE,EAAI77C,WAAa,CAAA,EACjB,KAAKjS,KAAI,EACLguD,EACFF,EAAIhvD,KAAO,KAAKqJ,gBAAe,GAE3B4lD,GACF,KAAKv+D,MACH7I,EAAO9I,yBACP,KAAKwS,MAAMC,eACb,EAEFy9D,EAAa,GACbD,EAAIhvD,KAAO,MAEb,KAAK+I,OAAM,EAAS,CACtB,MACMimD,EACFA,EAAI77C,WAAWte,KAAK,KAAKq3D,uBAAwB,CAAA,EAEjD,KAAKnvE,WAAU,EAIrB,YAAKgmB,MAAMD,KAAI,EACXksD,GAAK,KAAKjgE,WAAWigE,EAAK,YAAY,EAC1C,KAAK9tD,KAAI,EACT,KAAK3P,MAAMqlC,OAAOv3B,IAAG,EACd,KAAKtQ,WAAWhX,EAAM,iBAAiB,CAChD,CAEA+0E,oBAAkC/0E,EAAgC,CAChE,YAAKmpB,KAAI,EACL,KAAKygC,sBAAqB,GAC5B,KAAKjxC,MAAM7I,EAAO7I,kBAAmB,KAAKuS,MAAMmB,aAAa,EAE/D3a,EAAKmP,SAAW,KAAKmiB,gBAAe,EACpC,KAAKgB,UAAS,EACP,KAAKtb,WAAWhX,EAAM,gBAAgB,CAC/C,CAEA2iE,uBAA+C,CAC7C,IAAM/oC,EAAQ,KAAKyH,iBAAgB,EAEnC,YAAKrW,MAAMF,MACT,KAAKrZ,QAAQH,QAAUsoB,EAAM35B,OAAS,aAAY,EAAA,CAGpD,EACA,KAAK2tD,UACHh0B,EACA,CAAE35B,KAAM,aAAc,EAAC,CAEzB,EAEO25B,CACT,CAEAo7C,kBAEEh1E,EACgB,CAMhB,GALA,KAAKmpB,KAAI,EAETnpB,EAAKo3E,MAAQ,KAAKjP,WAAU,EAC5BnoE,EAAKq3E,QAAU,KAEX,KAAK5lD,MAAK,EAAU,EAAG,CACzB,IAAM6lD,EAAS,KAAK5gE,UAAS,EAC7B,KAAKyS,KAAI,EACL,KAAKsI,MAAK,EAAU,GACtB,KAAKT,OAAM,EAAU,EACrBsmD,EAAO19C,MAAQ,KAAK+oC,sBAAqB,EACzC,KAAK3xC,OAAM,EAAU,IAErBsmD,EAAO19C,MAAQ,KACf,KAAK5O,MAAMF,MAAK,CAAgB,GAIlCwsD,EAAO7hE,KAGL,KAAKs8D,mCAAmC,IAEtC,KAAK5J,WAAW,GAAO,EAAK,CAC9B,EAEF,KAAKn9C,MAAMD,KAAI,EACf/qB,EAAKq3E,QAAU,KAAKrgE,WAAWsgE,EAAQ,aAAa,CACtD,CAEAt3E,OAAAA,EAAKu3E,UAAY,KAAKlmD,IAAG,EAAY,EAAI,KAAK82C,WAAY,EAAG,KAEzD,CAACnoE,EAAKq3E,SAAW,CAACr3E,EAAKu3E,WACzB,KAAK5+D,MAAM7I,EAAO5I,iBAAkBlH,CAAI,EAGnC,KAAKgX,WAAWhX,EAAM,cAAc,CAC7C,CAIAm+D,kBAEEn+D,EACAK,EACAygE,EAAmC,GACZ,CACvB,YAAK33C,KAAI,EACT,KAAKqtD,SAASx2E,EAAM,GAAOK,EAAMygE,CAAuB,EACxD,KAAKxuC,UAAS,EACP,KAAKtb,WAAWhX,EAAM,qBAAqB,CACpD,CAGAi1E,oBAEEj1E,EACkB,CAClB,YAAKmpB,KAAI,EACTnpB,EAAKioB,KAAO,KAAK+tD,sBAAqB,EACtC,KAAKx8D,MAAMqlC,OAAO/hC,KAAKw1D,EAAS,EAGhCtyE,EAAKyV,KAIH,KAAKs8D,mCAAmC,IAEtC,KAAKsC,eAAc,CACrB,EAEF,KAAK76D,MAAMqlC,OAAOv3B,IAAG,EAEd,KAAKtQ,WAAWhX,EAAM,gBAAgB,CAC/C,CAEAk1E,mBAEEl1E,EACiB,CACjB,OAAI,KAAKwZ,MAAM6O,QACb,KAAK1P,MAAM7I,EAAO/D,WAAY,KAAKyN,MAAM5B,QAAQ,EAEnD,KAAKuR,KAAI,EACTnpB,EAAK4R,OAAS,KAAKokE,sBAAqB,EAGxCh2E,EAAKyV,KAKH,KAAKs8D,mCAAmC,IAEtC,KAAKsC,eAAc,CACrB,EAEK,KAAKr9D,WAAWhX,EAAM,eAAe,CAC9C,CAEAm1E,oBAAoBn1E,EAAkD,CACpE,YAAKmpB,KAAI,EACF,KAAKnS,WAAWhX,EAAM,gBAAgB,CAC/C,CAGAu1E,sBAEEv1E,EACAs1E,EACA/6C,EACAloB,EACoB,CACpB,QAAWoJ,KAAS,KAAKjC,MAAMqlC,OACzBpjC,EAAMxV,OAASqvE,GACjB,KAAK38D,MAAM7I,EAAOxK,mBAAoBi1B,EAAM,CAC1Ch1B,UAAW+vE,CACb,CAAC,EAIL,IAAMj1E,EAAOomB,GAAY,KAAKjN,MAAMvZ,IAAI,EAAC,EAErC,KAAKwxB,MAAK,EAAW,EAAC,EAEpB,KACN,QAAS1J,EAAI,KAAKvO,MAAMqlC,OAAOjlC,OAAS,EAAGmO,GAAK,EAAGA,IAAK,CACtD,IAAMtM,EAAQ,KAAKjC,MAAMqlC,OAAO92B,CAAC,EACjC,GAAItM,EAAM+7D,iBAAmBx3E,EAAKpC,MAChC6d,EAAM+7D,eAAiB,KAAKr0C,kBAAkB,KAAK3pB,MAAM5b,KAAK,EAC9D6d,EAAMpb,KAAOA,MAEb,MAEJ,CAEA,YAAKmZ,MAAMqlC,OAAO/hC,KAAK,CACrB7W,KAAMqvE,EACNj1E,KAAMA,EACNm3E,eAAgB,KAAKr0C,kBAAkB,KAAK3pB,MAAM5b,KAAK,CACzD,CAAC,EAEDoC,EAAKyV,KACHpD,EAAK,EACD,KAAK41D,gDAAgD,EAAI,EACzD,KAAKoM,eAAc,EAEzB,KAAK76D,MAAMqlC,OAAOv3B,IAAG,EACrBtnB,EAAKyb,MAAQ8e,EACN,KAAKvjB,WAAWhX,EAAM,kBAAkB,CACjD,CAEAs6B,yBACEt6B,EACAu6B,EAEAjhB,EACA,CACAtZ,OAAAA,EAAKwT,WAAa+mB,EAClB,KAAKjI,UAAS,EACP,KAAKtb,WAAWhX,EAAM,qBAAqB,CACpD,CAMAmoE,WAEEhzD,EAA2B,GAC3BizD,EAAiC,GACjC/yD,EACkB,CAClB,IAAMrV,EAAO,KAAK0W,UAAS,EAC3B,OAAIvB,GACF,KAAKqE,MAAMwlC,aAAa+E,MAAK,EAE/B,KAAK/yB,OAAM,CAAU,EACjBo3C,GACF,KAAKp9C,MAAMF,MAAK,CAAgB,EAElC,KAAK5V,eACHlV,EACAmV,EACA,GAEAE,EAAAA,CACF,EACI+yD,GACF,KAAKp9C,MAAMD,KAAI,EAEV,KAAK/T,WAAWhX,EAAM,gBAAgB,CAC/C,CAEA+U,iBAAiBf,EAAkD,CACjE,OACEA,EAAK/T,OAAS,uBACd+T,EAAKR,WAAWvT,OAAS,iBACzB,CAAC+T,EAAKR,WAAWM,MAAMmB,aAE3B,CAEAC,eAEElV,EACAmV,EACAC,EACAvX,EACAwX,EACM,CACN,IAAMI,EAAsCzV,EAAKyV,KAAO,CAAA,EAClDF,EAAkDvV,EAAKuV,WAC3D,CAAA,EACF,KAAKynD,4BACHvnD,EACAN,EAAkBI,EAAapF,OAC/BiF,EACAvX,EACAwX,CACF,CACF,CAKA2nD,4BAEEvnD,EACAF,EACAH,EACAvX,EACAwX,EACM,CACN,IAAMwtD,EAAY,KAAKrpD,MAAM6O,OACzB8oD,EAAyB,GACzBsG,EAAqB,GAEzB,KAAO,CAAC,KAAKhmD,MAAM5zB,CAAG,GAAG,CACvB,IAAMmW,EAAOoB,EACT,KAAK6+D,gBAAe,EACpB,KAAKE,uBAAsB,EAE/B,GAAI5+D,GAAc,CAACkiE,EAAoB,CACrC,GAAI,KAAK1iE,iBAAiBf,CAAI,EAAG,CAC/B,IAAML,EAAY,KAAK6/D,gBAAgBx/D,CAAI,EAC3CuB,EAAWuH,KAAKnJ,CAAS,EAGvB,CAACw9D,GACDx9D,EAAUnG,MAAMA,QAAU,eAE1B2jE,EAAyB,GACzB,KAAKttB,UAAU,EAAI,GAGrB,QACF,CACA4zB,EAAqB,GAErB,KAAKj+D,MAAMwlC,aAAa+E,MAAK,CAC/B,CACAtuC,EAAKqH,KAAK9I,CAAI,CAChB,CAEAqB,GAAiBqsB,KAAK,KAAMyvC,CAAsB,EAE7CtO,GACH,KAAKhf,UAAU,EAAK,EAGtB,KAAK16B,KAAI,CACX,CAMA+sD,SAEEl2E,EACAylC,EACgB,CAChBzlC,OAAAA,EAAKylC,KAAOA,EACZ,KAAKnT,UAAyB,EAAK,EACnCtyB,EAAKioB,KAAO,KAAKwJ,MAAK,EAAQ,EAAI,KAAO,KAAKH,gBAAe,EAC7D,KAAKgB,UAAyB,EAAK,EACnCtyB,EAAK0sE,OAAS,KAAKj7C,MAAK,EAAU,EAAI,KAAO,KAAKH,gBAAe,EACjE,KAAKN,OAAM,EAAU,EAGrBhxB,EAAKyV,KAIH,KAAKs8D,mCAAmC,IAEtC,KAAKsC,eAAc,CACrB,EAEF,KAAKrpD,MAAMD,KAAI,EACf,KAAKvR,MAAMqlC,OAAOv3B,IAAG,EAEd,KAAKtQ,WAAWhX,EAAM,cAAc,CAC7C,CAKA02E,WAEE12E,EACAylC,EACAwwC,EACW,CACX,IAAMQ,EAAU,KAAKhlD,MAAK,EAAO,EACjC,YAAKtI,KAAI,EAELstD,EACER,IAAY,MAAM,KAAKjxE,WAAWixE,CAAO,EAE7Cj2E,EAAK03E,MAAQzB,IAAY,KAIzBxwC,EAAKxlC,OAAS,uBACdwlC,EAAKs7B,aAAa,CAAC,EAAEt7B,MAAQ,OAC5B,CAACgxC,GACA,CAAC,KAAKhlE,QAAQH,QACd,KAAKkI,MAAM6O,QACXod,EAAKplC,OAAS,OACdolC,EAAKs7B,aAAa,CAAC,EAAEhrD,GAAG9V,OAAS,eAEnC,KAAK0Y,MAAM7I,EAAOnN,uBAAwB8iC,EAAM,CAC9CxlC,KAAMw2E,EAAU,iBAAmB,gBACrC,CAAC,EAGChxC,EAAKxlC,OAAS,qBAChB,KAAK0Y,MAAM7I,EAAOrL,WAAYghC,EAAM,CAClC/gC,SAAU,CAAEzE,KAAM,cAAe,CACnC,CAAC,EAGHD,EAAKo+B,KAAOqH,EACZzlC,EAAKi1B,MAAQwhD,EACT,KAAKnlD,gBAAe,EACpB,KAAKuK,wBAAuB,EAChC,KAAK7K,OAAM,EAAU,EAGrBhxB,EAAKyV,KAIH,KAAKs8D,mCAAmC,IAEtC,KAAKsC,eAAc,CACrB,EAEF,KAAKrpD,MAAMD,KAAI,EACf,KAAKvR,MAAMqlC,OAAOv3B,IAAG,EAEd,KAAKtQ,WAAWhX,EAAMy2E,EAAU,iBAAmB,gBAAgB,CAC5E,CAIAD,SAEEx2E,EACA23E,EACAt3E,EACAygE,EAAmC,GACJ,CAC/B,IAAMC,EAAwC/gE,EAAK+gE,aAAe,CAAA,EAElE,IADA/gE,EAAKK,KAAOA,IACH,CACP,IAAMmhC,EAAO,KAAK9qB,UAAS,EAgC3B,GA/BA,KAAK6qB,WAAWC,EAAMnhC,CAAI,EAC1BmhC,EAAKiE,KAAQ,KAAKpU,IAAG,EAAM,EAEvBsmD,EACE,KAAK7M,2BAA4B,EACjC,KAAKjvC,wBAAuB,EAH9B,KAKA2F,EAAKiE,OAAS,MAAQ,CAACq7B,IAEvBt/B,EAAKzrB,GAAG9V,OAAS,cACjB,EAAE03E,IAAU,KAAKlmD,MAAK,EAAO,GAAK,KAAKoB,aAAmB,GAAA,IAE1D,KAAKla,MACH7I,EAAOzO,8BACP,KAAKmY,MAAMmB,cACX,CACEta,KAAM,eACR,CACF,GAECA,IAAS,SAAWA,IAAS,SAAWA,IAAS,gBAClD,EAAE,KAAKoxB,MAAK,EAAO,GAAK,KAAKoB,aAAY,GAAO,IAEhD,KAAKla,MACH7I,EAAOzO,8BACP,KAAKmY,MAAMmB,cACX,CAAEta,KAAAA,CAAK,CACT,GAGJ0gE,EAAajkD,KAAK,KAAK9F,WAAWwqB,EAAM,oBAAoB,CAAC,EACzD,CAAC,KAAKnQ,IAAG,EAAS,EAAG,KAC3B,CACA,OAAOrxB,CACT,CAEAuhC,WAEEC,EACAnhC,EACM,CACN,IAAM0V,EAAK,KAAKsrB,iBAAgB,EAC5BhhC,IAAS,SAAWA,IAAS,eAC3B0V,EAAG9V,OAAS,gBAAkB8V,EAAG9V,OAAS,kBAC5C,KAAK0Y,MAAM7I,EAAOhF,kCAAmCiL,EAAGvH,IAAI5Q,KAAK,EAG/DmY,EAAG9V,OAAS,eACd,KAAK0Y,MAAM7I,EAAOhG,sBAAuBiM,EAAGvH,IAAI5Q,KAAK,EAGzD,KAAKgwD,UACH73C,EACA,CAAE9V,KAAM,oBAAqB,EAC7BI,IAAS,MAAK,EAAA,IAChB,EACAmhC,EAAKzrB,GAAKA,CACZ,CAGAw4D,6BAEEvuE,EACsB,CACtB,OAAO,KAAKivE,cAAcjvE,EAAI,CAAyB,CACzD,CAKAivE,cAEEjvE,EACAqS,EAAwB,EACrB,CACH,IAAMulE,EAAqBvlE,EAAK,EAC1BwlE,EAAgB,CAAC,EAAExlE,EAAK,GACxBi2D,EAAYuP,GAAiB,EAAExlE,EAAK,GACpCoC,EAAU,CAAC,EAAEpC,EAAK,GAExB,KAAKmC,aAAaxU,EAAMyU,CAAO,EAE3B,KAAKgd,MAAK,EAAQ,IAChBmmD,GACF,KAAKj/D,MACH7I,EAAO/M,kCACP,KAAKyW,MAAM5B,QACb,EAEF,KAAKuR,KAAI,EACTnpB,EAAKixE,UAAY,IAGf4G,IACF73E,EAAK+V,GAAK,KAAKsyD,gBAAgBC,CAAS,GAG1C,IAAMzJ,EAA4B,KAAKrlD,MAAMqhB,uBAC7C,YAAKrhB,MAAMqhB,uBAAyB,GACpC,KAAK7P,MAAMF,MAAK,GAAmB,EACnC,KAAKqgC,UAAUrgC,MAAMkxB,GAAcvnC,EAASzU,EAAKixE,SAAS,CAAC,EAEtD4G,IACH73E,EAAK+V,GAAK,KAAKsyD,gBAAe,GAGhC,KAAK/mC,oBAAoBthC,EAA0B,EAAK,EAKxD,KAAK+xE,mCAAmC,IAAM,CAE5C,KAAK53C,2BACHn6B,EACA63E,EAAgB,sBAAwB,oBAC1C,CACF,CAAC,EAED,KAAK1sB,UAAUpgC,KAAI,EACnB,KAAKC,MAAMD,KAAI,EAEX8sD,GAAiB,CAACD,GAIpB,KAAKtY,4BAA4Bt/D,CAAS,EAG5C,KAAKwZ,MAAMqhB,uBAAyBgkC,EAC7B7+D,CACT,CAEAqoE,gBAAgBC,EAAsD,CACpE,OAAOA,GAAariD,GAAkB,KAAKzM,MAAMvZ,IAAI,EACjD,KAAK4xB,gBAAiB,EACtB,IACN,CAEAyP,oBAEEthC,EACAsW,EACM,CACN,KAAK0a,OAAM,EAAU,EACrB,KAAKq6B,gBAAgBvgC,MAAMq+B,GAA8B,CAAA,EACzDnpD,EAAK8U,OAAS,KAAKi4C,iBAAgB,GAAA,GAGjCC,GACG12C,EAAa,EAAiD,EACnE,EAEA,KAAK+0C,gBAAgBtgC,KAAI,CAC3B,CAEAu0C,4BAA4Bt/D,EAAwB,CAC7CA,EAAK+V,IAMV,KAAKiV,MAAMC,YACTjrB,EAAK+V,GAAG9P,KACR,CAAC,KAAKwL,QAAQH,QAAU,KAAKkI,MAAM6O,QAAUroB,EAAKixE,WAAajxE,EAAKwiC,MAChE,KAAKxX,MAAML,oBAAmB,EAAA,KAEJ,GAE9B3qB,EAAK+V,GAAGvH,IAAI5Q,KACd,CACF,CAKAsgE,WAEEl+D,EACAq9B,EACAC,EACG,CACH,KAAKnU,KAAI,EAGT,IAAM05C,EAAY,KAAKrpD,MAAM6O,OAC7B,YAAK7O,MAAM6O,OAAS,GAEpB,KAAK+U,aAAap9B,EAAMq9B,EAAaC,CAAU,EAC/C,KAAKgC,gBAAgBt/B,CAAI,EAEzBA,EAAKyV,KAAO,KAAK8yD,eAAe,CAAC,CAACvoE,EAAK+R,WAAY8wD,CAAS,EAErD,KAAK7rD,WACVhX,EACAq9B,EAAc,mBAAqB,iBACrC,CACF,CAEA2B,iBAA2B,CACzB,OAAO,KAAKvN,MAAW,EAAA,GAAK,KAAKA,MAAK,EAAQ,GAAK,KAAKA,MAAK,CAAU,CACzE,CAEAsN,eAAyB,CACvB,OAAO,KAAKtN,MAAK,EAAU,CAC7B,CAEAxa,kBAAkBtQ,EAA4C,CAC5D,OACGA,EAAI1G,OAAS,cAAgB0G,EAAIV,OAAS,eAC1CU,EAAI1G,OAAS,iBAAmB0G,EAAI6G,QAAU,aAEnD,CAEAyxB,uBAAuBpqB,EAAkD,CACvE,MACE,CAACA,EAAOiC,UAAY,CAACjC,EAAOgiB,QAAU,KAAK5f,kBAAkBpC,EAAOlO,GAAG,CAE3E,CAGA4hE,eAEEhH,EACAsB,EACa,CACb,KAAKtqD,WAAWuS,MAAK,EAErB,IAAMtR,EAAiC,CACrCs+D,eAAgB,GAChBvW,cAAAA,GAEEjoD,EAA4B,CAAA,EAC1BkkB,EAAY,KAAK9mB,UAAS,EAsDhC,GArDA8mB,EAAU/nB,KAAO,CAAA,EAEjB,KAAKub,OAAM,CAAU,EAIrB,KAAK+gD,mCAAmC,IAAM,CAE5C,KAAO,CAAC,KAAKtgD,MAAK,CAAU,GAAG,CAC7B,GAAI,KAAKJ,IAAG,EAAQ,EAAG,CACrB,GAAI/X,EAAWM,OAAS,EACtB,MAAM,KAAKjB,MACT7I,EAAOnO,mBACP,KAAK6X,MAAMmB,aACb,EAEF,QACF,CAEA,GAAI,KAAK8W,MAAK,EAAM,EAAG,CACrBnY,EAAWwD,KAAK,KAAKywC,eAAgB,CAAA,EACrC,QACF,CAEA,IAAM9vB,EAAS,KAAK/mB,UAAS,EAGzB4C,EAAWM,SAEb6jB,EAAOnkB,WAAaA,EACpB,KAAK1C,2BAA2B6mB,EAAQnkB,EAAW,CAAC,CAAC,EACrDA,EAAa,CAAA,GAGf,KAAKikB,iBAAiBC,EAAWC,EAAQjkB,CAAK,EAI5CikB,EAAOp9B,OAAS,eAEhBo9B,EAAOnkB,YAEPmkB,EAAOnkB,WAAWM,OAAS,GAE3B,KAAKjB,MAAM7I,EAAOrO,qBAAsBg8B,CAAM,CAElD,CACF,CAAC,EAED,KAAKjkB,MAAM6O,OAASw6C,EAEpB,KAAK15C,KAAI,EAEL7P,EAAWM,OACb,MAAM,KAAKjB,MAAM7I,EAAOrH,kBAAmB,KAAK+Q,MAAM5B,QAAQ,EAGhE,YAAKW,WAAWwS,KAAI,EAEb,KAAK/T,WAAWwmB,EAAW,WAAW,CAC/C,CAIAE,6BAEEF,EACAC,EACS,CACT,IAAM92B,EAAM,KAAKkrB,gBAAgB,EAAI,EAErC,GAAI,KAAKkN,cAAa,EAAI,CACxB,IAAMlqB,EAAwB4oB,EAG9B5oB,OAAAA,EAAOxU,KAAO,SACdwU,EAAOiC,SAAW,GAClBjC,EAAOlO,IAAMA,EACbkO,EAAOgiB,OAAS,GAChB,KAAKqI,gBACH1B,EACA3oB,EACA,GACA,GACoB,GACpB,EACF,EACO,EACT,SAAW,KAAKmqB,gBAAe,EAAI,CACjC,IAAMrnB,EAAwB8lB,EAG9B9lB,OAAAA,EAAKb,SAAW,GAChBa,EAAKhR,IAAMA,EACXgR,EAAKkf,OAAS,GACd2G,EAAU/nB,KAAKqH,KAAK,KAAK5F,mBAAmBS,CAAI,CAAC,EAC1C,EACT,CACA,YAAK0mC,kCAAkC13C,CAAG,EACnC,EACT,CAEA42B,iBAEEC,EACAC,EACAjkB,EACM,CACN,IAAMod,EAAW,KAAK/D,aAAY,GAAW,EAE7C,GAAI+D,EAAU,CACZ,GAAI,KAAK8G,6BAA6BF,EAAWC,CAAM,EAErD,OAEF,GAAI,KAAKpM,IAAG,CAAU,EAAG,CACvB,KAAKgwC,sBAAsB7jC,EAAWC,CAA8B,EACpE,MACF,CACF,CAEA,KAAK6jC,6BAA6B9jC,EAAWC,EAAQjkB,EAAOod,CAAQ,CACtE,CAEA0qC,6BAEE9jC,EACAC,EACAjkB,EACAod,EACA,CACA,IAAMmhD,EAAet6C,EACfu6C,EAAgBv6C,EAChBw6C,EAAax6C,EACby6C,EAAcz6C,EACd06C,EAAe16C,EAEf5oB,EAAqDkjE,EACrDK,EAAwDL,EAK9D,GAHAt6C,EAAO5G,OAASD,EAChB,KAAK8I,gCAAgCjC,CAAM,EAEvC,KAAKpM,IAAG,EAAQ,EAAG,CAErBxc,EAAOxU,KAAO,SACd,IAAM2V,EAAgB,KAAKyb,MAAK,GAAe,EAI/C,GAHA,KAAK4mD,sBAAsBxjE,CAAM,EACjC,KAAK2sD,6BAA6B3sD,CAAM,EAEpCmB,EAAe,CAEjB,KAAKqpB,uBAAuB7B,EAAWw6C,EAAe,GAAM,EAAK,EACjE,MACF,CAEI,KAAK/4C,uBAAuB84C,CAAY,GAC1C,KAAKp/D,MAAM7I,EAAO1O,uBAAwB22E,EAAapxE,GAAG,EAG5D,KAAKu4B,gBACH1B,EACAu6C,EACA,GACA,GACoB,GACpB,EACF,EAEA,MACF,CAEA,IAAMllD,EACJ,CAAC,KAAKrZ,MAAMihB,aAAexU,GAAkB,KAAKzM,MAAMvZ,IAAI,EACxD0G,EAAM,KAAK0xE,sBAAsB56C,CAAM,EACvC66C,EAAoBzlD,EAAgBlsB,EAAqBV,KAAO,KAChEsyE,EAAY,KAAKviE,cAAcrP,CAAG,EAClC6xE,EAA6B,KAAKh/D,MAAM5B,SAI9C,GAFA,KAAK4pD,6BAA6B4W,CAAY,EAE1C,KAAKr5C,cAAa,EAAI,CAGxB,GAFAlqB,EAAOxU,KAAO,SAEVk4E,EAAW,CACb,KAAKl5C,uBAAuB7B,EAAWw6C,EAAe,GAAO,EAAK,EAClE,MACF,CAGA,IAAM1hE,EAAgB,KAAK2oB,uBAAuB84C,CAAY,EAC1D54C,EAAoB,GACpB7oB,IACFyhE,EAAa13E,KAAO,cAGhBmZ,EAAMs+D,gBAAkB,CAAC,KAAKrgE,UAAU,YAAY,GACtD,KAAKkB,MAAM7I,EAAO9N,qBAAsB2E,CAAG,EAEzC2P,GAAiB,KAAKmB,UAAU,YAAY,GAAKgmB,EAAOuhC,UAC1D,KAAKrmD,MAAM7I,EAAOtI,sBAAuBb,CAAG,EAE9C6S,EAAMs+D,eAAiB,GACvB34C,EAAoB3lB,EAAM+nD,eAG5B,KAAKriC,gBACH1B,EACAu6C,EACA,GACA,GACAzhE,EACA6oB,CACF,CACF,SAAW,KAAKH,gBAAe,EACzBu5C,EACF,KAAKE,yBAAyBj7C,EAAW06C,CAAW,EAEpD,KAAKQ,kBAAkBl7C,EAAWy6C,CAAU,UAErCK,IAAsB,SAAW,CAAC,KAAKxuB,iBAAgB,EAAI,CAEpE,KAAKzL,kCAAkC13C,CAAG,EAC1C,IAAM0P,EAAc,KAAKgb,IAAG,EAAQ,EAEhC+mD,EAAat/D,UACf,KAAK9T,WAAWwzE,CAA0B,EAG5C3jE,EAAOxU,KAAO,SAEd,IAAMk4E,EAAY,KAAK9mD,MAAK,GAAe,EAC3C,KAAK4mD,sBAAsBxjE,CAAM,EACjC,KAAK2sD,6BAA6B4W,CAAY,EAE1CG,EAEF,KAAKl5C,uBACH7B,EACAw6C,EACA3hE,EACA,EACF,GAEI,KAAK4oB,uBAAuB84C,CAAY,GAC1C,KAAKp/D,MAAM7I,EAAO3O,mBAAoB42E,EAAapxE,GAAG,EAGxD,KAAKu4B,gBACH1B,EACAu6C,EACA1hE,EACA,GACoB,GACpB,EACF,EAEH,UACEiiE,IAAsB,OAASA,IAAsB,QACtD,EAAE,KAAK7mD,MAAa,EAAA,GAAK,KAAKq4B,iBAAkB,GAChD,CAGA,KAAKzL,kCAAkC13C,CAAG,EAC1CkO,EAAOxU,KAAOi4E,EAEd,IAAMC,EAAY,KAAK9mD,MAAK,GAAe,EAC3C,KAAK4mD,sBAAsBN,CAAY,EAEnCQ,EAEF,KAAKl5C,uBAAuB7B,EAAWw6C,EAAe,GAAO,EAAK,GAE9D,KAAK/4C,uBAAuB84C,CAAY,GAC1C,KAAKp/D,MAAM7I,EAAO5O,sBAAuB62E,EAAapxE,GAAG,EAE3D,KAAKu4B,gBACH1B,EACAu6C,EACA,GACA,GACoB,GACpB,EACF,GAGF,KAAKt4C,wBAAwBs4C,CAAY,CAC1C,SAAUO,IAAsB,YAAc,CAAC,KAAKxuB,iBAAgB,EAAI,CACvE,KAAKtF,aAAa,wBAAwB,EAC1C,KAAKnG,kCAAkC13C,CAAG,EAG1C,IAAM4xE,EAAY,KAAK9mD,MAAK,GAAe,EAC3C,KAAK4mD,sBAAsBJ,CAAU,EACrC,KAAKU,0BAA0Bn7C,EAAW26C,EAAcI,CAAS,CACnE,MAAW,KAAKzuB,iBAAgB,EAE1ByuB,EACF,KAAKE,yBAAyBj7C,EAAW06C,CAAW,EAEpD,KAAKQ,kBAAkBl7C,EAAWy6C,CAAU,EAG9C,KAAKjzE,WAAU,CAEnB,CAGAqzE,sBAEE56C,EAC6C,CAC7C,GAAM,CAAEx9B,KAAAA,EAAMuN,MAAAA,GAAU,KAAKgM,MAS7B,IAPGvZ,IAAgB,KAAIA,IAAkB,MACvCw9B,EAAO5G,QACPrpB,IAAU,aAEV,KAAKmL,MAAM7I,EAAOxH,gBAAiB,KAAKkR,MAAM5B,QAAQ,EAGpD3X,IAAI,IAAqB,CACvBuN,IAAU,eACZ,KAAKmL,MAAM7I,EAAO7O,6BAA8B,KAAKuY,MAAM5B,QAAQ,EAErE,IAAMjR,EAAM,KAAKgP,iBAAgB,EACjC8nB,OAAAA,EAAO92B,IAAMA,EACNA,CACT,CAEA,YAAKgnD,kBAAkBlwB,CAAM,EACtBA,EAAO92B,GAChB,CAEA06D,sBAEE7jC,EACAC,EAKA,CAAA,IAAAm7C,EAEA,KAAK5tD,MAAMF,MACTN,GACF,EAEA,IAAMqgC,EAAY,KAAKrxC,MAAMqlC,OAC7B,KAAKrlC,MAAMqlC,OAAS,CAAA,EAGpB,KAAKsM,UAAUrgC,MAAK,CAAgB,EACpC,IAAMrV,EAAuBgoB,EAAOhoB,KAAO,CAAA,EAC3C,KAAKunD,4BAA4BvnD,EAAMtF,OAAW,GAAK,CAAW,EAClE,KAAKg7C,UAAUpgC,KAAI,EACnB,KAAKC,MAAMD,KAAI,EACf,KAAKvR,MAAMqlC,OAASgM,EACpBrtB,EAAU/nB,KAAKqH,KAAK,KAAK9F,WAA0BymB,EAAQ,aAAa,CAAC,GACzEm7C,EAAIn7C,EAAOnkB,aAAPs/D,MAAAA,EAAmBh/D,QACrB,KAAKjB,MAAM7I,EAAOlO,qBAAsB67B,CAAM,CAElD,CAEAi7C,kBAEEl7C,EACA7lB,EACA,CACI,CAACA,EAAKb,UAAY,KAAKG,kBAAkBU,EAAKhR,GAAG,GAGnD,KAAKgS,MAAM7I,EAAO9O,sBAAuB2W,EAAKhR,GAAG,EAGnD62B,EAAU/nB,KAAKqH,KAAK,KAAK5F,mBAAmBS,CAAI,CAAC,CACnD,CAEA8gE,yBAEEj7C,EACA7lB,EACA,CACA,IAAM3X,EAAO,KAAKqX,0BAA0BM,CAAI,EAChD6lB,EAAU/nB,KAAKqH,KAAK9c,CAAI,EAExB,KAAKuY,WAAWqvC,mBACd,KAAK9xC,iBAAiB9V,EAAK2G,GAAG,EAAC,EAE/B3G,EAAK2G,IAAI6H,IAAI5Q,KACf,CACF,CAEA+6E,0BAEEn7C,EACA7lB,EACA4gE,EACA,CACI,CAACA,GAAa,CAAC5gE,EAAKb,UAAY,KAAKG,kBAAkBU,EAAKhR,GAAG,GAGjE,KAAKgS,MAAM7I,EAAO9O,sBAAuB2W,EAAKhR,GAAG,EAGnD,IAAM3G,EAAO,KAAKsX,2BAA2BK,CAAI,EACjD6lB,EAAU/nB,KAAKqH,KAAK9c,CAAI,EAEpBu4E,GACF,KAAKhgE,WAAWqvC,mBACd,KAAK9xC,iBAAiB9V,EAAK2G,GAAoB,EAAC,EAEhD3G,EAAK2G,IAAI6H,IAAI5Q,KACf,CAEJ,CAEAshC,gBAEE1B,EACA3oB,EACAwB,EACA5B,EACA6B,EACA6oB,EACM,CACN3B,EAAU/nB,KAAKqH,KACb,KAAK1G,YACHvB,EACAwB,EACA5B,EACA6B,EACA6oB,EACA,cACA,EACF,CACF,CACF,CAEAE,uBAEE7B,EACA3oB,EACAwB,EACA5B,EACM,CACN,IAAMzU,EAAO,KAAKoW,YAChBvB,EACAwB,EACA5B,EACoB,GACpB,GACA,qBACA,EACF,EACA+oB,EAAU/nB,KAAKqH,KAAK9c,CAAI,EAExB,IAAMK,EACJL,EAAKK,OAAS,MACVL,EAAK62B,OAAM,EAAA,EAGX72B,EAAKK,OAAS,MACZL,EAAK62B,OAAM,EAAA,EAEuB,EAE1C,KAAKgrC,iCAAiC7hE,EAAMK,CAAI,CAClD,CAEAwhE,iCACE7hE,EACAK,EACA,CACA,KAAKkY,WAAWqvC,mBACd,KAAK9xC,iBAAiB9V,EAAK2G,GAAoB,EAC/CtG,EACAL,EAAK2G,IAAI6H,IAAI5Q,KACf,CACF,CAGA4jE,6BAEEC,EACM,CAAC,CAGTpqD,0BAEErX,EACwB,CACxB,YAAK64E,iBAAiB74E,CAAI,EAC1B,KAAKsyB,UAAS,EACP,KAAKtb,WAAWhX,EAAM,sBAAsB,CACrD,CAGAkX,mBAAiClX,EAAwC,CACvE,YAAK64E,iBAAiB74E,CAAI,EAC1B,KAAKsyB,UAAS,EACP,KAAKtb,WAAWhX,EAAM,eAAe,CAC9C,CAEAsX,2BAEEtX,EACyB,CACzB,YAAK64E,iBAAiB74E,CAAI,EAC1B,KAAKsyB,UAAS,EACP,KAAKtb,WAAWhX,EAAM,uBAAuB,CACtD,CAGA64E,iBAEE74E,EAGM,CACN,KAAKgrB,MAAMF,MAAMN,GAAiC,EAClD,KAAK6gC,gBAAgBvgC,MAAMw+B,GAAoB,CAAA,EAC/C,KAAK6B,UAAUrgC,MAAK,CAAgB,EACpC9qB,EAAKwN,MAAQ,KAAK6jB,IAAG,EAAM,EAAI,KAAKwK,wBAAyB,EAAG,KAChE,KAAKwvB,gBAAgBtgC,KAAI,EACzB,KAAKogC,UAAUpgC,KAAI,EACnB,KAAKC,MAAMD,KAAI,CACjB,CAEAqS,aACEp9B,EACAq9B,EACAC,EACApS,EAAwB,KAClB,CACN,GAAIjF,GAAkB,KAAKzM,MAAMvZ,IAAI,EACnCD,EAAK+V,GAAK,KAAK8b,gBAAe,EAC1BwL,GACF,KAAKixB,0BAA0BtuD,EAAK+V,GAAImV,CAAW,UAGjDoS,GAAc,CAACD,EACjBr9B,EAAK+V,GAAK,SAEV,OAAM,KAAK4C,MAAM7I,EAAOnK,iBAAkB,KAAK6T,MAAM5B,QAAQ,CAGnE,CAGA0nB,gBAA8Bt/B,EAA6B,CACzDA,EAAK+R,WAAa,KAAKsf,IAAG,EAAY,EAAI,KAAKy7C,oBAAqB,EAAG,IACzE,CAKAzzD,YAEErZ,EAKAsZ,EACa,CACb,IAAMikD,EAAyB,KAAKkD,sBAClCzgE,EACe,EACjB,EACM84E,EAAa,KAAKtQ,iCACtBxoE,EACAu9D,CACF,EACMwb,EAAoB,CAACD,GAAc,KAAKznD,IAAG,EAAS,EACpD2nD,EAAUD,GAAqB,KAAK97C,cAAcj9B,CAAI,EACtDm9B,EACJ67C,GAAW,KAAK97C,mCAAmCl9B,CAAI,EACnDi5E,EACJF,IAAsB,CAAC57C,GAAgB,KAAK9L,IAAY,EAAA,GACpD6nD,EAAiBJ,GAAcE,EAErC,GAAIA,GAAW,CAAC77C,EAAc,CAE5B,GADI27C,GAAY,KAAK9zE,WAAU,EAC3BsU,EACF,MAAM,KAAKX,MAAM7I,EAAO9F,2BAA4BhK,CAAI,EAE1D,YAAKg9B,gBAAgBh9B,EAAM,EAAI,EAE/B,KAAKk8C,kBAAoB,GAElB,KAAKllC,WAAWhX,EAAM,sBAAsB,CACrD,CAEA,IAAMm5E,EAAgB,KAAKC,gCAAgCp5E,CAAI,EAE3D84E,GAAcC,GAAqB,CAACC,GAAW,CAACG,GAClD,KAAKn0E,WAAW,KAAI,CAAW,EAG7Bm4B,GAAgB87C,GAClB,KAAKj0E,WAAW,KAAI,EAAU,EAGhC,IAAIq0E,EACJ,GAAIH,GAAkBC,EAAe,CAEnC,GADAE,EAAiB,GACb//D,EACF,MAAM,KAAKX,MAAM7I,EAAO9F,2BAA4BhK,CAAI,EAE1D,KAAKg9B,gBACHh9B,EACAk5E,CACF,CACF,MACEG,EAAiB,KAAKC,4BACpBt5E,CACF,EAGF,GAAIk5E,GAAkBC,GAAiBE,EAAgB,CAAA,IAAAE,EACrD,IAAMjhD,EAAQt4B,EAEd,GADA,KAAK0oE,YAAYpwC,EAAO,GAAM,GAAO,CAAC,CAACA,EAAMtf,MAAM,IAC/CugE,EAAAjhD,EAAMxe,cAANy/D,KAAAA,OAAAA,EAAmBt5E,QAAS,mBAC9B,KAAK8iE,oBAAoBzpD,EAAYgf,EAAMxe,YAAawe,CAAK,UACpDhf,EACT,MAAM,KAAKX,MAAM7I,EAAO9F,2BAA4BhK,CAAI,EAE1D,YAAKk8C,kBAAoB,GAClB,KAAKllC,WAAWshB,EAAO,wBAAwB,CACxD,CAEA,GAAI,KAAKjH,IAAG,EAAY,EAAG,CACzB,IAAMiH,EAAQt4B,EAERwhC,EAAO,KAAK7G,6BAA4B,EAG9C,GAFArC,EAAMxe,YAAc0nB,EAEhBA,EAAKvhC,OAAS,mBAChB,KAAK8iE,oBAAoBzpD,EAAYkoB,EAA4BlJ,CAAK,UAC7Dhf,EACT,MAAM,KAAKX,MAAM7I,EAAO9F,2BAA4BhK,CAAI,EAG1D,YAAK0oE,YAAYpwC,EAAO,GAAM,EAAI,EAClC,KAAK4jB,kBAAoB,GAClB,KAAKllC,WAAWshB,EAAO,0BAA0B,CAC1D,CAEA,KAAKtzB,WAAW,KAAI,CAAW,CACjC,CAEAi4B,cACEj9B,EACmE,CACnE,OAAO,KAAKqxB,IAAG,EAAQ,CACzB,CAEAm3C,iCACExoE,EAKAu9D,EAC0C,CAC1C,GAAIA,GAA0B,KAAK7iC,yBAAwB,EAAI,CAE7D,KAAK8pB,aAAa,oBAAqB+Y,GAAwB/uD,IAAI5Q,KAAK,EACxE,IAAMmY,EAAKwnD,GAA0B,KAAK1rC,gBAAgB,EAAI,EACxDqO,EAAY,KAAK3sB,gBAA0CwC,CAAE,EACnEmqB,OAAAA,EAAUxmB,SAAW3D,EACpB/V,EAA0C2Z,WAAa,CACtD,KAAK3C,WAAWkpB,EAAW,wBAAwB,CAAC,EAE/C,EACT,CACA,MAAO,EACT,CAEAhD,mCACEl9B,EAC0C,CAC1C,GAAI,KAAK6yB,aAAY,EAAO,EAAG,CAAA,IAAAnjB,EAAA8pE,GAC7BA,GAAA9pE,EAAC1P,GAA0C2Z,aAAU6/D,OAArD9pE,EAA2CiK,WAAe,CAAA,GAE1D,IAAMumB,EAAY,KAAKjJ,YACrB,KAAKzd,MAAMC,eACb,EAEA,YAAK0P,KAAI,EAET+W,EAAUxmB,SAAW,KAAKsqD,sBAAqB,EAC9ChkE,EAA0C2Z,WAAWmD,KACpD,KAAK9F,WAAWkpB,EAAW,0BAA0B,CACvD,EACO,EACT,CACA,MAAO,EACT,CAEAk5C,gCACEp5E,EAC0C,CAC1C,GAAI,KAAKyxB,MAAK,CAAU,EAAG,CACzB,IAAM6G,EAAQt4B,EAETs4B,EAAM3e,aAAY2e,EAAM3e,WAAa,CAAA,GAC1C,IAAM8/D,EAAenhD,EAAM5E,aAAe,OAC1C4E,OAAAA,EAAM3e,WAAWmD,KAAK,GAAG,KAAKigB,sBAAsB08C,CAAY,CAAC,EACjEnhD,EAAMtf,OAAS,KACsB,KAAKvB,UAAU,kBAAkB,EACpE6gB,EAAMohD,WAAa,CAAA,EAEnBphD,EAAMnf,WAAa,CAAA,EAErBmf,EAAMxe,YAAc,KACb,EACT,CACA,MAAO,EACT,CAEAw/D,4BAEEt5E,EACS,CACT,OAAI,KAAKw6B,6BAA4B,GACnCx6B,EAAK2Z,WAAa,CAAA,EAClB3Z,EAAKgZ,OAAS,KACuB,KAAKvB,UAAU,kBAAkB,EACpEzX,EAAK05E,WAAa,CAAA,EAElB15E,EAAKmZ,WAAa,CAAA,EAEpBnZ,EAAK8Z,YAAc,KAAK+iB,uBAAuB78B,CAAI,EAC5C,IAEF,EACT,CAEAq1E,iBAA2B,CACzB,GAAI,CAAC,KAAKxiD,aAAY,EAAU,EAAG,MAAO,GAC1C,IAAM1J,EAAO,KAAKq6B,qBAAoB,EACtC,OAAO,KAAKiG,qBAAqBtgC,EAAM,UAAU,CACnD,CAEAwR,8BAE6C,CAC3C,IAAMJ,EAAO,KAAK7jB,UAAS,EAE3B,GAAI,KAAK+a,MAAK,EAAa,EACzB,YAAKtI,KAAI,EACF,KAAK8lD,cACV10C,EACAu8C,CACF,EACK,GAAI,KAAKzB,gBAAe,EAC7B,YAAKlsD,KAAI,EACT,KAAKA,KAAI,EACF,KAAK8lD,cACV10C,EACAu8C,EAGF,EAGF,GAAI,KAAKrlD,MAAK,EAAU,EACtB,OAAO,KAAKysC,WAAW3jC,EAAmC,GAAM,EAAI,EAGtE,GAAI,KAAK9I,MAAK,EAAM,EAClB,OACE,KAAKha,UAAU,YAAY,GAC3B,KAAK7B,gBAAgB,aAAc,wBAAwB,IAAM,IAEjE,KAAK+C,MAAM7I,EAAOvO,sBAAuB,KAAKiY,MAAM5B,QAAQ,EAEvD,KAAKsmD,WACV,KAAK6E,oBACH,KAAKiL,gBAAgB,EAAK,EAC1B,KAAKt3D,UAAS,CAChB,EACA,GACA,EACF,EAGF,GACE,KAAK+a,MAAK,EAAU,GACpB,KAAKA,MAAK,EAAQ,GAClB,KAAKgC,MAAO,GACZ,KAAK2qC,QAAO,GACZ,KAAKC,aAAY,EAEjB,MAAM,KAAK1lD,MAAM7I,EAAO7F,yBAA0B,KAAKuP,MAAM5B,QAAQ,EAGvE,IAAM2oC,EAAM,KAAK1kB,wBAAuB,EACxC,YAAKvJ,UAAS,EACPiuB,CACT,CAGA1jB,uBAGE78B,EACkC,CAClC,OAAI,KAAKyxB,MAAK,EAAU,EACT,KAAKysC,WAChB,KAAKxnD,UAAS,EACd,GACA,EACF,EAGK,KAAKy9D,uBAAsB,CACpC,CAEAz5C,0BAAoC,CAClC,GAAM,CAAEz6B,KAAAA,GAAS,KAAKuZ,MACtB,GAAIyM,GAAkBhmB,CAAI,EAAG,CAC3B,GAAKA,IAAI,IAAkB,CAAC,KAAKuZ,MAAMihB,aAAgBx6B,IAAI,IACzD,MAAO,GAET,IACGA,IAAiB,KAAIA,IAAI,MAC1B,CAAC,KAAKuZ,MAAMihB,YACZ,CAKA,IAAMtR,EAAO,KAAK8d,eAAc,EAC1B0yC,EAAW,KAAK17C,MAAMC,WAAW/U,CAAI,EAC3C,GACEwwD,IAAQ,KACP,KAAK7R,0BAA0B6R,EAAUxwD,CAAI,GAC5C,CAAC,KAAK8U,MAAM0rB,WAAW,OAAQxgC,CAAI,EAErC,YAAK+9B,gBAAgB,CAAC,OAAQ,YAAY,CAAC,EACpC,EAEX,CACD,SAAU,CAAC,KAAKz1B,MAAK,EAAY,EAChC,MAAO,GAGT,IAAMtI,EAAO,KAAK8d,eAAc,EAC1B2yC,EAAU,KAAKnwB,qBAAqBtgC,EAAM,MAAM,EACtD,GACE,KAAK8U,MAAMC,WAAW/U,CAAI,IAAqB,IAC9ClD,GAAkB,KAAKzM,MAAMvZ,IAAI,GAAK25E,EAEvC,MAAO,GAGT,GAAI,KAAKnoD,MAAK,EAAY,GAAKmoD,EAAS,CACtC,IAAMC,EAAgB,KAAK57C,MAAMC,WAC/B,KAAKmlB,oBAAoBl6B,EAAO,CAAC,CACnC,EACA,OACE0wD,IAAa,IACbA,IAAsC,EAE1C,CACA,MAAO,EACT,CAEA78C,gBAEEh9B,EACAgxB,EACM,CACF,KAAK0B,cAAa,EAAS,GAC7B1yB,EAAKgZ,OAAS,KAAK8vD,kBAAiB,EACpC,KAAKJ,YAAY1oE,CAAI,EACrB,KAAK85E,2BAA2B95E,CAAI,EACpC,KAAK+5E,sBAAsB/5E,CAAI,GACtBgxB,GACT,KAAKhsB,WAAU,EAGjB,KAAKstB,UAAS,CAChB,CAEAkI,8BAAwC,CACtC,GAAM,CAAEv6B,KAAAA,GAAS,KAAKuZ,MACtB,OAAIvZ,IAAI,KACN,KAAKinD,gBAAgB,CAAC,aAAc,mBAAmB,CAAC,EACpD,KAAKzvC,UAAU,YAAY,IAE3B,KAAK7B,gBAAgB,aAAc,wBAAwB,IAAM,IAEjE,KAAK+C,MAAM7I,EAAOvO,sBAAuB,KAAKiY,MAAM5B,QAAQ,EAGvD,IAIP,KAAKwmD,QAAO,GACd,KAAKzlD,MAAM7I,EAAOjF,uBAAwB,KAAK2O,MAAM5B,QAAQ,EACtD,IAGL,KAAKymD,aAAY,GACnB,KAAK1lD,MAAM7I,EAAOjF,uBAAwB,KAAK2O,MAAM5B,QAAQ,EACtD,IAIP3X,IAAI,IACJA,IAAI,IACJA,IAAqB,IACrBA,IAAI,IACJ,KAAKwzB,MAAO,GACZ,KAAK4hD,gBAAe,CAExB,CAEA3M,YACE1oE,EAKAg6E,EACAC,EACAC,EACM,CACN,GAAIF,EAAY,CAAA,IAAAG,EAEd,GAAIF,GAGF,GADA,KAAK1Z,sBAAsBvgE,EAAM,SAAS,EACtC,KAAKyX,UAAU,mBAAmB,EAAG,CAAA,IAAA2iE,EACvC,IAAMtgE,EAAe9Z,EAClB8Z,YAEDA,EAAY7Z,OAAS,cACrB6Z,EAAY7T,OAAS,QACrB6T,EAAYjc,IAAMic,EAAYlc,QAAU,GACxC,GAAAw8E,EAACtgE,EAAYhG,QAAK,MAAjBsmE,EAAmBnlE,gBAEpB,KAAK0D,MAAM7I,EAAOpN,8BAA+BoX,CAAW,CAEhE,WAEKqgE,EAAIn6E,EAAK2Z,aAALwgE,MAAAA,EAAiBvgE,OAG1B,QAAWsmB,KAAalgC,EAAK2Z,WAAY,CACvC,GAAM,CAAED,SAAAA,CAAU,EAAGwmB,EACf/9B,EACJuX,EAASzZ,OAAS,aAAeyZ,EAASzT,KAAOyT,EAASlM,MAE5D,GADA,KAAK+yD,sBAAsBrgC,EAAW/9B,CAAU,EAC5C,CAAC+3E,GAAUh6C,EAAUC,MAAO,CAC9B,GAAM,CAAEA,MAAAA,CAAO,EAAGD,EACdC,EAAMlgC,OAAS,aACjB,KAAK0Y,MAAM7I,EAAOtN,sBAAuB09B,EAAW,CAClDz9B,UAAW09B,EAAM3yB,MACjBrL,WAAAA,CACF,CAAC,GAGD,KAAKi/B,kBAAkBjB,EAAMl6B,KAAMk6B,EAAM3xB,IAAI5Q,MAAO,GAAM,EAAK,EAE/D,KAAKotB,MAAMO,iBAAiB4U,CAAK,EAErC,CACF,SACUngC,EAA0C8Z,YAAa,CACjE,IAAM0nB,EAAQxhC,EAA0C8Z,YAExD,GACE0nB,EAAKvhC,OAAS,uBACduhC,EAAKvhC,OAAS,mBACd,CACA,GAAM,CAAE8V,GAAAA,CAAI,EAAGyrB,EACf,GAAI,CAACzrB,EAAI,MAAM,IAAIrE,MAAM,mBAAmB,EAE5C,KAAK6uD,sBAAsBvgE,EAAM+V,EAAG9P,IAAI,CAC1C,SAAWu7B,EAAKvhC,OAAS,sBACvB,QAAW6Z,KAAe0nB,EAAKu/B,aAC7B,KAAKrsD,iBAAiBoF,EAAY/D,EAAE,CAG1C,CACF,CACF,CAEArB,iBAAiB1U,EAA0C,CACzD,GAAIA,EAAKC,OAAS,aAChB,KAAKsgE,sBAAsBvgE,EAAMA,EAAKiG,IAAI,UACjCjG,EAAKC,OAAS,gBACvB,QAAW0X,KAAQ3X,EAAKs3B,WACtB,KAAK5iB,iBAAiBiD,CAAI,UAEnB3X,EAAKC,OAAS,eACvB,QAAWkwE,KAAQnwE,EAAK6+B,SAClBsxC,GACF,KAAKz7D,iBAAiBy7D,CAAI,OAGrBnwE,EAAKC,OAAS,iBAEvB,KAAKyU,iBAAiB1U,EAAKwN,KAAK,EACvBxN,EAAKC,OAAS,cACvB,KAAKyU,iBAAiB1U,EAAKmP,QAAQ,EAC1BnP,EAAKC,OAAS,qBACvB,KAAKyU,iBAAiB1U,EAAKo+B,IAAI,CAEnC,CAEAmiC,sBACEvgE,EAOAmC,EACM,CACF,KAAK4oD,oBAAoBliC,IAAI1mB,CAAU,IACrCA,IAAe,UACjB,KAAKwW,MAAM7I,EAAO7N,uBAAwBjC,CAAI,EAE9C,KAAK2Y,MAAM7I,EAAO5N,gBAAiBlC,EAAM,CAAEmC,WAAAA,CAAW,CAAC,GAG3D,KAAK4oD,oBAAoBp/B,IAAIxpB,CAAU,CACzC,CAIA46B,sBAAsBqmC,EAAmD,CACvE,IAAMiX,EAAQ,CAAA,EACVzhD,EAAQ,GAKZ,IAFA,KAAK5H,OAAM,CAAU,EAEd,CAAC,KAAKK,IAAG,CAAU,GAAG,CAC3B,GAAIuH,EACFA,EAAQ,WAER,KAAK5H,OAAM,EAAS,EAChB,KAAKK,IAAG,CAAU,EAAG,MAE3B,IAAMwP,EAAkB,KAAKhO,aAAY,GAAS,EAC5CswC,EAAW,KAAK1xC,MAAK,GAAU,EAC/BzxB,EAAO,KAAK0W,UAAS,EAC3B1W,EAAKmgC,MAAQ,KAAK6jC,sBAAqB,EACvCqW,EAAMv9D,KACJ,KAAKomD,qBACHljE,EACAmjE,EACAC,EACAviC,CACF,CACF,CACF,CAEA,OAAOw5C,CACT,CAEAnX,qBACEljE,EACAmjE,EAEAC,EACAviC,EAEmB,CACnB,OAAI,KAAKnO,cAAa,EAAO,EAC3B1yB,EAAK0Z,SAAW,KAAKsqD,sBAAqB,EACjCb,EACTnjE,EAAK0Z,SAAW,KAAKe,mBAAmBza,EAAKmgC,KAAK,EACxCngC,EAAK0Z,WACf1Z,EAAK0Z,SAAW,KAAKc,gBAAgBxa,EAAKmgC,KAAK,GAE1C,KAAKnpB,WAA8BhX,EAAM,iBAAiB,CACnE,CAGAgkE,uBAAwD,CACtD,GAAI,KAAKvyC,MAAK,GAAU,EAAG,CACzB,IAAMlX,EAAS,KAAKvH,mBAAmB,KAAKwG,MAAMhM,KAAK,EACjD8sE,EAAY9H,GAAc7hD,KAAKpW,EAAO/M,KAAK,EACjD,OAAI8sE,GACF,KAAK3hE,MAAM7I,EAAOlJ,iCAAkC2T,EAAQ,CAC1D1T,kBAAmByzE,EAAU,CAAC,EAAEp8C,WAAW,CAAC,CAC9C,CAAC,EAEI3jB,CACT,CACA,OAAO,KAAKsX,gBAAgB,EAAI,CAClC,CAEA0oD,mBACEv6E,EAGS,CACT,OAAIA,EAAK05E,YAAc,KACd15E,EAAK05E,WAAWtyB,KAAK,CAAC,CAAEzgD,IAAAA,EAAK6G,MAAAA,CAAM,IAEtCA,EAAMA,QAAU,SACf7G,EAAI1G,OAAS,aACV0G,EAAIV,OAAS,OACbU,EAAI6G,QAAU,OAErB,EAEI,EACT,CAEAuyB,sBAAsB//B,EAAmC,CACvD,GAAM,CAAE2Z,WAAAA,CAAY,EAAG3Z,EACjBw6E,EACJ7gE,EAAWC,SAAW,EAAID,EAAW,CAAC,EAAE1Z,KAAO,KAEjD,GAAID,EAAKygC,QAAU,SACb+5C,IAAsB,0BACxB,KAAK7hE,MACH7I,EAAOzH,iCACPsR,EAAW,CAAC,EAAEnL,IAAI5Q,KACpB,UAEOoC,EAAKygC,QAAU,QACpB+5C,IAAsB,4BACxB,KAAK7hE,MACH7I,EAAOjO,6BACP8X,EAAW,CAAC,EAAEnL,IAAI5Q,KACpB,UAEOoC,EAAKggC,OAAQ,CAAA,IAAAy6C,EAClBD,IAAsB,0BACxB,KAAK7hE,MAAM7I,EAAOnM,2BAA4BgW,EAAW,CAAC,EAAEnL,IAAI5Q,KAAK,IAEnE68E,EAAAz6E,EAAK05E,aAALe,KAAAA,OAAAA,EAAiB7gE,QAAS,GAC5B,KAAKjB,MACH7I,EAAOpM,6BACPiW,EAAW,CAAC,EAAEnL,IAAI5Q,KACpB,CAEJ,CACF,CAEAm8E,sBACE/5E,EAGA,CAEA,GAAI,KAAKu6E,mBAAmBv6E,CAAI,GAAKA,EAAKC,OAAS,uBAAwB,CAEzE,GAAM,CAAE0Z,WAAAA,CAAY,EAAG3Z,EACvB,GAAI2Z,GAAc,KAAM,CAEtB,IAAM+gE,EAA2B/gE,EAAWghE,KAAKz6C,GAAa,CAC5D,IAAIa,EAMJ,GALIb,EAAUjgC,OAAS,kBACrB8gC,EAAWb,EAAUC,MACZD,EAAUjgC,OAAS,oBAC5B8gC,EAAWb,EAAUa,UAEnBA,IAAa5wB,OACf,OAAO4wB,EAAS9gC,OAAS,aACrB8gC,EAAS96B,OAAS,UAClB86B,EAASvzB,QAAU,SAE3B,CAAC,EACGktE,IAA6BvqE,QAC/B,KAAKwI,MACH7I,EAAOrM,4BACPi3E,EAAyBlsE,IAAI5Q,KAC/B,CAEJ,CACF,CACF,CAEAyiC,uBAAuBC,EAA4B,CACjD,OAAIA,EAAiB,GAEnB,KAAKzN,aAAuB,GAAA,GAC5B,KAAKA,aAAY,EAAU,GACO,KAAKA,aAAY,GAAW,CAElE,CAEA2N,iBACExgC,EACAsgC,EACAG,EACAjyB,EACM,CACF8xB,IAciCG,IAAU,UAC7C,KAAK+jB,aAAa,mBAAoBh2C,CAAG,EACxCxO,EAA6BggC,OAAS,IAC9B,KAAKvoB,UAAU,kBAAkB,IACzCzX,EAA6BggC,OAAS,IAGrCS,IAAU,UACZ,KAAK+jB,aAAa,qBAAsBh2C,CAAG,EAC1CxO,EAA6BygC,MAAQ,UAC7BA,IAAU,SACnB,KAAK+jB,aAAa,2BAA4Bh2C,CAAG,EAChDxO,EAA6BygC,MAAQ,SAC7B,KAAKhpB,UAAU,oBAAoB,IAC3CzX,EAA6BygC,MAAQ,MAE1C,CAaAggC,sBACEzgE,EACAsgC,EACqB,CACrB,GAAI,CAAC,KAAKD,uBAAuBC,CAAQ,EACvC,YAAKE,iBACHxgC,EACAsgC,EACA,IACF,EACO,KAGT,IAAMs6C,EAAkB,KAAKlkE,UAAS,EAChCmkE,EAAsB,KAAK3R,oBAAoB,EAAI,EAEnD,CAAEjpE,KAAAA,GAAS,KAAKuZ,MAkBtB,OAjBsB2M,GAA2BlmB,CAAI,EAOjDA,IAAI,IAAiB,KAAK86B,kBAAmB,IAAyB,IAQtE96B,IAAiB,KAGnB,KAAKugC,iBACHxgC,EACAsgC,EACAu6C,EACAD,EAAgBpsE,IAAI5Q,KACtB,EACO,OAEP,KAAK4iC,iBACHxgC,EACAsgC,EACA,IACF,EAEO,KAAKnH,iBAAiByhD,EAAiBC,CAAmB,EAErE,CAEAC,yBAEEr6C,EACA,CACA,GAAM,CAAExgC,KAAAA,GAAS,KAAKuZ,MACtB,OAAOyM,GAAkBhmB,CAAI,EAOzBA,IAAiB,IAAI,KAAK86B,kBAAiB,IAA2B,IAQtE96B,IAAiB,EACvB,CAKAozB,YAA0BrzB,EAAgD,CACxE,OAAI,KAAKyxB,MAAK,GAAU,EAEf,KAAKspD,+BAA+B/6E,CAAI,EAG1C,KAAK0gE,8BACV1gE,EACA,KAAKygE,sBAAsBzgE,EAAqB,EAAK,CACvD,CACF,CAEA0gE,8BAEE1gE,EACAu9D,EACa,CACbv9D,EAAK2Z,WAAa,CAAA,EAclB,IAAMqhE,EAAY,CAVC,KAAKC,iCACtBj7E,EACAu9D,CACF,GAOiC,KAAKlsC,IAAG,EAAS,EAG5C2nD,EAAUgC,GAAa,KAAKpS,8BAA8B5oE,CAAI,EAGpE,OAAIg7E,GAAa,CAAChC,GAAS,KAAKnQ,2BAA2B7oE,CAAI,EAC/D,KAAKoxB,iBAAgB,EAAS,EAEvB,KAAK2pD,+BAA+B/6E,CAAI,CACjD,CAEA+6E,+BAEE/6E,EACa,CAAA,IAAAk7E,EACb,OAAAA,EAAAl7E,EAAK2Z,aAAU,OAAf3Z,EAAK2Z,WAAe,CAAA,GACpB3Z,EAAKgZ,OAAS,KAAK8vD,kBAAiB,EACpC,KAAKgR,2BAA2B95E,CAAI,EACpC,KAAK+/B,sBAAsB//B,CAAI,EAC/B,KAAK+5E,sBAAsB/5E,CAAI,EAE/B,KAAKsyB,UAAS,EACd,KAAK4pB,kBAAoB,GAClB,KAAKllC,WAAWhX,EAAM,mBAAmB,CAClD,CAEA8oE,mBAAiD,CAC/C,OAAK,KAAKr3C,MAAK,GAAU,GAAG,KAAKzsB,WAAU,EACpC,KAAKmuB,cAAa,CAC3B,CAEA8M,0BAMEjgC,EACAkgC,EACAjgC,EACM,CACNigC,EAAUC,MAAQ,KAAKtO,gBAAe,EACtC7xB,EAAK2Z,WAAWmD,KAAK,KAAKsjB,sBAAsBF,EAAWjgC,CAAI,CAAC,CAClE,CAEAmgC,sBAMEF,EACAjgC,EACAirB,EAAwB,KACxB,CACA,YAAK0iC,UAAU1tB,EAAUC,MAAO,CAAElgC,KAAAA,CAAM,EAAEirB,CAAW,EAC9C,KAAKlU,WAAWkpB,EAAWjgC,CAAI,CACxC,CAOAk7E,uBAA6C,CAC3C,KAAKnqD,OAAM,CAAU,EAErB,IAAMoqD,EAAQ,CAAA,EACRC,EAAY,IAAI/uE,IAEtB,EAAG,CACD,GAAI,KAAKmlB,MAAK,CAAU,EACtB,MAGF,IAAMzxB,EAAO,KAAK0W,UAAS,EAGrBm6D,EAAU,KAAKr3D,MAAMhM,MAqB3B,GAjBI6tE,EAAUxyD,IAAIgoD,CAAO,GACvB,KAAKl4D,MACH7I,EAAOpJ,kCACP,KAAK8S,MAAM5B,SACX,CACEjR,IAAKkqE,CACP,CACF,EAEFwK,EAAU1vD,IAAIklD,CAAO,EACjB,KAAKp/C,MAAK,GAAU,EACtBzxB,EAAK2G,IAAM,KAAKqM,mBAAmB69D,CAAO,EAE1C7wE,EAAK2G,IAAM,KAAKkrB,gBAAgB,EAAI,EAEtC,KAAKb,OAAM,EAAS,EAEhB,CAAC,KAAKS,MAAK,GAAU,EACvB,MAAM,KAAK9Y,MACT7I,EAAOrJ,4BACP,KAAK+S,MAAM5B,QACb,EAEF5X,EAAKwN,MAAQ,KAAKwF,mBAAmB,KAAKwG,MAAMhM,KAAK,EACrD4tE,EAAMt+D,KAAK,KAAK9F,WAAWhX,EAAM,iBAAiB,CAAC,CACrD,OAAS,KAAKqxB,IAAG,EAAS,GAE1B,YAAKL,OAAM,CAAU,EAEdoqD,CACT,CAMAE,uBAAwB,CACtB,IAAMF,EAA6B,CAAA,EAC7BjiE,EAAa,IAAI7M,IACvB,EAAG,CACD,IAAMtM,EAAO,KAAK0W,UAAS,EAc3B,GAbA1W,EAAK2G,IAAM,KAAKkrB,gBAAgB,EAAI,EAEhC7xB,EAAK2G,IAAIV,OAAS,QACpB,KAAK0S,MAAM7I,EAAOtJ,iCAAkCxG,EAAK2G,GAAG,EAG1DwS,EAAW0P,IAAI7oB,EAAK2G,IAAIV,IAAI,GAC9B,KAAK0S,MAAM7I,EAAOpJ,kCAAmC1G,EAAK2G,IAAK,CAC7DA,IAAK3G,EAAK2G,IAAIV,IAChB,CAAC,EAEHkT,EAAWwS,IAAI3rB,EAAK2G,IAAIV,IAAI,EAC5B,KAAK+qB,OAAM,EAAS,EAChB,CAAC,KAAKS,MAAK,GAAU,EACvB,MAAM,KAAK9Y,MACT7I,EAAOrJ,4BACP,KAAK+S,MAAM5B,QACb,EAEF5X,EAAKwN,MAAQ,KAAKwF,mBAAmB,KAAKwG,MAAMhM,KAAK,EACrD4tE,EAAMt+D,KAAK,KAAK9F,WAAWhX,EAAM,iBAAiB,CAAC,CACrD,OAAS,KAAKqxB,IAAG,EAAS,GAE1B,OAAO+pD,CACT,CAEAtB,2BACE95E,EAGA,CACA,IAAImZ,EAGF,IAAIoiE,EAAU,GAIhB,GAAI,KAAK9pD,MAAK,EAAS,EAAG,CACxB,GACE,KAAKm4B,sBAAuB,GAC5B,KAAK7uB,kBAAiB,IAAE,GAIxB,OAGF,KAAK5R,KAAI,EAE4B,KAAK1R,UAAU,kBAAkB,GACpE0B,EAAa,KAAKmiE,sBAAqB,EACvC,KAAK9xB,SAASxpD,EAAM,6BAA8B,EAAI,GAEtDmZ,EAAa,KAAKgiE,sBAAqB,EAGvCI,EAAU,EAEd,MAAW,KAAK1oD,aAAuB,EAAA,GAAK,CAAC,KAAK+2B,sBAAqB,GAEnE,CAAC,KAAKnyC,UAAU,wBAAwB,GACP,CAAC,KAAKA,UAAU,kBAAkB,GAEnE,KAAKkB,MAAM7I,EAAO3M,0BAA2B,KAAKqW,MAAM5B,QAAQ,EAE7B,KAAKH,UAAU,kBAAkB,GACpE,KAAK+xC,SAASxpD,EAAM,yBAA0B,EAAI,EAEpD,KAAKmpB,KAAI,EACThQ,EAAa,KAAKgiE,sBAAqB,GAEvChiE,EAAa,CAAA,EAKb,CAACoiE,GACD,KAAK9jE,UAAU,kBAAkB,EAEjCzX,EAAK05E,WAAavgE,EAElBnZ,EAAKmZ,WAAaA,CAEtB,CAEA8hE,iCACEj7E,EACAu9D,EACS,CAET,GAAIA,EAAwB,CAC1B,IAAMr9B,EAAY,KAAK3sB,gBACrBgqD,CACF,EACAr9B,OAAAA,EAAUC,MAAQo9B,EAClBv9D,EAAK2Z,WAAWmD,KACd,KAAKsjB,sBAAsBF,EAAW,wBAAwB,CAChE,EACO,EACR,SAEC/Z,GAA2B,KAAK3M,MAAMvZ,IAAI,EAE1C,YAAKggC,0BACHjgC,EACA,KAAK0W,UAAS,EACd,wBACF,EACO,GAET,MAAO,EACT,CAEAkyD,8BAA8B5oE,EAA4C,CACxE,GAAI,KAAKyxB,MAAK,EAAQ,EAAG,CACvB,IAAMyO,EAAY,KAAKxpB,UAAS,EAChC,YAAKyS,KAAI,EACT,KAAKiI,iBAAgB,EAAO,EAE5B,KAAK6O,0BACHjgC,EACAkgC,EACA,0BACF,EACO,EACT,CACA,MAAO,EACT,CAEA2oC,2BAA2B7oE,EAAmC,CAC5D,IAAI44B,EAAQ,GAEZ,IADA,KAAK5H,OAAM,CAAU,EACd,CAAC,KAAKK,IAAG,CAAU,GAAG,CAC3B,GAAIuH,EACFA,EAAQ,OACH,CAEL,GAAI,KAAKvH,IAAG,EAAS,EACnB,MAAM,KAAK1Y,MAAM7I,EAAO/N,uBAAwB,KAAKyX,MAAM5B,QAAQ,EAIrE,GADA,KAAKoZ,OAAM,EAAS,EAChB,KAAKK,IAAG,CAAU,EAAG,KAC3B,CAEA,IAAM6O,EAAY,KAAKxpB,UAAS,EAC1BiqB,EAAmB,KAAKlP,MAAK,GAAU,EACvCoP,EAAkB,KAAKhO,aAAY,GAAS,EAClDqN,EAAUa,SAAW,KAAKijC,sBAAqB,EAC/C,IAAMwX,EAAkB,KAAK96C,qBAC3BR,EACAS,EACA3gC,EAAKwvB,aAAe,QAAUxvB,EAAKwvB,aAAe,SAClDqR,EACA1wB,MACF,EACAnQ,EAAK2Z,WAAWmD,KAAK0+D,CAAe,CACtC,CACF,CAGA96C,qBACER,EACAS,EAEAC,EACAC,EACA3V,EACmB,CACnB,GAAI,KAAKwH,cAAa,EAAO,EAC3BwN,EAAUC,MAAQ,KAAKtO,gBAAe,MACjC,CACL,GAAM,CAAEkP,SAAAA,CAAU,EAAGb,EACrB,GAAIS,EACF,MAAM,KAAKhoB,MAAM7I,EAAO1M,sBAAuB88B,EAAW,CACxD78B,WAAa09B,EAA6BvzB,KAC5C,CAAC,EAEH,KAAK4zB,kBACFL,EAA0B96B,KAC3Bi6B,EAAU1xB,IAAI5Q,MACd,GACA,EACF,EACKsiC,EAAUC,QACbD,EAAUC,MAAQ,KAAK3lB,gBAAgBumB,CAAwB,EAEnE,CACA,OAAO,KAAKX,sBACVF,EACA,kBACAhV,CACF,CACF,CAIAkU,YACExF,EACS,CACT,OAAOA,EAAM35B,OAAS,cAAgB25B,EAAM3zB,OAAS,MACvD,CACF,ECx5GqBw1E,GAAN,cAAqBrI,EAAgB,CAOlD91E,YACEmU,EACAwsB,EACAqrC,EACA,CACA73D,EAAUF,GAAWE,CAAO,EAC5B,MAAMA,EAASwsB,CAAK,EAEpB,KAAKxsB,QAAUA,EACf,KAAKm5C,iBAAgB,EACrB,KAAK95C,QAAUw4D,EACf,KAAKxrE,SAAW2T,EAAQvB,eACxB,KAAKE,WAAaqB,EAAQrB,WAE1B,IAAI8B,EAAc,EACdT,EAAQlB,4BACV2B,GAAW,GAETT,EAAQjB,6BACV0B,GAAW,GAETT,EAAQf,8BACVwB,GAAW,GAETT,EAAQd,0BACVuB,GAAW,IAETT,EAAQb,yBACVsB,GAAW,IAETT,EAAQhB,gCACVyB,GAAW,GAETT,EAAQZ,4BACVqB,GAAW,IAETT,EAAQT,SACVkB,GAAW,KAETT,EAAQR,SACViB,GAAW,KAETT,EAAQP,0BACVgB,GAAW,KAETT,EAAQN,iCACVe,GAAW,MAETT,EAAQL,gBACVc,GAAW,MAETT,EAAQJ,gBACVa,GAAW,MAETT,EAAQH,SACVY,GAAW,MAGb,KAAKA,YAAcA,CACrB,CAGAke,iBAAsD,CACpD,OAAO1G,EACT,CAEA1X,OAAgB,CACd,KAAKs5C,mBAAkB,EACvB,IAAMr5C,EAAO,KAAKyE,UAAS,EACrB2tB,EAAU,KAAK3tB,UAAS,EAC9B,YAAKwtB,UAAS,EACdjyB,EAAKusC,OAAS,KACd,KAAKpa,cAAcnyB,EAAMoyB,CAAO,EAChCpyB,EAAKusC,OAAS,KAAKhlC,MAAMglC,OACzBvsC,EAAK4qC,SAASjjC,OAAS,KAAKJ,MAAMgkC,YAC3BvrC,CACT,CACF,ECvDO,SAASD,GACdisB,EACAxsB,EACmB,CAAA,IAAAiqE,EACnB,KAAIA,EAAAjqE,IAAO,KAAA,OAAPiqE,EAASzrE,cAAe,cAAe,CACzCwB,EAAOlF,OAAAC,OAAA,CAAA,EACFiF,CAAO,EAEZ,GAAI,CACFA,EAAQxB,WAAa,SACrB,IAAM0Z,EAASgyD,GAAUlqE,EAASwsB,CAAK,EACjC29C,EAAMjyD,EAAO3X,MAAK,EAExB,GAAI2X,EAAOuyB,kBACT,OAAO0/B,EAGT,GAAIjyD,EAAOwyB,4BAMT,GAAI,CACF1qC,OAAAA,EAAQxB,WAAa,SACd0rE,GACLlqE,EACAwsB,CACF,EAAEjsB,MAAK,CACT,MAAQ,CAAC,MAIT4pE,EAAIv3C,QAAQp0B,WAAa,SAG3B,OAAO2rE,CACR,OAAQC,EAAa,CACpB,GAAI,CACFpqE,OAAAA,EAAQxB,WAAa,SACd0rE,GACLlqE,EACAwsB,CACF,EAAEjsB,MAAK,CACT,MAAQ,CAAC,CAET,MAAM6pE,CACR,CACF,KACE,QAAOF,GAAUlqE,EAASwsB,CAAK,EAAEjsB,MAAK,CAE1C,CAEO,SAASsf,GACd2M,EACAxsB,EACyB,CACzB,IAAMkY,EAASgyD,GAAUlqE,EAASwsB,CAAK,EACvC,OAAItU,EAAOlY,QAAQV,aACjB4Y,EAAOnQ,MAAM6O,OAAS,IAEjBsB,EAAOs5C,cAAa,CAC7B,CAEA,SAAS6Y,GACPC,EACmC,CACnC,IAAM3/D,EAAgD,CAAA,EACtD,QAAW25C,KAAYxpD,OAAOiD,KAC5BusE,CACF,EACE3/D,EAAW25C,CAAQ,EAAI3uC,GAAiB20D,EAAmBhmB,CAAQ,CAAC,EAEtE,OAAO35C,CACT,KAEa4/D,GAAWF,GAA2BC,EAAkB,EAErE,SAASJ,GAAUlqE,EAAqCwsB,EAAuB,CAC7E,IAAI4iC,EAAM4a,GACJnS,EAAyB,IAAIvtD,IACnC,GAAItK,GAAO,MAAPA,EAASX,QAAS,CACpB,QAAW4rC,KAAUjrC,EAAQX,QAAS,CACpC,IAAI7K,EAAMuL,EACN,OAAOkrC,GAAW,SACpBz2C,EAAOy2C,EAEP,CAACz2C,EAAMuL,CAAI,EAAIkrC,EAEZ4sB,EAAWzgD,IAAI5iB,CAAI,GACtBqjE,EAAWt6D,IAAI/I,EAAMuL,GAAQ,CAAE,CAAA,CAEnC,CACA63D,GAAgBC,CAAU,EAC1BzI,EAAMob,GAAe3S,CAAU,CACjC,CAEA,OAAO,IAAIzI,EAAIpvD,EAASwsB,EAAOqrC,CAAU,CAC3C,CAEA,IAAM4S,GAAmB,IAAIngE,IAG7B,SAASkgE,GACP3S,EAC8B,CAC9B,IAAM6S,EAAa,CAAA,EACnB,QAAWl2E,KAAQmkE,GACbd,EAAWzgD,IAAI5iB,CAAI,GACrBk2E,EAAWr/D,KAAK7W,CAAI,EAGxB,IAAMU,EAAMw1E,EAAW/1E,KAAK,GAAG,EAC3By6D,EAAMqb,GAAiBntE,IAAIpI,CAAG,EAClC,GAAI,CAACk6D,EAAK,CACRA,EAAM4a,GACN,QAAW/+B,KAAUy/B,EAEnBtb,EAAMsJ,GAAaztB,CAAM,EAAEmkB,CAAG,EAEhCqb,GAAiBltE,IAAIrI,EAAKk6D,CAAG,CAC/B,CACA,OAAOA,CACT,oDCrKA,IAAAub,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAAC,SAAUC,EAAQC,EAAS,CAC3B,OAAOH,IAAY,UAAY,OAAOC,GAAW,IAAcE,EAAQH,EAAO,EAC9E,OAAO,QAAW,YAAc,OAAO,IAAM,OAAO,CAAC,SAAS,EAAGG,CAAO,GACvED,EAASA,GAAU,KAAMC,EAAQD,EAAO,aAAe,CAAC,CAAC,EAC3D,GAAEF,IAAO,SAAUA,EAAS,CAAE,aAW7B,MAAMI,CAAW,CAChB,aAAc,CAEb,KAAK,YAAc,GAGnB,KAAK,cAAgB,GAGrB,KAAK,YAAc,KAGnB,KAAK,QAAU,CACd,KAAM,IAAO,KAAK,YAAc,GAChC,OAAQ,IAAO,KAAK,cAAgB,GACpC,QAAUC,GAAU,KAAK,YAAcA,CACxC,CACD,CASA,QAAQC,EAAQC,EAAMC,EAAOH,EAAM,CAC9BC,IACCE,IAAU,KACbF,EAAOC,CAAI,EAAEC,CAAK,EAAIH,EAEtBC,EAAOC,CAAI,EAAIF,EAGlB,CAQA,OAAOC,EAAQC,EAAMC,EAAO,CACvBF,IACCE,IAAU,KACbF,EAAOC,CAAI,EAAE,OAAOC,EAAO,CAAC,EAE5B,OAAOF,EAAOC,CAAI,EAGrB,CACD,CAeA,MAAME,UAAmBL,CAAW,CAMnC,YAAYM,EAAOC,EAAO,CACzB,MAAM,EAGN,KAAK,MAAQD,EAGb,KAAK,MAAQC,CACd,CAUA,MAAMN,EAAMC,EAAQC,EAAMC,EAAO,CAChC,GAAIH,EAAM,CACT,GAAI,KAAK,MAAO,CACf,IAAMO,EAAe,KAAK,YACpBC,EAAiB,KAAK,cACtBC,EAAe,KAAK,YAC1B,KAAK,YAAc,GACnB,KAAK,cAAgB,GACrB,KAAK,YAAc,KAEnB,KAAK,MAAM,KAAK,KAAK,QAAST,EAAMC,EAAQC,EAAMC,CAAK,EAEnD,KAAK,cACRH,EAAO,KAAK,YACZ,KAAK,QAAQC,EAAQC,EAAMC,EAAOH,CAAI,GAGnC,KAAK,eACR,KAAK,OAAOC,EAAQC,EAAMC,CAAK,EAGhC,IAAMO,EAAU,KAAK,YACfC,EAAU,KAAK,cAMrB,GAJA,KAAK,YAAcJ,EACnB,KAAK,cAAgBC,EACrB,KAAK,YAAcC,EAEfC,EAAS,OAAOV,EACpB,GAAIW,EAAS,OAAO,IACrB,CAEA,QAAWC,KAAOZ,EAAM,CACvB,IAAMa,EAAQb,EAAKY,CAAG,EAEtB,GAAI,OAAOC,GAAU,SAEd,GAAI,MAAM,QAAQA,CAAK,EAC7B,QAASC,EAAI,EAAGA,EAAID,EAAM,OAAQC,GAAK,EAClCD,EAAMC,CAAC,IAAM,MAAQ,OAAOD,EAAMC,CAAC,EAAE,MAAS,WAC5C,KAAK,MAAMD,EAAMC,CAAC,EAAGd,EAAMY,EAAKE,CAAC,GAErCA,UAIOD,IAAU,MAAQ,OAAOA,EAAM,MAAS,UAClD,KAAK,MAAMA,EAAOb,EAAMY,EAAK,IAAI,CAEnC,CAEA,GAAI,KAAK,MAAO,CACf,IAAMH,EAAe,KAAK,YACpBD,EAAiB,KAAK,cAC5B,KAAK,YAAc,KACnB,KAAK,cAAgB,GAErB,KAAK,MAAM,KAAK,KAAK,QAASR,EAAMC,EAAQC,EAAMC,CAAK,EAEnD,KAAK,cACRH,EAAO,KAAK,YACZ,KAAK,QAAQC,EAAQC,EAAMC,EAAOH,CAAI,GAGnC,KAAK,eACR,KAAK,OAAOC,EAAQC,EAAMC,CAAK,EAGhC,IAAMQ,EAAU,KAAK,cAKrB,GAHA,KAAK,YAAcF,EACnB,KAAK,cAAgBD,EAEjBG,EAAS,OAAO,IACrB,CACD,CAEA,OAAOX,CACR,CACD,CAeA,MAAMe,UAAoBhB,CAAW,CAMpC,YAAYM,EAAOC,EAAO,CACzB,MAAM,EAGN,KAAK,MAAQD,EAGb,KAAK,MAAQC,CACd,CAUA,MAAM,MAAMN,EAAMC,EAAQC,EAAMC,EAAO,CACtC,GAAIH,EAAM,CACT,GAAI,KAAK,MAAO,CACf,IAAMO,EAAe,KAAK,YACpBC,EAAiB,KAAK,cACtBC,EAAe,KAAK,YAC1B,KAAK,YAAc,GACnB,KAAK,cAAgB,GACrB,KAAK,YAAc,KAEnB,MAAM,KAAK,MAAM,KAAK,KAAK,QAAST,EAAMC,EAAQC,EAAMC,CAAK,EAEzD,KAAK,cACRH,EAAO,KAAK,YACZ,KAAK,QAAQC,EAAQC,EAAMC,EAAOH,CAAI,GAGnC,KAAK,eACR,KAAK,OAAOC,EAAQC,EAAMC,CAAK,EAGhC,IAAMO,EAAU,KAAK,YACfC,EAAU,KAAK,cAMrB,GAJA,KAAK,YAAcJ,EACnB,KAAK,cAAgBC,EACrB,KAAK,YAAcC,EAEfC,EAAS,OAAOV,EACpB,GAAIW,EAAS,OAAO,IACrB,CAEA,QAAWC,KAAOZ,EAAM,CACvB,IAAMa,EAAQb,EAAKY,CAAG,EAEtB,GAAI,OAAOC,GAAU,SAEd,GAAI,MAAM,QAAQA,CAAK,EAC7B,QAASC,EAAI,EAAGA,EAAID,EAAM,OAAQC,GAAK,EAClCD,EAAMC,CAAC,IAAM,MAAQ,OAAOD,EAAMC,CAAC,EAAE,MAAS,WAC3C,MAAM,KAAK,MAAMD,EAAMC,CAAC,EAAGd,EAAMY,EAAKE,CAAC,GAE5CA,UAIOD,IAAU,MAAQ,OAAOA,EAAM,MAAS,UAClD,MAAM,KAAK,MAAMA,EAAOb,EAAMY,EAAK,IAAI,CAEzC,CAEA,GAAI,KAAK,MAAO,CACf,IAAMH,EAAe,KAAK,YACpBD,EAAiB,KAAK,cAC5B,KAAK,YAAc,KACnB,KAAK,cAAgB,GAErB,MAAM,KAAK,MAAM,KAAK,KAAK,QAASR,EAAMC,EAAQC,EAAMC,CAAK,EAEzD,KAAK,cACRH,EAAO,KAAK,YACZ,KAAK,QAAQC,EAAQC,EAAMC,EAAOH,CAAI,GAGnC,KAAK,eACR,KAAK,OAAOC,EAAQC,EAAMC,CAAK,EAGhC,IAAMQ,EAAU,KAAK,cAKrB,GAHA,KAAK,YAAcF,EACnB,KAAK,cAAgBD,EAEjBG,EAAS,OAAO,IACrB,CACD,CAEA,OAAOX,CACR,CACD,CAiBA,SAASgB,EAAKC,EAAK,CAAE,MAAAZ,EAAO,MAAAC,CAAM,EAAG,CAEpC,OADiB,IAAIF,EAAWC,EAAOC,CAAK,EAC5B,MAAMW,EAAK,IAAI,CAChC,CAWA,eAAeC,EAAUD,EAAK,CAAE,MAAAZ,EAAO,MAAAC,CAAM,EAAG,CAE/C,OAAO,MADU,IAAIS,EAAYV,EAAOC,CAAK,EACvB,MAAMW,EAAK,IAAI,CACtC,CAEAtB,EAAQ,UAAYuB,EACpBvB,EAAQ,KAAOqB,EAEf,OAAO,eAAerB,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,CAE7D,EAAE,ICvVF,IAAAwB,GAAAC,GAAAC,IAAA,CAOA,IAAIC,GAAe,mEAAmE,MAAM,EAAE,EAK9FD,GAAQ,OAAS,SAAUE,EAAQ,CACjC,GAAI,GAAKA,GAAUA,EAASD,GAAa,OACvC,OAAOA,GAAaC,CAAM,EAE5B,MAAM,IAAI,UAAU,6BAA+BA,CAAM,CAC3D,EAMAF,GAAQ,OAAS,SAAUG,EAAU,CACnC,IAAIC,EAAO,GACPC,EAAO,GAEPC,EAAU,GACVC,EAAU,IAEVC,EAAO,GACPC,EAAO,GAEPC,EAAO,GACPC,EAAQ,GAERC,EAAe,GACfC,EAAe,GAGnB,OAAIT,GAAQD,GAAYA,GAAYE,EAC1BF,EAAWC,EAIjBE,GAAWH,GAAYA,GAAYI,EAC7BJ,EAAWG,EAAUM,EAI3BJ,GAAQL,GAAYA,GAAYM,EAC1BN,EAAWK,EAAOK,EAIxBV,GAAYO,EACP,GAILP,GAAYQ,EACP,GAIF,EACT,IClEA,IAAAG,GAAAC,GAAAC,IAAA,CAqCA,IAAIC,GAAS,KAcTC,GAAiB,EAGjBC,GAAW,GAAKD,GAGhBE,GAAgBD,GAAW,EAG3BE,GAAuBF,GAQ3B,SAASG,GAAYC,EAAQ,CAC3B,OAAOA,EAAS,GACV,CAACA,GAAW,GAAK,GAClBA,GAAU,GAAK,CACtB,CAQA,SAASC,GAAcD,EAAQ,CAC7B,IAAIE,GAAcF,EAAS,KAAO,EAC9BG,EAAUH,GAAU,EACxB,OAAOE,EACH,CAACC,EACDA,CACN,CAKAV,GAAQ,OAAS,SAA0BO,EAAQ,CACjD,IAAII,EAAU,GACVC,EAEAC,EAAMP,GAAYC,CAAM,EAE5B,GACEK,EAAQC,EAAMT,GACdS,KAASX,GACLW,EAAM,IAGRD,GAASP,IAEXM,GAAWV,GAAO,OAAOW,CAAK,QACvBC,EAAM,GAEf,OAAOF,CACT,EAMAX,GAAQ,OAAS,SAA0Bc,EAAMC,EAAQC,EAAW,CAClE,IAAIC,EAASH,EAAK,OACdI,EAAS,EACTC,EAAQ,EACRC,EAAcR,EAElB,EAAG,CACD,GAAIG,GAAUE,EACZ,MAAM,IAAI,MAAM,4CAA4C,EAI9D,GADAL,EAAQX,GAAO,OAAOa,EAAK,WAAWC,GAAQ,CAAC,EAC3CH,IAAU,GACZ,MAAM,IAAI,MAAM,yBAA2BE,EAAK,OAAOC,EAAS,CAAC,CAAC,EAGpEK,EAAe,CAAC,EAAER,EAAQP,IAC1BO,GAASR,GACTc,EAASA,GAAUN,GAASO,GAC5BA,GAASjB,EACX,OAASkB,GAETJ,EAAU,MAAQR,GAAcU,CAAM,EACtCF,EAAU,KAAOD,CACnB,IC3IA,IAAAM,GAAAC,GAAAC,IAAA,CAiBA,SAASC,GAAOC,EAAOC,EAAOC,EAAe,CAC3C,GAAID,KAASD,EACX,OAAOA,EAAMC,CAAK,EACb,GAAI,UAAU,SAAW,EAC9B,OAAOC,EAEP,MAAM,IAAI,MAAM,IAAMD,EAAQ,2BAA2B,CAE7D,CACAH,GAAQ,OAASC,GAEjB,IAAII,GAAY,iEACZC,GAAgB,gBAEpB,SAASC,GAASC,EAAM,CACtB,IAAIC,EAAQD,EAAK,MAAMH,EAAS,EAChC,OAAKI,EAGE,CACL,OAAQA,EAAM,CAAC,EACf,KAAMA,EAAM,CAAC,EACb,KAAMA,EAAM,CAAC,EACb,KAAMA,EAAM,CAAC,EACb,KAAMA,EAAM,CAAC,CACf,EARS,IASX,CACAT,GAAQ,SAAWO,GAEnB,SAASG,GAAYC,EAAY,CAC/B,IAAIC,EAAM,GACV,OAAID,EAAW,SACbC,GAAOD,EAAW,OAAS,KAE7BC,GAAO,KACHD,EAAW,OACbC,GAAOD,EAAW,KAAO,KAEvBA,EAAW,OACbC,GAAOD,EAAW,MAEhBA,EAAW,OACbC,GAAO,IAAMD,EAAW,MAEtBA,EAAW,OACbC,GAAOD,EAAW,MAEbC,CACT,CACAZ,GAAQ,YAAcU,GAEtB,IAAIG,GAAoB,GASxB,SAASC,GAAWC,EAAG,CACrB,IAAIC,EAAQ,CAAC,EAEb,OAAO,SAASC,EAAO,CACrB,QAASC,EAAI,EAAGA,EAAIF,EAAM,OAAQE,IAChC,GAAIF,EAAME,CAAC,EAAE,QAAUD,EAAO,CAC5B,IAAIE,EAAOH,EAAM,CAAC,EAClB,OAAAA,EAAM,CAAC,EAAIA,EAAME,CAAC,EAClBF,EAAME,CAAC,EAAIC,EACJH,EAAM,CAAC,EAAE,MAClB,CAGF,IAAII,EAASL,EAAEE,CAAK,EAEpB,OAAAD,EAAM,QAAQ,CACZ,MAAAC,EACA,OAAAG,CACF,CAAC,EAEGJ,EAAM,OAASH,IACjBG,EAAM,IAAI,EAGLI,CACT,CACF,CAaA,IAAIC,GAAYP,GAAW,SAAmBQ,EAAO,CACnD,IAAIC,EAAOD,EACPV,EAAML,GAASe,CAAK,EACxB,GAAIV,EAAK,CACP,GAAI,CAACA,EAAI,KACP,OAAOU,EAETC,EAAOX,EAAI,IACb,CAOA,QANIY,EAAaxB,GAAQ,WAAWuB,CAAI,EAGpCE,EAAQ,CAAC,EACTC,EAAQ,EACRR,EAAI,IAIN,GAFAQ,EAAQR,EACRA,EAAIK,EAAK,QAAQ,IAAKG,CAAK,EACvBR,IAAM,GAAI,CACZO,EAAM,KAAKF,EAAK,MAAMG,CAAK,CAAC,EAC5B,KACF,KAEE,KADAD,EAAM,KAAKF,EAAK,MAAMG,EAAOR,CAAC,CAAC,EACxBA,EAAIK,EAAK,QAAUA,EAAKL,CAAC,IAAM,KACpCA,IAKN,QAASS,EAAMC,EAAK,EAAGV,EAAIO,EAAM,OAAS,EAAGP,GAAK,EAAGA,IACnDS,EAAOF,EAAMP,CAAC,EACVS,IAAS,IACXF,EAAM,OAAOP,EAAG,CAAC,EACRS,IAAS,KAClBC,IACSA,EAAK,IACVD,IAAS,IAIXF,EAAM,OAAOP,EAAI,EAAGU,CAAE,EACtBA,EAAK,IAELH,EAAM,OAAOP,EAAG,CAAC,EACjBU,MAUN,OANAL,EAAOE,EAAM,KAAK,GAAG,EAEjBF,IAAS,KACXA,EAAOC,EAAa,IAAM,KAGxBZ,GACFA,EAAI,KAAOW,EACJb,GAAYE,CAAG,GAEjBW,CACT,CAAC,EACDvB,GAAQ,UAAYqB,GAkBpB,SAASQ,GAAKC,EAAOR,EAAO,CACtBQ,IAAU,KACZA,EAAQ,KAENR,IAAU,KACZA,EAAQ,KAEV,IAAIS,EAAWxB,GAASe,CAAK,EACzBU,EAAWzB,GAASuB,CAAK,EAM7B,GALIE,IACFF,EAAQE,EAAS,MAAQ,KAIvBD,GAAY,CAACA,EAAS,OACxB,OAAIC,IACFD,EAAS,OAASC,EAAS,QAEtBtB,GAAYqB,CAAQ,EAG7B,GAAIA,GAAYT,EAAM,MAAMhB,EAAa,EACvC,OAAOgB,EAIT,GAAIU,GAAY,CAACA,EAAS,MAAQ,CAACA,EAAS,KAC1C,OAAAA,EAAS,KAAOV,EACTZ,GAAYsB,CAAQ,EAG7B,IAAIC,EAASX,EAAM,OAAO,CAAC,IAAM,IAC7BA,EACAD,GAAUS,EAAM,QAAQ,OAAQ,EAAE,EAAI,IAAMR,CAAK,EAErD,OAAIU,GACFA,EAAS,KAAOC,EACTvB,GAAYsB,CAAQ,GAEtBC,CACT,CACAjC,GAAQ,KAAO6B,GAEf7B,GAAQ,WAAa,SAAUsB,EAAO,CACpC,OAAOA,EAAM,OAAO,CAAC,IAAM,KAAOjB,GAAU,KAAKiB,CAAK,CACxD,EAQA,SAASY,GAASJ,EAAOR,EAAO,CAC1BQ,IAAU,KACZA,EAAQ,KAGVA,EAAQA,EAAM,QAAQ,MAAO,EAAE,EAO/B,QADIK,EAAQ,EACLb,EAAM,QAAQQ,EAAQ,GAAG,IAAM,GAAG,CACvC,IAAIM,EAAQN,EAAM,YAAY,GAAG,EASjC,GARIM,EAAQ,IAOZN,EAAQA,EAAM,MAAM,EAAGM,CAAK,EACxBN,EAAM,MAAM,mBAAmB,GACjC,OAAOR,EAGT,EAAEa,CACJ,CAGA,OAAO,MAAMA,EAAQ,CAAC,EAAE,KAAK,KAAK,EAAIb,EAAM,OAAOQ,EAAM,OAAS,CAAC,CACrE,CACA9B,GAAQ,SAAWkC,GAEnB,IAAIG,IAAqB,UAAY,CACnC,IAAIC,EAAM,OAAO,OAAO,IAAI,EAC5B,MAAO,EAAE,cAAeA,EAC1B,GAAE,EAEF,SAASC,GAAUC,EAAG,CACpB,OAAOA,CACT,CAWA,SAASC,GAAYC,EAAM,CACzB,OAAIC,GAAcD,CAAI,EACb,IAAMA,EAGRA,CACT,CACA1C,GAAQ,YAAcqC,GAAoBE,GAAWE,GAErD,SAASG,GAAcF,EAAM,CAC3B,OAAIC,GAAcD,CAAI,EACbA,EAAK,MAAM,CAAC,EAGdA,CACT,CACA1C,GAAQ,cAAgBqC,GAAoBE,GAAWK,GAEvD,SAASD,GAAcH,EAAG,CACxB,GAAI,CAACA,EACH,MAAO,GAGT,IAAIK,EAASL,EAAE,OAMf,GAJIK,EAAS,GAITL,EAAE,WAAWK,EAAS,CAAC,IAAM,IAC7BL,EAAE,WAAWK,EAAS,CAAC,IAAM,IAC7BL,EAAE,WAAWK,EAAS,CAAC,IAAM,KAC7BL,EAAE,WAAWK,EAAS,CAAC,IAAM,KAC7BL,EAAE,WAAWK,EAAS,CAAC,IAAM,KAC7BL,EAAE,WAAWK,EAAS,CAAC,IAAM,KAC7BL,EAAE,WAAWK,EAAS,CAAC,IAAM,KAC7BL,EAAE,WAAWK,EAAS,CAAC,IAAM,IAC7BL,EAAE,WAAWK,EAAS,CAAC,IAAM,GAC/B,MAAO,GAGT,QAAS3B,EAAI2B,EAAS,GAAI3B,GAAK,EAAGA,IAChC,GAAIsB,EAAE,WAAWtB,CAAC,IAAM,GACtB,MAAO,GAIX,MAAO,EACT,CAUA,SAAS4B,GAA2BC,EAAUC,EAAUC,EAAqB,CAC3E,IAAIC,EAAMC,GAAOJ,EAAS,OAAQC,EAAS,MAAM,EAqBjD,OApBIE,IAAQ,IAIZA,EAAMH,EAAS,aAAeC,EAAS,aACnCE,IAAQ,KAIZA,EAAMH,EAAS,eAAiBC,EAAS,eACrCE,IAAQ,GAAKD,KAIjBC,EAAMH,EAAS,gBAAkBC,EAAS,gBACtCE,IAAQ,KAIZA,EAAMH,EAAS,cAAgBC,EAAS,cACpCE,IAAQ,GACHA,EAGFC,GAAOJ,EAAS,KAAMC,EAAS,IAAI,CAC5C,CACAhD,GAAQ,2BAA6B8C,GAErC,SAASM,GAAmCL,EAAUC,EAAUC,EAAqB,CACnF,IAAIC,EAkBJ,OAhBAA,EAAMH,EAAS,aAAeC,EAAS,aACnCE,IAAQ,IAIZA,EAAMH,EAAS,eAAiBC,EAAS,eACrCE,IAAQ,GAAKD,KAIjBC,EAAMH,EAAS,gBAAkBC,EAAS,gBACtCE,IAAQ,KAIZA,EAAMH,EAAS,cAAgBC,EAAS,cACpCE,IAAQ,GACHA,EAGFC,GAAOJ,EAAS,KAAMC,EAAS,IAAI,CAC5C,CACAhD,GAAQ,mCAAqCoD,GAW7C,SAASC,GAAoCN,EAAUC,EAAUM,EAAsB,CACrF,IAAIJ,EAAMH,EAAS,cAAgBC,EAAS,cAqB5C,OApBIE,IAAQ,IAIZA,EAAMH,EAAS,gBAAkBC,EAAS,gBACtCE,IAAQ,GAAKI,KAIjBJ,EAAMC,GAAOJ,EAAS,OAAQC,EAAS,MAAM,EACzCE,IAAQ,KAIZA,EAAMH,EAAS,aAAeC,EAAS,aACnCE,IAAQ,KAIZA,EAAMH,EAAS,eAAiBC,EAAS,eACrCE,IAAQ,GACHA,EAGFC,GAAOJ,EAAS,KAAMC,EAAS,IAAI,CAC5C,CACAhD,GAAQ,oCAAsCqD,GAE9C,SAASE,GAA0CR,EAAUC,EAAUM,EAAsB,CAC3F,IAAIJ,EAAMH,EAAS,gBAAkBC,EAAS,gBAgB9C,OAfIE,IAAQ,GAAKI,IAIjBJ,EAAMC,GAAOJ,EAAS,OAAQC,EAAS,MAAM,EACzCE,IAAQ,KAIZA,EAAMH,EAAS,aAAeC,EAAS,aACnCE,IAAQ,KAIZA,EAAMH,EAAS,eAAiBC,EAAS,eACrCE,IAAQ,GACHA,EAGFC,GAAOJ,EAAS,KAAMC,EAAS,IAAI,CAC5C,CACAhD,GAAQ,0CAA4CuD,GAEpD,SAASJ,GAAOK,EAAOC,EAAO,CAC5B,OAAID,IAAUC,EACL,EAGLD,IAAU,KACL,EAGLC,IAAU,KACL,GAGLD,EAAQC,EACH,EAGF,EACT,CAMA,SAASC,GAAoCX,EAAUC,EAAU,CAC/D,IAAIE,EAAMH,EAAS,cAAgBC,EAAS,cAqB5C,OApBIE,IAAQ,IAIZA,EAAMH,EAAS,gBAAkBC,EAAS,gBACtCE,IAAQ,KAIZA,EAAMC,GAAOJ,EAAS,OAAQC,EAAS,MAAM,EACzCE,IAAQ,KAIZA,EAAMH,EAAS,aAAeC,EAAS,aACnCE,IAAQ,KAIZA,EAAMH,EAAS,eAAiBC,EAAS,eACrCE,IAAQ,GACHA,EAGFC,GAAOJ,EAAS,KAAMC,EAAS,IAAI,CAC5C,CACAhD,GAAQ,oCAAsC0D,GAO9C,SAASC,GAAoBC,EAAK,CAChC,OAAO,KAAK,MAAMA,EAAI,QAAQ,iBAAkB,EAAE,CAAC,CACrD,CACA5D,GAAQ,oBAAsB2D,GAM9B,SAASE,GAAiBC,EAAYC,EAAWC,EAAc,CA8B7D,GA7BAD,EAAYA,GAAa,GAErBD,IAEEA,EAAWA,EAAW,OAAS,CAAC,IAAM,KAAOC,EAAU,CAAC,IAAM,MAChED,GAAc,KAOhBC,EAAYD,EAAaC,GAiBvBC,EAAc,CAChB,IAAIC,EAAS1D,GAASyD,CAAY,EAClC,GAAI,CAACC,EACH,MAAM,IAAI,MAAM,kCAAkC,EAEpD,GAAIA,EAAO,KAAM,CAEf,IAAI7B,EAAQ6B,EAAO,KAAK,YAAY,GAAG,EACnC7B,GAAS,IACX6B,EAAO,KAAOA,EAAO,KAAK,UAAU,EAAG7B,EAAQ,CAAC,EAEpD,CACA2B,EAAYlC,GAAKnB,GAAYuD,CAAM,EAAGF,CAAS,CACjD,CAEA,OAAO1C,GAAU0C,CAAS,CAC5B,CACA/D,GAAQ,iBAAmB6D,KCjlB3B,IAAAK,GAAAC,GAAAC,IAAA,CAOA,IAAIC,GAAO,KACPC,GAAM,OAAO,UAAU,eACvBC,GAAe,OAAO,IAAQ,IAQlC,SAASC,IAAW,CAClB,KAAK,OAAS,CAAC,EACf,KAAK,KAAOD,GAAe,IAAI,IAAQ,OAAO,OAAO,IAAI,CAC3D,CAKAC,GAAS,UAAY,SAA4BC,EAAQC,EAAkB,CAEzE,QADIC,EAAM,IAAIH,GACL,EAAI,EAAGI,EAAMH,EAAO,OAAQ,EAAIG,EAAK,IAC5CD,EAAI,IAAIF,EAAO,CAAC,EAAGC,CAAgB,EAErC,OAAOC,CACT,EAQAH,GAAS,UAAU,KAAO,UAAyB,CACjD,OAAOD,GAAe,KAAK,KAAK,KAAO,OAAO,oBAAoB,KAAK,IAAI,EAAE,MAC/E,EAOAC,GAAS,UAAU,IAAM,SAAsBK,EAAMH,EAAkB,CACrE,IAAII,EAAOP,GAAeM,EAAOR,GAAK,YAAYQ,CAAI,EAClDE,EAAcR,GAAe,KAAK,IAAIM,CAAI,EAAIP,GAAI,KAAK,KAAK,KAAMQ,CAAI,EACtEE,EAAM,KAAK,OAAO,QAClB,CAACD,GAAeL,IAClB,KAAK,OAAO,KAAKG,CAAI,EAElBE,IACCR,GACF,KAAK,KAAK,IAAIM,EAAMG,CAAG,EAEvB,KAAK,KAAKF,CAAI,EAAIE,EAGxB,EAOAR,GAAS,UAAU,IAAM,SAAsBK,EAAM,CACnD,GAAIN,GACF,OAAO,KAAK,KAAK,IAAIM,CAAI,EAEzB,IAAIC,EAAOT,GAAK,YAAYQ,CAAI,EAChC,OAAOP,GAAI,KAAK,KAAK,KAAMQ,CAAI,CAEnC,EAOAN,GAAS,UAAU,QAAU,SAA0BK,EAAM,CAC3D,GAAIN,GAAc,CAChB,IAAIS,EAAM,KAAK,KAAK,IAAIH,CAAI,EAC5B,GAAIG,GAAO,EACP,OAAOA,CAEb,KAAO,CACL,IAAIF,EAAOT,GAAK,YAAYQ,CAAI,EAChC,GAAIP,GAAI,KAAK,KAAK,KAAMQ,CAAI,EAC1B,OAAO,KAAK,KAAKA,CAAI,CAEzB,CAEA,MAAM,IAAI,MAAM,IAAMD,EAAO,sBAAsB,CACrD,EAOAL,GAAS,UAAU,GAAK,SAAqBS,EAAM,CACjD,GAAIA,GAAQ,GAAKA,EAAO,KAAK,OAAO,OAClC,OAAO,KAAK,OAAOA,CAAI,EAEzB,MAAM,IAAI,MAAM,yBAA2BA,CAAI,CACjD,EAOAT,GAAS,UAAU,QAAU,UAA4B,CACvD,OAAO,KAAK,OAAO,MAAM,CAC3B,EAEAJ,GAAQ,SAAWI,KCxHnB,IAAAU,GAAAC,GAAAC,IAAA,CAOA,IAAIC,GAAO,KAMX,SAASC,GAAuBC,EAAUC,EAAU,CAElD,IAAIC,EAAQF,EAAS,cACjBG,EAAQF,EAAS,cACjBG,EAAUJ,EAAS,gBACnBK,EAAUJ,EAAS,gBACvB,OAAOE,EAAQD,GAASC,GAASD,GAASG,GAAWD,GAC9CN,GAAK,oCAAoCE,EAAUC,CAAQ,GAAK,CACzE,CAOA,SAASK,IAAc,CACrB,KAAK,OAAS,CAAC,EACf,KAAK,QAAU,GAEf,KAAK,MAAQ,CAAC,cAAe,GAAI,gBAAiB,CAAC,CACrD,CAQAA,GAAY,UAAU,gBACpB,SAA6BC,EAAWC,EAAU,CAChD,KAAK,OAAO,QAAQD,EAAWC,CAAQ,CACzC,EAOFF,GAAY,UAAU,IAAM,SAAyBG,EAAU,CACzDV,GAAuB,KAAK,MAAOU,CAAQ,GAC7C,KAAK,MAAQA,EACb,KAAK,OAAO,KAAKA,CAAQ,IAEzB,KAAK,QAAU,GACf,KAAK,OAAO,KAAKA,CAAQ,EAE7B,EAWAH,GAAY,UAAU,QAAU,UAA+B,CAC7D,OAAK,KAAK,UACR,KAAK,OAAO,KAAKR,GAAK,mCAAmC,EACzD,KAAK,QAAU,IAEV,KAAK,MACd,EAEAD,GAAQ,YAAcS,KC9EtB,IAAAI,GAAAC,GAAAC,IAAA,CAOA,IAAIC,GAAY,KACZC,GAAO,KACPC,GAAW,KAAuB,SAClCC,GAAc,KAA0B,YAU5C,SAASC,GAAmBC,EAAO,CAC5BA,IACHA,EAAQ,CAAC,GAEX,KAAK,MAAQJ,GAAK,OAAOI,EAAO,OAAQ,IAAI,EAC5C,KAAK,YAAcJ,GAAK,OAAOI,EAAO,aAAc,IAAI,EACxD,KAAK,gBAAkBJ,GAAK,OAAOI,EAAO,iBAAkB,EAAK,EACjE,KAAK,sBAAwBJ,GAAK,OAAOI,EAAO,uBAAwB,EAAK,EAC7E,KAAK,SAAW,IAAIH,GACpB,KAAK,OAAS,IAAIA,GAClB,KAAK,UAAY,IAAIC,GACrB,KAAK,iBAAmB,IAC1B,CAEAC,GAAmB,UAAU,SAAW,EAOxCA,GAAmB,cACjB,SAA0CE,EAAoBC,EAAc,CAC1E,IAAIC,EAAaF,EAAmB,WAChCG,EAAY,IAAIL,GAAmB,OAAO,OAAOG,GAAgB,CAAC,EAAG,CACvE,KAAMD,EAAmB,KACzB,WAAYE,CACd,CAAC,CAAC,EACF,OAAAF,EAAmB,YAAY,SAAUI,EAAS,CAChD,IAAIC,EAAa,CACf,UAAW,CACT,KAAMD,EAAQ,cACd,OAAQA,EAAQ,eAClB,CACF,EAEIA,EAAQ,QAAU,OACpBC,EAAW,OAASD,EAAQ,OACxBF,GAAc,OAChBG,EAAW,OAASV,GAAK,SAASO,EAAYG,EAAW,MAAM,GAGjEA,EAAW,SAAW,CACpB,KAAMD,EAAQ,aACd,OAAQA,EAAQ,cAClB,EAEIA,EAAQ,MAAQ,OAClBC,EAAW,KAAOD,EAAQ,OAI9BD,EAAU,WAAWE,CAAU,CACjC,CAAC,EACDL,EAAmB,QAAQ,QAAQ,SAAUM,EAAY,CACvD,IAAIC,EAAiBD,EACjBJ,IAAe,OACjBK,EAAiBZ,GAAK,SAASO,EAAYI,CAAU,GAGlDH,EAAU,SAAS,IAAII,CAAc,GACxCJ,EAAU,SAAS,IAAII,CAAc,EAGvC,IAAIC,EAAUR,EAAmB,iBAAiBM,CAAU,EACxDE,GAAW,MACbL,EAAU,iBAAiBG,EAAYE,CAAO,CAElD,CAAC,EACML,CACT,EAYFL,GAAmB,UAAU,WAC3B,SAAuCC,EAAO,CAC5C,IAAIU,EAAYd,GAAK,OAAOI,EAAO,WAAW,EAC1CW,EAAWf,GAAK,OAAOI,EAAO,WAAY,IAAI,EAC9CY,EAAShB,GAAK,OAAOI,EAAO,SAAU,IAAI,EAC1Ca,EAAOjB,GAAK,OAAOI,EAAO,OAAQ,IAAI,EAEtC,CAAC,KAAK,iBACJ,KAAK,iBAAiBU,EAAWC,EAAUC,EAAQC,CAAI,IAAM,KAK/DD,GAAU,OACZA,EAAS,OAAOA,CAAM,EACjB,KAAK,SAAS,IAAIA,CAAM,GAC3B,KAAK,SAAS,IAAIA,CAAM,GAIxBC,GAAQ,OACVA,EAAO,OAAOA,CAAI,EACb,KAAK,OAAO,IAAIA,CAAI,GACvB,KAAK,OAAO,IAAIA,CAAI,GAIxB,KAAK,UAAU,IAAI,CACjB,cAAeH,EAAU,KACzB,gBAAiBA,EAAU,OAC3B,aAAcC,GAAY,MAAQA,EAAS,KAC3C,eAAgBA,GAAY,MAAQA,EAAS,OAC7C,OAAQC,EACR,KAAMC,CACR,CAAC,EACH,EAKFd,GAAmB,UAAU,iBAC3B,SAA6Ce,EAAaC,EAAgB,CACxE,IAAIH,EAASE,EACT,KAAK,aAAe,OACtBF,EAAShB,GAAK,SAAS,KAAK,YAAagB,CAAM,GAG7CG,GAAkB,MAGf,KAAK,mBACR,KAAK,iBAAmB,OAAO,OAAO,IAAI,GAE5C,KAAK,iBAAiBnB,GAAK,YAAYgB,CAAM,CAAC,EAAIG,GACzC,KAAK,mBAGd,OAAO,KAAK,iBAAiBnB,GAAK,YAAYgB,CAAM,CAAC,EACjD,OAAO,KAAK,KAAK,gBAAgB,EAAE,SAAW,IAChD,KAAK,iBAAmB,MAG9B,EAkBFb,GAAmB,UAAU,eAC3B,SAA2CE,EAAoBa,EAAaE,EAAgB,CAC1F,IAAIT,EAAaO,EAEjB,GAAIA,GAAe,KAAM,CACvB,GAAIb,EAAmB,MAAQ,KAC7B,MAAM,IAAI,MACR,8IAEF,EAEFM,EAAaN,EAAmB,IAClC,CACA,IAAIE,EAAa,KAAK,YAElBA,GAAc,OAChBI,EAAaX,GAAK,SAASO,EAAYI,CAAU,GAInD,IAAIU,EAAa,IAAIpB,GACjBqB,EAAW,IAAIrB,GAGnB,KAAK,UAAU,gBAAgB,SAAUQ,EAAS,CAChD,GAAIA,EAAQ,SAAWE,GAAcF,EAAQ,cAAgB,KAAM,CAEjE,IAAIM,EAAWV,EAAmB,oBAAoB,CACpD,KAAMI,EAAQ,aACd,OAAQA,EAAQ,cAClB,CAAC,EACGM,EAAS,QAAU,OAErBN,EAAQ,OAASM,EAAS,OACtBK,GAAkB,OACpBX,EAAQ,OAAST,GAAK,KAAKoB,EAAgBX,EAAQ,MAAM,GAEvDF,GAAc,OAChBE,EAAQ,OAAST,GAAK,SAASO,EAAYE,EAAQ,MAAM,GAE3DA,EAAQ,aAAeM,EAAS,KAChCN,EAAQ,eAAiBM,EAAS,OAC9BA,EAAS,MAAQ,OACnBN,EAAQ,KAAOM,EAAS,MAG9B,CAEA,IAAIC,EAASP,EAAQ,OACjBO,GAAU,MAAQ,CAACK,EAAW,IAAIL,CAAM,GAC1CK,EAAW,IAAIL,CAAM,EAGvB,IAAIC,EAAOR,EAAQ,KACfQ,GAAQ,MAAQ,CAACK,EAAS,IAAIL,CAAI,GACpCK,EAAS,IAAIL,CAAI,CAGrB,EAAG,IAAI,EACP,KAAK,SAAWI,EAChB,KAAK,OAASC,EAGdjB,EAAmB,QAAQ,QAAQ,SAAUM,EAAY,CACvD,IAAIE,EAAUR,EAAmB,iBAAiBM,CAAU,EACxDE,GAAW,OACTO,GAAkB,OACpBT,EAAaX,GAAK,KAAKoB,EAAgBT,CAAU,GAE/CJ,GAAc,OAChBI,EAAaX,GAAK,SAASO,EAAYI,CAAU,GAEnD,KAAK,iBAAiBA,EAAYE,CAAO,EAE7C,EAAG,IAAI,CACT,EAaFV,GAAmB,UAAU,iBAC3B,SAA4CoB,EAAYC,EAAWC,EACvBC,EAAO,CAKjD,GAAIF,GAAa,OAAOA,EAAU,MAAS,UAAY,OAAOA,EAAU,QAAW,SAAU,CAC3F,IAAIG,EAAU,+OAId,GAAI,KAAK,sBACP,OAAI,OAAO,QAAY,KAAe,QAAQ,MAC5C,QAAQ,KAAKA,CAAO,EAEf,GAEP,MAAM,IAAI,MAAMA,CAAO,CAE3B,CAEA,GAAI,EAAAJ,GAAc,SAAUA,GAAc,WAAYA,GAC/CA,EAAW,KAAO,GAAKA,EAAW,QAAU,GAC5C,CAACC,GAAa,CAACC,GAAW,CAACC,GAI7B,IAAIH,GAAc,SAAUA,GAAc,WAAYA,GAC/CC,GAAa,SAAUA,GAAa,WAAYA,GAChDD,EAAW,KAAO,GAAKA,EAAW,QAAU,GAC5CC,EAAU,KAAO,GAAKA,EAAU,QAAU,GAC1CC,EAEV,OAGA,IAAIE,EAAU,oBAAsB,KAAK,UAAU,CACjD,UAAWJ,EACX,OAAQE,EACR,SAAUD,EACV,KAAME,CACR,CAAC,EAED,GAAI,KAAK,sBACP,OAAI,OAAO,QAAY,KAAe,QAAQ,MAC5C,QAAQ,KAAKC,CAAO,EAEf,GAEP,MAAM,IAAI,MAAMA,CAAO,EAG7B,EAMFxB,GAAmB,UAAU,mBAC3B,UAAgD,CAc9C,QAbIyB,EAA0B,EAC1BC,EAAwB,EACxBC,EAAyB,EACzBC,EAAuB,EACvBC,EAAe,EACfC,EAAiB,EACjBC,EAAS,GACTC,EACA1B,EACA2B,EACAC,EAEAC,EAAW,KAAK,UAAU,QAAQ,EAC7BC,EAAI,EAAGC,EAAMF,EAAS,OAAQC,EAAIC,EAAKD,IAAK,CAInD,GAHA9B,EAAU6B,EAASC,CAAC,EACpBJ,EAAO,GAEH1B,EAAQ,gBAAkBoB,EAE5B,IADAD,EAA0B,EACnBnB,EAAQ,gBAAkBoB,GAC/BM,GAAQ,IACRN,YAIEU,EAAI,EAAG,CACT,GAAI,CAACvC,GAAK,oCAAoCS,EAAS6B,EAASC,EAAI,CAAC,CAAC,EACpE,SAEFJ,GAAQ,GACV,CAGFA,GAAQpC,GAAU,OAAOU,EAAQ,gBACJmB,CAAuB,EACpDA,EAA0BnB,EAAQ,gBAE9BA,EAAQ,QAAU,OACpB4B,EAAY,KAAK,SAAS,QAAQ5B,EAAQ,MAAM,EAChD0B,GAAQpC,GAAU,OAAOsC,EAAYJ,CAAc,EACnDA,EAAiBI,EAGjBF,GAAQpC,GAAU,OAAOU,EAAQ,aAAe,EACnBsB,CAAoB,EACjDA,EAAuBtB,EAAQ,aAAe,EAE9C0B,GAAQpC,GAAU,OAAOU,EAAQ,eACJqB,CAAsB,EACnDA,EAAyBrB,EAAQ,eAE7BA,EAAQ,MAAQ,OAClB2B,EAAU,KAAK,OAAO,QAAQ3B,EAAQ,IAAI,EAC1C0B,GAAQpC,GAAU,OAAOqC,EAAUJ,CAAY,EAC/CA,EAAeI,IAInBF,GAAUC,CACZ,CAEA,OAAOD,CACT,EAEF/B,GAAmB,UAAU,wBAC3B,SAAmDsC,EAAUC,EAAa,CACxE,OAAOD,EAAS,IAAI,SAAUzB,EAAQ,CACpC,GAAI,CAAC,KAAK,iBACR,OAAO,KAEL0B,GAAe,OACjB1B,EAAShB,GAAK,SAAS0C,EAAa1B,CAAM,GAE5C,IAAI2B,EAAM3C,GAAK,YAAYgB,CAAM,EACjC,OAAO,OAAO,UAAU,eAAe,KAAK,KAAK,iBAAkB2B,CAAG,EAClE,KAAK,iBAAiBA,CAAG,EACzB,IACN,EAAG,IAAI,CACT,EAKFxC,GAAmB,UAAU,OAC3B,UAAqC,CACnC,IAAIyC,EAAM,CACR,QAAS,KAAK,SACd,QAAS,KAAK,SAAS,QAAQ,EAC/B,MAAO,KAAK,OAAO,QAAQ,EAC3B,SAAU,KAAK,mBAAmB,CACpC,EACA,OAAI,KAAK,OAAS,OAChBA,EAAI,KAAO,KAAK,OAEd,KAAK,aAAe,OACtBA,EAAI,WAAa,KAAK,aAEpB,KAAK,mBACPA,EAAI,eAAiB,KAAK,wBAAwBA,EAAI,QAASA,EAAI,UAAU,GAGxEA,CACT,EAKFzC,GAAmB,UAAU,SAC3B,UAAuC,CACrC,OAAO,KAAK,UAAU,KAAK,OAAO,CAAC,CACrC,EAEFL,GAAQ,mBAAqBK,KC3b7B,IAAA0C,GAAAC,GAAAC,IAAA,CAOAA,GAAQ,qBAAuB,EAC/BA,GAAQ,kBAAoB,EAe5B,SAASC,GAAgBC,EAAMC,EAAOC,EAASC,EAAWC,EAAUC,EAAO,CAUzE,IAAIC,EAAM,KAAK,OAAOL,EAAQD,GAAQ,CAAC,EAAIA,EACvCO,EAAMH,EAASF,EAASC,EAAUG,CAAG,EAAG,EAAI,EAChD,OAAIC,IAAQ,EAEHD,EAEAC,EAAM,EAETN,EAAQK,EAAM,EAETP,GAAgBO,EAAKL,EAAOC,EAASC,EAAWC,EAAUC,CAAK,EAKpEA,GAASP,GAAQ,kBACZG,EAAQE,EAAU,OAASF,EAAQ,GAEnCK,EAKLA,EAAMN,EAAO,EAERD,GAAgBC,EAAMM,EAAKJ,EAASC,EAAWC,EAAUC,CAAK,EAInEA,GAASP,GAAQ,kBACZQ,EAEAN,EAAO,EAAI,GAAKA,CAG7B,CAoBAF,GAAQ,OAAS,SAAgBI,EAASC,EAAWC,EAAUC,EAAO,CACpE,GAAIF,EAAU,SAAW,EACvB,MAAO,GAGT,IAAIK,EAAQT,GAAgB,GAAII,EAAU,OAAQD,EAASC,EAC/BC,EAAUC,GAASP,GAAQ,oBAAoB,EAC3E,GAAIU,EAAQ,EACV,MAAO,GAMT,KAAOA,EAAQ,GAAK,GACdJ,EAASD,EAAUK,CAAK,EAAGL,EAAUK,EAAQ,CAAC,EAAG,EAAI,IAAM,GAG/D,EAAEA,EAGJ,OAAOA,CACT,IC9GA,IAAAC,GAAAC,GAAAC,IAAA,CAiBA,SAASC,GAAaC,EAAY,CAYlC,SAASC,EAAKC,EAAKC,EAAGC,EAAG,CACvB,IAAIC,EAAOH,EAAIC,CAAC,EAChBD,EAAIC,CAAC,EAAID,EAAIE,CAAC,EACdF,EAAIE,CAAC,EAAIC,CACX,CAUA,SAASC,EAAiBC,EAAKC,EAAM,CACnC,OAAO,KAAK,MAAMD,EAAO,KAAK,OAAO,GAAKC,EAAOD,EAAK,CACxD,CAcA,SAASE,EAAYP,EAAKF,EAAYU,EAAGC,EAAG,CAK1C,GAAID,EAAIC,EAAG,CAYT,IAAIC,EAAaN,EAAiBI,EAAGC,CAAC,EAClCE,EAAIH,EAAI,EAEZT,EAAKC,EAAKU,EAAYD,CAAC,EASvB,QARIG,EAAQZ,EAAIS,CAAC,EAQRI,EAAIL,EAAGK,EAAIJ,EAAGI,IACjBf,EAAWE,EAAIa,CAAC,EAAGD,EAAO,EAAK,GAAK,IACtCD,GAAK,EACLZ,EAAKC,EAAKW,EAAGE,CAAC,GAIlBd,EAAKC,EAAKW,EAAI,EAAGE,CAAC,EAClB,IAAIC,EAAIH,EAAI,EAIZJ,EAAYP,EAAKF,EAAYU,EAAGM,EAAI,CAAC,EACrCP,EAAYP,EAAKF,EAAYgB,EAAI,EAAGL,CAAC,CACvC,CACF,CAEE,OAAOF,CACT,CAEA,SAASQ,GAAUjB,EAAY,CAC7B,IAAIkB,EAAWnB,GAAa,SAAS,EAErC,OADiB,IAAI,SAAS,UAAUmB,CAAQ,EAAE,EAAE,EAClClB,CAAU,CAC9B,CAWA,IAAImB,GAAY,IAAI,QACpBrB,GAAQ,UAAY,SAAUI,EAAKF,EAAYoB,EAAQ,EAAG,CACxD,IAAIX,EAAcU,GAAU,IAAInB,CAAU,EACtCS,IAAgB,SAClBA,EAAcQ,GAAUjB,CAAU,EAClCmB,GAAU,IAAInB,EAAYS,CAAW,GAEvCA,EAAYP,EAAKF,EAAYoB,EAAOlB,EAAI,OAAS,CAAC,CACpD,ICnIA,IAAAmB,GAAAC,GAAAC,IAAA,CAOA,IAAIC,GAAO,KACPC,GAAe,KACfC,GAAW,KAAuB,SAClCC,GAAY,KACZC,GAAY,KAAwB,UAExC,SAASC,GAAkBC,EAAYC,EAAe,CACpD,IAAIC,EAAYF,EAChB,OAAI,OAAOA,GAAe,WACxBE,EAAYR,GAAK,oBAAoBM,CAAU,GAG1CE,EAAU,UAAY,KACzB,IAAIC,GAAyBD,EAAWD,CAAa,EACrD,IAAIG,GAAuBF,EAAWD,CAAa,CACzD,CAEAF,GAAkB,cAAgB,SAASC,EAAYC,EAAe,CACpE,OAAOG,GAAuB,cAAcJ,EAAYC,CAAa,CACvE,EAKAF,GAAkB,UAAU,SAAW,EAgCvCA,GAAkB,UAAU,oBAAsB,KAClD,OAAO,eAAeA,GAAkB,UAAW,qBAAsB,CACvE,aAAc,GACd,WAAY,GACZ,IAAK,UAAY,CACf,OAAK,KAAK,qBACR,KAAK,eAAe,KAAK,UAAW,KAAK,UAAU,EAG9C,KAAK,mBACd,CACF,CAAC,EAEDA,GAAkB,UAAU,mBAAqB,KACjD,OAAO,eAAeA,GAAkB,UAAW,oBAAqB,CACtE,aAAc,GACd,WAAY,GACZ,IAAK,UAAY,CACf,OAAK,KAAK,oBACR,KAAK,eAAe,KAAK,UAAW,KAAK,UAAU,EAG9C,KAAK,kBACd,CACF,CAAC,EAEDA,GAAkB,UAAU,wBAC1B,SAAkDM,EAAMC,EAAO,CAC7D,IAAIC,EAAIF,EAAK,OAAOC,CAAK,EACzB,OAAOC,IAAM,KAAOA,IAAM,GAC5B,EAOFR,GAAkB,UAAU,eAC1B,SAAyCM,EAAMG,EAAa,CAC1D,MAAM,IAAI,MAAM,0CAA0C,CAC5D,EAEFT,GAAkB,gBAAkB,EACpCA,GAAkB,eAAiB,EAEnCA,GAAkB,qBAAuB,EACzCA,GAAkB,kBAAoB,EAkBtCA,GAAkB,UAAU,YAC1B,SAAuCU,EAAWC,EAAUC,EAAQ,CAClE,IAAIC,EAAUF,GAAY,KACtBG,EAAQF,GAAUZ,GAAkB,gBAEpCe,EACJ,OAAQD,EAAO,CACf,KAAKd,GAAkB,gBACrBe,EAAW,KAAK,mBAChB,MACF,KAAKf,GAAkB,eACrBe,EAAW,KAAK,kBAChB,MACF,QACE,MAAM,IAAI,MAAM,6BAA6B,CAC/C,CAQA,QANIC,EAAa,KAAK,WAClBC,EAAgBP,EAAU,KAAKG,CAAO,EACtCK,EAAQ,KAAK,OACbC,EAAU,KAAK,SACfC,EAAe,KAAK,cAEfC,EAAI,EAAGC,EAAIP,EAAS,OAAQM,EAAIC,EAAGD,IAAK,CAC/C,IAAIE,EAAUR,EAASM,CAAC,EACpBG,EAASD,EAAQ,SAAW,KAAO,KAAOJ,EAAQ,GAAGI,EAAQ,MAAM,EACpEC,IAAW,OACZA,EAAS7B,GAAK,iBAAiBqB,EAAYQ,EAAQJ,CAAY,GAEjEH,EAAc,CACZ,OAAQO,EACR,cAAeD,EAAQ,cACvB,gBAAiBA,EAAQ,gBACzB,aAAcA,EAAQ,aACtB,eAAgBA,EAAQ,eACxB,KAAMA,EAAQ,OAAS,KAAO,KAAOL,EAAM,GAAGK,EAAQ,IAAI,CAC5D,CAAC,CACH,CACF,EAwBFvB,GAAkB,UAAU,yBAC1B,SAAoDyB,EAAO,CACzD,IAAIC,EAAO/B,GAAK,OAAO8B,EAAO,MAAM,EAMhCE,EAAS,CACX,OAAQhC,GAAK,OAAO8B,EAAO,QAAQ,EACnC,aAAcC,EACd,eAAgB/B,GAAK,OAAO8B,EAAO,SAAU,CAAC,CAChD,EAGA,GADAE,EAAO,OAAS,KAAK,iBAAiBA,EAAO,MAAM,EAC/CA,EAAO,OAAS,EAClB,MAAO,CAAC,EAGV,IAAIZ,EAAW,CAAC,EAEZR,EAAQ,KAAK,aAAaoB,EACA,KAAK,kBACL,eACA,iBACAhC,GAAK,2BACLC,GAAa,iBAAiB,EAC5D,GAAIW,GAAS,EAAG,CACd,IAAIgB,EAAU,KAAK,kBAAkBhB,CAAK,EAE1C,GAAIkB,EAAM,SAAW,OAOnB,QANIG,EAAeL,EAAQ,aAMpBA,GAAWA,EAAQ,eAAiBK,GACzCb,EAAS,KAAK,CACZ,KAAMpB,GAAK,OAAO4B,EAAS,gBAAiB,IAAI,EAChD,OAAQ5B,GAAK,OAAO4B,EAAS,kBAAmB,IAAI,EACpD,WAAY5B,GAAK,OAAO4B,EAAS,sBAAuB,IAAI,CAC9D,CAAC,EAEDA,EAAU,KAAK,kBAAkB,EAAEhB,CAAK,MAS1C,SANIsB,EAAiBN,EAAQ,eAMtBA,GACAA,EAAQ,eAAiBG,GACzBH,EAAQ,gBAAkBM,GAC/Bd,EAAS,KAAK,CACZ,KAAMpB,GAAK,OAAO4B,EAAS,gBAAiB,IAAI,EAChD,OAAQ5B,GAAK,OAAO4B,EAAS,kBAAmB,IAAI,EACpD,WAAY5B,GAAK,OAAO4B,EAAS,sBAAuB,IAAI,CAC9D,CAAC,EAEDA,EAAU,KAAK,kBAAkB,EAAEhB,CAAK,CAG9C,CAEA,OAAOQ,CACT,EAEFrB,GAAQ,kBAAoBM,GAoC5B,SAASK,GAAuBJ,EAAYC,EAAe,CACzD,IAAIC,EAAYF,EACZ,OAAOA,GAAe,WACxBE,EAAYR,GAAK,oBAAoBM,CAAU,GAGjD,IAAI6B,EAAUnC,GAAK,OAAOQ,EAAW,SAAS,EAC1CgB,EAAUxB,GAAK,OAAOQ,EAAW,SAAS,EAG1Ce,EAAQvB,GAAK,OAAOQ,EAAW,QAAS,CAAC,CAAC,EAC1Ca,EAAarB,GAAK,OAAOQ,EAAW,aAAc,IAAI,EACtD4B,EAAiBpC,GAAK,OAAOQ,EAAW,iBAAkB,IAAI,EAC9DY,EAAWpB,GAAK,OAAOQ,EAAW,UAAU,EAC5C6B,EAAOrC,GAAK,OAAOQ,EAAW,OAAQ,IAAI,EAI9C,GAAI2B,GAAW,KAAK,SAClB,MAAM,IAAI,MAAM,wBAA0BA,CAAO,EAG/Cd,IACFA,EAAarB,GAAK,UAAUqB,CAAU,GAGxCG,EAAUA,EACP,IAAI,MAAM,EAIV,IAAIxB,GAAK,SAAS,EAKlB,IAAI,SAAU6B,EAAQ,CACrB,OAAOR,GAAcrB,GAAK,WAAWqB,CAAU,GAAKrB,GAAK,WAAW6B,CAAM,EACtE7B,GAAK,SAASqB,EAAYQ,CAAM,EAChCA,CACN,CAAC,EAMH,KAAK,OAAS3B,GAAS,UAAUqB,EAAM,IAAI,MAAM,EAAG,EAAI,EACxD,KAAK,SAAWrB,GAAS,UAAUsB,EAAS,EAAI,EAEhD,KAAK,iBAAmB,KAAK,SAAS,QAAQ,EAAE,IAAI,SAAUc,EAAG,CAC/D,OAAOtC,GAAK,iBAAiBqB,EAAYiB,EAAG/B,CAAa,CAC3D,CAAC,EAED,KAAK,WAAac,EAClB,KAAK,eAAiBe,EACtB,KAAK,UAAYhB,EACjB,KAAK,cAAgBb,EACrB,KAAK,KAAO8B,CACd,CAEA3B,GAAuB,UAAY,OAAO,OAAOL,GAAkB,SAAS,EAC5EK,GAAuB,UAAU,SAAWL,GAM5CK,GAAuB,UAAU,iBAAmB,SAAS6B,EAAS,CACpE,IAAIC,EAAiBD,EAKrB,GAJI,KAAK,YAAc,OACrBC,EAAiBxC,GAAK,SAAS,KAAK,WAAYwC,CAAc,GAG5D,KAAK,SAAS,IAAIA,CAAc,EAClC,OAAO,KAAK,SAAS,QAAQA,CAAc,EAK7C,IAAId,EACJ,IAAKA,EAAI,EAAGA,EAAI,KAAK,iBAAiB,OAAQ,EAAEA,EAC9C,GAAI,KAAK,iBAAiBA,CAAC,GAAKa,EAC9B,OAAOb,EAIX,MAAO,EACT,EAWAhB,GAAuB,cACrB,SAAyCJ,EAAYC,EAAe,CAClE,IAAIkC,EAAM,OAAO,OAAO/B,GAAuB,SAAS,EAEpDa,EAAQkB,EAAI,OAASvC,GAAS,UAAUI,EAAW,OAAO,QAAQ,EAAG,EAAI,EACzEkB,EAAUiB,EAAI,SAAWvC,GAAS,UAAUI,EAAW,SAAS,QAAQ,EAAG,EAAI,EACnFmC,EAAI,WAAanC,EAAW,YAC5BmC,EAAI,eAAiBnC,EAAW,wBAAwBmC,EAAI,SAAS,QAAQ,EACrBA,EAAI,UAAU,EACtEA,EAAI,KAAOnC,EAAW,MACtBmC,EAAI,cAAgBlC,EACpBkC,EAAI,iBAAmBA,EAAI,SAAS,QAAQ,EAAE,IAAI,SAAUH,EAAG,CAC7D,OAAOtC,GAAK,iBAAiByC,EAAI,WAAYH,EAAG/B,CAAa,CAC/D,CAAC,EAWD,QAJImC,EAAoBpC,EAAW,UAAU,QAAQ,EAAE,MAAM,EACzDqC,EAAwBF,EAAI,oBAAsB,CAAC,EACnDG,EAAuBH,EAAI,mBAAqB,CAAC,EAE5Cf,EAAI,EAAGmB,EAASH,EAAkB,OAAQhB,EAAImB,EAAQnB,IAAK,CAClE,IAAIoB,EAAaJ,EAAkBhB,CAAC,EAChCqB,EAAc,IAAIC,GACtBD,EAAY,cAAgBD,EAAW,cACvCC,EAAY,gBAAkBD,EAAW,gBAErCA,EAAW,SACbC,EAAY,OAASvB,EAAQ,QAAQsB,EAAW,MAAM,EACtDC,EAAY,aAAeD,EAAW,aACtCC,EAAY,eAAiBD,EAAW,eAEpCA,EAAW,OACbC,EAAY,KAAOxB,EAAM,QAAQuB,EAAW,IAAI,GAGlDF,EAAqB,KAAKG,CAAW,GAGvCJ,EAAsB,KAAKI,CAAW,CACxC,CAEA,OAAA3C,GAAUqC,EAAI,mBAAoBzC,GAAK,0BAA0B,EAE1DyC,CACT,EAKF/B,GAAuB,UAAU,SAAW,EAK5C,OAAO,eAAeA,GAAuB,UAAW,UAAW,CACjE,IAAK,UAAY,CACf,OAAO,KAAK,iBAAiB,MAAM,CACrC,CACF,CAAC,EAKD,SAASsC,IAAU,CACjB,KAAK,cAAgB,EACrB,KAAK,gBAAkB,EACvB,KAAK,OAAS,KACd,KAAK,aAAe,KACpB,KAAK,eAAiB,KACtB,KAAK,KAAO,IACd,CAQA,IAAMC,GAAmBjD,GAAK,0CAC9B,SAASkD,GAAcC,EAAOC,EAAO,CACnC,IAAIC,EAAIF,EAAM,OACVxB,EAAIwB,EAAM,OAASC,EACvB,GAAI,EAAAzB,GAAK,GAEF,GAAIA,GAAK,EAAG,CACjB,IAAI2B,EAAIH,EAAMC,CAAK,EACfG,EAAIJ,EAAMC,EAAQ,CAAC,EACnBH,GAAiBK,EAAGC,CAAC,EAAI,IAC3BJ,EAAMC,CAAK,EAAIG,EACfJ,EAAMC,EAAQ,CAAC,EAAIE,EAEvB,SAAW3B,EAAI,GACb,QAAS,EAAIyB,EAAO,EAAIC,EAAG,IACzB,QAASG,EAAI,EAAGA,EAAIJ,EAAOI,IAAK,CAC9B,IAAIF,EAAIH,EAAMK,EAAI,CAAC,EACfD,EAAIJ,EAAMK,CAAC,EACf,GAAIP,GAAiBK,EAAGC,CAAC,GAAK,EAC5B,MAEFJ,EAAMK,EAAI,CAAC,EAAID,EACfJ,EAAMK,CAAC,EAAIF,CACb,MAGFlD,GAAU+C,EAAOF,GAAkBG,CAAK,CAE5C,CACA1C,GAAuB,UAAU,eAC/B,SAAyCC,EAAMG,EAAa,CAC1D,IAAI2C,EAAgB,EAChBC,EAA0B,EAC1BC,EAAuB,EACvBC,EAAyB,EACzBC,EAAiB,EACjBC,EAAe,EACfjB,EAASlC,EAAK,OACdC,EAAQ,EACRmD,EAAiB,CAAC,EAClBC,EAAO,CAAC,EACRC,EAAmB,CAAC,EACpBvB,EAAoB,CAAC,EACrBd,EAASsC,EAAKC,EAASC,EAAKC,EAEhC,IAAIC,EAAgB,EACpB,KAAO1D,EAAQiC,GACb,GAAIlC,EAAK,OAAOC,CAAK,IAAM,IACzB6C,IACA7C,IACA8C,EAA0B,EAE1BR,GAAcR,EAAmB4B,CAAa,EAC9CA,EAAgB5B,EAAkB,eAE3B/B,EAAK,OAAOC,CAAK,IAAM,IAC9BA,QAEG,CAIH,IAHAgB,EAAU,IAAIoB,GACdpB,EAAQ,cAAgB6B,EAEnBW,EAAMxD,EAAOwD,EAAMvB,GAClB,MAAK,wBAAwBlC,EAAMyD,CAAG,EADZA,IAC9B,CAOF,IAHAF,EAAMvD,EAAK,MAAMC,EAAOwD,CAAG,EAE3BD,EAAU,CAAC,EACJvD,EAAQwD,GACbjE,GAAU,OAAOQ,EAAMC,EAAOoD,CAAI,EAClCK,EAAQL,EAAK,MACbpD,EAAQoD,EAAK,KACbG,EAAQ,KAAKE,CAAK,EAGpB,GAAIF,EAAQ,SAAW,EACrB,MAAM,IAAI,MAAM,wCAAwC,EAG1D,GAAIA,EAAQ,SAAW,EACrB,MAAM,IAAI,MAAM,wCAAwC,EA8B1D,GA1BAvC,EAAQ,gBAAkB8B,EAA0BS,EAAQ,CAAC,EAC7DT,EAA0B9B,EAAQ,gBAE9BuC,EAAQ,OAAS,IAEnBvC,EAAQ,OAASiC,EAAiBM,EAAQ,CAAC,EAC3CN,GAAkBM,EAAQ,CAAC,EAG3BvC,EAAQ,aAAe+B,EAAuBQ,EAAQ,CAAC,EACvDR,EAAuB/B,EAAQ,aAE/BA,EAAQ,cAAgB,EAGxBA,EAAQ,eAAiBgC,EAAyBO,EAAQ,CAAC,EAC3DP,EAAyBhC,EAAQ,eAE7BuC,EAAQ,OAAS,IAEnBvC,EAAQ,KAAOkC,EAAeK,EAAQ,CAAC,EACvCL,GAAgBK,EAAQ,CAAC,IAI7BzB,EAAkB,KAAKd,CAAO,EAC1B,OAAOA,EAAQ,cAAiB,SAAU,CAC5C,IAAI2C,EAAgB3C,EAAQ,OAC5B,KAAOqC,EAAiB,QAAUM,GAChCN,EAAiB,KAAK,IAAI,EAExBA,EAAiBM,CAAa,IAAM,OACtCN,EAAiBM,CAAa,EAAI,CAAC,GAErCN,EAAiBM,CAAa,EAAE,KAAK3C,CAAO,CAC9C,CACF,CAGFsB,GAAcR,EAAmB4B,CAAa,EAC9C,KAAK,oBAAsB5B,EAE3B,QAAShB,EAAI,EAAGA,EAAIuC,EAAiB,OAAQvC,IACvCuC,EAAiBvC,CAAC,GAAK,MACzBtB,GAAU6D,EAAiBvC,CAAC,EAAG1B,GAAK,kCAAkC,EAG1E,KAAK,mBAAqB,CAAC,EAAE,OAAO,GAAGiE,CAAgB,CACzD,EAMFvD,GAAuB,UAAU,aAC/B,SAAuC8D,EAASC,EAAWC,EACpBC,EAAaC,EAAaC,EAAO,CAMtE,GAAIL,EAAQE,CAAS,GAAK,EACxB,MAAM,IAAI,UAAU,gDACEF,EAAQE,CAAS,CAAC,EAE1C,GAAIF,EAAQG,CAAW,EAAI,EACzB,MAAM,IAAI,UAAU,kDACEH,EAAQG,CAAW,CAAC,EAG5C,OAAO1E,GAAa,OAAOuE,EAASC,EAAWG,EAAaC,CAAK,CACnE,EAMFnE,GAAuB,UAAU,mBAC/B,UAAgD,CAC9C,QAASE,EAAQ,EAAGA,EAAQ,KAAK,mBAAmB,OAAQ,EAAEA,EAAO,CACnE,IAAIgB,EAAU,KAAK,mBAAmBhB,CAAK,EAM3C,GAAIA,EAAQ,EAAI,KAAK,mBAAmB,OAAQ,CAC9C,IAAIkE,EAAc,KAAK,mBAAmBlE,EAAQ,CAAC,EAEnD,GAAIgB,EAAQ,gBAAkBkD,EAAY,cAAe,CACvDlD,EAAQ,oBAAsBkD,EAAY,gBAAkB,EAC5D,QACF,CACF,CAGAlD,EAAQ,oBAAsB,GAChC,CACF,EA0BFlB,GAAuB,UAAU,oBAC/B,SAA+CoB,EAAO,CACpD,IAAIE,EAAS,CACX,cAAehC,GAAK,OAAO8B,EAAO,MAAM,EACxC,gBAAiB9B,GAAK,OAAO8B,EAAO,QAAQ,CAC9C,EAEIlB,EAAQ,KAAK,aACfoB,EACA,KAAK,mBACL,gBACA,kBACAhC,GAAK,oCACLA,GAAK,OAAO8B,EAAO,OAAQzB,GAAkB,oBAAoB,CACnE,EAEA,GAAIO,GAAS,EAAG,CACd,IAAIgB,EAAU,KAAK,mBAAmBhB,CAAK,EAE3C,GAAIgB,EAAQ,gBAAkBI,EAAO,cAAe,CAClD,IAAIH,EAAS7B,GAAK,OAAO4B,EAAS,SAAU,IAAI,EAC5CC,IAAW,OACbA,EAAS,KAAK,SAAS,GAAGA,CAAM,EAChCA,EAAS7B,GAAK,iBAAiB,KAAK,WAAY6B,EAAQ,KAAK,aAAa,GAE5E,IAAIkD,EAAO/E,GAAK,OAAO4B,EAAS,OAAQ,IAAI,EAC5C,OAAImD,IAAS,OACXA,EAAO,KAAK,OAAO,GAAGA,CAAI,GAErB,CACL,OAAQlD,EACR,KAAM7B,GAAK,OAAO4B,EAAS,eAAgB,IAAI,EAC/C,OAAQ5B,GAAK,OAAO4B,EAAS,iBAAkB,IAAI,EACnD,KAAMmD,CACR,CACF,CACF,CAEA,MAAO,CACL,OAAQ,KACR,KAAM,KACN,OAAQ,KACR,KAAM,IACR,CACF,EAMFrE,GAAuB,UAAU,wBAC/B,UAA0D,CACxD,OAAK,KAAK,eAGH,KAAK,eAAe,QAAU,KAAK,SAAS,KAAK,GACtD,CAAC,KAAK,eAAe,KAAK,SAAUsE,EAAI,CAAE,OAAOA,GAAM,IAAM,CAAC,EAHvD,EAIX,EAOFtE,GAAuB,UAAU,iBAC/B,SAA4C6B,EAAS0C,EAAe,CAClE,GAAI,CAAC,KAAK,eACR,OAAO,KAGT,IAAIrE,EAAQ,KAAK,iBAAiB2B,CAAO,EACzC,GAAI3B,GAAS,EACX,OAAO,KAAK,eAAeA,CAAK,EAGlC,IAAI4B,EAAiBD,EACjB,KAAK,YAAc,OACrBC,EAAiBxC,GAAK,SAAS,KAAK,WAAYwC,CAAc,GAGhE,IAAI0C,EACJ,GAAI,KAAK,YAAc,OACfA,EAAMlF,GAAK,SAAS,KAAK,UAAU,GAAI,CAK7C,IAAImF,EAAiB3C,EAAe,QAAQ,aAAc,EAAE,EAC5D,GAAI0C,EAAI,QAAU,QACX,KAAK,SAAS,IAAIC,CAAc,EACrC,OAAO,KAAK,eAAe,KAAK,SAAS,QAAQA,CAAc,CAAC,EAGlE,IAAK,CAACD,EAAI,MAAQA,EAAI,MAAQ,MACvB,KAAK,SAAS,IAAI,IAAM1C,CAAc,EAC3C,OAAO,KAAK,eAAe,KAAK,SAAS,QAAQ,IAAMA,CAAc,CAAC,CAE1E,CAMA,GAAIyC,EACF,OAAO,KAGP,MAAM,IAAI,MAAM,IAAMzC,EAAiB,4BAA4B,CAEvE,EAyBF9B,GAAuB,UAAU,qBAC/B,SAAgDoB,EAAO,CACrD,IAAID,EAAS7B,GAAK,OAAO8B,EAAO,QAAQ,EAExC,GADAD,EAAS,KAAK,iBAAiBA,CAAM,EACjCA,EAAS,EACX,MAAO,CACL,KAAM,KACN,OAAQ,KACR,WAAY,IACd,EAGF,IAAIG,EAAS,CACX,OAAQH,EACR,aAAc7B,GAAK,OAAO8B,EAAO,MAAM,EACvC,eAAgB9B,GAAK,OAAO8B,EAAO,QAAQ,CAC7C,EAEIlB,EAAQ,KAAK,aACfoB,EACA,KAAK,kBACL,eACA,iBACAhC,GAAK,2BACLA,GAAK,OAAO8B,EAAO,OAAQzB,GAAkB,oBAAoB,CACnE,EAEA,GAAIO,GAAS,EAAG,CACd,IAAIgB,EAAU,KAAK,kBAAkBhB,CAAK,EAE1C,GAAIgB,EAAQ,SAAWI,EAAO,OAC5B,MAAO,CACL,KAAMhC,GAAK,OAAO4B,EAAS,gBAAiB,IAAI,EAChD,OAAQ5B,GAAK,OAAO4B,EAAS,kBAAmB,IAAI,EACpD,WAAY5B,GAAK,OAAO4B,EAAS,sBAAuB,IAAI,CAC9D,CAEJ,CAEA,MAAO,CACL,KAAM,KACN,OAAQ,KACR,WAAY,IACd,CACF,EAEF7B,GAAQ,uBAAyBW,GAmDjC,SAASD,GAAyBH,EAAYC,EAAe,CAC3D,IAAIC,EAAYF,EACZ,OAAOA,GAAe,WACxBE,EAAYR,GAAK,oBAAoBM,CAAU,GAGjD,IAAI6B,EAAUnC,GAAK,OAAOQ,EAAW,SAAS,EAC1C4E,EAAWpF,GAAK,OAAOQ,EAAW,UAAU,EAEhD,GAAI2B,GAAW,KAAK,SAClB,MAAM,IAAI,MAAM,wBAA0BA,CAAO,EAGnD,KAAK,SAAW,IAAIjC,GACpB,KAAK,OAAS,IAAIA,GAElB,IAAImF,EAAa,CACf,KAAM,GACN,OAAQ,CACV,EACA,KAAK,UAAYD,EAAS,IAAI,SAAU9C,EAAG,CACzC,GAAIA,EAAE,IAGJ,MAAM,IAAI,MAAM,oDAAoD,EAEtE,IAAIgD,EAAStF,GAAK,OAAOsC,EAAG,QAAQ,EAChCiD,EAAavF,GAAK,OAAOsF,EAAQ,MAAM,EACvCE,EAAexF,GAAK,OAAOsF,EAAQ,QAAQ,EAE/C,GAAIC,EAAaF,EAAW,MACvBE,IAAeF,EAAW,MAAQG,EAAeH,EAAW,OAC/D,MAAM,IAAI,MAAM,sDAAsD,EAExE,OAAAA,EAAaC,EAEN,CACL,gBAAiB,CAGf,cAAeC,EAAa,EAC5B,gBAAiBC,EAAe,CAClC,EACA,SAAU,IAAInF,GAAkBL,GAAK,OAAOsC,EAAG,KAAK,EAAG/B,CAAa,CACtE,CACF,CAAC,CACH,CAEAE,GAAyB,UAAY,OAAO,OAAOJ,GAAkB,SAAS,EAC9EI,GAAyB,UAAU,YAAcJ,GAKjDI,GAAyB,UAAU,SAAW,EAK9C,OAAO,eAAeA,GAAyB,UAAW,UAAW,CACnE,IAAK,UAAY,CAEf,QADIe,EAAU,CAAC,EACNE,EAAI,EAAGA,EAAI,KAAK,UAAU,OAAQA,IACzC,QAAS8B,EAAI,EAAGA,EAAI,KAAK,UAAU9B,CAAC,EAAE,SAAS,QAAQ,OAAQ8B,IAC7DhC,EAAQ,KAAK,KAAK,UAAUE,CAAC,EAAE,SAAS,QAAQ8B,CAAC,CAAC,EAGtD,OAAOhC,CACT,CACF,CAAC,EAqBDf,GAAyB,UAAU,oBACjC,SAAsDqB,EAAO,CAC3D,IAAIE,EAAS,CACX,cAAehC,GAAK,OAAO8B,EAAO,MAAM,EACxC,gBAAiB9B,GAAK,OAAO8B,EAAO,QAAQ,CAC9C,EAII2D,EAAexF,GAAa,OAAO+B,EAAQ,KAAK,UAClD,SAASA,EAAQ0D,EAAS,CACxB,IAAIC,EAAM3D,EAAO,cAAgB0D,EAAQ,gBAAgB,cACzD,OAAIC,GAII3D,EAAO,gBACP0D,EAAQ,gBAAgB,eAClC,CAAC,EACCA,EAAU,KAAK,UAAUD,CAAY,EAEzC,OAAKC,EASEA,EAAQ,SAAS,oBAAoB,CAC1C,KAAM1D,EAAO,eACV0D,EAAQ,gBAAgB,cAAgB,GAC3C,OAAQ1D,EAAO,iBACZ0D,EAAQ,gBAAgB,gBAAkB1D,EAAO,cAC/C0D,EAAQ,gBAAgB,gBAAkB,EAC1C,GACL,KAAM5D,EAAM,IACd,CAAC,EAhBQ,CACL,OAAQ,KACR,KAAM,KACN,OAAQ,KACR,KAAM,IACR,CAYJ,EAMFrB,GAAyB,UAAU,wBACjC,UAA4D,CAC1D,OAAO,KAAK,UAAU,MAAM,SAAU6B,EAAG,CACvC,OAAOA,EAAE,SAAS,wBAAwB,CAC5C,CAAC,CACH,EAOF7B,GAAyB,UAAU,iBACjC,SAAmD8B,EAAS0C,EAAe,CACzE,QAASvD,EAAI,EAAGA,EAAI,KAAK,UAAU,OAAQA,IAAK,CAC9C,IAAIgE,EAAU,KAAK,UAAUhE,CAAC,EAE1BkE,EAAUF,EAAQ,SAAS,iBAAiBnD,EAAS,EAAI,EAC7D,GAAIqD,GAAWA,IAAY,GACzB,OAAOA,CAEX,CACA,GAAIX,EACF,OAAO,KAGP,MAAM,IAAI,MAAM,IAAM1C,EAAU,4BAA4B,CAEhE,EAoBF9B,GAAyB,UAAU,qBACjC,SAAuDqB,EAAO,CAC5D,QAASJ,EAAI,EAAGA,EAAI,KAAK,UAAU,OAAQA,IAAK,CAC9C,IAAIgE,EAAU,KAAK,UAAUhE,CAAC,EAI9B,GAAIgE,EAAQ,SAAS,iBAAiB1F,GAAK,OAAO8B,EAAO,QAAQ,CAAC,IAAM,GAGxE,KAAI+D,EAAoBH,EAAQ,SAAS,qBAAqB5D,CAAK,EACnE,GAAI+D,EAAmB,CACrB,IAAIC,EAAM,CACR,KAAMD,EAAkB,MACrBH,EAAQ,gBAAgB,cAAgB,GAC3C,OAAQG,EAAkB,QACvBH,EAAQ,gBAAgB,gBAAkBG,EAAkB,KAC1DH,EAAQ,gBAAgB,gBAAkB,EAC1C,EACP,EACA,OAAOI,CACT,EACF,CAEA,MAAO,CACL,KAAM,KACN,OAAQ,IACV,CACF,EAOFrF,GAAyB,UAAU,eACjC,SAAgDE,EAAMG,EAAa,CACjE,KAAK,oBAAsB,CAAC,EAC5B,KAAK,mBAAqB,CAAC,EAC3B,QAASY,EAAI,EAAGA,EAAI,KAAK,UAAU,OAAQA,IAGzC,QAFIgE,EAAU,KAAK,UAAUhE,CAAC,EAC1BqE,EAAkBL,EAAQ,SAAS,mBAC9BlC,EAAI,EAAGA,EAAIuC,EAAgB,OAAQvC,IAAK,CAC/C,IAAI5B,EAAUmE,EAAgBvC,CAAC,EAE3B3B,EAAS6D,EAAQ,SAAS,SAAS,GAAG9D,EAAQ,MAAM,EACrDC,IAAW,OACZA,EAAS7B,GAAK,iBAAiB0F,EAAQ,SAAS,WAAY7D,EAAQ,KAAK,aAAa,GAExF,KAAK,SAAS,IAAIA,CAAM,EACxBA,EAAS,KAAK,SAAS,QAAQA,CAAM,EAErC,IAAIkD,EAAO,KACPnD,EAAQ,OACVmD,EAAOW,EAAQ,SAAS,OAAO,GAAG9D,EAAQ,IAAI,EAC9C,KAAK,OAAO,IAAImD,CAAI,EACpBA,EAAO,KAAK,OAAO,QAAQA,CAAI,GAOjC,IAAIiB,EAAkB,CACpB,OAAQnE,EACR,cAAeD,EAAQ,eACpB8D,EAAQ,gBAAgB,cAAgB,GAC3C,gBAAiB9D,EAAQ,iBACtB8D,EAAQ,gBAAgB,gBAAkB9D,EAAQ,cACjD8D,EAAQ,gBAAgB,gBAAkB,EAC1C,GACJ,aAAc9D,EAAQ,aACtB,eAAgBA,EAAQ,eACxB,KAAMmD,CACR,EAEA,KAAK,oBAAoB,KAAKiB,CAAe,EACzC,OAAOA,EAAgB,cAAiB,UAC1C,KAAK,mBAAmB,KAAKA,CAAe,CAEhD,CAGF5F,GAAU,KAAK,oBAAqBJ,GAAK,mCAAmC,EAC5EI,GAAU,KAAK,mBAAoBJ,GAAK,0BAA0B,CACpE,EAEFD,GAAQ,yBAA2BU,KCnqCnC,IAAAwF,GAAAC,GAAAC,IAAA,CAOA,IAAIC,GAAqB,KAAkC,mBACvDC,GAAO,KAIPC,GAAgB,UAGhBC,GAAe,GAKfC,GAAe,qBAcnB,SAASC,GAAWC,EAAOC,EAASC,EAASC,EAASC,EAAO,CAC3D,KAAK,SAAW,CAAC,EACjB,KAAK,eAAiB,CAAC,EACvB,KAAK,KAAOJ,GAAgB,KAC5B,KAAK,OAASC,GAAkB,KAChC,KAAK,OAASC,GAAkB,KAChC,KAAK,KAAOE,GAAgB,KAC5B,KAAKN,EAAY,EAAI,GACjBK,GAAW,MAAM,KAAK,IAAIA,CAAO,CACvC,CAUAJ,GAAW,wBACT,SAA4CM,EAAgBC,EAAoBC,EAAe,CAG7F,IAAIC,EAAO,IAAIT,GAMXU,EAAiBJ,EAAe,MAAMT,EAAa,EACnDc,EAAsB,EACtBC,EAAgB,UAAW,CAC7B,IAAIC,EAAeC,EAAY,EAE3BC,EAAUD,EAAY,GAAK,GAC/B,OAAOD,EAAeE,EAEtB,SAASD,GAAc,CACrB,OAAOH,EAAsBD,EAAe,OACxCA,EAAeC,GAAqB,EAAI,MAC9C,CACF,EAGIK,EAAoB,EAAGC,EAAsB,EAK7CC,EAAc,KAElB,OAAAX,EAAmB,YAAY,SAAUY,EAAS,CAChD,GAAID,IAAgB,KAGlB,GAAIF,EAAoBG,EAAQ,cAE9BC,EAAmBF,EAAaN,EAAc,CAAC,EAC/CI,IACAC,EAAsB,MAEjB,CAIL,IAAII,EAAWX,EAAeC,CAAmB,GAAK,GAClDW,EAAOD,EAAS,OAAO,EAAGF,EAAQ,gBACRF,CAAmB,EACjDP,EAAeC,CAAmB,EAAIU,EAAS,OAAOF,EAAQ,gBAC1BF,CAAmB,EACvDA,EAAsBE,EAAQ,gBAC9BC,EAAmBF,EAAaI,CAAI,EAEpCJ,EAAcC,EACd,MACF,CAKF,KAAOH,EAAoBG,EAAQ,eACjCV,EAAK,IAAIG,EAAc,CAAC,EACxBI,IAEF,GAAIC,EAAsBE,EAAQ,gBAAiB,CACjD,IAAIE,EAAWX,EAAeC,CAAmB,GAAK,GACtDF,EAAK,IAAIY,EAAS,OAAO,EAAGF,EAAQ,eAAe,CAAC,EACpDT,EAAeC,CAAmB,EAAIU,EAAS,OAAOF,EAAQ,eAAe,EAC7EF,EAAsBE,EAAQ,eAChC,CACAD,EAAcC,CAChB,EAAG,IAAI,EAEHR,EAAsBD,EAAe,SACnCQ,GAEFE,EAAmBF,EAAaN,EAAc,CAAC,EAGjDH,EAAK,IAAIC,EAAe,OAAOC,CAAmB,EAAE,KAAK,EAAE,CAAC,GAI9DJ,EAAmB,QAAQ,QAAQ,SAAUgB,EAAY,CACvD,IAAIC,EAAUjB,EAAmB,iBAAiBgB,CAAU,EACxDC,GAAW,OACThB,GAAiB,OACnBe,EAAa3B,GAAK,KAAKY,EAAee,CAAU,GAElDd,EAAK,iBAAiBc,EAAYC,CAAO,EAE7C,CAAC,EAEMf,EAEP,SAASW,EAAmBD,EAASG,EAAM,CACzC,GAAIH,IAAY,MAAQA,EAAQ,SAAW,OACzCV,EAAK,IAAIa,CAAI,MACR,CACL,IAAIG,EAASjB,EACTZ,GAAK,KAAKY,EAAeW,EAAQ,MAAM,EACvCA,EAAQ,OACZV,EAAK,IAAI,IAAIT,GAAWmB,EAAQ,aACRA,EAAQ,eACRM,EACAH,EACAH,EAAQ,IAAI,CAAC,CACvC,CACF,CACF,EAQFnB,GAAW,UAAU,IAAM,SAAwB0B,EAAQ,CACzD,GAAI,MAAM,QAAQA,CAAM,EACtBA,EAAO,QAAQ,SAAUC,EAAO,CAC9B,KAAK,IAAIA,CAAK,CAChB,EAAG,IAAI,UAEAD,EAAO3B,EAAY,GAAK,OAAO2B,GAAW,SAC7CA,GACF,KAAK,SAAS,KAAKA,CAAM,MAI3B,OAAM,IAAI,UACR,8EAAgFA,CAClF,EAEF,OAAO,IACT,EAQA1B,GAAW,UAAU,QAAU,SAA4B0B,EAAQ,CACjE,GAAI,MAAM,QAAQA,CAAM,EACtB,QAASE,EAAIF,EAAO,OAAO,EAAGE,GAAK,EAAGA,IACpC,KAAK,QAAQF,EAAOE,CAAC,CAAC,UAGjBF,EAAO3B,EAAY,GAAK,OAAO2B,GAAW,SACjD,KAAK,SAAS,QAAQA,CAAM,MAG5B,OAAM,IAAI,UACR,8EAAgFA,CAClF,EAEF,OAAO,IACT,EASA1B,GAAW,UAAU,KAAO,SAAyB6B,EAAK,CAExD,QADIF,EACKC,EAAI,EAAGE,EAAM,KAAK,SAAS,OAAQF,EAAIE,EAAKF,IACnDD,EAAQ,KAAK,SAASC,CAAC,EACnBD,EAAM5B,EAAY,EACpB4B,EAAM,KAAKE,CAAG,EAGVF,IAAU,IACZE,EAAIF,EAAO,CAAE,OAAQ,KAAK,OACb,KAAM,KAAK,KACX,OAAQ,KAAK,OACb,KAAM,KAAK,IAAK,CAAC,CAItC,EAQA3B,GAAW,UAAU,KAAO,SAAyB+B,EAAM,CACzD,IAAIC,EACAJ,EACAE,EAAM,KAAK,SAAS,OACxB,GAAIA,EAAM,EAAG,CAEX,IADAE,EAAc,CAAC,EACVJ,EAAI,EAAGA,EAAIE,EAAI,EAAGF,IACrBI,EAAY,KAAK,KAAK,SAASJ,CAAC,CAAC,EACjCI,EAAY,KAAKD,CAAI,EAEvBC,EAAY,KAAK,KAAK,SAASJ,CAAC,CAAC,EACjC,KAAK,SAAWI,CAClB,CACA,OAAO,IACT,EASAhC,GAAW,UAAU,aAAe,SAAiCiC,EAAUC,EAAc,CAC3F,IAAIC,EAAY,KAAK,SAAS,KAAK,SAAS,OAAS,CAAC,EACtD,OAAIA,EAAUpC,EAAY,EACxBoC,EAAU,aAAaF,EAAUC,CAAY,EAEtC,OAAOC,GAAc,SAC5B,KAAK,SAAS,KAAK,SAAS,OAAS,CAAC,EAAIA,EAAU,QAAQF,EAAUC,CAAY,EAGlF,KAAK,SAAS,KAAK,GAAG,QAAQD,EAAUC,CAAY,CAAC,EAEhD,IACT,EASAlC,GAAW,UAAU,iBACnB,SAAqCoC,EAAaC,EAAgB,CAChE,KAAK,eAAezC,GAAK,YAAYwC,CAAW,CAAC,EAAIC,CACvD,EAQFrC,GAAW,UAAU,mBACnB,SAAuC6B,EAAK,CAC1C,QAASD,EAAI,EAAGE,EAAM,KAAK,SAAS,OAAQF,EAAIE,EAAKF,IAC/C,KAAK,SAASA,CAAC,EAAE7B,EAAY,GAC/B,KAAK,SAAS6B,CAAC,EAAE,mBAAmBC,CAAG,EAK3C,QADIS,EAAU,OAAO,KAAK,KAAK,cAAc,EACpCV,EAAI,EAAGE,EAAMQ,EAAQ,OAAQV,EAAIE,EAAKF,IAC7CC,EAAIjC,GAAK,cAAc0C,EAAQV,CAAC,CAAC,EAAG,KAAK,eAAeU,EAAQV,CAAC,CAAC,CAAC,CAEvE,EAMF5B,GAAW,UAAU,SAAW,UAA+B,CAC7D,IAAIuC,EAAM,GACV,YAAK,KAAK,SAAUZ,EAAO,CACzBY,GAAOZ,CACT,CAAC,EACMY,CACT,EAMAvC,GAAW,UAAU,sBAAwB,SAA0CwC,EAAO,CAC5F,IAAIC,EAAY,CACd,KAAM,GACN,KAAM,EACN,OAAQ,CACV,EACIC,EAAM,IAAI/C,GAAmB6C,CAAK,EAClCG,EAAsB,GACtBC,EAAqB,KACrBC,EAAmB,KACnBC,EAAqB,KACrBC,EAAmB,KACvB,YAAK,KAAK,SAAUpB,EAAOqB,EAAU,CACnCP,EAAU,MAAQd,EACdqB,EAAS,SAAW,MACjBA,EAAS,OAAS,MAClBA,EAAS,SAAW,OACtBJ,IAAuBI,EAAS,QAC7BH,IAAqBG,EAAS,MAC9BF,IAAuBE,EAAS,QAChCD,IAAqBC,EAAS,OAClCN,EAAI,WAAW,CACb,OAAQM,EAAS,OACjB,SAAU,CACR,KAAMA,EAAS,KACf,OAAQA,EAAS,MACnB,EACA,UAAW,CACT,KAAMP,EAAU,KAChB,OAAQA,EAAU,MACpB,EACA,KAAMO,EAAS,IACjB,CAAC,EAEHJ,EAAqBI,EAAS,OAC9BH,EAAmBG,EAAS,KAC5BF,EAAqBE,EAAS,OAC9BD,EAAmBC,EAAS,KAC5BL,EAAsB,IACbA,IACTD,EAAI,WAAW,CACb,UAAW,CACT,KAAMD,EAAU,KAChB,OAAQA,EAAU,MACpB,CACF,CAAC,EACDG,EAAqB,KACrBD,EAAsB,IAExB,QAASM,EAAM,EAAGC,EAASvB,EAAM,OAAQsB,EAAMC,EAAQD,IACjDtB,EAAM,WAAWsB,CAAG,IAAMnD,IAC5B2C,EAAU,OACVA,EAAU,OAAS,EAEfQ,EAAM,IAAMC,GACdN,EAAqB,KACrBD,EAAsB,IACbA,GACTD,EAAI,WAAW,CACb,OAAQM,EAAS,OACjB,SAAU,CACR,KAAMA,EAAS,KACf,OAAQA,EAAS,MACnB,EACA,UAAW,CACT,KAAMP,EAAU,KAChB,OAAQA,EAAU,MACpB,EACA,KAAMO,EAAS,IACjB,CAAC,GAGHP,EAAU,QAGhB,CAAC,EACD,KAAK,mBAAmB,SAAUlB,EAAY4B,EAAe,CAC3DT,EAAI,iBAAiBnB,EAAY4B,CAAa,CAChD,CAAC,EAEM,CAAE,KAAMV,EAAU,KAAM,IAAKC,CAAI,CAC1C,EAEAhD,GAAQ,WAAaM,KC5ZrB,IAAAoD,GAAAC,GAAAC,IAAA,CAKAA,GAAQ,mBAAqB,KAAsC,mBACnEA,GAAQ,kBAAoB,KAAqC,kBACjEA,GAAQ,WAAa,KAA6B,aCPlD,IAAAC,GAAAC,GAAAC,GAAA,cAOA,OAAO,eAAeA,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,EAE5D,IAAIC,GAAS,KACTC,GAAY,KACZC,GAAS,KACTC,GAAe,KACfC,GAAc,KAEZC,GAAW,OAAO,EAAE,EACpBC,GAAW,OAAO,EAAE,EACpBC,GAAW,OAAO,EAAE,EACpBC,GAAa,OAAO,EAAE,EACtBC,GAAkB,OACtB,EACF,EACMC,GAAa,OAAO,EAAE,EACtBC,GAAe,OAAO,EAAE,EACxBC,GAAuB,OAC3B,EACF,EACMC,GAAe,OAAO,EAAE,EACxBC,GAAuB,OAC3B,EACF,EACMC,GAAiB,OACrB,EACF,EACMC,GAAc,OAClB,EACF,EACMC,GAAgB,OACpB,EACF,EACMC,GAAoB,OACxB,EACF,EACMC,GAA4B,OAChC,EACF,EACMC,GAAoB,OACxB,EACF,EACMC,GAAiB,OACrB,EACF,EACMC,GAAkB,OACtB,EACF,EACMC,GAAc,OAAO,EAAE,EACvBC,GAAc,OAAO,EAAE,EACvBC,GAAe,OAAO,EAAE,EACxBC,GAAoB,OACxB,EACF,EACMC,GAAc,OAAO,EAAE,EACvBC,GAAkB,OACtB,EACF,EACMC,GAAkB,OACtB,EACF,EACMC,GAAkB,OACtB,EACF,EACMC,GAAuB,OAC3B,EACF,EACMC,GAAc,OAAO,EAAE,EACvBC,GAAW,OAAO,EAAE,EACpBC,GAAa,OAAO,EAAE,EACtBC,GAAiB,OACrB,EACF,EACMC,GAAqB,OACzB,EACF,EACMC,GAAgB,OAAO,EAAE,EACzBC,GAAe,OAAO,EAAE,EACxBC,GAAW,OAAO,EAAE,EACpBC,GAAQ,OAAO,EAAE,EACjBC,GAAS,OAAO,EAAE,EAClBC,GAAY,OAAO,EAAE,EACrBC,GAAe,OAAO,EAAE,EACxBC,GAAgB,CACpB,CAACvC,EAAQ,EAAG,WACZ,CAACC,EAAQ,EAAG,WACZ,CAACC,EAAQ,EAAG,WACZ,CAACC,EAAU,EAAG,YACd,CAACC,EAAe,EAAG,iBACnB,CAACC,EAAU,EAAG,YACd,CAACC,EAAY,EAAG,cAChB,CAACC,EAAoB,EAAG,qBACxB,CAACC,EAAY,EAAG,cAChB,CAACC,EAAoB,EAAG,qBACxB,CAACC,EAAc,EAAG,qBAClB,CAACC,EAAW,EAAG,kBACf,CAACC,EAAa,EAAG,oBACjB,CAACC,EAAiB,EAAG,mBACrB,CAACC,EAAyB,EAAG,0BAC7B,CAACC,EAAiB,EAAG,mBACrB,CAACC,EAAc,EAAG,gBAClB,CAACC,EAAe,EAAG,iBACnB,CAACC,EAAW,EAAG,aACf,CAACC,EAAW,EAAG,aACf,CAACC,EAAY,EAAG,cAChB,CAACC,EAAiB,EAAG,kBACrB,CAACC,EAAW,EAAG,aACf,CAACC,EAAe,EAAG,iBACnB,CAACC,EAAe,EAAG,iBACnB,CAACC,EAAe,EAAG,iBACnB,CAACC,EAAoB,EAAG,qBACxB,CAACC,EAAW,EAAG,aACf,CAACC,EAAQ,EAAG,WACZ,CAACC,EAAU,EAAG,aACd,CAACC,EAAc,EAAG,eAClB,CAACC,EAAkB,EAAG,mBACtB,CAACC,EAAa,EAAG,cACjB,CAACC,EAAY,EAAG,aAChB,CAACC,EAAQ,EAAG,UACZ,CAACC,EAAK,EAAG,QACT,CAACC,EAAM,EAAG,QACV,CAACC,EAAS,EAAG,WACb,CAACC,EAAY,EAAG,YAClB,EACA,SAASE,GAAuBC,EAAS,CACvC,OAAO,sBAAsBA,CAAO,EAAE,QAASC,GAAM,CACnDH,GAAcG,CAAC,EAAID,EAAQC,CAAC,CAC9B,CAAC,CACH,CAEA,IAAMC,GAAa,CACjB,KAAQ,EACR,EAAK,OACL,IAAO,EACP,EAAK,MACL,QAAW,EACX,EAAK,SACP,EACMC,GAAY,CAChB,KAAQ,EACR,EAAK,OACL,QAAW,EACX,EAAK,UACL,KAAQ,EACR,EAAK,OACL,QAAW,EACX,EAAK,UACL,kBAAqB,EACrB,EAAK,oBACL,cAAiB,EACjB,EAAK,gBACL,UAAa,EACb,EAAK,YACL,UAAa,EACb,EAAK,YACL,oBAAuB,EACvB,EAAK,sBACL,GAAM,EACN,EAAK,KACL,UAAa,GACb,GAAM,YACN,IAAO,GACP,GAAM,MACN,UAAa,GACb,GAAM,YACN,WAAc,GACd,GAAM,aACN,mBAAsB,GACtB,GAAM,qBACN,qBAAwB,GACxB,GAAM,uBACN,YAAe,GACf,GAAM,cACN,oBAAuB,GACvB,GAAM,sBACN,uBAA0B,GAC1B,GAAM,yBACN,0BAA6B,GAC7B,GAAM,4BACN,oBAAuB,GACvB,GAAM,sBACN,mBAAsB,GACtB,GAAM,qBACN,oBAAuB,GACvB,GAAM,sBACN,gBAAmB,GACnB,GAAM,kBACN,yBAA4B,GAC5B,GAAM,2BACN,uBAA0B,GAC1B,GAAM,yBACN,oBAAuB,GACvB,GAAM,qBACR,EACMC,GAAe,CACnB,QAAW,EACX,EAAK,UACL,UAAa,EACb,EAAK,YACL,KAAQ,EACR,EAAK,OACL,SAAY,EACZ,EAAK,UACP,EACMC,GAAgB,CACpB,aAAgB,EAChB,EAAK,eACL,eAAkB,EAClB,EAAK,iBACL,UAAa,EACb,EAAK,YACL,cAAiB,EACjB,EAAK,eACP,EACMC,GAAU,CACd,MAAO,CAAE,KAAM,EAAG,OAAQ,EAAG,OAAQ,CAAE,EACvC,IAAK,CAAE,KAAM,EAAG,OAAQ,EAAG,OAAQ,CAAE,EACrC,OAAQ,EACV,EACA,SAASC,GAAWC,EAAUC,EAAS,GAAI,CACzC,MAAO,CACL,KAAM,EACN,OAAAA,EACA,SAAAD,EACA,QAAyB,IAAI,IAC7B,WAAY,CAAC,EACb,WAAY,CAAC,EACb,OAAQ,CAAC,EACT,QAAS,CAAC,EACV,OAAQ,CAAC,EACT,MAAO,EACP,YAAa,OACb,IAAKF,EACP,CACF,CACA,SAASI,GAAgBC,EAASC,EAAKC,EAAOL,EAAUM,EAAWC,EAAcC,EAAYC,EAAU,GAAOC,EAAkB,GAAOC,EAAc,GAAOC,EAAMd,GAAS,CACzK,OAAIK,IACEM,GACFN,EAAQ,OAAO/C,EAAU,EACzB+C,EAAQ,OAAOU,GAAoBV,EAAQ,MAAOQ,CAAW,CAAC,GAE9DR,EAAQ,OAAOW,GAAeX,EAAQ,MAAOQ,CAAW,CAAC,EAEvDH,GACFL,EAAQ,OAAOnC,EAAe,GAG3B,CACL,KAAM,GACN,IAAAoC,EACA,MAAAC,EACA,SAAAL,EACA,UAAAM,EACA,aAAAC,EACA,WAAAC,EACA,QAAAC,EACA,gBAAAC,EACA,YAAAC,EACA,IAAAC,CACF,CACF,CACA,SAASG,GAAsBC,EAAUJ,EAAMd,GAAS,CACtD,MAAO,CACL,KAAM,GACN,IAAAc,EACA,SAAAI,CACF,CACF,CACA,SAASC,GAAuBC,EAAYN,EAAMd,GAAS,CACzD,MAAO,CACL,KAAM,GACN,IAAAc,EACA,WAAAM,CACF,CACF,CACA,SAASC,GAAqBC,EAAKC,EAAO,CACxC,MAAO,CACL,KAAM,GACN,IAAKvB,GACL,IAAKpD,GAAO,SAAS0E,CAAG,EAAIE,GAAuBF,EAAK,EAAI,EAAIA,EAChE,MAAAC,CACF,CACF,CACA,SAASC,GAAuBC,EAASC,EAAW,GAAOZ,EAAMd,GAAS2B,EAAY,EAAG,CACvF,MAAO,CACL,KAAM,EACN,IAAAb,EACA,QAAAW,EACA,SAAAC,EACA,UAAWA,EAAW,EAAIC,CAC5B,CACF,CACA,SAASC,GAAoBH,EAASX,EAAK,CACzC,MAAO,CACL,KAAM,EACN,IAAAA,EACA,QAASlE,GAAO,SAAS6E,CAAO,EAAID,GAAuBC,EAAS,GAAOX,CAAG,EAAIW,CACpF,CACF,CACA,SAASI,GAAyB3B,EAAUY,EAAMd,GAAS,CACzD,MAAO,CACL,KAAM,EACN,IAAAc,EACA,SAAAZ,CACF,CACF,CACA,SAAS4B,GAAqBC,EAAQC,EAAO,CAAC,EAAGlB,EAAMd,GAAS,CAC9D,MAAO,CACL,KAAM,GACN,IAAAc,EACA,OAAAiB,EACA,UAAWC,CACb,CACF,CACA,SAASC,GAAyBC,EAAQC,EAAU,OAAQC,EAAU,GAAOC,EAAS,GAAOvB,EAAMd,GAAS,CAC1G,MAAO,CACL,KAAM,GACN,OAAAkC,EACA,QAAAC,EACA,QAAAC,EACA,OAAAC,EACA,IAAAvB,CACF,CACF,CACA,SAASwB,GAA4BC,EAAMC,EAAYC,EAAWL,EAAU,GAAM,CAChF,MAAO,CACL,KAAM,GACN,KAAAG,EACA,WAAAC,EACA,UAAAC,EACA,QAAAL,EACA,IAAKpC,EACP,CACF,CACA,SAAS0C,GAAsBC,EAAOpB,EAAOqB,EAAoB,GAAOC,EAAU,GAAO,CACvF,MAAO,CACL,KAAM,GACN,MAAAF,EACA,MAAApB,EACA,kBAAAqB,EACA,QAAAC,EACA,gBAAiB,GACjB,IAAK7C,EACP,CACF,CACA,SAAS8C,GAAqBC,EAAM,CAClC,MAAO,CACL,KAAM,GACN,KAAAA,EACA,IAAK/C,EACP,CACF,CACA,SAASgD,GAAsB9B,EAAU,CACvC,MAAO,CACL,KAAM,GACN,SAAAA,EACA,IAAKlB,EACP,CACF,CACA,SAASiD,GAAkBV,EAAMC,EAAYC,EAAW,CACtD,MAAO,CACL,KAAM,GACN,KAAAF,EACA,WAAAC,EACA,UAAAC,EACA,IAAKzC,EACP,CACF,CACA,SAASkD,GAA2BC,EAAMC,EAAO,CAC/C,MAAO,CACL,KAAM,GACN,KAAAD,EACA,MAAAC,EACA,IAAKpD,EACP,CACF,CACA,SAASqD,GAAyBC,EAAa,CAC7C,MAAO,CACL,KAAM,GACN,YAAAA,EACA,IAAKtD,EACP,CACF,CACA,SAASuD,GAAsBpB,EAAS,CACtC,MAAO,CACL,KAAM,GACN,QAAAA,EACA,IAAKnC,EACP,CACF,CACA,SAASgB,GAAewC,EAAK3C,EAAa,CACxC,OAAO2C,GAAO3C,EAAcpD,GAAeC,EAC7C,CACA,SAASqD,GAAoByC,EAAK3C,EAAa,CAC7C,OAAO2C,GAAO3C,EAActD,GAAeC,EAC7C,CACA,SAASiG,GAAeC,EAAM,CAAE,OAAAC,EAAQ,aAAAC,EAAc,MAAAC,CAAM,EAAG,CACxDH,EAAK,UACRA,EAAK,QAAU,GACfE,EAAa5C,GAAe6C,EAAOH,EAAK,WAAW,CAAC,EACpDC,EAAOrG,EAAU,EACjBqG,EAAO5C,GAAoB8C,EAAOH,EAAK,WAAW,CAAC,EAEvD,CAEA,IAAMI,GAAwB,IAAI,WAAW,CAAC,IAAK,GAAG,CAAC,EACjDC,GAAyB,IAAI,WAAW,CAAC,IAAK,GAAG,CAAC,EACxD,SAASC,GAAeC,EAAG,CACzB,OAAOA,GAAK,IAAMA,GAAK,KAAOA,GAAK,IAAMA,GAAK,EAChD,CACA,SAASC,GAAaD,EAAG,CACvB,OAAOA,IAAM,IAAMA,IAAM,IAAMA,IAAM,GAAKA,IAAM,IAAMA,IAAM,EAC9D,CACA,SAASE,GAAkBF,EAAG,CAC5B,OAAOA,IAAM,IAAMA,IAAM,IAAMC,GAAaD,CAAC,CAC/C,CACA,SAASG,GAAYC,EAAK,CACxB,IAAMC,EAAM,IAAI,WAAWD,EAAI,MAAM,EACrC,QAASE,EAAI,EAAGA,EAAIF,EAAI,OAAQE,IAC9BD,EAAIC,CAAC,EAAIF,EAAI,WAAWE,CAAC,EAE3B,OAAOD,CACT,CACA,IAAME,GAAY,CAChB,MAAO,IAAI,WAAW,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,CAAC,EAE9C,SAAU,IAAI,WAAW,CAAC,GAAI,GAAI,EAAE,CAAC,EAErC,WAAY,IAAI,WAAW,CAAC,GAAI,GAAI,EAAE,CAAC,EAEvC,UAAW,IAAI,WAAW,CAAC,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAG,CAAC,EAE/D,SAAU,IAAI,WAAW,CAAC,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAG,CAAC,EAE1D,SAAU,IAAI,WAAW,CAAC,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAG,CAAC,EAE1D,YAAa,IAAI,WAAW,CAC1B,GACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,EACF,CAAC,CAEH,EACMC,GAAN,KAAgB,CACd,YAAYC,EAAOC,EAAK,CACtB,KAAK,MAAQD,EACb,KAAK,IAAMC,EAEX,KAAK,MAAQ,EAEb,KAAK,OAAS,GAEd,KAAK,aAAe,EAEpB,KAAK,MAAQ,EAEb,KAAK,YAAc,EAEnB,KAAK,UAAY,EAEjB,KAAK,SAAW,GAEhB,KAAK,MAAQ,GAEb,KAAK,OAAS,GAEd,KAAK,SAAW,CAAC,EACjB,KAAK,KAAO,EACZ,KAAK,cAAgBb,GACrB,KAAK,eAAiBC,GACtB,KAAK,eAAiB,GACtB,KAAK,gBAAkB,OACvB,KAAK,cAAgB,EAEnB,KAAK,cAAgB,IAAIlH,GAAU,cACjCA,GAAU,eACV,CAAC+H,EAAIC,IAAa,KAAK,cAAcD,EAAIC,CAAQ,CACnD,CAEJ,CACA,IAAI,WAAY,CACd,OAAO,KAAK,OAAS,GAAK,KAAK,MAAM,SAAW,CAClD,CACA,OAAQ,CACN,KAAK,MAAQ,EACb,KAAK,KAAO,EACZ,KAAK,OAAS,GACd,KAAK,aAAe,EACpB,KAAK,MAAQ,EACb,KAAK,UAAY,EACjB,KAAK,SAAW,GAChB,KAAK,gBAAkB,OACvB,KAAK,SAAS,OAAS,EACvB,KAAK,cAAgBf,GACrB,KAAK,eAAiBC,EACxB,CAOA,OAAOpB,EAAO,CACZ,IAAImC,EAAO,EACPC,EAASpC,EAAQ,EACrB,QAAS,EAAI,KAAK,SAAS,OAAS,EAAG,GAAK,EAAG,IAAK,CAClD,IAAMqC,EAAe,KAAK,SAAS,CAAC,EACpC,GAAIrC,EAAQqC,EAAc,CACxBF,EAAO,EAAI,EACXC,EAASpC,EAAQqC,EACjB,KACF,CACF,CACA,MAAO,CACL,OAAAD,EACA,KAAAD,EACA,OAAQnC,CACV,CACF,CACA,MAAO,CACL,OAAO,KAAK,OAAO,WAAW,KAAK,MAAQ,CAAC,CAC9C,CACA,UAAUsB,EAAG,CACPA,IAAM,IACJ,KAAK,MAAQ,KAAK,cACpB,KAAK,IAAI,OAAO,KAAK,aAAc,KAAK,KAAK,EAE/C,KAAK,MAAQ,EACb,KAAK,aAAe,KAAK,OAChBA,IAAM,GACf,KAAK,YAAY,EACR,CAAC,KAAK,QAAUA,IAAM,KAAK,cAAc,CAAC,IACnD,KAAK,MAAQ,EACb,KAAK,eAAiB,EACtB,KAAK,uBAAuBA,CAAC,EAEjC,CACA,uBAAuBA,EAAG,CACxB,GAAIA,IAAM,KAAK,cAAc,KAAK,cAAc,EAC9C,GAAI,KAAK,iBAAmB,KAAK,cAAc,OAAS,EAAG,CACzD,IAAMgB,EAAQ,KAAK,MAAQ,EAAI,KAAK,cAAc,OAC9CA,EAAQ,KAAK,cACf,KAAK,IAAI,OAAO,KAAK,aAAcA,CAAK,EAE1C,KAAK,MAAQ,EACb,KAAK,aAAeA,CACtB,MACE,KAAK,sBAEE,KAAK,UACd,KAAK,MAAQ,GACb,KAAK,cAAchB,CAAC,IAEpB,KAAK,MAAQ,EACb,KAAK,UAAUA,CAAC,EAEpB,CACA,mBAAmBA,EAAG,CAChBA,IAAM,KAAK,eAAe,CAAC,IAC7B,KAAK,MAAQ,EACb,KAAK,eAAiB,EACtB,KAAK,wBAAwBA,CAAC,EAElC,CACA,wBAAwBA,EAAG,CACrBA,IAAM,KAAK,eAAe,KAAK,cAAc,EAC3C,KAAK,iBAAmB,KAAK,eAAe,OAAS,GACvD,KAAK,IAAI,gBAAgB,KAAK,aAAc,KAAK,MAAQ,CAAC,EACtD,KAAK,SACP,KAAK,MAAQ,GAEb,KAAK,MAAQ,EAEf,KAAK,aAAe,KAAK,MAAQ,GAEjC,KAAK,kBAGP,KAAK,MAAQ,EACb,KAAK,mBAAmBA,CAAC,EAE7B,CACA,0BAA0BA,EAAG,CAC3B,IAAMiB,EAAQ,KAAK,gBAAkB,KAAK,gBAAgB,OAQ1D,GAAI,EAPYA,EAEdf,GAAkBF,CAAC,GAGlBA,EAAI,MAAQ,KAAK,gBAAgB,KAAK,aAAa,GAGpD,KAAK,SAAW,WACP,CAACiB,EAAO,CACjB,KAAK,gBACL,MACF,CACA,KAAK,cAAgB,EACrB,KAAK,MAAQ,EACb,KAAK,eAAejB,CAAC,CACvB,CAEA,cAAcA,EAAG,CACf,GAAI,KAAK,gBAAkB,KAAK,gBAAgB,OAAQ,CACtD,GAAIA,IAAM,IAAMC,GAAaD,CAAC,EAAG,CAC/B,IAAMkB,EAAY,KAAK,MAAQ,KAAK,gBAAgB,OACpD,GAAI,KAAK,aAAeA,EAAW,CACjC,IAAMC,EAAc,KAAK,MACzB,KAAK,MAAQD,EACb,KAAK,IAAI,OAAO,KAAK,aAAcA,CAAS,EAC5C,KAAK,MAAQC,CACf,CACA,KAAK,aAAeD,EAAY,EAChC,KAAK,sBAAsBlB,CAAC,EAC5B,KAAK,SAAW,GAChB,MACF,CACA,KAAK,cAAgB,CACvB,EACKA,EAAI,MAAQ,KAAK,gBAAgB,KAAK,aAAa,EACtD,KAAK,eAAiB,EACb,KAAK,gBAAkB,EAC5B,KAAK,kBAAoBO,GAAU,UAAY,KAAK,kBAAoBA,GAAU,aAAe,CAAC,KAAK,UACrGP,IAAM,GACR,KAAK,YAAY,EACR,CAAC,KAAK,QAAUA,IAAM,KAAK,cAAc,CAAC,IACnD,KAAK,MAAQ,EACb,KAAK,eAAiB,EACtB,KAAK,uBAAuBA,CAAC,GAEtB,KAAK,cAAc,EAAE,IAC9B,KAAK,cAAgB,GAGvB,KAAK,cAAgB,EAAOA,IAAM,GAEtC,CACA,mBAAmBA,EAAG,CAChBA,IAAMO,GAAU,MAAM,KAAK,aAAa,EACtC,EAAE,KAAK,gBAAkBA,GAAU,MAAM,SAC3C,KAAK,MAAQ,GACb,KAAK,gBAAkBA,GAAU,SACjC,KAAK,cAAgB,EACrB,KAAK,aAAe,KAAK,MAAQ,IAGnC,KAAK,cAAgB,EACrB,KAAK,MAAQ,GACb,KAAK,mBAAmBP,CAAC,EAE7B,CAOA,cAAcA,EAAG,CACf,KAAO,EAAE,KAAK,MAAQ,KAAK,OAAO,QAAQ,CACxC,IAAMoB,EAAK,KAAK,OAAO,WAAW,KAAK,KAAK,EAI5C,GAHIA,IAAO,IACT,KAAK,SAAS,KAAK,KAAK,KAAK,EAE3BA,IAAOpB,EACT,MAAO,EAEX,CACA,YAAK,MAAQ,KAAK,OAAO,OAAS,EAC3B,EACT,CASA,mBAAmBA,EAAG,CAChBA,IAAM,KAAK,gBAAgB,KAAK,aAAa,EAC3C,EAAE,KAAK,gBAAkB,KAAK,gBAAgB,SAC5C,KAAK,kBAAoBO,GAAU,SACrC,KAAK,IAAI,QAAQ,KAAK,aAAc,KAAK,MAAQ,CAAC,EAElD,KAAK,IAAI,UAAU,KAAK,aAAc,KAAK,MAAQ,CAAC,EAEtD,KAAK,cAAgB,EACrB,KAAK,aAAe,KAAK,MAAQ,EACjC,KAAK,MAAQ,GAEN,KAAK,gBAAkB,EAC5B,KAAK,cAAc,KAAK,gBAAgB,CAAC,CAAC,IAC5C,KAAK,cAAgB,GAEdP,IAAM,KAAK,gBAAgB,KAAK,cAAgB,CAAC,IAC1D,KAAK,cAAgB,EAEzB,CACA,aAAaqB,EAAUC,EAAQ,CAC7B,KAAK,YAAYD,EAAUC,CAAM,EACjC,KAAK,MAAQ,EACf,CACA,YAAYD,EAAUC,EAAQ,CAC5B,KAAK,SAAW,GAChB,KAAK,gBAAkBD,EACvB,KAAK,cAAgBC,CACvB,CACA,mBAAmBtB,EAAG,CAChBA,IAAM,IACR,KAAK,MAAQ,GACb,KAAK,aAAe,KAAK,MAAQ,GACxBA,IAAM,IACf,KAAK,MAAQ,GACb,KAAK,aAAe,KAAK,MAAQ,GACxBD,GAAeC,CAAC,GACzB,KAAK,aAAe,KAAK,MACrB,KAAK,OAAS,EAChB,KAAK,MAAQ,EACJ,KAAK,UACd,KAAK,MAAQ,GACH,KAAK,MAOf,KAAK,MAAQ,EANTA,IAAM,IACR,KAAK,MAAQ,GAEb,KAAK,MAAQA,IAAM,IAAM,GAAK,GAKzBA,IAAM,GACf,KAAK,MAAQ,GAEb,KAAK,MAAQ,EACb,KAAK,UAAUA,CAAC,EAEpB,CACA,eAAeA,EAAG,CACZE,GAAkBF,CAAC,GACrB,KAAK,cAAcA,CAAC,CAExB,CACA,sBAAsBA,EAAG,CACvB,GAAIE,GAAkBF,CAAC,EAAG,CACxB,IAAM3D,EAAM,KAAK,OAAO,MAAM,KAAK,aAAc,KAAK,KAAK,EACvDA,IAAQ,YACV,KAAK,YAAY8D,GAAY,KAAO9D,CAAG,EAAG,CAAC,EAE7C,KAAK,cAAc2D,CAAC,CACtB,CACF,CACA,cAAcA,EAAG,CACf,KAAK,IAAI,cAAc,KAAK,aAAc,KAAK,KAAK,EACpD,KAAK,aAAe,GACpB,KAAK,MAAQ,GACb,KAAK,oBAAoBA,CAAC,CAC5B,CACA,0BAA0BA,EAAG,CACvBC,GAAaD,CAAC,IAAcA,IAAM,IAElC,KAAK,IAAI,MAAM,GAAI,KAAK,KAAK,EAE/B,KAAK,MAAQ,EACb,KAAK,aAAe,KAAK,MAAQ,IAEjC,KAAK,MAAQD,GAAeC,CAAC,EAAI,EAAI,GACrC,KAAK,aAAe,KAAK,OAE7B,CACA,sBAAsBA,EAAG,EACnBA,IAAM,IAAMC,GAAaD,CAAC,KAC5B,KAAK,IAAI,WAAW,KAAK,aAAc,KAAK,KAAK,EACjD,KAAK,aAAe,GACpB,KAAK,MAAQ,GACb,KAAK,yBAAyBA,CAAC,EAEnC,CACA,yBAAyBA,EAAG,CACtBA,IAAM,KACR,KAAK,MAAQ,EACb,KAAK,aAAe,KAAK,MAAQ,EAErC,CACA,oBAAoBA,EAAG,CACjBA,IAAM,IACR,KAAK,IAAI,aAAa,KAAK,KAAK,EAC5B,KAAK,SACP,KAAK,MAAQ,GAEb,KAAK,MAAQ,EAEf,KAAK,aAAe,KAAK,MAAQ,GACxBA,IAAM,IACf,KAAK,MAAQ,EACT,KAAK,KAAK,IAAM,IAClB,KAAK,IAAI,MAAM,GAAI,KAAK,KAAK,GAEtBA,IAAM,IAAM,KAAK,KAAK,IAAM,IACrC,KAAK,IAAI,aAAa,KAAK,KAAK,EAChC,KAAK,MAAQ,EACb,KAAK,aAAe,KAAK,OACfC,GAAaD,CAAC,IACpBA,IAAM,IACR,KAAK,IAAI,MACP,GACA,KAAK,KACP,EAEF,KAAK,gBAAgBA,CAAC,EAE1B,CACA,gBAAgBA,EAAG,CACbA,IAAM,KAAO,KAAK,KAAK,IAAM,IAC/B,KAAK,MAAQ,GACb,KAAK,aAAe,KAAK,OAChBA,IAAM,IAAMA,IAAM,IAAMA,IAAM,IAAMA,IAAM,IACnD,KAAK,IAAI,UAAU,KAAK,MAAO,KAAK,MAAQ,CAAC,EAC7C,KAAK,MAAQ,GACb,KAAK,aAAe,KAAK,MAAQ,IAEjC,KAAK,MAAQ,GACb,KAAK,aAAe,KAAK,MAE7B,CACA,sBAAsBA,EAAG,CACnBA,IAAM,IACR,KAAK,IAAI,iBAAiB,KAAK,KAAK,EACpC,KAAK,MAAQ,EACb,KAAK,aAAe,KAAK,MAAQ,EACjC,KAAK,SAAW,IACNC,GAAaD,CAAC,IACxB,KAAK,MAAQ,GACb,KAAK,oBAAoBA,CAAC,EAE9B,CACA,gBAAgBA,EAAG,CACbA,IAAM,IAAME,GAAkBF,CAAC,GACjC,KAAK,IAAI,aAAa,KAAK,aAAc,KAAK,KAAK,EACnD,KAAK,kBAAkBA,CAAC,IACfA,IAAM,IAAMA,IAAM,IAAMA,IAAM,KACvC,KAAK,IAAI,MACP,GACA,KAAK,KACP,CAEJ,CACA,eAAeA,EAAG,CACZA,IAAM,IAAME,GAAkBF,CAAC,GACjC,KAAK,IAAI,UAAU,KAAK,aAAc,KAAK,KAAK,EAChD,KAAK,kBAAkBA,CAAC,GACfA,IAAM,IACf,KAAK,IAAI,UAAU,KAAK,aAAc,KAAK,KAAK,EAChD,KAAK,MAAQ,GACb,KAAK,aAAe,KAAK,MAAQ,GACxBA,IAAM,KACf,KAAK,IAAI,UAAU,KAAK,aAAc,KAAK,KAAK,EAChD,KAAK,MAAQ,GACb,KAAK,aAAe,KAAK,MAAQ,EAErC,CACA,cAAcA,EAAG,CACXA,IAAM,IAAME,GAAkBF,CAAC,GACjC,KAAK,IAAI,SAAS,KAAK,aAAc,KAAK,KAAK,EAC/C,KAAK,kBAAkBA,CAAC,GACfA,IAAM,GACf,KAAK,MAAQ,GACJA,IAAM,KACf,KAAK,IAAI,SAAS,KAAK,aAAc,KAAK,KAAK,EAC/C,KAAK,MAAQ,GACb,KAAK,aAAe,KAAK,MAAQ,EAErC,CACA,qBAAqBA,EAAG,CAClBA,IAAM,GACR,KAAK,MAAQ,IACJA,IAAM,IAAME,GAAkBF,CAAC,KACxC,KAAK,IAAI,SAAS,KAAK,aAAc,KAAK,MAAQ,CAAC,EACnD,KAAK,kBAAkBA,CAAC,EAEtB,KAAK,IAAI,MACP,GACA,KAAK,KACP,EAGN,CACA,mBAAmBA,EAAG,CAChBA,IAAM,IAAME,GAAkBF,CAAC,GACjC,KAAK,IAAI,cAAc,KAAK,aAAc,KAAK,KAAK,EACpD,KAAK,kBAAkBA,CAAC,GACfA,IAAM,KACf,KAAK,IAAI,cAAc,KAAK,aAAc,KAAK,KAAK,EACpD,KAAK,aAAe,KAAK,MAAQ,EAErC,CACA,kBAAkBA,EAAG,CACnB,KAAK,aAAe,KAAK,MACzB,KAAK,MAAQ,GACb,KAAK,IAAI,gBAAgB,KAAK,KAAK,EACnC,KAAK,mBAAmBA,CAAC,CAC3B,CACA,mBAAmBA,EAAG,CAChBA,IAAM,GACR,KAAK,MAAQ,GACJA,IAAM,IAAMA,IAAM,IAC3B,KAAK,IAAI,YAAY,EAAG,KAAK,YAAY,EACzC,KAAK,aAAe,GACpB,KAAK,MAAQ,GACb,KAAK,oBAAoBA,CAAC,GAChBC,GAAaD,CAAC,IACxB,KAAK,IAAI,YAAY,EAAG,KAAK,YAAY,EACzC,KAAK,gBAAgBA,CAAC,EAE1B,CACA,qBAAqBA,EAAG,CAClBA,IAAM,IACR,KAAK,MAAQ,GACb,KAAK,aAAe,KAAK,MAAQ,GACxBA,IAAM,IACf,KAAK,MAAQ,GACb,KAAK,aAAe,KAAK,MAAQ,GACvBC,GAAaD,CAAC,IACxB,KAAK,aAAe,KAAK,MACzB,KAAK,MAAQ,GACb,KAAK,yBAAyBA,CAAC,EAEnC,CACA,kBAAkBA,EAAGuB,EAAO,CACtBvB,IAAMuB,GACR,KAAK,IAAI,aAAa,KAAK,aAAc,KAAK,KAAK,EACnD,KAAK,aAAe,GACpB,KAAK,IAAI,YACPA,IAAU,GAAK,EAAI,EACnB,KAAK,MAAQ,CACf,EACA,KAAK,MAAQ,IACJvB,IAAM,IACf,KAAK,YAAY,CAErB,CACA,6BAA6BA,EAAG,CAC9B,KAAK,kBAAkBA,EAAG,EAAE,CAC9B,CACA,6BAA6BA,EAAG,CAC9B,KAAK,kBAAkBA,EAAG,EAAE,CAC9B,CACA,yBAAyBA,EAAG,CACtBC,GAAaD,CAAC,GAAKA,IAAM,IAC3B,KAAK,IAAI,aAAa,KAAK,aAAc,KAAK,KAAK,EACnD,KAAK,aAAe,GACpB,KAAK,IAAI,YAAY,EAAG,KAAK,KAAK,EAClC,KAAK,MAAQ,GACb,KAAK,oBAAoBA,CAAC,GACjBA,IAAM,IAAMA,IAAM,IAAMA,IAAM,IAAMA,IAAM,IAAMA,IAAM,GAC/D,KAAK,IAAI,MACP,GACA,KAAK,KACP,EACSA,IAAM,IACf,KAAK,YAAY,CAErB,CACA,uBAAuBA,EAAG,CACpBA,IAAM,IACR,KAAK,MAAQ,GACb,KAAK,cAAgB,GAErB,KAAK,MAAQA,IAAM,GAAK,GAAK,EAEjC,CACA,mBAAmBA,EAAG,EAChBA,IAAM,IAAM,KAAK,cAAc,EAAE,KACnC,KAAK,MAAQ,EACb,KAAK,aAAe,KAAK,MAAQ,EAErC,CACA,6BAA6BA,EAAG,EAC1BA,IAAM,IAAM,KAAK,cAAc,EAAE,KACnC,KAAK,IAAI,wBAAwB,KAAK,aAAc,KAAK,KAAK,EAC9D,KAAK,MAAQ,EACb,KAAK,aAAe,KAAK,MAAQ,EAErC,CACA,mBAAmBA,EAAG,CAChBA,IAAM,IACR,KAAK,MAAQ,GACb,KAAK,gBAAkBO,GAAU,WACjC,KAAK,cAAgB,EACrB,KAAK,aAAe,KAAK,MAAQ,GAEjC,KAAK,MAAQ,EAEjB,CACA,sBAAsBP,EAAG,EACnBA,IAAM,IAAM,KAAK,cAAc,EAAE,KACnC,KAAK,IAAI,UAAU,KAAK,aAAc,KAAK,KAAK,EAChD,KAAK,MAAQ,EACb,KAAK,aAAe,KAAK,MAAQ,EAErC,CACA,oBAAoBA,EAAG,CACjBA,IAAMO,GAAU,UAAU,CAAC,EAC7B,KAAK,aAAaA,GAAU,UAAW,CAAC,EAC/BP,IAAMO,GAAU,SAAS,CAAC,EACnC,KAAK,aAAaA,GAAU,SAAU,CAAC,GAEvC,KAAK,MAAQ,EACb,KAAK,eAAeP,CAAC,EAEzB,CACA,oBAAoBA,EAAG,CACjBA,IAAMO,GAAU,SAAS,CAAC,EAC5B,KAAK,aAAaA,GAAU,SAAU,CAAC,EAC9BP,IAAMO,GAAU,YAAY,CAAC,EACtC,KAAK,aAAaA,GAAU,YAAa,CAAC,GAE1C,KAAK,MAAQ,EACb,KAAK,eAAeP,CAAC,EAEzB,CACA,aAAc,CAEV,KAAK,UAAY,KAAK,MACtB,KAAK,MAAQ,GACb,KAAK,YAAc,KAAK,MACxB,KAAK,cAAc,YACjB,KAAK,YAAc,GAAK,KAAK,YAAc,GAAKpH,GAAU,aAAa,OAASA,GAAU,aAAa,SACzG,CAEJ,CACA,eAAgB,CACd,CACE,IAAM4I,EAAS,KAAK,cAAc,MAAM,KAAK,OAAQ,KAAK,KAAK,EAC3DA,GAAU,GACZ,KAAK,MAAQ,KAAK,UACdA,IAAW,IACb,KAAK,MAAQ,KAAK,cAGpB,KAAK,MAAQ,KAAK,OAAO,OAAS,CAEtC,CACF,CAMA,MAAMC,EAAO,CAEX,IADA,KAAK,OAASA,EACP,KAAK,MAAQ,KAAK,OAAO,QAAQ,CACtC,IAAMzB,EAAI,KAAK,OAAO,WAAW,KAAK,KAAK,EAI3C,OAHIA,IAAM,IAAM,KAAK,QAAU,IAC7B,KAAK,SAAS,KAAK,KAAK,KAAK,EAEvB,KAAK,MAAO,CAClB,IAAK,GAAG,CACN,KAAK,UAAUA,CAAC,EAChB,KACF,CACA,IAAK,GAAG,CACN,KAAK,uBAAuBA,CAAC,EAC7B,KACF,CACA,IAAK,GAAG,CACN,KAAK,mBAAmBA,CAAC,EACzB,KACF,CACA,IAAK,GAAG,CACN,KAAK,wBAAwBA,CAAC,EAC9B,KACF,CACA,IAAK,IAAI,CACP,KAAK,0BAA0BA,CAAC,EAChC,KACF,CACA,IAAK,IAAI,CACP,KAAK,cAAcA,CAAC,EACpB,KACF,CACA,IAAK,IAAI,CACP,KAAK,mBAAmBA,CAAC,EACzB,KACF,CACA,IAAK,IAAI,CACP,KAAK,6BAA6BA,CAAC,EACnC,KACF,CACA,IAAK,IAAI,CACP,KAAK,gBAAgBA,CAAC,EACtB,KACF,CACA,IAAK,IAAI,CACP,KAAK,eAAeA,CAAC,EACrB,KACF,CACA,IAAK,IAAI,CACP,KAAK,cAAcA,CAAC,EACpB,KACF,CACA,IAAK,IAAI,CACP,KAAK,qBAAqBA,CAAC,EAC3B,KACF,CACA,IAAK,IAAI,CACP,KAAK,mBAAmBA,CAAC,EACzB,KACF,CACA,IAAK,IAAI,CACP,KAAK,mBAAmBA,CAAC,EACzB,KACF,CACA,IAAK,IAAI,CACP,KAAK,sBAAsBA,CAAC,EAC5B,KACF,CACA,IAAK,IAAI,CACP,KAAK,oBAAoBA,CAAC,EAC1B,KACF,CACA,IAAK,GAAG,CACN,KAAK,eAAeA,CAAC,EACrB,KACF,CACA,IAAK,IAAI,CACP,KAAK,sBAAsBA,CAAC,EAC5B,KACF,CACA,IAAK,GAAG,CACN,KAAK,sBAAsBA,CAAC,EAC5B,KACF,CACA,IAAK,GAAG,CACN,KAAK,mBAAmBA,CAAC,EACzB,KACF,CACA,IAAK,IAAI,CACP,KAAK,mBAAmBA,CAAC,EACzB,KACF,CACA,IAAK,IAAI,CACP,KAAK,6BAA6BA,CAAC,EACnC,KACF,CACA,IAAK,IAAI,CACP,KAAK,qBAAqBA,CAAC,EAC3B,KACF,CACA,IAAK,GAAG,CACN,KAAK,0BAA0BA,CAAC,EAChC,KACF,CACA,IAAK,IAAI,CACP,KAAK,yBAAyBA,CAAC,EAC/B,KACF,CACA,IAAK,IAAI,CACP,KAAK,oBAAoBA,CAAC,EAC1B,KACF,CACA,IAAK,IAAI,CACP,KAAK,oBAAoBA,CAAC,EAC1B,KACF,CACA,IAAK,IAAI,CACP,KAAK,yBAAyBA,CAAC,EAC/B,KACF,CACA,IAAK,GAAG,CACN,KAAK,sBAAsBA,CAAC,EAC5B,KACF,CACA,IAAK,IAAI,CACP,KAAK,mBAAmBA,CAAC,EACzB,KACF,CACA,IAAK,IAAI,CACP,KAAK,uBAAuBA,CAAC,EAC7B,KACF,CACA,IAAK,IAAI,CACP,KAAK,mBAAmBA,CAAC,EACzB,KACF,CACA,IAAK,IAAI,CACP,KAAK,6BAA6BA,CAAC,EACnC,KACF,CACA,IAAK,IAAI,CACP,KAAK,cAAc,EACnB,KACF,CACF,CACA,KAAK,OACP,CACA,KAAK,QAAQ,EACb,KAAK,OAAO,CACd,CAIA,SAAU,CACJ,KAAK,eAAiB,KAAK,QACzB,KAAK,QAAU,GAAK,KAAK,QAAU,IAAM,KAAK,gBAAkB,GAClE,KAAK,IAAI,OAAO,KAAK,aAAc,KAAK,KAAK,EAC7C,KAAK,aAAe,KAAK,QAChB,KAAK,QAAU,IAAM,KAAK,QAAU,IAAM,KAAK,QAAU,MAClE,KAAK,IAAI,aAAa,KAAK,aAAc,KAAK,KAAK,EACnD,KAAK,aAAe,KAAK,OAG/B,CACA,QAAS,CACH,KAAK,QAAU,KACjB,KAAK,cAAc,IAAI,EACvB,KAAK,MAAQ,KAAK,WAEpB,KAAK,mBAAmB,EACxB,KAAK,IAAI,MAAM,CACjB,CAEA,oBAAqB,CACnB,IAAM0B,EAAW,KAAK,OAAO,OACzB,KAAK,cAAgBA,IAGrB,KAAK,QAAU,GACb,KAAK,kBAAoBnB,GAAU,SACrC,KAAK,IAAI,QAAQ,KAAK,aAAcmB,CAAQ,EAE5C,KAAK,IAAI,UAAU,KAAK,aAAcA,CAAQ,EAEvC,KAAK,QAAU,GAAK,KAAK,QAAU,IAAM,KAAK,QAAU,IAAM,KAAK,QAAU,IAAM,KAAK,QAAU,IAAM,KAAK,QAAU,IAAM,KAAK,QAAU,IAAM,KAAK,QAAU,IAAM,KAAK,QAAU,IAAM,KAAK,QAAU,IAAM,KAAK,QAAU,IAAM,KAAK,QAAU,IAAM,KAAK,QAAU,GACnR,KAAK,IAAI,OAAO,KAAK,aAAcA,CAAQ,EAE/C,CACA,cAAcf,EAAIC,EAAU,CAEpB,KAAK,YAAc,GAAK,KAAK,YAAc,IACzC,KAAK,aAAe,KAAK,aAC3B,KAAK,IAAI,aAAa,KAAK,aAAc,KAAK,WAAW,EAE3D,KAAK,aAAe,KAAK,YAAcA,EACvC,KAAK,MAAQ,KAAK,aAAe,EACjC,KAAK,IAAI,eACPhI,GAAU,cAAc+H,CAAE,EAC1B,KAAK,YACL,KAAK,YACP,IAEI,KAAK,aAAe,KAAK,aAC3B,KAAK,IAAI,OAAO,KAAK,aAAc,KAAK,WAAW,EAErD,KAAK,aAAe,KAAK,YAAcC,EACvC,KAAK,MAAQ,KAAK,aAAe,EACjC,KAAK,IAAI,aACPhI,GAAU,cAAc+H,CAAE,EAC1B,KAAK,YACL,KAAK,YACP,EAGN,CACF,EAEMgB,GAA2B,CAC/B,uBAA0B,yBAC1B,qBAAwB,uBACxB,6BAAgC,+BAChC,qBAAwB,uBACxB,+BAAkC,iCAClC,yBAA4B,2BAC5B,yBAA4B,2BAC5B,iBAAoB,kBACtB,EACMC,GAAkB,CACrB,uBAA2B,CAC1B,QAAS,qJACT,KAAM,8EACR,EACC,qBAAyB,CACxB,QAAUvE,GAAQ,2FAA2FA,CAAG,0CAA0CA,CAAG,MAC7J,KAAM,8DACR,EACC,6BAAiC,CAChC,QAAS,sUACT,KAAM,6DACR,EACC,qBAAyB,CACxB,QAAS,wEACT,KAAM,mFACR,EACC,+BAAmC,CAClC,QAAS,0RACT,KAAM,iEACR,EACC,yBAA6B,CAC5B,QAAS,uHACX,EACC,yBAA6B,CAC5B,QAAS,+CACT,KAAM,gFACR,EACC,iBAAqB,CACpB,QAAS,gKACT,KAAM,8DACR,CACF,EACA,SAASwE,GAAexE,EAAK,CAAE,aAAAyE,CAAa,EAAG,CAC7C,IAAMxE,EAAQwE,GAAgBA,EAAazE,CAAG,EAC9C,OAAIA,IAAQ,OACHC,GAAS,EAETA,CAEX,CACA,SAASyE,GAAgB1E,EAAKjB,EAAS,CACrC,IAAM4F,EAAOH,GAAe,OAAQzF,CAAO,EACrCkB,EAAQuE,GAAexE,EAAKjB,CAAO,EACzC,OAAO4F,IAAS,EAAI1E,IAAU,GAAOA,IAAU,EACjD,CACA,SAAS2E,GAAmB5E,EAAKjB,EAASS,KAAQkB,EAAM,CAEtD,OADgBgE,GAAgB1E,EAAKjB,CAAO,CAE9C,CACA,SAAS8F,GAAgB7E,EAAKjB,EAASS,KAAQkB,EAAM,CAEnD,GADY8D,GAAexE,EAAKjB,CAAO,IAC3B,mBACV,OAEF,GAAM,CAAE,QAAA+F,EAAS,KAAAC,CAAK,EAAIR,GAAgBvE,CAAG,EACvCgF,EAAM,gBAAgBhF,CAAG,KAAK,OAAO8E,GAAY,WAAaA,EAAQ,GAAGpE,CAAI,EAAIoE,CAAO,GAAGC,EAAO;AAAA,aAC7FA,CAAI,GAAK,EAAE,GAChBE,EAAM,IAAI,YAAYD,CAAG,EAC/BC,EAAI,KAAOjF,EACPR,IAAKyF,EAAI,IAAMzF,GACnBT,EAAQ,OAAOkG,CAAG,CACpB,CAEA,SAASC,GAAeC,EAAO,CAC7B,MAAMA,CACR,CACA,SAASC,GAAcJ,EAAK,CAC5B,CACA,SAASK,GAAoBC,EAAM9F,EAAK+F,EAAUC,EAAmB,CACnE,IAAMR,GAAOO,GAAYE,IAAeH,CAAI,GAAKE,GAAqB,IAChEL,EAAQ,IAAI,YAAY,OAAOH,CAAG,CAAC,EACzC,OAAAG,EAAM,KAAOG,EACbH,EAAM,IAAM3F,EACL2F,CACT,CACA,IAAMO,GAAa,CACjB,gCAAmC,EACnC,EAAK,kCACL,sBAAyB,EACzB,EAAK,wBACL,oBAAuB,EACvB,EAAK,sBACL,wBAA2B,EAC3B,EAAK,0BACL,8BAAiC,EACjC,EAAK,gCACL,oBAAuB,EACvB,EAAK,sBACL,aAAgB,EAChB,EAAK,eACL,eAAkB,EAClB,EAAK,iBACL,qCAAwC,EACxC,EAAK,uCACL,WAAc,EACd,EAAK,aACL,2BAA8B,GAC9B,GAAM,6BACN,2BAA8B,GAC9B,GAAM,6BACN,oCAAuC,GACvC,GAAM,sCACN,wBAA2B,GAC3B,GAAM,0BACN,qBAAwB,GACxB,GAAM,uBACN,sCAAyC,GACzC,GAAM,wCACN,eAAkB,GAClB,GAAM,iBACN,uCAA0C,GAC1C,GAAM,yCACN,iDAAoD,GACpD,GAAM,mDACN,6CAAgD,GAChD,GAAM,+CACN,0BAA6B,GAC7B,GAAM,4BACN,6CAAgD,GAChD,GAAM,+CACN,0BAA6B,GAC7B,GAAM,4BACN,kBAAqB,GACrB,GAAM,oBACN,kBAAqB,GACrB,GAAM,oBACN,4BAA+B,GAC/B,GAAM,8BACN,yBAA4B,GAC5B,GAAM,2BACN,yCAA4C,GAC5C,GAAM,2CACN,qBAAwB,GACxB,GAAM,uBACN,gBAAmB,GACnB,GAAM,kBACN,wBAA2B,GAC3B,GAAM,0BACN,sBAAyB,GACzB,GAAM,wBACN,6BAAgC,GAChC,GAAM,+BACN,+BAAkC,GAClC,GAAM,iCACN,uBAA0B,GAC1B,GAAM,yBACN,qBAAwB,GACxB,GAAM,uBACN,6CAAgD,GAChD,GAAM,+CACN,0BAA6B,GAC7B,GAAM,4BACN,8BAAiC,GACjC,GAAM,gCACN,0CAA6C,GAC7C,GAAM,4CACN,mBAAsB,GACtB,GAAM,qBACN,wBAA2B,GAC3B,GAAM,0BACN,+BAAkC,GAClC,GAAM,iCACN,4BAA+B,GAC/B,GAAM,8BACN,mBAAsB,GACtB,GAAM,qBACN,qBAAwB,GACxB,GAAM,uBACN,8BAAiC,GACjC,GAAM,gCACN,0BAA6B,GAC7B,GAAM,4BACN,4BAA+B,GAC/B,GAAM,8BACN,8BAAiC,GACjC,GAAM,gCACN,yBAA4B,GAC5B,GAAM,2BACN,cAAiB,GACjB,GAAM,gBACN,oCAAuC,GACvC,GAAM,sCACN,iBAAoB,GACpB,GAAM,kBACR,EACMD,GAAgB,CAEnB,EAAI,mBACJ,EAAI,gDACJ,EAAI,uBACJ,EAAI,kCACJ,EAAI,uBACJ,EAAI,yBACJ,EAAI,mCACJ,EAAI,6BACJ,EAAI,4BACJ,EAAI,yBACJ,GAAK,8BACL,GAAK,8BACL,GAAK,6CACL,GAAK,gCACL,GAAK,6BACL,GAAK,2BACL,GAAK,gCACL,GAAK,wEACL,GAAK,2GACL,GAAK,wCACL,GAAK,uCACL,GAAK,6BACL,GAAK,uBAEL,GAAK,mBACL,GAAK,8BACL,GAAK,wCACL,GAAK,wHACL,GAAK,qCAEL,GAAK,wCACL,GAAK,2CACL,GAAK,sDACL,GAAK,+BACL,GAAK,gCACL,GAAK,+DACL,GAAK,gCACL,GAAK,+DACL,GAAK,8BACL,GAAK,gDACL,GAAK,wKACL,GAAK,+BACL,GAAK,sHACL,GAAK,4DACL,GAAK,iCACL,GAAK,8DACL,GAAK,2FACL,GAAK;AAAA,uFAEL,GAAK,wCACL,GAAK,mDACL,GAAK,mMAEL,GAAK,yEACL,GAAK,6DACL,GAAK,2FACL,GAAK,qDAEL,GAAK,EACR,EAEA,SAASE,GAAgBC,EAAMC,EAAcC,EAAa,GAAOC,EAAc,CAAC,EAAGC,EAA2B,OAAO,OAAO,IAAI,EAAG,CACjI,IAAMC,EAAUL,EAAK,OAAS,UAAYA,EAAK,KAAK,CAAC,EAAE,OAAS,uBAAyBA,EAAK,KAAK,CAAC,EAAE,WAAaA,EACnHnK,GAAa,KAAKmK,EAAM,CACtB,MAAMxD,EAAM8D,EAAQ,CAElB,GADAA,GAAUH,EAAY,KAAKG,CAAM,EAC7BA,GAAUA,EAAO,KAAK,WAAW,IAAI,GAAK,CAACC,GAAc,SAASD,EAAO,IAAI,EAC/E,OAAO,KAAK,KAAK,EAEnB,GAAI9D,EAAK,OAAS,aAAc,CAC9B,IAAMgE,EAAU,CAAC,CAACJ,EAAS5D,EAAK,IAAI,EAC9BiE,EAAUC,GAAuBlE,EAAM8D,EAAQH,CAAW,GAC5DD,GAAcO,GAAW,CAACD,IAC5BP,EAAazD,EAAM8D,EAAQH,EAAaM,EAASD,CAAO,CAE5D,SAAWhE,EAAK,OAAS,kBACE8D,GAAO,OAAU,gBAC1C9D,EAAK,UAAY,WACRmE,GAAenE,CAAI,EACxBA,EAAK,SACPA,EAAK,SAAS,QAASoE,GAAOC,GAAaD,EAAIR,CAAQ,CAAC,EAExDU,GACEtE,EACCoE,GAAOG,GAAoBvE,EAAMoE,EAAIR,CAAQ,CAChD,UAEO5D,EAAK,OAAS,iBACnBA,EAAK,SACPA,EAAK,SAAS,QAASoE,GAAOC,GAAaD,EAAIR,CAAQ,CAAC,EAExDY,GACExE,EACCoE,GAAOG,GAAoBvE,EAAMoE,EAAIR,CAAQ,CAChD,UAEO5D,EAAK,OAAS,eAAiBA,EAAK,MAC7C,QAAWoE,KAAMK,GAAmBzE,EAAK,KAAK,EAC5CuE,GAAoBvE,EAAMoE,EAAIR,CAAQ,OAE/Bc,GAAe1E,CAAI,GAC5B2E,GACE3E,EACA,GACCoE,GAAOG,GAAoBvE,EAAMoE,EAAIR,CAAQ,CAChD,CAEJ,EACA,MAAM5D,EAAM8D,EAAQ,CAElB,GADAA,GAAUH,EAAY,IAAI,EACtB3D,IAAS6D,GAAW7D,EAAK,SAC3B,QAAWoE,KAAMpE,EAAK,SACpB4D,EAASQ,CAAE,IACPR,EAASQ,CAAE,IAAM,GACnB,OAAOR,EAASQ,CAAE,CAI1B,CACF,CAAC,CACH,CACA,SAASF,GAAuBE,EAAIN,EAAQH,EAAa,CACvD,GAAI,CAACG,EACH,MAAO,GAET,GAAIM,EAAG,OAAS,YACd,MAAO,GAET,GAAIQ,GAAaR,EAAIN,EAAQH,EAAYA,EAAY,OAAS,CAAC,CAAC,EAC9D,MAAO,GAET,OAAQG,EAAO,KAAM,CACnB,IAAK,uBACL,IAAK,oBACH,MAAO,GACT,IAAK,iBACH,OAAOA,EAAO,MAAQM,GAAMS,GAA0Bf,EAAQH,CAAW,EAC3E,IAAK,eACH,OAAOkB,GAA0Bf,EAAQH,CAAW,CACxD,CACA,MAAO,EACT,CACA,SAASkB,GAA0Bf,EAAQH,EAAa,CACtD,GAAIG,IAAWA,EAAO,OAAS,kBAAoBA,EAAO,OAAS,gBAAiB,CAClF,IAAIjD,EAAI8C,EAAY,OACpB,KAAO9C,KAAK,CACV,IAAMiE,EAAInB,EAAY9C,CAAC,EACvB,GAAIiE,EAAE,OAAS,uBACb,MAAO,GACF,GAAIA,EAAE,OAAS,kBAAoB,CAACA,EAAE,KAAK,SAAS,SAAS,EAClE,KAEJ,CACF,CACA,MAAO,EACT,CACA,SAASC,GAAkBpB,EAAa,CACtC,IAAI9C,EAAI8C,EAAY,OACpB,KAAO9C,KAAK,CACV,IAAMiE,EAAInB,EAAY9C,CAAC,EACvB,GAAIiE,EAAE,OAAS,gBACb,MAAO,GACF,GAAIA,EAAE,OAAS,mBACpB,KAEJ,CACA,MAAO,EACT,CACA,SAASR,GAAmBtE,EAAMgF,EAAS,CACzC,QAAWF,KAAK9E,EAAK,OACnB,QAAWoE,KAAMK,GAAmBK,CAAC,EACnCE,EAAQZ,CAAE,CAGhB,CACA,SAASI,GAAsBS,EAAOD,EAAS,CAC7C,QAAWE,KAAQD,EAAM,KACvB,GAAIC,EAAK,OAAS,sBAAuB,CACvC,GAAIA,EAAK,QAAS,SAClB,QAAWC,KAAQD,EAAK,aACtB,QAAWd,KAAMK,GAAmBU,EAAK,EAAE,EACzCH,EAAQZ,CAAE,CAGhB,SAAWc,EAAK,OAAS,uBAAyBA,EAAK,OAAS,mBAAoB,CAClF,GAAIA,EAAK,SAAW,CAACA,EAAK,GAAI,SAC9BF,EAAQE,EAAK,EAAE,CACjB,MAAWR,GAAeQ,CAAI,GAC5BP,GAAiBO,EAAM,GAAMF,CAAO,CAG1C,CACA,SAASN,GAAeQ,EAAM,CAC5B,OAAOA,EAAK,OAAS,kBAAoBA,EAAK,OAAS,kBAAoBA,EAAK,OAAS,cAC3F,CACA,SAASP,GAAiBO,EAAME,EAAOJ,EAAS,CAC9C,IAAMK,EAAWH,EAAK,OAAS,eAAiBA,EAAK,KAAOA,EAAK,KACjE,GAAIG,GAAYA,EAAS,OAAS,wBAA0BA,EAAS,OAAS,MAAQD,EAAQ,CAACA,GAC7F,QAAWD,KAAQE,EAAS,aAC1B,QAAWjB,KAAMK,GAAmBU,EAAK,EAAE,EACzCH,EAAQZ,CAAE,CAIlB,CACA,SAASK,GAAmBa,EAAOC,EAAQ,CAAC,EAAG,CAC7C,OAAQD,EAAM,KAAM,CAClB,IAAK,aACHC,EAAM,KAAKD,CAAK,EAChB,MACF,IAAK,mBACH,IAAIE,EAASF,EACb,KAAOE,EAAO,OAAS,oBACrBA,EAASA,EAAO,OAElBD,EAAM,KAAKC,CAAM,EACjB,MACF,IAAK,gBACH,QAAWC,KAAQH,EAAM,WACnBG,EAAK,OAAS,cAChBhB,GAAmBgB,EAAK,SAAUF,CAAK,EAEvCd,GAAmBgB,EAAK,MAAOF,CAAK,EAGxC,MACF,IAAK,eACHD,EAAM,SAAS,QAASI,GAAY,CAC9BA,GAASjB,GAAmBiB,EAASH,CAAK,CAChD,CAAC,EACD,MACF,IAAK,cACHd,GAAmBa,EAAM,SAAUC,CAAK,EACxC,MACF,IAAK,oBACHd,GAAmBa,EAAM,KAAMC,CAAK,EACpC,KACJ,CACA,OAAOA,CACT,CACA,SAASlB,GAAasB,EAAM/B,EAAU,CAChC+B,KAAQ/B,EACVA,EAAS+B,CAAI,IAEb/B,EAAS+B,CAAI,EAAI,CAErB,CACA,SAASpB,GAAoBvE,EAAM4F,EAAOhC,EAAU,CAClD,GAAM,CAAE,KAAA+B,CAAK,EAAIC,EACb5F,EAAK,UAAYA,EAAK,SAAS,IAAI2F,CAAI,IAG3CtB,GAAasB,EAAM/B,CAAQ,GAC1B5D,EAAK,WAAaA,EAAK,SAA2B,IAAI,MAAQ,IAAI2F,CAAI,EACzE,CACA,IAAMxB,GAAkBnE,GACf,8CAA8C,KAAKA,EAAK,IAAI,EAE/D6F,GAAoB7F,GAASA,IAASA,EAAK,OAAS,kBAAoBA,EAAK,OAAS,iBAAmB,CAACA,EAAK,SAC/G8F,GAAsB,CAAC9F,EAAM8D,IAAW+B,GAAiB/B,CAAM,GAAKA,EAAO,MAAQ9D,EACzF,SAAS4E,GAAa5E,EAAM8D,EAAQiC,EAAa,CAC/C,OAAQjC,EAAO,KAAM,CAInB,IAAK,mBACL,IAAK,2BACH,OAAIA,EAAO,WAAa9D,EACf,CAAC,CAAC8D,EAAO,SAEXA,EAAO,SAAW9D,EAC3B,IAAK,sBACH,OAAO8D,EAAO,SAAW9D,EAG3B,IAAK,qBACH,OAAO8D,EAAO,OAAS9D,EAGzB,IAAK,0BACH,OAAO8D,EAAO,OAAS9D,EAKzB,IAAK,cACH,MAAO,GAIT,IAAK,cACL,IAAK,qBACL,IAAK,eACH,OAAI8D,EAAO,MAAQ9D,EACV,CAAC,CAAC8D,EAAO,SAEX,GAKT,IAAK,iBACH,OAAIA,EAAO,MAAQ9D,EACV,CAAC,CAAC8D,EAAO,SAEX,CAACiC,GAAeA,EAAY,OAAS,gBAI9C,IAAK,gBACH,OAAIjC,EAAO,MAAQ9D,EACV,CAAC,CAAC8D,EAAO,SAEX,GACT,IAAK,uBACH,OAAOA,EAAO,MAAQ9D,EAGxB,IAAK,mBACL,IAAK,kBACH,OAAO8D,EAAO,aAAe9D,EAG/B,IAAK,uBACH,OAAO8D,EAAO,QAAU9D,EAG1B,IAAK,oBACH,OAAO8D,EAAO,QAAU9D,EAE1B,IAAK,mBACH,MAAO,GAET,IAAK,cACH,MAAO,GAET,IAAK,cACH,MAAO,GACT,IAAK,iBACL,IAAK,oBACH,MAAO,GAGT,IAAK,sBACL,IAAK,qBACH,MAAO,GAGT,IAAK,2BACL,IAAK,yBACH,MAAO,GAIT,IAAK,kBACH,OAAmC+F,GAAY,OACtC,GAEFjC,EAAO,QAAU9D,EAM1B,IAAK,yBACL,IAAK,2BACL,IAAK,kBACH,MAAO,GAET,IAAK,kBACH,MAAO,GAET,IAAK,eACH,MAAO,GAGT,IAAK,gBACL,IAAK,eACH,MAAO,GAGT,IAAK,eACH,MAAO,GAGT,IAAK,qBACH,OAAO8D,EAAO,MAAQ9D,EAGxB,IAAK,eACH,OAAO8D,EAAO,KAAO9D,EAGvB,IAAK,sBACH,OAAI8D,EAAO,MAAQ9D,EACV,CAAC,CAAC8D,EAAO,SAEX,EACX,CACA,MAAO,EACT,CACA,IAAMC,GAAgB,CACpB,iBAEA,kBAEA,sBAEA,4BAEA,uBAEF,EACA,SAASiC,GAAahG,EAAM,CAC1B,OAAI+D,GAAc,SAAS/D,EAAK,IAAI,EAC3BgG,GAAahG,EAAK,UAAU,EAE5BA,CAEX,CAEA,IAAMiG,GAAenB,GAAMA,EAAE,OAAS,GAAKA,EAAE,SAC7C,SAASoB,GAAgBtJ,EAAK,CAC5B,OAAQA,EAAK,CACX,IAAK,WACL,IAAK,WACH,OAAOpD,GACT,IAAK,WACL,IAAK,WACH,OAAOC,GACT,IAAK,YACL,IAAK,aACH,OAAOC,GACT,IAAK,iBACL,IAAK,kBACH,OAAOC,EACX,CACF,CACA,IAAMwM,GAAkB,4BAClBC,GAAsBT,GAAS,CAACQ,GAAgB,KAAKR,CAAI,EACzDU,GAAwB,wBACxBC,GAAmB,uBACnBC,GAAe,yBACfC,GAAgBC,GAAQA,EAAI,OAAS,EAAIA,EAAI,QAAUA,EAAI,IAAI,OAC/DC,GAA6BD,GAAQ,CACzC,IAAME,EAAOH,GAAaC,CAAG,EAAE,KAAK,EAAE,QAAQF,GAAetK,GAAMA,EAAE,KAAK,CAAC,EACvE2K,EAAQ,EACRC,EAAa,CAAC,EACdC,EAA0B,EAC1BC,EAAyB,EACzBC,EAAoB,KACxB,QAASnG,EAAI,EAAGA,EAAI8F,EAAK,OAAQ9F,IAAK,CACpC,IAAMoG,EAAON,EAAK,OAAO9F,CAAC,EAC1B,OAAQ+F,EAAO,CACb,IAAK,GACH,GAAIK,IAAS,IACXJ,EAAW,KAAKD,CAAK,EACrBA,EAAQ,EACRE,YACSG,IAAS,IAClBJ,EAAW,KAAKD,CAAK,EACrBA,EAAQ,EACRG,YACS,EAAElG,IAAM,EAAIwF,GAAwBC,IAAkB,KAAKW,CAAI,EACxE,MAAO,GAET,MACF,IAAK,GACCA,IAAS,KAAOA,IAAS,KAAOA,IAAS,KAC3CJ,EAAW,KAAKD,CAAK,EACrBA,EAAQ,EACRI,EAAoBC,GACXA,IAAS,IAClBH,IACSG,IAAS,MACb,EAAEH,IACLF,EAAQC,EAAW,IAAI,IAG3B,MACF,IAAK,GACH,GAAII,IAAS,KAAOA,IAAS,KAAOA,IAAS,IAC3CJ,EAAW,KAAKD,CAAK,EACrBA,EAAQ,EACRI,EAAoBC,UACXA,IAAS,IAClBF,YACSE,IAAS,IAAK,CACvB,GAAIpG,IAAM8F,EAAK,OAAS,EACtB,MAAO,GAEJ,EAAEI,IACLH,EAAQC,EAAW,IAAI,EAE3B,CACA,MACF,IAAK,GACCI,IAASD,IACXJ,EAAQC,EAAW,IAAI,EACvBG,EAAoB,MAEtB,KACJ,CACF,CACA,MAAO,CAACF,GAA2B,CAACC,CACtC,EACMG,GAAyB,CAACT,EAAK9J,IAAY,CAC/C,GAAI,CACF,IAAIiE,EAAM6F,EAAI,KAAOrN,GAAO,gBAAgBoN,GAAaC,CAAG,EAAG,CAC7D,QAAS9J,EAAQ,kBAAoB,CAAC,GAAGA,EAAQ,kBAAmB,YAAY,EAAI,CAAC,YAAY,CACnG,CAAC,EACD,OAAAiE,EAAMoF,GAAapF,CAAG,EACfA,EAAI,OAAS,oBAAsBA,EAAI,OAAS,4BAA8BA,EAAI,OAAS,cAAgBA,EAAI,OAAS,WACjI,MAAY,CACV,MAAO,EACT,CACF,EACMuG,GAAqBD,GACrBE,GAAU,+FACVC,GAAyBZ,GAAQW,GAAQ,KAAKZ,GAAaC,CAAG,CAAC,EAC/Da,GAAqB,CAACb,EAAK9J,IAAY,CAC3C,GAAI,CACF,IAAIiE,EAAM6F,EAAI,KAAOrN,GAAO,gBAAgBoN,GAAaC,CAAG,EAAG,CAC7D,QAAS9J,EAAQ,kBAAoB,CAAC,GAAGA,EAAQ,kBAAmB,YAAY,EAAI,CAAC,YAAY,CACnG,CAAC,EACD,OAAIiE,EAAI,OAAS,YACfA,EAAMA,EAAI,KAAK,CAAC,EACZA,EAAI,OAAS,wBACfA,EAAMA,EAAI,aAGdA,EAAMoF,GAAapF,CAAG,EACfA,EAAI,OAAS,sBAAwBA,EAAI,OAAS,yBAC3D,MAAY,CACV,MAAO,EACT,CACF,EACM2G,GAAiBD,GACvB,SAASE,GAAyBC,EAAKhL,EAAQiL,EAAqBjL,EAAO,OAAQ,CACjF,OAAOkL,GACL,CACE,OAAQF,EAAI,OACZ,KAAMA,EAAI,KACV,OAAQA,EAAI,MACd,EACAhL,EACAiL,CACF,CACF,CACA,SAASC,GAA4BF,EAAKhL,EAAQiL,EAAqBjL,EAAO,OAAQ,CACpF,IAAImL,EAAa,EACbC,EAAiB,GACrB,QAAShH,EAAI,EAAGA,EAAI6G,EAAoB7G,IAClCpE,EAAO,WAAWoE,CAAC,IAAM,KAC3B+G,IACAC,EAAiBhH,GAGrB,OAAA4G,EAAI,QAAUC,EACdD,EAAI,MAAQG,EACZH,EAAI,OAASI,IAAmB,GAAKJ,EAAI,OAASC,EAAqBA,EAAqBG,EACrFJ,CACT,CACA,SAASK,GAAOC,EAAWnF,EAAK,CAC9B,GAAI,CAACmF,EACH,MAAM,IAAI,MAAMnF,GAAO,+BAA+B,CAE1D,CACA,SAASoF,GAAQhI,EAAM2F,EAAMsC,EAAa,GAAO,CAC/C,QAASpH,EAAI,EAAGA,EAAIb,EAAK,MAAM,OAAQa,IAAK,CAC1C,IAAMiE,EAAI9E,EAAK,MAAMa,CAAC,EACtB,GAAIiE,EAAE,OAAS,IAAMmD,GAAcnD,EAAE,OAAS5L,GAAO,SAASyM,CAAI,EAAIb,EAAE,OAASa,EAAOA,EAAK,KAAKb,EAAE,IAAI,GACtG,OAAOA,CAEX,CACF,CACA,SAASoD,GAASlI,EAAM2F,EAAMwC,EAAc,GAAOF,EAAa,GAAO,CACrE,QAAS,EAAI,EAAG,EAAIjI,EAAK,MAAM,OAAQ,IAAK,CAC1C,IAAM8E,EAAI9E,EAAK,MAAM,CAAC,EACtB,GAAI8E,EAAE,OAAS,EAAG,CAChB,GAAIqD,EAAa,SACjB,GAAIrD,EAAE,OAASa,IAASb,EAAE,OAASmD,GACjC,OAAOnD,CAEX,SAAWA,EAAE,OAAS,SAAWA,EAAE,KAAOmD,IAAeG,GAActD,EAAE,IAAKa,CAAI,EAChF,OAAOb,CAEX,CACF,CACA,SAASsD,GAAcC,EAAK1C,EAAM,CAChC,MAAO,CAAC,EAAE0C,GAAOpC,GAAYoC,CAAG,GAAKA,EAAI,UAAY1C,EACvD,CACA,SAAS2C,GAAmBtI,EAAM,CAChC,OAAOA,EAAK,MAAM,KACf8E,GAAMA,EAAE,OAAS,GAAKA,EAAE,OAAS,SAAW,CAACA,EAAE,KAChDA,EAAE,IAAI,OAAS,GACf,CAACA,EAAE,IAAI,SAET,CACF,CACA,SAASyD,GAASvI,EAAM,CACtB,OAAOA,EAAK,OAAS,GAAKA,EAAK,OAAS,CAC1C,CACA,SAASwI,GAAO1D,EAAG,CACjB,OAAOA,EAAE,OAAS,GAAKA,EAAE,OAAS,KACpC,CACA,SAAS2D,GAAQ3D,EAAG,CAClB,OAAOA,EAAE,OAAS,GAAKA,EAAE,OAAS,MACpC,CACA,SAAS4D,GAAe1I,EAAM,CAC5B,OAAOA,EAAK,OAAS,GAAKA,EAAK,UAAY,CAC7C,CACA,SAAS2I,GAAa3I,EAAM,CAC1B,OAAOA,EAAK,OAAS,GAAKA,EAAK,UAAY,CAC7C,CACA,IAAM4I,GAAiC,IAAI,IAAI,CAAC5N,GAAiBC,EAAoB,CAAC,EACtF,SAAS4N,GAAqBhM,EAAOiM,EAAW,CAAC,EAAG,CAClD,GAAIjM,GAAS,CAAC3D,GAAO,SAAS2D,CAAK,GAAKA,EAAM,OAAS,GAAI,CACzD,IAAMwB,EAASxB,EAAM,OACrB,GAAI,CAAC3D,GAAO,SAASmF,CAAM,GAAKuK,GAAe,IAAIvK,CAAM,EACvD,OAAOwK,GACLhM,EAAM,UAAU,CAAC,EACjBiM,EAAS,OAAOjM,CAAK,CACvB,CAEJ,CACA,MAAO,CAACA,EAAOiM,CAAQ,CACzB,CACA,SAASC,GAAW/I,EAAMyF,EAAM9I,EAAS,CACvC,IAAIqM,EACAnM,EAAQmD,EAAK,OAAS,GAAKA,EAAK,MAAQA,EAAK,UAAU,CAAC,EACxD8I,EAAW,CAAC,EACZG,EACJ,GAAIpM,GAAS,CAAC3D,GAAO,SAAS2D,CAAK,GAAKA,EAAM,OAAS,GAAI,CACzD,IAAM+D,EAAMiI,GAAqBhM,CAAK,EACtCA,EAAQ+D,EAAI,CAAC,EACbkI,EAAWlI,EAAI,CAAC,EAChBqI,EAAaH,EAASA,EAAS,OAAS,CAAC,CAC3C,CACA,GAAIjM,GAAS,MAAQ3D,GAAO,SAAS2D,CAAK,EACxCmM,EAAqBvL,GAAuB,CAACgI,CAAI,CAAC,UACzC5I,EAAM,OAAS,GAAI,CAC5B,IAAMqM,EAAQrM,EAAM,UAAU,CAAC,EAC3B,CAAC3D,GAAO,SAASgQ,CAAK,GAAKA,EAAM,OAAS,GACvCC,GAAQ1D,EAAMyD,CAAK,GACtBA,EAAM,WAAW,QAAQzD,CAAI,EAG3B5I,EAAM,SAAW3B,GACnB8N,EAAqB5K,GAAqBzB,EAAQ,OAAO9B,EAAW,EAAG,CACrE4C,GAAuB,CAACgI,CAAI,CAAC,EAC7B5I,CACF,CAAC,EAEDA,EAAM,UAAU,QAAQY,GAAuB,CAACgI,CAAI,CAAC,CAAC,EAG1D,CAACuD,IAAuBA,EAAqBnM,EAC/C,MAAWA,EAAM,OAAS,IACnBsM,GAAQ1D,EAAM5I,CAAK,GACtBA,EAAM,WAAW,QAAQ4I,CAAI,EAE/BuD,EAAqBnM,IAErBmM,EAAqB5K,GAAqBzB,EAAQ,OAAO9B,EAAW,EAAG,CACrE4C,GAAuB,CAACgI,CAAI,CAAC,EAC7B5I,CACF,CAAC,EACGoM,GAAcA,EAAW,SAAWhO,KACtCgO,EAAaH,EAASA,EAAS,OAAS,CAAC,IAGzC9I,EAAK,OAAS,GACZiJ,EACFA,EAAW,UAAU,CAAC,EAAID,EAE1BhJ,EAAK,MAAQgJ,EAGXC,EACFA,EAAW,UAAU,CAAC,EAAID,EAE1BhJ,EAAK,UAAU,CAAC,EAAIgJ,CAG1B,CACA,SAASG,GAAQ1D,EAAM5I,EAAO,CAC5B,IAAIuM,EAAS,GACb,GAAI3D,EAAK,IAAI,OAAS,EAAG,CACvB,IAAM4D,EAAc5D,EAAK,IAAI,QAC7B2D,EAASvM,EAAM,WAAW,KACvBiI,GAAMA,EAAE,IAAI,OAAS,GAAKA,EAAE,IAAI,UAAYuE,CAC/C,CACF,CACA,OAAOD,CACT,CACA,SAASE,GAAe3D,EAAM4D,EAAM,CAClC,MAAO,IAAIA,CAAI,IAAI5D,EAAK,QAAQ,SAAU,CAAC6D,EAAaC,IAC/CD,IAAgB,IAAM,IAAM7D,EAAK,WAAW8D,CAAY,EAAE,SAAS,CAC3E,CAAC,EACJ,CACA,SAASC,GAAY1J,EAAM2J,EAAK,CAC9B,GAAI,CAAC3J,GAAQ,OAAO,KAAK2J,CAAG,EAAE,SAAW,EACvC,MAAO,GAET,OAAQ3J,EAAK,KAAM,CACjB,IAAK,GACH,QAASa,EAAI,EAAGA,EAAIb,EAAK,MAAM,OAAQa,IAAK,CAC1C,IAAMiE,EAAI9E,EAAK,MAAMa,CAAC,EACtB,GAAIiE,EAAE,OAAS,IAAM4E,GAAY5E,EAAE,IAAK6E,CAAG,GAAKD,GAAY5E,EAAE,IAAK6E,CAAG,GACpE,MAAO,EAEX,CACA,OAAO3J,EAAK,SAAS,KAAMO,GAAMmJ,GAAYnJ,EAAGoJ,CAAG,CAAC,EACtD,IAAK,IACH,OAAID,GAAY1J,EAAK,OAAQ2J,CAAG,EACvB,GAEF3J,EAAK,SAAS,KAAMO,GAAMmJ,GAAYnJ,EAAGoJ,CAAG,CAAC,EACtD,IAAK,GACH,OAAO3J,EAAK,SAAS,KAAM4J,GAAMF,GAAYE,EAAGD,CAAG,CAAC,EACtD,IAAK,IACH,OAAID,GAAY1J,EAAK,UAAW2J,CAAG,EAC1B,GAEF3J,EAAK,SAAS,KAAMO,GAAMmJ,GAAYnJ,EAAGoJ,CAAG,CAAC,EACtD,IAAK,GACH,MAAO,CAAC3J,EAAK,UAAYoG,GAAmBpG,EAAK,OAAO,GAAK,CAAC,CAAC2J,EAAI3J,EAAK,OAAO,EACjF,IAAK,GACH,OAAOA,EAAK,SAAS,KAAMO,GAAMrH,GAAO,SAASqH,CAAC,GAAKmJ,GAAYnJ,EAAGoJ,CAAG,CAAC,EAC5E,IAAK,GACL,IAAK,IACH,OAAOD,GAAY1J,EAAK,QAAS2J,CAAG,EACtC,IAAK,GACL,IAAK,GACL,IAAK,IACH,MAAO,GACT,QACE,MAAO,EACX,CACF,CACA,SAASE,GAAmB7J,EAAM,CAChC,OAAIA,EAAK,OAAS,IAAMA,EAAK,SAAWpE,GAC/BoE,EAAK,UAAU,CAAC,EAAE,QAElBA,CAEX,CACA,IAAM8J,GAAa,uCAEbC,GAAuB,CAC3B,UAAW,OACX,GAAI,EACJ,WAAY,CAAC,KAAM,IAAI,EACvB,aAAc,IAAM,EACpB,UAAW7Q,GAAO,GAClB,SAAUA,GAAO,GACjB,mBAAoBA,GAAO,GAC3B,gBAAiBA,GAAO,GACxB,QAAS4J,GACT,OAAQE,GACR,SAAU,GACV,kBAAmB,EACrB,EACIgH,GAAiBD,GACjBE,GAAc,KACdC,GAAe,GACfC,GAAiB,KACjBC,GAAc,KACdC,GAAmB,GACnBC,GAAwB,GACxBC,GAAsB,GACtBC,GAAQ,EACRC,GAAS,GACTC,GAAsB,KACpB1J,GAAQ,CAAC,EACT2J,GAAY,IAAI5J,GAAUC,GAAO,CACrC,MAAO4J,GACP,OAAOrJ,EAAOsJ,EAAK,CACjBC,GAAOC,GAASxJ,EAAOsJ,CAAG,EAAGtJ,EAAOsJ,CAAG,CACzC,EACA,aAAa5D,EAAM1F,EAAOsJ,EAAK,CAC7BC,GAAO7D,EAAM1F,EAAOsJ,CAAG,CACzB,EACA,gBAAgBtJ,EAAOsJ,EAAK,CAC1B,GAAIJ,GACF,OAAOK,GAAOC,GAASxJ,EAAOsJ,CAAG,EAAGtJ,EAAOsJ,CAAG,EAEhD,IAAIG,EAAazJ,EAAQoJ,GAAU,cAAc,OAC7CM,EAAWJ,EAAMF,GAAU,eAAe,OAC9C,KAAOnK,GAAa0J,GAAa,WAAWc,CAAU,CAAC,GACrDA,IAEF,KAAOxK,GAAa0J,GAAa,WAAWe,EAAW,CAAC,CAAC,GACvDA,IAEF,IAAIxE,EAAMsE,GAASC,EAAYC,CAAQ,EACnCxE,EAAI,SAAS,GAAG,IAEhBA,EAAMtN,GAAU,WAAWsN,CAAG,GAGlCyE,GAAQ,CACN,KAAM,EACN,QAASC,GAAU1E,EAAK,GAAO2E,GAAOJ,EAAYC,CAAQ,CAAC,EAC3D,IAAKG,GAAO7J,EAAOsJ,CAAG,CACxB,CAAC,CACH,EACA,cAActJ,EAAOsJ,EAAK,CACxB,IAAMlF,EAAOoF,GAASxJ,EAAOsJ,CAAG,EAChCV,GAAiB,CACf,KAAM,EACN,IAAKxE,EACL,GAAIqE,GAAe,aAAarE,EAAM3E,GAAM,CAAC,EAAGgJ,GAAe,EAAE,EACjE,QAAS,EAET,MAAO,CAAC,EACR,SAAU,CAAC,EACX,IAAKoB,GAAO7J,EAAQ,EAAGsJ,CAAG,EAC1B,YAAa,MACf,CACF,EACA,aAAaA,EAAK,CAChBQ,GAAWR,CAAG,CAChB,EACA,WAAWtJ,EAAOsJ,EAAK,CACrB,IAAMlF,EAAOoF,GAASxJ,EAAOsJ,CAAG,EAChC,GAAI,CAACb,GAAe,UAAUrE,CAAI,EAAG,CACnC,IAAI2F,EAAQ,GACZ,QAAS,EAAI,EAAG,EAAItK,GAAM,OAAQ,IAEhC,GADUA,GAAM,CAAC,EACX,IAAI,YAAY,IAAM2E,EAAK,YAAY,EAAG,CAC9C2F,EAAQ,GACJ,EAAI,GACNV,GAAU,GAAI5J,GAAM,CAAC,EAAE,IAAI,MAAM,MAAM,EAEzC,QAASuK,EAAI,EAAGA,GAAK,EAAGA,IAAK,CAC3B,IAAMC,EAAKxK,GAAM,MAAM,EACvByK,GAAWD,EAAIX,EAAKU,EAAI,CAAC,CAC3B,CACA,KACF,CAEGD,GACHV,GAAU,GAAIc,GAAUnK,EAAO,EAAE,CAAC,CAEtC,CACF,EACA,iBAAiBsJ,EAAK,CACpB,IAAMlF,EAAOwE,GAAe,IAC5BA,GAAe,cAAgB,GAC/BkB,GAAWR,CAAG,EACV7J,GAAM,CAAC,GAAKA,GAAM,CAAC,EAAE,MAAQ2E,GAC/B8F,GAAWzK,GAAM,MAAM,EAAG6J,CAAG,CAEjC,EACA,aAAatJ,EAAOsJ,EAAK,CACvBT,GAAc,CACZ,KAAM,EACN,KAAMW,GAASxJ,EAAOsJ,CAAG,EACzB,QAASO,GAAO7J,EAAOsJ,CAAG,EAC1B,MAAO,OACP,IAAKO,GAAO7J,CAAK,CACnB,CACF,EACA,UAAUA,EAAOsJ,EAAK,CACpB,IAAMc,EAAMZ,GAASxJ,EAAOsJ,CAAG,EACzBlF,EAAOgG,IAAQ,KAAOA,IAAQ,IAAM,OAASA,IAAQ,IAAM,KAAOA,IAAQ,IAAM,OAASA,EAAI,MAAM,CAAC,EAI1G,GAHI,CAAClB,IAAU9E,IAAS,IACtBiF,GAAU,GAAIrJ,CAAK,EAEjBkJ,IAAU9E,IAAS,GACrByE,GAAc,CACZ,KAAM,EACN,KAAMuB,EACN,QAASP,GAAO7J,EAAOsJ,CAAG,EAC1B,MAAO,OACP,IAAKO,GAAO7J,CAAK,CACnB,UAEA6I,GAAc,CACZ,KAAM,EACN,KAAAzE,EACA,QAASgG,EACT,IAAK,OACL,IAAK,OACL,UAAWA,IAAQ,IAAM,CAAC7N,GAAuB,MAAM,CAAC,EAAI,CAAC,EAC7D,IAAKsN,GAAO7J,CAAK,CACnB,EACIoE,IAAS,MAAO,CAClB8E,GAASE,GAAU,OAAS,GAC5BD,GAAsBP,GACtB,IAAMtN,EAAQsN,GAAe,MAC7B,QAAStJ,EAAI,EAAGA,EAAIhE,EAAM,OAAQgE,IAC5BhE,EAAMgE,CAAC,EAAE,OAAS,IACpBhE,EAAMgE,CAAC,EAAI+K,GAAU/O,EAAMgE,CAAC,CAAC,EAGnC,CAEJ,EACA,SAASU,EAAOsJ,EAAK,CACnB,GAAItJ,IAAUsJ,EAAK,OACnB,IAAMxC,EAAM0C,GAASxJ,EAAOsJ,CAAG,EAC/B,GAAIJ,IAAU,CAACjC,GAAO4B,EAAW,EAC/BA,GAAY,MAAQ/B,EACpBwD,GAAUzB,GAAY,QAASS,CAAG,MAC7B,CACL,IAAM7M,EAAWqK,EAAI,CAAC,IAAM,IAC5B+B,GAAY,IAAMe,GAChBnN,EAAWqK,EAAMA,EAAI,MAAM,EAAG,EAAE,EAChCrK,EACAoN,GAAO7J,EAAOsJ,CAAG,EACjB7M,EAAW,EAAI,CACjB,CACF,CACF,EACA,cAAcuD,EAAOsJ,EAAK,CACxB,IAAMiB,EAAMf,GAASxJ,EAAOsJ,CAAG,EAC/B,GAAIJ,IAAU,CAACjC,GAAO4B,EAAW,EAC/BA,GAAY,MAAQ,IAAM0B,EAC1BD,GAAUzB,GAAY,QAASS,CAAG,UACzBT,GAAY,OAAS,OAAQ,CACtC,IAAM/B,EAAM+B,GAAY,IACpB/B,IACFA,EAAI,SAAW,IAAMyD,EACrBD,GAAUxD,EAAI,IAAKwC,CAAG,EAE1B,KAAO,CACL,IAAMpE,EAAM3I,GAAuBgO,EAAK,GAAMV,GAAO7J,EAAOsJ,CAAG,CAAC,EAChET,GAAY,UAAU,KAAK3D,CAAG,CAChC,CACF,EACA,aAAalF,EAAOsJ,EAAK,CACvBR,IAAoBU,GAASxJ,EAAOsJ,CAAG,EACnCP,GAAwB,IAAGA,GAAwB/I,GACvDgJ,GAAsBM,CACxB,EACA,eAAe5D,EAAM1F,EAAOsJ,EAAK,CAC/BR,IAAoBpD,EAChBqD,GAAwB,IAAGA,GAAwB/I,GACvDgJ,GAAsBM,CACxB,EACA,gBAAgBA,EAAK,CACnB,IAAMtJ,EAAQ6I,GAAY,IAAI,MAAM,OAC9BzE,EAAOoF,GAASxJ,EAAOsJ,CAAG,EAC5BT,GAAY,OAAS,IACvBA,GAAY,QAAUzE,GAEpBwE,GAAe,MAAM,KACtBrF,IAAOA,EAAE,OAAS,EAAIA,EAAE,QAAUA,EAAE,QAAUa,CACjD,GACEiF,GAAU,EAAGrJ,CAAK,CAEtB,EACA,YAAYO,EAAO+I,EAAK,CACtB,GAAIV,IAAkBC,GAAa,CAEjC,GADAyB,GAAUzB,GAAY,IAAKS,CAAG,EAC1B/I,IAAU,EACZ,GAAIsI,GAAY,OAAS,EACnBA,GAAY,OAAS,UACvBC,GAAmB0B,GAAS1B,EAAgB,EAAE,KAAK,GAEjDvI,IAAU,GAAK,CAACuI,IAClBO,GAAU,GAAIC,CAAG,EAEnBT,GAAY,MAAQ,CAClB,KAAM,EACN,QAASC,GACT,IAAKvI,IAAU,EAAIsJ,GAAOd,GAAuBC,EAAmB,EAAIa,GAAOd,GAAwB,EAAGC,GAAsB,CAAC,CACnI,EACII,GAAU,WAAaR,GAAe,MAAQ,YAAcC,GAAY,OAAS,QAAUC,IAAoBA,KAAqB,QACtIM,GAAU,YAAYjK,GAAY,YAAY,EAAG,CAAC,MAE/C,CACL,IAAIsL,EAAe,EAEb5B,GAAY,OAAS,MACvB4B,EAAe,EACN5B,GAAY,OAAS,OAC9B4B,EAAe,EACN5B,GAAY,OAAS,MAAQC,GAAiB,SAAS,GAAG,IACnE2B,EAAe,GAGnB5B,GAAY,IAAMe,GAChBd,GACA,GACAe,GAAOd,GAAuBC,EAAmB,EACjD,EACAyB,CACF,EACI5B,GAAY,OAAS,QACvBA,GAAY,eAAiB6B,GAAmB7B,GAAY,GAAG,GAEjE,IAAI8B,EAAY,GACZ9B,GAAY,OAAS,SAAW8B,EAAY9B,GAAY,UAAU,UACnE0B,GAAQA,EAAI,UAAY,MAC3B,GAAK,IAAMtJ,GACT,uBACAwH,GACAI,GAAY,IACZA,GAAY,IAAI,IAAI,MACtB,IACEA,GAAY,KAAO,QACnBA,GAAY,UAAU,OAAO8B,EAAW,CAAC,EAE7C,EAEE9B,GAAY,OAAS,GAAKA,GAAY,OAAS,QACjDD,GAAe,MAAM,KAAKC,EAAW,CAEzC,CACAC,GAAmB,GACnBC,GAAwBC,GAAsB,EAChD,EACA,UAAUhJ,EAAOsJ,EAAK,CAChBb,GAAe,UACjBkB,GAAQ,CACN,KAAM,EACN,QAASH,GAASxJ,EAAOsJ,CAAG,EAC5B,IAAKO,GAAO7J,EAAQ,EAAGsJ,EAAM,CAAC,CAChC,CAAC,CAEL,EACA,OAAQ,CACN,IAAMA,EAAMX,GAAa,OACzB,GAAIS,GAAU,QAAU,EACtB,OAAQA,GAAU,MAAO,CACvB,IAAK,GACL,IAAK,GACHC,GAAU,EAAGC,CAAG,EAChB,MACF,IAAK,GACL,IAAK,GACHD,GACE,GACAD,GAAU,YACZ,EACA,MACF,IAAK,IACCA,GAAU,kBAAoB7J,GAAU,SAC1C8J,GAAU,EAAGC,CAAG,EAEhBD,GAAU,EAAGC,CAAG,EAElB,MACF,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IAEL,IAAK,IAEL,IAAK,IACHD,GAAU,EAAGC,CAAG,EAChB,KACJ,CAEF,QAAS5L,EAAQ,EAAGA,EAAQ+B,GAAM,OAAQ/B,IACxCwM,GAAWzK,GAAM/B,CAAK,EAAG4L,EAAM,CAAC,EAChCD,GAAU,GAAI5J,GAAM/B,CAAK,EAAE,IAAI,MAAM,MAAM,CAE/C,EACA,QAAQsC,EAAOsJ,EAAK,CACd7J,GAAM,CAAC,EAAE,KAAO,EAClB8J,GAAOC,GAASxJ,EAAOsJ,CAAG,EAAGtJ,EAAOsJ,CAAG,EAEvCD,GAAU,EAAGrJ,EAAQ,CAAC,CAE1B,EACA,wBAAwBA,EAAO,EACxBP,GAAM,CAAC,EAAIA,GAAM,CAAC,EAAE,GAAKgJ,GAAe,MAAQ,GACnDY,GACE,GACArJ,EAAQ,CACV,CAEJ,CACF,CAAC,EACK4K,GAAgB,iCAChBC,GAAgB,WACtB,SAASH,GAAmBjK,EAAO,CACjC,IAAM5E,EAAM4E,EAAM,IACZyE,EAAMzE,EAAM,QACZqK,EAAU5F,EAAI,MAAMqD,EAAU,EACpC,GAAI,CAACuC,EAAS,OACd,GAAM,CAAC,CAAEC,EAAKC,CAAG,EAAIF,EACfG,EAAwB,CAACzO,EAAS8D,EAAQ4K,EAAU,KAAU,CAClE,IAAMlL,EAAQnE,EAAI,MAAM,OAASyE,EAC3BgJ,EAAMtJ,EAAQxD,EAAQ,OAC5B,OAAOoN,GACLpN,EACA,GACAqN,GAAO7J,EAAOsJ,CAAG,EACjB,EACA4B,EAAU,EAAiB,CAC7B,CACF,EACMrD,EAAS,CACb,OAAQoD,EAAsBD,EAAI,KAAK,EAAG9F,EAAI,QAAQ8F,EAAKD,EAAI,MAAM,CAAC,EACtE,MAAO,OACP,IAAK,OACL,MAAO,OACP,UAAW,EACb,EACII,EAAeJ,EAAI,KAAK,EAAE,QAAQF,GAAe,EAAE,EAAE,KAAK,EACxDO,EAAgBL,EAAI,QAAQI,CAAY,EACxCE,EAAgBF,EAAa,MAAMP,EAAa,EACtD,GAAIS,EAAe,CACjBF,EAAeA,EAAa,QAAQP,GAAe,EAAE,EAAE,KAAK,EAC5D,IAAMU,EAAaD,EAAc,CAAC,EAAE,KAAK,EACrCE,EAKJ,GAJID,IACFC,EAAYrG,EAAI,QAAQoG,EAAYF,EAAgBD,EAAa,MAAM,EACvEtD,EAAO,IAAMoD,EAAsBK,EAAYC,EAAW,EAAI,GAE5DF,EAAc,CAAC,EAAG,CACpB,IAAMG,EAAeH,EAAc,CAAC,EAAE,KAAK,EACvCG,IACF3D,EAAO,MAAQoD,EACbO,EACAtG,EAAI,QACFsG,EACA3D,EAAO,IAAM0D,EAAYD,EAAW,OAASF,EAAgBD,EAAa,MAC5E,EACA,EACF,EAEJ,CACF,CACA,OAAIA,IACFtD,EAAO,MAAQoD,EAAsBE,EAAcC,EAAe,EAAI,GAEjEvD,CACT,CACA,SAAS2B,GAASxJ,EAAOsJ,EAAK,CAC5B,OAAOX,GAAa,MAAM3I,EAAOsJ,CAAG,CACtC,CACA,SAASQ,GAAWR,EAAK,CACnBF,GAAU,YACZR,GAAe,SAAWiB,GAAOP,EAAM,EAAGA,EAAM,CAAC,GAEnDK,GAAQf,EAAc,EACtB,GAAM,CAAE,IAAAvN,EAAK,GAAAoQ,CAAG,EAAI7C,GAChB6C,IAAO,GAAKhD,GAAe,SAASpN,CAAG,GACzC4N,KAEER,GAAe,UAAUpN,CAAG,EAC9B6O,GAAWtB,GAAgBU,CAAG,GAE9B7J,GAAM,QAAQmJ,EAAc,GACxB6C,IAAO,GAAKA,IAAO,KACrBrC,GAAU,MAAQ,KAGtBR,GAAiB,IACnB,CACA,SAASW,GAAO/M,EAASwD,EAAOsJ,EAAK,CACnC,IAAM/G,EAAS9C,GAAM,CAAC,GAAKiJ,GACrBgD,EAAWnJ,EAAO,SAASA,EAAO,SAAS,OAAS,CAAC,EACvDmJ,GAAYA,EAAS,OAAS,GAChCA,EAAS,SAAWlP,EACpB8N,GAAUoB,EAAS,IAAKpC,CAAG,GAE3B/G,EAAO,SAAS,KAAK,CACnB,KAAM,EACN,QAAA/F,EACA,IAAKqN,GAAO7J,EAAOsJ,CAAG,CACxB,CAAC,CAEL,CACA,SAASY,GAAWD,EAAIX,EAAKqC,EAAY,GAAO,CAC1CA,EACFrB,GAAUL,EAAG,IAAKE,GAAUb,EAAK,EAAE,CAAC,EAEpCgB,GAAUL,EAAG,IAAK2B,GAAUtC,EAAK,EAAE,EAAI,CAAC,EAEtCF,GAAU,YACRa,EAAG,SAAS,OACdA,EAAG,SAAS,IAAMtS,GAAO,OAAO,CAAC,EAAGsS,EAAG,SAASA,EAAG,SAAS,OAAS,CAAC,EAAE,IAAI,GAAG,EAE/EA,EAAG,SAAS,IAAMtS,GAAO,OAAO,CAAC,EAAGsS,EAAG,SAAS,KAAK,EAEvDA,EAAG,SAAS,OAAST,GACnBS,EAAG,SAAS,MAAM,OAClBA,EAAG,SAAS,IAAI,MAClB,GAEF,GAAM,CAAE,IAAA5O,EAAK,GAAAoQ,EAAI,SAAAxQ,CAAS,EAAIgP,EAa9B,GAZKf,KACC7N,IAAQ,OACV4O,EAAG,QAAU,EACJ4B,GAAmB5B,CAAE,EAC9BA,EAAG,QAAU,EACJrO,GAAYqO,CAAE,IACvBA,EAAG,QAAU,IAGZb,GAAU,WACba,EAAG,SAAW6B,GAAmB7Q,CAAQ,GAEvCwQ,IAAO,GAAKhD,GAAe,mBAAmBpN,CAAG,EAAG,CACtD,IAAMsM,EAAQ1M,EAAS,CAAC,EACpB0M,GAASA,EAAM,OAAS,IAC1BA,EAAM,QAAUA,EAAM,QAAQ,QAAQ,SAAU,EAAE,EAEtD,CACI8D,IAAO,GAAKhD,GAAe,SAASpN,CAAG,GACzC4N,KAEEE,KAAwBc,IAC1Bf,GAASE,GAAU,OAAS,GAC5BD,GAAsB,MAEpBC,GAAU,QAAU3J,GAAM,CAAC,EAAIA,GAAM,CAAC,EAAE,GAAKgJ,GAAe,MAAQ,IACtEW,GAAU,MAAQ,IAEpB,CACE,IAAM9N,EAAQ2O,EAAG,MACjB,GAAI,CAACb,GAAU,WAAarI,GAC1B,2BACA0H,EACF,GAAKwB,EAAG,MAAQ,YAAc,CAAC4B,GAAmB5B,CAAE,EAAG,CACrD,IAAM1H,EAAS9C,GAAM,CAAC,GAAKiJ,GACrBhL,EAAQ6E,EAAO,SAAS,QAAQ0H,CAAE,EACxC1H,EAAO,SAAS,OAAO7E,EAAO,EAAG,GAAGuM,EAAG,QAAQ,CACjD,CACA,IAAM8B,EAAqBzQ,EAAM,KAC9BiI,GAAMA,EAAE,OAAS,GAAKA,EAAE,OAAS,iBACpC,EACIwI,GAAsB9K,GACxB,2BACAwH,GACAsD,EAAmB,GACrB,GAAK9B,EAAG,SAAS,SACf8B,EAAmB,MAAQ,CACzB,KAAM,EACN,QAASvC,GACPS,EAAG,SAAS,CAAC,EAAE,IAAI,MAAM,OACzBA,EAAG,SAASA,EAAG,SAAS,OAAS,CAAC,EAAE,IAAI,IAAI,MAC9C,EACA,IAAK8B,EAAmB,GAC1B,EAEJ,CACF,CACA,SAASH,GAAUlO,EAAOsB,EAAG,CAC3B,IAAIM,EAAI5B,EACR,KAAOiL,GAAa,WAAWrJ,CAAC,IAAMN,GAAKM,EAAIqJ,GAAa,OAAS,GAAGrJ,IACxE,OAAOA,CACT,CACA,SAAS6K,GAAUzM,EAAOsB,EAAG,CAC3B,IAAIM,EAAI5B,EACR,KAAOiL,GAAa,WAAWrJ,CAAC,IAAMN,GAAKM,GAAK,GAAGA,IACnD,OAAOA,CACT,CACA,IAAM0M,GAAqC,IAAI,IAAI,CAAC,KAAM,OAAQ,UAAW,MAAO,MAAM,CAAC,EAC3F,SAASH,GAAmB,CAAE,IAAAxQ,EAAK,MAAAC,CAAM,EAAG,CAC1C,GAAID,IAAQ,YACV,QAASiE,EAAI,EAAGA,EAAIhE,EAAM,OAAQgE,IAChC,GAAIhE,EAAMgE,CAAC,EAAE,OAAS,GAAK0M,GAAmB,IAAI1Q,EAAMgE,CAAC,EAAE,IAAI,EAC7D,MAAO,GAIb,MAAO,EACT,CACA,SAAS1D,GAAY,CAAE,IAAAP,EAAK,MAAAC,CAAM,EAAG,CACnC,GAAImN,GAAe,gBAAgBpN,CAAG,EACpC,MAAO,GAET,GAAIA,IAAQ,aAAe4Q,GAAY5Q,EAAI,WAAW,CAAC,CAAC,GAAKsJ,GAAgBtJ,CAAG,GAAKoN,GAAe,oBAAsBA,GAAe,mBAAmBpN,CAAG,GAAKoN,GAAe,aAAe,CAACA,GAAe,YAAYpN,CAAG,EAC/N,MAAO,GAET,QAASiE,EAAI,EAAGA,EAAIhE,EAAM,OAAQgE,IAAK,CACrC,IAAMiE,EAAIjI,EAAMgE,CAAC,EACjB,GAAIiE,EAAE,OAAS,GACb,GAAIA,EAAE,OAAS,MAAQA,EAAE,MAAO,CAC9B,GAAIA,EAAE,MAAM,QAAQ,WAAW,MAAM,EACnC,MAAO,GACF,GAAItC,GACT,yBACAwH,GACAlF,EAAE,GACJ,EACE,MAAO,EAEX,UAEFA,EAAE,OAAS,QAAUsD,GAActD,EAAE,IAAK,IAAI,GAAKtC,GACjD,yBACAwH,GACAlF,EAAE,GACJ,EACE,MAAO,EAEX,CACA,MAAO,EACT,CACA,SAAS0I,GAAYjN,EAAG,CACtB,OAAOA,EAAI,IAAMA,EAAI,EACvB,CACA,IAAMkN,GAAmB,QACzB,SAASJ,GAAmB9H,EAAO,CACjC,IAAMmI,EAAiB1D,GAAe,aAAe,WACjD2D,EAAoB,GACxB,QAAS9M,EAAI,EAAGA,EAAI0E,EAAM,OAAQ1E,IAAK,CACrC,IAAMb,EAAOuF,EAAM1E,CAAC,EACpB,GAAIb,EAAK,OAAS,EAChB,GAAKwK,GAcHxK,EAAK,QAAUA,EAAK,QAAQ,QAAQyN,GAAkB;AAAA,CAAI,UAbtDG,GAAgB5N,EAAK,OAAO,EAAG,CACjC,IAAM6N,EAAOtI,EAAM1E,EAAI,CAAC,GAAK0E,EAAM1E,EAAI,CAAC,EAAE,KACpCiN,EAAOvI,EAAM1E,EAAI,CAAC,GAAK0E,EAAM1E,EAAI,CAAC,EAAE,KACtC,CAACgN,GAAQ,CAACC,GAAQJ,IAAmBG,IAAS,IAAMC,IAAS,GAAKA,IAAS,IAAMD,IAAS,IAAMC,IAAS,GAAKA,IAAS,GAAKC,GAAe/N,EAAK,OAAO,KACzJ2N,EAAoB,GACpBpI,EAAM1E,CAAC,EAAI,MAEXb,EAAK,QAAU,GAEnB,MAAW0N,IACT1N,EAAK,QAAU+L,GAAS/L,EAAK,OAAO,EAM5C,CACA,OAAO2N,EAAoBpI,EAAM,OAAO,OAAO,EAAIA,CACrD,CACA,SAASqI,GAAgBjN,EAAK,CAC5B,QAASE,EAAI,EAAGA,EAAIF,EAAI,OAAQE,IAC9B,GAAI,CAACL,GAAaG,EAAI,WAAWE,CAAC,CAAC,EACjC,MAAO,GAGX,MAAO,EACT,CACA,SAASkN,GAAepN,EAAK,CAC3B,QAASE,EAAI,EAAGA,EAAIF,EAAI,OAAQE,IAAK,CACnC,IAAMN,EAAII,EAAI,WAAWE,CAAC,EAC1B,GAAIN,IAAM,IAAMA,IAAM,GACpB,MAAO,EAEX,CACA,MAAO,EACT,CACA,SAASwL,GAASpL,EAAK,CACrB,IAAIC,EAAM,GACNoN,EAAuB,GAC3B,QAASnN,EAAI,EAAGA,EAAIF,EAAI,OAAQE,IAC1BL,GAAaG,EAAI,WAAWE,CAAC,CAAC,EAC3BmN,IACHpN,GAAO,IACPoN,EAAuB,KAGzBpN,GAAOD,EAAIE,CAAC,EACZmN,EAAuB,IAG3B,OAAOpN,CACT,CACA,SAASsK,GAAQlL,EAAM,EACpBgB,GAAM,CAAC,GAAKiJ,IAAa,SAAS,KAAKjK,CAAI,CAC9C,CACA,SAASoL,GAAO7J,EAAOsJ,EAAK,CAC1B,MAAO,CACL,MAAOF,GAAU,OAAOpJ,CAAK,EAE7B,IAAKsJ,GAAO,KAAOA,EAAMF,GAAU,OAAOE,CAAG,EAE7C,OAAQA,GAAO,KAAOA,EAAME,GAASxJ,EAAOsJ,CAAG,CACjD,CACF,CACA,SAASoD,GAAS7Q,EAAK,CACrB,OAAOgO,GAAOhO,EAAI,MAAM,OAAQA,EAAI,IAAI,MAAM,CAChD,CACA,SAASyO,GAAUzO,EAAKyN,EAAK,CAC3BzN,EAAI,IAAMuN,GAAU,OAAOE,CAAG,EAC9BzN,EAAI,OAAS2N,GAAS3N,EAAI,MAAM,OAAQyN,CAAG,CAC7C,CACA,SAASe,GAAUsC,EAAK,CACtB,IAAMC,EAAO,CACX,KAAM,EACN,KAAMD,EAAI,QACV,QAAS9C,GACP8C,EAAI,IAAI,MAAM,OACdA,EAAI,IAAI,MAAM,OAASA,EAAI,QAAQ,MACrC,EACA,MAAO,OACP,IAAKA,EAAI,GACX,EACA,GAAIA,EAAI,IAAK,CACX,IAAM9Q,EAAM8Q,EAAI,IAAI,IAChB9Q,EAAI,IAAI,OAAS8Q,EAAI,IAAI,IAAI,SAC/B9Q,EAAI,MAAM,SACVA,EAAI,MAAM,SACVA,EAAI,IAAI,SACRA,EAAI,IAAI,UAEV+Q,EAAK,MAAQ,CACX,KAAM,EACN,QAASD,EAAI,IAAI,QACjB,IAAA9Q,CACF,CACF,CACA,OAAO+Q,CACT,CACA,SAAShD,GAAUpN,EAASC,EAAW,GAAOZ,EAAKa,EAAY,EAAGmQ,EAAY,EAAgB,CAC5F,IAAM3H,EAAM3I,GAAuBC,EAASC,EAAUZ,EAAKa,CAAS,EACpE,GAAI,CAACD,GAAYgM,GAAe,mBAAqBoE,IAAc,GAAgBrQ,EAAQ,KAAK,EAAG,CACjG,GAAIqI,GAAmBrI,CAAO,EAC5B,OAAA0I,EAAI,IAAM,KACHA,EAET,GAAI,CACF,IAAM4H,EAAUrE,GAAe,kBACzBsE,EAAU,CACd,QAASD,EAAU,CAAC,GAAGA,EAAS,YAAY,EAAI,CAAC,YAAY,CAC/D,EACID,IAAc,EAChB3H,EAAI,IAAMrN,GAAO,MAAM,IAAI2E,CAAO,IAAKuQ,CAAO,EAAE,QACvCF,IAAc,EACvB3H,EAAI,IAAMrN,GAAO,gBAAgB,IAAI2E,CAAO,QAASuQ,CAAO,EAE5D7H,EAAI,IAAMrN,GAAO,gBAAgB,IAAI2E,CAAO,IAAKuQ,CAAO,CAE5D,OAASC,EAAG,CACV9H,EAAI,IAAM,GACVmE,GAAU,GAAIxN,EAAI,MAAM,OAAQmR,EAAE,OAAO,CAC3C,CACF,CACA,OAAO9H,CACT,CACA,SAASmE,GAAU1H,EAAMjE,EAAOyD,EAAS,CACvCsH,GAAe,QACb/G,GAAoBC,EAAMkI,GAAOnM,EAAOA,CAAK,EAAG,OAAQyD,CAAO,CACjE,CACF,CACA,SAAS8L,IAAQ,CACf7D,GAAU,MAAM,EAChBR,GAAiB,KACjBC,GAAc,KACdC,GAAmB,GACnBC,GAAwB,GACxBC,GAAsB,GACtBvJ,GAAM,OAAS,CACjB,CACA,SAASyN,GAAUzM,EAAOsM,EAAS,CAIjC,GAHAE,GAAM,EACNtE,GAAelI,EACfgI,GAAiB9Q,GAAO,OAAO,CAAC,EAAG6Q,EAAoB,EACnDuE,EAAS,CACX,IAAI1Q,EACJ,IAAKA,KAAO0Q,EACNA,EAAQ1Q,CAAG,GAAK,OAClBoM,GAAepM,CAAG,EAAI0Q,EAAQ1Q,CAAG,EAGvC,CACA+M,GAAU,KAAOX,GAAe,YAAc,OAAS,EAAIA,GAAe,YAAc,MAAQ,EAAI,EACpGW,GAAU,MAAQX,GAAe,KAAO,GAAKA,GAAe,KAAO,EACnE,IAAM0E,EAAaJ,GAAWA,EAAQ,WAClCI,IACF/D,GAAU,cAAgBjK,GAAYgO,EAAW,CAAC,CAAC,EACnD/D,GAAU,eAAiBjK,GAAYgO,EAAW,CAAC,CAAC,GAEtD,IAAMlL,EAAOyG,GAAc1N,GAAW,CAAC,EAAGyF,CAAK,EAC/C,OAAA2I,GAAU,MAAMT,EAAY,EAC5B1G,EAAK,IAAM4H,GAAO,EAAGpJ,EAAM,MAAM,EACjCwB,EAAK,SAAW6J,GAAmB7J,EAAK,QAAQ,EAChDyG,GAAc,KACPzG,CACT,CAEA,SAASmL,GAAYnL,EAAM7G,EAAS,CAClCiS,GACEpL,EACA,OACA7G,EAGA,CAAC,CAACkS,GAAqBrL,CAAI,CAC7B,CACF,CACA,SAASqL,GAAqBrL,EAAM,CAClC,IAAMhH,EAAWgH,EAAK,SAAS,OAAQsL,GAAMA,EAAE,OAAS,CAAC,EACzD,OAAOtS,EAAS,SAAW,GAAKA,EAAS,CAAC,EAAE,OAAS,GAAK,CAACmM,GAAanM,EAAS,CAAC,CAAC,EAAIA,EAAS,CAAC,EAAI,IACvG,CACA,SAASoS,GAAK5O,EAAM8D,EAAQnH,EAASoS,EAAiB,GAAOC,EAAQ,GAAO,CAC1E,GAAM,CAAE,SAAAxS,CAAS,EAAIwD,EACfiP,EAAU,CAAC,EACjB,QAASpO,EAAI,EAAGA,EAAIrE,EAAS,OAAQqE,IAAK,CACxC,IAAM+E,EAAQpJ,EAASqE,CAAC,EACxB,GAAI+E,EAAM,OAAS,GAAKA,EAAM,UAAY,EAAG,CAC3C,IAAMsJ,EAAeH,EAAiB,EAAII,GAAgBvJ,EAAOjJ,CAAO,EACxE,GAAIuS,EAAe,GACjB,GAAIA,GAAgB,EAAG,CACrBtJ,EAAM,YAAY,UAAY,GAC9BqJ,EAAQ,KAAKrJ,CAAK,EAClB,QACF,MACK,CACL,IAAMwJ,EAAcxJ,EAAM,YAC1B,GAAIwJ,EAAY,OAAS,GAAI,CAC3B,IAAMC,EAAOD,EAAY,UACzB,IAAKC,IAAS,QAAUA,IAAS,KAAOA,IAAS,IAAMC,GAA8B1J,EAAOjJ,CAAO,GAAK,EAAG,CACzG,IAAME,EAAQ0S,GAAa3J,CAAK,EAC5B/I,IACFuS,EAAY,MAAQzS,EAAQ,MAAME,CAAK,EAE3C,CACIuS,EAAY,eACdA,EAAY,aAAezS,EAAQ,MAAMyS,EAAY,YAAY,EAErE,CACF,CACF,SAAWxJ,EAAM,OAAS,KACHmJ,EAAiB,EAAII,GAAgBvJ,EAAOjJ,CAAO,IACpD,EAAG,CACjBiJ,EAAM,YAAY,OAAS,IAAMA,EAAM,YAAY,UAAU,OAAS,GACxEA,EAAM,YAAY,UAAU,KAC1B,IACF,EAEFqJ,EAAQ,KAAKrJ,CAAK,EAClB,QACF,CAEF,GAAIA,EAAM,OAAS,EAAG,CACpB,IAAMzI,EAAcyI,EAAM,UAAY,EAClCzI,GACFR,EAAQ,OAAO,QAEjBiS,GAAKhJ,EAAO5F,EAAMrD,EAAS,GAAOqS,CAAK,EACnC7R,GACFR,EAAQ,OAAO,OAEnB,SAAWiJ,EAAM,OAAS,GACxBgJ,GAAKhJ,EAAO5F,EAAMrD,EAASiJ,EAAM,SAAS,SAAW,EAAG,EAAI,UACnDA,EAAM,OAAS,EACxB,QAAS4J,EAAK,EAAGA,EAAK5J,EAAM,SAAS,OAAQ4J,IAC3CZ,GACEhJ,EAAM,SAAS4J,CAAE,EACjBxP,EACArD,EACAiJ,EAAM,SAAS4J,CAAE,EAAE,SAAS,SAAW,EACvCR,CACF,CAGN,CACA,IAAIS,EAAgB,GACdC,EAAgB,CAAC,EACvB,GAAIT,EAAQ,SAAWzS,EAAS,QAAUwD,EAAK,OAAS,GACtD,GAAIA,EAAK,UAAY,GAAKA,EAAK,aAAeA,EAAK,YAAY,OAAS,IAAM9G,GAAO,QAAQ8G,EAAK,YAAY,QAAQ,EACpHA,EAAK,YAAY,SAAW2P,EAC1BpS,GAAsByC,EAAK,YAAY,QAAQ,CACjD,EACAyP,EAAgB,WACPzP,EAAK,UAAY,GAAKA,EAAK,aAAeA,EAAK,YAAY,OAAS,IAAMA,EAAK,YAAY,UAAY,CAAC9G,GAAO,QAAQ8G,EAAK,YAAY,QAAQ,GAAKA,EAAK,YAAY,SAAS,OAAS,GAAI,CACrM,IAAM4P,EAAOC,EAAY7P,EAAK,YAAa,SAAS,EAChD4P,IACFF,EAAc,KAAK/S,EAAQ,OAAO,MAAM,EACxCiT,EAAK,QAAUD,EACbpS,GAAsBqS,EAAK,OAAO,CACpC,EACAH,EAAgB,GAEpB,SAAWzP,EAAK,UAAY,GAAK8D,GAAUA,EAAO,OAAS,GAAKA,EAAO,UAAY,GAAKA,EAAO,aAAeA,EAAO,YAAY,OAAS,IAAMA,EAAO,YAAY,UAAY,CAAC5K,GAAO,QAAQ4K,EAAO,YAAY,QAAQ,GAAKA,EAAO,YAAY,SAAS,OAAS,GAAI,CACtQ,IAAMgM,EAAW9H,GAAQhI,EAAM,OAAQ,EAAI,EACrC4P,EAAOE,GAAYA,EAAS,KAAOD,EAAY/L,EAAO,YAAagM,EAAS,GAAG,EACjFF,IACFF,EAAc,KAAK/S,EAAQ,OAAO,MAAM,EACxCiT,EAAK,QAAUD,EACbpS,GAAsBqS,EAAK,OAAO,CACpC,EACAH,EAAgB,GAEpB,EAEF,GAAI,CAACA,EACH,QAAW7J,KAASqJ,EAClBS,EAAc,KAAK/S,EAAQ,OAAO,MAAM,EACxCiJ,EAAM,YAAcjJ,EAAQ,MAAMiJ,EAAM,WAAW,EAGnD8J,EAAc,QAAU1P,EAAK,OAAS,GAAKA,EAAK,UAAY,GAAKA,EAAK,aAAeA,EAAK,YAAY,OAAS,IAAMA,EAAK,YAAY,UAAY,CAAC9G,GAAO,QAAQ8G,EAAK,YAAY,QAAQ,GAAKA,EAAK,YAAY,SAAS,OAAS,IACrOA,EAAK,YAAY,SAAS,WAAW,KACnCrC,GACE,KACAG,GAAuB,KAAK,UAAU4R,CAAa,EAAG,EAAK,CAC7D,CACF,EAEF,SAASC,EAAmB9R,EAAO,CACjC,IAAM4I,EAAM9J,EAAQ,MAAMkB,CAAK,EAC/B,OAAImR,GAASrS,EAAQ,MACnB8J,EAAI,gBAAkB,IAEjBA,CACT,CACA,SAASoJ,EAAYE,EAAOpK,EAAM,CAChC,GAAIoK,EAAM,UAAY,CAAC7W,GAAO,QAAQ6W,EAAM,QAAQ,GAAKA,EAAM,SAAS,OAAS,GAAI,CACnF,IAAMH,EAAOG,EAAM,SAAS,WAAW,KACpCjL,GAAMA,EAAE,MAAQa,GAAQb,EAAE,IAAI,UAAYa,CAC7C,EACA,OAAOiK,GAAQA,EAAK,KACtB,CACF,CACIX,EAAQ,QAAUtS,EAAQ,gBAC5BA,EAAQ,eAAeH,EAAUG,EAASqD,CAAI,CAElD,CACA,SAASmP,GAAgBnP,EAAMrD,EAAS,CACtC,GAAM,CAAE,cAAAqT,CAAc,EAAIrT,EAC1B,OAAQqD,EAAK,KAAM,CACjB,IAAK,GACH,GAAIA,EAAK,UAAY,EACnB,MAAO,GAET,IAAMiQ,EAASD,EAAc,IAAIhQ,CAAI,EACrC,GAAIiQ,IAAW,OACb,OAAOA,EAET,IAAMb,EAAcpP,EAAK,YAIzB,GAHIoP,EAAY,OAAS,IAGrBA,EAAY,SAAWpP,EAAK,MAAQ,OAASA,EAAK,MAAQ,iBAAmBA,EAAK,MAAQ,OAC5F,MAAO,GAET,GAAIoP,EAAY,YAAc,OAAQ,CACpC,IAAIc,EAAc,EACZC,EAAqBb,GAA8BtP,EAAMrD,CAAO,EACtE,GAAIwT,IAAuB,EACzB,OAAAH,EAAc,IAAIhQ,EAAM,CAAC,EAClB,EAELmQ,EAAqBD,IACvBA,EAAcC,GAEhB,QAAStP,EAAI,EAAGA,EAAIb,EAAK,SAAS,OAAQa,IAAK,CAC7C,IAAMuP,EAAYjB,GAAgBnP,EAAK,SAASa,CAAC,EAAGlE,CAAO,EAC3D,GAAIyT,IAAc,EAChB,OAAAJ,EAAc,IAAIhQ,EAAM,CAAC,EAClB,EAELoQ,EAAYF,IACdA,EAAcE,EAElB,CACA,GAAIF,EAAc,EAChB,QAASrP,EAAI,EAAGA,EAAIb,EAAK,MAAM,OAAQa,IAAK,CAC1C,IAAMiE,EAAI9E,EAAK,MAAMa,CAAC,EACtB,GAAIiE,EAAE,OAAS,GAAKA,EAAE,OAAS,QAAUA,EAAE,IAAK,CAC9C,IAAMuL,EAAUlB,GAAgBrK,EAAE,IAAKnI,CAAO,EAC9C,GAAI0T,IAAY,EACd,OAAAL,EAAc,IAAIhQ,EAAM,CAAC,EAClB,EAELqQ,EAAUH,IACZA,EAAcG,EAElB,CACF,CAEF,GAAIjB,EAAY,QAAS,CACvB,QAASvO,EAAI,EAAGA,EAAIb,EAAK,MAAM,OAAQa,IAErC,GADUb,EAAK,MAAMa,CAAC,EAChB,OAAS,EACb,OAAAmP,EAAc,IAAIhQ,EAAM,CAAC,EAClB,EAGXrD,EAAQ,aAAa/C,EAAU,EAC/B+C,EAAQ,aACNU,GAAoBV,EAAQ,MAAOyS,EAAY,WAAW,CAC5D,EACAA,EAAY,QAAU,GACtBzS,EAAQ,OAAOW,GAAeX,EAAQ,MAAOyS,EAAY,WAAW,CAAC,CACvE,CACA,OAAAY,EAAc,IAAIhQ,EAAMkQ,CAAW,EAC5BA,CACT,KACE,QAAAF,EAAc,IAAIhQ,EAAM,CAAC,EAClB,EAEX,IAAK,GACL,IAAK,GACH,MAAO,GACT,IAAK,GACL,IAAK,IACL,IAAK,IACH,MAAO,GACT,IAAK,GACL,IAAK,IACH,OAAOmP,GAAgBnP,EAAK,QAASrD,CAAO,EAC9C,IAAK,GACH,OAAOqD,EAAK,UACd,IAAK,GACH,IAAIsQ,EAAa,EACjB,QAASzP,EAAI,EAAGA,EAAIb,EAAK,SAAS,OAAQa,IAAK,CAC7C,IAAM+E,EAAQ5F,EAAK,SAASa,CAAC,EAC7B,GAAI3H,GAAO,SAAS0M,CAAK,GAAK1M,GAAO,SAAS0M,CAAK,EACjD,SAEF,IAAMwK,EAAYjB,GAAgBvJ,EAAOjJ,CAAO,EAChD,GAAIyT,IAAc,EAChB,MAAO,GACEA,EAAYE,IACrBA,EAAaF,EAEjB,CACA,OAAOE,EACT,IAAK,IACH,MAAO,GACT,QACE,MAAO,EACX,CACF,CACA,IAAMC,GAAwC,IAAI,IAAI,CACpDzV,GACAC,GACAC,GACAC,EACF,CAAC,EACD,SAASuV,GAA4B3S,EAAOlB,EAAS,CACnD,GAAIkB,EAAM,OAAS,IAAM,CAAC3E,GAAO,SAAS2E,EAAM,MAAM,GAAK0S,GAAsB,IAAI1S,EAAM,MAAM,EAAG,CAClG,IAAMwK,EAAMxK,EAAM,UAAU,CAAC,EAC7B,GAAIwK,EAAI,OAAS,EACf,OAAO8G,GAAgB9G,EAAK1L,CAAO,EAC9B,GAAI0L,EAAI,OAAS,GACtB,OAAOmI,GAA4BnI,EAAK1L,CAAO,CAEnD,CACA,MAAO,EACT,CACA,SAAS2S,GAA8BtP,EAAMrD,EAAS,CACpD,IAAI2T,EAAa,EACXzT,EAAQ0S,GAAavP,CAAI,EAC/B,GAAInD,GAASA,EAAM,OAAS,GAAI,CAC9B,GAAM,CAAE,WAAAa,CAAW,EAAIb,EACvB,QAASgE,EAAI,EAAGA,EAAInD,EAAW,OAAQmD,IAAK,CAC1C,GAAM,CAAE,IAAAjD,EAAK,MAAAC,CAAM,EAAIH,EAAWmD,CAAC,EAC7B4P,EAAUtB,GAAgBvR,EAAKjB,CAAO,EAC5C,GAAI8T,IAAY,EACd,OAAOA,EAELA,EAAUH,IACZA,EAAaG,GAEf,IAAIC,EAQJ,GAPI7S,EAAM,OAAS,EACjB6S,EAAYvB,GAAgBtR,EAAOlB,CAAO,EACjCkB,EAAM,OAAS,GACxB6S,EAAYF,GAA4B3S,EAAOlB,CAAO,EAEtD+T,EAAY,EAEVA,IAAc,EAChB,OAAOA,EAELA,EAAYJ,IACdA,EAAaI,EAEjB,CACF,CACA,OAAOJ,CACT,CACA,SAASf,GAAavP,EAAM,CAC1B,IAAMoP,EAAcpP,EAAK,YACzB,GAAIoP,EAAY,OAAS,GACvB,OAAOA,EAAY,KAEvB,CAEA,SAASuB,GAAuBnN,EAAM,CACpC,SAAAoN,EAAW,GACX,kBAAAC,EAAoB,GACpB,YAAAC,EAAc,GACd,IAAAC,EAAM,GACN,cAAAC,EAAgB,GAChB,eAAAC,EAAiB,CAAC,EAClB,oBAAAC,EAAsB,CAAC,EACvB,eAAAC,EAAiB,KACjB,mBAAAC,EAAqBlY,GAAO,KAC5B,gBAAAmY,EAAkBnY,GAAO,KACzB,kBAAAoY,EAAoB,CAAC,EACrB,QAAAC,EAAU,KACV,QAAAC,EAAU,GACV,IAAA1R,EAAM,GACN,MAAAK,EAAQ,GACR,WAAAsR,EAAa,GACb,gBAAAC,EAAkBxY,GAAO,UACzB,OAAAyY,EAAS,GACT,KAAAC,EAAO,GACP,QAAAC,EAAU/O,GACV,OAAAgP,EAAS9O,GACT,aAAAX,CACF,EAAG,CACD,IAAM0P,EAAYnB,EAAS,QAAQ,QAAS,EAAE,EAAE,MAAM,iBAAiB,EACjEjU,EAAU,CAEd,SAAAiU,EACA,SAAUmB,GAAa7Y,GAAO,WAAWA,GAAO,SAAS6Y,EAAU,CAAC,CAAC,CAAC,EACtE,kBAAAlB,EACA,YAAAC,EACA,IAAAC,EACA,cAAAC,EACA,eAAAC,EACA,oBAAAC,EACA,eAAAC,EACA,mBAAAC,EACA,gBAAAC,EACA,kBAAAC,EACA,QAAAC,EACA,QAAAC,EACA,IAAA1R,EACA,MAAAK,EACA,WAAAsR,EACA,gBAAAC,EACA,OAAAC,EACA,KAAAC,EACA,QAAAC,EACA,OAAAC,EACA,aAAAzP,EAEA,KAAAmB,EACA,QAAyB,IAAI,IAC7B,WAA4B,IAAI,IAChC,WAA4B,IAAI,IAChC,OAAQ,CAAC,EACT,QAAS,CAAC,EACV,OAAQ,CAAC,EACT,cAA+B,IAAI,QACnC,MAAO,EACP,YAA6B,OAAO,OAAO,IAAI,EAC/C,OAAQ,CACN,KAAM,EACN,MAAO,EACP,KAAM,EACN,MAAO,CACT,EACA,OAAQ,KACR,YAAa,KACb,YAAaA,EACb,WAAY,EACZ,QAAS,GAET,OAAOmC,EAAM,CACX,IAAMqM,EAAQrV,EAAQ,QAAQ,IAAIgJ,CAAI,GAAK,EAC3C,OAAAhJ,EAAQ,QAAQ,IAAIgJ,EAAMqM,EAAQ,CAAC,EAC5BrM,CACT,EACA,aAAaA,EAAM,CACjB,IAAMqM,EAAQrV,EAAQ,QAAQ,IAAIgJ,CAAI,EACtC,GAAIqM,EAAO,CACT,IAAMC,EAAeD,EAAQ,EACxBC,EAGHtV,EAAQ,QAAQ,IAAIgJ,EAAMsM,CAAY,EAFtCtV,EAAQ,QAAQ,OAAOgJ,CAAI,CAI/B,CACF,EACA,aAAaA,EAAM,CACjB,MAAO,IAAI7J,GAAca,EAAQ,OAAOgJ,CAAI,CAAC,CAAC,EAChD,EACA,YAAY3F,EAAM,CAChBrD,EAAQ,OAAO,SAASA,EAAQ,UAAU,EAAIA,EAAQ,YAAcqD,CACtE,EACA,WAAWA,EAAM,CACf,IAAMkS,EAAOvV,EAAQ,OAAO,SACtBwV,EAAenS,EAAOkS,EAAK,QAAQlS,CAAI,EAAIrD,EAAQ,YAAcA,EAAQ,WAAa,GACxF,CAACqD,GAAQA,IAASrD,EAAQ,aAC5BA,EAAQ,YAAc,KACtBA,EAAQ,cAAc,GAElBA,EAAQ,WAAawV,IACvBxV,EAAQ,aACRA,EAAQ,cAAc,GAG1BA,EAAQ,OAAO,SAAS,OAAOwV,EAAc,CAAC,CAChD,EACA,cAAejZ,GAAO,KACtB,eAAeuN,EAAK,CAEZvN,GAAO,SAASuN,CAAG,EACrB2L,EAAM3L,CAAG,EACAA,EAAI,YACbA,EAAI,YAAY,QAAQ2L,CAAK,EACpB3L,EAAI,OAAS,GACtB2L,EAAM3L,EAAI,OAAO,CAGvB,EACA,kBAAkBA,EAAK,CAEfvN,GAAO,SAASuN,CAAG,EACrB4L,EAAS5L,CAAG,EACHA,EAAI,YACbA,EAAI,YAAY,QAAQ4L,CAAQ,EACvB5L,EAAI,OAAS,GACtB4L,EAAS5L,EAAI,OAAO,CAG1B,EACA,MAAMA,EAAK,CACLvN,GAAO,SAASuN,CAAG,IAAGA,EAAM3I,GAAuB2I,CAAG,GAC1D9J,EAAQ,OAAO,KAAK8J,CAAG,EACvB,IAAM6L,EAAaxU,GACjB,YAAYnB,EAAQ,OAAO,MAAM,GACjC,GACA8J,EAAI,IACJ,CACF,EACA,OAAA6L,EAAW,QAAU7L,EACd6L,CACT,EACA,MAAM7L,EAAK8L,EAAU,GAAOpT,EAAU,GAAO,CAC3C,IAAMqT,GAAWxT,GACfrC,EAAQ,OAAO,OACf8J,EACA8L,EACApT,CACF,EACA,OAAAxC,EAAQ,OAAO,KAAK6V,EAAQ,EACrBA,EACT,CACF,EAEE7V,EAAQ,QAA0B,IAAI,IAExC,SAASyV,EAAMhO,EAAI,CACjB,GAAM,CAAE,YAAAqO,CAAY,EAAI9V,EACpB8V,EAAYrO,CAAE,IAAM,SACtBqO,EAAYrO,CAAE,EAAI,GAEpBqO,EAAYrO,CAAE,GAChB,CACA,SAASiO,EAASjO,EAAI,CACpBzH,EAAQ,YAAYyH,CAAE,GACxB,CACA,OAAOzH,CACT,CACA,SAAS+V,GAAUlP,EAAM8K,EAAS,CAChC,IAAM3R,EAAUgU,GAAuBnN,EAAM8K,CAAO,EACpDqE,GAAanP,EAAM7G,CAAO,EACtB2R,EAAQ,aACVK,GAAYnL,EAAM7G,CAAO,EAEtB2R,EAAQ,KACXsE,GAAkBpP,EAAM7G,CAAO,EAEjC6G,EAAK,QAA0B,IAAI,IAAI,CAAC,GAAG7G,EAAQ,QAAQ,KAAK,CAAC,CAAC,EAClE6G,EAAK,WAAa,CAAC,GAAG7G,EAAQ,UAAU,EACxC6G,EAAK,WAAa,CAAC,GAAG7G,EAAQ,UAAU,EACxC6G,EAAK,QAAU7G,EAAQ,QACvB6G,EAAK,OAAS7G,EAAQ,OACtB6G,EAAK,MAAQ7G,EAAQ,MACrB6G,EAAK,OAAS7G,EAAQ,OACtB6G,EAAK,YAAc,GAEjBA,EAAK,QAAU,CAAC,GAAG7G,EAAQ,OAAO,CAEtC,CACA,SAASiW,GAAkBpP,EAAM7G,EAAS,CACxC,GAAM,CAAE,OAAAsD,CAAO,EAAItD,EACb,CAAE,SAAAH,CAAS,EAAIgH,EACrB,GAAIhH,EAAS,SAAW,EAAG,CACzB,IAAMqW,EAAyBhE,GAAqBrL,CAAI,EACxD,GAAIqP,GAA0BA,EAAuB,YAAa,CAChE,IAAMzD,EAAcyD,EAAuB,YACvCzD,EAAY,OAAS,IACvBrP,GAAeqP,EAAazS,CAAO,EAErC6G,EAAK,YAAc4L,CACrB,MACE5L,EAAK,YAAchH,EAAS,CAAC,CAEjC,SAAWA,EAAS,OAAS,EAAG,CAC9B,IAAIM,EAAY,GAChB0G,EAAK,YAAc9G,GACjBC,EACAsD,EAAO1G,EAAQ,EACf,OACAiK,EAAK,SACL1G,EACA,OACA,OACA,GACA,OACA,EACF,CACF,CACF,CACA,SAASgW,GAAiBhP,EAAQnH,EAAS,CACzC,IAAIkE,EAAI,EACFkS,EAAc,IAAM,CACxBlS,GACF,EACA,KAAOA,EAAIiD,EAAO,SAAS,OAAQjD,IAAK,CACtC,IAAM+E,EAAQ9B,EAAO,SAASjD,CAAC,EAC3B3H,GAAO,SAAS0M,CAAK,IACzBjJ,EAAQ,YAAcA,EAAQ,OAC9BA,EAAQ,OAASmH,EACjBnH,EAAQ,WAAakE,EACrBlE,EAAQ,cAAgBoW,EACxBJ,GAAa/M,EAAOjJ,CAAO,EAC7B,CACF,CACA,SAASgW,GAAa3S,EAAMrD,EAAS,CACnCA,EAAQ,YAAcqD,EACtB,GAAM,CAAE,eAAAiR,CAAe,EAAItU,EACrBqW,EAAU,CAAC,EACjB,QAASxD,EAAK,EAAGA,EAAKyB,EAAe,OAAQzB,IAAM,CACjD,IAAMyD,EAAShC,EAAezB,CAAE,EAAExP,EAAMrD,CAAO,EAQ/C,GAPIsW,IACE/Z,GAAO,QAAQ+Z,CAAM,EACvBD,EAAQ,KAAK,GAAGC,CAAM,EAEtBD,EAAQ,KAAKC,CAAM,GAGlBtW,EAAQ,YAGXqD,EAAOrD,EAAQ,gBAFf,OAIJ,CACA,OAAQqD,EAAK,KAAM,CACjB,IAAK,GACErD,EAAQ,KACXA,EAAQ,OAAO1C,EAAc,EAE/B,MACF,IAAK,GACE0C,EAAQ,KACXA,EAAQ,OAAO/B,EAAiB,EAElC,MAEF,IAAK,GACH,QAAS4U,EAAK,EAAGA,EAAKxP,EAAK,SAAS,OAAQwP,IAC1CmD,GAAa3S,EAAK,SAASwP,CAAE,EAAG7S,CAAO,EAEzC,MACF,IAAK,IACL,IAAK,IACL,IAAK,GACL,IAAK,GACHmW,GAAiB9S,EAAMrD,CAAO,EAC9B,KACJ,CACAA,EAAQ,YAAcqD,EACtB,IAAI,EAAIgT,EAAQ,OAChB,KAAO,KACLA,EAAQ,CAAC,EAAE,CAEf,CACA,SAASE,GAAmCvN,EAAMwN,EAAI,CACpD,IAAMC,EAAUla,GAAO,SAASyM,CAAI,EAAK0N,GAAMA,IAAM1N,EAAQ0N,GAAM1N,EAAK,KAAK0N,CAAC,EAC9E,MAAO,CAACrT,EAAMrD,IAAY,CACxB,GAAIqD,EAAK,OAAS,EAAG,CACnB,GAAM,CAAE,MAAAnD,CAAM,EAAImD,EAClB,GAAIA,EAAK,UAAY,GAAKnD,EAAM,KAAK4L,EAAO,EAC1C,OAEF,IAAMuK,EAAU,CAAC,EACjB,QAASnS,EAAI,EAAGA,EAAIhE,EAAM,OAAQgE,IAAK,CACrC,IAAM4E,EAAO5I,EAAMgE,CAAC,EACpB,GAAI4E,EAAK,OAAS,GAAK2N,EAAQ3N,EAAK,IAAI,EAAG,CACzC5I,EAAM,OAAOgE,EAAG,CAAC,EACjBA,IACA,IAAMoS,EAASE,EAAGnT,EAAMyF,EAAM9I,CAAO,EACjCsW,GAAQD,EAAQ,KAAKC,CAAM,CACjC,CACF,CACA,OAAOD,CACT,CACF,CACF,CAEA,IAAMM,GAAkB,gBAClBC,GAAetX,GAAM,GAAGH,GAAcG,CAAC,CAAC,MAAMH,GAAcG,CAAC,CAAC,GACpE,SAASuX,GAAqBC,EAAK,CACjC,KAAAlR,EAAO,WACP,kBAAAsO,EAAoBtO,IAAS,SAC7B,UAAAmR,EAAY,GACZ,SAAA9C,EAAW,oBACX,QAAAW,EAAU,KACV,gBAAAoC,EAAkB,GAClB,kBAAAC,EAAoB,MACpB,kBAAAC,EAAoB,MACpB,qBAAAC,EAAuB,sBACvB,IAAAhU,EAAM,GACN,KAAA8R,EAAO,GACP,MAAAzR,EAAQ,EACV,EAAG,CACD,IAAMxD,EAAU,CACd,KAAA4F,EACA,kBAAAsO,EACA,UAAA6C,EACA,SAAA9C,EACA,QAAAW,EACA,gBAAAoC,EACA,kBAAAC,EACA,kBAAAC,EACA,qBAAAC,EACA,IAAAhU,EACA,KAAA8R,EACA,MAAAzR,EACA,OAAQsT,EAAI,OACZ,KAAM,GACN,OAAQ,EACR,KAAM,EACN,OAAQ,EACR,YAAa,EACb,KAAM,GACN,IAAK,OACL,OAAO7V,EAAK,CACV,MAAO,IAAI9B,GAAc8B,CAAG,CAAC,EAC/B,EACA,KAAKsF,EAAM5B,EAAe,GAAetB,EAAM,CAE7C,GADArD,EAAQ,MAAQuG,EACZvG,EAAQ,IAAK,CACf,GAAIqD,EAAM,CACR,IAAI2F,EACJ,GAAI3F,EAAK,OAAS,GAAK,CAACA,EAAK,SAAU,CACrC,IAAMjC,EAAUiC,EAAK,QAAQ,QAAQ,UAAW,EAAE,EAC9CjC,IAAYiC,EAAK,SAAWoG,GAAmBrI,CAAO,IACxD4H,EAAO5H,EAEX,CACIiC,EAAK,IAAI,QACX+T,EAAW/T,EAAK,IAAI,MAAO2F,CAAI,CAEnC,CACIrE,IAAiB,GACnBqG,GAA4BhL,EAASuG,CAAI,GAEzCvG,EAAQ,QAAUuG,EAAK,OACnB5B,IAAiB,GACnB3E,EAAQ,QAAUuG,EAAK,QAEnB5B,IAAiB,KACnBA,EAAe4B,EAAK,OAAS,GAE/BvG,EAAQ,OACRA,EAAQ,OAASuG,EAAK,OAAS5B,IAG/BtB,GAAQA,EAAK,MAAQ1D,IAAW0D,EAAK,IAAI,QAC3C+T,EAAW/T,EAAK,IAAI,GAAG,CAE3B,CACF,EACA,QAAS,CACPtB,EAAQ,EAAE/B,EAAQ,WAAW,CAC/B,EACA,SAASqX,EAAiB,GAAO,CAC3BA,EACF,EAAErX,EAAQ,YAEV+B,EAAQ,EAAE/B,EAAQ,WAAW,CAEjC,EACA,SAAU,CACR+B,EAAQ/B,EAAQ,WAAW,CAC7B,CACF,EACA,SAAS+B,EAAQ2U,EAAG,CAClB1W,EAAQ,KAAK;AAAA,EAAO,KAAK,OAAO0W,CAAC,EAAG,CAAa,CACnD,CACA,SAASU,EAAW3W,EAAKuI,EAAO,KAAM,CACpC,GAAM,CAAE,OAAAsO,EAAQ,UAAAC,CAAU,EAAIvX,EAAQ,IAClCgJ,IAAS,MAAQ,CAACsO,EAAO,IAAItO,CAAI,GAAGsO,EAAO,IAAItO,CAAI,EACvDuO,EAAU,IAAI,CACZ,aAAc9W,EAAI,KAClB,eAAgBA,EAAI,OAAS,EAE7B,cAAeT,EAAQ,KACvB,gBAAiBA,EAAQ,OAAS,EAClC,OAAQiU,EACR,KAAAjL,CACF,CAAC,CACH,CACA,OAAI+N,IACF/W,EAAQ,IAAM,IAAIrD,GAAY,mBAC9BqD,EAAQ,IAAI,iBAAiBiU,EAAUjU,EAAQ,MAAM,EACrDA,EAAQ,IAAI,SAAS,IAAIiU,CAAQ,GAE5BjU,CACT,CACA,SAASwX,GAASV,EAAKnF,EAAU,CAAC,EAAG,CACnC,IAAM3R,EAAU6W,GAAqBC,EAAKnF,CAAO,EAC7CA,EAAQ,kBAAkBA,EAAQ,iBAAiB3R,CAAO,EAC9D,GAAM,CACJ,KAAA4F,EACA,KAAA6R,EACA,kBAAAvD,EACA,OAAAwD,EACA,SAAAC,EACA,QAAA5V,EACA,QAAA6S,EACA,IAAAzR,CACF,EAAInD,EACEX,EAAU,MAAM,KAAKyX,EAAI,OAAO,EAChCc,EAAavY,EAAQ,OAAS,EAC9BwY,EAAe,CAAC3D,GAAqBtO,IAAS,SAC9CkS,EAAalD,GAAW,MAAQhP,IAAS,SACzCmS,EAAiB,CAAC,CAACpG,EAAQ,OAC3BqG,EAAkBD,EAAiBlB,GAAqBC,EAAKnF,CAAO,EAAI3R,EAC1E4F,IAAS,SACXqS,GAAkBnB,EAAKkB,EAAiBF,EAAYC,CAAc,EAElEG,GAAoBpB,EAAKkB,CAAe,EAE1C,IAAMG,EAAehV,EAAM,YAAc,SACnCxB,EAAOwB,EAAM,CAAC,OAAQ,QAAS,UAAW,QAAQ,EAAI,CAAC,OAAQ,QAAQ,EACzEwO,EAAQ,iBAAmB,CAACA,EAAQ,QACtChQ,EAAK,KAAK,SAAU,SAAU,QAAS,UAAU,EAEnD,IAAMyW,EAAYzG,EAAQ,KAAOhQ,EAAK,IAAK+J,GAAQ,GAAGA,CAAG,OAAO,EAAE,KAAK,GAAG,EAAI/J,EAAK,KAAK,IAAI,EAoC5F,GAlCE8V,EADEM,EACG,IAAIK,CAAS,SAEb,YAAYD,CAAY,IAAIC,CAAS,KAFhB,EAI5BV,EAAO,EACHG,IACFJ,EAAK,eAAe,EACpBC,EAAO,EACHE,IACFH,EACE,WAAWpY,EAAQ,IAAIuX,EAAW,EAAE,KAAK,IAAI,CAAC;AAAA,EAE9C,EACF,EACA7U,EAAQ,IAGR+U,EAAI,WAAW,SACjBuB,GAAUvB,EAAI,WAAY,YAAa9W,CAAO,GAC1C8W,EAAI,WAAW,QAAUA,EAAI,MAAQ,IACvC/U,EAAQ,GAGR+U,EAAI,WAAW,SACjBuB,GAAUvB,EAAI,WAAY,YAAa9W,CAAO,EAC1C8W,EAAI,MAAQ,GACd/U,EAAQ,GAGR+U,EAAI,SAAWA,EAAI,QAAQ,SAC7B/U,EAAQ,EACRsW,GAAUvB,EAAI,QAAS,SAAU9W,CAAO,EACxC+B,EAAQ,GAEN+U,EAAI,MAAQ,EAAG,CACjBW,EAAK,MAAM,EACX,QAASvT,EAAI,EAAGA,EAAI4S,EAAI,MAAO5S,IAC7BuT,EAAK,GAAGvT,EAAI,EAAI,KAAO,EAAE,QAAQA,CAAC,EAAE,CAExC,CACA,OAAI4S,EAAI,WAAW,QAAUA,EAAI,WAAW,QAAUA,EAAI,SACxDW,EAAK;AAAA,EACN,CAAa,EACZ1V,EAAQ,GAELoB,GACHsU,EAAK,SAAS,EAEZX,EAAI,YACNwB,GAAQxB,EAAI,YAAa9W,CAAO,EAEhCyX,EAAK,MAAM,EAETI,IACFF,EAAS,EACTF,EAAK,GAAG,GAEVE,EAAS,EACTF,EAAK,GAAG,EACD,CACL,IAAAX,EACA,KAAM9W,EAAQ,KACd,SAAU+X,EAAiBC,EAAgB,KAAO,GAClD,IAAKhY,EAAQ,IAAMA,EAAQ,IAAI,OAAO,EAAI,MAC5C,CACF,CACA,SAASkY,GAAoBpB,EAAK9W,EAAS,CACzC,GAAM,CACJ,IAAAmD,EACA,kBAAA+Q,EACA,KAAAuD,EACA,QAAA1V,EACA,kBAAAmV,EACA,kBAAAD,EACA,qBAAAE,CACF,EAAInX,EACEuY,EAAapV,EAAM,WAAW,KAAK,UAAU+T,CAAiB,CAAC,IAAMD,EACrE5X,EAAU,MAAM,KAAKyX,EAAI,OAAO,EACtC,GAAIzX,EAAQ,OAAS,GACnB,GAAI6U,EACFuD,EACE,WAAWpY,EAAQ,IAAIuX,EAAW,EAAE,KAAK,IAAI,CAAC,QAAQ2B,CAAU;AAAA,EAEhE,EACF,UAEAd,EAAK,gBAAgBc,CAAU;AAAA,EAClC,EAAY,EACLzB,EAAI,OAAO,OAAQ,CACrB,IAAM0B,EAAgB,CACpBpb,GACAC,GACAC,GACAC,GACAC,EACF,EAAE,OAAQ8F,GAAWjE,EAAQ,SAASiE,CAAM,CAAC,EAAE,IAAIsT,EAAW,EAAE,KAAK,IAAI,EACzEa,EAAK,WAAWe,CAAa;AAAA,EAClC,EAAY,CACT,EAGA1B,EAAI,YAAcA,EAAI,WAAW,QACnCW,EACE,WAAWX,EAAI,WAAW,IAAIF,EAAW,EAAE,KAAK,IAAI,CAAC,iBAAiBO,CAAoB;AAAA,EAE1F,EACF,EAEFsB,GAAU3B,EAAI,OAAQ9W,CAAO,EAC7B+B,EAAQ,EACR0V,EAAK,SAAS,CAChB,CACA,SAASQ,GAAkBnB,EAAK9W,EAAS8X,EAAY9C,EAAQ,CAC3D,GAAM,CACJ,KAAAyC,EACA,QAAA1V,EACA,gBAAAiV,EACA,kBAAAE,EACA,qBAAAC,CACF,EAAInX,EACJ,GAAI8W,EAAI,QAAQ,KAAM,CACpB,IAAMzX,EAAU,MAAM,KAAKyX,EAAI,OAAO,EAClCE,GACFS,EACE,YAAYpY,EAAQ,IAAKC,GAAMH,GAAcG,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,KAAK,UAAU4X,CAAiB,CAAC;AAAA,EAEvG,EACF,EACAO,EACE;AAAA;AAAA,QAEApY,EAAQ,IAAKC,GAAM,IAAIH,GAAcG,CAAC,CAAC,MAAMH,GAAcG,CAAC,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC;AAAA,EAE3E,EACF,GAEAmY,EACE,YAAYpY,EAAQ,IAAKC,GAAM,GAAGH,GAAcG,CAAC,CAAC,QAAQH,GAAcG,CAAC,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,WAAW,KAAK,UAAU4X,CAAiB,CAAC;AAAA,EAEpI,EACF,CAEJ,CACIJ,EAAI,YAAcA,EAAI,WAAW,QACnCW,EACE,YAAYX,EAAI,WAAW,IAAKxX,GAAM,GAAGH,GAAcG,CAAC,CAAC,QAAQH,GAAcG,CAAC,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,YAAY6X,CAAoB;AAAA,EAE/H,EACF,EAEEL,EAAI,QAAQ,SACd4B,GAAW5B,EAAI,QAAS9W,CAAO,EAC/B+B,EAAQ,GAEV0W,GAAU3B,EAAI,OAAQ9W,CAAO,EAC7B+B,EAAQ,EACHiT,GACHyC,EAAK,SAAS,CAElB,CACA,SAASY,GAAUM,EAAQ/L,EAAM,CAAE,OAAAtJ,EAAQ,KAAAmU,EAAM,QAAA1V,EAAS,KAAAkT,CAAK,EAAG,CAChE,IAAM2D,EAAWtV,EACfsJ,IAAS,SAAWhP,GAAiBgP,IAAS,YAAcnP,GAAoBE,EAClF,EACA,QAASuG,EAAI,EAAGA,EAAIyU,EAAO,OAAQzU,IAAK,CACtC,IAAIuD,EAAKkR,EAAOzU,CAAC,EACX2U,EAAqBpR,EAAG,SAAS,QAAQ,EAC3CoR,IACFpR,EAAKA,EAAG,MAAM,EAAG,EAAE,GAErBgQ,EACE,SAAS9K,GAAelF,EAAImF,CAAI,CAAC,MAAMgM,CAAQ,IAAI,KAAK,UAAUnR,CAAE,CAAC,GAAGoR,EAAqB,SAAW,EAAE,IAAI5D,EAAO,IAAM,EAAE,EAC/H,EACI/Q,EAAIyU,EAAO,OAAS,GACtB5W,EAAQ,CAEZ,CACF,CACA,SAAS0W,GAAUK,EAAQ9Y,EAAS,CAClC,GAAI,CAAC8Y,EAAO,OACV,OAEF9Y,EAAQ,KAAO,GACf,GAAM,CAAE,KAAAyX,EAAM,QAAA1V,CAAQ,EAAI/B,EAC1B+B,EAAQ,EACR,QAAS,EAAI,EAAG,EAAI+W,EAAO,OAAQ,IAAK,CACtC,IAAMhP,EAAMgP,EAAO,CAAC,EAChBhP,IACF2N,EAAK,kBAAkB,EAAI,CAAC,KAAK,EACjCa,GAAQxO,EAAK9J,CAAO,EACpB+B,EAAQ,EAEZ,CACA/B,EAAQ,KAAO,EACjB,CACA,SAAS0Y,GAAWK,EAAgB/Y,EAAS,CACtC+Y,EAAe,QAGpBA,EAAe,QAASC,GAAY,CAClChZ,EAAQ,KAAK,SAAS,EACtBsY,GAAQU,EAAQ,IAAKhZ,CAAO,EAC5BA,EAAQ,KAAK,UAAUgZ,EAAQ,IAAI,GAAG,EACtChZ,EAAQ,QAAQ,CAClB,CAAC,CACH,CACA,SAASiZ,GAAOvC,EAAG,CACjB,OAAOna,GAAO,SAASma,CAAC,GAAKA,EAAE,OAAS,GAAKA,EAAE,OAAS,GAAKA,EAAE,OAAS,GAAKA,EAAE,OAAS,CAC1F,CACA,SAASwC,GAAmBtQ,EAAO5I,EAAS,CAC1C,IAAMmZ,EAAavQ,EAAM,OAAS,GAAKA,EAAM,KAAM8N,GAAMna,GAAO,QAAQma,CAAC,GAAK,CAACuC,GAAOvC,CAAC,CAAC,EACxF1W,EAAQ,KAAK,GAAG,EAChBmZ,GAAcnZ,EAAQ,OAAO,EAC7BoZ,GAAYxQ,EAAO5I,EAASmZ,CAAU,EACtCA,GAAcnZ,EAAQ,SAAS,EAC/BA,EAAQ,KAAK,GAAG,CAClB,CACA,SAASoZ,GAAYxQ,EAAO5I,EAASmZ,EAAa,GAAOE,EAAQ,GAAM,CACrE,GAAM,CAAE,KAAA5B,EAAM,QAAA1V,CAAQ,EAAI/B,EAC1B,QAASkE,EAAI,EAAGA,EAAI0E,EAAM,OAAQ1E,IAAK,CACrC,IAAMb,EAAOuF,EAAM1E,CAAC,EAChB3H,GAAO,SAAS8G,CAAI,EACtBoU,EAAKpU,EAAM,EAAgB,EAClB9G,GAAO,QAAQ8G,CAAI,EAC5B6V,GAAmB7V,EAAMrD,CAAO,EAEhCsY,GAAQjV,EAAMrD,CAAO,EAEnBkE,EAAI0E,EAAM,OAAS,IACjBuQ,GACFE,GAAS5B,EAAK,GAAG,EACjB1V,EAAQ,GAERsX,GAAS5B,EAAK,IAAI,EAGxB,CACF,CACA,SAASa,GAAQjV,EAAMrD,EAAS,CAC9B,GAAIzD,GAAO,SAAS8G,CAAI,EAAG,CACzBrD,EAAQ,KAAKqD,EAAM,EAAgB,EACnC,MACF,CACA,GAAI9G,GAAO,SAAS8G,CAAI,EAAG,CACzBrD,EAAQ,KAAKA,EAAQ,OAAOqD,CAAI,CAAC,EACjC,MACF,CACA,OAAQA,EAAK,KAAM,CACjB,IAAK,GACL,IAAK,GACL,IAAK,IACHiV,GAAQjV,EAAK,YAAarD,CAAO,EACjC,MACF,IAAK,GACHsZ,GAAQjW,EAAMrD,CAAO,EACrB,MACF,IAAK,GACHuZ,GAAclW,EAAMrD,CAAO,EAC3B,MACF,IAAK,GACHwZ,GAAiBnW,EAAMrD,CAAO,EAC9B,MACF,IAAK,IACHsY,GAAQjV,EAAK,YAAarD,CAAO,EACjC,MACF,IAAK,GACHyZ,GAAsBpW,EAAMrD,CAAO,EACnC,MACF,IAAK,GACH0Z,GAAWrW,EAAMrD,CAAO,EACxB,MACF,IAAK,IACH2Z,GAAatW,EAAMrD,CAAO,EAC1B,MACF,IAAK,IACH4Z,GAAkBvW,EAAMrD,CAAO,EAC/B,MACF,IAAK,IACH6Z,GAAoBxW,EAAMrD,CAAO,EACjC,MACF,IAAK,IACH8Z,GAAmBzW,EAAMrD,CAAO,EAChC,MACF,IAAK,IACH+Z,GAAsB1W,EAAMrD,CAAO,EACnC,MACF,IAAK,IACHga,GAAyB3W,EAAMrD,CAAO,EACtC,MACF,IAAK,IACHia,GAAmB5W,EAAMrD,CAAO,EAChC,MACF,IAAK,IACHoZ,GAAY/V,EAAK,KAAMrD,EAAS,GAAM,EAAK,EAC3C,MAEF,IAAK,IACHka,GAAmB7W,EAAMrD,CAAO,EAChC,MACF,IAAK,IACHma,GAAe9W,EAAMrD,CAAO,EAC5B,MACF,IAAK,IACHoa,GAAwB/W,EAAMrD,CAAO,EACrC,MACF,IAAK,IACHqa,GAAsBhX,EAAMrD,CAAO,EACnC,MACF,IAAK,IACHsa,GAAmBjX,EAAMrD,CAAO,EAChC,KACJ,CACF,CACA,SAASsZ,GAAQjW,EAAMrD,EAAS,CAC9BA,EAAQ,KAAK,KAAK,UAAUqD,EAAK,OAAO,EAAG,GAAkBA,CAAI,CACnE,CACA,SAASkW,GAAclW,EAAMrD,EAAS,CACpC,GAAM,CAAE,QAAAoB,EAAS,SAAAC,CAAS,EAAIgC,EAC9BrD,EAAQ,KACNqB,EAAW,KAAK,UAAUD,CAAO,EAAIA,EACrC,GACAiC,CACF,CACF,CACA,SAASmW,GAAiBnW,EAAMrD,EAAS,CACvC,GAAM,CAAE,KAAAyX,EAAM,OAAAnU,EAAQ,KAAAiX,CAAK,EAAIva,EAC3Bua,GAAM9C,EAAKd,EAAe,EAC9Bc,EAAK,GAAGnU,EAAOrF,EAAiB,CAAC,GAAG,EACpCqa,GAAQjV,EAAK,QAASrD,CAAO,EAC7ByX,EAAK,GAAG,CACV,CACA,SAASgC,GAAsBpW,EAAMrD,EAAS,CAC5C,QAASkE,EAAI,EAAGA,EAAIb,EAAK,SAAS,OAAQa,IAAK,CAC7C,IAAM+E,EAAQ5F,EAAK,SAASa,CAAC,EACzB3H,GAAO,SAAS0M,CAAK,EACvBjJ,EAAQ,KAAKiJ,EAAO,EAAgB,EAEpCqP,GAAQrP,EAAOjJ,CAAO,CAE1B,CACF,CACA,SAASwa,GAA2BnX,EAAMrD,EAAS,CACjD,GAAM,CAAE,KAAAyX,CAAK,EAAIzX,EACjB,GAAIqD,EAAK,OAAS,EAChBoU,EAAK,GAAG,EACRgC,GAAsBpW,EAAMrD,CAAO,EACnCyX,EAAK,GAAG,UACCpU,EAAK,SAAU,CACxB,IAAMoX,EAAOhR,GAAmBpG,EAAK,OAAO,EAAIA,EAAK,QAAU,KAAK,UAAUA,EAAK,OAAO,EAC1FoU,EAAKgD,EAAM,GAAepX,CAAI,CAChC,MACEoU,EAAK,IAAIpU,EAAK,OAAO,IAAK,GAAkBA,CAAI,CAEpD,CACA,SAASqW,GAAWrW,EAAMrD,EAAS,CACjC,GAAM,CAAE,KAAAyX,EAAM,OAAAnU,EAAQ,KAAAiX,CAAK,EAAIva,EAC3Bua,GACF9C,EAAKd,EAAe,EAEtBc,EACE,GAAGnU,EAAOhG,EAAc,CAAC,IAAI,KAAK,UAAU+F,EAAK,OAAO,CAAC,IACzD,GACAA,CACF,CACF,CACA,SAASsW,GAAatW,EAAMrD,EAAS,CACnC,GAAM,CAAE,KAAAyX,EAAM,OAAAnU,EAAQ,KAAAiX,CAAK,EAAIva,EACzB,CACJ,IAAAC,EACA,MAAAC,EACA,SAAAL,EACA,UAAAM,EACA,aAAAC,EACA,WAAAC,EACA,QAAAC,EACA,gBAAAC,EACA,YAAAC,CACF,EAAI6C,EACAqX,EACAva,IAEAua,EAAkB,OAAOva,CAAS,GAGlCE,GACFoX,EAAKnU,EAAOzF,EAAe,EAAI,GAAG,EAEhCyC,GACFmX,EAAK,IAAInU,EAAOrG,EAAU,CAAC,IAAIsD,EAAkB,OAAS,EAAE,KAAK,EAE/Dga,GACF9C,EAAKd,EAAe,EAEtB,IAAMgE,EAAara,EAAUI,GAAoBV,EAAQ,MAAOQ,CAAW,EAAIG,GAAeX,EAAQ,MAAOQ,CAAW,EACxHiX,EAAKnU,EAAOqX,CAAU,EAAI,IAAK,GAAetX,CAAI,EAClD+V,GACEwB,GAAgB,CAAC3a,EAAKC,EAAOL,EAAU6a,EAAiBta,CAAY,CAAC,EACrEJ,CACF,EACAyX,EAAK,GAAG,EACJnX,GACFmX,EAAK,GAAG,EAENpX,IACFoX,EAAK,IAAI,EACTa,GAAQjY,EAAYL,CAAO,EAC3ByX,EAAK,GAAG,EAEZ,CACA,SAASmD,GAAgBjZ,EAAM,CAC7B,IAAIuC,EAAIvC,EAAK,OACb,KAAOuC,KACDvC,EAAKuC,CAAC,GAAK,MAAf,CAEF,OAAOvC,EAAK,MAAM,EAAGuC,EAAI,CAAC,EAAE,IAAKwH,GAAQA,GAAO,MAAM,CACxD,CACA,SAASkO,GAAkBvW,EAAMrD,EAAS,CACxC,GAAM,CAAE,KAAAyX,EAAM,OAAAnU,EAAQ,KAAAiX,CAAK,EAAIva,EACzB0B,EAASnF,GAAO,SAAS8G,EAAK,MAAM,EAAIA,EAAK,OAASC,EAAOD,EAAK,MAAM,EAC1EkX,GACF9C,EAAKd,EAAe,EAEtBc,EAAK/V,EAAS,IAAK,GAAe2B,CAAI,EACtC+V,GAAY/V,EAAK,UAAWrD,CAAO,EACnCyX,EAAK,GAAG,CACV,CACA,SAASoC,GAAoBxW,EAAMrD,EAAS,CAC1C,GAAM,CAAE,KAAAyX,EAAM,OAAAC,EAAQ,SAAAC,EAAU,QAAA5V,CAAQ,EAAI/B,EACtC,CAAE,WAAAe,CAAW,EAAIsC,EACvB,GAAI,CAACtC,EAAW,OAAQ,CACtB0W,EAAK,KAAM,GAAepU,CAAI,EAC9B,MACF,CACA,IAAM8V,EAAapY,EAAW,OAAS,GAAKA,EAAW,KAAMoH,GAAMA,EAAE,MAAM,OAAS,CAAC,EACrFsP,EAAK0B,EAAa,IAAM,IAAI,EAC5BA,GAAczB,EAAO,EACrB,QAASxT,EAAI,EAAGA,EAAInD,EAAW,OAAQmD,IAAK,CAC1C,GAAM,CAAE,IAAAjD,EAAK,MAAAC,CAAM,EAAIH,EAAWmD,CAAC,EACnCsW,GAA2BvZ,EAAKjB,CAAO,EACvCyX,EAAK,IAAI,EACTa,GAAQpX,EAAOlB,CAAO,EAClBkE,EAAInD,EAAW,OAAS,IAC1B0W,EAAK,GAAG,EACR1V,EAAQ,EAEZ,CACAoX,GAAcxB,EAAS,EACvBF,EAAK0B,EAAa,IAAM,IAAI,CAC9B,CACA,SAASW,GAAmBzW,EAAMrD,EAAS,CACzCkZ,GAAmB7V,EAAK,SAAUrD,CAAO,CAC3C,CACA,SAAS+Z,GAAsB1W,EAAMrD,EAAS,CAC5C,GAAM,CAAE,KAAAyX,EAAM,OAAAC,EAAQ,SAAAC,CAAS,EAAI3X,EAC7B,CAAE,OAAA6B,EAAQ,QAAAC,EAAS,KAAAY,EAAM,QAAAX,EAAS,OAAAC,CAAO,EAAIqB,EAC/CrB,GACFyV,EAAK,IAAItY,GAAcL,EAAQ,CAAC,GAAG,EAErC2Y,EAAK,IAAK,GAAepU,CAAI,EACzB9G,GAAO,QAAQsF,CAAM,EACvBuX,GAAYvX,EAAQ7B,CAAO,EAClB6B,GACTyW,GAAQzW,EAAQ7B,CAAO,EAEzByX,EAAK,OAAO,GACR1V,GAAWW,KACb+U,EAAK,GAAG,EACRC,EAAO,GAEL5V,GACEC,GACF0V,EAAK,SAAS,EAEZlb,GAAO,QAAQuF,CAAO,EACxBoX,GAAmBpX,EAAS9B,CAAO,EAEnCsY,GAAQxW,EAAS9B,CAAO,GAEjB0C,GACT4V,GAAQ5V,EAAM1C,CAAO,GAEnB+B,GAAWW,KACbiV,EAAS,EACTF,EAAK,GAAG,GAENzV,IACEqB,EAAK,iBACPoU,EAAK,mBAAmB,EAE1BA,EAAK,GAAG,EAEZ,CACA,SAASuC,GAAyB3W,EAAMrD,EAAS,CAC/C,GAAM,CAAE,KAAAkC,EAAM,WAAAC,EAAY,UAAAC,EAAW,QAASyY,CAAY,EAAIxX,EACxD,CAAE,KAAAoU,EAAM,OAAAC,EAAQ,SAAAC,EAAU,QAAA5V,CAAQ,EAAI/B,EAC5C,GAAIkC,EAAK,OAAS,EAAG,CACnB,IAAM4Y,EAAc,CAACrR,GAAmBvH,EAAK,OAAO,EACpD4Y,GAAerD,EAAK,GAAG,EACvB8B,GAAcrX,EAAMlC,CAAO,EAC3B8a,GAAerD,EAAK,GAAG,CACzB,MACEA,EAAK,GAAG,EACRa,GAAQpW,EAAMlC,CAAO,EACrByX,EAAK,GAAG,EAEVoD,GAAenD,EAAO,EACtB1X,EAAQ,cACR6a,GAAepD,EAAK,GAAG,EACvBA,EAAK,IAAI,EACTa,GAAQnW,EAAYnC,CAAO,EAC3BA,EAAQ,cACR6a,GAAe9Y,EAAQ,EACvB8Y,GAAepD,EAAK,GAAG,EACvBA,EAAK,IAAI,EACT,IAAMsD,EAAW3Y,EAAU,OAAS,GAC/B2Y,GACH/a,EAAQ,cAEVsY,GAAQlW,EAAWpC,CAAO,EACrB+a,GACH/a,EAAQ,cAEV6a,GAAelD,EACb,EAEF,CACF,CACA,SAASsC,GAAmB5W,EAAMrD,EAAS,CACzC,GAAM,CAAE,KAAAyX,EAAM,OAAAnU,EAAQ,OAAAoU,EAAQ,SAAAC,EAAU,QAAA5V,CAAQ,EAAI/B,EAC9C,CAAE,kBAAAuC,EAAmB,gBAAAyY,CAAgB,EAAI3X,EAC3C2X,GACFvD,EAAK,OAAO,EAEdA,EAAK,UAAUpU,EAAK,KAAK,QAAQ,EAC7Bd,IACFmV,EAAO,EACPD,EAAK,GAAGnU,EAAO3E,EAAkB,CAAC,KAAK,EACnC0E,EAAK,SAASoU,EAAK,QAAQ,EAC/BA,EAAK,IAAI,EACT1V,EAAQ,EACR0V,EAAK,GAAG,GAEVA,EAAK,UAAUpU,EAAK,KAAK,MAAM,EAC/BiV,GAAQjV,EAAK,MAAOrD,CAAO,EACvBuC,IACFkV,EAAK,kBAAkBpU,EAAK,KAAK,GAAG,EACpCtB,EAAQ,EACR0V,EAAK,GAAGnU,EAAO3E,EAAkB,CAAC,MAAM,EACxCoD,EAAQ,EACR0V,EAAK,UAAUpU,EAAK,KAAK,GAAG,EAC5BsU,EAAS,GAEXF,EAAK,GAAG,EACJuD,GACFvD,EAAK,IAAI,CAEb,CACA,SAASyC,GAAmB7W,EAAMrD,EAAS,CACzC,GAAM,CAAE,KAAAyX,EAAM,OAAAC,EAAQ,SAAAC,CAAS,EAAI3X,EACnCyX,EAAK,GAAG,EACR,IAAMwD,EAAI5X,EAAK,SAAS,OAClB8V,EAAa8B,EAAI,EACvB,QAAS/W,EAAI,EAAGA,EAAI+W,EAAG/W,IAAK,CAC1B,IAAM0N,EAAIvO,EAAK,SAASa,CAAC,EACrB3H,GAAO,SAASqV,CAAC,EACnB6F,EAAK7F,EAAE,QAAQ,aAAc,MAAM,EAAG,EAAgB,GAEtD6F,EAAK,IAAI,EACL0B,GAAYzB,EAAO,EACvBY,GAAQ1G,EAAG5R,CAAO,EACdmZ,GAAYxB,EAAS,EACzBF,EAAK,GAAG,EAEZ,CACAA,EAAK,GAAG,CACV,CACA,SAAS0C,GAAe9W,EAAMrD,EAAS,CACrC,GAAM,CAAE,KAAAyX,EAAM,OAAAC,EAAQ,SAAAC,CAAS,EAAI3X,EAC7B,CAAE,KAAAkC,EAAM,WAAAC,EAAY,UAAAC,CAAU,EAAIiB,EACxCoU,EAAK,MAAM,EACXa,GAAQpW,EAAMlC,CAAO,EACrByX,EAAK,KAAK,EACVC,EAAO,EACPY,GAAQnW,EAAYnC,CAAO,EAC3B2X,EAAS,EACTF,EAAK,GAAG,EACJrV,IACFqV,EAAK,QAAQ,EACTrV,EAAU,OAAS,GACrB+X,GAAe/X,EAAWpC,CAAO,GAEjCyX,EAAK,GAAG,EACRC,EAAO,EACPY,GAAQlW,EAAWpC,CAAO,EAC1B2X,EAAS,EACTF,EAAK,GAAG,GAGd,CACA,SAAS2C,GAAwB/W,EAAMrD,EAAS,CAC9CsY,GAAQjV,EAAK,KAAMrD,CAAO,EAC1BA,EAAQ,KAAK,KAAK,EAClBsY,GAAQjV,EAAK,MAAOrD,CAAO,CAC7B,CACA,SAASqa,GAAsBhX,EAAMrD,EAAS,CAC5CA,EAAQ,KAAK,GAAG,EAChBoZ,GAAY/V,EAAK,YAAarD,CAAO,EACrCA,EAAQ,KAAK,GAAG,CAClB,CACA,SAASsa,GAAmB,CAAE,QAAAxY,CAAQ,EAAG9B,EAAS,CAChDA,EAAQ,KAAK,SAAS,EAClBzD,GAAO,QAAQuF,CAAO,EACxBoX,GAAmBpX,EAAS9B,CAAO,EAEnCsY,GAAQxW,EAAS9B,CAAO,CAE5B,CAEA,IAAMkb,GAAuC3e,GAAO,QAAQ,sBAAsB,EAC5E4e,GAAsB,CAAC9X,EAAMrD,IAAY,CAC7C,GAAIqD,EAAK,OAAS,EAChBA,EAAK,QAAU+X,GACb/X,EAAK,QACLrD,CACF,UACSqD,EAAK,OAAS,EAAG,CAC1B,IAAMgY,EAAOhQ,GAAQhI,EAAM,MAAM,EACjC,QAASa,EAAI,EAAGA,EAAIb,EAAK,MAAM,OAAQa,IAAK,CAC1C,IAAMqN,EAAMlO,EAAK,MAAMa,CAAC,EACxB,GAAIqN,EAAI,OAAS,GAAKA,EAAI,OAAS,MAAO,CACxC,IAAMzH,EAAMyH,EAAI,IACV7F,EAAM6F,EAAI,IACZzH,GAAOA,EAAI,OAAS,GAAK,EAAEyH,EAAI,OAAS,MAAQ7F,IACpD,EAAE2P,GAAQ3P,GAAOA,EAAI,OAAS,GAAKA,EAAI,UAAY,SACjD6F,EAAI,IAAM6J,GACRtR,EACA9J,EAEAuR,EAAI,OAAS,MACf,GAEE7F,GAAOA,EAAI,OAAS,GAAK,CAACA,EAAI,WAChC6F,EAAI,IAAM6J,GAAkB1P,EAAK1L,CAAO,EAE5C,CACF,CACF,CACF,EACA,SAASob,GAAkB/X,EAAMrD,EAASsb,EAAW,GAAOC,EAAkB,GAAOC,EAAY,OAAO,OAAOxb,EAAQ,WAAW,EAAG,CACnI,GAAI,CAACA,EAAQ,mBAAqB,CAACqD,EAAK,QAAQ,KAAK,EACnD,OAAOA,EAET,GAAM,CAAE,OAAA2R,EAAQ,gBAAAD,CAAgB,EAAI/U,EAC9Byb,EAAoB,CAACzM,EAAK7H,EAAQM,IAAO,CAC7C,IAAMmF,EAAOrQ,GAAO,OAAOwY,EAAiB/F,CAAG,GAAK+F,EAAgB/F,CAAG,EACvE,GAAIgG,EAAQ,CACV,IAAM0G,EAAmBvU,GAAUA,EAAO,OAAS,wBAA0BA,EAAO,OAASM,EACvFkU,EAAcxU,GAAUA,EAAO,OAAS,oBAAsBA,EAAO,WAAaM,EAClFmU,EAA0BzU,GAAUe,GAA0Bf,EAAQH,CAAW,EACjF6U,EAAkB1U,GAAUiB,GAAkBpB,CAAW,EACzD8U,EAAiBC,GAAS,CAC9B,IAAMC,EAAU,GAAGhc,EAAQ,aAAajB,EAAK,CAAC,IAAIgd,CAAI,IACtD,OAAOF,EAAkB,IAAIG,CAAO,IAAMA,CAC5C,EACA,GAAIC,GAAQrP,CAAI,GAAKA,IAAS,wBAA0B4O,EAAUxM,CAAG,EACnE,OAAOA,EACF,GAAIpC,IAAS,YAClB,MAAO,GAAGoC,CAAG,SACR,GAAIpC,IAAS,kBAClB,OAAO8O,GAAoBC,GAAeC,EAA0B,GAAG5M,CAAG,SAAW8M,EAAc9M,CAAG,EACjG,GAAIpC,IAAS,YAClB,GAAI8O,EAAkB,CACpB,GAAM,CAAE,MAAOQ,EAAM,SAAAC,CAAS,EAAIhV,EAC5BiV,EAAOC,EAAO,MAAMH,EAAK,MAAQ,EAAGA,EAAK,IAAM,CAAC,EAChDI,EAAaC,GACjBnB,GACEja,GAAuBib,EAAM,EAAK,EAClCpc,EACA,GACA,GACAiH,CACF,CACF,EACA,MAAO,GAAGjH,EAAQ,aAAahB,EAAM,CAAC,IAAIgQ,CAAG,IAAIhP,EAAQ,KAAO;AAAA,EACtE,EAAE,MAAMgP,CAAG,UAAUmN,CAAQ,IAAIG,CAAU,MAAMtN,CAAG,EAChD,SAAW2M,EAAa,CACtBlU,EAAG,MAAQN,EAAO,MAClBM,EAAG,IAAMN,EAAO,IAChB,GAAM,CAAE,OAAQqV,EAAU,SAAAL,CAAS,EAAIhV,EACjCsV,EAASD,EAAWL,EAAW,GAC/BO,EAAUF,EAAW,GAAKL,EAChC,MAAO,GAAGnc,EAAQ,aAAahB,EAAM,CAAC,IAAIgQ,CAAG,IAAIhP,EAAQ,KAAO;AAAA,EACtE,EAAE,MAAMyc,CAAM,GAAGzN,CAAG,SAAS0N,CAAO,MAAMD,CAAM,GAAGzN,CAAG,GAAG0N,CAAO,EAC5D,KAAO,QAAId,EACF5M,EAEA8M,EAAc9M,CAAG,MAErB,IAAIpC,IAAS,QAClB,OAAOrQ,GAAO,kBAAkByS,CAAG,EAC9B,GAAIpC,IAAS,gBAClB,OAAOrQ,GAAO,kBAAkBwY,EAAgB,eAAe/F,CAAG,CAAC,EAEvE,KAAO,CACL,GAAIpC,GAAQA,EAAK,WAAW,OAAO,GAAKA,IAAS,gBAC/C,MAAO,UAAUoC,CAAG,GACf,GAAIpC,IAAS,gBAClB,MAAO,WAAWmI,EAAgB,eAAe/F,CAAG,CAAC,KAChD,GAAIpC,EACT,MAAO,IAAIA,CAAI,IAAIoC,CAAG,EAE1B,CACA,MAAO,QAAQA,CAAG,EACpB,EACMqN,EAAShZ,EAAK,QAChByT,EAAMzT,EAAK,IACf,GAAIyT,IAAQ,GACV,OAAOzT,EAET,GAAIyT,IAAQ,MAAQ,CAACA,GAAOrN,GAAmB4S,CAAM,EAAG,CACtD,IAAMM,EAAsB3c,EAAQ,YAAYqc,CAAM,EAChDO,EAAkBrgB,GAAO,kBAAkB8f,CAAM,EACjDQ,EAAY3B,GAAqBmB,CAAM,EAC7C,MAAI,CAACf,GAAY,CAACqB,GAAuB,CAACE,IAAc,CAACD,GAAmB7H,EAAgBsH,CAAM,IAC5FJ,GAAQlH,EAAgBsH,CAAM,CAAC,IACjChZ,EAAK,UAAY,GAEnBA,EAAK,QAAUoY,EAAkBY,CAAM,GAC7BM,IACNE,EACFxZ,EAAK,UAAY,EAEjBA,EAAK,UAAY,GAGdA,CACT,CACA,GAAI,CAACyT,EAAK,CACR,IAAMhX,EAASyb,EAAkB,IAAIc,CAAM,IAAM,IAAIA,CAAM,IAAIf,EAAW,OAAS,EAAE,GACrF,GAAI,CACFxE,EAAMra,GAAO,gBAAgBqD,EAAQ,CACnC,WAAY,SACZ,QAASE,EAAQ,iBACnB,CAAC,CACH,OAAS4R,EAAG,CACV,OAAA5R,EAAQ,QACNsG,GACE,GACAjD,EAAK,IACL,OACAuO,EAAE,OACJ,CACF,EACOvO,CACT,CACF,CACA,IAAM2J,EAAM,CAAC,EACPhG,EAAc,CAAC,EACfC,EAAW,OAAO,OAAOjH,EAAQ,WAAW,EAClD4G,GACEkQ,EACA,CAAC1D,EAAOjM,EAAQ2V,EAAG7U,EAAcZ,IAAY,CAI3C,GAHI8B,GAAoBiK,EAAOjM,CAAM,GAGjCiM,EAAM,KAAK,WAAW,UAAU,EAClC,OAEF,IAAM2J,EAAa9U,GAAgB+U,GAAU5J,CAAK,EAC9C2J,GAAc,CAAC1V,GACb6B,GAAiB/B,CAAM,GAAKA,EAAO,YACrCiM,EAAM,OAAS,GAAGA,EAAM,IAAI,MAE9BA,EAAM,KAAOqI,EAAkBrI,EAAM,KAAMjM,EAAQiM,CAAK,EACxDpG,EAAI,KAAKoG,CAAK,IAEV,EAAE2J,GAAc1V,KAAa,CAACF,GAAUA,EAAO,OAAS,kBAAoBA,EAAO,OAAS,iBAAmBA,EAAO,OAAS,sBACjIiM,EAAM,WAAa,IAErBpG,EAAI,KAAKoG,CAAK,EAElB,EACA,GAEApM,EACAC,CACF,EACA,IAAMpH,EAAW,CAAC,EAClBmN,EAAI,KAAK,CAACiQ,EAAGhQ,IAAMgQ,EAAE,MAAQhQ,EAAE,KAAK,EACpCD,EAAI,QAAQ,CAACvF,EAAIvD,IAAM,CACrB,IAAMU,EAAQ6C,EAAG,MAAQ,EACnByG,EAAMzG,EAAG,IAAM,EACfyV,EAAOlQ,EAAI9I,EAAI,CAAC,EAChBiZ,EAAcd,EAAO,MAAMa,EAAOA,EAAK,IAAM,EAAI,EAAGtY,CAAK,GAC3DuY,EAAY,QAAU1V,EAAG,SAC3B5H,EAAS,KAAKsd,GAAe1V,EAAG,QAAU,GAAG,EAE/C,IAAM3H,EAASuc,EAAO,MAAMzX,EAAOsJ,CAAG,EACtCrO,EAAS,KACPsB,GACEsG,EAAG,KACH,GACA,CACE,MAAOoD,GAAyBxH,EAAK,IAAI,MAAOvD,EAAQ8E,CAAK,EAC7D,IAAKiG,GAAyBxH,EAAK,IAAI,MAAOvD,EAAQoO,CAAG,EACzD,OAAApO,CACF,EACA2H,EAAG,WAAa,EAAI,CACtB,CACF,EACIvD,IAAM8I,EAAI,OAAS,GAAKkB,EAAMmO,EAAO,QACvCxc,EAAS,KAAKwc,EAAO,MAAMnO,CAAG,CAAC,CAEnC,CAAC,EACD,IAAIjK,EACJ,OAAIpE,EAAS,QACXoE,EAAMzC,GAAyB3B,EAAUwD,EAAK,GAAG,EACjDY,EAAI,IAAM6S,IAEV7S,EAAMZ,EACNY,EAAI,UAAY,GAElBA,EAAI,YAAc,OAAO,KAAKgD,CAAQ,EAC/BhD,CACT,CACA,SAAS+Y,GAAUvV,EAAI,CAIrB,MAHI,EAAAlL,GAAO,kBAAkBkL,EAAG,IAAI,GAGhCA,EAAG,OAAS,UAIlB,CACA,SAAS8U,GAAoBzS,EAAK,CAChC,OAAIvN,GAAO,SAASuN,CAAG,EACdA,EACEA,EAAI,OAAS,EACfA,EAAI,QAEJA,EAAI,SAAS,IAAIyS,EAAmB,EAAE,KAAK,EAAE,CAExD,CACA,SAASN,GAAQrP,EAAM,CACrB,OAAOA,IAAS,eAAiBA,IAAS,eAC5C,CAEA,IAAMwQ,GAAc7G,GAClB,sBACA,CAAClT,EAAMkO,EAAKvR,IACHqd,GAAUha,EAAMkO,EAAKvR,EAAS,CAACsd,EAAQC,EAAQC,IAAW,CAC/D,IAAMC,EAAWzd,EAAQ,OAAO,SAC5BkE,EAAIuZ,EAAS,QAAQH,CAAM,EAC3Brc,EAAM,EACV,KAAOiD,KAAO,GAAG,CACf,IAAMwZ,EAAUD,EAASvZ,CAAC,EACtBwZ,GAAWA,EAAQ,OAAS,IAC9Bzc,GAAOyc,EAAQ,SAAS,OAE5B,CACA,MAAO,IAAM,CACX,GAAIF,EACFF,EAAO,YAAcK,GACnBJ,EACAtc,EACAjB,CACF,MACK,CACL,IAAM4d,EAAkBC,GAAmBP,EAAO,WAAW,EAC7DM,EAAgB,UAAYD,GAC1BJ,EACAtc,EAAMqc,EAAO,SAAS,OAAS,EAC/Btd,CACF,CACF,CACF,CACF,CAAC,CAEL,EACA,SAASqd,GAAUha,EAAMkO,EAAKvR,EAAS8d,EAAgB,CACrD,GAAIvM,EAAI,OAAS,SAAW,CAACA,EAAI,KAAO,CAACA,EAAI,IAAI,QAAQ,KAAK,GAAI,CAChE,IAAM9Q,EAAM8Q,EAAI,IAAMA,EAAI,IAAI,IAAMlO,EAAK,IACzCrD,EAAQ,QACNsG,GAAoB,GAAIiL,EAAI,GAAG,CACjC,EACAA,EAAI,IAAMpQ,GAAuB,OAAQ,GAAOV,CAAG,CACrD,CAIA,GAHIT,EAAQ,mBAAqBuR,EAAI,MACnCA,EAAI,IAAM6J,GAAkB7J,EAAI,IAAKvR,CAAO,GAE1CuR,EAAI,OAAS,KAAM,CACrB,IAAMgM,EAASQ,GAAe1a,EAAMkO,CAAG,EACjC+L,EAAS,CACb,KAAM,EACN,IAAKhM,GAASjO,EAAK,GAAG,EACtB,SAAU,CAACka,CAAM,CACnB,EAEA,GADAvd,EAAQ,YAAYsd,CAAM,EACtBQ,EACF,OAAOA,EAAeR,EAAQC,EAAQ,EAAI,CAE9C,KAAO,CACL,IAAME,EAAWzd,EAAQ,OAAO,SAC5BkE,EAAIuZ,EAAS,QAAQpa,CAAI,EAC7B,KAAOa,KAAO,IAAI,CAChB,IAAMwZ,EAAUD,EAASvZ,CAAC,EAC1B,GAAIwZ,GAAWA,EAAQ,OAAS,EAAG,CACjC1d,EAAQ,WAAW0d,CAAO,EAC1B,QACF,CACA,GAAIA,GAAWA,EAAQ,OAAS,GAAK,CAACA,EAAQ,QAAQ,KAAK,EAAE,OAAQ,CACnE1d,EAAQ,WAAW0d,CAAO,EAC1B,QACF,CACA,GAAIA,GAAWA,EAAQ,OAAS,EAAG,CAC7BnM,EAAI,OAAS,WAAamM,EAAQ,SAASA,EAAQ,SAAS,OAAS,CAAC,EAAE,YAAc,QACxF1d,EAAQ,QACNsG,GAAoB,GAAIjD,EAAK,GAAG,CAClC,EAEFrD,EAAQ,WAAW,EACnB,IAAMud,EAASQ,GAAe1a,EAAMkO,CAAG,EACvC,CACE,IAAMtQ,EAAMsc,EAAO,QACftc,GACFyc,EAAQ,SAAS,QAAQ,CAAC,CAAE,QAAAM,CAAQ,IAAM,CACpCC,GAAUD,EAAS/c,CAAG,GACxBjB,EAAQ,QACNsG,GACE,GACAiX,EAAO,QAAQ,GACjB,CACF,CAEJ,CAAC,CAEL,CACAG,EAAQ,SAAS,KAAKH,CAAM,EAC5B,IAAMjH,EAASwH,GAAkBA,EAAeJ,EAASH,EAAQ,EAAK,EACtEvH,GAAauH,EAAQvd,CAAO,EACxBsW,GAAQA,EAAO,EACnBtW,EAAQ,YAAc,IACxB,MACEA,EAAQ,QACNsG,GAAoB,GAAIjD,EAAK,GAAG,CAClC,EAEF,KACF,CACF,CACF,CACA,SAAS0a,GAAe1a,EAAMkO,EAAK,CACjC,IAAM2M,EAAe7a,EAAK,UAAY,EACtC,MAAO,CACL,KAAM,GACN,IAAKA,EAAK,IACV,UAAWkO,EAAI,OAAS,OAAS,OAASA,EAAI,IAC9C,SAAU2M,GAAgB,CAAC7S,GAAQhI,EAAM,KAAK,EAAIA,EAAK,SAAW,CAACA,CAAI,EACvE,QAASkI,GAASlI,EAAM,KAAK,EAC7B,aAAA6a,CACF,CACF,CACA,SAASP,GAA2BJ,EAAQY,EAAUne,EAAS,CAC7D,OAAIud,EAAO,UACFtb,GACLsb,EAAO,UACPa,GAA0Bb,EAAQY,EAAUne,CAAO,EAGnDyB,GAAqBzB,EAAQ,OAAO1C,EAAc,EAAG,CACnD,KACA,MACF,CAAC,CACH,EAEO8gB,GAA0Bb,EAAQY,EAAUne,CAAO,CAE9D,CACA,SAASoe,GAA0Bb,EAAQY,EAAUne,EAAS,CAC5D,GAAM,CAAE,OAAAsD,CAAO,EAAItD,EACbqe,EAAcrd,GAClB,MACAG,GACE,GAAGgd,CAAQ,GACX,GACAxe,GACA,CACF,CACF,EACM,CAAE,SAAAE,CAAS,EAAI0d,EACfe,EAAaze,EAAS,CAAC,EAE7B,GAD4BA,EAAS,SAAW,GAAKye,EAAW,OAAS,EAEvE,GAAIze,EAAS,SAAW,GAAKye,EAAW,OAAS,GAAI,CACnD,IAAMC,EAAYD,EAAW,YAC7B,OAAAlS,GAAWmS,EAAWF,EAAare,CAAO,EACnCue,CACT,KAEE,QAAOxe,GACLC,EACAsD,EAAO1G,EAAQ,EACfkE,GAAuB,CAACud,CAAW,CAAC,EACpCxe,EALc,GAOd,OACA,OACA,GACA,GACA,GACA0d,EAAO,GACT,MAEG,CACL,IAAMtZ,EAAMqa,EAAW,YACjBC,EAAYrR,GAAmBjJ,CAAG,EACxC,OAAIsa,EAAU,OAAS,IACrBnb,GAAemb,EAAWve,CAAO,EAEnCoM,GAAWmS,EAAWF,EAAare,CAAO,EACnCiE,CACT,CACF,CACA,SAASga,GAAUhB,EAAGhQ,EAAG,CACvB,GAAI,CAACgQ,GAAKA,EAAE,OAAShQ,EAAE,KACrB,MAAO,GAET,GAAIgQ,EAAE,OAAS,GACb,GAAIA,EAAE,MAAM,UAAYhQ,EAAE,MAAM,QAC9B,MAAO,OAEJ,CACL,IAAMnD,EAAMmT,EAAE,IACRuB,EAAYvR,EAAE,IAIpB,GAHInD,EAAI,OAAS0U,EAAU,MAGvB1U,EAAI,OAAS,GAAKA,EAAI,WAAa0U,EAAU,UAAY1U,EAAI,UAAY0U,EAAU,QACrF,MAAO,EAEX,CACA,MAAO,EACT,CACA,SAASX,GAAmBxa,EAAM,CAChC,OACE,GAAIA,EAAK,OAAS,GAChB,GAAIA,EAAK,UAAU,OAAS,GAC1BA,EAAOA,EAAK,cAEZ,QAAOA,OAEAA,EAAK,OAAS,KACvBA,EAAOA,EAAK,MAGlB,CAEA,IAAMob,GAAgB,CAAClN,EAAKmN,EAAO1e,IAAY,CAC7C,GAAM,CAAE,UAAA2e,EAAW,IAAAle,CAAI,EAAI8Q,EACrB7F,EAAM6F,EAAI,IACZ,CAAE,IAAAzH,CAAI,EAAIyH,EACd,GAAIzH,GAAOA,EAAI,OAAS,GAAK,CAACA,EAAI,QAAQ,KAAK,EAE3C,OAAA9J,EAAQ,QACNsG,GAAoB,GAAI7F,CAAG,CAC7B,EACO,CACL,MAAO,CACLO,GAAqB0K,EAAKvK,GAAuB,GAAI,GAAMV,CAAG,CAAC,CACjE,CACF,EAGJ,GAAI,CAACqJ,EAAK,CACR,GAAI4B,EAAI,OAAS,GAAK,CAACA,EAAI,SACzB,OAAA1L,EAAQ,QACNsG,GACE,GACAoF,EAAI,GACN,CACF,EACO,CACL,MAAO,CACL1K,GAAqB0K,EAAKvK,GAAuB,GAAI,GAAMV,CAAG,CAAC,CACjE,CACF,EAEFme,GAAuBrN,EAAKvR,CAAO,EACnC8J,EAAMyH,EAAI,GACZ,CACA,OAAI7F,EAAI,OAAS,GACfA,EAAI,SAAS,QAAQ,GAAG,EACxBA,EAAI,SAAS,KAAK,SAAS,GACjBA,EAAI,WACdA,EAAI,QAAUA,EAAI,QAAU,GAAGA,EAAI,OAAO,SAAW,MAEnDiT,EAAU,KAAMxP,GAAQA,EAAI,UAAY,OAAO,IAC7CzD,EAAI,OAAS,EACXA,EAAI,SACNA,EAAI,QAAUnP,GAAO,SAASmP,EAAI,OAAO,EAEzCA,EAAI,QAAU,GAAG1L,EAAQ,aAAaxB,EAAQ,CAAC,IAAIkN,EAAI,OAAO,KAGhEA,EAAI,SAAS,QAAQ,GAAG1L,EAAQ,aAAaxB,EAAQ,CAAC,GAAG,EACzDkN,EAAI,SAAS,KAAK,GAAG,IAGpB1L,EAAQ,QACP2e,EAAU,KAAMxP,GAAQA,EAAI,UAAY,MAAM,GAChD0P,GAAanT,EAAK,GAAG,EAEnBiT,EAAU,KAAMxP,GAAQA,EAAI,UAAY,MAAM,GAChD0P,GAAanT,EAAK,GAAG,GAGlB,CACL,MAAO,CAAC1K,GAAqB0K,EAAK5B,CAAG,CAAC,CACxC,CACF,EACM8U,GAAyB,CAACrN,EAAKvR,IAAY,CAC/C,IAAM0L,EAAM6F,EAAI,IACVuN,EAAWviB,GAAO,SAASmP,EAAI,OAAO,EAC5C6F,EAAI,IAAMpQ,GAAuB2d,EAAU,GAAOpT,EAAI,GAAG,EAEvD6F,EAAI,IAAM6J,GAAkB7J,EAAI,IAAKvR,CAAO,CAEhD,EACM6e,GAAe,CAACnT,EAAK+Q,IAAW,CAChC/Q,EAAI,OAAS,EACXA,EAAI,SACNA,EAAI,QAAU+Q,EAAS/Q,EAAI,QAE3BA,EAAI,QAAU,KAAK+Q,CAAM,MAAM/Q,EAAI,OAAO,OAG5CA,EAAI,SAAS,QAAQ,IAAI+Q,CAAM,OAAO,EACtC/Q,EAAI,SAAS,KAAK,GAAG,EAEzB,EAEMqT,GAAexI,GACnB,MACA,CAAClT,EAAMkO,EAAKvR,IAAY,CACtB,GAAM,CAAE,OAAAsD,EAAQ,aAAAC,CAAa,EAAIvD,EACjC,OAAOgf,GAAW3b,EAAMkO,EAAKvR,EAAUif,GAAY,CACjD,IAAMC,EAAYzd,GAAqB6B,EAAOxF,EAAW,EAAG,CAC1DmhB,EAAQ,MACV,CAAC,EACKE,EAAapT,GAAe1I,CAAI,EAChCgY,EAAOhQ,GAAQhI,EAAM,MAAM,EAC3B+b,EAAU7T,GAASlI,EAAM,MAAO,GAAO,EAAI,EAC3Cgc,EAAWD,GAAWA,EAAQ,OAAS,EACzCC,GAAY,CAACD,EAAQ,KACvBR,GAAuBQ,EAASpf,CAAO,EAEzC,IAAIsf,EAASF,IAAYA,EAAQ,OAAS,EAAIA,EAAQ,MAAQje,GAAuBie,EAAQ,MAAM,QAAS,EAAI,EAAI,OAASA,EAAQ,KACjI/D,GAAQiE,GAAUD,IAElBD,EAAQ,IAAME,EAASlE,GACrBkE,EACAtf,CACF,GAGJ,IAAMqe,EAAce,GAAWE,EAASte,GAAqB,MAAOse,CAAM,EAAI,KAC1EH,IACE9D,IACFA,EAAK,IAAMD,GACTC,EAAK,IACLrb,CACF,GAEEqe,GAAee,EAAQ,OAAS,IAClCf,EAAY,MAAQjD,GAClBiD,EAAY,MACZre,CACF,IAGJ,IAAMuf,EAAmBN,EAAQ,OAAO,OAAS,GAAKA,EAAQ,OAAO,UAAY,EAC3EO,EAAeD,EAAmB,GAAKH,EAAU,IAAM,IAC7D,OAAAH,EAAQ,YAAclf,GACpBC,EACAsD,EAAO1G,EAAQ,EACf,OACAsiB,EACAM,EACA,OACA,OACA,GACA,CAACD,EACD,GACAlc,EAAK,GACP,EACO,IAAM,CACX,IAAIoc,EACE,CAAE,SAAA5f,CAAS,EAAIof,EACjBE,GACF9b,EAAK,SAAS,KAAMO,GAAM,CACxB,GAAIA,EAAE,OAAS,EAAG,CAChB,IAAM3C,EAAMsK,GAAS3H,EAAG,KAAK,EAC7B,GAAI3C,EACF,OAAAjB,EAAQ,QACNsG,GACE,GACArF,EAAI,GACN,CACF,EACO,EAEX,CACF,CAAC,EAEH,IAAMye,EAAsB7f,EAAS,SAAW,GAAKA,EAAS,CAAC,EAAE,OAAS,EACpE8f,EAAa3T,GAAa3I,CAAI,EAAIA,EAAO8b,GAAc9b,EAAK,SAAS,SAAW,GAAK2I,GAAa3I,EAAK,SAAS,CAAC,CAAC,EAAIA,EAAK,SAAS,CAAC,EAAI,KA4C/I,GA3CIsc,GACFF,EAAaE,EAAW,YACpBR,GAAcd,GAChBjS,GAAWqT,EAAYpB,EAAare,CAAO,GAEpC0f,EACTD,EAAa1f,GACXC,EACAsD,EAAO1G,EAAQ,EACfyhB,EAAcvd,GAAuB,CAACud,CAAW,CAAC,EAAI,OACtDhb,EAAK,SACL,GACA,OACA,OACA,GACA,OACA,EACF,GAEAoc,EAAa5f,EAAS,CAAC,EAAE,YACrBsf,GAAcd,GAChBjS,GAAWqT,EAAYpB,EAAare,CAAO,EAEzCyf,EAAW,UAAY,CAACF,IACtBE,EAAW,SACblc,EAAatG,EAAU,EACvBsG,EACE7C,GAAoBV,EAAQ,MAAOyf,EAAW,WAAW,CAC3D,GAEAlc,EACE5C,GAAeX,EAAQ,MAAOyf,EAAW,WAAW,CACtD,GAGJA,EAAW,QAAU,CAACF,EAClBE,EAAW,SACbnc,EAAOrG,EAAU,EACjBqG,EAAO5C,GAAoBV,EAAQ,MAAOyf,EAAW,WAAW,CAAC,GAEjEnc,EAAO3C,GAAeX,EAAQ,MAAOyf,EAAW,WAAW,CAAC,GAG5DpE,EAAM,CACR,IAAMuE,EAAOhe,GACXie,GAAoBZ,EAAQ,YAAa,CACvC9d,GAAuB,SAAS,CAClC,CAAC,CACH,EACAye,EAAK,KAAOnd,GAAqB,CAC/BjB,GAAyB,CAAC,kBAAmB6Z,EAAK,IAAK,GAAG,CAAC,EAC3D7Z,GAAyB,CACvB,cACA,GAAG8d,EAAS,CAAC,uBAAwBA,CAAM,EAAI,CAAC,EAChD,OAAOtf,EAAQ,aACbd,EACF,CAAC,kCACH,CAAC,EACDsC,GAAyB,CAAC,iBAAkBie,CAAU,CAAC,EACvDte,GAAuB,oBAAoB,EAC3CA,GAAuB,cAAc,CACvC,CAAC,EACD+d,EAAU,UAAU,KAClBU,EACAze,GAAuB,QAAQ,EAC/BA,GAAuB,OAAOnB,EAAQ,OAAO,MAAM,CAAC,CACtD,EACAA,EAAQ,OAAO,KAAK,IAAI,CAC1B,MACEkf,EAAU,UAAU,KAClBtd,GACEie,GAAoBZ,EAAQ,WAAW,EACvCQ,EACA,EACF,CACF,CAEJ,CACF,CAAC,CACH,CACF,EACA,SAAST,GAAW3b,EAAMkO,EAAKvR,EAAS8d,EAAgB,CACtD,GAAI,CAACvM,EAAI,IAAK,CACZvR,EAAQ,QACNsG,GAAoB,GAAIiL,EAAI,GAAG,CACjC,EACA,MACF,CACA,IAAMuO,EAAcvO,EAAI,eACxB,GAAI,CAACuO,EAAa,CAChB9f,EAAQ,QACNsG,GAAoB,GAAIiL,EAAI,GAAG,CACjC,EACA,MACF,CACAwO,GAAuBD,EAAa9f,CAAO,EAC3C,GAAM,CAAE,eAAAggB,EAAgB,kBAAAC,EAAmB,OAAAC,CAAO,EAAIlgB,EAChD,CAAE,OAAAF,EAAQ,MAAAoB,EAAO,IAAAD,EAAK,MAAAqB,CAAM,EAAIwd,EAChCb,EAAU,CACd,KAAM,GACN,IAAK1N,EAAI,IACT,OAAAzR,EACA,WAAYoB,EACZ,SAAUD,EACV,iBAAkBqB,EAClB,YAAAwd,EACA,SAAU/T,GAAe1I,CAAI,EAAIA,EAAK,SAAW,CAACA,CAAI,CACxD,EACArD,EAAQ,YAAYif,CAAO,EAC3BiB,EAAO,OACHlgB,EAAQ,oBACVkB,GAAS8e,EAAe9e,CAAK,EAC7BD,GAAO+e,EAAe/e,CAAG,EACzBqB,GAAS0d,EAAe1d,CAAK,GAE/B,IAAMgU,EAASwH,GAAkBA,EAAemB,CAAO,EACvD,MAAO,IAAM,CACXiB,EAAO,OACHlgB,EAAQ,oBACVkB,GAAS+e,EAAkB/e,CAAK,EAChCD,GAAOgf,EAAkBhf,CAAG,EAC5BqB,GAAS2d,EAAkB3d,CAAK,GAE9BgU,GAAQA,EAAO,CACrB,CACF,CACA,SAASyJ,GAAuBtT,EAAQzM,EAAS,CAC3CyM,EAAO,YACPzM,EAAQ,oBACVyM,EAAO,OAAS2O,GACd3O,EAAO,OACPzM,CACF,EACIyM,EAAO,MACTA,EAAO,IAAM2O,GACX3O,EAAO,IACPzM,EACA,EACF,GAEEyM,EAAO,QACTA,EAAO,MAAQ2O,GACb3O,EAAO,MACPzM,EACA,EACF,GAEEyM,EAAO,QACTA,EAAO,MAAQ2O,GACb3O,EAAO,MACPzM,EACA,EACF,IAGJyM,EAAO,UAAY,GACrB,CACA,SAASoT,GAAoB,CAAE,MAAA3e,EAAO,IAAAD,EAAK,MAAAqB,CAAM,EAAG6d,EAAW,CAAC,EAAG,CACjE,OAAOC,GAAiB,CAAClf,EAAOD,EAAKqB,EAAO,GAAG6d,CAAQ,CAAC,CAC1D,CACA,SAASC,GAAiBze,EAAM,CAC9B,IAAIuC,EAAIvC,EAAK,OACb,KAAOuC,KACD,CAAAvC,EAAKuC,CAAC,GAAV,CAEF,OAAOvC,EAAK,MAAM,EAAGuC,EAAI,CAAC,EAAE,IAAI,CAACwH,EAAKmH,IAAOnH,GAAOvK,GAAuB,IAAI,OAAO0R,EAAK,CAAC,EAAG,EAAK,CAAC,CACvG,CAEA,IAAMwN,GAAkBlf,GAAuB,YAAa,EAAK,EAC3Dmf,GAAkB,CAACjd,EAAMrD,IAAY,CACzC,GAAIqD,EAAK,OAAS,IAAMA,EAAK,UAAY,GAAKA,EAAK,UAAY,GAAI,CACjE,IAAMkd,EAAQlV,GAAQhI,EAAM,MAAM,EAClC,GAAIkd,EAAO,CACT,IAAMC,EAAYD,EAAM,IACxB,OAAIvgB,EAAQ,mBACVwgB,GAAaxgB,EAAQ,eAAewgB,CAAS,EAE/CxgB,EAAQ,OAAO,QACR,IAAM,CACPA,EAAQ,mBACVwgB,GAAaxgB,EAAQ,kBAAkBwgB,CAAS,EAElDxgB,EAAQ,OAAO,OACjB,CACF,CACF,CACF,EACMygB,GAAsB,CAACpd,EAAMrD,IAAY,CAC7C,IAAI0gB,EACJ,GAAI3U,GAAe1I,CAAI,GAAKA,EAAK,MAAM,KAAKyI,EAAO,IAAM4U,EAAOrV,GAAQhI,EAAM,KAAK,GAAI,CACrF,IAAMoJ,EAASiU,EAAK,eACpB,GAAIjU,EAAQ,CACVsT,GAAuBtT,EAAQzM,CAAO,EACtC,GAAM,CAAE,MAAAkB,EAAO,IAAAD,EAAK,MAAAqB,CAAM,EAAImK,EACxB,CAAE,eAAAuT,EAAgB,kBAAAC,CAAkB,EAAIjgB,EAC9C,OAAAkB,GAAS8e,EAAe9e,CAAK,EAC7BD,GAAO+e,EAAe/e,CAAG,EACzBqB,GAAS0d,EAAe1d,CAAK,EACtB,IAAM,CACXpB,GAAS+e,EAAkB/e,CAAK,EAChCD,GAAOgf,EAAkBhf,CAAG,EAC5BqB,GAAS2d,EAAkB3d,CAAK,CAClC,CACF,CACF,CACF,EACMqe,GAAoB,CAACzgB,EAAO0gB,EAAU/gB,EAAUY,IAAQmB,GAC5D1B,EACAL,EACA,GACA,GACAA,EAAS,OAASA,EAAS,CAAC,EAAE,IAAMY,CACtC,EACA,SAASogB,GAAWxd,EAAMrD,EAAS8gB,EAAcH,GAAmB,CAClE3gB,EAAQ,OAAOlB,EAAQ,EACvB,GAAM,CAAE,SAAAe,EAAU,IAAAY,CAAI,EAAI4C,EACpB0d,EAAkB,CAAC,EACnBC,EAAe,CAAC,EAClBC,EAAkBjhB,EAAQ,OAAO,MAAQ,GAAKA,EAAQ,OAAO,KAAO,EACpE,CAACA,EAAQ,KAAOA,EAAQ,oBAC1BihB,EAAkBlU,GAAY1J,EAAMrD,EAAQ,WAAW,GAEzD,IAAMkhB,EAAkB7V,GAAQhI,EAAM,OAAQ,EAAI,EAClD,GAAI6d,EAAiB,CACnB,GAAM,CAAE,IAAAxV,EAAK,IAAA5B,CAAI,EAAIoX,EACjBxV,GAAO,CAACpC,GAAYoC,CAAG,IACzBuV,EAAkB,IAEpBF,EAAgB,KACd/f,GACE0K,GAAOvK,GAAuB,UAAW,EAAI,EAC7C2f,EAAYhX,EAAK,OAAQjK,EAAUY,CAAG,CACxC,CACF,CACF,CACA,IAAI0gB,EAAmB,GACnBC,EAAsB,GACpBC,EAA0B,CAAC,EAC3BC,EAAgC,IAAI,IACtCC,EAAyB,EAC7B,QAASrd,EAAI,EAAGA,EAAIrE,EAAS,OAAQqE,IAAK,CACxC,IAAMsd,EAAc3hB,EAASqE,CAAC,EAC1Bud,EACJ,GAAI,CAAC1V,GAAeyV,CAAW,GAAK,EAAEC,EAAUpW,GAAQmW,EAAa,OAAQ,EAAI,GAAI,CAC/EA,EAAY,OAAS,GACvBH,EAAwB,KAAKG,CAAW,EAE1C,QACF,CACA,GAAIN,EAAiB,CACnBlhB,EAAQ,QACNsG,GAAoB,GAAImb,EAAQ,GAAG,CACrC,EACA,KACF,CACAN,EAAmB,GACnB,GAAM,CAAE,SAAUO,EAAc,IAAKC,CAAQ,EAAIH,EAC3C,CACJ,IAAKrO,EAAWhS,GAAuB,UAAW,EAAI,EACtD,IAAKqf,EACL,IAAKoB,CACP,EAAIH,EACAI,EACAvY,GAAY6J,CAAQ,EACtB0O,EAAiB1O,EAAWA,EAAS,QAAU,UAE/C8N,EAAkB,GAEpB,IAAMP,EAAOrV,GAAQmW,EAAa,KAAK,EACjCM,EAAehB,EAAYN,EAAWE,EAAMgB,EAAcC,CAAO,EACnEI,EACAC,EACJ,GAAID,EAAM1W,GAAQmW,EAAa,IAAI,EACjCP,EAAkB,GAClBD,EAAa,KACX/e,GACE8f,EAAI,IACJE,GAAiB9O,EAAU2O,EAAcP,GAAwB,EACjElB,EACF,CACF,UACS2B,EAAQ3W,GACjBmW,EACA,eACA,EAEF,EAAG,CACD,IAAI5S,EAAI1K,EACJgN,GACJ,KAAOtC,MACLsC,GAAOrR,EAAS+O,CAAC,EACb,EAAAsC,GAAK,OAAS,GAAKgR,GAAuBhR,EAAI,KAAlD,CAIF,GAAIA,IAAQnF,GAAemF,EAAI,GAAK7F,GAAQ6F,GAAM,cAAc,EAAG,CACjE,IAAIiR,GAAcnB,EAAaA,EAAa,OAAS,CAAC,EACtD,KAAOmB,GAAY,UAAU,OAAS,IACpCA,GAAcA,GAAY,UAE5BA,GAAY,UAAYH,EAAM,IAAM/f,GAClC+f,EAAM,IACNC,GACE9O,EACA2O,EACAP,GACF,EACAlB,EACF,EAAI4B,GAAiB9O,EAAU2O,EAAcP,GAAwB,CACvE,MACEvhB,EAAQ,QACNsG,GAAoB,GAAI0b,EAAM,GAAG,CACnC,CAEJ,SAAWtB,EAAM,CACfO,EAAkB,GAClB,IAAMnB,EAAcY,EAAK,eACrBZ,GACFC,GAAuBD,EAAa9f,CAAO,EAC3CghB,EAAa,KACXvf,GAAqBzB,EAAQ,OAAOlC,EAAW,EAAG,CAChDgiB,EAAY,OACZle,GACEie,GAAoBC,CAAW,EAC/BmC,GAAiB9O,EAAU2O,CAAY,EACvC,EACF,CACF,CAAC,CACH,GAEA9hB,EAAQ,QACNsG,GACE,GACAoa,EAAK,GACP,CACF,CAEJ,KAAO,CACL,GAAImB,EAAgB,CAClB,GAAIP,EAAc,IAAIO,CAAc,EAAG,CACrC7hB,EAAQ,QACNsG,GACE,GACAsb,CACF,CACF,EACA,QACF,CACAN,EAAc,IAAIO,CAAc,EAC5BA,IAAmB,YACrBT,EAAsB,GAE1B,CACAL,EAAgB,KAAK/f,GAAqBmS,EAAU2O,CAAY,CAAC,CACnE,CACF,CACA,GAAI,CAACZ,EAAiB,CACpB,IAAMkB,EAA2B,CAACliB,EAAOmiB,IAAc,CACrD,IAAM7L,EAAKsK,EAAY5gB,EAAO,OAAQmiB,EAAW5hB,CAAG,EACpD,OAAIT,EAAQ,eACVwW,EAAG,gBAAkB,IAEhBxV,GAAqB,UAAWwV,CAAE,CAC3C,EACK2K,EAEME,EAAwB,QAGnCA,EAAwB,KAAMjO,GAAU8O,GAAuB9O,CAAK,CAAC,IAC/DgO,EACFphB,EAAQ,QACNsG,GACE,GACA+a,EAAwB,CAAC,EAAE,GAC7B,CACF,EAEAN,EAAgB,KACdqB,EAAyB,OAAQf,CAAuB,CAC1D,GAfFN,EAAgB,KAAKqB,EAAyB,OAAQviB,CAAQ,CAAC,CAkBnE,CACA,IAAMyiB,EAAWrB,EAAkB,EAAIsB,GAAkBlf,EAAK,QAAQ,EAAI,EAAI,EAC1Emf,EAAQ1hB,GACVigB,EAAgB,OACd/f,GACE,IAGAG,GACEmhB,EAAY,GACZ,EACF,CACF,CACF,EACA7hB,CACF,EACA,OAAIugB,EAAa,SACfwB,EAAQ/gB,GAAqBzB,EAAQ,OAAOhC,EAAY,EAAG,CACzDwkB,EACA5hB,GAAsBogB,CAAY,CACpC,CAAC,GAEI,CACL,MAAAwB,EACA,gBAAAvB,CACF,CACF,CACA,SAASgB,GAAiBjZ,EAAMwN,EAAIlU,EAAO,CACzC,IAAMpC,EAAQ,CACZc,GAAqB,OAAQgI,CAAI,EACjChI,GAAqB,KAAMwV,CAAE,CAC/B,EACA,OAAIlU,GAAS,MACXpC,EAAM,KACJc,GAAqB,MAAOG,GAAuB,OAAOmB,CAAK,EAAG,EAAI,CAAC,CACzE,EAEKxB,GAAuBZ,CAAK,CACrC,CACA,SAASqiB,GAAkB1iB,EAAU,CACnC,QAASqE,EAAI,EAAGA,EAAIrE,EAAS,OAAQqE,IAAK,CACxC,IAAM+E,EAAQpJ,EAASqE,CAAC,EACxB,OAAQ+E,EAAM,KAAM,CAClB,IAAK,GACH,GAAIA,EAAM,UAAY,GAAKsZ,GAAkBtZ,EAAM,QAAQ,EACzD,MAAO,GAET,MACF,IAAK,GACH,GAAIsZ,GAAkBtZ,EAAM,QAAQ,EAAG,MAAO,GAC9C,MACF,IAAK,IACL,IAAK,IACH,GAAIsZ,GAAkBtZ,EAAM,QAAQ,EAAG,MAAO,GAC9C,KACJ,CACF,CACA,MAAO,EACT,CACA,SAASiZ,GAAuB7e,EAAM,CACpC,OAAIA,EAAK,OAAS,GAAKA,EAAK,OAAS,GAC5B,GACFA,EAAK,OAAS,EAAI,CAAC,CAACA,EAAK,QAAQ,KAAK,EAAI6e,GAAuB7e,EAAK,OAAO,CACtF,CAEA,IAAMof,GAAqC,IAAI,QACzCC,GAAmB,CAACrf,EAAMrD,IACvB,UAAgC,CAErC,GADAqD,EAAOrD,EAAQ,YACX,EAAEqD,EAAK,OAAS,IAAMA,EAAK,UAAY,GAAKA,EAAK,UAAY,IAC/D,OAEF,GAAM,CAAE,IAAApD,EAAK,MAAAC,CAAM,EAAImD,EACjB7C,EAAc6C,EAAK,UAAY,EACjCsf,EAAWniB,EAAcoiB,GAAqBvf,EAAMrD,CAAO,EAAI,IAAIC,CAAG,IACpE4iB,EAAqBtmB,GAAO,SAASomB,CAAQ,GAAKA,EAAS,SAAWjlB,GACxEolB,EACAC,EACA5iB,EAAY,EACZ6iB,EACAC,EACAC,EACAC,EAEFN,GAAsBF,IAAa9lB,IAAY8lB,IAAa7lB,IAAY,CAAC0D,IAIxEP,IAAQ,OAASA,IAAQ,iBAAmBA,IAAQ,QAEvD,GAAIC,EAAM,OAAS,EAAG,CACpB,IAAMkjB,EAAmBC,GACvBhgB,EACArD,EACA,OACAQ,EACAqiB,CACF,EACAC,EAAaM,EAAiB,MAC9BjjB,EAAYijB,EAAiB,UAC7BH,EAAmBG,EAAiB,iBACpC,IAAM/iB,EAAa+iB,EAAiB,WACpCF,EAAkB7iB,GAAcA,EAAW,OAASO,GAClDP,EAAW,IAAKkR,GAAQ+R,GAAmB/R,EAAKvR,CAAO,CAAC,CAC1D,EAAI,OACAojB,EAAiB,iBACnBD,EAAiB,GAErB,CACA,GAAI9f,EAAK,SAAS,OAAS,EAQzB,GAPIsf,IAAa5lB,KACfomB,EAAiB,GACjBhjB,GAAa,MAEYK,GAC3BmiB,IAAa9lB,IACb8lB,IAAa5lB,GACW,CACtB,GAAM,CAAE,MAAAylB,EAAO,gBAAAvB,CAAgB,EAAIJ,GAAWxd,EAAMrD,CAAO,EAC3D+iB,EAAgBP,EACZvB,IACF9gB,GAAa,KAEjB,SAAWkD,EAAK,SAAS,SAAW,GAAKsf,IAAa9lB,GAAU,CAC9D,IAAMoM,EAAQ5F,EAAK,SAAS,CAAC,EACvBuJ,EAAO3D,EAAM,KACbsa,EAAsB3W,IAAS,GAAKA,IAAS,EAC/C2W,GAAuB/Q,GAAgBvJ,EAAOjJ,CAAO,IAAM,IAC7DG,GAAa,GAEXojB,GAAuB3W,IAAS,EAClCmW,EAAgB9Z,EAEhB8Z,EAAgB1f,EAAK,QAEzB,MACE0f,EAAgB1f,EAAK,SAGrB4f,GAAoBA,EAAiB,SACvCD,EAAoBQ,GAA0BP,CAAgB,GAEhE5f,EAAK,YAActD,GACjBC,EACA2iB,EACAG,EACAC,EACA5iB,IAAc,EAAI,OAASA,EAC3B6iB,EACAE,EACA,CAAC,CAACC,EACF,GACA3iB,EACA6C,EAAK,GACP,CACF,EAEF,SAASuf,GAAqBvf,EAAMrD,EAASmD,EAAM,GAAO,CACxD,GAAI,CAAE,IAAAlD,CAAI,EAAIoD,EACRogB,EAAoBC,GAAezjB,CAAG,EACtC0jB,EAASpY,GACblI,EACA,KACA,GACA,EAEF,EACA,GAAIsgB,EACF,GAAIF,GAAqB9d,GACvB,yBACA3F,CACF,EAAG,CACD,IAAI8J,EAYJ,GAXI6Z,EAAO,OAAS,EAClB7Z,EAAM6Z,EAAO,OAASxiB,GAAuBwiB,EAAO,MAAM,QAAS,EAAI,GAEvE7Z,EAAM6Z,EAAO,IACR7Z,IACHA,EAAM3I,GAAuB,KAAM,GAAOwiB,EAAO,IAAI,GAAG,EAEtD7Z,EAAM6Z,EAAO,IAAMvI,GAAkBtR,EAAK9J,CAAO,IAInD8J,EACF,OAAOrI,GAAqBzB,EAAQ,OAAOtC,EAAyB,EAAG,CACrEoM,CACF,CAAC,CAEL,MAAW6Z,EAAO,OAAS,GAAKA,EAAO,MAAM,QAAQ,WAAW,MAAM,IACpE1jB,EAAM0jB,EAAO,MAAM,QAAQ,MAAM,CAAC,GAGtC,IAAMC,EAAUra,GAAgBtJ,CAAG,GAAKD,EAAQ,mBAAmBC,CAAG,EACtE,GAAI2jB,EACF,OAAKzgB,GAAKnD,EAAQ,OAAO4jB,CAAO,EACzBA,EAET,CACE,IAAMC,EAAYC,GAAsB7jB,EAAKD,CAAO,EACpD,GAAI6jB,EACF,OAAOA,EAET,IAAME,EAAW9jB,EAAI,QAAQ,GAAG,EAChC,GAAI8jB,EAAW,EAAG,CAChB,IAAM1T,EAAKyT,GAAsB7jB,EAAI,MAAM,EAAG8jB,CAAQ,EAAG/jB,CAAO,EAChE,GAAIqQ,EACF,OAAOA,EAAKpQ,EAAI,MAAM8jB,CAAQ,CAElC,CACF,CACA,OAAI/jB,EAAQ,UAAYzD,GAAO,WAAWA,GAAO,SAAS0D,CAAG,CAAC,IAAMD,EAAQ,UAC1EA,EAAQ,OAAOvC,EAAiB,EAChCuC,EAAQ,WAAW,IAAIC,EAAM,QAAQ,EAC9B0M,GAAe1M,EAAK,WAAW,IAExCD,EAAQ,OAAOvC,EAAiB,EAChCuC,EAAQ,WAAW,IAAIC,CAAG,EACnB0M,GAAe1M,EAAK,WAAW,EACxC,CACA,SAAS6jB,GAAsB9a,EAAMhJ,EAAS,CAC5C,IAAMgkB,EAAWhkB,EAAQ,gBACzB,GAAI,CAACgkB,GAAYA,EAAS,kBAAoB,GAC5C,OAEF,IAAMC,EAAY1nB,GAAO,SAASyM,CAAI,EAChCkb,EAAa3nB,GAAO,WAAW0nB,CAAS,EACxCE,EAAavX,GAAS,CAC1B,GAAIoX,EAAShb,CAAI,IAAM4D,EACrB,OAAO5D,EAET,GAAIgb,EAASC,CAAS,IAAMrX,EAC1B,OAAOqX,EAET,GAAID,EAASE,CAAU,IAAMtX,EAC3B,OAAOsX,CAEX,EACME,EAAYD,EAAU,aAAa,GAAKA,EAAU,sBAAsB,GAAKA,EAAU,eAAe,EAC5G,GAAIC,EACF,OAAOpkB,EAAQ,OAEbokB,EACE,UAAU,KAAK,UAAUA,CAAS,CAAC,IAEzC,IAAMC,EAAeF,EAAU,WAAW,GAAKA,EAAU,WAAW,GAAKA,EAAU,iBAAiB,EACpG,GAAIE,EACF,OAAOrkB,EAAQ,OAEb,GAAGA,EAAQ,aAAajB,EAAK,CAAC,IAAIslB,CAAY,IAC5C,UAAU,KAAK,UAAUA,CAAY,CAAC,IAE5C,IAAMC,EAAYH,EAAU,OAAO,EACnC,GAAIG,EACF,MAAO,GAAGtkB,EAAQ,aAAajB,EAAK,CAAC,IAAIiB,EAAQ,OAAS,UAAY,QAAQ,IAAI,KAAK,UAAUskB,CAAS,CAAC,IAE/G,CACA,SAASjB,GAAWhgB,EAAMrD,EAASE,EAAQmD,EAAK,MAAO7C,EAAaqiB,EAAoB1f,EAAM,GAAO,CACnG,GAAM,CAAE,IAAAlD,EAAK,IAAKskB,EAAY,SAAA1kB,CAAS,EAAIwD,EACvCtC,EAAa,CAAC,EACZyjB,EAAY,CAAC,EACbC,EAAoB,CAAC,EACrBC,EAAc7kB,EAAS,OAAS,EAClCsjB,EAAiB,GACjBhjB,EAAY,EACZwkB,EAAS,GACTC,EAAkB,GAClBC,EAAkB,GAClBC,EAA2B,GAC3BC,EAAiB,GACjBC,EAAe,GACb/B,EAAmB,CAAC,EACpBgC,EAAgBvZ,GAAQ,CACxB3K,EAAW,SACbyjB,EAAU,KACR1jB,GAAuBokB,GAAiBnkB,CAAU,EAAGwjB,CAAU,CACjE,EACAxjB,EAAa,CAAC,GAEZ2K,GAAK8Y,EAAU,KAAK9Y,CAAG,CAC7B,EACMyZ,EAAoB,IAAM,CAC1BnlB,EAAQ,OAAO,KAAO,GACxBe,EAAW,KACTC,GACEG,GAAuB,UAAW,EAAI,EACtCA,GAAuB,MAAM,CAC/B,CACF,CAEJ,EACMikB,EAAmB,CAAC,CAAE,IAAAnkB,EAAK,MAAAC,CAAM,IAAM,CAC3C,GAAIoI,GAAYrI,CAAG,EAAG,CACpB,IAAM+H,EAAO/H,EAAI,QACXokB,EAAiB9oB,GAAO,KAAKyM,CAAI,EAcvC,GAbIqc,IAAmB,CAAC7kB,GAAeqiB,IAEvC7Z,EAAK,YAAY,IAAM,WACvBA,IAAS,uBACT,CAACzM,GAAO,eAAeyM,CAAI,IACzB8b,EAA2B,IAEzBO,GAAkB9oB,GAAO,eAAeyM,CAAI,IAC9Cgc,EAAe,IAEbK,GAAkBnkB,EAAM,OAAS,KACnCA,EAAQA,EAAM,UAAU,CAAC,GAEvBA,EAAM,OAAS,KAAOA,EAAM,OAAS,GAAKA,EAAM,OAAS,IAAMsR,GAAgBtR,EAAOlB,CAAO,EAAI,EACnG,OAEEgJ,IAAS,MACX2b,EAAS,GACA3b,IAAS,QAClB4b,EAAkB,GACT5b,IAAS,QAClB6b,EAAkB,GACT7b,IAAS,OAAS,CAACia,EAAiB,SAASja,CAAI,GAC1Dia,EAAiB,KAAKja,CAAI,EAExBxI,IAAgBwI,IAAS,SAAWA,IAAS,UAAY,CAACia,EAAiB,SAASja,CAAI,GAC1Fia,EAAiB,KAAKja,CAAI,CAE9B,MACE+b,EAAiB,EAErB,EACA,QAAS7gB,EAAI,EAAGA,EAAIhE,EAAM,OAAQgE,IAAK,CACrC,IAAM4E,EAAO5I,EAAMgE,CAAC,EACpB,GAAI4E,EAAK,OAAS,EAAG,CACnB,GAAM,CAAE,IAAArI,EAAK,KAAAuI,EAAM,QAAAsc,GAAS,MAAApkB,EAAM,EAAI4H,EAClCzH,GAAW,GACf,GAAI2H,IAAS,QACX2b,EAAS,GACTQ,EAAkB,EACdjkB,IAASlB,EAAQ,QAAQ,CAC3B,IAAMulB,EAAUvlB,EAAQ,gBAAgBkB,GAAM,OAAO,GACjDqkB,IAAY,aAAeA,IAAY,aAAeA,IAAY,qBACpElkB,GAAW,GACXN,EAAW,KACTC,GACEG,GAAuB,UAAW,EAAI,EACtCA,GAAuBD,GAAM,QAAS,GAAMA,GAAM,GAAG,CACvD,CACF,EAEJ,CAEF,GAAI8H,IAAS,OAAS0a,GAAezjB,CAAG,GAAKiB,IAASA,GAAM,QAAQ,WAAW,MAAM,GAAKyE,GACxF,yBACA3F,CACF,GACE,SAEFe,EAAW,KACTC,GACEG,GAAuB6H,EAAM,GAAMsc,EAAO,EAC1CnkB,GACED,GAAQA,GAAM,QAAU,GACxBG,GACAH,GAAQA,GAAM,IAAMT,CACtB,CACF,CACF,CACF,KAAO,CACL,GAAM,CAAE,KAAAuI,EAAM,IAAA0C,EAAK,IAAA5B,GAAK,IAAArJ,GAAK,UAAAke,EAAU,EAAI7V,EACrC0c,EAAUxc,IAAS,OACnByc,GAAQzc,IAAS,KACvB,GAAIA,IAAS,OAAQ,CACdxI,GACHR,EAAQ,QACNsG,GAAoB,GAAI7F,EAAG,CAC7B,EAEF,QACF,CAUA,GATIuI,IAAS,QAAUA,IAAS,QAG5BA,IAAS,MAAQwc,GAAW/Z,GAAcC,EAAK,IAAI,IAAMgY,GAAezjB,CAAG,GAAK0F,GAClF,yBACA3F,CACF,IAGIylB,IAAStiB,EACX,SAaF,IATEqiB,GAAW/Z,GAAcC,EAAK,KAAK,GAEnC+Z,IAASf,GAAejZ,GAAcC,EAAK,mBAAmB,KAE9DyX,EAAiB,IAEfqC,GAAW/Z,GAAcC,EAAK,KAAK,GACrCyZ,EAAkB,EAEhB,CAACzZ,IAAQ8Z,GAAWC,IAAQ,CAE9B,GADAV,EAAiB,GACbjb,GACF,GAAI0b,EAAS,CAGT,GADAP,EAAa,EACTtf,GACF,+BACA3F,CACF,EAAG,CACDwkB,EAAU,QAAQ1a,EAAG,EACrB,QACF,CAEFqb,EAAkB,EAClBF,EAAa,EACbT,EAAU,KAAK1a,EAAG,CACpB,MACEmb,EAAa,CACX,KAAM,GACN,IAAAxkB,GACA,OAAQT,EAAQ,OAAOzB,EAAW,EAClC,UAAWiC,EAAc,CAACsJ,EAAG,EAAI,CAACA,GAAK,MAAM,CAC/C,CAAC,OAGH9J,EAAQ,QACNsG,GACEkf,EAAU,GAAK,GACf/kB,EACF,CACF,EAEF,QACF,CACI+kB,GAAW7G,GAAU,KAAMxP,IAAQA,GAAI,UAAY,MAAM,IAC3DhP,GAAa,IAEf,IAAMulB,GAAqB1lB,EAAQ,oBAAoBgJ,CAAI,EAC3D,GAAI0c,GAAoB,CACtB,GAAM,CAAE,MAAOC,GAAQ,YAAAC,EAAY,EAAIF,GAAmB5c,EAAMzF,EAAMrD,CAAO,EAC7E,CAACmD,GAAOwiB,GAAO,QAAQP,CAAgB,EACnCK,IAAS/Z,GAAO,CAACpC,GAAYoC,CAAG,EAClCuZ,EAAankB,GAAuB6kB,GAAQpB,CAAU,CAAC,EAEvDxjB,EAAW,KAAK,GAAG4kB,EAAM,EAEvBC,KACFnB,EAAkB,KAAK3b,CAAI,EACvBvM,GAAO,SAASqpB,EAAW,GAC7BnD,GAAmB,IAAI3Z,EAAM8c,EAAW,EAG9C,MAAYrpB,GAAO,mBAAmByM,CAAI,IACxCyb,EAAkB,KAAK3b,CAAI,EACvB4b,IACFvB,EAAiB,IAGvB,CACF,CACA,IAAI0C,EAqCJ,GApCIrB,EAAU,QACZS,EAAa,EACTT,EAAU,OAAS,EACrBqB,EAAkBpkB,GAChBzB,EAAQ,OAAO9B,EAAW,EAC1BsmB,EACAD,CACF,EAEAsB,EAAkBrB,EAAU,CAAC,GAEtBzjB,EAAW,SACpB8kB,EAAkB/kB,GAChBokB,GAAiBnkB,CAAU,EAC3BwjB,CACF,GAEEQ,EACF5kB,GAAa,IAETykB,GAAmB,CAACpkB,IACtBL,GAAa,GAEX0kB,GAAmB,CAACrkB,IACtBL,GAAa,GAEX8iB,EAAiB,SACnB9iB,GAAa,GAEX2kB,IACF3kB,GAAa,KAGb,CAACgjB,IAAmBhjB,IAAc,GAAKA,IAAc,MAAQwkB,GAAUK,GAAgBP,EAAkB,OAAS,KACpHtkB,GAAa,KAEX,CAACH,EAAQ,OAAS6lB,EACpB,OAAQA,EAAgB,KAAM,CAC5B,IAAK,IACH,IAAIC,EAAgB,GAChBC,EAAgB,GAChBC,EAAgB,GACpB,QAAS9hB,GAAI,EAAGA,GAAI2hB,EAAgB,WAAW,OAAQ3hB,KAAK,CAC1D,IAAMjD,GAAM4kB,EAAgB,WAAW3hB,EAAC,EAAE,IACtCoF,GAAYrI,EAAG,EACbA,GAAI,UAAY,QAClB6kB,EAAgB5hB,GACPjD,GAAI,UAAY,UACzB8kB,EAAgB7hB,IAERjD,GAAI,eACd+kB,EAAgB,GAEpB,CACA,IAAMC,EAAYJ,EAAgB,WAAWC,CAAa,EACpDI,GAAYL,EAAgB,WAAWE,CAAa,EACrDC,EAkBHH,EAAkBpkB,GAChBzB,EAAQ,OAAO3B,EAAe,EAC9B,CAACwnB,CAAe,CAClB,GApBII,GAAa,CAAC3c,GAAY2c,EAAU,KAAK,IAC3CA,EAAU,MAAQxkB,GAChBzB,EAAQ,OAAO7B,EAAe,EAC9B,CAAC8nB,EAAU,KAAK,CAClB,GAEEC,KAEHrB,GAAmBqB,GAAU,MAAM,OAAS,GAAKA,GAAU,MAAM,QAAQ,KAAK,EAAE,CAAC,IAAM,KAExFA,GAAU,MAAM,OAAS,MACvBA,GAAU,MAAQzkB,GAChBzB,EAAQ,OAAO5B,EAAe,EAC9B,CAAC8nB,GAAU,KAAK,CAClB,IAQJ,MACF,IAAK,IACH,MACF,QACEL,EAAkBpkB,GAChBzB,EAAQ,OAAO3B,EAAe,EAC9B,CACEoD,GAAqBzB,EAAQ,OAAO1B,EAAoB,EAAG,CACzDunB,CACF,CAAC,CACH,CACF,EACA,KACJ,CAEF,MAAO,CACL,MAAOA,EACP,WAAYpB,EACZ,UAAAtkB,EACA,iBAAA8iB,EACA,eAAAE,CACF,CACF,CACA,SAAS+B,GAAiBnkB,EAAY,CACpC,IAAMolB,EAA6B,IAAI,IACjCC,EAAU,CAAC,EACjB,QAASliB,EAAI,EAAGA,EAAInD,EAAW,OAAQmD,IAAK,CAC1C,IAAM4E,EAAO/H,EAAWmD,CAAC,EACzB,GAAI4E,EAAK,IAAI,OAAS,GAAK,CAACA,EAAK,IAAI,SAAU,CAC7Csd,EAAQ,KAAKtd,CAAI,EACjB,QACF,CACA,IAAME,EAAOF,EAAK,IAAI,QAChBud,EAAWF,EAAW,IAAInd,CAAI,EAChCqd,GACErd,IAAS,SAAWA,IAAS,SAAWzM,GAAO,KAAKyM,CAAI,IAC1Dsd,GAAaD,EAAUvd,CAAI,GAG7Bqd,EAAW,IAAInd,EAAMF,CAAI,EACzBsd,EAAQ,KAAKtd,CAAI,EAErB,CACA,OAAOsd,CACT,CACA,SAASE,GAAaD,EAAUE,EAAU,CACpCF,EAAS,MAAM,OAAS,GAC1BA,EAAS,MAAM,SAAS,KAAKE,EAAS,KAAK,EAE3CF,EAAS,MAAQzlB,GACf,CAACylB,EAAS,MAAOE,EAAS,KAAK,EAC/BF,EAAS,GACX,CAEJ,CACA,SAAS/C,GAAmB/R,EAAKvR,EAAS,CACxC,IAAMwmB,EAAU,CAAC,EACXC,EAAUhE,GAAmB,IAAIlR,CAAG,EAC1C,GAAIkV,EACFD,EAAQ,KAAKxmB,EAAQ,aAAaymB,CAAO,CAAC,MACrC,CACL,IAAM5C,EAAYC,GAAsB,KAAOvS,EAAI,KAAMvR,CAAO,EAC5D6jB,EACF2C,EAAQ,KAAK3C,CAAS,GAEtB7jB,EAAQ,OAAOrC,EAAiB,EAChCqC,EAAQ,WAAW,IAAIuR,EAAI,IAAI,EAC/BiV,EAAQ,KAAK7Z,GAAe4E,EAAI,KAAM,WAAW,CAAC,EAEtD,CACA,GAAM,CAAE,IAAA9Q,CAAI,EAAI8Q,EAQhB,GAPIA,EAAI,KAAKiV,EAAQ,KAAKjV,EAAI,GAAG,EAC7BA,EAAI,MACDA,EAAI,KACPiV,EAAQ,KAAK,QAAQ,EAEvBA,EAAQ,KAAKjV,EAAI,GAAG,GAElB,OAAO,KAAKA,EAAI,SAAS,EAAE,OAAQ,CAChCA,EAAI,MACFA,EAAI,KACPiV,EAAQ,KAAK,QAAQ,EAEvBA,EAAQ,KAAK,QAAQ,GAEvB,IAAME,EAAiBvlB,GAAuB,OAAQ,GAAOV,CAAG,EAChE+lB,EAAQ,KACN1lB,GACEyQ,EAAI,UAAU,IACXoV,GAAa3lB,GAAqB2lB,EAAUD,CAAc,CAC7D,EACAjmB,CACF,CACF,CACF,CACA,OAAOG,GAAsB4lB,EAASjV,EAAI,GAAG,CAC/C,CACA,SAASiS,GAA0BtjB,EAAO,CACxC,IAAI0mB,EAAmB,IACvB,QAAS1iB,EAAI,EAAG+W,EAAI/a,EAAM,OAAQgE,EAAI+W,EAAG/W,IACvC0iB,GAAoB,KAAK,UAAU1mB,EAAMgE,CAAC,CAAC,EACvCA,EAAI+W,EAAI,IAAG2L,GAAoB,MAErC,OAAOA,EAAmB,GAC5B,CACA,SAASlD,GAAezjB,EAAK,CAC3B,OAAOA,IAAQ,aAAeA,IAAQ,WACxC,CAEA,IAAM4mB,GAAsB,CAACxjB,EAAMrD,IAAY,CAC7C,GAAIgM,GAAa3I,CAAI,EAAG,CACtB,GAAM,CAAE,SAAAxD,EAAU,IAAAY,CAAI,EAAI4C,EACpB,CAAE,SAAA8P,EAAU,UAAAqN,CAAU,EAAIsG,GAAkBzjB,EAAMrD,CAAO,EACzD+mB,EAAW,CACf/mB,EAAQ,kBAAoB,cAAgB,SAC5CmT,EACA,KACA,YACA,MACF,EACI6T,EAAc,EACdxG,IACFuG,EAAS,CAAC,EAAIvG,EACdwG,EAAc,GAEZnnB,EAAS,SACXknB,EAAS,CAAC,EAAInlB,GAAyB,CAAC,EAAG/B,EAAU,GAAO,GAAOY,CAAG,EACtEumB,EAAc,GAEZhnB,EAAQ,SAAW,CAACA,EAAQ,UAC9BgnB,EAAc,GAEhBD,EAAS,OAAOC,CAAW,EAC3B3jB,EAAK,YAAc5B,GACjBzB,EAAQ,OAAOjC,EAAW,EAC1BgpB,EACAtmB,CACF,CACF,CACF,EACA,SAASqmB,GAAkBzjB,EAAMrD,EAAS,CACxC,IAAImT,EAAW,YACXqN,EACEyG,EAAe,CAAC,EACtB,QAAS/iB,EAAI,EAAGA,EAAIb,EAAK,MAAM,OAAQa,IAAK,CAC1C,IAAMiE,EAAI9E,EAAK,MAAMa,CAAC,EACtB,GAAIiE,EAAE,OAAS,EACTA,EAAE,QACAA,EAAE,OAAS,OACbgL,EAAW,KAAK,UAAUhL,EAAE,MAAM,OAAO,GAEzCA,EAAE,KAAO5L,GAAO,SAAS4L,EAAE,IAAI,EAC/B8e,EAAa,KAAK9e,CAAC,YAInBA,EAAE,OAAS,QAAUsD,GAActD,EAAE,IAAK,MAAM,GAClD,GAAIA,EAAE,IACJgL,EAAWhL,EAAE,YACJA,EAAE,KAAOA,EAAE,IAAI,OAAS,EAAG,CACpC,IAAMa,EAAOzM,GAAO,SAAS4L,EAAE,IAAI,OAAO,EAC1CgL,EAAWhL,EAAE,IAAMhH,GAAuB6H,EAAM,GAAOb,EAAE,IAAI,GAAG,EAE9DgL,EAAWhL,EAAE,IAAMiT,GAAkBjT,EAAE,IAAKnI,CAAO,CAEvD,OAEImI,EAAE,OAAS,QAAUA,EAAE,KAAOmB,GAAYnB,EAAE,GAAG,IACjDA,EAAE,IAAI,QAAU5L,GAAO,SAAS4L,EAAE,IAAI,OAAO,GAE/C8e,EAAa,KAAK9e,CAAC,CAGzB,CACA,GAAI8e,EAAa,OAAS,EAAG,CAC3B,GAAM,CAAE,MAAA/mB,EAAO,WAAAG,CAAW,EAAIgjB,GAC5BhgB,EACArD,EACAinB,EACA,GACA,EACF,EACAzG,EAAYtgB,EACRG,EAAW,QACbL,EAAQ,QACNsG,GACE,GACAjG,EAAW,CAAC,EAAE,GAChB,CACF,CAEJ,CACA,MAAO,CACL,SAAA8S,EACA,UAAAqN,CACF,CACF,CAEA,IAAM0G,GAAc,CAAC3V,EAAKlO,EAAMrD,EAASmnB,IAAc,CACrD,GAAM,CAAE,IAAA1mB,EAAK,UAAAke,EAAW,IAAAjT,CAAI,EAAI6F,EAC5B,CAACA,EAAI,KAAO,CAACoN,EAAU,QACzB3e,EAAQ,QAAQsG,GAAoB,GAAI7F,CAAG,CAAC,EAE9C,IAAI2mB,EACJ,GAAI1b,EAAI,OAAS,EACf,GAAIA,EAAI,SAAU,CAChB,IAAI2b,EAAU3b,EAAI,QACd2b,EAAQ,WAAW,MAAM,IAC3BA,EAAU,SAASA,EAAQ,MAAM,CAAC,CAAC,IAErC,IAAMC,EAAcjkB,EAAK,UAAY,GAAKgkB,EAAQ,WAAW,OAAO,GAAK,CAAC,QAAQ,KAAKA,CAAO,EAG5F9qB,GAAO,aAAaA,GAAO,SAAS8qB,CAAO,CAAC,EAI5C,MAAMA,CAAO,GAEfD,EAAYjmB,GAAuBmmB,EAAa,GAAM5b,EAAI,GAAG,CAC/D,MACE0b,EAAY5lB,GAAyB,CACnC,GAAGxB,EAAQ,aAAatB,EAAc,CAAC,IACvCgN,EACA,GACF,CAAC,OAGH0b,EAAY1b,EACZ0b,EAAU,SAAS,QAAQ,GAAGpnB,EAAQ,aAAatB,EAAc,CAAC,GAAG,EACrE0oB,EAAU,SAAS,KAAK,GAAG,EAE7B,IAAItd,EAAMyH,EAAI,IACVzH,GAAO,CAACA,EAAI,QAAQ,KAAK,IAC3BA,EAAM,QAER,IAAIyd,EAAcvnB,EAAQ,eAAiB,CAAC8J,GAAO,CAAC9J,EAAQ,QAC5D,GAAI8J,EAAK,CACP,IAAM0d,EAAchd,GAAmBV,EAAK9J,CAAO,EAC7CynB,EAAoB,EAAED,GAAe5c,GAAed,EAAK9J,CAAO,GAChE0nB,EAAwB5d,EAAI,QAAQ,SAAS,GAAG,EAClD9J,EAAQ,oBACVynB,GAAqBznB,EAAQ,eAAe,QAAQ,EACpD8J,EAAMyH,EAAI,IAAM6J,GACdtR,EACA9J,EACA,GACA0nB,CACF,EACAD,GAAqBznB,EAAQ,kBAAkB,QAAQ,EACvDunB,EAAcvnB,EAAQ,eACtB,CAACA,EAAQ,SAET,EAAE8J,EAAI,OAAS,GAAKA,EAAI,UAAY,IAKpC,EAAE0d,GAAenkB,EAAK,UAAY,IAElC,CAAC0J,GAAYjD,EAAK9J,EAAQ,WAAW,EACjCunB,GAAeC,IACb1d,EAAI,OAAS,EACfA,EAAI,QAAU,GAAGA,EAAI,OAAO,OAAOA,EAAI,OAAO,YAE9CA,EAAI,SAAW,CAAC,GAAGA,EAAI,SAAU,OAAQ,GAAGA,EAAI,SAAU,WAAW,KAIvE2d,GAAqBF,GAAeC,KACtC1d,EAAMtI,GAAyB,CAC7B,GAAGimB,EAAoBznB,EAAQ,KAAO,gBAAkB,SAAW,GAAGA,EAAQ,KAAO;AAAA;AAAA,EAEzF,EAAE,WAAW,OAAO0nB,EAAwB,IAAM,GAAG,GACjD5d,EACA4d,EAAwB,IAAM,GAChC,CAAC,EAEL,CACA,IAAIzjB,EAAM,CACR,MAAO,CACLjD,GACEomB,EACAtd,GAAO3I,GAAuB,WAAY,GAAOV,CAAG,CACtD,CACF,CACF,EACA,OAAI0mB,IACFljB,EAAMkjB,EAAUljB,CAAG,GAEjBsjB,IACFtjB,EAAI,MAAM,CAAC,EAAE,MAAQjE,EAAQ,MAAMiE,EAAI,MAAM,CAAC,EAAE,KAAK,GAEvDA,EAAI,MAAM,QAASkE,GAAMA,EAAE,IAAI,aAAe,EAAI,EAC3ClE,CACT,EAEM0jB,GAAgB,CAACtkB,EAAMrD,IAAY,CACvC,GAAIqD,EAAK,OAAS,GAAKA,EAAK,OAAS,GAAKA,EAAK,OAAS,IAAMA,EAAK,OAAS,GAC1E,MAAO,IAAM,CACX,IAAMxD,EAAWwD,EAAK,SAClBukB,EACAC,EAAU,GACd,QAAS3jB,EAAI,EAAGA,EAAIrE,EAAS,OAAQqE,IAAK,CACxC,IAAM+E,EAAQpJ,EAASqE,CAAC,EACxB,GAAI0H,GAAS3C,CAAK,EAAG,CACnB4e,EAAU,GACV,QAASjZ,EAAI1K,EAAI,EAAG0K,EAAI/O,EAAS,OAAQ+O,IAAK,CAC5C,IAAMuC,EAAOtR,EAAS+O,CAAC,EACvB,GAAIhD,GAASuF,CAAI,EACVyW,IACHA,EAAmB/nB,EAASqE,CAAC,EAAI1C,GAC/B,CAACyH,CAAK,EACNA,EAAM,GACR,GAEF2e,EAAiB,SAAS,KAAK,MAAOzW,CAAI,EAC1CtR,EAAS,OAAO+O,EAAG,CAAC,EACpBA,QACK,CACLgZ,EAAmB,OACnB,KACF,CACF,CACF,CACF,CACA,GAAI,GAACC,GAILhoB,EAAS,SAAW,IAAMwD,EAAK,OAAS,GAAKA,EAAK,OAAS,GAAKA,EAAK,UAAY,GAKjF,CAACA,EAAK,MAAM,KACT8E,GAAMA,EAAE,OAAS,GAAK,CAACnI,EAAQ,oBAAoBmI,EAAE,IAAI,CAC5D,GAGE9E,EAAK,MAAQ,aAGf,QAASa,EAAI,EAAGA,EAAIrE,EAAS,OAAQqE,IAAK,CACxC,IAAM+E,EAAQpJ,EAASqE,CAAC,EACxB,GAAI0H,GAAS3C,CAAK,GAAKA,EAAM,OAAS,EAAG,CACvC,IAAM6e,EAAW,CAAC,GACd7e,EAAM,OAAS,GAAKA,EAAM,UAAY,MACxC6e,EAAS,KAAK7e,CAAK,EAEjB,CAACjJ,EAAQ,KAAOwS,GAAgBvJ,EAAOjJ,CAAO,IAAM,GACtD8nB,EAAS,KACP,GACF,EAEFjoB,EAASqE,CAAC,EAAI,CACZ,KAAM,GACN,QAAS+E,EACT,IAAKA,EAAM,IACX,YAAaxH,GACXzB,EAAQ,OAAOzC,EAAW,EAC1BuqB,CACF,CACF,CACF,CACF,CACF,CAEJ,EAEMC,GAAyB,IAAI,QAC7BC,GAAgB,CAAC3kB,EAAMrD,IAAY,CACvC,GAAIqD,EAAK,OAAS,GAAKgI,GAAQhI,EAAM,OAAQ,EAAI,EAC/C,OAAI0kB,GAAO,IAAI1kB,CAAI,GAAKrD,EAAQ,SAAWA,EAAQ,MACjD,QAEF+nB,GAAO,IAAI1kB,CAAI,EACfrD,EAAQ,QAAU,GAClBA,EAAQ,OAAOrB,EAAkB,EAC1B,IAAM,CACXqB,EAAQ,QAAU,GAClB,IAAMioB,EAAMjoB,EAAQ,YAChBioB,EAAI,cACNA,EAAI,YAAcjoB,EAAQ,MACxBioB,EAAI,YACJ,GACA,EACF,EAEJ,EAEJ,EAEMC,GAAiB,CAAC3W,EAAKlO,EAAMrD,IAAY,CAC7C,GAAM,CAAE,IAAA8J,EAAK,IAAA4B,CAAI,EAAI6F,EACrB,GAAI,CAACzH,EACH,OAAA9J,EAAQ,QACNsG,GAAoB,GAAIiL,EAAI,GAAG,CACjC,EACO4W,GAAqB,EAE9B,IAAM9L,EAASvS,EAAI,IAAI,OAAO,KAAK,EAC7Bse,EAAYte,EAAI,OAAS,EAAIA,EAAI,QAAUuS,EAC3CgM,EAAcroB,EAAQ,gBAAgBqc,CAAM,EAClD,GAAIgM,IAAgB,SAAWA,IAAgB,gBAC7C,OAAAroB,EAAQ,QAAQsG,GAAoB,GAAIwD,EAAI,GAAG,CAAC,EACzCqe,GAAqB,EAE9B,IAAMG,EAAWtoB,EAAQ,SAAWqoB,IAAgB,aAAeA,IAAgB,aAAeA,IAAgB,mBAClH,GAAI,CAACD,EAAU,KAAK,GAAK,CAAC5d,GAAmBV,EAAK9J,CAAO,GAAK,CAACsoB,EAC7D,OAAAtoB,EAAQ,QACNsG,GAAoB,GAAIwD,EAAI,GAAG,CACjC,EACOqe,GAAqB,EAE9B,GAAInoB,EAAQ,mBAAqByJ,GAAmB2e,CAAS,GAAKpoB,EAAQ,YAAYooB,CAAS,EAC7F,OAAApoB,EAAQ,QACNsG,GAAoB,GAAIwD,EAAI,GAAG,CACjC,EACOqe,GAAqB,EAE9B,IAAMrJ,EAAWpT,GAAYvK,GAAuB,aAAc,EAAI,EAChEimB,EAAY1b,EAAMpC,GAAYoC,CAAG,EAAI,YAAYnP,GAAO,SAASmP,EAAI,OAAO,CAAC,GAAKlK,GAAyB,CAAC,iBAAkBkK,CAAG,CAAC,EAAI,sBACxI6c,EACEC,EAAWxoB,EAAQ,KAAO,gBAAkB,SAClD,GAAIsoB,EACF,GAAID,IAAgB,YAClBE,EAAgB/mB,GAAyB,CACvC,GAAGgnB,CAAQ,SACXrnB,GAAuBkb,EAAQ,GAAOvS,EAAI,GAAG,EAC7C,mBACF,CAAC,MACI,CACL,IAAM2e,EAAgBJ,IAAgB,YAAc,GAAGhM,CAAM,YAAc,OAC3EkM,EAAgB/mB,GAAyB,CACvC,GAAGgnB,CAAQ,QAAQxoB,EAAQ,aAAahB,EAAM,CAAC,IAAIqd,CAAM,QACzDlb,GAAuBkb,EAAQ,GAAOvS,EAAI,GAAG,EAC7C,sBAAsB2e,CAAa,GACrC,CAAC,CACH,MAEAF,EAAgB/mB,GAAyB,CACvC,GAAGgnB,CAAQ,SACX1e,EACA,aACF,CAAC,EAEH,IAAM5J,EAAQ,CAEZc,GAAqB8d,EAAUvN,EAAI,GAAG,EAEtCvQ,GAAqBomB,EAAWmB,CAAa,CAC/C,EAIA,GAHIvoB,EAAQ,mBAAqB,CAACA,EAAQ,SAAWA,EAAQ,eAAiB,CAAC+M,GAAYjD,EAAK9J,EAAQ,WAAW,IACjHE,EAAM,CAAC,EAAE,MAAQF,EAAQ,MAAME,EAAM,CAAC,EAAE,KAAK,GAE3CqR,EAAI,UAAU,QAAUlO,EAAK,UAAY,EAAG,CAC9C,IAAMsb,EAAYpN,EAAI,UAAU,IAAKmX,GAAMA,EAAE,OAAO,EAAE,IAAKA,IAAOjf,GAAmBif,CAAC,EAAIA,EAAI,KAAK,UAAUA,CAAC,GAAK,QAAQ,EAAE,KAAK,IAAI,EAChIC,EAAejd,EAAMpC,GAAYoC,CAAG,EAAI,GAAGA,EAAI,OAAO,YAAclK,GAAyB,CAACkK,EAAK,gBAAgB,CAAC,EAAI,iBAC9HxL,EAAM,KACJc,GACE2nB,EACAxnB,GACE,KAAKwd,CAAS,KACd,GACApN,EAAI,IACJ,CACF,CACF,CACF,CACF,CACA,OAAO4W,GAAqBjoB,CAAK,CACnC,EACA,SAASioB,GAAqBjoB,EAAQ,CAAC,EAAG,CACxC,MAAO,CAAE,MAAAA,CAAM,CACjB,CAEA,IAAM0oB,GAAsB,gBACtBC,GAAkB,CAACxlB,EAAMrD,IAAY,CACpC2F,GAAgB,mBAAoB3F,CAAO,IAG5CqD,EAAK,OAAS,EAChBylB,GAAczlB,EAAK,QAASrD,CAAO,EAC1BqD,EAAK,OAAS,GACvBA,EAAK,MAAM,QAASyF,GAAS,CACvBA,EAAK,OAAS,GAAKA,EAAK,OAAS,OAASA,EAAK,KACjDggB,GAAchgB,EAAK,IAAK9I,CAAO,CAEnC,CAAC,EAEL,EACA,SAAS8oB,GAAczlB,EAAMrD,EAAS,CACpC,GAAIqD,EAAK,OAAS,EAChB0lB,GAAY1lB,EAAMrD,CAAO,MAEzB,SAASkE,EAAI,EAAGA,EAAIb,EAAK,SAAS,OAAQa,IAAK,CAC7C,IAAM+E,EAAQ5F,EAAK,SAASa,CAAC,EACzB,OAAO+E,GAAU,WACjBA,EAAM,OAAS,EACjB8f,GAAY9f,EAAOjJ,CAAO,EACjBiJ,EAAM,OAAS,EACxB6f,GAAczlB,EAAMrD,CAAO,EAClBiJ,EAAM,OAAS,GACxB6f,GAAc7f,EAAM,QAASjJ,CAAO,EAExC,CAEJ,CACA,SAAS+oB,GAAY1lB,EAAMrD,EAAS,CAClC,IAAM8J,EAAMzG,EAAK,QACb2lB,EAAW,GACXC,EAAW,GACXC,EAAmB,GACnBC,EAAU,GACVC,EAAQ,EACRC,EAAS,EACTC,EAAQ,EACRC,EAAkB,EAClB3lB,EAAGsN,EAAMhN,EAAGslB,EAAYC,EAAU,CAAC,EACvC,IAAKvlB,EAAI,EAAGA,EAAI4F,EAAI,OAAQ5F,IAG1B,GAFAgN,EAAOtN,EACPA,EAAIkG,EAAI,WAAW5F,CAAC,EAChB8kB,EACEplB,IAAM,IAAMsN,IAAS,KAAI8X,EAAW,YAC/BC,EACLrlB,IAAM,IAAMsN,IAAS,KAAI+X,EAAW,YAC/BC,EACLtlB,IAAM,IAAMsN,IAAS,KAAIgY,EAAmB,YACvCC,EACLvlB,IAAM,IAAMsN,IAAS,KAAIiY,EAAU,YAC9BvlB,IAAM,KACjBkG,EAAI,WAAW5F,EAAI,CAAC,IAAM,KAAO4F,EAAI,WAAW5F,EAAI,CAAC,IAAM,KAAO,CAACklB,GAAS,CAACC,GAAU,CAACC,EAClFE,IAAe,QACjBD,EAAkBrlB,EAAI,EACtBslB,EAAa1f,EAAI,MAAM,EAAG5F,CAAC,EAAE,KAAK,GAElCwlB,EAAW,MAER,CACL,OAAQ9lB,EAAG,CACT,IAAK,IACHqlB,EAAW,GACX,MAEF,IAAK,IACHD,EAAW,GACX,MAEF,IAAK,IACHE,EAAmB,GACnB,MAEF,IAAK,IACHI,IACA,MAEF,IAAK,IACHA,IACA,MAEF,IAAK,IACHD,IACA,MAEF,IAAK,IACHA,IACA,MAEF,IAAK,KACHD,IACA,MAEF,IAAK,KACHA,IACA,KACJ,CACA,GAAIxlB,IAAM,GAAI,CACZ,IAAIgL,EAAI1K,EAAI,EACRiE,EACJ,KAAOyG,GAAK,IACVzG,EAAI2B,EAAI,OAAO8E,CAAC,EACZzG,IAAM,KAFGyG,IAEb,EAEE,CAACzG,GAAK,CAACygB,GAAoB,KAAKzgB,CAAC,KACnCghB,EAAU,GAEd,CACF,CAEEK,IAAe,OACjBA,EAAa1f,EAAI,MAAM,EAAG5F,CAAC,EAAE,KAAK,EACzBqlB,IAAoB,GAC7BG,EAAW,EAEb,SAASA,GAAa,CACpBD,EAAQ,KAAK3f,EAAI,MAAMyf,EAAiBrlB,CAAC,EAAE,KAAK,CAAC,EACjDqlB,EAAkBrlB,EAAI,CACxB,CACA,GAAIulB,EAAQ,OAAQ,CAClB,IAAKvlB,EAAI,EAAGA,EAAIulB,EAAQ,OAAQvlB,IAC9BslB,EAAaG,GAAWH,EAAYC,EAAQvlB,CAAC,EAAGlE,CAAO,EAEzDqD,EAAK,QAAUmmB,EACfnmB,EAAK,IAAM,MACb,CACF,CACA,SAASsmB,GAAW7f,EAAK8f,EAAQ5pB,EAAS,CACxCA,EAAQ,OAAOpC,EAAc,EAC7B,IAAMsG,EAAI0lB,EAAO,QAAQ,GAAG,EAC5B,GAAI1lB,EAAI,EACN,OAAAlE,EAAQ,QAAQ,IAAI4pB,CAAM,EACnB,GAAGjd,GAAeid,EAAQ,QAAQ,CAAC,IAAI9f,CAAG,IAC5C,CACL,IAAMd,EAAO4gB,EAAO,MAAM,EAAG1lB,CAAC,EACxBvC,EAAOioB,EAAO,MAAM1lB,EAAI,CAAC,EAC/B,OAAAlE,EAAQ,QAAQ,IAAIgJ,CAAI,EACjB,GAAG2D,GAAe3D,EAAM,QAAQ,CAAC,IAAIc,CAAG,GAAGnI,IAAS,IAAM,IAAMA,EAAOA,CAAI,EACpF,CACF,CAEA,IAAMkoB,GAAuB,IAAI,QAC3BC,GAAgB,CAACzmB,EAAMrD,IAAY,CACvC,GAAIqD,EAAK,OAAS,EAAG,CACnB,IAAMkO,EAAMlG,GAAQhI,EAAM,MAAM,EAChC,MAAI,CAACkO,GAAOsY,GAAK,IAAIxmB,CAAI,EACvB,QAEFwmB,GAAK,IAAIxmB,CAAI,EACN,IAAM,CACX,IAAMoP,EAAcpP,EAAK,aAAerD,EAAQ,YAAY,YACxDyS,GAAeA,EAAY,OAAS,KAClCpP,EAAK,UAAY,GACnBD,GAAeqP,EAAazS,CAAO,EAErCqD,EAAK,YAAc5B,GAAqBzB,EAAQ,OAAOf,EAAS,EAAG,CACjEsS,EAAI,IACJ3P,GAAyB,OAAQ6Q,CAAW,EAC5C,SACA,OAAOzS,EAAQ,OAAO,MAAM,CAC9B,CAAC,EACDA,EAAQ,OAAO,KAAK,IAAI,EAE5B,EACF,CACF,EAEA,SAAS+pB,GAAuB7V,EAAmB,CACjD,MAAO,CACL,CACE8T,GACA5K,GACA0M,GACA/K,GACI8J,GACJ,GAAG3U,EAAoB,CAErBuM,GACAtF,EACF,EAAI,CAAC,EACL0L,GACAnE,GACApC,GACAqH,EACF,EACA,CACE,GAAIT,GACJ,KAAMzI,GACN,MAAOyJ,EACT,CACF,CACF,CACA,SAAS8B,GAAYlqB,EAAQ6R,EAAU,CAAC,EAAG,CACzC,IAAMuD,EAAUvD,EAAQ,SAAWxL,GAC7B8jB,EAAetY,EAAQ,OAAS,SAChCuC,EAAoBvC,EAAQ,oBAAsB,IAAQsY,EAC5D,CAAC/V,GAAqBvC,EAAQ,eAChCuD,EAAQ5O,GAAoB,EAAE,CAAC,EAE7BqL,EAAQ,SAAW,CAACsY,GACtB/U,EAAQ5O,GAAoB,EAAE,CAAC,EAEjC,IAAM4jB,EAAkB3tB,GAAO,OAAO,CAAC,EAAGoV,EAAS,CACjD,kBAAAuC,CACF,CAAC,EACK4C,EAAMva,GAAO,SAASuD,CAAM,EAAIgS,GAAUhS,EAAQoqB,CAAe,EAAIpqB,EACrE,CAACwU,EAAgBC,CAAmB,EAAIwV,GAAuB7V,CAAiB,EACtF,GAAIvC,EAAQ,KAAM,CAChB,GAAM,CAAE,kBAAAgD,CAAkB,EAAIhD,GAC1B,CAACgD,GAAqB,CAACA,EAAkB,SAAS,YAAY,KAChEhD,EAAQ,kBAAoB,CAAC,GAAGgD,GAAqB,CAAC,EAAG,YAAY,EAEzE,CACA,OAAAoB,GACEe,EACAva,GAAO,OAAO,CAAC,EAAG2tB,EAAiB,CACjC,eAAgB,CACd,GAAG5V,EACH,GAAG3C,EAAQ,gBAAkB,CAAC,CAEhC,EACA,oBAAqBpV,GAAO,OAC1B,CAAC,EACDgY,EACA5C,EAAQ,qBAAuB,CAAC,CAElC,CACF,CAAC,CACH,EACO6F,GAASV,EAAKoT,CAAe,CACtC,CAEA,IAAMC,GAAe,CACnB,KAAQ,OACR,MAAS,QACT,cAAiB,gBACjB,UAAa,YACb,YAAe,cACf,qBAAwB,uBACxB,gBAAmB,kBACnB,UAAa,YACb,QAAW,UACX,cAAiB,eACnB,EAEMC,GAAyB,KAAO,CAAE,MAAO,CAAC,CAAE,GAElD9tB,EAAQ,kBAAoBC,GAAO,kBACnCD,EAAQ,gBAAkBU,GAC1BV,EAAQ,aAAe6tB,GACvB7tB,EAAQ,SAAWkC,GACnBlC,EAAQ,WAAamC,GACrBnC,EAAQ,aAAeY,GACvBZ,EAAQ,eAAiBgB,GACzBhB,EAAQ,qBAAuBa,GAC/Bb,EAAQ,qBAAuBe,GAC/Bf,EAAQ,aAAe0B,GACvB1B,EAAQ,cAAgBkB,GACxBlB,EAAQ,YAAciB,GACtBjB,EAAQ,aAAec,GACvBd,EAAQ,yBAA2BiJ,GACnCjJ,EAAQ,cAAgBoD,GACxBpD,EAAQ,aAAemD,GACvBnD,EAAQ,WAAaqK,GACrBrK,EAAQ,SAAWM,GACnBN,EAAQ,qBAAuBgC,GAC/BhC,EAAQ,aAAe4C,GACvB5C,EAAQ,OAAS0C,GACjB1C,EAAQ,WAAaS,GACrBT,EAAQ,YAAc4B,GACtB5B,EAAQ,gBAAkB6B,GAC1B7B,EAAQ,gBAAkB+B,GAC1B/B,EAAQ,gBAAkB8B,GAC1B9B,EAAQ,WAAaiD,GACrBjD,EAAQ,UAAYkD,GACpBlD,EAAQ,WAAaW,GACrBX,EAAQ,aAAeuC,GACvBvC,EAAQ,cAAgBsC,GACxBtC,EAAQ,YAAcwB,GACtBxB,EAAQ,YAAcyB,GACtBzB,EAAQ,kBAAoBmB,GAC5BnB,EAAQ,kBAAoBqB,GAC5BrB,EAAQ,0BAA4BoB,GACpCpB,EAAQ,eAAiBsB,GACzBtB,EAAQ,mBAAqBqC,GAC7BrC,EAAQ,SAAWQ,GACnBR,EAAQ,SAAWO,GACnBP,EAAQ,kBAAoB2B,GAC5B3B,EAAQ,YAAciC,GACtBjC,EAAQ,eAAiBoC,GACzBpC,EAAQ,cAAgB8K,GACxB9K,EAAQ,MAAQyC,GAChBzC,EAAQ,SAAWwC,GACnBxC,EAAQ,gBAAkBuB,GAC1BvB,EAAQ,UAAY2C,GACpB3C,EAAQ,yBAA2BuO,GACnCvO,EAAQ,4BAA8B0O,GACtC1O,EAAQ,OAAS6O,GACjB7O,EAAQ,YAAc0tB,GACtB1tB,EAAQ,UAAYwV,GACpBxV,EAAQ,mBAAqBgnB,GAC7BhnB,EAAQ,WAAa+mB,GACrB/mB,EAAQ,WAAaukB,GACrBvkB,EAAQ,mBAAqBuJ,GAC7BvJ,EAAQ,eAAiB8G,GACzB9G,EAAQ,sBAAwBsE,GAChCtE,EAAQ,2BAA6BuG,GACrCvG,EAAQ,qBAAuBmG,GAC/BnG,EAAQ,sBAAwB+F,GAChC/F,EAAQ,qBAAuBmF,GAC/BnF,EAAQ,oBAAsBgK,GAC9BhK,EAAQ,yBAA2BkF,GACnClF,EAAQ,4BAA8B2F,GACtC3F,EAAQ,oBAAsBujB,GAC9BvjB,EAAQ,yBAA2BsF,GACnCtF,EAAQ,kBAAoBsG,GAC5BtG,EAAQ,oBAAsBiF,GAC9BjF,EAAQ,uBAAyBwE,GACjCxE,EAAQ,qBAAuB0E,GAC/B1E,EAAQ,sBAAwB4G,GAChC5G,EAAQ,WAAasD,GACrBtD,EAAQ,yBAA2B0G,GACnC1G,EAAQ,uBAAyB6E,GACjC7E,EAAQ,mCAAqCia,GAC7Cja,EAAQ,sBAAwBqG,GAChCrG,EAAQ,uBAAyB0X,GACjC1X,EAAQ,gBAAkByD,GAC1BzD,EAAQ,cAAgBoK,GACxBpK,EAAQ,mBAAqBwL,GAC7BxL,EAAQ,QAAU+O,GAClB/O,EAAQ,SAAWiP,GACnBjP,EAAQ,WAAa6Q,GACrB7Q,EAAQ,SAAWkb,GACnBlb,EAAQ,uBAAyBytB,GACjCztB,EAAQ,gBAAkBkW,GAC1BlW,EAAQ,mBAAqB4Q,GAC7B5Q,EAAQ,oBAAsBoE,GAC9BpE,EAAQ,eAAiBqE,GACzBrE,EAAQ,mBAAqBqP,GAC7BrP,EAAQ,YAAcyQ,GACtBzQ,EAAQ,cAAgB6C,GACxB7C,EAAQ,WAAa8P,GACrB9P,EAAQ,gBAAkBiN,GAC1BjN,EAAQ,eAAiBsO,GACzBtO,EAAQ,sBAAwBoO,GAChCpO,EAAQ,mBAAqBqO,GAC7BrO,EAAQ,eAAiBkL,GACzBlL,EAAQ,0BAA4B4L,GACpC5L,EAAQ,kBAAoB8L,GAC5B9L,EAAQ,mBAAqBkO,GAC7BlO,EAAQ,0BAA4ByN,GACpCzN,EAAQ,uBAAyBiO,GACjCjO,EAAQ,uBAAyBiL,GACjCjL,EAAQ,mBAAqBmN,GAC7BnN,EAAQ,aAAe0P,GACvB1P,EAAQ,cAAgBmP,GACxBnP,EAAQ,YAAcgN,GACtBhN,EAAQ,iBAAmB4M,GAC3B5M,EAAQ,oBAAsB6M,GAC9B7M,EAAQ,eAAiByP,GACzBzP,EAAQ,OAASsP,GACjBtP,EAAQ,OAASuP,GACjBvP,EAAQ,QAAUwP,GAClBxP,EAAQ,QAAUqD,GAClBrD,EAAQ,uBAAyB8tB,GACjC9tB,EAAQ,kBAAoB8e,GAC5B9e,EAAQ,WAAa0iB,GACrB1iB,EAAQ,UAAY+gB,GACpB/gB,EAAQ,kBAAoBwqB,GAC5BxqB,EAAQ,uBAAyB8C,GACjC9C,EAAQ,qBAAuBsmB,GAC/BtmB,EAAQ,oBAAsBigB,GAC9BjgB,EAAQ,eAAiBqQ,GACzBrQ,EAAQ,gBAAkBgkB,GAC1BhkB,EAAQ,oBAAsBmkB,GAC9BnkB,EAAQ,UAAYyZ,GACpBzZ,EAAQ,cAAgBmiB,GACxBniB,EAAQ,iBAAmBomB,GAC3BpmB,EAAQ,oBAAsB6e,GAC9B7e,EAAQ,eAAiB4rB,GACzB5rB,EAAQ,YAAc4qB,GACtB5qB,EAAQ,aAAe0Z,GACvB1Z,EAAQ,aAAe+M,GACvB/M,EAAQ,sBAAwBuL,GAChCvL,EAAQ,mBAAqBqL,GAC7BrL,EAAQ,gBAAkBsK,GAC1BtK,EAAQ,gBAAkBwJ,KC7jN1B,IAAAukB,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAGEA,GAAO,QAAU,OCHnB,IAAAC,GAAAC,GAAAC,IAAA,cAOA,OAAO,eAAeA,GAAS,aAAc,CAAE,MAAO,EAAK,CAAC,EAE5D,IAAIC,GAAe,KACfC,GAAS,KAEPC,GAAgB,OAAO,EAAE,EACzBC,GAAmB,OACvB,EACF,EACMC,GAAe,OAAO,EAAE,EACxBC,GAAiB,OACrB,EACF,EACMC,GAAkB,OACtB,EACF,EACMC,GAAsB,OAC1B,EACF,EACMC,GAAiB,OACrB,EACF,EACMC,GAAS,OAAO,EAAE,EAClBC,GAAa,OAAO,EAAE,EACtBC,GAAmB,OACvB,EACF,EACAX,GAAa,uBAAuB,CAClC,CAACE,EAAa,EAAG,cACjB,CAACC,EAAgB,EAAG,iBACpB,CAACC,EAAY,EAAG,aAChB,CAACC,EAAc,EAAG,eAClB,CAACC,EAAe,EAAG,gBACnB,CAACC,EAAmB,EAAG,gBACvB,CAACC,EAAc,EAAG,WAClB,CAACC,EAAM,EAAG,QACV,CAACC,EAAU,EAAG,aACd,CAACC,EAAgB,EAAG,iBACtB,CAAC,EAED,IAAMC,GAAgB,CACpB,UAAW,OACX,UAAWX,GAAO,UAClB,YAAcY,GAAQZ,GAAO,UAAUY,CAAG,GAAKZ,GAAO,SAASY,CAAG,GAAKZ,GAAO,YAAYY,CAAG,EAC7F,SAAWA,GAAQA,IAAQ,MAC3B,mBAAqBA,GAAQA,IAAQ,OAASA,IAAQ,WACtD,eAAgB,OAChB,mBAAqBA,GAAQ,CAC3B,GAAIA,IAAQ,cAAgBA,IAAQ,aAClC,OAAOH,GACF,GAAIG,IAAQ,mBAAqBA,IAAQ,mBAC9C,OAAOF,EAEX,EAEA,aAAaE,EAAKC,EAAQC,EAAe,CACvC,IAAIC,EAAKF,EAASA,EAAO,GAAKC,EAC9B,GAAID,GAAUE,IAAO,EACnB,GAAIF,EAAO,MAAQ,iBAAkB,CACnC,GAAID,IAAQ,MACV,MAAO,GAELC,EAAO,MAAM,KACdG,GAAMA,EAAE,OAAS,GAAKA,EAAE,OAAS,YAAcA,EAAE,OAAS,OAASA,EAAE,MAAM,UAAY,aAAeA,EAAE,MAAM,UAAY,wBAC7H,IACED,EAAK,EAET,KAAW,qBAAqB,KAAKF,EAAO,GAAG,GAAKD,IAAQ,UAAYA,IAAQ,eAC9EG,EAAK,QAEEF,GAAUE,IAAO,IACtBF,EAAO,MAAQ,iBAAmBA,EAAO,MAAQ,QAAUA,EAAO,MAAQ,WAC5EE,EAAK,GAGT,GAAIA,IAAO,EAAG,CACZ,GAAIH,IAAQ,MACV,MAAO,GAET,GAAIA,IAAQ,OACV,MAAO,EAEX,CACA,OAAOG,CACT,CACF,EAEME,GAAkBC,GAAS,CAC3BA,EAAK,OAAS,GAChBA,EAAK,MAAM,QAAQ,CAACC,EAAGC,IAAM,CACvBD,EAAE,OAAS,GAAKA,EAAE,OAAS,SAAWA,EAAE,QAC1CD,EAAK,MAAME,CAAC,EAAI,CACd,KAAM,EACN,KAAM,OACN,IAAKrB,GAAa,uBAAuB,QAAS,GAAMoB,EAAE,GAAG,EAC7D,IAAKE,GAAeF,EAAE,MAAM,QAASA,EAAE,GAAG,EAC1C,UAAW,CAAC,EACZ,IAAKA,EAAE,GACT,EAEJ,CAAC,CAEL,EACME,GAAiB,CAACC,EAASC,IAAQ,CACvC,IAAMC,EAAaxB,GAAO,iBAAiBsB,CAAO,EAClD,OAAOvB,GAAa,uBAClB,KAAK,UAAUyB,CAAU,EACzB,GACAD,EACA,CACF,CACF,EAEA,SAASE,GAAuBC,EAAMH,EAAK,CACzC,OAAOxB,GAAa,oBAClB2B,EACAH,EACAI,EACF,CACF,CACA,IAAMC,GAAgB,CACpB,uBAA0B,GAC1B,GAAM,yBACN,uBAA0B,GAC1B,GAAM,yBACN,uBAA0B,GAC1B,GAAM,yBACN,uBAA0B,GAC1B,GAAM,yBACN,6BAAgC,GAChC,GAAM,+BACN,yBAA4B,GAC5B,GAAM,2BACN,gCAAmC,GACnC,GAAM,kCACN,4BAA+B,GAC/B,GAAM,8BACN,uBAA0B,GAC1B,GAAM,yBACN,8BAAiC,GACjC,GAAM,gCACN,0BAA6B,GAC7B,GAAM,4BACN,iBAAoB,GACpB,GAAM,kBACR,EACMD,GAAmB,CACtB,GAAK,gCACL,GAAK,yCACL,GAAK,gCACL,GAAK,yCACL,GAAK,yEACL,GAAK,uDACL,GAAK,sGACL,GAAK,+FACL,GAAK,gCACL,GAAK,+DACL,GAAK,yFACR,EAEME,GAAiB,CAACC,EAAKZ,EAAMa,IAAY,CAC7C,GAAM,CAAE,IAAAC,EAAK,IAAAT,CAAI,EAAIO,EACrB,OAAKE,GACHD,EAAQ,QACNN,GAAuB,GAAIF,CAAG,CAChC,EAEEL,EAAK,SAAS,SAChBa,EAAQ,QACNN,GAAuB,GAAIF,CAAG,CAChC,EACAL,EAAK,SAAS,OAAS,GAElB,CACL,MAAO,CACLnB,GAAa,qBACXA,GAAa,uBAAuB,YAAa,GAAMwB,CAAG,EAC1DS,GAAOjC,GAAa,uBAAuB,GAAI,EAAI,CACrD,CACF,CACF,CACF,EAEMkC,GAAiB,CAACH,EAAKZ,EAAMa,IAAY,CAC7C,GAAM,CAAE,IAAAC,EAAK,IAAAT,CAAI,EAAIO,EACrB,OAAKE,GACHD,EAAQ,QACNN,GAAuB,GAAIF,CAAG,CAChC,EAEEL,EAAK,SAAS,SAChBa,EAAQ,QACNN,GAAuB,GAAIF,CAAG,CAChC,EACAL,EAAK,SAAS,OAAS,GAElB,CACL,MAAO,CACLnB,GAAa,qBACXA,GAAa,uBAAuB,cAAe,EAAI,EACvDiC,EAAMjC,GAAa,gBAAgBiC,EAAKD,CAAO,EAAI,EAAIC,EAAMjC,GAAa,qBACxEgC,EAAQ,aAAahC,GAAa,iBAAiB,EACnD,CAACiC,CAAG,EACJT,CACF,EAAIxB,GAAa,uBAAuB,GAAI,EAAI,CAClD,CACF,CACF,CACF,EAEMmC,GAAiB,CAACJ,EAAKZ,EAAMa,IAAY,CAC7C,IAAMI,EAAapC,GAAa,eAAe+B,EAAKZ,EAAMa,CAAO,EACjE,GAAI,CAACI,EAAW,MAAM,QAAUjB,EAAK,UAAY,EAC/C,OAAOiB,EAELL,EAAI,KACNC,EAAQ,QACNN,GACE,GACAK,EAAI,IAAI,GACV,CACF,EAEF,GAAM,CAAE,IAAAlB,CAAI,EAAIM,EACVkB,EAAkBL,EAAQ,gBAAgBnB,CAAG,EACnD,GAAIA,IAAQ,SAAWA,IAAQ,YAAcA,IAAQ,UAAYwB,EAAiB,CAChF,IAAIC,EAAiBlC,GACjBmC,EAAgB,GACpB,GAAI1B,IAAQ,SAAWwB,EAAiB,CACtC,IAAMG,EAAOxC,GAAa,SAASmB,EAAM,MAAM,EAC/C,GAAIqB,GACF,GAAIA,EAAK,OAAS,EAChBF,EAAiBhC,WACRkC,EAAK,MACd,OAAQA,EAAK,MAAM,QAAS,CAC1B,IAAK,QACHF,EAAiBpC,GACjB,MACF,IAAK,WACHoC,EAAiBnC,GACjB,MACF,IAAK,OACHoC,EAAgB,GAChBP,EAAQ,QACNN,GACE,GACAK,EAAI,GACN,CACF,EACA,KACJ,OAEO/B,GAAa,mBAAmBmB,CAAI,IAC7CmB,EAAiBhC,GAErB,MAAWO,IAAQ,WACjByB,EAAiBjC,IAEdkC,IACHH,EAAW,YAAcJ,EAAQ,OAAOM,CAAc,EAE1D,MACEN,EAAQ,QACNN,GACE,GACAK,EAAI,GACN,CACF,EAEF,OAAAK,EAAW,MAAQA,EAAW,MAAM,OACjChB,GAAM,EAAEA,EAAE,IAAI,OAAS,GAAKA,EAAE,IAAI,UAAY,aACjD,EACOgB,CACT,EAEMK,GAAwCxC,GAAO,QAAQ,sBAAsB,EAC7EyC,GAAmCzC,GAAO,QAE9C,oDACF,EACM0C,GAAmC1C,GAAO,QAAQ,YAAY,EAC9D2C,GAAkC3C,GAAO,QAAQ,8BAA8B,EAC/E4C,GAAmB,CAACC,EAAKC,EAAWf,EAASR,IAAQ,CACzD,IAAMwB,EAAe,CAAC,EAChBC,EAAkB,CAAC,EACnBC,EAAuB,CAAC,EAC9B,QAAS7B,EAAI,EAAGA,EAAI0B,EAAU,OAAQ1B,IAAK,CACzC,IAAM8B,EAAWJ,EAAU1B,CAAC,EAAE,QAC1B8B,IAAa,UAAYnD,GAAa,mBACxC,uBACAgC,EACAR,CACF,GAEWiB,GAAsBU,CAAQ,EADvCD,EAAqB,KAAKC,CAAQ,EAI9BR,GAAiBQ,CAAQ,EACvBnD,GAAa,YAAY8C,CAAG,EAC1BF,GAAgBE,EAAI,QAAQ,YAAY,CAAC,EAC3CE,EAAa,KAAKG,CAAQ,EAE1BF,EAAgB,KAAKE,CAAQ,GAG/BH,EAAa,KAAKG,CAAQ,EAC1BF,EAAgB,KAAKE,CAAQ,GAG3BT,GAAiBS,CAAQ,EAC3BF,EAAgB,KAAKE,CAAQ,EAE7BH,EAAa,KAAKG,CAAQ,CAIlC,CACA,MAAO,CACL,aAAAH,EACA,gBAAAC,EACA,qBAAAC,CACF,CACF,EACME,GAAiB,CAACN,EAAKO,IACLrD,GAAa,YAAY8C,CAAG,GAAKA,EAAI,QAAQ,YAAY,IAAM,UAC9D9C,GAAa,uBAAuBqD,EAAO,EAAI,EAAIP,EAAI,OAAS,EAAI9C,GAAa,yBAAyB,CAC/H,IACA8C,EACA,sBAAsBO,CAAK,QAC3BP,EACA,GACF,CAAC,EAAIA,EAEDQ,GAAc,CAACvB,EAAKZ,EAAMa,IACvBhC,GAAa,YAAY+B,EAAKZ,EAAMa,EAAUI,GAAe,CAClE,GAAM,CAAE,UAAAW,CAAU,EAAIhB,EACtB,GAAI,CAACgB,EAAU,OAAQ,OAAOX,EAC9B,GAAI,CAAE,IAAAU,EAAK,MAAOS,CAAW,EAAInB,EAAW,MAAM,CAAC,EAC7C,CAAE,aAAAY,EAAc,gBAAAC,EAAiB,qBAAAC,CAAqB,EAAIL,GAAiBC,EAAKC,EAAWf,EAASD,EAAI,GAAG,EAoBjH,GAnBIkB,EAAgB,SAAS,OAAO,IAClCH,EAAMM,GAAeN,EAAK,eAAe,GAEvCG,EAAgB,SAAS,QAAQ,IACnCH,EAAMM,GAAeN,EAAK,WAAW,GAEnCG,EAAgB,SAClBM,EAAavD,GAAa,qBAAqBgC,EAAQ,OAAOzB,EAAmB,EAAG,CAClFgD,EACA,KAAK,UAAUN,CAAe,CAChC,CAAC,GAECD,EAAa,SAChB,CAAChD,GAAa,YAAY8C,CAAG,GAAKF,GAAgBE,EAAI,QAAQ,YAAY,CAAC,KAC1ES,EAAavD,GAAa,qBAAqBgC,EAAQ,OAAOxB,EAAc,EAAG,CAC7E+C,EACA,KAAK,UAAUP,CAAY,CAC7B,CAAC,GAECE,EAAqB,OAAQ,CAC/B,IAAMM,EAAkBN,EAAqB,IAAIjD,GAAO,UAAU,EAAE,KAAK,EAAE,EAC3E6C,EAAM9C,GAAa,YAAY8C,CAAG,EAAI9C,GAAa,uBAAuB,GAAG8C,EAAI,OAAO,GAAGU,CAAe,GAAI,EAAI,EAAIxD,GAAa,yBAAyB,CAAC,IAAK8C,EAAK,QAAQU,CAAe,GAAG,CAAC,CACpM,CACA,MAAO,CACL,MAAO,CAACxD,GAAa,qBAAqB8C,EAAKS,CAAU,CAAC,CAC5D,CACF,CAAC,EAGGE,GAAgB,CAAC1B,EAAKZ,EAAMa,IAAY,CAC5C,GAAM,CAAE,IAAAC,EAAK,IAAAT,CAAI,EAAIO,EACrB,OAAKE,GACHD,EAAQ,QACNN,GAAuB,GAAIF,CAAG,CAChC,EAEK,CACL,MAAO,CAAC,EACR,YAAaQ,EAAQ,OAAOvB,EAAM,CACpC,CACF,EAEMiD,GAAe,yCACfC,GAAkB,CAACC,EAAU5B,EAASlB,IAAW,CACrD,GAAIkB,EAAQ,OAAO,MAAQ,EACzB,OAEF,IAAM6B,EAAiB/C,EAAO,OAAS,GAAKA,EAAO,aAAeA,EAAO,YAAY,OAAS,IAAMA,EAAO,YAAY,UAAY,CAACb,GAAO,QAAQa,EAAO,YAAY,QAAQ,GAAKA,EAAO,YAAY,SAAS,OAAS,GACpNgD,EAAK,EACLC,EAAK,EACHC,EAAe,CAAC,EAChBC,EAAyBC,GAAiB,CAC9C,GAAIJ,GAAM,IAAMC,GAAM,EAAG,CACvB,IAAMI,EAAanE,GAAa,qBAAqBgC,EAAQ,OAAOhC,GAAa,aAAa,EAAG,CAC/F,KAAK,UACHgE,EAAa,IAAK7C,GAASiD,GAAcjD,EAAMa,CAAO,CAAC,EAAE,KAAK,EAAE,CAClE,EAAE,QAAQ0B,GAAc,YAAY,EAGpC,OAAOM,EAAa,MAAM,CAC5B,CAAC,EACKK,EAAcL,EAAa,OAAS,EAC1C,GAAIH,EACFD,EAAS,OACPM,EAAeF,EAAa,OAC5BA,EAAa,OAEbG,CACF,UAEAH,EAAa,CAAC,EAAE,YAAY,MAAQG,EAChCH,EAAa,OAAS,EAAG,CAC3BJ,EAAS,OAAOM,EAAeF,EAAa,OAAS,EAAGK,CAAW,EACnE,IAAMC,EAAatC,EAAQ,OAAO,QAChCgC,EAAaA,EAAa,OAAS,CAAC,EAAE,WACxC,EACA,GAAIM,EAAa,GAAI,CACnB,QAASC,EAAKD,EAAYC,EAAKvC,EAAQ,OAAO,OAAQuC,IAAM,CAC1D,IAAMC,EAAIxC,EAAQ,OAAOuC,CAAE,EACvBC,IAAGA,EAAE,OAASH,EACpB,CACArC,EAAQ,OAAO,OAAOsC,EAAaD,EAAc,EAAGA,CAAW,CACjE,CACF,CAEF,OAAOA,CACT,CACA,MAAO,EACT,EACIhD,EAAI,EACR,KAAOA,EAAIuC,EAAS,OAAQvC,IAAK,CAC/B,IAAMoD,EAAQb,EAASvC,CAAC,EAExB,GADiBwC,GAAkBa,GAAcD,CAAK,EACxC,CACZ,IAAME,EAASC,GAAYH,CAAK,EAChC,GAAIE,EAAQ,CACVb,GAAMa,EAAO,CAAC,EACdZ,GAAMY,EAAO,CAAC,EACdX,EAAa,KAAKS,CAAK,EACvB,QACF,CACF,CACApD,GAAK4C,EAAsB5C,CAAC,EAC5ByC,EAAK,EACLC,EAAK,EACLC,EAAa,OAAS,CACxB,CACAC,EAAsB5C,CAAC,CACzB,EACMqD,GAAiBvD,GAAS,CAC9B,IAAKA,EAAK,OAAS,GAAKA,EAAK,UAAY,GAAKA,EAAK,OAAS,KAAOA,EAAK,aAAeA,EAAK,YAAY,OAAS,GAC/G,OAAOA,EAAK,WAEhB,EACM0D,GAAa,gBACbC,GAAsB,CAACC,EAAM/D,KACzBA,IAAO,EAAIf,GAAO,gBAAgB8E,CAAI,EAAI/D,IAAO,EAAIf,GAAO,eAAe8E,CAAI,EAAI/D,IAAO,EAAIf,GAAO,kBAAkB8E,CAAI,EAAI,KAAUF,GAAW,KAAKE,CAAI,EAEjKC,GAAqC/E,GAAO,QAChD,iDACF,EACA,SAAS2E,GAAYzD,EAAM,CACzB,GAAIA,EAAK,OAAS,GAAK6D,GAAmB7D,EAAK,GAAG,EAChD,MAAO,GAET,GAAIA,EAAK,OAAS,GAChB,MAAO,CAAC,EAAG,CAAC,EAEd,IAAI2C,EAAK,EACLC,EAAK5C,EAAK,MAAM,OAAS,EAAI,EAAI,EACjC8D,EAAS,GACPC,EAAO,KACXD,EAAS,GACF,IAET,SAASE,EAAKC,EAAO,CACnB,IAAMC,EAAcD,EAAM,MAAQ,UAAYA,EAAM,KAAO,EAC3D,QAAS/D,EAAI,EAAGA,EAAI+D,EAAM,MAAM,OAAQ/D,IAAK,CAC3C,IAAMD,EAAIgE,EAAM,MAAM/D,CAAC,EAIvB,GAHID,EAAE,OAAS,GAAK,CAAC0D,GAAoB1D,EAAE,KAAMgE,EAAM,EAAE,GAGrDhE,EAAE,OAAS,GAAKA,EAAE,OAAS,SACzBA,EAAE,MAAQA,EAAE,IAAI,OAAS,GAAKA,EAAE,IAAI,UAAY,CAAC0D,GAAoB1D,EAAE,IAAI,QAASgE,EAAM,EAAE,IAG5FhE,EAAE,MAAQA,EAAE,IAAI,OAAS,GAAKA,EAAE,IAAI,UAAY,IAGhDiE,GAAerF,GAAa,cAAcoB,EAAE,IAAK,OAAO,GAAKA,EAAE,KAAO,CAACA,EAAE,IAAI,UAC/E,OAAO8D,EAAK,CAGlB,CACA,QAAS7D,EAAI,EAAGA,EAAI+D,EAAM,SAAS,OAAQ/D,IAAK,CAC9CyC,IACA,IAAMW,EAAQW,EAAM,SAAS/D,CAAC,EAC9B,GAAIoD,EAAM,OAAS,IACbA,EAAM,MAAM,OAAS,GACvBV,IAEFoB,EAAKV,CAAK,EACNQ,GACF,MAAO,EAGb,CACA,MAAO,EACT,CACA,OAAOE,EAAKhE,CAAI,EAAI,CAAC2C,EAAIC,CAAE,EAAI,EACjC,CACA,SAASK,GAAcjD,EAAMa,EAAS,CACpC,GAAI/B,GAAO,SAASkB,CAAI,EACtB,OAAOA,EAET,GAAIlB,GAAO,SAASkB,CAAI,EACtB,MAAO,GAET,OAAQA,EAAK,KAAM,CACjB,IAAK,GACH,OAAOmE,GAAiBnE,EAAMa,CAAO,EACvC,IAAK,GACH,OAAO/B,GAAO,WAAWkB,EAAK,OAAO,EACvC,IAAK,GACH,MAAO,OAAOlB,GAAO,WAAWkB,EAAK,OAAO,CAAC,MAC/C,IAAK,GACH,OAAOlB,GAAO,WAAWA,GAAO,gBAAgBsF,GAAiBpE,EAAK,OAAO,CAAC,CAAC,EACjF,IAAK,GACH,OAAOlB,GAAO,WAAWsF,GAAiBpE,CAAI,CAAC,EACjD,IAAK,IACH,OAAOiD,GAAcjD,EAAK,QAASa,CAAO,EAC5C,QACE,MAAO,EACX,CACF,CACA,SAASsD,GAAiBnE,EAAMa,EAAS,CACvC,IAAIwD,EAAM,IAAIrE,EAAK,GAAG,GAClBsE,EAAY,GAChB,QAAS,EAAI,EAAG,EAAItE,EAAK,MAAM,OAAQ,IAAK,CAC1C,IAAMC,EAAID,EAAK,MAAM,CAAC,EACtB,GAAIC,EAAE,OAAS,EACboE,GAAO,IAAIpE,EAAE,IAAI,GACbA,EAAE,QACJoE,GAAO,KAAKvF,GAAO,WAAWmB,EAAE,MAAM,OAAO,CAAC,aAEvCA,EAAE,OAAS,EACpB,GAAIA,EAAE,OAAS,OAAQ,CACrB,IAAMa,EAAMb,EAAE,IACd,GAAIa,EAAI,QAAQ,CAAC,IAAM,IAAK,CAC1BuD,GAAO,IAAIpE,EAAE,IAAI,OAAO,sBAAsBa,EAAI,OAAO,mBACzD,QACF,CACA,GAAIhC,GAAO,cAAcmB,EAAE,IAAI,OAAO,GAAKa,EAAI,UAAY,QACzD,SAEF,IAAIyD,EAAYH,GAAiBtD,CAAG,EACpC,GAAIyD,GAAa,KAAM,CACrB,IAAMC,EAAMvE,EAAE,KAAOA,EAAE,IAAI,QACvBuE,IAAQ,QACVD,EAAYzF,GAAO,eAAeyF,CAAS,EAClCC,IAAQ,UACjBD,EAAYzF,GAAO,eAAeA,GAAO,eAAeyF,CAAS,CAAC,GAEpEF,GAAO,IAAIpE,EAAE,IAAI,OAAO,KAAKnB,GAAO,WAClCyF,CACF,CAAC,GACH,CACF,MAAWtE,EAAE,OAAS,OACpBqE,EAAYF,GAAiBnE,EAAE,GAAG,EACzBA,EAAE,OAAS,SACpBqE,EAAYxF,GAAO,WACjBA,GAAO,gBAAgBsF,GAAiBnE,EAAE,GAAG,CAAC,CAChD,EAGN,CAKA,GAJIY,EAAQ,UACVwD,GAAO,IAAIxD,EAAQ,OAAO,IAE5BwD,GAAO,IACHC,EACFD,GAAOC,MAEP,SAAS,EAAI,EAAG,EAAItE,EAAK,SAAS,OAAQ,IACxCqE,GAAOpB,GAAcjD,EAAK,SAAS,CAAC,EAAGa,CAAO,EAGlD,OAAK/B,GAAO,UAAUkB,EAAK,GAAG,IAC5BqE,GAAO,KAAKrE,EAAK,GAAG,KAEfqE,CACT,CACA,SAASD,GAAiBtD,EAAK,CAC7B,GAAIA,EAAI,OAAS,EACf,OAAO,IAAI,SAAS,WAAWA,EAAI,OAAO,GAAG,EAAE,EAC1C,CACL,IAAIuD,EAAM,GACV,OAAAvD,EAAI,SAAS,QAASuC,GAAM,CACtBvE,GAAO,SAASuE,CAAC,GAAKvE,GAAO,SAASuE,CAAC,IAGvCA,EAAE,OAAS,EACbgB,GAAOhB,EAAE,QACAA,EAAE,OAAS,EACpBgB,GAAOvF,GAAO,gBAAgBsF,GAAiBf,EAAE,OAAO,CAAC,EAEzDgB,GAAOD,GAAiBf,CAAC,EAE7B,CAAC,EACMgB,CACT,CACF,CAEA,IAAMI,GAAuB,CAACzE,EAAMa,IAAY,CAC1Cb,EAAK,OAAS,GAAKA,EAAK,UAAY,IAAMA,EAAK,MAAQ,UAAYA,EAAK,MAAQ,UAClFa,EAAQ,WAAW,CAEvB,EAEM6D,GAAoB,CACxB3E,EAEF,EACM4E,GAAyB,CAC7B,MAAO9F,GAAa,uBACpB,KAAM8B,GACN,KAAMI,GACN,MAAOC,GAEP,GAAImB,GAEJ,KAAMG,EACR,EACA,SAASsC,GAAQC,EAAKC,EAAU,CAAC,EAAG,CAClC,OAAOjG,GAAa,YAClBgG,EACA/F,GAAO,OAAO,CAAC,EAAGW,GAAeqF,EAAS,CACxC,eAAgB,CAIdL,GACA,GAAGC,GACH,GAAGI,EAAQ,gBAAkB,CAAC,CAChC,EACA,oBAAqBhG,GAAO,OAC1B,CAAC,EACD6F,GACAG,EAAQ,qBAAuB,CAAC,CAClC,EACA,eAAgBtC,EAClB,CAAC,CACH,CACF,CACA,SAASuC,GAAMC,EAAUF,EAAU,CAAC,EAAG,CACrC,OAAOjG,GAAa,UAAUmG,EAAUlG,GAAO,OAAO,CAAC,EAAGW,GAAeqF,CAAO,CAAC,CACnF,CAEAlG,GAAQ,uBAAyB+F,GACjC/F,GAAQ,cAAgB8B,GACxB9B,GAAQ,iBAAmB6B,GAC3B7B,GAAQ,kBAAoB8F,GAC5B9F,GAAQ,WAAaW,GACrBX,GAAQ,iBAAmBY,GAC3BZ,GAAQ,iBAAmBI,GAC3BJ,GAAQ,gBAAkBO,GAC1BP,GAAQ,cAAgBG,GACxBH,GAAQ,eAAiBM,GACzBN,GAAQ,aAAeK,GACvBL,GAAQ,eAAiBS,GACzBT,GAAQ,oBAAsBQ,GAC9BR,GAAQ,OAASU,GACjBV,GAAQ,QAAUgG,GAClBhG,GAAQ,uBAAyB2B,GACjC3B,GAAQ,MAAQmG,GAChBnG,GAAQ,cAAgBa,GACxBb,GAAQ,eAAiBmB,GACzB,OAAO,KAAKlB,EAAY,EAAE,QAAQ,SAAUoG,EAAG,CACzCA,IAAM,WAAa,CAAC,OAAO,UAAU,eAAe,KAAKrG,GAASqG,CAAC,IAAGrG,GAAQqG,CAAC,EAAIpG,GAAaoG,CAAC,EACvG,CAAC,IC7qBD,IAAAC,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAGEA,GAAO,QAAU,OCHnB,IAAAC,GAAAC,GAAAC,IAAA,cAOA,OAAO,eAAeA,GAAS,aAAc,CAAE,MAAO,EAAK,CAAC,EAE5D,IAAIC,GAAS,KAETC,GACEC,GAAN,KAAkB,CAChB,YAAYC,EAAW,GAAO,CAC5B,KAAK,SAAWA,EAIhB,KAAK,QAAU,GAIf,KAAK,IAAM,EAIX,KAAK,QAAU,CAAC,EAIhB,KAAK,SAAW,CAAC,EACjB,KAAK,UAAY,GACjB,KAAK,OAASF,GACV,CAACE,GAAYF,KACf,KAAK,OAASA,GAAkB,SAAWA,GAAkB,OAAS,CAAC,IAAI,KACzE,IACF,EAAI,EAER,CACA,IAAI,QAAS,CACX,OAAO,KAAK,OACd,CACA,OAAQ,CACN,GAAI,KAAK,QAAS,CAChB,KAAK,UAAY,GACjB,IAAIG,EAAGC,EACP,GAAI,KAAK,OACP,IAAKD,EAAI,EAAGC,EAAI,KAAK,OAAO,OAAQD,EAAIC,EAAGD,IACzC,KAAK,OAAOA,CAAC,EAAE,MAAM,EAGzB,IAAKA,EAAI,EAAGC,EAAI,KAAK,QAAQ,OAAQD,EAAIC,EAAGD,IAC1C,KAAK,QAAQA,CAAC,EAAE,MAAM,CAE1B,CACF,CAIA,QAAS,CACP,GAAI,KAAK,SACH,KAAK,UAAW,CAClB,KAAK,UAAY,GACjB,IAAIA,EAAGC,EACP,GAAI,KAAK,OACP,IAAKD,EAAI,EAAGC,EAAI,KAAK,OAAO,OAAQD,EAAIC,EAAGD,IACzC,KAAK,OAAOA,CAAC,EAAE,OAAO,EAG1B,IAAKA,EAAI,EAAGC,EAAI,KAAK,QAAQ,OAAQD,EAAIC,EAAGD,IAC1C,KAAK,QAAQA,CAAC,EAAE,OAAO,CAE3B,CAEJ,CACA,IAAIE,EAAI,CACN,GAAI,KAAK,QAAS,CAChB,IAAMC,EAAqBN,GAC3B,GAAI,CACF,OAAAA,GAAoB,KACbK,EAAG,CACZ,QAAE,CACAL,GAAoBM,CACtB,CACF,CACF,CAKA,IAAK,CACC,EAAE,KAAK,MAAQ,IACjB,KAAK,UAAYN,GACjBA,GAAoB,KAExB,CAKA,KAAM,CACA,KAAK,IAAM,GAAK,EAAE,KAAK,MAAQ,IACjCA,GAAoB,KAAK,UACzB,KAAK,UAAY,OAErB,CACA,KAAKO,EAAY,CACf,GAAI,KAAK,QAAS,CAChB,KAAK,QAAU,GACf,IAAIJ,EAAGC,EACP,IAAKD,EAAI,EAAGC,EAAI,KAAK,QAAQ,OAAQD,EAAIC,EAAGD,IAC1C,KAAK,QAAQA,CAAC,EAAE,KAAK,EAGvB,IADA,KAAK,QAAQ,OAAS,EACjBA,EAAI,EAAGC,EAAI,KAAK,SAAS,OAAQD,EAAIC,EAAGD,IAC3C,KAAK,SAASA,CAAC,EAAE,EAGnB,GADA,KAAK,SAAS,OAAS,EACnB,KAAK,OAAQ,CACf,IAAKA,EAAI,EAAGC,EAAI,KAAK,OAAO,OAAQD,EAAIC,EAAGD,IACzC,KAAK,OAAOA,CAAC,EAAE,KAAK,EAAI,EAE1B,KAAK,OAAO,OAAS,CACvB,CACA,GAAI,CAAC,KAAK,UAAY,KAAK,QAAU,CAACI,EAAY,CAChD,IAAMC,EAAO,KAAK,OAAO,OAAO,IAAI,EAChCA,GAAQA,IAAS,OACnB,KAAK,OAAO,OAAO,KAAK,KAAK,EAAIA,EACjCA,EAAK,MAAQ,KAAK,MAEtB,CACA,KAAK,OAAS,MAChB,CACF,CACF,EACA,SAASC,GAAYP,EAAU,CAC7B,OAAO,IAAID,GAAYC,CAAQ,CACjC,CACA,SAASQ,IAAkB,CACzB,OAAOV,EACT,CACA,SAASW,GAAeN,EAAIO,EAAe,GAAO,CAC5CZ,IACFA,GAAkB,SAAS,KAAKK,CAAE,CAEtC,CAEA,IAAIQ,GACEC,GAAc,CAClB,OAAU,EACV,EAAK,SACL,QAAW,EACX,EAAK,UACL,SAAY,EACZ,EAAK,WACL,SAAY,EACZ,EAAK,WACL,MAAS,GACT,GAAM,QACN,cAAiB,GACjB,GAAM,gBACN,OAAU,GACV,GAAM,SACN,UAAa,IACb,IAAO,WACT,EACMC,GAAqC,IAAI,QACzCC,GAAN,KAAqB,CACnB,YAAYX,EAAI,CACd,KAAK,GAAKA,EAIV,KAAK,KAAO,OAIZ,KAAK,SAAW,OAIhB,KAAK,MAAQ,EAIb,KAAK,KAAO,OAIZ,KAAK,QAAU,OACf,KAAK,UAAY,OACbL,IAAqBA,GAAkB,QACzCA,GAAkB,QAAQ,KAAK,IAAI,CAEvC,CACA,OAAQ,CACN,KAAK,OAAS,EAChB,CACA,QAAS,CACH,KAAK,MAAQ,KACf,KAAK,OAAS,IACVe,GAAmB,IAAI,IAAI,IAC7BA,GAAmB,OAAO,IAAI,EAC9B,KAAK,QAAQ,GAGnB,CAIA,QAAS,CACH,KAAK,MAAQ,GAAK,EAAE,KAAK,MAAQ,KAG/B,KAAK,MAAQ,GACjBE,GAAM,IAAI,CAEd,CACA,KAAM,CACJ,GAAI,EAAE,KAAK,MAAQ,GACjB,OAAO,KAAK,GAAG,EAEjB,KAAK,OAAS,EACdC,GAAc,IAAI,EAClBC,GAAY,IAAI,EAChB,IAAMC,EAAaP,GACbQ,EAAkBC,GACxBT,GAAY,KACZS,GAAc,GACd,GAAI,CACF,OAAO,KAAK,GAAG,CACjB,QAAE,CACAC,GAAY,IAAI,EAChBV,GAAYO,EACZE,GAAcD,EACd,KAAK,OAAS,EAChB,CACF,CACA,MAAO,CACL,GAAI,KAAK,MAAQ,EAAG,CAClB,QAASG,EAAO,KAAK,KAAMA,EAAMA,EAAOA,EAAK,QAC3CC,GAAUD,CAAI,EAEhB,KAAK,KAAO,KAAK,SAAW,OAC5BN,GAAc,IAAI,EAClB,KAAK,QAAU,KAAK,OAAO,EAC3B,KAAK,OAAS,EAChB,CACF,CACA,SAAU,CACJ,KAAK,MAAQ,GACfH,GAAmB,IAAI,IAAI,EAClB,KAAK,UACd,KAAK,UAAU,EAEf,KAAK,WAAW,CAEpB,CAIA,YAAa,CACPW,GAAQ,IAAI,GACd,KAAK,IAAI,CAEb,CACA,IAAI,OAAQ,CACV,OAAOA,GAAQ,IAAI,CACrB,CACF,EACIC,GAAa,EACbC,GACAC,GACJ,SAASZ,GAAMa,EAAKC,EAAa,GAAO,CAEtC,GADAD,EAAI,OAAS,EACTC,EAAY,CACdD,EAAI,KAAOD,GACXA,GAAkBC,EAClB,MACF,CACAA,EAAI,KAAOF,GACXA,GAAaE,CACf,CACA,SAASE,IAAa,CACpBL,IACF,CACA,SAASM,IAAW,CAClB,GAAI,EAAEN,GAAa,EACjB,OAEF,GAAIE,GAAiB,CACnB,IAAI,EAAIA,GAER,IADAA,GAAkB,OACX,GAAG,CACR,IAAMK,EAAO,EAAE,KACf,EAAE,KAAO,OACT,EAAE,OAAS,GACX,EAAIA,CACN,CACF,CACA,IAAIC,EACJ,KAAOP,IAAY,CACjB,IAAI,EAAIA,GAER,IADAA,GAAa,OACN,GAAG,CACR,IAAMM,EAAO,EAAE,KAGf,GAFA,EAAE,KAAO,OACT,EAAE,OAAS,GACP,EAAE,MAAQ,EACZ,GAAI,CAEF,EAAE,QAAQ,CACZ,OAASE,EAAK,CACPD,IAAOA,EAAQC,EACtB,CAEF,EAAIF,CACN,CACF,CACA,GAAIC,EAAO,MAAMA,CACnB,CACA,SAAShB,GAAYW,EAAK,CACxB,QAASN,EAAOM,EAAI,KAAMN,EAAMA,EAAOA,EAAK,QAC1CA,EAAK,QAAU,GACfA,EAAK,eAAiBA,EAAK,IAAI,WAC/BA,EAAK,IAAI,WAAaA,CAE1B,CACA,SAASD,GAAYO,EAAK,CACxB,IAAIO,EACAC,EAAOR,EAAI,SACXN,EAAOc,EACX,KAAOd,GAAM,CACX,IAAMe,EAAOf,EAAK,QACdA,EAAK,UAAY,IACfA,IAASc,IAAMA,EAAOC,GAC1Bd,GAAUD,CAAI,EACdgB,GAAUhB,CAAI,GAEda,EAAOb,EAETA,EAAK,IAAI,WAAaA,EAAK,eAC3BA,EAAK,eAAiB,OACtBA,EAAOe,CACT,CACAT,EAAI,KAAOO,EACXP,EAAI,SAAWQ,CACjB,CACA,SAASZ,GAAQI,EAAK,CACpB,QAASN,EAAOM,EAAI,KAAMN,EAAMA,EAAOA,EAAK,QAC1C,GAAIA,EAAK,IAAI,UAAYA,EAAK,SAAWA,EAAK,IAAI,WAAaiB,GAAgBjB,EAAK,IAAI,QAAQ,GAAKA,EAAK,IAAI,UAAYA,EAAK,SAC7H,MAAO,GAGX,MAAI,EAAAM,EAAI,MAIV,CACA,SAASW,GAAgBC,EAAU,CASjC,GARIA,EAAS,MAAQ,GAAK,EAAEA,EAAS,MAAQ,MAG7CA,EAAS,OAAS,IACdA,EAAS,gBAAkBC,MAG/BD,EAAS,cAAgBC,GACrB,CAACD,EAAS,OAASA,EAAS,MAAQ,MAAQ,CAACA,EAAS,MAAQ,CAACA,EAAS,QAAU,CAAChB,GAAQgB,CAAQ,IACrG,OAEFA,EAAS,OAAS,EAClB,IAAME,EAAMF,EAAS,IACfG,EAAUhC,GACVQ,EAAkBC,GACxBT,GAAY6B,EACZpB,GAAc,GACd,GAAI,CACFH,GAAYuB,CAAQ,EACpB,IAAMI,EAAQJ,EAAS,GAAGA,EAAS,MAAM,GACrCE,EAAI,UAAY,GAAK7C,GAAO,WAAW+C,EAAOJ,EAAS,MAAM,KAC/DA,EAAS,OAAS,IAClBA,EAAS,OAASI,EAClBF,EAAI,UAER,OAASR,EAAK,CACZ,MAAAQ,EAAI,UACER,CACR,QAAE,CACAvB,GAAYgC,EACZvB,GAAcD,EACdE,GAAYmB,CAAQ,EACpBA,EAAS,OAAS,EACpB,CACF,CACA,SAASjB,GAAUD,EAAMuB,EAAO,GAAO,CACrC,GAAM,CAAE,IAAAH,EAAK,QAAAC,EAAS,QAAAG,CAAQ,EAAIxB,EASlC,GARIqB,IACFA,EAAQ,QAAUG,EAClBxB,EAAK,QAAU,QAEbwB,IACFA,EAAQ,QAAUH,EAClBrB,EAAK,QAAU,QAEboB,EAAI,OAASpB,IACfoB,EAAI,KAAOC,EACP,CAACA,GAAWD,EAAI,UAAU,CAC5BA,EAAI,SAAS,OAAS,GACtB,QAASxC,EAAIwC,EAAI,SAAS,KAAMxC,EAAGA,EAAIA,EAAE,QACvCqB,GAAUrB,EAAG,EAAI,CAErB,CAEE,CAAC2C,GAAQ,CAAC,EAAEH,EAAI,IAAMA,EAAI,KAC5BA,EAAI,IAAI,OAAOA,EAAI,GAAG,CAE1B,CACA,SAASJ,GAAUhB,EAAM,CACvB,GAAM,CAAE,QAAAyB,EAAS,QAAAC,CAAQ,EAAI1B,EACzByB,IACFA,EAAQ,QAAUC,EAClB1B,EAAK,QAAU,QAEb0B,IACFA,EAAQ,QAAUD,EAClBzB,EAAK,QAAU,OAEnB,CACA,SAAS2B,GAAO9C,EAAI+C,EAAS,CACvB/C,EAAG,kBAAkBW,KACvBX,EAAKA,EAAG,OAAO,IAEjB,IAAMgD,EAAI,IAAIrC,GAAeX,CAAE,EAC3B+C,GACFrD,GAAO,OAAOsD,EAAGD,CAAO,EAE1B,GAAI,CACFC,EAAE,IAAI,CACR,OAASjB,EAAK,CACZ,MAAAiB,EAAE,KAAK,EACDjB,CACR,CACA,IAAMkB,EAASD,EAAE,IAAI,KAAKA,CAAC,EAC3B,OAAAC,EAAO,OAASD,EACTC,CACT,CACA,SAASC,GAAKD,EAAQ,CACpBA,EAAO,OAAO,KAAK,CACrB,CACA,IAAIhC,GAAc,GACZkC,GAAa,CAAC,EACpB,SAASC,IAAgB,CACvBD,GAAW,KAAKlC,EAAW,EAC3BA,GAAc,EAChB,CACA,SAASoC,IAAiB,CACxBF,GAAW,KAAKlC,EAAW,EAC3BA,GAAc,EAChB,CACA,SAASqC,IAAgB,CACvB,IAAMnD,EAAOgD,GAAW,IAAI,EAC5BlC,GAAcd,IAAS,OAAS,GAAOA,CACzC,CACA,SAASoD,GAAgBvD,EAAIO,EAAe,GAAO,CAC7CC,cAAqBG,KACvBH,GAAU,QAAUR,EAExB,CACA,SAASa,GAAcmC,EAAG,CACxB,GAAM,CAAE,QAAAQ,CAAQ,EAAIR,EAEpB,GADAA,EAAE,QAAU,OACRQ,EAAS,CACX,IAAMhB,EAAUhC,GAChBA,GAAY,OACZ,GAAI,CACFgD,EAAQ,CACV,QAAE,CACAhD,GAAYgC,CACd,CACF,CACF,CAEA,IAAIF,GAAgB,EACdmB,GAAN,KAAW,CACT,YAAYhC,EAAKc,EAAK,CACpB,KAAK,IAAMd,EACX,KAAK,IAAMc,EACX,KAAK,QAAUA,EAAI,QACnB,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,QAAU,KAAK,eAAiB,MACpF,CACF,EACMmB,GAAN,KAAU,CAER,YAAYrB,EAAU,CACpB,KAAK,SAAWA,EAChB,KAAK,QAAU,EAIf,KAAK,WAAa,OAIlB,KAAK,KAAO,OAIZ,KAAK,IAAM,OACX,KAAK,IAAM,OAIX,KAAK,GAAK,EAIV,KAAK,SAAW,EAClB,CACA,MAAMsB,EAAW,CACf,GAAI,CAACnD,IAAa,CAACS,IAAeT,KAAc,KAAK,SACnD,OAEF,IAAIW,EAAO,KAAK,WAChB,GAAIA,IAAS,QAAUA,EAAK,MAAQX,GAClCW,EAAO,KAAK,WAAa,IAAIsC,GAAKjD,GAAW,IAAI,EAC5CA,GAAU,MAGbW,EAAK,QAAUX,GAAU,SACzBA,GAAU,SAAS,QAAUW,EAC7BX,GAAU,SAAWW,GAJrBX,GAAU,KAAOA,GAAU,SAAWW,EAMxCyC,GAAOzC,CAAI,UACFA,EAAK,UAAY,KAC1BA,EAAK,QAAU,KAAK,QAChBA,EAAK,SAAS,CAChB,IAAMU,EAAOV,EAAK,QAClBU,EAAK,QAAUV,EAAK,QAChBA,EAAK,UACPA,EAAK,QAAQ,QAAUU,GAEzBV,EAAK,QAAUX,GAAU,SACzBW,EAAK,QAAU,OACfX,GAAU,SAAS,QAAUW,EAC7BX,GAAU,SAAWW,EACjBX,GAAU,OAASW,IACrBX,GAAU,KAAOqB,EAErB,CAEF,OAAOV,CACT,CACA,QAAQwC,EAAW,CACjB,KAAK,UACLrB,KACA,KAAK,OAAOqB,CAAS,CACvB,CACA,OAAOA,EAAW,CAChBhC,GAAW,EACX,GAAI,CAEF,QAASR,EAAO,KAAK,KAAMA,EAAMA,EAAOA,EAAK,QACvCA,EAAK,IAAI,OAAO,GAElBA,EAAK,IAAI,IAAI,OAAO,CAG1B,QAAE,CACAS,GAAS,CACX,CACF,CACF,EACA,SAASgC,GAAOzC,EAAM,CAEpB,GADAA,EAAK,IAAI,KACLA,EAAK,IAAI,MAAQ,EAAG,CACtB,IAAMkB,EAAWlB,EAAK,IAAI,SAC1B,GAAIkB,GAAY,CAAClB,EAAK,IAAI,KAAM,CAC9BkB,EAAS,OAAS,GAClB,QAAStC,EAAIsC,EAAS,KAAMtC,EAAGA,EAAIA,EAAE,QACnC6D,GAAO7D,CAAC,CAEZ,CACA,IAAM8D,EAAc1C,EAAK,IAAI,KACzB0C,IAAgB1C,IAClBA,EAAK,QAAU0C,EACXA,IAAaA,EAAY,QAAU1C,IAEzCA,EAAK,IAAI,KAAOA,CAClB,CACF,CACA,IAAM2C,GAA4B,IAAI,QAChCC,GAAc,OAClB,EACF,EACMC,GAAsB,OAC1B,EACF,EACMC,GAAoB,OACxB,EACF,EACA,SAASC,GAAMC,EAAQC,EAAMC,EAAK,CAChC,GAAIpD,IAAeT,GAAW,CAC5B,IAAI8D,EAAUR,GAAU,IAAIK,CAAM,EAC7BG,GACHR,GAAU,IAAIK,EAAQG,EAA0B,IAAI,GAAK,EAE3D,IAAI/B,EAAM+B,EAAQ,IAAID,CAAG,EACpB9B,IACH+B,EAAQ,IAAID,EAAK9B,EAAM,IAAImB,EAAK,EAChCnB,EAAI,IAAM+B,EACV/B,EAAI,IAAM8B,GAGV9B,EAAI,MAAM,CAEd,CACF,CACA,SAASgC,GAAQJ,EAAQC,EAAMC,EAAKG,EAAUC,EAAUC,EAAW,CACjE,IAAMJ,EAAUR,GAAU,IAAIK,CAAM,EACpC,GAAI,CAACG,EAAS,CACZhC,KACA,MACF,CACA,IAAMqC,EAAOpC,GAAQ,CACfA,GAEAA,EAAI,QAAQ,CAGlB,EAEA,GADAZ,GAAW,EACPyC,IAAS,QACXE,EAAQ,QAAQK,CAAG,MACd,CACL,IAAMC,EAAgBlF,GAAO,QAAQyE,CAAM,EACrCU,EAAeD,GAAiBlF,GAAO,aAAa2E,CAAG,EAC7D,GAAIO,GAAiBP,IAAQ,SAAU,CACrC,IAAMS,EAAY,OAAON,CAAQ,EACjCF,EAAQ,QAAQ,CAAC/B,EAAKwC,IAAS,EACzBA,IAAS,UAAYA,IAASd,IAAqB,CAACvE,GAAO,SAASqF,CAAI,GAAKA,GAAQD,IACvFH,EAAIpC,CAAG,CAEX,CAAC,CACH,KAOE,SANI8B,IAAQ,QAAUC,EAAQ,IAAI,MAAM,IACtCK,EAAIL,EAAQ,IAAID,CAAG,CAAC,EAElBQ,GACFF,EAAIL,EAAQ,IAAIL,EAAiB,CAAC,EAE5BG,EAAM,CACZ,IAAK,MACEQ,EAKMC,GACTF,EAAIL,EAAQ,IAAI,QAAQ,CAAC,GALzBK,EAAIL,EAAQ,IAAIP,EAAW,CAAC,EACxBrE,GAAO,MAAMyE,CAAM,GACrBQ,EAAIL,EAAQ,IAAIN,EAAmB,CAAC,GAKxC,MACF,IAAK,SACEY,IACHD,EAAIL,EAAQ,IAAIP,EAAW,CAAC,EACxBrE,GAAO,MAAMyE,CAAM,GACrBQ,EAAIL,EAAQ,IAAIN,EAAmB,CAAC,GAGxC,MACF,IAAK,MACCtE,GAAO,MAAMyE,CAAM,GACrBQ,EAAIL,EAAQ,IAAIP,EAAW,CAAC,EAE9B,KACJ,CAEJ,CACAnC,GAAS,CACX,CACA,SAASoD,GAAmBC,EAAQZ,EAAK,CACvC,IAAMa,EAASpB,GAAU,IAAImB,CAAM,EACnC,OAAOC,GAAUA,EAAO,IAAIb,CAAG,CACjC,CAEA,SAASc,GAAkBC,EAAO,CAChC,IAAMC,EAAMC,GAAMF,CAAK,EACvB,OAAIC,IAAQD,EAAcC,GAC1BnB,GAAMmB,EAAK,UAAWpB,EAAiB,EAChCsB,GAAUH,CAAK,EAAIC,EAAMA,EAAI,IAAIG,EAAU,EACpD,CACA,SAASC,GAAiBC,EAAK,CAC7B,OAAAxB,GAAMwB,EAAMJ,GAAMI,CAAG,EAAG,UAAWzB,EAAiB,EAC7CyB,CACT,CACA,IAAMC,GAAwB,CAC5B,UAAW,KACX,CAAC,OAAO,QAAQ,GAAI,CAClB,OAAOC,GAAS,KAAM,OAAO,SAAUJ,EAAU,CACnD,EACA,UAAUK,EAAM,CACd,OAAOV,GAAkB,IAAI,EAAE,OAC7B,GAAGU,EAAK,IAAKC,GAAMpG,GAAO,QAAQoG,CAAC,EAAIX,GAAkBW,CAAC,EAAIA,CAAC,CACjE,CACF,EACA,SAAU,CACR,OAAOF,GAAS,KAAM,UAAYnD,IAChCA,EAAM,CAAC,EAAI+C,GAAW/C,EAAM,CAAC,CAAC,EACvBA,EACR,CACH,EACA,MAAMzC,EAAI+F,EAAS,CACjB,OAAOC,GAAM,KAAM,QAAShG,EAAI+F,EAAS,OAAQ,SAAS,CAC5D,EACA,OAAO/F,EAAI+F,EAAS,CAClB,OAAOC,GAAM,KAAM,SAAUhG,EAAI+F,EAAUE,GAAMA,EAAE,IAAIT,EAAU,EAAG,SAAS,CAC/E,EACA,KAAKxF,EAAI+F,EAAS,CAChB,OAAOC,GAAM,KAAM,OAAQhG,EAAI+F,EAASP,GAAY,SAAS,CAC/D,EACA,UAAUxF,EAAI+F,EAAS,CACrB,OAAOC,GAAM,KAAM,YAAahG,EAAI+F,EAAS,OAAQ,SAAS,CAChE,EACA,SAAS/F,EAAI+F,EAAS,CACpB,OAAOC,GAAM,KAAM,WAAYhG,EAAI+F,EAASP,GAAY,SAAS,CACnE,EACA,cAAcxF,EAAI+F,EAAS,CACzB,OAAOC,GAAM,KAAM,gBAAiBhG,EAAI+F,EAAS,OAAQ,SAAS,CACpE,EAEA,QAAQ/F,EAAI+F,EAAS,CACnB,OAAOC,GAAM,KAAM,UAAWhG,EAAI+F,EAAS,OAAQ,SAAS,CAC9D,EACA,YAAYF,EAAM,CAChB,OAAOK,GAAY,KAAM,WAAYL,CAAI,CAC3C,EACA,WAAWA,EAAM,CACf,OAAOK,GAAY,KAAM,UAAWL,CAAI,CAC1C,EACA,KAAKM,EAAW,CACd,OAAOhB,GAAkB,IAAI,EAAE,KAAKgB,CAAS,CAC/C,EAEA,eAAeN,EAAM,CACnB,OAAOK,GAAY,KAAM,cAAeL,CAAI,CAC9C,EACA,IAAI7F,EAAI+F,EAAS,CACf,OAAOC,GAAM,KAAM,MAAOhG,EAAI+F,EAAS,OAAQ,SAAS,CAC1D,EACA,KAAM,CACJ,OAAOK,GAAW,KAAM,KAAK,CAC/B,EACA,QAAQP,EAAM,CACZ,OAAOO,GAAW,KAAM,OAAQP,CAAI,CACtC,EACA,OAAO7F,KAAO6F,EAAM,CAClB,OAAOQ,GAAO,KAAM,SAAUrG,EAAI6F,CAAI,CACxC,EACA,YAAY7F,KAAO6F,EAAM,CACvB,OAAOQ,GAAO,KAAM,cAAerG,EAAI6F,CAAI,CAC7C,EACA,OAAQ,CACN,OAAOO,GAAW,KAAM,OAAO,CACjC,EAEA,KAAKpG,EAAI+F,EAAS,CAChB,OAAOC,GAAM,KAAM,OAAQhG,EAAI+F,EAAS,OAAQ,SAAS,CAC3D,EACA,UAAUF,EAAM,CACd,OAAOO,GAAW,KAAM,SAAUP,CAAI,CACxC,EACA,YAAa,CACX,OAAOV,GAAkB,IAAI,EAAE,WAAW,CAC5C,EACA,SAASmB,EAAU,CACjB,OAAOnB,GAAkB,IAAI,EAAE,SAASmB,CAAQ,CAClD,EACA,aAAaT,EAAM,CACjB,OAAOV,GAAkB,IAAI,EAAE,UAAU,GAAGU,CAAI,CAClD,EACA,WAAWA,EAAM,CACf,OAAOO,GAAW,KAAM,UAAWP,CAAI,CACzC,EACA,QAAS,CACP,OAAOD,GAAS,KAAM,SAAUJ,EAAU,CAC5C,CACF,EACA,SAASI,GAASW,EAAMC,EAAQC,EAAW,CACzC,IAAMf,EAAMD,GAAiBc,CAAI,EAC3BG,EAAOhB,EAAIc,CAAM,EAAE,EACzB,OAAId,IAAQa,GAAQ,CAAChB,GAAUgB,CAAI,IACjCG,EAAK,MAAQA,EAAK,KAClBA,EAAK,KAAO,IAAM,CAChB,IAAMC,EAASD,EAAK,MAAM,EAC1B,OAAIC,EAAO,QACTA,EAAO,MAAQF,EAAUE,EAAO,KAAK,GAEhCA,CACT,GAEKD,CACT,CACA,IAAME,GAAa,MAAM,UACzB,SAASZ,GAAMO,EAAMC,EAAQxG,EAAI+F,EAASc,EAAchB,EAAM,CAC5D,IAAMH,EAAMD,GAAiBc,CAAI,EAC3BO,EAAYpB,IAAQa,GAAQ,CAAChB,GAAUgB,CAAI,EAC3CQ,EAAWrB,EAAIc,CAAM,EAC3B,GAAIO,IAAaH,GAAWJ,CAAM,EAAG,CACnC,IAAMQ,EAAUD,EAAS,MAAMR,EAAMV,CAAI,EACzC,OAAOiB,EAAYtB,GAAWwB,CAAO,EAAIA,CAC3C,CACA,IAAIC,EAAYjH,EACZ0F,IAAQa,IACNO,EACFG,EAAY,SAASC,EAAMC,EAAO,CAChC,OAAOnH,EAAG,KAAK,KAAMwF,GAAW0B,CAAI,EAAGC,EAAOZ,CAAI,CACpD,EACSvG,EAAG,OAAS,IACrBiH,EAAY,SAASC,EAAMC,EAAO,CAChC,OAAOnH,EAAG,KAAK,KAAMkH,EAAMC,EAAOZ,CAAI,CACxC,IAGJ,IAAMI,EAASI,EAAS,KAAKrB,EAAKuB,EAAWlB,CAAO,EACpD,OAAOe,GAAaD,EAAeA,EAAaF,CAAM,EAAIA,CAC5D,CACA,SAASN,GAAOE,EAAMC,EAAQxG,EAAI6F,EAAM,CACtC,IAAMH,EAAMD,GAAiBc,CAAI,EAC7BU,EAAYjH,EAChB,OAAI0F,IAAQa,IACLhB,GAAUgB,CAAI,EAIRvG,EAAG,OAAS,IACrBiH,EAAY,SAASG,EAAKF,EAAMC,EAAO,CACrC,OAAOnH,EAAG,KAAK,KAAMoH,EAAKF,EAAMC,EAAOZ,CAAI,CAC7C,GANAU,EAAY,SAASG,EAAKF,EAAMC,EAAO,CACrC,OAAOnH,EAAG,KAAK,KAAMoH,EAAK5B,GAAW0B,CAAI,EAAGC,EAAOZ,CAAI,CACzD,GAOGb,EAAIc,CAAM,EAAES,EAAW,GAAGpB,CAAI,CACvC,CACA,SAASK,GAAYK,EAAMC,EAAQX,EAAM,CACvC,IAAMH,EAAMJ,GAAMiB,CAAI,EACtBrC,GAAMwB,EAAK,UAAWzB,EAAiB,EACvC,IAAMoD,EAAM3B,EAAIc,CAAM,EAAE,GAAGX,CAAI,EAC/B,OAAKwB,IAAQ,IAAMA,IAAQ,KAAUC,GAAQzB,EAAK,CAAC,CAAC,GAClDA,EAAK,CAAC,EAAIP,GAAMO,EAAK,CAAC,CAAC,EAChBH,EAAIc,CAAM,EAAE,GAAGX,CAAI,GAErBwB,CACT,CACA,SAASjB,GAAWG,EAAMC,EAAQX,EAAO,CAAC,EAAG,CAC3CzC,GAAc,EACdzB,GAAW,EACX,IAAM0F,EAAM/B,GAAMiB,CAAI,EAAEC,CAAM,EAAE,MAAMD,EAAMV,CAAI,EAChD,OAAAjE,GAAS,EACT0B,GAAc,EACP+D,CACT,CAEA,IAAME,GAAqC7H,GAAO,QAAQ,6BAA6B,EACjF8H,GAAiB,IAAI,IACT,OAAO,oBAAoB,MAAM,EAAE,OAAQnD,GAAQA,IAAQ,aAAeA,IAAQ,QAAQ,EAAE,IAAKA,GAAQ,OAAOA,CAAG,CAAC,EAAE,OAAO3E,GAAO,QAAQ,CAC9J,EACA,SAAS+H,GAAepD,EAAK,CACtB3E,GAAO,SAAS2E,CAAG,IAAGA,EAAM,OAAOA,CAAG,GAC3C,IAAMqD,EAAMpC,GAAM,IAAI,EACtB,OAAApB,GAAMwD,EAAK,MAAOrD,CAAG,EACdqD,EAAI,eAAerD,CAAG,CAC/B,CACA,IAAMsD,GAAN,KAA0B,CACxB,YAAYC,EAAc,GAAOC,EAAa,GAAO,CACnD,KAAK,YAAcD,EACnB,KAAK,WAAaC,CACpB,CACA,IAAI1D,EAAQE,EAAKyD,EAAU,CACzB,GAAIzD,IAAQ,WAAY,OAAOF,EAAO,SACtC,IAAM4D,EAAc,KAAK,YAAaC,EAAa,KAAK,WACxD,GAAI3D,IAAQ,iBACV,MAAO,CAAC0D,EACH,GAAI1D,IAAQ,iBACjB,OAAO0D,EACF,GAAI1D,IAAQ,gBACjB,OAAO2D,EACF,GAAI3D,IAAQ,UACjB,OAAIyD,KAAcC,EAAcC,EAAaC,GAAqBC,GAAcF,EAAaG,GAAqBC,IAAa,IAAIjE,CAAM,GAEzI,OAAO,eAAeA,CAAM,IAAM,OAAO,eAAe2D,CAAQ,EACvD3D,EAET,OAEF,IAAMS,EAAgBlF,GAAO,QAAQyE,CAAM,EAC3C,GAAI,CAAC4D,EAAa,CAChB,IAAI/H,EACJ,GAAI4E,IAAkB5E,EAAK2F,GAAsBtB,CAAG,GAClD,OAAOrE,EAET,GAAIqE,IAAQ,iBACV,OAAOoD,EAEX,CACA,IAAMJ,EAAM,QAAQ,IAClBlD,EACAE,EAIAgE,GAAMlE,CAAM,EAAIA,EAAS2D,CAC3B,EAOA,OANIpI,GAAO,SAAS2E,CAAG,EAAImD,GAAe,IAAInD,CAAG,EAAIkD,GAAmBlD,CAAG,KAGtE0D,GACH7D,GAAMC,EAAQ,MAAOE,CAAG,EAEtB2D,GACKX,EAELgB,GAAMhB,CAAG,EACJzC,GAAiBlF,GAAO,aAAa2E,CAAG,EAAIgD,EAAMA,EAAI,MAE3D3H,GAAO,SAAS2H,CAAG,EACdU,EAAcO,GAASjB,CAAG,EAAIkB,GAASlB,CAAG,EAE5CA,CACT,CACF,EACMmB,GAAN,cAAqCb,EAAoB,CACvD,YAAYK,EAAa,GAAO,CAC9B,MAAM,GAAOA,CAAU,CACzB,CACA,IAAI7D,EAAQE,EAAK5B,EAAOqF,EAAU,CAChC,IAAIrD,EAAWN,EAAOE,CAAG,EACzB,GAAI,CAAC,KAAK,WAAY,CACpB,IAAMoE,EAAqBC,GAAWjE,CAAQ,EAK9C,GAJI,CAACc,GAAU9C,CAAK,GAAK,CAACiG,GAAWjG,CAAK,IACxCgC,EAAWa,GAAMb,CAAQ,EACzBhC,EAAQ6C,GAAM7C,CAAK,GAEjB,CAAC/C,GAAO,QAAQyE,CAAM,GAAKkE,GAAM5D,CAAQ,GAAK,CAAC4D,GAAM5F,CAAK,EAC5D,OAAIgG,EACK,IAEPhE,EAAS,MAAQhC,EACV,GAGb,CACA,IAAMkG,EAASjJ,GAAO,QAAQyE,CAAM,GAAKzE,GAAO,aAAa2E,CAAG,EAAI,OAAOA,CAAG,EAAIF,EAAO,OAASzE,GAAO,OAAOyE,EAAQE,CAAG,EACrHsC,EAAS,QAAQ,IACrBxC,EACAE,EACA5B,EACA4F,GAAMlE,CAAM,EAAIA,EAAS2D,CAC3B,EACA,OAAI3D,IAAWmB,GAAMwC,CAAQ,IACtBa,EAEMjJ,GAAO,WAAW+C,EAAOgC,CAAQ,GAC1CF,GAAQJ,EAAQ,MAAOE,EAAK5B,CAAK,EAFjC8B,GAAQJ,EAAQ,MAAOE,EAAK5B,CAAK,GAK9BkE,CACT,CACA,eAAexC,EAAQE,EAAK,CAC1B,IAAMsE,EAASjJ,GAAO,OAAOyE,EAAQE,CAAG,EACxCF,EAAOE,CAAG,EACV,IAAMsC,EAAS,QAAQ,eAAexC,EAAQE,CAAG,EACjD,OAAIsC,GAAUgC,GACZpE,GAAQJ,EAAQ,SAAUE,EAAK,MAAM,EAEhCsC,CACT,CACA,IAAIxC,EAAQE,EAAK,CACf,IAAMsC,EAAS,QAAQ,IAAIxC,EAAQE,CAAG,EACtC,OAAI,CAAC3E,GAAO,SAAS2E,CAAG,GAAK,CAACmD,GAAe,IAAInD,CAAG,IAClDH,GAAMC,EAAQ,MAAOE,CAAG,EAEnBsC,CACT,CACA,QAAQxC,EAAQ,CACd,OAAAD,GACEC,EACA,UACAzE,GAAO,QAAQyE,CAAM,EAAI,SAAWJ,EACtC,EACO,QAAQ,QAAQI,CAAM,CAC/B,CACF,EACMyE,GAAN,cAAsCjB,EAAoB,CACxD,YAAYK,EAAa,GAAO,CAC9B,MAAM,GAAMA,CAAU,CACxB,CACA,IAAI7D,EAAQE,EAAK,CACf,MAAO,EACT,CACA,eAAeF,EAAQE,EAAK,CAC1B,MAAO,EACT,CACF,EACMwE,GAAkC,IAAIL,GACtCM,GAAmC,IAAIF,GACvCG,GAA0C,IAAIP,GAAuB,EAAI,EACzEQ,GAA0C,IAAIJ,GAAwB,EAAI,EAE1EK,GAAaxG,GAAUA,EACvByG,GAAYjD,GAAM,QAAQ,eAAeA,CAAC,EAChD,SAASkD,GAAqB3C,EAAQuB,EAAaC,EAAY,CAC7D,OAAO,YAAYnC,EAAM,CACvB,IAAM1B,EAAS,KAAK,QACdiF,EAAY9D,GAAMnB,CAAM,EACxBkF,EAAc3J,GAAO,MAAM0J,CAAS,EACpCE,EAAS9C,IAAW,WAAaA,IAAW,OAAO,UAAY6C,EAC/DE,EAAY/C,IAAW,QAAU6C,EACjCG,EAAgBrF,EAAOqC,CAAM,EAAE,GAAGX,CAAI,EACtC4D,EAAOzB,EAAaiB,GAAYlB,EAAc2B,GAAalE,GACjE,OAACuC,GAAe7D,GACdkF,EACA,UACAG,EAAYvF,GAAsBD,EACpC,EACO,CAEL,MAAO,CACL,GAAM,CAAE,MAAAtB,EAAO,KAAAkH,CAAK,EAAIH,EAAc,KAAK,EAC3C,OAAOG,EAAO,CAAE,MAAAlH,EAAO,KAAAkH,CAAK,EAAI,CAC9B,MAAOL,EAAS,CAACG,EAAKhH,EAAM,CAAC,CAAC,EAAGgH,EAAKhH,EAAM,CAAC,CAAC,CAAC,EAAIgH,EAAKhH,CAAK,EAC7D,KAAAkH,CACF,CACF,EAEA,CAAC,OAAO,QAAQ,GAAI,CAClB,OAAO,IACT,CACF,CACF,CACF,CACA,SAASC,GAAqBxF,EAAM,CAClC,OAAO,YAAYyB,EAAM,CACvB,OAAOzB,IAAS,SAAW,GAAQA,IAAS,QAAU,OAAS,IACjE,CACF,CACA,SAASyF,GAAuBvB,EAAUwB,EAAS,CACjD,IAAMC,EAAmB,CACvB,IAAI1F,EAAK,CACP,IAAMF,EAAS,KAAK,QACdiF,EAAY9D,GAAMnB,CAAM,EACxB6F,EAAS1E,GAAMjB,CAAG,EACnBiE,IACC5I,GAAO,WAAW2E,EAAK2F,CAAM,GAC/B9F,GAAMkF,EAAW,MAAO/E,CAAG,EAE7BH,GAAMkF,EAAW,MAAOY,CAAM,GAEhC,GAAM,CAAE,IAAAC,CAAI,EAAIf,GAASE,CAAS,EAC5BK,EAAOK,EAAUb,GAAYX,EAAWoB,GAAalE,GAC3D,GAAIyE,EAAI,KAAKb,EAAW/E,CAAG,EACzB,OAAOoF,EAAKtF,EAAO,IAAIE,CAAG,CAAC,EACtB,GAAI4F,EAAI,KAAKb,EAAWY,CAAM,EACnC,OAAOP,EAAKtF,EAAO,IAAI6F,CAAM,CAAC,EACrB7F,IAAWiF,GACpBjF,EAAO,IAAIE,CAAG,CAElB,EACA,IAAI,MAAO,CACT,IAAMF,EAAS,KAAK,QACpB,OAACmE,GAAYpE,GAAMoB,GAAMnB,CAAM,EAAG,UAAWJ,EAAW,EACjD,QAAQ,IAAII,EAAQ,OAAQA,CAAM,CAC3C,EACA,IAAIE,EAAK,CACP,IAAMF,EAAS,KAAK,QACdiF,EAAY9D,GAAMnB,CAAM,EACxB6F,EAAS1E,GAAMjB,CAAG,EACxB,OAAKiE,IACC5I,GAAO,WAAW2E,EAAK2F,CAAM,GAC/B9F,GAAMkF,EAAW,MAAO/E,CAAG,EAE7BH,GAAMkF,EAAW,MAAOY,CAAM,GAEzB3F,IAAQ2F,EAAS7F,EAAO,IAAIE,CAAG,EAAIF,EAAO,IAAIE,CAAG,GAAKF,EAAO,IAAI6F,CAAM,CAChF,EACA,QAAQE,EAAUnE,EAAS,CACzB,IAAMoE,EAAW,KACXhG,EAASgG,EAAS,QAClBf,EAAY9D,GAAMnB,CAAM,EACxBsF,EAAOK,EAAUb,GAAYX,EAAWoB,GAAalE,GAC3D,OAAC8C,GAAYpE,GAAMkF,EAAW,UAAWrF,EAAW,EAC7CI,EAAO,QAAQ,CAAC1B,EAAO4B,IACrB6F,EAAS,KAAKnE,EAAS0D,EAAKhH,CAAK,EAAGgH,EAAKpF,CAAG,EAAG8F,CAAQ,CAC/D,CACH,CACF,EACA,OAAAzK,GAAO,OACLqK,EACAzB,EAAW,CACT,IAAKsB,GAAqB,KAAK,EAC/B,IAAKA,GAAqB,KAAK,EAC/B,OAAQA,GAAqB,QAAQ,EACrC,MAAOA,GAAqB,OAAO,CACrC,EAAI,CACF,IAAInH,EAAO,CACL,CAACqH,GAAW,CAACvE,GAAU9C,CAAK,GAAK,CAACiG,GAAWjG,CAAK,IACpDA,EAAQ6C,GAAM7C,CAAK,GAErB,IAAM0B,EAASmB,GAAM,IAAI,EAGzB,OAFc4D,GAAS/E,CAAM,EACR,IAAI,KAAKA,EAAQ1B,CAAK,IAEzC0B,EAAO,IAAI1B,CAAK,EAChB8B,GAAQJ,EAAQ,MAAO1B,EAAOA,CAAK,GAE9B,IACT,EACA,IAAI4B,EAAK5B,EAAO,CACV,CAACqH,GAAW,CAACvE,GAAU9C,CAAK,GAAK,CAACiG,GAAWjG,CAAK,IACpDA,EAAQ6C,GAAM7C,CAAK,GAErB,IAAM0B,EAASmB,GAAM,IAAI,EACnB,CAAE,IAAA2E,EAAK,IAAAG,CAAI,EAAIlB,GAAS/E,CAAM,EAChCwE,EAASsB,EAAI,KAAK9F,EAAQE,CAAG,EAC5BsE,IACHtE,EAAMiB,GAAMjB,CAAG,EACfsE,EAASsB,EAAI,KAAK9F,EAAQE,CAAG,GAE/B,IAAMI,EAAW2F,EAAI,KAAKjG,EAAQE,CAAG,EACrC,OAAAF,EAAO,IAAIE,EAAK5B,CAAK,EAChBkG,EAEMjJ,GAAO,WAAW+C,EAAOgC,CAAQ,GAC1CF,GAAQJ,EAAQ,MAAOE,EAAK5B,CAAK,EAFjC8B,GAAQJ,EAAQ,MAAOE,EAAK5B,CAAK,EAI5B,IACT,EACA,OAAO4B,EAAK,CACV,IAAMF,EAASmB,GAAM,IAAI,EACnB,CAAE,IAAA2E,EAAK,IAAAG,CAAI,EAAIlB,GAAS/E,CAAM,EAChCwE,EAASsB,EAAI,KAAK9F,EAAQE,CAAG,EAC5BsE,IACHtE,EAAMiB,GAAMjB,CAAG,EACfsE,EAASsB,EAAI,KAAK9F,EAAQE,CAAG,GAE/B+F,GAAMA,EAAI,KAAKjG,EAAQE,CAAG,EAC1B,IAAMsC,EAASxC,EAAO,OAAOE,CAAG,EAChC,OAAIsE,GACFpE,GAAQJ,EAAQ,SAAUE,EAAK,MAAM,EAEhCsC,CACT,EACA,OAAQ,CACN,IAAMxC,EAASmB,GAAM,IAAI,EACnB+E,EAAWlG,EAAO,OAAS,EAC3BwC,EAASxC,EAAO,MAAM,EAC5B,OAAIkG,GACF9F,GACEJ,EACA,QACA,OACA,MAAM,EAEHwC,CACT,CACF,CACF,EACwB,CACtB,OACA,SACA,UACA,OAAO,QACT,EACgB,QAASH,GAAW,CAClCuD,EAAiBvD,CAAM,EAAI2C,GAAqB3C,EAAQ8B,EAAUwB,CAAO,CAC3E,CAAC,EACMC,CACT,CACA,SAASO,GAA4BvC,EAAa+B,EAAS,CACzD,IAAMC,EAAmBF,GAAuB9B,EAAa+B,CAAO,EACpE,MAAO,CAAC3F,EAAQE,EAAKyD,IACfzD,IAAQ,iBACH,CAAC0D,EACC1D,IAAQ,iBACV0D,EACE1D,IAAQ,UACVF,EAEF,QAAQ,IACbzE,GAAO,OAAOqK,EAAkB1F,CAAG,GAAKA,KAAOF,EAAS4F,EAAmB5F,EAC3EE,EACAyD,CACF,CAEJ,CACA,IAAMyC,GAA4B,CAChC,IAAqBD,GAA4B,GAAO,EAAK,CAC/D,EACME,GAA4B,CAChC,IAAqBF,GAA4B,GAAO,EAAI,CAC9D,EACMG,GAA6B,CACjC,IAAqBH,GAA4B,GAAM,EAAK,CAC9D,EACMI,GAAoC,CACxC,IAAqBJ,GAA4B,GAAM,EAAI,CAC7D,EAEMlC,GAA8B,IAAI,QAClCD,GAAqC,IAAI,QACzCD,GAA8B,IAAI,QAClCD,GAAqC,IAAI,QAC/C,SAAS0C,GAAcC,EAAS,CAC9B,OAAQA,EAAS,CACf,IAAK,SACL,IAAK,QACH,MAAO,GACT,IAAK,MACL,IAAK,MACL,IAAK,UACL,IAAK,UACH,MAAO,GACT,QACE,MAAO,EACX,CACF,CACA,SAASC,GAAcpI,EAAO,CAC5B,OAAOA,EAAM,UAAe,CAAC,OAAO,aAAaA,CAAK,EAAI,EAAkBkI,GAAcjL,GAAO,UAAU+C,CAAK,CAAC,CACnH,CACA,SAAS8F,GAASpE,EAAQ,CACxB,OAAIuE,GAAWvE,CAAM,EACZA,EAEF2G,GACL3G,EACA,GACA0E,GACA0B,GACAnC,EACF,CACF,CACA,SAAS2C,GAAgB5G,EAAQ,CAC/B,OAAO2G,GACL3G,EACA,GACA4E,GACAyB,GACArC,EACF,CACF,CACA,SAASG,GAASnE,EAAQ,CACxB,OAAO2G,GACL3G,EACA,GACA2E,GACA2B,GACAvC,EACF,CACF,CACA,SAAS8C,GAAgB7G,EAAQ,CAC/B,OAAO2G,GACL3G,EACA,GACA6E,GACA0B,GACAzC,EACF,CACF,CACA,SAAS6C,GAAqB3G,EAAQ4D,EAAakD,EAAcC,EAAoBC,EAAU,CAI7F,GAHI,CAACzL,GAAO,SAASyE,CAAM,GAGvBA,EAAO,SAAc,EAAE4D,GAAe5D,EAAO,gBAC/C,OAAOA,EAET,IAAMiH,EAAaP,GAAc1G,CAAM,EACvC,GAAIiH,IAAe,EACjB,OAAOjH,EAET,IAAMkH,EAAgBF,EAAS,IAAIhH,CAAM,EACzC,GAAIkH,EACF,OAAOA,EAET,IAAMC,EAAQ,IAAI,MAChBnH,EACAiH,IAAe,EAAqBF,EAAqBD,CAC3D,EACA,OAAAE,EAAS,IAAIhH,EAAQmH,CAAK,EACnBA,CACT,CACA,SAASC,GAAW9I,EAAO,CACzB,OAAIiG,GAAWjG,CAAK,EACX8I,GAAW9I,EAAM,OAAU,EAE7B,CAAC,EAAEA,GAASA,EAAM,eAC3B,CACA,SAASiG,GAAWjG,EAAO,CACzB,MAAO,CAAC,EAAEA,GAASA,EAAM,eAC3B,CACA,SAAS8C,GAAU9C,EAAO,CACxB,MAAO,CAAC,EAAEA,GAASA,EAAM,cAC3B,CACA,SAAS6E,GAAQ7E,EAAO,CACtB,OAAOA,EAAQ,CAAC,CAACA,EAAM,QAAa,EACtC,CACA,SAAS6C,GAAM6E,EAAU,CACvB,IAAM9E,EAAM8E,GAAYA,EAAS,QACjC,OAAO9E,EAAMC,GAAMD,CAAG,EAAI8E,CAC5B,CACA,SAASqB,GAAQ/I,EAAO,CACtB,MAAI,CAAC/C,GAAO,OAAO+C,EAAO,UAAU,GAAK,OAAO,aAAaA,CAAK,GAChE/C,GAAO,IAAI+C,EAAO,WAAY,EAAI,EAE7BA,CACT,CACA,IAAM+C,GAAc/C,GAAU/C,GAAO,SAAS+C,CAAK,EAAI8F,GAAS9F,CAAK,EAAIA,EACnEiH,GAAcjH,GAAU/C,GAAO,SAAS+C,CAAK,EAAI6F,GAAS7F,CAAK,EAAIA,EAEzE,SAAS4F,GAAM,EAAG,CAChB,OAAO,EAAI,EAAE,YAAiB,GAAO,EACvC,CACA,SAASoD,GAAIhJ,EAAO,CAClB,OAAOiJ,GAAUjJ,EAAO,EAAK,CAC/B,CACA,SAASkJ,GAAWlJ,EAAO,CACzB,OAAOiJ,GAAUjJ,EAAO,EAAI,CAC9B,CACA,SAASiJ,GAAUE,EAAU9B,EAAS,CACpC,OAAIzB,GAAMuD,CAAQ,EACTA,EAEF,IAAIC,GAAQD,EAAU9B,CAAO,CACtC,CACA,IAAM+B,GAAN,KAAc,CACZ,YAAYpJ,EAAOuF,EAAY,CAC7B,KAAK,IAAM,IAAItE,GACf,KAAK,UAAe,GACpB,KAAK,cAAmB,GACxB,KAAK,UAAYsE,EAAavF,EAAQ6C,GAAM7C,CAAK,EACjD,KAAK,OAASuF,EAAavF,EAAQ+C,GAAW/C,CAAK,EACnD,KAAK,cAAmBuF,CAC1B,CACA,IAAI,OAAQ,CAER,YAAK,IAAI,MAAM,EAEV,KAAK,MACd,CACA,IAAI,MAAMxD,EAAU,CAClB,IAAMC,EAAW,KAAK,UAChBqH,EAAiB,KAAK,eAAoBvG,GAAUf,CAAQ,GAAKkE,GAAWlE,CAAQ,EAC1FA,EAAWsH,EAAiBtH,EAAWc,GAAMd,CAAQ,EACjD9E,GAAO,WAAW8E,EAAUC,CAAQ,IACtC,KAAK,UAAYD,EACjB,KAAK,OAASsH,EAAiBtH,EAAWgB,GAAWhB,CAAQ,EAE3D,KAAK,IAAI,QAAQ,EAGvB,CACF,EACA,SAASuH,GAAWC,EAAM,CACpBA,EAAK,KAELA,EAAK,IAAI,QAAQ,CAGvB,CACA,SAASC,GAAMD,EAAM,CACnB,OAAO3D,GAAM2D,CAAI,EAAIA,EAAK,MAAQA,CACpC,CACA,SAASE,GAAQC,EAAQ,CACvB,OAAOzM,GAAO,WAAWyM,CAAM,EAAIA,EAAO,EAAIF,GAAME,CAAM,CAC5D,CACA,IAAMC,GAAwB,CAC5B,IAAK,CAACjI,EAAQE,EAAKyD,IAAazD,IAAQ,UAAYF,EAAS8H,GAAM,QAAQ,IAAI9H,EAAQE,EAAKyD,CAAQ,CAAC,EACrG,IAAK,CAAC3D,EAAQE,EAAK5B,EAAOqF,IAAa,CACrC,IAAMrD,EAAWN,EAAOE,CAAG,EAC3B,OAAIgE,GAAM5D,CAAQ,GAAK,CAAC4D,GAAM5F,CAAK,GACjCgC,EAAS,MAAQhC,EACV,IAEA,QAAQ,IAAI0B,EAAQE,EAAK5B,EAAOqF,CAAQ,CAEnD,CACF,EACA,SAASuE,GAAUC,EAAgB,CACjC,OAAOf,GAAWe,CAAc,EAAIA,EAAiB,IAAI,MAAMA,EAAgBF,EAAqB,CACtG,CACA,IAAMG,GAAN,KAAoB,CAClB,YAAYC,EAAS,CACnB,KAAK,UAAe,GACpB,KAAK,OAAS,OACd,IAAMjK,EAAM,KAAK,IAAM,IAAImB,GACrB,CAAE,IAAA0G,EAAK,IAAAqC,CAAI,EAAID,EAAQjK,EAAI,MAAM,KAAKA,CAAG,EAAGA,EAAI,QAAQ,KAAKA,CAAG,CAAC,EACvE,KAAK,KAAO6H,EACZ,KAAK,KAAOqC,CACd,CACA,IAAI,OAAQ,CACV,OAAO,KAAK,OAAS,KAAK,KAAK,CACjC,CACA,IAAI,MAAMC,EAAQ,CAChB,KAAK,KAAKA,CAAM,CAClB,CACF,EACA,SAASC,GAAUH,EAAS,CAC1B,OAAO,IAAID,GAAcC,CAAO,CAClC,CACA,SAASI,GAAO3H,EAAQ,CACtB,IAAM4H,EAAMnN,GAAO,QAAQuF,CAAM,EAAI,IAAI,MAAMA,EAAO,MAAM,EAAI,CAAC,EACjE,QAAWZ,KAAOY,EAChB4H,EAAIxI,CAAG,EAAIyI,GAAc7H,EAAQZ,CAAG,EAEtC,OAAOwI,CACT,CACA,IAAME,GAAN,KAAoB,CAClB,YAAYC,EAASC,EAAMC,EAAe,CACxC,KAAK,QAAUF,EACf,KAAK,KAAOC,EACZ,KAAK,cAAgBC,EACrB,KAAK,UAAe,GACpB,KAAK,OAAS,MAChB,CACA,IAAI,OAAQ,CACV,IAAMC,EAAM,KAAK,QAAQ,KAAK,IAAI,EAClC,OAAO,KAAK,OAASA,IAAQ,OAAS,KAAK,cAAgBA,CAC7D,CACA,IAAI,MAAMT,EAAQ,CAChB,KAAK,QAAQ,KAAK,IAAI,EAAIA,CAC5B,CACA,IAAI,KAAM,CACR,OAAO1H,GAAmBM,GAAM,KAAK,OAAO,EAAG,KAAK,IAAI,CAC1D,CACF,EACM8H,GAAN,KAAoB,CAClB,YAAYC,EAAS,CACnB,KAAK,QAAUA,EACf,KAAK,UAAe,GACpB,KAAK,eAAoB,GACzB,KAAK,OAAS,MAChB,CACA,IAAI,OAAQ,CACV,OAAO,KAAK,OAAS,KAAK,QAAQ,CACpC,CACF,EACA,SAASC,GAAMnB,EAAQ9H,EAAKkJ,EAAc,CACxC,OAAIlF,GAAM8D,CAAM,EACPA,EACEzM,GAAO,WAAWyM,CAAM,EAC1B,IAAIiB,GAAcjB,CAAM,EACtBzM,GAAO,SAASyM,CAAM,GAAK,UAAU,OAAS,EAChDW,GAAcX,EAAQ9H,EAAKkJ,CAAY,EAEvC9B,GAAIU,CAAM,CAErB,CACA,SAASW,GAAcX,EAAQ9H,EAAKkJ,EAAc,CAChD,IAAMJ,EAAMhB,EAAO9H,CAAG,EACtB,OAAOgE,GAAM8E,CAAG,EAAIA,EAAM,IAAIJ,GAAcZ,EAAQ9H,EAAKkJ,CAAY,CACvE,CAEA,IAAMC,GAAN,KAAsB,CACpB,YAAYxN,EAAIyN,EAAQC,EAAO,CAC7B,KAAK,GAAK1N,EACV,KAAK,OAASyN,EAId,KAAK,OAAS,OAId,KAAK,IAAM,IAAI/J,GAAI,IAAI,EAIvB,KAAK,UAAY,GAMjB,KAAK,KAAO,OAIZ,KAAK,SAAW,OAIhB,KAAK,MAAQ,GAIb,KAAK,cAAgBpB,GAAgB,EAIrC,KAAK,KAAO,OAEZ,KAAK,OAAS,KACd,KAAK,eAAoB,CAACmL,EAC1B,KAAK,MAAQC,CACf,CAIA,QAAS,CAEP,GADA,KAAK,OAAS,GACV,EAAE,KAAK,MAAQ,IACnBlN,KAAc,KACZ,OAAAI,GAAM,KAAM,EAAI,EACT,EAEX,CACA,IAAI,OAAQ,CACV,IAAMO,EAAO,KAAK,IAAI,MAAM,EAC5B,OAAAiB,GAAgB,IAAI,EAChBjB,IACFA,EAAK,QAAU,KAAK,IAAI,SAEnB,KAAK,MACd,CACA,IAAI,MAAMqD,EAAU,CACd,KAAK,QACP,KAAK,OAAOA,CAAQ,CAExB,CACF,EACA,SAASnC,GAASsL,EAAiBC,EAAcF,EAAQ,GAAO,CAC9D,IAAIG,EACAJ,EACJ,OAAI/N,GAAO,WAAWiO,CAAe,EACnCE,EAASF,GAETE,EAASF,EAAgB,IACzBF,EAASE,EAAgB,KAEd,IAAIH,GAAgBK,EAAQJ,EAAQC,CAAK,CAExD,CAEA,IAAMI,GAAe,CACnB,IAAO,MACP,IAAO,MACP,QAAW,SACb,EACMC,GAAiB,CACrB,IAAO,MACP,IAAO,MACP,OAAU,SACV,MAAS,OACX,EACMC,GAAgB,CACpB,KAAQ,WACR,YAAe,iBACf,YAAe,iBACf,WAAc,gBACd,IAAO,UACP,OAAU,WACZ,EAEMC,GAAkB,CACtB,aAAgB,EAChB,EAAK,eACL,eAAkB,EAClB,EAAK,iBACL,cAAiB,EACjB,EAAK,eACP,EACMC,GAAwB,CAAC,EACzBC,GAA6B,IAAI,QACnCC,GACJ,SAASC,IAAoB,CAC3B,OAAOD,EACT,CACA,SAASE,GAAiBC,EAAWhO,EAAe,GAAOiO,EAAQJ,GAAe,CAChF,GAAII,EAAO,CACT,IAAIC,EAAWN,GAAW,IAAIK,CAAK,EAC9BC,GAAUN,GAAW,IAAIK,EAAOC,EAAW,CAAC,CAAC,EAClDA,EAAS,KAAKF,CAAS,CACzB,CACF,CACA,SAASG,GAAMvC,EAAQwC,EAAI5L,EAAUrD,GAAO,UAAW,CACrD,GAAM,CAAE,UAAAkP,EAAW,KAAAC,EAAM,KAAAC,EAAM,UAAAC,EAAW,WAAAC,EAAY,KAAAC,CAAK,EAAIlM,EACzDmM,EAAkBC,GAClBN,EAAaM,EACb5J,GAAU4J,CAAO,GAAKN,IAAS,IAASA,IAAS,EAC5CO,GAASD,EAAS,CAAC,EACrBC,GAASD,CAAO,EAErBrM,EACA+K,EACArK,EACA6L,EACAC,EAAe,GACfC,EAAgB,GA4CpB,GA3CIlH,GAAM8D,CAAM,GACd0B,EAAS,IAAM1B,EAAO,MACtBmD,EAAe/J,GAAU4G,CAAM,GACtBZ,GAAWY,CAAM,GAC1B0B,EAAS,IAAMqB,EAAe/C,CAAM,EACpCmD,EAAe,IACN5P,GAAO,QAAQyM,CAAM,GAC9BoD,EAAgB,GAChBD,EAAenD,EAAO,KAAMqD,GAAMjE,GAAWiE,CAAC,GAAKjK,GAAUiK,CAAC,CAAC,EAC/D3B,EAAS,IAAM1B,EAAO,IAAKqD,GAAM,CAC/B,GAAInH,GAAMmH,CAAC,EACT,OAAOA,EAAE,MACJ,GAAIjE,GAAWiE,CAAC,EACrB,OAAON,EAAeM,CAAC,EAClB,GAAI9P,GAAO,WAAW8P,CAAC,EAC5B,OAAOP,EAAOA,EAAKO,EAAG,CAAC,EAAIA,EAAE,CAEjC,CAAC,GACQ9P,GAAO,WAAWyM,CAAM,EAC7BwC,EACFd,EAASoB,EAAO,IAAMA,EAAK9C,EAAQ,CAAC,EAAIA,EAExC0B,EAAS,IAAM,CACb,GAAIrK,EAAS,CACXJ,GAAc,EACd,GAAI,CACFI,EAAQ,CACV,QAAE,CACAF,GAAc,CAChB,CACF,CACA,IAAMmM,EAAgBrB,GACtBA,GAAgBtL,EAChB,GAAI,CACF,OAAOmM,EAAOA,EAAK9C,EAAQ,EAAG,CAACkD,CAAY,CAAC,EAAIlD,EAAOkD,CAAY,CACrE,QAAE,CACAjB,GAAgBqB,CAClB,CACF,EAGF5B,EAASnO,GAAO,KAEdiP,GAAME,EAAM,CACd,IAAMa,EAAa7B,EACb8B,EAAQd,IAAS,GAAO,IAAWA,EACzChB,EAAS,IAAMuB,GAASM,EAAW,EAAGC,CAAK,CAC7C,CACA,IAAMC,EAAQvP,GAAgB,EACxBwP,EAAc,IAAM,CACxB/M,EAAO,KAAK,EACR8M,GAASA,EAAM,QACjBlQ,GAAO,OAAOkQ,EAAM,QAAS9M,CAAM,CAEvC,EACA,GAAIgM,GAAQH,EAAI,CACd,IAAMmB,EAAMnB,EACZA,EAAK,IAAI9I,IAAS,CAChBiK,EAAI,GAAGjK,CAAI,EACXgK,EAAY,CACd,CACF,CACA,IAAIpL,EAAW8K,EAAgB,IAAI,MAAMpD,EAAO,MAAM,EAAE,KAAK+B,EAAqB,EAAIA,GAChF6B,EAAOC,GAAsB,CACjC,GAAI,IAAElN,EAAO,MAAQ,IAAM,CAACA,EAAO,OAAS,CAACkN,GAG7C,GAAIrB,EAAI,CACN,IAAMnK,EAAW1B,EAAO,IAAI,EAC5B,GAAI+L,GAAQS,IAAiBC,EAAgB/K,EAAS,KAAK,CAACyB,EAAGnG,IAAMJ,GAAO,WAAWuG,EAAGxB,EAAS3E,CAAC,CAAC,CAAC,EAAIJ,GAAO,WAAW8E,EAAUC,CAAQ,GAAI,CAC5IjB,GACFA,EAAQ,EAEV,IAAMyM,EAAiB7B,GACvBA,GAAgBtL,EAChB,GAAI,CACF,IAAM+C,EAAO,CACXrB,EAEAC,IAAayJ,GAAwB,OAASqB,GAAiB9K,EAAS,CAAC,IAAMyJ,GAAwB,CAAC,EAAIzJ,EAC5G4K,CACF,EACA5K,EAAWD,EACXyK,EAAOA,EAAKN,EAAI,EAAG9I,CAAI,EAErB8I,EAAG,GAAG9I,CAAI,CAEd,QAAE,CACAuI,GAAgB6B,CAClB,CACF,CACF,MACEnN,EAAO,IAAI,CAEf,EACA,OAAIkM,GACFA,EAAWe,CAAG,EAEhBjN,EAAS,IAAInC,GAAekN,CAAM,EAClC/K,EAAO,UAAYiM,EAAY,IAAMA,EAAUgB,EAAK,EAAK,EAAIA,EAC7DV,EAAgBrP,GAAOsO,GAAiBtO,EAAI,GAAO8C,CAAM,EACzDU,EAAUV,EAAO,OAAS,IAAM,CAC9B,IAAM2L,EAAWN,GAAW,IAAIrL,CAAM,EACtC,GAAI2L,EAAU,CACZ,GAAIQ,EACFA,EAAKR,EAAU,CAAC,MAEhB,SAAWyB,KAAYzB,EAAUyB,EAAS,EAE5C/B,GAAW,OAAOrL,CAAM,CAC1B,CACF,EACI6L,EACEC,EACFmB,EAAI,EAAI,EAERtL,EAAW3B,EAAO,IAAI,EAEfiM,EACTA,EAAUgB,EAAI,KAAK,KAAM,EAAI,EAAG,EAAI,EAEpCjN,EAAO,IAAI,EAEb+M,EAAY,MAAQ/M,EAAO,MAAM,KAAKA,CAAM,EAC5C+M,EAAY,OAAS/M,EAAO,OAAO,KAAKA,CAAM,EAC9C+M,EAAY,KAAOA,EACZA,CACT,CACA,SAAST,GAAS3M,EAAOkN,EAAQ,IAAUQ,EAAM,CAK/C,GAJIR,GAAS,GAAK,CAACjQ,GAAO,SAAS+C,CAAK,GAAKA,EAAM,WAGnD0N,EAAOA,GAAwB,IAAI,IAC/BA,EAAK,IAAI1N,CAAK,GAChB,OAAOA,EAIT,GAFA0N,EAAK,IAAI1N,CAAK,EACdkN,IACItH,GAAM5F,CAAK,EACb2M,GAAS3M,EAAM,MAAOkN,EAAOQ,CAAI,UACxBzQ,GAAO,QAAQ+C,CAAK,EAC7B,QAAS3C,EAAI,EAAGA,EAAI2C,EAAM,OAAQ3C,IAChCsP,GAAS3M,EAAM3C,CAAC,EAAG6P,EAAOQ,CAAI,UAEvBzQ,GAAO,MAAM+C,CAAK,GAAK/C,GAAO,MAAM+C,CAAK,EAClDA,EAAM,QAASwD,GAAM,CACnBmJ,GAASnJ,EAAG0J,EAAOQ,CAAI,CACzB,CAAC,UACQzQ,GAAO,cAAc+C,CAAK,EAAG,CACtC,QAAW4B,KAAO5B,EAChB2M,GAAS3M,EAAM4B,CAAG,EAAGsL,EAAOQ,CAAI,EAElC,QAAW9L,KAAO,OAAO,sBAAsB5B,CAAK,EAC9C,OAAO,UAAU,qBAAqB,KAAKA,EAAO4B,CAAG,GACvD+K,GAAS3M,EAAM4B,CAAG,EAAGsL,EAAOQ,CAAI,CAGtC,CACA,OAAO1N,CACT,CAEAhD,GAAQ,kBAAoBwE,GAC5BxE,GAAQ,YAAcgB,GACtBhB,GAAQ,YAAcG,GACtBH,GAAQ,YAAcsE,GACtBtE,GAAQ,oBAAsBuE,GAC9BvE,GAAQ,eAAiBkB,GACzBlB,GAAQ,cAAgBuO,GACxBvO,GAAQ,aAAeqO,GACvBrO,GAAQ,eAAiBsO,GACzBtO,GAAQ,gBAAkBwO,GAC1BxO,GAAQ,SAAW4C,GACnB5C,GAAQ,UAAYkN,GACpBlN,GAAQ,OAASqD,GACjBrD,GAAQ,YAAcW,GACtBX,GAAQ,eAAiB4D,GACzB5D,GAAQ,gBAAkBY,GAC1BZ,GAAQ,kBAAoB4O,GAC5B5O,GAAQ,QAAU6H,GAClB7H,GAAQ,WAAa8L,GACrB9L,GAAQ,WAAaiJ,GACrBjJ,GAAQ,MAAQ4I,GAChB5I,GAAQ,UAAY8F,GACpB9F,GAAQ,QAAU+L,GAClB/L,GAAQ,gBAAkB8D,GAC1B9D,GAAQ,eAAiBa,GACzBb,GAAQ,iBAAmB6O,GAC3B7O,GAAQ,cAAgB2D,GACxB3D,GAAQ,UAAY4M,GACpB5M,GAAQ,SAAW8I,GACnB9I,GAAQ,kBAAoB0F,GAC5B1F,GAAQ,SAAW6I,GACnB7I,GAAQ,IAAMgM,GACdhM,GAAQ,cAAgB6D,GACxB7D,GAAQ,gBAAkBsL,GAC1BtL,GAAQ,iBAAmBgG,GAC3BhG,GAAQ,gBAAkBuL,GAC1BvL,GAAQ,WAAakM,GACrBlM,GAAQ,KAAOyD,GACfzD,GAAQ,MAAQ6F,GAChB7F,GAAQ,WAAa+F,GACrB/F,GAAQ,WAAaiK,GACrBjK,GAAQ,MAAQ6N,GAChB7N,GAAQ,OAASmN,GACjBnN,GAAQ,QAAUyM,GAClBzM,GAAQ,MAAQyE,GAChBzE,GAAQ,SAAW2P,GACnB3P,GAAQ,QAAU8E,GAClB9E,GAAQ,WAAasM,GACrBtM,GAAQ,MAAQwM,GAChBxM,GAAQ,MAAQiP,KC7wDhB,IAAA0B,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAGEA,GAAO,QAAU,OCHnB,IAAAC,GAAAC,GAAAC,GAAA,cAOA,OAAO,eAAeA,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,EAE5D,IAAIC,EAAa,KACbC,EAAS,KAEb,SAASC,GAAmBC,EAAO,CACnC,CACA,SAASC,IAAoB,CAC7B,CACA,SAASC,GAAaC,EAAKC,EAAM,CAEjC,CAEA,IAAMC,GAAa,CACjB,eAAkB,EAClB,EAAK,iBACL,gBAAmB,EACnB,EAAK,kBACL,qBAAwB,EACxB,EAAK,uBACL,wBAA2B,EAC3B,EAAK,0BACL,WAAc,EACd,EAAK,aACL,eAAkB,EAClB,EAAK,iBACL,gBAAmB,EACnB,EAAK,kBACL,kBAAqB,GACrB,GAAM,oBACN,iBAAoB,GACpB,GAAM,mBACN,aAAgB,GAChB,GAAM,eACN,uBAA0B,GAC1B,GAAM,yBACN,UAAa,GACb,GAAM,YACN,iBAAoB,GACpB,GAAM,mBACN,oBAAuB,GACvB,GAAM,qBACR,EACMC,GAAqB,CACxB,GAAO,sBACP,GAAO,oBACP,EAAM,eACN,GAAO,mBACP,EAAM,eACN,GAAO,oBACP,EAAM,UACN,IAAQ,qBACR,GAAO,iBACP,EAAM,iBACN,GAAO,mBACP,GAAO,qBACP,IAAQ,qBACR,IAAQ,uBACR,EAAI,iBACJ,EAAI,kBACJ,EAAI,iBACJ,EAAI,mBACJ,EAAI,2BACJ,EAAI,uBACJ,EAAI,0BACJ,EAAI,aACJ,EAAI,iBACJ,EAAI,kBACJ,GAAK,mBACL,GAAK,kBACL,GAAK,eACL,GAAK,yBACL,GAAK,kBACL,GAAK,mBACL,GAAK,8BACR,EACA,SAASC,GAAsBC,EAAIC,EAAUL,EAAMM,EAAM,CACvD,GAAI,CACF,OAAOA,EAAOF,EAAG,GAAGE,CAAI,EAAIF,EAAG,CACjC,OAASG,EAAK,CACZC,GAAYD,EAAKF,EAAUL,CAAI,CACjC,CACF,CACA,SAASS,GAA2BL,EAAIC,EAAUL,EAAMM,EAAM,CAC5D,GAAIZ,EAAO,WAAWU,CAAE,EAAG,CACzB,IAAMM,EAAMP,GAAsBC,EAAIC,EAAUL,EAAMM,CAAI,EAC1D,OAAII,GAAOhB,EAAO,UAAUgB,CAAG,GAC7BA,EAAI,MAAOH,GAAQ,CACjBC,GAAYD,EAAKF,EAAUL,CAAI,CACjC,CAAC,EAEIU,CACT,CACA,GAAIhB,EAAO,QAAQU,CAAE,EAAG,CACtB,IAAMO,EAAS,CAAC,EAChB,QAASC,EAAI,EAAGA,EAAIR,EAAG,OAAQQ,IAC7BD,EAAO,KAAKF,GAA2BL,EAAGQ,CAAC,EAAGP,EAAUL,EAAMM,CAAI,CAAC,EAErE,OAAOK,CACT,CACF,CACA,SAASH,GAAYD,EAAKF,EAAUL,EAAMa,EAAa,GAAM,CAC3D,IAAMC,EAAeT,EAAWA,EAAS,MAAQ,KAC3C,CAAE,aAAAU,EAAc,gCAAAC,CAAgC,EAAIX,GAAYA,EAAS,WAAW,QAAUX,EAAO,UAC3G,GAAIW,EAAU,CACZ,IAAIY,EAAMZ,EAAS,OACba,EAAkBb,EAAS,MAC3Bc,EAAY,8CAA8CnB,CAAI,GACpE,KAAOiB,GAAK,CACV,IAAMG,EAAqBH,EAAI,GAC/B,GAAIG,GACF,QAASR,EAAI,EAAGA,EAAIQ,EAAmB,OAAQR,IAC7C,GAAIQ,EAAmBR,CAAC,EAAEL,EAAKW,EAAiBC,CAAS,IAAM,GAC7D,OAINF,EAAMA,EAAI,MACZ,CACA,GAAIF,EAAc,CAChBtB,EAAW,cAAc,EACzBU,GAAsBY,EAAc,KAAM,GAAI,CAC5CR,EACAW,EACAC,CACF,CAAC,EACD1B,EAAW,cAAc,EACzB,MACF,CACF,CACA4B,GAASd,EAAKP,EAAMc,EAAcD,EAAYG,CAA+B,CAC/E,CACA,SAASK,GAASd,EAAKP,EAAMc,EAAcD,EAAa,GAAMS,EAAc,GAAO,CACjF,GAAIA,EACF,MAAMf,EAEN,QAAQ,MAAMA,CAAG,CAErB,CAEA,IAAMgB,GAAQ,CAAC,EACXC,GAAa,GACXC,GAAsB,CAAC,EACzBC,GAAqB,KACrBC,GAAiB,EACfC,GAAkC,QAAQ,QAAQ,EACpDC,GAAsB,KAC1B,SAASC,GAAS1B,EAAI,CACpB,IAAM2B,EAAIF,IAAuBD,GACjC,OAAOxB,EAAK2B,EAAE,KAAK,KAAO3B,EAAG,KAAK,IAAI,EAAIA,CAAE,EAAI2B,CAClD,CACA,SAASC,GAAmBC,EAAI,CAC9B,IAAIC,EAAQV,GAAa,EACrBW,EAAMZ,GAAM,OAChB,KAAOW,EAAQC,GAAK,CAClB,IAAMC,EAASF,EAAQC,IAAQ,EACzBE,EAAYd,GAAMa,CAAM,EACxBE,EAAcC,GAAMF,CAAS,EAC/BC,EAAcL,GAAMK,IAAgBL,GAAMI,EAAU,MAAQ,EAC9DH,EAAQE,EAAS,EAEjBD,EAAMC,CAEV,CACA,OAAOF,CACT,CACA,SAASM,GAASC,EAAK,CACrB,GAAI,EAAEA,EAAI,MAAQ,GAAI,CACpB,IAAMC,EAAQH,GAAME,CAAG,EACjBE,EAAUpB,GAAMA,GAAM,OAAS,CAAC,EAClC,CAACoB,GACL,EAAEF,EAAI,MAAQ,IAAMC,GAASH,GAAMI,CAAO,EACxCpB,GAAM,KAAKkB,CAAG,EAEdlB,GAAM,OAAOS,GAAmBU,CAAK,EAAG,EAAGD,CAAG,EAEhDA,EAAI,OAAS,EACbG,GAAW,CACb,CACF,CACA,SAASA,IAAa,CACff,KACHA,GAAsBD,GAAgB,KAAKiB,EAAS,EAExD,CACA,SAASC,GAAiBC,EAAI,CACvBrD,EAAO,QAAQqD,CAAE,EAQpBtB,GAAoB,KAAK,GAAGsB,CAAE,EAP1BrB,IAAsBqB,EAAG,KAAO,GAClCrB,GAAmB,OAAOC,GAAiB,EAAG,EAAGoB,CAAE,EACxCA,EAAG,MAAQ,IACtBtB,GAAoB,KAAKsB,CAAE,EAC3BA,EAAG,OAAS,GAKhBH,GAAW,CACb,CACA,SAASI,GAAiB3C,EAAU4C,EAAMrC,EAAIY,GAAa,EAAG,CAC5D,KAAOZ,EAAIW,GAAM,OAAQX,IAAK,CAC5B,IAAMmC,EAAKxB,GAAMX,CAAC,EAClB,GAAImC,GAAMA,EAAG,MAAQ,EAAG,CACtB,GAAI1C,GAAY0C,EAAG,KAAO1C,EAAS,IACjC,SAEFkB,GAAM,OAAOX,EAAG,CAAC,EACjBA,IACImC,EAAG,MAAQ,IACbA,EAAG,OAAS,IAEdA,EAAG,EACGA,EAAG,MAAQ,IACfA,EAAG,OAAS,GAEhB,CACF,CACF,CACA,SAASG,GAAkBD,EAAM,CAC/B,GAAIxB,GAAoB,OAAQ,CAC9B,IAAM0B,EAAU,CAAC,GAAG,IAAI,IAAI1B,EAAmB,CAAC,EAAE,KAChD,CAAC2B,EAAGC,IAAMd,GAAMa,CAAC,EAAIb,GAAMc,CAAC,CAC9B,EAEA,GADA5B,GAAoB,OAAS,EACzBC,GAAoB,CACtBA,GAAmB,KAAK,GAAGyB,CAAO,EAClC,MACF,CAEA,IADAzB,GAAqByB,EAChBxB,GAAiB,EAAGA,GAAiBD,GAAmB,OAAQC,KAAkB,CACrF,IAAMoB,EAAKrB,GAAmBC,EAAc,EACxCoB,EAAG,MAAQ,IACbA,EAAG,OAAS,IAERA,EAAG,MAAQ,GAAIA,EAAG,EACxBA,EAAG,OAAS,EACd,CACArB,GAAqB,KACrBC,GAAiB,CACnB,CACF,CACA,IAAMY,GAASE,GAAQA,EAAI,IAAM,KAAOA,EAAI,MAAQ,EAAI,GAAK,IAAWA,EAAI,GAC5E,SAASI,GAAUI,EAAM,CACvB,GAAI,CACF,IAAKzB,GAAa,EAAGA,GAAaD,GAAM,OAAQC,KAAc,CAC5D,IAAMiB,EAAMlB,GAAMC,EAAU,EACxBiB,GAAO,EAAEA,EAAI,MAAQ,KAEnBA,EAAI,MAAQ,IACdA,EAAI,OAAS,IAEftC,GACEsC,EACAA,EAAI,EACJA,EAAI,EAAI,GAAK,EACf,EACMA,EAAI,MAAQ,IAChBA,EAAI,OAAS,IAGnB,CACF,QAAE,CACA,KAAOjB,GAAaD,GAAM,OAAQC,KAAc,CAC9C,IAAMiB,EAAMlB,GAAMC,EAAU,EACxBiB,IACFA,EAAI,OAAS,GAEjB,CACAjB,GAAa,GACbD,GAAM,OAAS,EACf2B,GAAkB,EAClBrB,GAAsB,MAClBN,GAAM,QAAUE,GAAoB,SACtCoB,GAAU,CAEd,CACF,CAEA,IAAIS,GAA2B,KAC3BC,GAAiB,KACrB,SAASC,GAA4BnD,EAAU,CAC7C,IAAMoD,EAAOH,GACb,OAAAA,GAA2BjD,EAC3BkD,GAAiBlD,GAAYA,EAAS,KAAK,WAAa,KACjDoD,CACT,CACA,SAASC,GAAYzB,EAAI,CACvBsB,GAAiBtB,CACnB,CACA,SAAS0B,IAAa,CACpBJ,GAAiB,IACnB,CACA,IAAMK,GAAeC,GAAQC,GAC7B,SAASA,GAAQ1D,EAAI2D,EAAMT,GAA0BU,EAAiB,CAEpE,GADI,CAACD,GACD3D,EAAG,GACL,OAAOA,EAET,IAAM6D,EAAsB,IAAI3D,IAAS,CACnC2D,EAAoB,IACtBC,GAAiB,EAAE,EAErB,IAAMC,EAAeX,GAA4BO,CAAG,EAChDrD,EACJ,GAAI,CACFA,EAAMN,EAAG,GAAGE,CAAI,CAClB,QAAE,CACAkD,GAA4BW,CAAY,EACpCF,EAAoB,IACtBC,GAAiB,CAAC,CAEtB,CACA,OAAOxD,CACT,EACA,OAAAuD,EAAoB,GAAK,GACzBA,EAAoB,GAAK,GACzBA,EAAoB,GAAK,GAClBA,CACT,CAEA,SAASG,GAAexE,EAAOyE,EAAY,CACzC,GAAIf,KAA6B,KAC/B,OAAO1D,EAET,IAAMS,EAAWiE,GAA2BhB,EAAwB,EAC9DiB,EAAW3E,EAAM,OAASA,EAAM,KAAO,CAAC,GAC9C,QAAS,EAAI,EAAG,EAAIyE,EAAW,OAAQ,IAAK,CAC1C,GAAI,CAACG,EAAKC,EAAOC,EAAKC,EAAYjF,EAAO,SAAS,EAAI2E,EAAW,CAAC,EAC9DG,IACE9E,EAAO,WAAW8E,CAAG,IACvBA,EAAM,CACJ,QAASA,EACT,QAASA,CACX,GAEEA,EAAI,MACN/E,EAAW,SAASgF,CAAK,EAE3BF,EAAS,KAAK,CACZ,IAAAC,EACA,SAAAnE,EACA,MAAAoE,EACA,SAAU,OACV,IAAAC,EACA,UAAAC,CACF,CAAC,EAEL,CACA,OAAO/E,CACT,CACA,SAASgF,GAAoBhF,EAAOiF,EAAWxE,EAAUyE,EAAM,CAC7D,IAAMP,EAAW3E,EAAM,KACjBmF,EAAcF,GAAaA,EAAU,KAC3C,QAASjE,EAAI,EAAGA,EAAI2D,EAAS,OAAQ3D,IAAK,CACxC,IAAMoE,EAAUT,EAAS3D,CAAC,EACtBmE,IACFC,EAAQ,SAAWD,EAAYnE,CAAC,EAAE,OAEpC,IAAIqE,EAAOD,EAAQ,IAAIF,CAAI,EACvBG,IACFxF,EAAW,cAAc,EACzBgB,GAA2BwE,EAAM5E,EAAU,EAAG,CAC5CT,EAAM,GACNoF,EACApF,EACAiF,CACF,CAAC,EACDpF,EAAW,cAAc,EAE7B,CACF,CAEA,IAAMyF,GAAiB,OAAO,MAAM,EAC9BC,GAAcnF,GAASA,EAAK,aAC5BoF,GAAsBC,GAAUA,IAAUA,EAAM,UAAYA,EAAM,WAAa,IAC/EC,GAAsBD,GAAUA,IAAUA,EAAM,OAASA,EAAM,QAAU,IACzEE,GAAeC,GAAW,OAAO,WAAe,KAAeA,aAAkB,WACjFC,GAAkBD,GAAW,OAAO,eAAkB,YAAcA,aAAkB,cACtFE,GAAgB,CAACL,EAAOM,IAAW,CACvC,IAAMC,EAAiBP,GAASA,EAAM,GACtC,OAAI3F,EAAO,SAASkG,CAAc,EAC3BD,EAGYA,EAAOC,CAAc,EAF7B,KAMFA,CAEX,EACMC,GAAe,CACnB,KAAM,WACN,aAAc,GACd,QAAQC,EAAIC,EAAIC,EAAWC,EAAQC,EAAiBC,EAAgBC,EAAWC,EAAcC,EAAWC,EAAW,CACjH,GAAM,CACJ,GAAIC,EACJ,GAAIC,EACJ,IAAKC,EACL,EAAG,CAAE,OAAAC,EAAQ,cAAAC,EAAe,WAAAC,EAAY,cAAAC,CAAc,CACxD,EAAIP,EACEQ,EAAW3B,GAAmBW,EAAG,KAAK,EACxC,CAAE,UAAAiB,EAAW,SAAAC,EAAU,gBAAAC,CAAgB,EAAInB,EAC/C,GAAID,GAAM,KAAM,CACd,IAAMqB,EAAcpB,EAAG,GAAKc,EAAW,EAAE,EACnCO,EAAarB,EAAG,OAASc,EAAW,EAAE,EAC5CF,EAAOQ,EAAanB,EAAWC,CAAM,EACrCU,EAAOS,EAAYpB,EAAWC,CAAM,EACpC,IAAMoB,EAAQ,CAACC,EAAYC,IAAY,CACjCP,EAAY,KACVd,GAAmBA,EAAgB,OACrCA,EAAgB,GAAG,gBAAkBoB,GAEvCd,EACES,EACAK,EACAC,EACArB,EACAC,EACAC,EACAC,EACAC,CACF,EAEJ,EACMkB,EAAgB,IAAM,CAC1B,IAAMhC,EAASO,EAAG,OAASL,GAAcK,EAAG,MAAOa,CAAa,EAC1Da,EAAeC,GAAclC,EAAQO,EAAIc,EAAYF,CAAM,EAC7DnB,IACEY,IAAc,OAASb,GAAYC,CAAM,EAC3CY,EAAY,MACHA,IAAc,UAAYX,GAAeD,CAAM,IACxDY,EAAY,UAETW,IACHM,EAAM7B,EAAQiC,CAAY,EAC1BE,GAAc5B,EAAI,EAAK,GAG7B,EACIgB,IACFM,EAAMrB,EAAWoB,CAAU,EAC3BO,GAAc5B,EAAI,EAAI,GAEpBT,GAAmBS,EAAG,KAAK,GAC7BA,EAAG,GAAG,YAAc,GACpB6B,GAAsB,IAAM,CAC1BJ,EAAc,EACd,OAAOzB,EAAG,GAAG,WACf,EAAGI,CAAc,GAEjBqB,EAAc,CAElB,KAAO,CACL,GAAIlC,GAAmBS,EAAG,KAAK,GAAKD,EAAG,GAAG,cAAgB,GAAO,CAC/D8B,GAAsB,IAAM,CAC1B/B,GAAa,QACXC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,CACF,CACF,EAAGJ,CAAc,EACjB,MACF,CACAJ,EAAG,GAAKD,EAAG,GACXC,EAAG,YAAcD,EAAG,YACpB,IAAMsB,EAAarB,EAAG,OAASD,EAAG,OAC5BN,EAASO,EAAG,OAASD,EAAG,OACxB2B,EAAe1B,EAAG,aAAeD,EAAG,aACpC+B,EAAczC,GAAmBU,EAAG,KAAK,EACzCgC,EAAmBD,EAAc7B,EAAYR,EAC7CuC,EAAgBF,EAAcT,EAAaK,EA8BjD,GA7BIrB,IAAc,OAASb,GAAYC,CAAM,EAC3CY,EAAY,OACHA,IAAc,UAAYX,GAAeD,CAAM,KACxDY,EAAY,UAEVc,GACFR,EACEZ,EAAG,gBACHoB,EACAY,EACA5B,EACAC,EACAC,EACAC,CACF,EACA2B,GAAuBlC,EAAIC,EAAI,EAAI,GACzBO,GACVG,EACEX,EACAC,EACA+B,EACAC,EACA7B,EACAC,EACAC,EACAC,EACA,EACF,EAEEU,EACGc,EASC9B,EAAG,OAASD,EAAG,OAASC,EAAG,MAAM,KAAOD,EAAG,MAAM,KACnDC,EAAG,MAAM,GAAKD,EAAG,MAAM,IATzBmC,GACElC,EACAC,EACAoB,EACAb,EACA,CACF,WAOGR,EAAG,OAASA,EAAG,MAAM,OAASD,EAAG,OAASA,EAAG,MAAM,IAAK,CAC3D,IAAMoC,EAAanC,EAAG,OAASL,GAC7BK,EAAG,MACHa,CACF,EACIsB,GACFD,GACElC,EACAmC,EACA,KACA3B,EACA,CACF,CAEJ,MAAWsB,GACTI,GACElC,EACAP,EACAiC,EACAlB,EACA,CACF,EAGJoB,GAAc5B,EAAIgB,CAAQ,CAC5B,CACF,EACA,OAAOnH,EAAOsG,EAAiBC,EAAgB,CAAE,GAAIgC,EAAS,EAAG,CAAE,OAAQC,CAAW,CAAE,EAAGC,EAAU,CACnG,GAAM,CACJ,UAAArB,EACA,SAAAC,EACA,OAAAhB,EACA,YAAAqC,EACA,aAAAb,EACA,OAAAjC,EACA,MAAAH,CACF,EAAIzF,EAMJ,GALI4F,IACF4C,EAAWE,CAAW,EACtBF,EAAWX,CAAY,GAEzBY,GAAYD,EAAWnC,CAAM,EACzBe,EAAY,GAAI,CAClB,IAAMuB,EAAeF,GAAY,CAACjD,GAAmBC,CAAK,EAC1D,QAASzE,EAAI,EAAGA,EAAIqG,EAAS,OAAQrG,IAAK,CACxC,IAAM4H,EAAQvB,EAASrG,CAAC,EACxBuH,EACEK,EACAtC,EACAC,EACAoC,EACA,CAAC,CAACC,EAAM,eACV,CACF,CACF,CACF,EACA,KAAMP,GACN,QAASQ,EACX,EACA,SAASR,GAAarI,EAAOoG,EAAW0C,EAAc,CAAE,EAAG,CAAE,OAAA/B,CAAO,EAAG,EAAGgC,CAAK,EAAGC,EAAW,EAAG,CAC1FA,IAAa,GACfjC,EAAO/G,EAAM,aAAcoG,EAAW0C,CAAY,EAEpD,GAAM,CAAE,GAAAG,EAAI,OAAA5C,EAAQ,UAAAe,EAAW,SAAAC,EAAU,MAAA5B,CAAM,EAAIzF,EAC7CkJ,EAAYF,IAAa,EAI/B,GAHIE,GACFnC,EAAOkC,EAAI7C,EAAW0C,CAAY,GAEhC,CAACI,GAAa1D,GAAmBC,CAAK,IACpC2B,EAAY,GACd,QAASpG,EAAI,EAAGA,EAAIqG,EAAS,OAAQrG,IACnC+H,EACE1B,EAASrG,CAAC,EACVoF,EACA0C,EACA,CACF,EAIFI,GACFnC,EAAOV,EAAQD,EAAW0C,CAAY,CAE1C,CACA,SAASD,GAAgBM,EAAMnJ,EAAOsG,EAAiBC,EAAgBE,EAAcC,EAAW,CAC9F,EAAG,CAAE,YAAA0C,EAAa,WAAAC,EAAY,cAAArC,EAAe,OAAAD,EAAQ,WAAAE,CAAW,CAClE,EAAGqC,EAAiB,CAClB,IAAM1D,EAAS5F,EAAM,OAAS8F,GAC5B9F,EAAM,MACNgH,CACF,EACA,GAAIpB,EAAQ,CACV,IAAMuB,EAAW3B,GAAmBxF,EAAM,KAAK,EACzCuJ,EAAa3D,EAAO,MAAQA,EAAO,WACzC,GAAI5F,EAAM,UAAY,GACpB,GAAImH,EACFnH,EAAM,OAASsJ,EACbF,EAAYD,CAAI,EAChBnJ,EACAqJ,EAAWF,CAAI,EACf7C,EACAC,EACAE,EACAC,CACF,EACA1G,EAAM,YAAcuJ,EACpBvJ,EAAM,aAAeuJ,GAAcH,EAAYG,CAAU,MACpD,CACLvJ,EAAM,OAASoJ,EAAYD,CAAI,EAC/B,IAAItB,EAAe0B,EACnB,KAAO1B,GAAc,CACnB,GAAIA,GAAgBA,EAAa,WAAa,GAC5C,GAAIA,EAAa,OAAS,wBACxB7H,EAAM,YAAc6H,UACXA,EAAa,OAAS,kBAAmB,CAClD7H,EAAM,aAAe6H,EACrBjC,EAAO,KAAO5F,EAAM,cAAgBoJ,EAAYpJ,EAAM,YAAY,EAClE,KACF,EAEF6H,EAAeuB,EAAYvB,CAAY,CACzC,CACK7H,EAAM,cACT8H,GAAclC,EAAQ5F,EAAOiH,EAAYF,CAAM,EAEjDuC,EACEC,GAAcH,EAAYG,CAAU,EACpCvJ,EACA4F,EACAU,EACAC,EACAE,EACAC,CACF,CACF,CAEFqB,GAAc/H,EAAOmH,CAAQ,CAC/B,CACA,OAAOnH,EAAM,QAAUoJ,EAAYpJ,EAAM,MAAM,CACjD,CACA,IAAMwJ,GAAWvD,GACjB,SAAS8B,GAAc/H,EAAOyJ,EAAY,CACxC,IAAMtF,EAAMnE,EAAM,IAClB,GAAImE,GAAOA,EAAI,GAAI,CACjB,IAAIgF,EAAM9C,EAQV,IAPIoD,GACFN,EAAOnJ,EAAM,GACbqG,EAASrG,EAAM,SAEfmJ,EAAOnJ,EAAM,YACbqG,EAASrG,EAAM,cAEVmJ,GAAQA,IAAS9C,GAClB8C,EAAK,WAAa,GAAGA,EAAK,aAAa,eAAgBhF,EAAI,GAAG,EAClEgF,EAAOA,EAAK,YAEdhF,EAAI,GAAG,CACT,CACF,CACA,SAAS2D,GAAclC,EAAQ5F,EAAOiH,EAAYF,EAAQ,CACxD,IAAM2B,EAAc1I,EAAM,YAAciH,EAAW,EAAE,EAC/CY,EAAe7H,EAAM,aAAeiH,EAAW,EAAE,EACvD,OAAAyB,EAAYpD,EAAc,EAAIuC,EAC1BjC,IACFmB,EAAO2B,EAAa9C,CAAM,EAC1BmB,EAAOc,EAAcjC,CAAM,GAEtBiC,CACT,CAEA,IAAM6B,GAAa,OAAO,UAAU,EAC9BC,GAAa,OAAO,UAAU,EACpC,SAASC,IAAqB,CAC5B,IAAMC,EAAQ,CACZ,UAAW,GACX,UAAW,GACX,aAAc,GACd,cAA+B,IAAI,GACrC,EACA,OAAAC,GAAU,IAAM,CACdD,EAAM,UAAY,EACpB,CAAC,EACDE,GAAgB,IAAM,CACpBF,EAAM,aAAe,EACvB,CAAC,EACMA,CACT,CACA,IAAMG,GAA0B,CAAC,SAAU,KAAK,EAC1CC,GAAgC,CACpC,KAAM,OACN,OAAQ,QACR,UAAW,QAEX,cAAeD,GACf,QAASA,GACT,aAAcA,GACd,iBAAkBA,GAElB,cAAeA,GACf,QAASA,GACT,aAAcA,GACd,iBAAkBA,GAElB,eAAgBA,GAChB,SAAUA,GACV,cAAeA,GACf,kBAAmBA,EACrB,EACME,GAAuBzJ,GAAa,CACxC,IAAM0J,EAAU1J,EAAS,QACzB,OAAO0J,EAAQ,UAAYD,GAAoBC,EAAQ,SAAS,EAAIA,CACtE,EACMC,GAAqB,CACzB,KAAM,iBACN,MAAOH,GACP,MAAMxE,EAAO,CAAE,MAAA4E,CAAM,EAAG,CACtB,IAAM5J,EAAW6J,GAAmB,EAC9BT,EAAQD,GAAmB,EACjC,MAAO,IAAM,CACX,IAAMvC,EAAWgD,EAAM,SAAWE,GAAyBF,EAAM,QAAQ,EAAG,EAAI,EAChF,GAAI,CAAChD,GAAY,CAACA,EAAS,OACzB,OAEF,IAAMuB,EAAQ4B,GAAoBnD,CAAQ,EACpCoD,EAAW5K,EAAW,MAAM4F,CAAK,EACjC,CAAE,KAAAiF,CAAK,EAAID,EACjB,GAAIZ,EAAM,UACR,OAAOc,GAAiB/B,CAAK,EAE/B,IAAMgC,EAAaC,GAAgBjC,CAAK,EACxC,GAAI,CAACgC,EACH,OAAOD,GAAiB/B,CAAK,EAE/B,IAAIkC,EAAaC,GACfH,EACAH,EACAZ,EACApJ,EAECuK,GAAUF,EAAaE,CAC1B,EACIJ,EAAW,OAASK,IACtBC,GAAmBN,EAAYE,CAAU,EAE3C,IAAIK,EAAgB1K,EAAS,SAAWoK,GAAgBpK,EAAS,OAAO,EACxE,GAAI0K,GAAiBA,EAAc,OAASF,IAAW,CAACG,GAAgBR,EAAYO,CAAa,GAAKjB,GAAoBzJ,CAAQ,EAAE,OAASwK,GAAS,CACpJ,IAAII,EAAeN,GACjBI,EACAV,EACAZ,EACApJ,CACF,EAEA,GADAyK,GAAmBC,EAAeE,CAAY,EAC1CX,IAAS,UAAYE,EAAW,OAASK,GAC3C,OAAApB,EAAM,UAAY,GAClBwB,EAAa,WAAa,IAAM,CAC9BxB,EAAM,UAAY,GACZpJ,EAAS,IAAI,MAAQ,GACzBA,EAAS,OAAO,EAElB,OAAO4K,EAAa,WACpBF,EAAgB,MAClB,EACOR,GAAiB/B,CAAK,EACpB8B,IAAS,UAAYE,EAAW,OAASK,GAClDI,EAAa,WAAa,CAACpC,EAAIqC,EAAaC,IAAiB,CAC3D,IAAMC,EAAqBC,GACzB5B,EACAsB,CACF,EACAK,EAAmB,OAAOL,EAAc,GAAG,CAAC,EAAIA,EAChDlC,EAAGS,EAAU,EAAI,IAAM,CACrB4B,EAAY,EACZrC,EAAGS,EAAU,EAAI,OACjB,OAAOoB,EAAW,aAClBK,EAAgB,MAClB,EACAL,EAAW,aAAe,IAAM,CAC9BS,EAAa,EACb,OAAOT,EAAW,aAClBK,EAAgB,MAClB,CACF,EAEAA,EAAgB,MAEpB,MAAWA,IACTA,EAAgB,QAElB,OAAOvC,CACT,CACF,CACF,EACA,SAAS4B,GAAoBnD,EAAU,CACrC,IAAIuB,EAAQvB,EAAS,CAAC,EACtB,GAAIA,EAAS,OAAS,GACpB,QAAWqE,KAAKrE,EACd,GAAIqE,EAAE,OAAST,GAAS,CACtBrC,EAAQ8C,EACR,KACF,EAGJ,OAAO9C,CACT,CACA,IAAM+C,GAAiBvB,GACvB,SAASqB,GAAuB5B,EAAO7J,EAAO,CAC5C,GAAM,CAAE,cAAA4L,CAAc,EAAI/B,EACtB2B,EAAqBI,EAAc,IAAI5L,EAAM,IAAI,EACrD,OAAKwL,IACHA,EAAqC,OAAO,OAAO,IAAI,EACvDI,EAAc,IAAI5L,EAAM,KAAMwL,CAAkB,GAE3CA,CACT,CACA,SAAST,GAAuB/K,EAAOyF,EAAOoE,EAAOpJ,EAAUoL,EAAW,CACxE,GAAM,CACJ,OAAAC,EACA,KAAApB,EACA,UAAAqB,EAAY,GACZ,cAAAC,EACA,QAAAC,EACA,aAAAC,EACA,iBAAAC,EACA,cAAAC,EACA,QAAAC,EACA,aAAAC,EACA,iBAAAC,EACA,eAAAC,EACA,SAAAC,EACA,cAAAC,EACA,kBAAAC,CACF,EAAIlH,EACEmH,EAAM,OAAO5M,EAAM,GAAG,EACtBwL,EAAqBC,GAAuB5B,EAAO7J,CAAK,EACxD6M,EAAW,CAACxH,EAAM3E,IAAS,CAC/B2E,GAAQxE,GACNwE,EACA5E,EACA,EACAC,CACF,CACF,EACMoM,EAAgB,CAACzH,EAAM3E,IAAS,CACpC,IAAMqM,EAAOrM,EAAK,CAAC,EACnBmM,EAASxH,EAAM3E,CAAI,EACfZ,EAAO,QAAQuF,CAAI,EACjBA,EAAK,MAAO2H,GAAUA,EAAM,QAAU,CAAC,GAAGD,EAAK,EAC1C1H,EAAK,QAAU,GACxB0H,EAAK,CAET,EACM/B,EAAQ,CACZ,KAAAN,EACA,UAAAqB,EACA,YAAY9C,EAAI,CACd,IAAI5D,EAAO2G,EACX,GAAI,CAACnC,EAAM,UACT,GAAIiC,EACFzG,EAAOmH,GAAkBR,MAEzB,QAGA/C,EAAGS,EAAU,GACfT,EAAGS,EAAU,EACX,EAEF,EAEF,IAAMuD,EAAezB,EAAmBoB,CAAG,EACvCK,GAAgB7B,GAAgBpL,EAAOiN,CAAY,GAAKA,EAAa,GAAGvD,EAAU,GACpFuD,EAAa,GAAGvD,EAAU,EAAE,EAE9BmD,EAASxH,EAAM,CAAC4D,CAAE,CAAC,CACrB,EACA,MAAMA,EAAI,CACR,IAAI5D,EAAO4G,EACPiB,EAAYhB,EACZiB,EAAahB,EACjB,GAAI,CAACtC,EAAM,UACT,GAAIiC,EACFzG,EAAOoH,GAAYR,EACnBiB,EAAYR,GAAiBR,EAC7BiB,EAAaR,GAAqBR,MAElC,QAGJ,IAAIiB,EAAS,GACPL,GAAO9D,EAAGU,EAAU,EAAK0D,IAAc,CACvCD,IACJA,EAAS,GACLC,GACFR,EAASM,EAAY,CAAClE,CAAE,CAAC,EAEzB4D,EAASK,EAAW,CAACjE,CAAE,CAAC,EAEtB+B,EAAM,cACRA,EAAM,aAAa,EAErB/B,EAAGU,EAAU,EAAI,OACnB,EACItE,EACFyH,EAAczH,EAAM,CAAC4D,EAAI8D,EAAI,CAAC,EAE9BA,GAAK,CAET,EACA,MAAM9D,EAAIqE,EAAQ,CAChB,IAAMC,EAAO,OAAOvN,EAAM,GAAG,EAO7B,GANIiJ,EAAGU,EAAU,GACfV,EAAGU,EAAU,EACX,EAEF,EAEEE,EAAM,aACR,OAAOyD,EAAO,EAEhBT,EAAST,EAAe,CAACnD,CAAE,CAAC,EAC5B,IAAImE,EAAS,GACPL,EAAO9D,EAAGS,EAAU,EAAK2D,IAAc,CACvCD,IACJA,EAAS,GACTE,EAAO,EACHD,GACFR,EAASN,EAAkB,CAACtD,CAAE,CAAC,EAE/B4D,EAASP,EAAc,CAACrD,CAAE,CAAC,EAE7BA,EAAGS,EAAU,EAAI,OACb8B,EAAmB+B,CAAI,IAAMvN,GAC/B,OAAOwL,EAAmB+B,CAAI,EAElC,EACA/B,EAAmB+B,CAAI,EAAIvN,EACvBqM,EACFS,EAAcT,EAAS,CAACpD,EAAI8D,CAAI,CAAC,EAEjCA,EAAK,CAET,EACA,MAAMS,EAAQ,CACZ,IAAMC,EAAS1C,GACbyC,EACA/H,EACAoE,EACApJ,EACAoL,CACF,EACA,OAAIA,GAAWA,EAAU4B,CAAM,EACxBA,CACT,CACF,EACA,OAAOzC,CACT,CACA,SAASL,GAAiB3K,EAAO,CAC/B,GAAI0N,GAAY1N,CAAK,EACnB,OAAAA,EAAQ2N,GAAW3N,CAAK,EACxBA,EAAM,SAAW,KACVA,CAEX,CACA,SAAS6K,GAAgB7K,EAAO,CAC9B,GAAI,CAAC0N,GAAY1N,CAAK,EACpB,OAAIuF,GAAWvF,EAAM,IAAI,GAAKA,EAAM,SAC3BwK,GAAoBxK,EAAM,QAAQ,EAEpCA,EAET,GAAIA,EAAM,UACR,OAAOA,EAAM,UAAU,QAEzB,GAAM,CAAE,UAAAoH,EAAW,SAAAC,CAAS,EAAIrH,EAChC,GAAIqH,EAAU,CACZ,GAAID,EAAY,GACd,OAAOC,EAAS,CAAC,EAEnB,GAAID,EAAY,IAAMtH,EAAO,WAAWuH,EAAS,OAAO,EACtD,OAAOA,EAAS,QAAQ,CAE5B,CACF,CACA,SAAS6D,GAAmBlL,EAAOgL,EAAO,CACpChL,EAAM,UAAY,GAAKA,EAAM,WAC/BA,EAAM,WAAagL,EACnBE,GAAmBlL,EAAM,UAAU,QAASgL,CAAK,GACxChL,EAAM,UAAY,KAC3BA,EAAM,UAAU,WAAagL,EAAM,MAAMhL,EAAM,SAAS,EACxDA,EAAM,WAAW,WAAagL,EAAM,MAAMhL,EAAM,UAAU,GAE1DA,EAAM,WAAagL,CAEvB,CACA,SAAST,GAAyBlD,EAAUuG,EAAc,GAAOC,EAAW,CAC1E,IAAIC,EAAM,CAAC,EACPC,EAAqB,EACzB,QAAS/M,EAAI,EAAGA,EAAIqG,EAAS,OAAQrG,IAAK,CACxC,IAAI4H,EAAQvB,EAASrG,CAAC,EAChB4L,EAAMiB,GAAa,KAAOjF,EAAM,IAAM,OAAOiF,CAAS,EAAI,OAAOjF,EAAM,KAAO,KAAOA,EAAM,IAAM5H,CAAC,EACpG4H,EAAM,OAASoF,IACbpF,EAAM,UAAY,KAAKmF,IAC3BD,EAAMA,EAAI,OACRvD,GAAyB3B,EAAM,SAAUgF,EAAahB,CAAG,CAC3D,IACSgB,GAAehF,EAAM,OAASqC,KACvC6C,EAAI,KAAKlB,GAAO,KAAOe,GAAW/E,EAAO,CAAE,IAAAgE,CAAI,CAAC,EAAIhE,CAAK,CAE7D,CACA,GAAImF,EAAqB,EACvB,QAAS/M,EAAI,EAAGA,EAAI8M,EAAI,OAAQ9M,IAC9B8M,EAAI9M,CAAC,EAAE,UAAY,GAGvB,OAAO8M,CACT,CAIA,SAASG,GAAgBC,EAASC,EAAc,CAC9C,OAAOrO,EAAO,WAAWoO,CAAO,EAGPpO,EAAO,OAAO,CAAE,KAAMoO,EAAQ,IAAK,EAAGC,EAAc,CAAE,MAAOD,CAAQ,CAAC,EAC3FA,CACN,CAEA,SAASE,IAAQ,CACf,IAAMpN,EAAIsJ,GAAmB,EAC7B,OAAItJ,GACMA,EAAE,WAAW,OAAO,UAAY,KAAO,IAAMA,EAAE,IAAI,CAAC,EAAIA,EAAE,IAAI,CAAC,IAElE,EACT,CACA,SAASqN,GAAkB5N,EAAU,CACnCA,EAAS,IAAM,CAACA,EAAS,IAAI,CAAC,EAAIA,EAAS,IAAI,CAAC,IAAM,IAAK,EAAG,CAAC,CACjE,CAEA,SAAS6N,GAAe1B,EAAK,CAC3B,IAAM5L,EAAIsJ,GAAmB,EACvBiE,EAAI1O,EAAW,WAAW,IAAI,EACpC,GAAImB,EAAG,CACL,IAAMwN,EAAOxN,EAAE,OAASlB,EAAO,UAAYkB,EAAE,KAAO,CAAC,EAAIA,EAAE,KAEzD,OAAO,eAAewN,EAAM5B,EAAK,CAC/B,WAAY,GACZ,IAAK,IAAM2B,EAAE,MACb,IAAMpO,GAAQoO,EAAE,MAAQpO,CAC1B,CAAC,CAEL,CAEA,OADYoO,CAEd,CAEA,SAASE,GAAOC,EAAQC,EAAWpI,EAAgBvG,EAAO4O,EAAY,GAAO,CAC3E,GAAI9O,EAAO,QAAQ4O,CAAM,EAAG,CAC1BA,EAAO,QACL,CAACH,EAAGvN,IAAMyN,GACRF,EACAI,IAAc7O,EAAO,QAAQ6O,CAAS,EAAIA,EAAU3N,CAAC,EAAI2N,GACzDpI,EACAvG,EACA4O,CACF,CACF,EACA,MACF,CACA,GAAIC,GAAe7O,CAAK,GAAK,CAAC4O,EAAW,CACnC5O,EAAM,UAAY,KAAOA,EAAM,KAAK,iBAAmBA,EAAM,UAAU,QAAQ,WACjFyO,GAAOC,EAAQC,EAAWpI,EAAgBvG,EAAM,UAAU,OAAO,EAEnE,MACF,CACA,IAAM8O,EAAW9O,EAAM,UAAY,EAAI0E,GAA2B1E,EAAM,SAAS,EAAIA,EAAM,GACrF6E,EAAQ+J,EAAY,KAAOE,EAC3B,CAAE,EAAGC,EAAO,EAAGC,CAAI,EAAIN,EACvBO,EAASN,GAAaA,EAAU,EAChCH,EAAOO,EAAM,OAASjP,EAAO,UAAYiP,EAAM,KAAO,CAAC,EAAIA,EAAM,KACjEG,EAAaH,EAAM,WACnBI,EAAgBtP,EAAW,MAAMqP,CAAU,EAC3CE,EAAiBF,IAAepP,EAAO,UAAY,IAAM,GAAS8M,GAC/D9M,EAAO,OAAOqP,EAAevC,CAAG,EAYzC,GAVIqC,GAAU,MAAQA,IAAWD,IAC3BlP,EAAO,SAASmP,CAAM,GACxBT,EAAKS,CAAM,EAAI,KACXG,EAAeH,CAAM,IACvBC,EAAWD,CAAM,EAAI,OAEdpP,EAAW,MAAMoP,CAAM,IAChCA,EAAO,MAAQ,OAGfnP,EAAO,WAAWkP,CAAG,EACvBzO,GAAsByO,EAAKD,EAAO,GAAI,CAAClK,EAAO2J,CAAI,CAAC,MAC9C,CACL,IAAMa,EAAYvP,EAAO,SAASkP,CAAG,EAC/BM,EAASzP,EAAW,MAAMmP,CAAG,EACnC,GAAIK,GAAaC,EAAQ,CACvB,IAAMC,EAAQ,IAAM,CAClB,GAAIb,EAAO,EAAG,CACZ,IAAMc,EAAWH,EAAYD,EAAeJ,CAAG,EAAIE,EAAWF,CAAG,EAAIR,EAAKQ,CAAG,EAAIA,EAAI,MACjFJ,EACF9O,EAAO,QAAQ0P,CAAQ,GAAK1P,EAAO,OAAO0P,EAAUV,CAAQ,EAEvDhP,EAAO,QAAQ0P,CAAQ,EAUhBA,EAAS,SAASV,CAAQ,GACpCU,EAAS,KAAKV,CAAQ,EAVlBO,GACFb,EAAKQ,CAAG,EAAI,CAACF,CAAQ,EACjBM,EAAeJ,CAAG,IACpBE,EAAWF,CAAG,EAAIR,EAAKQ,CAAG,KAG5BA,EAAI,MAAQ,CAACF,CAAQ,EACjBJ,EAAO,IAAGF,EAAKE,EAAO,CAAC,EAAIM,EAAI,OAM3C,MAAWK,GACTb,EAAKQ,CAAG,EAAInK,EACRuK,EAAeJ,CAAG,IACpBE,EAAWF,CAAG,EAAInK,IAEXyK,IACTN,EAAI,MAAQnK,EACR6J,EAAO,IAAGF,EAAKE,EAAO,CAAC,EAAI7J,GAEnC,EACIA,GACF0K,EAAM,GAAK,GACXvH,GAAsBuH,EAAOhJ,CAAc,GAE3CgJ,EAAM,CAEV,CACF,CACF,CAEA,IAAIE,GAAyB,GACvBC,GAAmB,IAAM,CACzBD,KAGJ,QAAQ,MAAM,8CAA8C,EAC5DA,GAAyB,GAC3B,EACME,GAAkBvJ,GAAcA,EAAU,aAAa,SAAS,KAAK,GAAKA,EAAU,UAAY,gBAChGwJ,GAAqBxJ,GAAcA,EAAU,aAAa,SAAS,QAAQ,EAC3EyJ,GAAoBzJ,GAAc,CACtC,GAAIA,EAAU,WAAa,EAC3B,IAAIuJ,GAAevJ,CAAS,EAAG,MAAO,MACtC,GAAIwJ,GAAkBxJ,CAAS,EAAG,MAAO,SAE3C,EACM0J,GAAa3G,GAASA,EAAK,WAAa,EAC9C,SAAS4G,GAAyBC,EAAmB,CACnD,GAAM,CACJ,GAAIC,EACJ,EAAGC,EACH,EAAG,CACD,UAAAC,EACA,WAAAlJ,EACA,YAAAmC,EACA,WAAAC,EACA,OAAAiE,EACA,OAAAvG,EACA,cAAAG,CACF,CACF,EAAI8I,EACEI,EAAU,CAACpQ,EAAOoG,IAAc,CACpC,GAAI,CAACA,EAAU,cAAc,EAAG,CAC9B8J,EAAM,KAAMlQ,EAAOoG,CAAS,EAC5B9C,GAAkB,EAClB8C,EAAU,OAASpG,EACnB,MACF,CACAqQ,EAAYjK,EAAU,WAAYpG,EAAO,KAAM,KAAM,IAAI,EACzDsD,GAAkB,EAClB8C,EAAU,OAASpG,CACrB,EACMqQ,EAAc,CAAClH,EAAMnJ,EAAOsG,EAAiBC,EAAgBE,EAAcC,EAAY,KAAU,CACrGA,EAAYA,GAAa,CAAC,CAAC1G,EAAM,gBACjC,IAAMsQ,EAAkBR,GAAU3G,CAAI,GAAKA,EAAK,OAAS,IACnDoH,EAAa,IAAMC,EACvBrH,EACAnJ,EACAsG,EACAC,EACAE,EACA6J,CACF,EACM,CAAE,KAAAlQ,EAAM,IAAA4O,EAAK,UAAA5H,EAAW,UAAAqJ,EAAU,EAAIzQ,EACxC0Q,GAAUvH,EAAK,SACnBnJ,EAAM,GAAKmJ,EACPsH,KAAc,KAChB/J,EAAY,GACZ1G,EAAM,gBAAkB,MAE1B,IAAI2Q,GAAW,KACf,OAAQvQ,EAAM,CACZ,KAAKwQ,GACCF,KAAY,EACV1Q,EAAM,WAAa,IACrB+G,EAAO/G,EAAM,GAAKiH,EAAW,EAAE,EAAGoC,EAAWF,CAAI,EAAGA,CAAI,EACxDwH,GAAWxH,GAEXwH,GAAWJ,EAAW,GAGpBpH,EAAK,OAASnJ,EAAM,WACtB0P,GAAiB,EACjBvG,EAAK,KAAOnJ,EAAM,UAEpB2Q,GAAWvH,EAAYD,CAAI,GAE7B,MACF,KAAK8B,GACC4F,EAAe1H,CAAI,GACrBwH,GAAWvH,EAAYD,CAAI,EAC3B2H,EACE9Q,EAAM,GAAKmJ,EAAK,QAAQ,WACxBA,EACA7C,CACF,GACSoK,KAAY,GAAKJ,EAC1BK,GAAWJ,EAAW,EAEtBI,GAAWvH,EAAYD,CAAI,EAE7B,MACF,KAAK4H,GAKH,GAJIT,IACFnH,EAAOC,EAAYD,CAAI,EACvBuH,GAAUvH,EAAK,UAEbuH,KAAY,GAAKA,KAAY,EAAG,CAClCC,GAAWxH,EACX,IAAM6H,EAAqB,CAAChR,EAAM,SAAS,OAC3C,QAASgB,GAAI,EAAGA,GAAIhB,EAAM,YAAagB,KACjCgQ,IACFhR,EAAM,UAAY2Q,GAAS,WAAa,EAAIA,GAAS,UAAYA,GAAS,MACxE3P,KAAMhB,EAAM,YAAc,IAC5BA,EAAM,OAAS2Q,IAEjBA,GAAWvH,EAAYuH,EAAQ,EAEjC,OAAOL,EAAkBlH,EAAYuH,EAAQ,EAAIA,EACnD,MACEJ,EAAW,EAEb,MACF,KAAKvC,GACEsC,EAGHK,GAAWM,EACT9H,EACAnJ,EACAsG,EACAC,EACAE,EACAC,CACF,EATAiK,GAAWJ,EAAW,EAWxB,MACF,QACE,GAAInJ,EAAY,GACTsJ,KAAY,GAAK1Q,EAAM,KAAK,YAAY,IAAMmJ,EAAK,QAAQ,YAAY,IAAM,CAAC0H,EAAe1H,CAAI,EACpGwH,GAAWJ,EAAW,EAEtBI,GAAWO,EACT/H,EACAnJ,EACAsG,EACAC,EACAE,EACAC,CACF,UAEOU,EAAY,EAAG,CACxBpH,EAAM,aAAeyG,EACrB,IAAML,EAAYiD,EAAWF,CAAI,EAiBjC,GAhBImH,EACFK,GAAWQ,EAAoBhI,CAAI,EAC1B2G,GAAU3G,CAAI,GAAKA,EAAK,OAAS,iBAC1CwH,GAAWQ,EAAoBhI,EAAMA,EAAK,KAAM,cAAc,EAE9DwH,GAAWvH,EAAYD,CAAI,EAE7B8G,EACEjQ,EACAoG,EACA,KACAE,EACAC,EACAsJ,GAAiBzJ,CAAS,EAC1BM,CACF,EACImI,GAAe7O,CAAK,GAAK,CAACA,EAAM,KAAK,gBAAiB,CACxD,IAAImK,GACAmG,GACFnG,GAAUiH,GAAYpD,EAAQ,EAC9B7D,GAAQ,OAASwG,GAAWA,GAAS,gBAAkBvK,EAAU,WAEjE+D,GAAUhB,EAAK,WAAa,EAAIkI,GAAgB,EAAE,EAAID,GAAY,KAAK,EAEzEjH,GAAQ,GAAKhB,EACbnJ,EAAM,UAAU,QAAUmK,EAC5B,CACF,MAAW/C,EAAY,GACjBsJ,KAAY,EACdC,GAAWJ,EAAW,EAEtBI,GAAW3Q,EAAM,KAAK,QACpBmJ,EACAnJ,EACAsG,EACAC,EACAE,EACAC,EACAsJ,EACA1G,CACF,EAEOlC,EAAY,MACrBuJ,GAAW3Q,EAAM,KAAK,QACpBmJ,EACAnJ,EACAsG,EACAC,EACAsJ,GAAiBxG,EAAWF,CAAI,CAAC,EACjC1C,EACAC,EACAsJ,EACAK,CACF,EAEN,CACA,OAAIrB,GAAO,MACTP,GAAOO,EAAK,KAAMzI,EAAgBvG,CAAK,EAElC2Q,EACT,EACMO,EAAiB,CAACjI,EAAIjJ,EAAOsG,EAAiBC,EAAgBE,EAAcC,IAAc,CAC9FA,EAAYA,GAAa,CAAC,CAAC1G,EAAM,gBACjC,GAAM,CAAE,KAAAI,EAAM,MAAAqF,EAAO,UAAAgL,EAAW,UAAArJ,EAAW,KAAAkK,EAAM,WAAAC,EAAW,EAAIvR,EAC1DwR,GAAapR,IAAS,SAAWA,IAAS,SAChD,GAAIoR,IAAcf,IAAc,GAAI,CAC9Ba,GACFtM,GAAoBhF,EAAO,KAAMsG,EAAiB,SAAS,EAE7D,IAAImL,GAA0B,GAC9B,GAAIZ,EAAe5H,CAAE,EAAG,CACtBwI,GAA0BC,GACxB,KAEAH,EACF,GAAKjL,GAAmBA,EAAgB,MAAM,OAASA,EAAgB,MAAM,MAAM,OACnF,IAAMqL,GAAU1I,EAAG,QAAQ,WAC3B,GAAIwI,GAAyB,CAC3B,IAAMG,GAAMD,GAAQ,aAAa,OAAO,EACpCC,KAAKD,GAAQ,KAAOC,IACxBL,GAAW,YAAYI,EAAO,CAChC,CACAb,EAAYa,GAAS1I,EAAI3C,CAAe,EACxCtG,EAAM,GAAKiJ,EAAK0I,EAClB,CACA,GAAIvK,EAAY,IAChB,EAAE3B,IAAUA,EAAM,WAAaA,EAAM,cAAe,CAClD,IAAIoM,GAAOvI,EACTL,EAAG,WACHjJ,EACAiJ,EACA3C,EACAC,EACAE,EACAC,CACF,EACA,KAAOmL,IAAM,CACNC,GAAkB7I,EAAI,CAAgB,GACzCyG,GAAiB,EAEnB,IAAMrO,GAAMwQ,GACZA,GAAOA,GAAK,YACZvE,EAAOjM,EAAG,CACZ,CACF,SAAW+F,EAAY,EAAG,CACxB,IAAI2K,GAAa/R,EAAM,SACnB+R,GAAW,CAAC,IAAM;AAAA,IAAS9I,EAAG,UAAY,OAASA,EAAG,UAAY,cACpE8I,GAAaA,GAAW,MAAM,CAAC,GAE7B9I,EAAG,cAAgB8I,KAChBD,GAAkB7I,EAAI,CAAY,GACrCyG,GAAiB,EAEnBzG,EAAG,YAAcjJ,EAAM,SAE3B,CACA,GAAIyF,GACF,GAAI+L,IAAc,CAAC9K,GAAa+J,EAAa,GAAU,CACrD,IAAMuB,GAAkB/I,EAAG,QAAQ,SAAS,GAAG,EAC/C,QAAW2D,MAAOnH,GACZ+L,KAAe5E,GAAI,SAAS,OAAO,GAAKA,KAAQ,kBAAoB9M,EAAO,KAAK8M,EAAG,GAAK,CAAC9M,EAAO,eAAe8M,EAAG,GACtHA,GAAI,CAAC,IAAM,KAAOoF,KAChB7B,EAAUlH,EAAI2D,GAAK,KAAMnH,EAAMmH,EAAG,EAAG,OAAQtG,CAAe,CAGlE,SAAWb,EAAM,QACf0K,EACElH,EACA,UACA,KACAxD,EAAM,QACN,OACAa,CACF,UACSmK,EAAY,GAAK5Q,EAAW,WAAW4F,EAAM,KAAK,EAC3D,QAAWmH,MAAOnH,EAAM,MAAOA,EAAM,MAAMmH,EAAG,EAGlD,IAAIqF,GACAA,EAAaxM,GAASA,EAAM,qBAC9ByM,GAAgBD,EAAY3L,EAAiBtG,CAAK,EAEhDsR,GACFtM,GAAoBhF,EAAO,KAAMsG,EAAiB,aAAa,IAE5D2L,EAAaxM,GAASA,EAAM,iBAAmB6L,GAAQG,KAC1DU,GAAwB,IAAM,CAC5BF,GAAcC,GAAgBD,EAAY3L,EAAiBtG,CAAK,EAChEyR,IAA2BF,GAAW,MAAMtI,CAAE,EAC9CqI,GAAQtM,GAAoBhF,EAAO,KAAMsG,EAAiB,SAAS,CACrE,EAAGC,CAAc,CAErB,CACA,OAAO0C,EAAG,WACZ,EACMK,EAAkB,CAACH,EAAMiJ,EAAahM,EAAWE,EAAiBC,EAAgBE,EAAcC,IAAc,CAClHA,EAAYA,GAAa,CAAC,CAAC0L,EAAY,gBACvC,IAAM/K,EAAW+K,EAAY,SACvBC,EAAIhL,EAAS,OACnB,QAASrG,EAAI,EAAGA,EAAIqR,EAAGrR,IAAK,CAC1B,IAAMhB,EAAQ0G,EAAYW,EAASrG,CAAC,EAAIqG,EAASrG,CAAC,EAAIsR,GAAejL,EAASrG,CAAC,CAAC,EAC1EuR,GAASvS,EAAM,OAAS4Q,GAC1BzH,GACEoJ,IAAU,CAAC7L,GACT1F,EAAI,EAAIqR,GAAKC,GAAejL,EAASrG,EAAI,CAAC,CAAC,EAAE,OAAS4P,KACxD7J,EACEE,EACEkC,EAAK,KAAK,MAAMnJ,EAAM,SAAS,MAAM,CACvC,EACAoG,EACAgD,EAAYD,CAAI,CAClB,EACAA,EAAK,KAAOnJ,EAAM,UAGtBmJ,EAAOkH,EACLlH,EACAnJ,EACAsG,EACAC,EACAE,EACAC,CACF,GACS6L,IAAU,CAACvS,EAAM,SAC1B+G,EAAO/G,EAAM,GAAKiH,EAAW,EAAE,EAAGb,CAAS,GAEtC0L,GAAkB1L,EAAW,CAAgB,GAChDsJ,GAAiB,EAEnBQ,EACE,KACAlQ,EACAoG,EACA,KACAE,EACAC,EACAsJ,GAAiBzJ,CAAS,EAC1BK,CACF,EAEJ,CACA,OAAO0C,CACT,EACM8H,EAAkB,CAAC9H,EAAMnJ,EAAOsG,EAAiBC,EAAgBE,EAAcC,IAAc,CACjG,GAAM,CAAE,aAAc8L,CAAqB,EAAIxS,EAC3CwS,IACF/L,EAAeA,EAAeA,EAAa,OAAO+L,CAAoB,EAAIA,GAE5E,IAAMpM,EAAYiD,EAAWF,CAAI,EAC3B0I,EAAOvI,EACXF,EAAYD,CAAI,EAChBnJ,EACAoG,EACAE,EACAC,EACAE,EACAC,CACF,EACA,OAAImL,GAAQ/B,GAAU+B,CAAI,GAAKA,EAAK,OAAS,IACpCzI,EAAYpJ,EAAM,OAAS6R,CAAI,GAEtCnC,GAAiB,EACjB3I,EAAO/G,EAAM,OAASkH,EAAc,GAAG,EAAGd,EAAWyL,CAAI,EAClDA,EAEX,EACMrB,EAAiB,CAACrH,EAAMnJ,EAAOsG,EAAiBC,EAAgBE,EAAcgM,IAAe,CAKjG,GAJKX,GAAkB3I,EAAK,cAAe,CAAgB,GACzDuG,GAAiB,EAEnB1P,EAAM,GAAK,KACPyS,EAAY,CACd,IAAMlQ,EAAM4O,EAAoBhI,CAAI,EACpC,OAAa,CACX,IAAMuJ,EAAQtJ,EAAYD,CAAI,EAC9B,GAAIuJ,GAASA,IAAUnQ,EACrB+K,EAAOoF,CAAK,MAEZ,MAEJ,CACF,CACA,IAAMb,EAAOzI,EAAYD,CAAI,EACvB/C,EAAYiD,EAAWF,CAAI,EACjC,OAAAmE,EAAOnE,CAAI,EACX+G,EACE,KACAlQ,EACAoG,EACAyL,EACAvL,EACAC,EACAsJ,GAAiBzJ,CAAS,EAC1BK,CACF,EACIH,IACFA,EAAgB,MAAM,GAAKtG,EAAM,GACjC2S,GAAgBrM,EAAiBtG,EAAM,EAAE,GAEpC6R,CACT,EACMV,EAAsB,CAAChI,EAAMyJ,EAAO,IAAKC,EAAQ,MAAQ,CAC7D,IAAIC,EAAQ,EACZ,KAAO3J,GAEL,GADAA,EAAOC,EAAYD,CAAI,EACnBA,GAAQ2G,GAAU3G,CAAI,IACpBA,EAAK,OAASyJ,GAAME,IACpB3J,EAAK,OAAS0J,GAAO,CACvB,GAAIC,IAAU,EACZ,OAAO1J,EAAYD,CAAI,EAEvB2J,GAEJ,CAGJ,OAAO3J,CACT,EACM2H,EAAc,CAACiC,EAASC,EAAS1M,IAAoB,CACzD,IAAM2M,EAAcD,EAAQ,WACxBC,GACFA,EAAY,aAAaF,EAASC,CAAO,EAE3C,IAAIE,EAAS5M,EACb,KAAO4M,GACDA,EAAO,MAAM,KAAOF,IACtBE,EAAO,MAAM,GAAKA,EAAO,QAAQ,GAAKH,GAExCG,EAASA,EAAO,MAEpB,EACMrC,EAAkB1H,GACfA,EAAK,WAAa,GAAKA,EAAK,UAAY,WAEjD,MAAO,CAACiH,EAASC,CAAW,CAC9B,CACA,IAAM8C,GAAoB,sBACpBC,GAAqB,CACxB,EAAe,OACf,EAAmB,WACnB,EAAgB,QAChB,EAAgB,QAChB,EAAoB,WACvB,EACA,SAAStB,GAAkB7I,EAAIoK,EAAa,CAC1C,GAAIA,IAAgB,GAAgBA,IAAgB,EAClD,KAAOpK,GAAM,CAACA,EAAG,aAAakK,EAAiB,GAC7ClK,EAAKA,EAAG,cAGZ,IAAMqK,EAAcrK,GAAMA,EAAG,aAAakK,EAAiB,EAC3D,GAAIG,GAAe,KACjB,MAAO,GACF,GAAIA,IAAgB,GACzB,MAAO,GACF,CACL,IAAMC,EAAOD,EAAY,MAAM,GAAG,EAClC,OAAID,IAAgB,GAAgBE,EAAK,SAAS,UAAU,EACnD,GAEFA,EAAK,SAASH,GAAmBC,CAAW,CAAC,CACtD,CACF,CAEA,IAAMG,GAAsB1T,EAAO,cAAc,EAAE,sBAAyBqD,GAAO,WAAWA,EAAI,CAAC,GAC7FsQ,GAAqB3T,EAAO,cAAc,EAAE,qBAAwBuC,GAAO,aAAaA,CAAE,GAC1FqR,GAAgB,CAACC,EAAU,MAASvD,GAAY,CACpD,IAAM/N,EAAKmR,GAAoBpD,EAAS,CAAE,QAAAuD,CAAQ,CAAC,EACnD,MAAO,IAAMF,GAAmBpR,CAAE,CACpC,EACA,SAASuR,GAA2B3K,EAAI,CACtC,GAAM,CAAE,IAAA4K,EAAK,KAAAC,EAAM,OAAAC,EAAQ,MAAAC,CAAM,EAAI/K,EAAG,sBAAsB,EACxD,CAAE,YAAAgL,EAAa,WAAAC,CAAW,EAAI,OACpC,OAAQL,EAAM,GAAKA,EAAMI,GAAeF,EAAS,GAAKA,EAASE,KAAiBH,EAAO,GAAKA,EAAOI,GAAcF,EAAQ,GAAKA,EAAQE,EACxI,CACA,IAAMC,GAAoBC,GAAS,CAAChE,EAASiE,IAAY,CACvD,IAAMC,EAAK,IAAI,qBAAsBC,GAAY,CAC/C,QAAWC,KAAKD,EACd,GAAKC,EAAE,eACP,CAAAF,EAAG,WAAW,EACdlE,EAAQ,EACR,MAEJ,EAAGgE,CAAI,EACP,OAAAC,EAASpL,GAAO,CACd,GAAMA,aAAc,QACpB,IAAI2K,GAA2B3K,CAAE,EAC/B,OAAAmH,EAAQ,EACRkE,EAAG,WAAW,EACP,GAETA,EAAG,QAAQrL,CAAE,EACf,CAAC,EACM,IAAMqL,EAAG,WAAW,CAC7B,EACMG,GAAuBC,GAAWtE,GAAY,CAClD,GAAIsE,EAAO,CACT,IAAMC,EAAM,WAAWD,CAAK,EAC5B,GAAIC,EAAI,QACNvE,EAAQ,MAER,QAAAuE,EAAI,iBAAiB,SAAUvE,EAAS,CAAE,KAAM,EAAK,CAAC,EAC/C,IAAMuE,EAAI,oBAAoB,SAAUvE,CAAO,CAE1D,CACF,EACMwE,GAAuB,CAACC,EAAe,CAAC,IAAM,CAACzE,EAASiE,IAAY,CACpEvU,EAAO,SAAS+U,CAAY,IAAGA,EAAe,CAACA,CAAY,GAC/D,IAAIC,EAAc,GACZC,EAAaP,GAAM,CAClBM,IACHA,EAAc,GACdE,EAAS,EACT5E,EAAQ,EACRoE,EAAE,OAAO,cAAc,IAAIA,EAAE,YAAYA,EAAE,KAAMA,CAAC,CAAC,EAEvD,EACMQ,EAAW,IAAM,CACrBX,EAASpL,GAAO,CACd,QAAWjI,KAAK6T,EACd5L,EAAG,oBAAoBjI,EAAG+T,CAAS,CAEvC,CAAC,CACH,EACA,OAAAV,EAASpL,GAAO,CACd,QAAWjI,KAAK6T,EACd5L,EAAG,iBAAiBjI,EAAG+T,EAAW,CAAE,KAAM,EAAK,CAAC,CAEpD,CAAC,EACMC,CACT,EACA,SAASC,GAAe9L,EAAMhG,EAAI,CAChC,GAAI2M,GAAU3G,CAAI,GAAKA,EAAK,OAAS,IAAK,CACxC,IAAI+L,EAAQ,EACRrD,EAAO1I,EAAK,YAChB,KAAO0I,GAAM,CACX,GAAIA,EAAK,WAAa,GAEpB,GADe1O,EAAG0O,CAAI,IACP,GACb,cAEO/B,GAAU+B,CAAI,EACvB,GAAIA,EAAK,OAAS,KAChB,GAAI,EAAEqD,IAAU,EAAG,WACVrD,EAAK,OAAS,KACvBqD,IAGJrD,EAAOA,EAAK,WACd,CACF,MACE1O,EAAGgG,CAAI,CAEX,CAEA,IAAM0F,GAAkB7N,GAAM,CAAC,CAACA,EAAE,KAAK,cAGvC,SAASmU,GAAqBC,EAAQ,CAChCtV,EAAO,WAAWsV,CAAM,IAC1BA,EAAS,CAAE,OAAQA,CAAO,GAE5B,GAAM,CACJ,OAAAC,EACA,iBAAAC,EACA,eAAAC,EACA,MAAAC,EAAQ,IACR,QAASC,EACT,QAAA9B,EAEA,YAAA+B,EAAc,GACd,QAASC,CACX,EAAIP,EACAQ,EAAiB,KACjBC,EACAC,EAAU,EACRC,EAAQ,KACZD,IACAF,EAAiB,KACVI,EAAK,GAERA,EAAO,IAAM,CACjB,IAAIC,EACJ,OAAOL,IAAmBK,EAAcL,EAAiBP,EAAO,EAAE,MAAO1U,GAAQ,CAE/E,GADAA,EAAMA,aAAe,MAAQA,EAAM,IAAI,MAAM,OAAOA,CAAG,CAAC,EACpDgV,EACF,OAAO,IAAI,QAAQ,CAACO,EAASC,IAAW,CAGtCR,EAAYhV,EAFM,IAAMuV,EAAQH,EAAM,CAAC,EACtB,IAAMI,EAAOxV,CAAG,EACKmV,EAAU,CAAC,CACnD,CAAC,EAED,MAAMnV,CAEV,CAAC,EAAE,KAAMyV,GACHH,IAAgBL,GAAkBA,EAC7BA,GAELQ,IAASA,EAAK,YAAcA,EAAK,OAAO,WAAW,IAAM,YAC3DA,EAAOA,EAAK,SAEdP,EAAeO,EACRA,EACR,EACH,EACA,OAAOnI,GAAgB,CACrB,KAAM,wBACN,cAAe+H,EACf,eAAe/M,EAAIxI,EAAU2P,EAAS,CACpC,IAAIiG,EAAU,IACb5V,EAAS,KAAOA,EAAS,GAAK,CAAC,IAAI,KAAK,IAAM4V,EAAU,EAAI,EAC7D,IAAMC,EAAiB,IAAM,CACvBD,GAGJjG,EAAQ,CACV,EACM2E,EAAYU,EAAkB,IAAM,CACxC,IAAMT,EAAWS,EACfa,EACCnT,GAAO8R,GAAehM,EAAI9F,CAAE,CAC/B,EACI6R,IACDvU,EAAS,MAAQA,EAAS,IAAM,CAAC,IAAI,KAAKuU,CAAQ,CAEvD,EAAIsB,EACAT,EACFd,EAAU,EAEViB,EAAK,EAAE,KAAK,IAAM,CAACvV,EAAS,aAAesU,EAAU,CAAC,CAE1D,EACA,IAAI,iBAAkB,CACpB,OAAOc,CACT,EACA,OAAQ,CACN,IAAMpV,EAAW8V,GAEjB,GADAlI,GAAkB5N,CAAQ,EACtBoV,EACF,MAAO,IAAMW,GAAgBX,EAAcpV,CAAQ,EAErD,IAAMgW,EAAW9V,GAAQ,CACvBiV,EAAiB,KACjBhV,GACED,EACAF,EACA,GACA,CAAC8U,CACH,CACF,EACA,GAAIG,GAAejV,EAAS,UAAYiW,GACtC,OAAOV,EAAK,EAAE,KAAMI,GACX,IAAMI,GAAgBJ,EAAM3V,CAAQ,CAC5C,EAAE,MAAOE,IACR8V,EAAQ9V,CAAG,EACJ,IAAM4U,EAAiBnE,GAAYmE,EAAgB,CACxD,MAAO5U,CACT,CAAC,EAAI,KACN,EAEH,IAAMgW,EAAS9W,EAAW,IAAI,EAAK,EAC7B+W,EAAQ/W,EAAW,IAAI,EACvBgX,EAAUhX,EAAW,IAAI,CAAC,CAAC2V,CAAK,EACtC,OAAIA,GACF,WAAW,IAAM,CACfqB,EAAQ,MAAQ,EAClB,EAAGrB,CAAK,EAEN7B,GAAW,MACb,WAAW,IAAM,CACf,GAAI,CAACgD,EAAO,OAAS,CAACC,EAAM,MAAO,CACjC,IAAMjW,EAAM,IAAI,MACd,mCAAmCgT,CAAO,KAC5C,EACA8C,EAAQ9V,CAAG,EACXiW,EAAM,MAAQjW,CAChB,CACF,EAAGgT,CAAO,EAEZqC,EAAK,EAAE,KAAK,IAAM,CAChBW,EAAO,MAAQ,GACXlW,EAAS,QAAUiN,GAAYjN,EAAS,OAAO,KAAK,GACtDA,EAAS,OAAO,OAAO,CAE3B,CAAC,EAAE,MAAOE,GAAQ,CAChB8V,EAAQ9V,CAAG,EACXiW,EAAM,MAAQjW,CAChB,CAAC,EACM,IAAM,CACX,GAAIgW,EAAO,OAASd,EAClB,OAAOW,GAAgBX,EAAcpV,CAAQ,EACxC,GAAImW,EAAM,OAASrB,EACxB,OAAOnE,GAAYmE,EAAgB,CACjC,MAAOqB,EAAM,KACf,CAAC,EACI,GAAItB,GAAoB,CAACuB,EAAQ,MACtC,OAAOzF,GAAYkE,CAAgB,CAEvC,CACF,CACF,CAAC,CACH,CACA,SAASkB,GAAgBJ,EAAMlD,EAAQ,CACrC,GAAM,CAAE,IAAK4D,EAAM,MAAArR,EAAO,SAAA4B,EAAU,GAAA0P,CAAG,EAAI7D,EAAO,MAC5ClT,EAAQoR,GAAYgF,EAAM3Q,EAAO4B,CAAQ,EAC/C,OAAArH,EAAM,IAAM8W,EACZ9W,EAAM,GAAK+W,EACX,OAAO7D,EAAO,MAAM,GACblT,CACT,CAEA,IAAM0N,GAAe1N,GAAUA,EAAM,KAAK,cACpCgX,GAAgB,CACpB,KAAM,YAIN,cAAe,GACf,MAAO,CACL,QAAS,CAAC,OAAQ,OAAQ,KAAK,EAC/B,QAAS,CAAC,OAAQ,OAAQ,KAAK,EAC/B,IAAK,CAAC,OAAQ,MAAM,CACtB,EACA,MAAMvR,EAAO,CAAE,MAAA4E,CAAM,EAAG,CACtB,IAAM5J,EAAW6J,GAAmB,EAC9B2M,EAAgBxW,EAAS,IAC/B,GAAI,CAACwW,EAAc,SACjB,MAAO,IAAM,CACX,IAAM5P,EAAWgD,EAAM,SAAWA,EAAM,QAAQ,EAChD,OAAOhD,GAAYA,EAAS,SAAW,EAAIA,EAAS,CAAC,EAAIA,CAC3D,EAEF,IAAM6P,EAAwB,IAAI,IAC5BC,EAAuB,IAAI,IAC7BC,EAAU,KACR7Q,EAAiB9F,EAAS,SAC1B,CACJ,SAAU,CACR,EAAGyP,EACH,EAAGnH,EACH,GAAIsO,EACJ,EAAG,CAAE,cAAAC,CAAc,CACrB,CACF,EAAIL,EACEM,EAAmBD,EAAc,KAAK,EAC5CL,EAAc,SAAW,CAACjX,EAAOoG,EAAWC,EAAQG,EAAWE,IAAc,CAC3E,IAAM8Q,EAAYxX,EAAM,UACxB+I,EAAK/I,EAAOoG,EAAWC,EAAQ,EAAGE,CAAc,EAChD2J,EACEsH,EAAU,MACVxX,EACAoG,EACAC,EACAmR,EACAjR,EACAC,EACAxG,EAAM,aACN0G,CACF,EACAsB,GAAsB,IAAM,CAC1BwP,EAAU,cAAgB,GACtBA,EAAU,GACZ1X,EAAO,eAAe0X,EAAU,CAAC,EAEnC,IAAMC,EAAYzX,EAAM,OAASA,EAAM,MAAM,eACzCyX,GACFvF,GAAgBuF,EAAWD,EAAU,OAAQxX,CAAK,CAEtD,EAAGuG,CAAc,CACnB,EACA0Q,EAAc,WAAcjX,GAAU,CACpC,IAAMwX,EAAYxX,EAAM,UACxB0X,GAAgBF,EAAU,CAAC,EAC3BE,GAAgBF,EAAU,CAAC,EAC3BzO,EAAK/I,EAAOuX,EAAkB,KAAM,EAAGhR,CAAc,EACrDyB,GAAsB,IAAM,CACtBwP,EAAU,IACZ1X,EAAO,eAAe0X,EAAU,EAAE,EAEpC,IAAMC,EAAYzX,EAAM,OAASA,EAAM,MAAM,iBACzCyX,GACFvF,GAAgBuF,EAAWD,EAAU,OAAQxX,CAAK,EAEpDwX,EAAU,cAAgB,EAC5B,EAAGjR,CAAc,CACnB,EACA,SAASgC,EAAQvI,EAAO,CACtB2X,GAAe3X,CAAK,EACpBqX,EAASrX,EAAOS,EAAU8F,EAAgB,EAAI,CAChD,CACA,SAASqR,EAAWC,EAAQ,CAC1BX,EAAM,QAAQ,CAAClX,EAAO4M,IAAQ,CAC5B,IAAM1H,EAAO4S,GAAiB9X,EAAM,IAAI,EACpCkF,GAAQ,CAAC2S,EAAO3S,CAAI,GACtB6S,EAAgBnL,CAAG,CAEvB,CAAC,CACH,CACA,SAASmL,EAAgBnL,EAAK,CAC5B,IAAMoL,EAASd,EAAM,IAAItK,CAAG,EACxBoL,IAAW,CAACZ,GAAW,CAAChM,GAAgB4M,EAAQZ,CAAO,GACzD7O,EAAQyP,CAAM,EACLZ,GACTO,GAAeP,CAAO,EAExBF,EAAM,OAAOtK,CAAG,EAChBuK,EAAK,OAAOvK,CAAG,CACjB,CACAqL,GACE,IAAM,CAACxS,EAAM,QAASA,EAAM,OAAO,EACnC,CAAC,CAACyS,EAASC,CAAO,IAAM,CACtBD,GAAWN,EAAY1S,GAASkT,GAAQF,EAAShT,CAAI,CAAC,EACtDiT,GAAWP,EAAY1S,GAAS,CAACkT,GAAQD,EAASjT,CAAI,CAAC,CACzD,EAEA,CAAE,MAAO,OAAQ,KAAM,EAAK,CAC9B,EACA,IAAImT,EAAkB,KAChBC,EAAe,IAAM,CACrBD,GAAmB,OACjBE,GAAW9X,EAAS,QAAQ,IAAI,EAClCuH,GAAsB,IAAM,CAC1BkP,EAAM,IAAImB,EAAiBG,GAAc/X,EAAS,OAAO,CAAC,CAC5D,EAAGA,EAAS,QAAQ,QAAQ,EAE5ByW,EAAM,IAAImB,EAAiBG,GAAc/X,EAAS,OAAO,CAAC,EAGhE,EACA,OAAAqJ,GAAUwO,CAAY,EACtBG,GAAUH,CAAY,EACtBvO,GAAgB,IAAM,CACpBmN,EAAM,QAASc,GAAW,CACxB,GAAM,CAAE,QAAA7N,EAAS,SAAAuO,CAAS,EAAIjY,EACxBT,EAAQwY,GAAcrO,CAAO,EACnC,GAAI6N,EAAO,OAAShY,EAAM,MAAQgY,EAAO,MAAQhY,EAAM,IAAK,CAC1D2X,GAAe3X,CAAK,EACpB,IAAM2Y,EAAK3Y,EAAM,UAAU,GAC3B2Y,GAAM3Q,GAAsB2Q,EAAID,CAAQ,EACxC,MACF,CACAnQ,EAAQyP,CAAM,CAChB,CAAC,CACH,CAAC,EACM,IAAM,CAEX,GADAK,EAAkB,KACd,CAAChO,EAAM,QACT,OAAO+M,EAAU,KAEnB,IAAM/P,EAAWgD,EAAM,QAAQ,EACzBuO,EAAWvR,EAAS,CAAC,EAC3B,GAAIA,EAAS,OAAS,EACpB,OAAA+P,EAAU,KACH/P,EACF,GAAI,CAACwR,GAAQD,CAAQ,GAAK,EAAEA,EAAS,UAAY,IAAM,EAAEA,EAAS,UAAY,KACnF,OAAAxB,EAAU,KACHwB,EAET,IAAI5Y,EAAQwY,GAAcI,CAAQ,EAClC,GAAI5Y,EAAM,OAASiL,GACjB,OAAAmM,EAAU,KACHpX,EAET,IAAMoW,EAAOpW,EAAM,KACbkF,EAAO4S,GACXjJ,GAAe7O,CAAK,EAAIA,EAAM,KAAK,iBAAmB,CAAC,EAAIoW,CAC7D,EACM,CAAE,QAAA8B,EAAS,QAAAC,EAAS,IAAAW,CAAI,EAAIrT,EAClC,GAAIyS,IAAY,CAAChT,GAAQ,CAACkT,GAAQF,EAAShT,CAAI,IAAMiT,GAAWjT,GAAQkT,GAAQD,EAASjT,CAAI,EAC3F,OAAAlF,EAAM,WAAa,KACnBoX,EAAUpX,EACH4Y,EAET,IAAMhM,EAAM5M,EAAM,KAAO,KAAOoW,EAAOpW,EAAM,IACvC+Y,EAAc7B,EAAM,IAAItK,CAAG,EACjC,OAAI5M,EAAM,KACRA,EAAQ2N,GAAW3N,CAAK,EACpB4Y,EAAS,UAAY,MACvBA,EAAS,UAAY5Y,IAGzBqY,EAAkBzL,EACdmM,GACF/Y,EAAM,GAAK+Y,EAAY,GACvB/Y,EAAM,UAAY+Y,EAAY,UAC1B/Y,EAAM,YACRkL,GAAmBlL,EAAOA,EAAM,UAAU,EAE5CA,EAAM,WAAa,IACnBmX,EAAK,OAAOvK,CAAG,EACfuK,EAAK,IAAIvK,CAAG,IAEZuK,EAAK,IAAIvK,CAAG,EACRkM,GAAO3B,EAAK,KAAO,SAAS2B,EAAK,EAAE,GACrCf,EAAgBZ,EAAK,OAAO,EAAE,KAAK,EAAE,KAAK,GAG9CnX,EAAM,WAAa,IACnBoX,EAAUpX,EACHuY,GAAWK,EAAS,IAAI,EAAIA,EAAW5Y,CAChD,CACF,CACF,EACMgZ,GAAYhC,GAClB,SAASoB,GAAQa,EAAS/T,EAAM,CAC9B,OAAIpF,EAAO,QAAQmZ,CAAO,EACjBA,EAAQ,KAAM9W,GAAMiW,GAAQjW,EAAG+C,CAAI,CAAC,EAClCpF,EAAO,SAASmZ,CAAO,EACzBA,EAAQ,MAAM,GAAG,EAAE,SAAS/T,CAAI,EAC9BpF,EAAO,SAASmZ,CAAO,GAChCA,EAAQ,UAAY,EACbA,EAAQ,KAAK/T,CAAI,GAEnB,EACT,CACA,SAASgU,GAAY7T,EAAMO,EAAQ,CACjCuT,GAAsB9T,EAAM,IAAKO,CAAM,CACzC,CACA,SAASwT,GAAc/T,EAAMO,EAAQ,CACnCuT,GAAsB9T,EAAM,KAAMO,CAAM,CAC1C,CACA,SAASuT,GAAsB9T,EAAMjF,EAAMwF,EAAS2Q,GAAiB,CACnE,IAAM8C,EAAchU,EAAK,QAAUA,EAAK,MAAQ,IAAM,CACpD,IAAI+R,EAAUxR,EACd,KAAOwR,GAAS,CACd,GAAIA,EAAQ,cACV,OAEFA,EAAUA,EAAQ,MACpB,CACA,OAAO/R,EAAK,CACd,GAEA,GADAiU,GAAWlZ,EAAMiZ,EAAazT,CAAM,EAChCA,EAAQ,CACV,IAAIwR,EAAUxR,EAAO,OACrB,KAAOwR,GAAWA,EAAQ,QACpB1J,GAAY0J,EAAQ,OAAO,KAAK,GAClCmC,GAAsBF,EAAajZ,EAAMwF,EAAQwR,CAAO,EAE1DA,EAAUA,EAAQ,MAEtB,CACF,CACA,SAASmC,GAAsBlU,EAAMjF,EAAMwF,EAAQ4T,EAAe,CAChE,IAAMC,EAAWH,GACflZ,EACAiF,EACAmU,EACA,EAEF,EACAE,GAAY,IAAM,CAChB5Z,EAAO,OAAO0Z,EAAcpZ,CAAI,EAAGqZ,CAAQ,CAC7C,EAAG7T,CAAM,CACX,CACA,SAAS+R,GAAe3X,EAAO,CAC7BA,EAAM,WAAa,KACnBA,EAAM,WAAa,IACrB,CACA,SAASwY,GAAcxY,EAAO,CAC5B,OAAOA,EAAM,UAAY,IAAMA,EAAM,UAAYA,CACnD,CAEA,SAASsZ,GAAWlZ,EAAMiF,EAAMO,EAAS2Q,GAAiBoD,EAAU,GAAO,CACzE,GAAI/T,EAAQ,CACV,IAAMoF,EAAQpF,EAAOxF,CAAI,IAAMwF,EAAOxF,CAAI,EAAI,CAAC,GACzCiZ,EAAchU,EAAK,QAAUA,EAAK,MAAQ,IAAI3E,IAAS,CAC3Db,EAAW,cAAc,EACzB,IAAM+Z,EAAQC,GAAmBjU,CAAM,EACjC9E,EAAMD,GAA2BwE,EAAMO,EAAQxF,EAAMM,CAAI,EAC/D,OAAAkZ,EAAM,EACN/Z,EAAW,cAAc,EAClBiB,CACT,GACA,OAAI6Y,EACF3O,EAAM,QAAQqO,CAAW,EAEzBrO,EAAM,KAAKqO,CAAW,EAEjBA,CACT,CACF,CACA,IAAMS,GAAcC,GAAc,CAAC1U,EAAMO,EAAS2Q,KAAoB,EAChE,CAACG,IAAyBqD,IAAc,OAC1CT,GAAWS,EAAW,IAAIrZ,IAAS2E,EAAK,GAAG3E,CAAI,EAAGkF,CAAM,CAE5D,EACMoU,GAAgBF,GAAW,IAAI,EAC/BhQ,GAAYgQ,GAAW,GAAG,EAC1BG,GAAiBH,GACrB,IACF,EACMrB,GAAYqB,GAAW,GAAG,EAC1B/P,GAAkB+P,GACtB,KACF,EACMJ,GAAcI,GAAW,IAAI,EAC7BI,GAAmBJ,GACvB,IACF,EACMK,GAAoBL,GAAW,KAAK,EACpCM,GAAkBN,GAAW,KAAK,EACxC,SAASO,GAAgBhV,EAAMO,EAAS2Q,GAAiB,CACvD+C,GAAW,KAAMjU,EAAMO,CAAM,CAC/B,CAEA,IAAM0U,GAAa,aACbC,GAAa,aACnB,SAASC,GAAiBtV,EAAMuV,EAAoB,CAClD,OAAOC,GAAaJ,GAAYpV,EAAM,GAAMuV,CAAkB,GAAKvV,CACrE,CACA,IAAMyV,GAAyB,OAAO,IAAI,OAAO,EACjD,SAASC,GAAwBC,EAAW,CAC1C,OAAI/a,EAAO,SAAS+a,CAAS,EACpBH,GAAaJ,GAAYO,EAAW,EAAK,GAAKA,EAE9CA,GAAaF,EAExB,CACA,SAASG,GAAiB5V,EAAM,CAC9B,OAAOwV,GAAaH,GAAYrV,CAAI,CACtC,CACA,SAASwV,GAAata,EAAM8E,EAAM6V,EAAc,GAAMN,EAAqB,GAAO,CAChF,IAAMha,EAAWiD,IAA4B6S,GAC7C,GAAI9V,EAAU,CACZ,IAAMua,EAAYva,EAAS,KAC3B,GAAIL,IAASka,GAAY,CACvB,IAAMW,EAAWnD,GACfkD,EACA,EACF,EACA,GAAIC,IAAaA,IAAa/V,GAAQ+V,IAAanb,EAAO,SAASoF,CAAI,GAAK+V,IAAanb,EAAO,WAAWA,EAAO,SAASoF,CAAI,CAAC,GAC9H,OAAO8V,CAEX,CACA,IAAMla,EAGJoV,GAAQzV,EAASL,CAAI,GAAK4a,EAAU5a,CAAI,EAAG8E,CAAI,GAC/CgR,GAAQzV,EAAS,WAAWL,CAAI,EAAG8E,CAAI,EAEzC,MAAI,CAACpE,GAAO2Z,EACHO,EAEFla,CACT,CACF,CACA,SAASoV,GAAQgF,EAAUhW,EAAM,CAC/B,OAAOgW,IAAaA,EAAShW,CAAI,GAAKgW,EAASpb,EAAO,SAASoF,CAAI,CAAC,GAAKgW,EAASpb,EAAO,WAAWA,EAAO,SAASoF,CAAI,CAAC,CAAC,EAC5H,CAEA,SAASiW,GAAW/F,EAAQgG,EAAYlE,EAAOmE,EAAO,CACpD,IAAIvN,EACEkK,EAASd,GAASA,EAAMmE,CAAK,EAC7BC,EAAgBxb,EAAO,QAAQsV,CAAM,EAC3C,GAAIkG,GAAiBxb,EAAO,SAASsV,CAAM,EAAG,CAC5C,IAAMmG,EAAwBD,GAAiBzb,EAAW,WAAWuV,CAAM,EACvEoG,EAAY,GACZC,EAAmB,GACnBF,IACFC,EAAY,CAAC3b,EAAW,UAAUuV,CAAM,EACxCqG,EAAmB5b,EAAW,WAAWuV,CAAM,EAC/CA,EAASvV,EAAW,iBAAiBuV,CAAM,GAE7CtH,EAAM,IAAI,MAAMsH,EAAO,MAAM,EAC7B,QAASpU,EAAI,EAAGqR,EAAI+C,EAAO,OAAQpU,EAAIqR,EAAGrR,IACxC8M,EAAI9M,CAAC,EAAIoa,EACPI,EAAYC,EAAmB5b,EAAW,WAAWA,EAAW,WAAWuV,EAAOpU,CAAC,CAAC,CAAC,EAAInB,EAAW,WAAWuV,EAAOpU,CAAC,CAAC,EAAIoU,EAAOpU,CAAC,EACpIA,EACA,OACAgX,GAAUA,EAAOhX,CAAC,CACpB,CAEJ,SAAW,OAAOoU,GAAW,SAAU,CACrCtH,EAAM,IAAI,MAAMsH,CAAM,EACtB,QAASpU,EAAI,EAAGA,EAAIoU,EAAQpU,IAC1B8M,EAAI9M,CAAC,EAAIoa,EAAWpa,EAAI,EAAGA,EAAG,OAAQgX,GAAUA,EAAOhX,CAAC,CAAC,CAE7D,SAAWlB,EAAO,SAASsV,CAAM,EAC/B,GAAIA,EAAO,OAAO,QAAQ,EACxBtH,EAAM,MAAM,KACVsH,EACA,CAACsG,EAAM1a,IAAMoa,EAAWM,EAAM1a,EAAG,OAAQgX,GAAUA,EAAOhX,CAAC,CAAC,CAC9D,MACK,CACL,IAAMmW,EAAO,OAAO,KAAK/B,CAAM,EAC/BtH,EAAM,IAAI,MAAMqJ,EAAK,MAAM,EAC3B,QAASnW,EAAI,EAAGqR,EAAI8E,EAAK,OAAQnW,EAAIqR,EAAGrR,IAAK,CAC3C,IAAM4L,EAAMuK,EAAKnW,CAAC,EAClB8M,EAAI9M,CAAC,EAAIoa,EAAWhG,EAAOxI,CAAG,EAAGA,EAAK5L,EAAGgX,GAAUA,EAAOhX,CAAC,CAAC,CAC9D,CACF,MAEA8M,EAAM,CAAC,EAET,OAAIoJ,IACFA,EAAMmE,CAAK,EAAIvN,GAEVA,CACT,CAEA,SAAS6N,GAAYtR,EAAOuR,EAAc,CACxC,QAAS5a,EAAI,EAAGA,EAAI4a,EAAa,OAAQ5a,IAAK,CAC5C,IAAM6a,EAAOD,EAAa5a,CAAC,EAC3B,GAAIlB,EAAO,QAAQ+b,CAAI,EACrB,QAASC,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAC/BzR,EAAMwR,EAAKC,CAAC,EAAE,IAAI,EAAID,EAAKC,CAAC,EAAE,QAEvBD,IACTxR,EAAMwR,EAAK,IAAI,EAAIA,EAAK,IAAM,IAAInb,IAAS,CACzC,IAAMI,EAAM+a,EAAK,GAAG,GAAGnb,CAAI,EAC3B,OAAII,IAAKA,EAAI,IAAM+a,EAAK,KACjB/a,CACT,EAAI+a,EAAK,GAEb,CACA,OAAOxR,CACT,CAEA,SAAS0R,GAAW1R,EAAOnF,EAAMO,EAAQ,CAAC,EAAGuW,EAAUC,EAAW,CAChE,GAAIvY,GAAyB,IAAMA,GAAyB,QAAUmL,GAAenL,GAAyB,MAAM,GAAKA,GAAyB,OAAO,GACvJ,OAAIwB,IAAS,YAAWO,EAAM,KAAOP,GAC9BgX,GAAU,EAAGC,GAClBnO,GACA,KACA,CAACoD,GAAY,OAAQ3L,EAAOuW,GAAYA,EAAS,CAAC,CAAC,EACnD,EACF,EAEF,IAAIH,EAAOxR,EAAMnF,CAAI,EACjB2W,GAAQA,EAAK,KACfA,EAAK,GAAK,IAEZK,GAAU,EACV,IAAME,EAAmBP,GAAQQ,GAAiBR,EAAKpW,CAAK,CAAC,EACvD6W,EAAU7W,EAAM,KAEtB2W,GAAoBA,EAAiB,IAC/BG,EAAWJ,GACfnO,GACA,CACE,KAAMsO,GAAW,CAACxc,EAAO,SAASwc,CAAO,EAAIA,EAAU,IAAIpX,CAAI,KAC9D,CAACkX,GAAoBJ,EAAW,MAAQ,GAC3C,EACAI,IAAqBJ,EAAWA,EAAS,EAAI,CAAC,GAC9CI,GAAoB/R,EAAM,IAAM,EAAI,GAAK,EAC3C,EACA,MAAI,CAAC4R,GAAaM,EAAS,UACzBA,EAAS,aAAe,CAACA,EAAS,QAAU,IAAI,GAE9CV,GAAQA,EAAK,KACfA,EAAK,GAAK,IAELU,CACT,CACA,SAASF,GAAiBG,EAAQ,CAChC,OAAOA,EAAO,KAAM5T,GACbiQ,GAAQjQ,CAAK,EACd,EAAAA,EAAM,OAASqC,IACfrC,EAAM,OAASoF,IAAY,CAACqO,GAAiBzT,EAAM,QAAQ,GAFnC,EAK7B,EAAI4T,EAAS,IAChB,CAEA,SAASC,GAAWC,EAAKC,EAAyB,CAChD,IAAM7O,EAAM,CAAC,EACb,QAAWlB,KAAO8P,EAChB5O,EAAI6O,GAA2B,QAAQ,KAAK/P,CAAG,EAAI,MAAMA,CAAG,GAAK9M,EAAO,aAAa8M,CAAG,CAAC,EAAI8P,EAAI9P,CAAG,EAEtG,OAAOkB,CACT,CAEA,IAAM8O,GAAqB5b,GACpBA,EACD6b,GAAoB7b,CAAC,EAAU0D,GAA2B1D,CAAC,EACxD4b,GAAkB5b,EAAE,MAAM,EAFlB,KAIX8b,GAGYhd,EAAO,OAAuB,OAAO,OAAO,IAAI,EAAG,CACjE,EAAIkB,GAAMA,EACV,IAAMA,GAAMA,EAAE,MAAM,GACpB,MAAQA,GAAMA,EAAE,KAChB,OAASA,GAAMA,EAAE,MACjB,OAASA,GAAMA,EAAE,MACjB,OAASA,GAAMA,EAAE,MACjB,MAAQA,GAAMA,EAAE,KAChB,QAAUA,GAAM4b,GAAkB5b,EAAE,MAAM,EAC1C,MAAQA,GAAM4b,GAAkB5b,EAAE,IAAI,EACtC,MAAQA,GAAMA,EAAE,GAChB,MAAQA,GAAMA,EAAE,KAChB,SAAWA,GAAM+b,GAAqB/b,CAAC,EACvC,aAAeA,GAAMA,EAAE,IAAMA,EAAE,EAAI,IAAM,CACvC4B,GAAS5B,EAAE,MAAM,CACnB,GACA,UAAYA,GAAMA,EAAE,IAAMA,EAAE,EAAIkB,GAAS,KAAKlB,EAAE,KAAK,GACrD,OAASA,GAAMgc,GAAc,KAAKhc,CAAC,CACrC,CAAC,EAEGic,GAAkB,CAACpT,EAAO+C,IAAQ/C,IAAU/J,EAAO,WAAa,CAAC+J,EAAM,iBAAmB/J,EAAO,OAAO+J,EAAO+C,CAAG,EAClHsQ,GAA8B,CAClC,IAAI,CAAE,EAAGzc,CAAS,EAAGmM,EAAK,CACxB,GAAIA,IAAQ,WACV,MAAO,GAET,GAAM,CAAE,IAAAzI,EAAK,WAAA+K,EAAY,KAAAiO,EAAM,MAAA1X,EAAO,YAAA2X,EAAa,KAAAhd,EAAM,WAAAid,CAAW,EAAI5c,EACpE6c,EACJ,GAAI1Q,EAAI,CAAC,IAAM,IAAK,CAClB,IAAM2Q,EAAIH,EAAYxQ,CAAG,EACzB,GAAI2Q,IAAM,OACR,OAAQA,EAAG,CACT,IAAK,GACH,OAAOrO,EAAWtC,CAAG,EACvB,IAAK,GACH,OAAOuQ,EAAKvQ,CAAG,EACjB,IAAK,GACH,OAAOzI,EAAIyI,CAAG,EAChB,IAAK,GACH,OAAOnH,EAAMmH,CAAG,CACpB,KACK,IAAIqQ,GAAgB/N,EAAYtC,CAAG,EACxC,OAAAwQ,EAAYxQ,CAAG,EAAI,EACZsC,EAAWtC,CAAG,EAChB,GAAIuQ,IAASrd,EAAO,WAAaA,EAAO,OAAOqd,EAAMvQ,CAAG,EAC7D,OAAAwQ,EAAYxQ,CAAG,EAAI,EACZuQ,EAAKvQ,CAAG,EACV,IAGJ0Q,EAAkB7c,EAAS,aAAa,CAAC,IAAMX,EAAO,OAAOwd,EAAiB1Q,CAAG,EAElF,OAAAwQ,EAAYxQ,CAAG,EAAI,EACZnH,EAAMmH,CAAG,EACX,GAAIzI,IAAQrE,EAAO,WAAaA,EAAO,OAAOqE,EAAKyI,CAAG,EAC3D,OAAAwQ,EAAYxQ,CAAG,EAAI,EACZzI,EAAIyI,CAAG,EACL4Q,KACTJ,EAAYxQ,CAAG,EAAI,GAEvB,CACA,IAAM6Q,EAAeX,GAAoBlQ,CAAG,EACxC8Q,EAAWC,EACf,GAAIF,EACF,OAAI7Q,IAAQ,UACV/M,EAAW,MAAMY,EAAS,MAAO,MAAO,EAAE,EAErCgd,EAAahd,CAAQ,EACvB,IAEJid,EAAYtd,EAAK,gBAAkBsd,EAAYA,EAAU9Q,CAAG,GAE7D,OAAO8Q,EACF,GAAIvZ,IAAQrE,EAAO,WAAaA,EAAO,OAAOqE,EAAKyI,CAAG,EAC3D,OAAAwQ,EAAYxQ,CAAG,EAAI,EACZzI,EAAIyI,CAAG,EACT,GAEL+Q,EAAmBN,EAAW,OAAO,iBAAkBvd,EAAO,OAAO6d,EAAkB/Q,CAAG,EAGxF,OAAO+Q,EAAiB/Q,CAAG,CAGjC,EACA,IAAI,CAAE,EAAGnM,CAAS,EAAGmM,EAAK/H,EAAO,CAC/B,GAAM,CAAE,KAAAsY,EAAM,WAAAjO,EAAY,IAAA/K,CAAI,EAAI1D,EAClC,OAAIwc,GAAgB/N,EAAYtC,CAAG,GACjCsC,EAAWtC,CAAG,EAAI/H,EACX,IACEsY,IAASrd,EAAO,WAAaA,EAAO,OAAOqd,EAAMvQ,CAAG,GAC7DuQ,EAAKvQ,CAAG,EAAI/H,EACL,IACE/E,EAAO,OAAOW,EAAS,MAAOmM,CAAG,GAGxCA,EAAI,CAAC,IAAM,KAAOA,EAAI,MAAM,CAAC,IAAKnM,EAC7B,IAGL0D,EAAIyI,CAAG,EAAI/H,EAGR,GACT,EACA,IAAI,CACF,EAAG,CAAE,KAAAsY,EAAM,WAAAjO,EAAY,YAAAkO,EAAa,IAAAjZ,EAAK,WAAAkZ,EAAY,aAAAO,CAAa,CACpE,EAAGhR,EAAK,CACN,IAAI0Q,EACJ,MAAO,CAAC,CAACF,EAAYxQ,CAAG,GAAKuQ,IAASrd,EAAO,WAAaA,EAAO,OAAOqd,EAAMvQ,CAAG,GAAKqQ,GAAgB/N,EAAYtC,CAAG,IAAM0Q,EAAkBM,EAAa,CAAC,IAAM9d,EAAO,OAAOwd,EAAiB1Q,CAAG,GAAK9M,EAAO,OAAOqE,EAAKyI,CAAG,GAAK9M,EAAO,OAAOgd,GAAqBlQ,CAAG,GAAK9M,EAAO,OAAOud,EAAW,OAAO,iBAAkBzQ,CAAG,CACrU,EACA,eAAehH,EAAQgH,EAAKiR,EAAY,CACtC,OAAIA,EAAW,KAAO,KACpBjY,EAAO,EAAE,YAAYgH,CAAG,EAAI,EACnB9M,EAAO,OAAO+d,EAAY,OAAO,GAC1C,KAAK,IAAIjY,EAAQgH,EAAKiR,EAAW,MAAO,IAAI,EAEvC,QAAQ,eAAejY,EAAQgH,EAAKiR,CAAU,CACvD,CACF,EACMC,GAA6Dhe,EAAO,OAAO,CAAC,EAAGod,GAA6B,CAChH,IAAItX,EAAQgH,EAAK,CACf,GAAIA,IAAQ,OAAO,YAGnB,OAAOsQ,GAA4B,IAAItX,EAAQgH,EAAKhH,CAAM,CAC5D,EACA,IAAImY,EAAGnR,EAAK,CAEV,OADYA,EAAI,CAAC,IAAM,KAAO,CAAC9M,EAAO,kBAAkB8M,CAAG,CAE7D,CACF,CAAC,EAED,SAASoR,IAAc,CACrB,OAAO,IACT,CACA,SAASC,IAAc,CACrB,OAAO,IACT,CACA,SAASC,GAAaC,EAAS,CAC/B,CACA,SAASC,GAAclQ,EAAS,CAChC,CACA,SAASmQ,IAAc,CACrB,OAAO,IACT,CACA,SAASC,IAAc,CACvB,CACA,SAASC,GAAa9Y,EAAO+Y,EAAU,CACrC,OAAO,IACT,CACA,SAASC,IAAW,CAClB,OAAOC,GAAW,EAAE,KACtB,CACA,SAASC,IAAW,CAClB,OAAOD,GAAW,EAAE,KACtB,CACA,SAASA,GAAWE,EAAoB,CACtC,IAAM5d,EAAIsJ,GAAmB,EAC7B,OAAOtJ,EAAE,eAAiBA,EAAE,aAAe6d,GAAmB7d,CAAC,EACjE,CACA,SAAS8d,GAAsBrZ,EAAO,CACpC,OAAO3F,EAAO,QAAQ2F,CAAK,EAAIA,EAAM,OACnC,CAACsZ,EAAY5c,KAAO4c,EAAW5c,CAAC,EAAI,KAAM4c,GAC1C,CAAC,CACH,EAAItZ,CACN,CACA,SAASuZ,GAAcC,EAAKT,EAAU,CACpC,IAAM/Y,EAAQqZ,GAAsBG,CAAG,EACvC,QAAWrS,KAAO4R,EAAU,CAC1B,GAAI5R,EAAI,WAAW,QAAQ,EAAG,SAC9B,IAAIsS,EAAMzZ,EAAMmH,CAAG,EACfsS,EACEpf,EAAO,QAAQof,CAAG,GAAKpf,EAAO,WAAWof,CAAG,EAC9CA,EAAMzZ,EAAMmH,CAAG,EAAI,CAAE,KAAMsS,EAAK,QAASV,EAAS5R,CAAG,CAAE,EAEvDsS,EAAI,QAAUV,EAAS5R,CAAG,EAEnBsS,IAAQ,OACjBA,EAAMzZ,EAAMmH,CAAG,EAAI,CAAE,QAAS4R,EAAS5R,CAAG,CAAE,GAE1CsS,GAAOV,EAAS,UAAU5R,CAAG,EAAE,IACjCsS,EAAI,YAAc,GAEtB,CACA,OAAOzZ,CACT,CACA,SAAS0Z,GAAY3b,EAAGC,EAAG,CACzB,MAAI,CAACD,GAAK,CAACC,EAAUD,GAAKC,EACtB3D,EAAO,QAAQ0D,CAAC,GAAK1D,EAAO,QAAQ2D,CAAC,EAAUD,EAAE,OAAOC,CAAC,EACtD3D,EAAO,OAAO,CAAC,EAAGgf,GAAsBtb,CAAC,EAAGsb,GAAsBrb,CAAC,CAAC,CAC7E,CACA,SAAS2b,GAAqB3Z,EAAO4Z,EAAc,CACjD,IAAMvR,EAAM,CAAC,EACb,QAAWlB,KAAOnH,EACX4Z,EAAa,SAASzS,CAAG,GAC5B,OAAO,eAAekB,EAAKlB,EAAK,CAC9B,WAAY,GACZ,IAAK,IAAMnH,EAAMmH,CAAG,CACtB,CAAC,EAGL,OAAOkB,CACT,CACA,SAASwR,GAAiBC,EAAc,CACtC,IAAMpb,EAAMmG,GAAmB,EAC3BkV,EAAYD,EAAa,EAC7B,OAAAE,GAAqB,EACjB3f,EAAO,UAAU0f,CAAS,IAC5BA,EAAYA,EAAU,MAAOhL,GAAM,CACjC,MAAAqF,GAAmB1V,CAAG,EAChBqQ,CACR,CAAC,GAEI,CAACgL,EAAW,IAAM3F,GAAmB1V,CAAG,CAAC,CAClD,CAEA,IAAIqZ,GAAoB,GACxB,SAASkC,GAAajf,EAAU,CAC9B,IAAMyN,EAAU6O,GAAqBtc,CAAQ,EACvCkf,EAAalf,EAAS,MACtB0D,EAAM1D,EAAS,IACrB+c,GAAoB,GAChBtP,EAAQ,cACVrB,GAASqB,EAAQ,aAAczN,EAAU,IAAI,EAE/C,GAAM,CAEJ,KAAMmf,EACN,SAAUC,EACV,QAAAC,EACA,MAAOC,EACP,QAASC,EACT,OAAQC,EAER,QAAAC,EACA,YAAAC,EACA,QAAAC,EACA,aAAAC,EACA,QAAAC,EACA,UAAAC,EACA,YAAAC,EACA,cAAAC,EACA,cAAAC,EACA,UAAAC,EACA,UAAAC,EACA,OAAAC,EACA,cAAAC,EACA,gBAAAC,EACA,cAAAC,EACA,eAAAC,EAEA,OAAAC,EACA,aAAAC,EAEA,WAAAC,EACA,WAAA3c,EACA,QAAA4c,EACF,EAAInT,EAKJ,GAHI+R,GACFqB,GAAkBrB,EAAe9b,EAFF,IAE+B,EAE5D2b,EACF,QAAWlT,KAAOkT,EAAS,CACzB,IAAMyB,GAAgBzB,EAAQlT,CAAG,EAC7B9M,EAAO,WAAWyhB,EAAa,IAE/Bpd,EAAIyI,CAAG,EAAI2U,GAAc,KAAK5B,CAAU,EAG9C,CAEF,GAAIC,EAAa,CACf,IAAMzC,EAAOyC,EAAY,KAAKD,EAAYA,CAAU,EAC/C7f,EAAO,SAASqd,CAAI,IACvB1c,EAAS,KAAOZ,EAAW,SAASsd,CAAI,EAE5C,CAEA,GADAK,GAAoB,GAChBqC,EACF,QAAWjT,KAAOiT,EAAiB,CACjC,IAAMX,GAAMW,EAAgBjT,CAAG,EACzB4U,GAAM1hB,EAAO,WAAWof,EAAG,EAAIA,GAAI,KAAKS,EAAYA,CAAU,EAAI7f,EAAO,WAAWof,GAAI,GAAG,EAAIA,GAAI,IAAI,KAAKS,EAAYA,CAAU,EAAI7f,EAAO,KAC7I2hB,GAAM,CAAC3hB,EAAO,WAAWof,EAAG,GAAKpf,EAAO,WAAWof,GAAI,GAAG,EAAIA,GAAI,IAAI,KAAKS,CAAU,EAAI7f,EAAO,KAChG4L,GAAIgW,GAAS,CACjB,IAAAF,GACA,IAAAC,EACF,CAAC,EACD,OAAO,eAAetd,EAAKyI,EAAK,CAC9B,WAAY,GACZ,aAAc,GACd,IAAK,IAAMlB,GAAE,MACb,IAAMiW,GAAMjW,GAAE,MAAQiW,CACxB,CAAC,CACH,CAEF,GAAI5B,EACF,QAAWnT,KAAOmT,EAChB6B,GAAc7B,EAAanT,CAAG,EAAGzI,EAAKwb,EAAY/S,CAAG,EAGzD,GAAIoT,EAAgB,CAClB,IAAM6B,EAAW/hB,EAAO,WAAWkgB,CAAc,EAAIA,EAAe,KAAKL,CAAU,EAAIK,EACvF,QAAQ,QAAQ6B,CAAQ,EAAE,QAASjV,IAAQ,CACzCkV,GAAQlV,GAAKiV,EAASjV,EAAG,CAAC,CAC5B,CAAC,CACH,CACIsT,GACFrT,GAASqT,EAASzf,EAAU,GAAG,EAEjC,SAASshB,GAAsBC,EAAU3c,GAAM,CACzCvF,EAAO,QAAQuF,EAAI,EACrBA,GAAK,QAAS4c,IAAUD,EAASC,GAAM,KAAKtC,CAAU,CAAC,CAAC,EAC/Cta,IACT2c,EAAS3c,GAAK,KAAKsa,CAAU,CAAC,CAElC,CAaA,GAZAoC,GAAsB/H,GAAemG,CAAW,EAChD4B,GAAsBjY,GAAWsW,CAAO,EACxC2B,GAAsB9H,GAAgBoG,CAAY,EAClD0B,GAAsBtJ,GAAW6H,CAAO,EACxCyB,GAAsB7I,GAAaqH,CAAS,EAC5CwB,GAAsB3I,GAAeoH,CAAW,EAChDuB,GAAsB1H,GAAiB2G,CAAa,EACpDe,GAAsB3H,GAAiB0G,CAAa,EACpDiB,GAAsB5H,GAAmB4G,CAAe,EACxDgB,GAAsBhY,GAAiB2W,CAAa,EACpDqB,GAAsBrI,GAAakH,CAAS,EAC5CmB,GAAsB7H,GAAkB+G,CAAc,EAClDnhB,EAAO,QAAQohB,CAAM,EACvB,GAAIA,EAAO,OAAQ,CACjB,IAAM/C,EAAU1d,EAAS,UAAYA,EAAS,QAAU,CAAC,GACzDygB,EAAO,QAAStU,IAAQ,CACtB,OAAO,eAAeuR,EAASvR,GAAK,CAClC,IAAK,IAAM+S,EAAW/S,EAAG,EACzB,IAAMzM,IAAQwf,EAAW/S,EAAG,EAAIzM,GAChC,WAAY,EACd,CAAC,CACH,CAAC,CACH,MAAYM,EAAS,UACnBA,EAAS,QAAU,CAAC,GAGpBogB,GAAUpgB,EAAS,SAAWX,EAAO,OACvCW,EAAS,OAASogB,GAEhBM,GAAgB,OAClB1gB,EAAS,aAAe0gB,GAEtBC,IAAY3gB,EAAS,WAAa2gB,GAClC3c,IAAYhE,EAAS,WAAagE,GAClCwc,GACF5S,GAAkB5N,CAAQ,CAE9B,CACA,SAAS6gB,GAAkBrB,EAAe9b,EAAK+d,EAA2BpiB,EAAO,KAAM,CACjFA,EAAO,QAAQmgB,CAAa,IAC9BA,EAAgBkC,GAAgBlC,CAAa,GAE/C,QAAWrT,KAAOqT,EAAe,CAC/B,IAAMf,EAAMe,EAAcrT,CAAG,EACzB6M,EACA3Z,EAAO,SAASof,CAAG,EACjB,YAAaA,EACfzF,EAAW2I,GACTlD,EAAI,MAAQtS,EACZsS,EAAI,QACJ,EACF,EAEAzF,EAAW2I,GAAOlD,EAAI,MAAQtS,CAAG,EAGnC6M,EAAW2I,GAAOlD,CAAG,EAEnBrf,EAAW,MAAM4Z,CAAQ,EAC3B,OAAO,eAAetV,EAAKyI,EAAK,CAC9B,WAAY,GACZ,aAAc,GACd,IAAK,IAAM6M,EAAS,MACpB,IAAMkI,GAAMlI,EAAS,MAAQkI,CAC/B,CAAC,EAEDxd,EAAIyI,CAAG,EAAI6M,CAEf,CACF,CACA,SAAS5M,GAASxH,EAAM5E,EAAUL,EAAM,CACtCS,GACEf,EAAO,QAAQuF,CAAI,EAAIA,EAAK,IAAKgd,GAAMA,EAAE,KAAK5hB,EAAS,KAAK,CAAC,EAAI4E,EAAK,KAAK5E,EAAS,KAAK,EACzFA,EACAL,CACF,CACF,CACA,SAASwhB,GAAc3C,EAAK9a,EAAKwb,EAAY/S,EAAK,CAChD,IAAI0V,EAAS1V,EAAI,SAAS,GAAG,EAAI2V,GAAiB5C,EAAY/S,CAAG,EAAI,IAAM+S,EAAW/S,CAAG,EACzF,GAAI9M,EAAO,SAASmf,CAAG,EAAG,CACxB,IAAMuD,EAAUre,EAAI8a,CAAG,EACnBnf,EAAO,WAAW0iB,CAAO,GAEzBvK,GAAMqK,EAAQE,CAAO,CAG3B,SAAW1iB,EAAO,WAAWmf,CAAG,EAE5BhH,GAAMqK,EAAQrD,EAAI,KAAKU,CAAU,CAAC,UAE3B7f,EAAO,SAASmf,CAAG,EAC5B,GAAInf,EAAO,QAAQmf,CAAG,EACpBA,EAAI,QAAS1Q,GAAMqT,GAAcrT,EAAGpK,EAAKwb,EAAY/S,CAAG,CAAC,MACpD,CACL,IAAM4V,EAAU1iB,EAAO,WAAWmf,EAAI,OAAO,EAAIA,EAAI,QAAQ,KAAKU,CAAU,EAAIxb,EAAI8a,EAAI,OAAO,EAC3Fnf,EAAO,WAAW0iB,CAAO,GAC3BvK,GAAMqK,EAAQE,EAASvD,CAAG,CAE9B,CAEJ,CACA,SAASlC,GAAqBtc,EAAU,CACtC,IAAMgiB,EAAOhiB,EAAS,KAChB,CAAE,OAAAiiB,EAAQ,QAASC,CAAe,EAAIF,EACtC,CACJ,OAAQG,EACR,aAAc1L,EACd,OAAQ,CAAE,sBAAA2L,CAAsB,CAClC,EAAIpiB,EAAS,WACPuX,EAASd,EAAM,IAAIuL,CAAI,EACzBK,EACJ,OAAI9K,EACF8K,EAAW9K,EACF,CAAC4K,EAAa,QAAU,CAACF,GAAU,CAACC,EAE3CG,EAAWL,GAGbK,EAAW,CAAC,EACRF,EAAa,QACfA,EAAa,QACVG,GAAMC,GAAaF,EAAUC,EAAGF,EAAuB,EAAI,CAC9D,EAEFG,GAAaF,EAAUL,EAAMI,CAAqB,GAEhD/iB,EAAO,SAAS2iB,CAAI,GACtBvL,EAAM,IAAIuL,EAAMK,CAAQ,EAEnBA,CACT,CACA,SAASE,GAAaC,EAAIC,EAAMC,EAAQC,EAAU,GAAO,CACvD,GAAM,CAAE,OAAAV,EAAQ,QAASC,CAAe,EAAIO,EACxCP,GACFK,GAAaC,EAAIN,EAAgBQ,EAAQ,EAAI,EAE3CT,GACFA,EAAO,QACJK,GAAMC,GAAaC,EAAIF,EAAGI,EAAQ,EAAI,CACzC,EAEF,QAAWvW,KAAOsW,EAChB,GAAI,EAAAE,GAAWxW,IAAQ,UAAiB,CACtC,IAAMyW,EAAQC,GAA0B1W,CAAG,GAAKuW,GAAUA,EAAOvW,CAAG,EACpEqW,EAAGrW,CAAG,EAAIyW,EAAQA,EAAMJ,EAAGrW,CAAG,EAAGsW,EAAKtW,CAAG,CAAC,EAAIsW,EAAKtW,CAAG,CACxD,CAEF,OAAOqW,CACT,CACA,IAAMK,GAA4B,CAChC,KAAMC,GACN,MAAOC,GACP,MAAOA,GAEP,QAASC,GACT,SAAUA,GAEV,aAAcC,GACd,QAASA,GACT,YAAaA,GACb,QAASA,GACT,aAAcA,GACd,QAASA,GACT,cAAeA,GACf,cAAeA,GACf,UAAWA,GACX,UAAWA,GACX,UAAWA,GACX,YAAaA,GACb,cAAeA,GACf,eAAgBA,GAEhB,WAAYD,GACZ,WAAYA,GAEZ,MAAOE,GAEP,QAASJ,GACT,OAAQK,EACV,EACA,SAASL,GAAYN,EAAIC,EAAM,CAC7B,OAAKA,EAGAD,EAGE,UAAwB,CAC7B,OAAQnjB,EAAO,OACbA,EAAO,WAAWmjB,CAAE,EAAIA,EAAG,KAAK,KAAM,IAAI,EAAIA,EAC9CnjB,EAAO,WAAWojB,CAAI,EAAIA,EAAK,KAAK,KAAM,IAAI,EAAIA,CACpD,CACF,EAPSA,EAHAD,CAWX,CACA,SAASW,GAAYX,EAAIC,EAAM,CAC7B,OAAOO,GAAmBtB,GAAgBc,CAAE,EAAGd,GAAgBe,CAAI,CAAC,CACtE,CACA,SAASf,GAAgBlD,EAAK,CAC5B,GAAInf,EAAO,QAAQmf,CAAG,EAAG,CACvB,IAAMne,EAAM,CAAC,EACb,QAASE,EAAI,EAAGA,EAAIie,EAAI,OAAQje,IAC9BF,EAAIme,EAAIje,CAAC,CAAC,EAAIie,EAAIje,CAAC,EAErB,OAAOF,CACT,CACA,OAAOme,CACT,CACA,SAASyE,GAAaT,EAAIC,EAAM,CAC9B,OAAOD,EAAK,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,OAAOA,EAAIC,CAAI,CAAC,CAAC,EAAIA,CAClD,CACA,SAASO,GAAmBR,EAAIC,EAAM,CACpC,OAAOD,EAAKnjB,EAAO,OAAuB,OAAO,OAAO,IAAI,EAAGmjB,EAAIC,CAAI,EAAIA,CAC7E,CACA,SAASM,GAAyBP,EAAIC,EAAM,CAC1C,OAAID,EACEnjB,EAAO,QAAQmjB,CAAE,GAAKnjB,EAAO,QAAQojB,CAAI,EACpC,CAAC,GAAmB,IAAI,IAAI,CAAC,GAAGD,EAAI,GAAGC,CAAI,CAAC,CAAC,EAE/CpjB,EAAO,OACI,OAAO,OAAO,IAAI,EAClCgf,GAAsBmE,CAAE,EACxBnE,GAAsBoE,GAAsB,CAAC,CAAC,CAChD,EAEOA,CAEX,CACA,SAASS,GAAkBV,EAAIC,EAAM,CACnC,GAAI,CAACD,EAAI,OAAOC,EAChB,GAAI,CAACA,EAAM,OAAOD,EAClB,IAAMY,EAAS/jB,EAAO,OAAuB,OAAO,OAAO,IAAI,EAAGmjB,CAAE,EACpE,QAAWrW,KAAOsW,EAChBW,EAAOjX,CAAG,EAAI8W,GAAaT,EAAGrW,CAAG,EAAGsW,EAAKtW,CAAG,CAAC,EAE/C,OAAOiX,CACT,CAEA,SAASC,IAAmB,CAC1B,MAAO,CACL,IAAK,KACL,OAAQ,CACN,YAAahkB,EAAO,GACpB,YAAa,GACb,iBAAkB,CAAC,EACnB,sBAAuB,CAAC,EACxB,aAAc,OACd,YAAa,OACb,gBAAiB,CAAC,CACpB,EACA,OAAQ,CAAC,EACT,WAAY,CAAC,EACb,WAAY,CAAC,EACb,SAA0B,OAAO,OAAO,IAAI,EAC5C,aAA8B,IAAI,QAClC,WAA4B,IAAI,QAChC,WAA4B,IAAI,OAClC,CACF,CACA,IAAIikB,GAAQ,EACZ,SAASC,GAAanD,EAAQzQ,EAAS,CACrC,OAAO,SAAmB6T,EAAeC,EAAY,KAAM,CACpDpkB,EAAO,WAAWmkB,CAAa,IAClCA,EAAgBnkB,EAAO,OAAO,CAAC,EAAGmkB,CAAa,GAE7CC,GAAa,MAAQ,CAACpkB,EAAO,SAASokB,CAAS,IACjDA,EAAY,MAEd,IAAMC,EAAUL,GAAiB,EAC3BM,EAAmC,IAAI,QACvCC,EAAmB,CAAC,EACtBC,EAAY,GACVC,EAAMJ,EAAQ,IAAM,CACxB,KAAMJ,KACN,WAAYE,EACZ,OAAQC,EACR,WAAY,KACZ,SAAUC,EACV,UAAW,KACX,QAAAK,GACA,IAAI,QAAS,CACX,OAAOL,EAAQ,MACjB,EACA,IAAI,OAAOxC,EAAG,CACd,EACA,IAAI8C,KAAWvW,EAAS,CACtB,OAAIkW,EAAiB,IAAIK,CAAM,IAAcA,GAAU3kB,EAAO,WAAW2kB,EAAO,OAAO,GACrFL,EAAiB,IAAIK,CAAM,EAC3BA,EAAO,QAAQF,EAAK,GAAGrW,CAAO,GACrBpO,EAAO,WAAW2kB,CAAM,IACjCL,EAAiB,IAAIK,CAAM,EAC3BA,EAAOF,EAAK,GAAGrW,CAAO,IAEjBqW,CACT,EACA,MAAMG,EAAO,CAET,OAAKP,EAAQ,OAAO,SAASO,CAAK,GAChCP,EAAQ,OAAO,KAAKO,CAAK,EAGtBH,CACT,EACA,UAAUrf,EAAM2V,EAAW,CACzB,OAAKA,GAGLsJ,EAAQ,WAAWjf,CAAI,EAAI2V,EACpB0J,GAHEJ,EAAQ,WAAWjf,CAAI,CAIlC,EACA,UAAUA,EAAMyf,EAAW,CACzB,OAAKA,GAGLR,EAAQ,WAAWjf,CAAI,EAAIyf,EACpBJ,GAHEJ,EAAQ,WAAWjf,CAAI,CAIlC,EACA,MAAM0f,EAAeC,EAAWre,EAAW,CACzC,GAAI,CAAC8d,EAAW,CACd,IAAMtkB,EAAQukB,EAAI,UAAYnT,GAAY6S,EAAeC,CAAS,EAClE,OAAAlkB,EAAM,WAAamkB,EACf3d,IAAc,GAChBA,EAAY,MACHA,IAAc,KACvBA,EAAY,QAEVqe,GAAazU,EACfA,EAAQpQ,EAAO4kB,CAAa,EAE5B/D,EAAO7gB,EAAO4kB,EAAepe,CAAS,EAExC8d,EAAY,GACZC,EAAI,WAAaK,EACjBA,EAAc,YAAcL,EACrB7f,GAA2B1E,EAAM,SAAS,CACnD,CACF,EACA,UAAU8kB,EAAW,CACnBT,EAAiB,KAAKS,CAAS,CACjC,EACA,SAAU,CACJR,IACFzjB,GACEwjB,EACAE,EAAI,UACJ,EACF,EACA1D,EAAO,KAAM0D,EAAI,UAAU,EAC3B,OAAOA,EAAI,WAAW,YAE1B,EACA,QAAQ3X,EAAK/H,EAAO,CAClB,OAAAsf,EAAQ,SAASvX,CAAG,EAAI/H,EACjB0f,CACT,EACA,eAAe/jB,EAAI,CACjB,IAAMukB,EAAUC,GAChBA,GAAaT,EACb,GAAI,CACF,OAAO/jB,EAAG,CACZ,QAAE,CACAwkB,GAAaD,CACf,CACF,CACF,EACA,OAAOR,CACT,CACF,CACA,IAAIS,GAAa,KAEjB,SAASlD,GAAQlV,EAAK/H,EAAO,CAC3B,GAAK0R,GAAwB,CAC3B,IAAIsL,EAAWtL,GAAgB,SACzB0O,EAAiB1O,GAAgB,QAAUA,GAAgB,OAAO,SACpE0O,IAAmBpD,IACrBA,EAAWtL,GAAgB,SAAW,OAAO,OAAO0O,CAAc,GAEpEpD,EAASjV,CAAG,EAAI/H,CAClB,CACF,CACA,SAASud,GAAOxV,EAAKsY,EAAcC,EAAwB,GAAO,CAChE,IAAM1kB,EAAW6J,GAAmB,EACpC,GAAI7J,GAAYukB,GAAY,CAC1B,IAAInD,EAAWmD,GAAaA,GAAW,SAAS,SAAWvkB,EAAWA,EAAS,QAAU,MAAQA,EAAS,GAAKA,EAAS,MAAM,YAAcA,EAAS,MAAM,WAAW,SAAWA,EAAS,OAAO,SAAW,OAC5M,GAAIohB,GAAYjV,KAAOiV,EACrB,OAAOA,EAASjV,CAAG,EACd,GAAI,UAAU,OAAS,EAC5B,OAAOuY,GAAyBrlB,EAAO,WAAWolB,CAAY,EAAIA,EAAa,KAAKzkB,GAAYA,EAAS,KAAK,EAAIykB,CAEtH,CACF,CACA,SAASE,IAAsB,CAC7B,MAAO,CAAC,EAAE9a,GAAmB,GAAK0a,GACpC,CAEA,IAAMK,GAAsB,CAAC,EACvBC,GAAuB,IAAM,OAAO,OAAOD,EAAmB,EAC9DE,GAAoB7I,GAAQ,OAAO,eAAeA,CAAG,IAAM2I,GAEjE,SAASG,GAAU/kB,EAAUgK,EAAUgb,EAAYC,EAAQ,GAAO,CAChE,IAAMjgB,EAAQ,CAAC,EACTkgB,EAAQL,GAAqB,EACnC7kB,EAAS,cAAgC,OAAO,OAAO,IAAI,EAC3DmlB,GAAanlB,EAAUgK,EAAUhF,EAAOkgB,CAAK,EAC7C,QAAW/Y,KAAOnM,EAAS,aAAa,CAAC,EACjCmM,KAAOnH,IACXA,EAAMmH,CAAG,EAAI,QAGb6Y,EACFhlB,EAAS,MAAQilB,EAAQjgB,EAAQ5F,EAAW,gBAAgB4F,CAAK,EAE5DhF,EAAS,KAAK,MAGjBA,EAAS,MAAQgF,EAFjBhF,EAAS,MAAQklB,EAKrBllB,EAAS,MAAQklB,CACnB,CACA,SAASE,GAAYplB,EAAUgK,EAAUqb,EAAcpf,EAAW,CAChE,GAAM,CACJ,MAAAjB,EACA,MAAAkgB,EACA,MAAO,CAAE,UAAAlV,CAAU,CACrB,EAAIhQ,EACEslB,EAAkBlmB,EAAW,MAAM4F,CAAK,EACxC,CAACyI,CAAO,EAAIzN,EAAS,aACvBulB,EAAkB,GACtB,IAIGtf,GAAa+J,EAAY,IAAM,EAAEA,EAAY,KAE9C,GAAIA,EAAY,EAAG,CACjB,IAAMwV,EAAgBxlB,EAAS,MAAM,aACrC,QAASO,EAAI,EAAGA,EAAIilB,EAAc,OAAQjlB,IAAK,CAC7C,IAAI4L,EAAMqZ,EAAcjlB,CAAC,EACzB,GAAIklB,GAAezlB,EAAS,aAAcmM,CAAG,EAC3C,SAEF,IAAM/H,EAAQ4F,EAASmC,CAAG,EAC1B,GAAIsB,EACF,GAAIpO,EAAO,OAAO6lB,EAAO/Y,CAAG,EACtB/H,IAAU8gB,EAAM/Y,CAAG,IACrB+Y,EAAM/Y,CAAG,EAAI/H,EACbmhB,EAAkB,QAEf,CACL,IAAMG,EAAermB,EAAO,SAAS8M,CAAG,EACxCnH,EAAM0gB,CAAY,EAAIC,GACpBlY,EACA6X,EACAI,EACAthB,EACApE,EACA,EACF,CACF,MAEIoE,IAAU8gB,EAAM/Y,CAAG,IACrB+Y,EAAM/Y,CAAG,EAAI/H,EACbmhB,EAAkB,GAGxB,CACF,MACK,CACDJ,GAAanlB,EAAUgK,EAAUhF,EAAOkgB,CAAK,IAC/CK,EAAkB,IAEpB,IAAIK,EACJ,QAAWzZ,KAAOmZ,GACZ,CAACtb,GACL,CAAC3K,EAAO,OAAO2K,EAAUmC,CAAG,KAE1ByZ,EAAWvmB,EAAO,UAAU8M,CAAG,KAAOA,GAAO,CAAC9M,EAAO,OAAO2K,EAAU4b,CAAQ,MAC1EnY,EACE4X,IACHA,EAAalZ,CAAG,IAAM,QACvBkZ,EAAaO,CAAQ,IAAM,UACzB5gB,EAAMmH,CAAG,EAAIwZ,GACXlY,EACA6X,EACAnZ,EACA,OACAnM,EACA,EACF,GAGF,OAAOgF,EAAMmH,CAAG,GAItB,GAAI+Y,IAAUI,EACZ,QAAWnZ,KAAO+Y,GACZ,CAAClb,GAAY,CAAC3K,EAAO,OAAO2K,EAAUmC,CAAG,KAC3C,OAAO+Y,EAAM/Y,CAAG,EAChBoZ,EAAkB,GAI1B,CACIA,GACFnmB,EAAW,QAAQY,EAAS,MAAO,MAAO,EAAE,CAEhD,CACA,SAASmlB,GAAanlB,EAAUgK,EAAUhF,EAAOkgB,EAAO,CACtD,GAAM,CAACzX,EAASoY,CAAY,EAAI7lB,EAAS,aACrCulB,EAAkB,GAClBO,EACJ,GAAI9b,EACF,QAASmC,KAAOnC,EAAU,CACxB,GAAI3K,EAAO,eAAe8M,CAAG,EAC3B,SAEF,IAAM/H,EAAQ4F,EAASmC,CAAG,EACtB4Z,EACAtY,GAAWpO,EAAO,OAAOoO,EAASsY,EAAW1mB,EAAO,SAAS8M,CAAG,CAAC,EAC/D,CAAC0Z,GAAgB,CAACA,EAAa,SAASE,CAAQ,EAClD/gB,EAAM+gB,CAAQ,EAAI3hB,GAEjB0hB,IAAkBA,EAAgB,CAAC,IAAIC,CAAQ,EAAI3hB,EAE5CqhB,GAAezlB,EAAS,aAAcmM,CAAG,IAC/C,EAAEA,KAAO+Y,IAAU9gB,IAAU8gB,EAAM/Y,CAAG,KACxC+Y,EAAM/Y,CAAG,EAAI/H,EACbmhB,EAAkB,GAGxB,CAEF,GAAIM,EAAc,CAChB,IAAMP,EAAkBlmB,EAAW,MAAM4F,CAAK,EACxCghB,EAAaF,GAAiBzmB,EAAO,UAC3C,QAASkB,EAAI,EAAGA,EAAIslB,EAAa,OAAQtlB,IAAK,CAC5C,IAAM4L,EAAM0Z,EAAatlB,CAAC,EAC1ByE,EAAMmH,CAAG,EAAIwZ,GACXlY,EACA6X,EACAnZ,EACA6Z,EAAW7Z,CAAG,EACdnM,EACA,CAACX,EAAO,OAAO2mB,EAAY7Z,CAAG,CAChC,CACF,CACF,CACA,OAAOoZ,CACT,CACA,SAASI,GAAiBlY,EAASzI,EAAOmH,EAAK/H,EAAOpE,EAAUimB,EAAU,CACxE,IAAMxH,EAAMhR,EAAQtB,CAAG,EACvB,GAAIsS,GAAO,KAAM,CACf,IAAMyH,EAAa7mB,EAAO,OAAOof,EAAK,SAAS,EAC/C,GAAIyH,GAAc9hB,IAAU,OAAQ,CAClC,IAAMqgB,EAAehG,EAAI,QACzB,GAAIA,EAAI,OAAS,UAAY,CAACA,EAAI,aAAepf,EAAO,WAAWolB,CAAY,EAAG,CAChF,GAAM,CAAE,cAAA0B,CAAc,EAAInmB,EAC1B,GAAImM,KAAOga,EACT/hB,EAAQ+hB,EAAcha,CAAG,MACpB,CACL,IAAMgN,EAAQC,GAAmBpZ,CAAQ,EACzCoE,EAAQ+hB,EAAcha,CAAG,EAAIsY,EAAa,KACxC,KACAzf,CACF,EACAmU,EAAM,CACR,CACF,MACE/U,EAAQqgB,EAENzkB,EAAS,IACXA,EAAS,GAAG,SAASmM,EAAK/H,CAAK,CAEnC,CACIqa,EAAI,CAAkB,IACpBwH,GAAY,CAACC,EACf9hB,EAAQ,GACCqa,EAAI,CAAsB,IAAMra,IAAU,IAAMA,IAAU/E,EAAO,UAAU8M,CAAG,KACvF/H,EAAQ,IAGd,CACA,OAAOA,CACT,CACA,IAAMgiB,GAAkC,IAAI,QAC5C,SAASC,GAAsB1Q,EAAMiH,EAAY+F,EAAU,GAAO,CAChE,IAAMlM,EAAQkM,EAAUyD,GAAkBxJ,EAAW,WAC/CrF,EAASd,EAAM,IAAId,CAAI,EAC7B,GAAI4B,EACF,OAAOA,EAET,IAAMiH,EAAM7I,EAAK,MACX2I,EAAa,CAAC,EACduH,EAAe,CAAC,EAClBS,EAAa,GACjB,GAAI,CAACjnB,EAAO,WAAWsW,CAAI,EAAG,CAC5B,IAAM4Q,EAAeC,GAAS,CAC5BF,EAAa,GACb,GAAM,CAACthB,EAAO0R,CAAI,EAAI2P,GAAsBG,EAAM5J,EAAY,EAAI,EAClEvd,EAAO,OAAOif,EAAYtZ,CAAK,EAC3B0R,GAAMmP,EAAa,KAAK,GAAGnP,CAAI,CACrC,EACI,CAACiM,GAAW/F,EAAW,OAAO,QAChCA,EAAW,OAAO,QAAQ2J,CAAW,EAEnC5Q,EAAK,SACP4Q,EAAY5Q,EAAK,OAAO,EAEtBA,EAAK,QACPA,EAAK,OAAO,QAAQ4Q,CAAW,CAEnC,CACA,GAAI,CAAC/H,GAAO,CAAC8H,EACX,OAAIjnB,EAAO,SAASsW,CAAI,GACtBc,EAAM,IAAId,EAAMtW,EAAO,SAAS,EAE3BA,EAAO,UAEhB,GAAIA,EAAO,QAAQmf,CAAG,EACpB,QAASje,EAAI,EAAGA,EAAIie,EAAI,OAAQje,IAAK,CACnC,IAAMkmB,EAAgBpnB,EAAO,SAASmf,EAAIje,CAAC,CAAC,EACxCmmB,GAAiBD,CAAa,IAChCnI,EAAWmI,CAAa,EAAIpnB,EAAO,UAEvC,SACSmf,EACT,QAAWrS,KAAOqS,EAAK,CACrB,IAAMiI,EAAgBpnB,EAAO,SAAS8M,CAAG,EACzC,GAAIua,GAAiBD,CAAa,EAAG,CACnC,IAAMhI,EAAMD,EAAIrS,CAAG,EACbwa,EAAOrI,EAAWmI,CAAa,EAAIpnB,EAAO,QAAQof,CAAG,GAAKpf,EAAO,WAAWof,CAAG,EAAI,CAAE,KAAMA,CAAI,EAAIpf,EAAO,OAAO,CAAC,EAAGof,CAAG,EACxHmI,EAAWD,EAAK,KAClBE,EAAa,GACbC,EAAiB,GACrB,GAAIznB,EAAO,QAAQunB,CAAQ,EACzB,QAAShM,EAAQ,EAAGA,EAAQgM,EAAS,OAAQ,EAAEhM,EAAO,CACpD,IAAMjb,EAAOinB,EAAShM,CAAK,EACrBmM,EAAW1nB,EAAO,WAAWM,CAAI,GAAKA,EAAK,KACjD,GAAIonB,IAAa,UAAW,CAC1BF,EAAa,GACb,KACF,MAAWE,IAAa,WACtBD,EAAiB,GAErB,MAEAD,EAAaxnB,EAAO,WAAWunB,CAAQ,GAAKA,EAAS,OAAS,UAEhED,EAAK,CAAkB,EAAIE,EAC3BF,EAAK,CAAsB,EAAIG,GAC3BD,GAAcxnB,EAAO,OAAOsnB,EAAM,SAAS,IAC7Cd,EAAa,KAAKY,CAAa,CAEnC,CACF,CAEF,IAAMpmB,EAAM,CAACie,EAAYuH,CAAY,EACrC,OAAIxmB,EAAO,SAASsW,CAAI,GACtBc,EAAM,IAAId,EAAMtV,CAAG,EAEdA,CACT,CACA,SAASqmB,GAAiBva,EAAK,CAC7B,OAAIA,EAAI,CAAC,IAAM,KAAO,CAAC9M,EAAO,eAAe8M,CAAG,CAIlD,CAEA,IAAM6a,GAAiB7a,GAAQA,IAAQ,KAAOA,IAAQ,MAAQA,IAAQ,QAAUA,IAAQ,UAClF8a,GAAsB7iB,GAAU/E,EAAO,QAAQ+E,CAAK,EAAIA,EAAM,IAAIyN,EAAc,EAAI,CAACA,GAAezN,CAAK,CAAC,EAC1G8iB,GAAgB,CAAC/a,EAAKgb,EAASzjB,IAAQ,CAC3C,GAAIyjB,EAAQ,GACV,OAAOA,EAET,IAAM7I,EAAa7a,GAAQ,IAAIxD,IAEtBgnB,GAAmBE,EAAQ,GAAGlnB,CAAI,CAAC,EACzCyD,CAAG,EACN,OAAA4a,EAAW,GAAK,GACTA,CACT,EACM8I,GAAuB,CAACC,EAAUzd,EAAO5J,IAAa,CAC1D,IAAM0D,EAAM2jB,EAAS,KACrB,QAAWlb,KAAOkb,EAAU,CAC1B,GAAIL,GAAc7a,CAAG,EAAG,SACxB,IAAM/H,EAAQijB,EAASlb,CAAG,EAC1B,GAAI9M,EAAO,WAAW+E,CAAK,EACzBwF,EAAMuC,CAAG,EAAI+a,GAAc/a,EAAK/H,EAAOV,CAAG,UACjCU,GAAS,KAAM,CACxB,IAAMka,EAAa2I,GAAmB7iB,CAAK,EAC3CwF,EAAMuC,CAAG,EAAI,IAAMmS,CACrB,CACF,CACF,EACMgJ,GAAsB,CAACtnB,EAAU4G,IAAa,CAClD,IAAM0X,EAAa2I,GAAmBrgB,CAAQ,EAC9C5G,EAAS,MAAM,QAAU,IAAMse,CACjC,EACMiJ,GAAc,CAAC3d,EAAOhD,EAAUX,IAAc,CAClD,QAAWkG,KAAOvF,GACZX,GAAa,CAAC+gB,GAAc7a,CAAG,KACjCvC,EAAMuC,CAAG,EAAIvF,EAASuF,CAAG,EAG/B,EACMqb,GAAY,CAACxnB,EAAU4G,EAAUX,IAAc,CACnD,IAAM2D,EAAQ5J,EAAS,MAAQ6kB,GAAqB,EACpD,GAAI7kB,EAAS,MAAM,UAAY,GAAI,CACjC,IAAMynB,EAAe7gB,EAAS,GAC1B6gB,GAAcpoB,EAAO,IAAIuK,EAAO,KAAM6d,EAAc,EAAI,EAC5D,IAAM9nB,EAAOiH,EAAS,EAClBjH,GACF4nB,GAAY3d,EAAOhD,EAAUX,CAAS,EAClCA,GACF5G,EAAO,IAAIuK,EAAO,IAAKjK,EAAM,EAAI,GAGnCynB,GAAqBxgB,EAAUgD,CAAK,CAExC,MAAWhD,GACT0gB,GAAoBtnB,EAAU4G,CAAQ,CAE1C,EACM8gB,GAAc,CAAC1nB,EAAU4G,EAAUX,IAAc,CACrD,GAAM,CAAE,MAAA1G,EAAO,MAAAqK,CAAM,EAAI5J,EACrB2nB,EAAoB,GACpBC,EAA2BvoB,EAAO,UACtC,GAAIE,EAAM,UAAY,GAAI,CACxB,IAAMI,EAAOiH,EAAS,EAClBjH,EACEsG,GAAatG,IAAS,EACxBgoB,EAAoB,GAEpBJ,GAAY3d,EAAOhD,EAAUX,CAAS,GAGxC0hB,EAAoB,CAAC/gB,EAAS,QAC9BwgB,GAAqBxgB,EAAUgD,CAAK,GAEtCge,EAA2BhhB,CAC7B,MAAWA,IACT0gB,GAAoBtnB,EAAU4G,CAAQ,EACtCghB,EAA2B,CAAE,QAAS,CAAE,GAE1C,GAAID,EACF,QAAWxb,KAAOvC,EACZ,CAACod,GAAc7a,CAAG,GAAKyb,EAAyBzb,CAAG,GAAK,MAC1D,OAAOvC,EAAMuC,CAAG,CAIxB,EAEM5E,GAAwBmK,GAC9B,SAASmW,GAAepa,EAAS,CAC/B,OAAOqa,GAAmBra,CAAO,CACnC,CACA,SAASsa,GAAwBta,EAAS,CACxC,OAAOqa,GAAmBra,EAAS6B,EAAwB,CAC7D,CACA,SAASwY,GAAmBra,EAASua,EAAoB,CACvD,IAAM7iB,EAAS9F,EAAO,cAAc,EACpC8F,EAAO,QAAU,GACjB,GAAM,CACJ,OAAQ8iB,EACR,OAAQlgB,EACR,UAAWmgB,EACX,cAAeC,EACf,WAAYC,EACZ,cAAeC,EACf,QAASC,EACT,eAAgBC,EAChB,WAAYC,EACZ,YAAaC,EACb,WAAYC,EAAiBrpB,EAAO,KACpC,oBAAqBspB,CACvB,EAAIlb,EACEgC,EAAQ,CAAChK,EAAIC,EAAIC,EAAWC,EAAS,KAAMC,EAAkB,KAAMC,EAAiB,KAAMC,GAAY,OAAQC,EAAe,KAAMC,EAAY,CAAC,CAACP,EAAG,kBAAoB,CAC5K,GAAID,IAAOC,EACT,OAEED,GAAM,CAACkF,GAAgBlF,EAAIC,CAAE,IAC/BE,EAASgjB,GAAgBnjB,CAAE,EAC3BqC,EAAQrC,EAAII,EAAiBC,EAAgB,EAAI,EACjDL,EAAK,MAEHC,EAAG,YAAc,KACnBO,EAAY,GACZP,EAAG,gBAAkB,MAEvB,GAAM,CAAE,KAAA/F,EAAM,IAAA4O,GAAK,UAAA5H,EAAU,EAAIjB,EACjC,OAAQ/F,EAAM,CACZ,KAAKwQ,GACH0Y,EAAYpjB,EAAIC,EAAIC,EAAWC,CAAM,EACrC,MACF,KAAK4E,GACHse,EAAmBrjB,EAAIC,EAAIC,EAAWC,CAAM,EAC5C,MACF,KAAK0K,GACC7K,GAAM,MACRsjB,EAAgBrjB,EAAIC,EAAWC,EAAQG,EAAS,EAElD,MACF,KAAKwH,GACHyb,EACEvjB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GACAC,EACAC,CACF,EACA,MACF,QACMU,GAAY,EACdsiB,EACExjB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GACAC,EACAC,CACF,EACSU,GAAY,EACrBuiB,EACEzjB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GACAC,EACAC,CACF,GACSU,GAAY,IAaZA,GAAY,MACrBhH,EAAK,QACH8F,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GACAC,EACAC,EACAC,EACF,CAEN,CACIqI,IAAO,MAAQ1I,EACjBmI,GAAOO,GAAK9I,GAAMA,EAAG,IAAKK,EAAgBJ,GAAMD,EAAI,CAACC,CAAE,EAC9C6I,IAAO,MAAQ9I,GAAMA,EAAG,KAAO,MACxCuI,GAAOvI,EAAG,IAAK,KAAMK,EAAgBL,EAAI,EAAI,CAEjD,EACMojB,EAAc,CAACpjB,EAAIC,EAAIC,EAAWC,IAAW,CACjD,GAAIH,GAAM,KACRwiB,EACEviB,EAAG,GAAK0iB,EAAe1iB,EAAG,QAAQ,EAClCC,EACAC,CACF,MACK,CACL,IAAM4C,EAAK9C,EAAG,GAAKD,EAAG,GAClBC,EAAG,WAAaD,EAAG,UACrB6iB,EAAY9f,EAAI9C,EAAG,QAAQ,CAE/B,CACF,EACMojB,EAAqB,CAACrjB,EAAIC,EAAIC,EAAWC,IAAW,CACpDH,GAAM,KACRwiB,EACEviB,EAAG,GAAK2iB,EAAkB3iB,EAAG,UAAY,EAAE,EAC3CC,EACAC,CACF,EAEAF,EAAG,GAAKD,EAAG,EAEf,EACMsjB,EAAkB,CAACrjB,EAAIC,EAAWC,EAAQG,IAAc,CAC5D,CAACL,EAAG,GAAIA,EAAG,MAAM,EAAIijB,EACnBjjB,EAAG,SACHC,EACAC,EACAG,EACAL,EAAG,GACHA,EAAG,MACL,CACF,EACMyjB,EAAiB,CAAC,CAAE,GAAA3gB,EAAI,OAAA5C,CAAO,EAAGD,EAAWgD,IAAgB,CACjE,IAAIyI,EACJ,KAAO5I,GAAMA,IAAO5C,GAClBwL,EAAOqX,EAAgBjgB,CAAE,EACzByf,EAAWzf,EAAI7C,EAAWgD,CAAW,EACrCH,EAAK4I,EAEP6W,EAAWriB,EAAQD,EAAWgD,CAAW,CAC3C,EACMygB,EAAmB,CAAC,CAAE,GAAA5gB,EAAI,OAAA5C,CAAO,IAAM,CAC3C,IAAIwL,EACJ,KAAO5I,GAAMA,IAAO5C,GAClBwL,EAAOqX,EAAgBjgB,CAAE,EACzBT,EAAWS,CAAE,EACbA,EAAK4I,EAEPrJ,EAAWnC,CAAM,CACnB,EACMqjB,EAAiB,CAACxjB,EAAIC,EAAIC,EAAWC,EAAQC,EAAiBC,EAAgBC,GAAWC,EAAcC,IAAc,CACrHP,EAAG,OAAS,MACdK,GAAY,MACHL,EAAG,OAAS,SACrBK,GAAY,UAEVN,GAAM,KACR4jB,EACE3jB,EACAC,EACAC,EACAC,EACAC,EACAC,GACAC,EACAC,CACF,EAEAqjB,EACE7jB,EACAC,EACAG,EACAC,EACAC,GACAC,EACAC,CACF,CAEJ,EACMojB,EAAe,CAAC9pB,EAAOoG,EAAWC,EAAQC,EAAiBC,EAAgBC,EAAWC,GAAcC,IAAc,CACtH,IAAIuC,EACAwO,EACE,CAAE,MAAAhS,GAAO,UAAA2B,GAAW,WAAAmK,GAAY,KAAAD,EAAK,EAAItR,EAyB/C,GAxBAiJ,EAAKjJ,EAAM,GAAK4oB,EACd5oB,EAAM,KACNwG,EACAf,IAASA,GAAM,GACfA,EACF,EACI2B,GAAY,EACd4hB,EAAmB/f,EAAIjJ,EAAM,QAAQ,EAC5BoH,GAAY,IACrBR,EACE5G,EAAM,SACNiJ,EACA,KACA3C,EACAC,EACAyjB,GAAyBhqB,EAAOwG,CAAS,EACzCC,GACAC,CACF,EAEE4K,IACFtM,GAAoBhF,EAAO,KAAMsG,EAAiB,SAAS,EAE7D2jB,EAAWhhB,EAAIjJ,EAAOA,EAAM,QAASyG,GAAcH,CAAe,EAC9Db,GAAO,CACT,QAAWmH,MAAOnH,GACZmH,KAAQ,SAAW,CAAC9M,EAAO,eAAe8M,EAAG,GAC/C+b,EAAc1f,EAAI2D,GAAK,KAAMnH,GAAMmH,EAAG,EAAGpG,EAAWF,CAAe,EAGnE,UAAWb,IACbkjB,EAAc1f,EAAI,QAAS,KAAMxD,GAAM,MAAOe,CAAS,GAErDiR,EAAYhS,GAAM,qBACpByM,GAAgBuF,EAAWnR,EAAiBtG,CAAK,CAErD,CACIsR,IACFtM,GAAoBhF,EAAO,KAAMsG,EAAiB,aAAa,EAEjE,IAAMmL,GAA0BC,GAAenL,EAAgBgL,EAAU,EACrEE,IACFF,GAAW,YAAYtI,CAAE,EAE3Byf,EAAWzf,EAAI7C,EAAWC,CAAM,IAC3BoR,EAAYhS,IAASA,GAAM,iBAAmBgM,IAA2BH,KAC5EtJ,GAAsB,IAAM,CAC1ByP,GAAavF,GAAgBuF,EAAWnR,EAAiBtG,CAAK,EAC9DyR,IAA2BF,GAAW,MAAMtI,CAAE,EAC9CqI,IAAQtM,GAAoBhF,EAAO,KAAMsG,EAAiB,SAAS,CACrE,EAAGC,CAAc,CAErB,EACM0jB,EAAa,CAAChhB,EAAIjJ,EAAOkqB,EAASzjB,EAAcH,IAAoB,CAIxE,GAHI4jB,GACFf,EAAelgB,EAAIihB,CAAO,EAExBzjB,EACF,QAASzF,EAAI,EAAGA,EAAIyF,EAAa,OAAQzF,IACvCmoB,EAAelgB,EAAIxC,EAAazF,CAAC,CAAC,EAGtC,GAAIsF,EAAiB,CACnB,IAAI6D,EAAU7D,EAAgB,QAC9B,GAAItG,IAAUmK,GAAWoO,GAAWpO,EAAQ,IAAI,IAAMA,EAAQ,YAAcnK,GAASmK,EAAQ,aAAenK,GAAQ,CAClH,IAAMoS,GAAc9L,EAAgB,MACpC2jB,EACEhhB,EACAmJ,GACAA,GAAY,QACZA,GAAY,aACZ9L,EAAgB,MAClB,CACF,CACF,CACF,EACMM,EAAgB,CAACS,EAAUjB,EAAWC,EAAQC,EAAiBC,EAAgBC,EAAWC,GAAcC,EAAWpE,EAAQ,IAAM,CACrI,QAAStB,EAAIsB,EAAOtB,EAAIqG,EAAS,OAAQrG,IAAK,CAC5C,IAAM4H,GAAQvB,EAASrG,CAAC,EAAI0F,EAAYyjB,GAAe9iB,EAASrG,CAAC,CAAC,EAAIsR,GAAejL,EAASrG,CAAC,CAAC,EAChGkP,EACE,KACAtH,GACAxC,EACAC,EACAC,EACAC,EACAC,EACAC,GACAC,CACF,CACF,CACF,EACMqjB,EAAe,CAAC7jB,EAAIC,EAAIG,EAAiBC,EAAgBC,EAAWC,EAAcC,KAAc,CACpG,IAAMuC,EAAK9C,EAAG,GAAKD,EAAG,GAClB,CAAE,UAAAuK,EAAW,gBAAAnJ,EAAiB,KAAAgK,EAAK,EAAInL,EAC3CsK,GAAavK,EAAG,UAAY,GAC5B,IAAMkkB,GAAWlkB,EAAG,OAASpG,EAAO,UAC9BuqB,GAAWlkB,EAAG,OAASrG,EAAO,UAChC2X,GAmCJ,GAlCAnR,GAAmBgkB,GAAchkB,EAAiB,EAAK,GACnDmR,GAAY4S,GAAS,sBACvBnY,GAAgBuF,GAAWnR,EAAiBH,EAAID,CAAE,EAEhDoL,IACFtM,GAAoBmB,EAAID,EAAII,EAAiB,cAAc,EAE7DA,GAAmBgkB,GAAchkB,EAAiB,EAAI,GAClD8jB,GAAS,WAAaC,GAAS,WAAa,MAAQD,GAAS,aAAeC,GAAS,aAAe,OACtGrB,EAAmB/f,EAAI,EAAE,EAEvB3B,EACFR,EACEZ,EAAG,gBACHoB,EACA2B,EACA3C,EACAC,EACAyjB,GAAyB7jB,EAAIK,CAAS,EACtCC,CACF,EACUC,IACVG,GACEX,EACAC,EACA8C,EACA,KACA3C,EACAC,EACAyjB,GAAyB7jB,EAAIK,CAAS,EACtCC,EACA,EACF,EAEEgK,EAAY,EAAG,CACjB,GAAIA,EAAY,GACd8Z,EAAWthB,EAAImhB,GAAUC,GAAU/jB,EAAiBE,CAAS,UAEzDiK,EAAY,GACV2Z,GAAS,QAAUC,GAAS,OAC9B1B,EAAc1f,EAAI,QAAS,KAAMohB,GAAS,MAAO7jB,CAAS,EAG1DiK,EAAY,GACdkY,EAAc1f,EAAI,QAASmhB,GAAS,MAAOC,GAAS,MAAO7jB,CAAS,EAElEiK,EAAY,EAAG,CACjB,IAAMwV,GAAgB9f,EAAG,aACzB,QAASnF,GAAI,EAAGA,GAAIilB,GAAc,OAAQjlB,KAAK,CAC7C,IAAM4L,GAAMqZ,GAAcjlB,EAAC,EACrB6C,GAAOumB,GAASxd,EAAG,EACnBiF,GAAOwY,GAASzd,EAAG,GACrBiF,KAAShO,IAAQ+I,KAAQ,UAC3B+b,EAAc1f,EAAI2D,GAAK/I,GAAMgO,GAAMrL,EAAWF,CAAe,CAEjE,CACF,CAEEmK,EAAY,GACVvK,EAAG,WAAaC,EAAG,UACrB6iB,EAAmB/f,EAAI9C,EAAG,QAAQ,CAGxC,KAAW,CAACO,IAAaY,GAAmB,MAC1CijB,EAAWthB,EAAImhB,GAAUC,GAAU/jB,EAAiBE,CAAS,IAE1DiR,GAAY4S,GAAS,iBAAmB/Y,KAC3CtJ,GAAsB,IAAM,CAC1ByP,IAAavF,GAAgBuF,GAAWnR,EAAiBH,EAAID,CAAE,EAC/DoL,IAAQtM,GAAoBmB,EAAID,EAAII,EAAiB,SAAS,CAChE,EAAGC,CAAc,CAErB,EACMO,EAAqB,CAAC0jB,EAAaC,EAAaC,EAAmBpkB,EAAiBC,EAAgBC,EAAWC,KAAiB,CACpI,QAASzF,EAAI,EAAGA,EAAIypB,EAAY,OAAQzpB,IAAK,CAC3C,IAAM2pB,EAAWH,EAAYxpB,CAAC,EACxB4pB,EAAWH,EAAYzpB,CAAC,EACxBoF,GAGJukB,EAAS,KAERA,EAAS,OAAS3c,IAEnB,CAAC5C,GAAgBuf,EAAUC,CAAQ,GACnCD,EAAS,UAAa,KAAiB1B,EAAe0B,EAAS,EAAE,EAG/DD,EAGJxa,EACEya,EACAC,EACAxkB,GACA,KACAE,EACAC,EACAC,EACAC,GACA,EACF,CACF,CACF,EACM8jB,EAAa,CAACthB,EAAImhB,EAAUC,EAAU/jB,EAAiBE,IAAc,CACzE,GAAI4jB,IAAaC,EAAU,CACzB,GAAID,IAAatqB,EAAO,UACtB,QAAW8M,KAAOwd,EACZ,CAACtqB,EAAO,eAAe8M,CAAG,GAAK,EAAEA,KAAOyd,IAC1C1B,EACE1f,EACA2D,EACAwd,EAASxd,CAAG,EACZ,KACApG,EACAF,CACF,EAIN,QAAWsG,KAAOyd,EAAU,CAC1B,GAAIvqB,EAAO,eAAe8M,CAAG,EAAG,SAChC,IAAMiF,GAAOwY,EAASzd,CAAG,EACnB/I,EAAOumB,EAASxd,CAAG,EACrBiF,KAAShO,GAAQ+I,IAAQ,SAC3B+b,EAAc1f,EAAI2D,EAAK/I,EAAMgO,GAAMrL,EAAWF,CAAe,CAEjE,CACI,UAAW+jB,GACb1B,EAAc1f,EAAI,QAASmhB,EAAS,MAAOC,EAAS,MAAO7jB,CAAS,CAExE,CACF,EACMijB,EAAkB,CAACvjB,EAAIC,EAAIC,EAAWC,EAAQC,EAAiBC,EAAgBC,GAAWC,EAAcC,IAAc,CAC1H,IAAMmkB,EAAsB1kB,EAAG,GAAKD,EAAKA,EAAG,GAAK2iB,EAAe,EAAE,EAC5DiC,GAAoB3kB,EAAG,OAASD,EAAKA,EAAG,OAAS2iB,EAAe,EAAE,EACpE,CAAE,UAAApY,GAAW,gBAAAnJ,GAAiB,aAAckL,EAAqB,EAAIrM,EACrEqM,KACF/L,EAAeA,EAAeA,EAAa,OAAO+L,EAAoB,EAAIA,IAExEtM,GAAM,MACRwiB,EAAWmC,EAAqBzkB,EAAWC,CAAM,EACjDqiB,EAAWoC,GAAmB1kB,EAAWC,CAAM,EAC/CO,EAKET,EAAG,UAAY,CAAC,EAChBC,EACA0kB,GACAxkB,EACAC,EACAC,GACAC,EACAC,CACF,GAEI+J,GAAY,GAAKA,GAAY,IAAMnJ,IAEvCpB,EAAG,iBACDY,EACEZ,EAAG,gBACHoB,GACAlB,EACAE,EACAC,EACAC,GACAC,CACF,GAMEN,EAAG,KAAO,MAAQG,GAAmBH,IAAOG,EAAgB,UAE5D8B,GACElC,EACAC,EACA,EAEF,GAGFU,GACEX,EACAC,EACAC,EACA0kB,GACAxkB,EACAC,EACAC,GACAC,EACAC,CACF,CAGN,EACMijB,EAAmB,CAACzjB,EAAIC,EAAIC,EAAWC,EAAQC,EAAiBC,EAAgBC,GAAWC,EAAcC,IAAc,CAC3HP,EAAG,aAAeM,EACdP,GAAM,KACJC,EAAG,UAAY,IACjBG,EAAgB,IAAI,SAClBH,EACAC,EACAC,EACAG,GACAE,CACF,EAEAuJ,GACE9J,EACAC,EACAC,EACAC,EACAC,EACAC,GACAE,CACF,EAGFqkB,GAAgB7kB,EAAIC,EAAIO,CAAS,CAErC,EACMuJ,GAAiB,CAAC+a,EAAc5kB,EAAWC,EAAQC,EAAiBC,EAAgBC,EAAWE,KAAc,CACjH,IAAMjG,EAAYuqB,EAAa,UAAYC,GACzCD,EACA1kB,EACAC,CACF,EAOA,GANImH,GAAYsd,CAAY,IAC1BvqB,EAAS,IAAI,SAAWkG,IAGxBukB,GAAezqB,EAAU,GAAOiG,EAAS,EAEvCjG,EAAS,UAEX,GADA8F,GAAkBA,EAAe,YAAY9F,EAAU0qB,GAAmBzkB,EAAS,EAC/E,CAACskB,EAAa,GAAI,CACpB,IAAMzjB,EAAc9G,EAAS,QAAU2Q,GAAYnG,EAAO,EAC1Dse,EAAmB,KAAMhiB,EAAanB,EAAWC,CAAM,EACvD2kB,EAAa,YAAczjB,EAAY,EACzC,OAEA4jB,GACE1qB,EACAuqB,EACA5kB,EACAC,EACAE,EACAC,EACAE,EACF,CAEJ,EACMqkB,GAAkB,CAAC7kB,EAAIC,EAAIO,IAAc,CAC7C,IAAMjG,EAAW0F,EAAG,UAAYD,EAAG,UACnC,GAAIklB,GAAsBllB,EAAIC,EAAIO,CAAS,EACzC,GAAIjG,EAAS,UAAY,CAACA,EAAS,cAAe,CAChD4qB,EAAyB5qB,EAAU0F,EAAIO,CAAS,EAChD,MACF,MACEjG,EAAS,KAAO0F,EAChB1F,EAAS,OAAO,OAGlB0F,EAAG,GAAKD,EAAG,GACXzF,EAAS,MAAQ0F,CAErB,EACMglB,GAAoB,CAAC1qB,EAAUuqB,EAAc5kB,EAAWC,EAAQE,EAAgBC,EAAWE,KAAc,CAC7G,IAAM4kB,EAAoB,IAAM,CAC9B,GAAK7qB,EAAS,UAiEP,CACL,GAAI,CAAE,KAAAoR,GAAM,GAAA0Z,GAAI,EAAAC,GAAG,OAAAtY,GAAQ,MAAAlT,EAAM,EAAIS,EACrC,CACE,IAAMgrB,GAAuBC,GAA2BjrB,CAAQ,EAChE,GAAIgrB,GAAsB,CACpB5Z,KACFA,GAAK,GAAK7R,GAAM,GAChBqrB,EAAyB5qB,EAAUoR,GAAMnL,EAAS,GAEpD+kB,GAAqB,SAAS,KAAK,IAAM,CAClChrB,EAAS,aACZ6qB,EAAkB,CAEtB,CAAC,EACD,MACF,CACF,CACA,IAAIK,GAAa9Z,GACb4F,GACJ6S,GAAc7pB,EAAU,EAAK,EACzBoR,IACFA,GAAK,GAAK7R,GAAM,GAChBqrB,EAAyB5qB,EAAUoR,GAAMnL,EAAS,GAElDmL,GAAO7R,GAELurB,IACFzrB,EAAO,eAAeyrB,EAAE,GAEtB9T,GAAY5F,GAAK,OAASA,GAAK,MAAM,sBACvCK,GAAgBuF,GAAWvE,GAAQrB,GAAM7R,EAAK,EAEhDsqB,GAAc7pB,EAAU,EAAI,EAC5B,IAAMmrB,GAAWC,GAAoBprB,CAAQ,EACvCqrB,GAAWrrB,EAAS,QAC1BA,EAAS,QAAUmrB,GACnB1b,EACE4b,GACAF,GAEA3C,EAAe6C,GAAS,EAAE,EAE1BzC,GAAgByC,EAAQ,EACxBrrB,EACA8F,EACAC,CACF,EACAqL,GAAK,GAAK+Z,GAAS,GACfD,KAAe,MACjBhZ,GAAgBlS,EAAUmrB,GAAS,EAAE,EAEnCJ,IACFxjB,GAAsBwjB,GAAGjlB,CAAc,GAErCkR,GAAY5F,GAAK,OAASA,GAAK,MAAM,iBACvC7J,GACE,IAAMkK,GAAgBuF,GAAWvE,GAAQrB,GAAM7R,EAAK,EACpDuG,CACF,CAEJ,KA7HyB,CACvB,IAAIkR,GACE,CAAE,GAAAxO,GAAI,MAAAxD,EAAM,EAAIulB,EAChB,CAAE,GAAAe,GAAI,EAAAhJ,GAAG,OAAA7P,GAAQ,KAAA8Y,GAAM,KAAA5rB,EAAK,EAAIK,EAChCwrB,GAAsBpd,GAAemc,CAAY,EASvD,GARAV,GAAc7pB,EAAU,EAAK,EACzBsrB,IACFjsB,EAAO,eAAeisB,EAAE,EAEtB,CAACE,KAAwBxU,GAAYhS,IAASA,GAAM,qBACtDyM,GAAgBuF,GAAWvE,GAAQ8X,CAAY,EAEjDV,GAAc7pB,EAAU,EAAI,EACxBwI,IAAMoH,GAAa,CACrB,IAAM6b,GAAiB,IAAM,CAC3BzrB,EAAS,QAAUorB,GAAoBprB,CAAQ,EAC/C4P,GACEpH,GACAxI,EAAS,QACTA,EACA8F,EACA,IACF,CACF,EACI0lB,IAAuB7rB,GAAK,eAC9BA,GAAK,eACH6I,GACAxI,EACAyrB,EACF,EAEAA,GAAe,CAEnB,KAAO,CACDF,GAAK,IACTA,GAAK,GAAG,KAAK,aAAe,IAC1BA,GAAK,GAAG,kBAAkB5rB,EAAI,EAEhC,IAAM+J,GAAU1J,EAAS,QAAUorB,GAAoBprB,CAAQ,EAC/DyP,EACE,KACA/F,GACA/D,EACAC,EACA5F,EACA8F,EACAC,CACF,EACAwkB,EAAa,GAAK7gB,GAAQ,EAC5B,CAIA,GAHI4Y,IACF/a,GAAsB+a,GAAGxc,CAAc,EAErC,CAAC0lB,KAAwBxU,GAAYhS,IAASA,GAAM,gBAAiB,CACvE,IAAM0mB,GAAqBnB,EAC3BhjB,GACE,IAAMkK,GAAgBuF,GAAWvE,GAAQiZ,EAAkB,EAC3D5lB,CACF,CACF,EACIykB,EAAa,UAAY,KAAO9X,IAAUrE,GAAeqE,GAAO,KAAK,GAAKA,GAAO,MAAM,UAAY,MACrGzS,EAAS,GAAKuH,GAAsBvH,EAAS,EAAG8F,CAAc,EAEhE9F,EAAS,UAAY,GACrBuqB,EAAe5kB,EAAYC,EAAS,IACtC,CA6DF,EACA5F,EAAS,MAAM,GAAG,EAClB,IAAM2rB,EAAS3rB,EAAS,OAAS,IAAIZ,EAAW,eAAeyrB,CAAiB,EAChF7qB,EAAS,MAAM,IAAI,EACnB,IAAM4rB,EAAS5rB,EAAS,OAAS2rB,EAAO,IAAI,KAAKA,CAAM,EACjDvpB,GAAMpC,EAAS,IAAM2rB,EAAO,WAAW,KAAKA,CAAM,EACxDvpB,GAAI,EAAIpC,EACRoC,GAAI,GAAKpC,EAAS,IAClB2rB,EAAO,UAAY,IAAMxpB,GAASC,EAAG,EACrCynB,GAAc7pB,EAAU,EAAI,EAC5B4rB,EAAO,CACT,EACMhB,EAA2B,CAAC5qB,EAAU6rB,EAAW5lB,IAAc,CACnE4lB,EAAU,UAAY7rB,EACtB,IAAM8rB,EAAY9rB,EAAS,MAAM,MACjCA,EAAS,MAAQ6rB,EACjB7rB,EAAS,KAAO,KAChBolB,GAAYplB,EAAU6rB,EAAU,MAAOC,EAAW7lB,CAAS,EAC3DyhB,GAAY1nB,EAAU6rB,EAAU,SAAU5lB,CAAS,EACnD7G,EAAW,cAAc,EACzBuD,GAAiB3C,CAAQ,EACzBZ,EAAW,cAAc,CAC3B,EACMgH,GAAgB,CAACX,EAAIC,EAAIC,EAAWC,EAAQC,EAAiBC,EAAgBC,GAAWC,EAAcC,EAAY,KAAU,CAChI,IAAM8lB,EAAKtmB,GAAMA,EAAG,SACdumB,GAAgBvmB,EAAKA,EAAG,UAAY,EACpCwmB,GAAKvmB,EAAG,SACR,CAAE,UAAAsK,GAAW,UAAArJ,EAAU,EAAIjB,EACjC,GAAIsK,GAAY,GACd,GAAIA,GAAY,IAAK,CACnBkc,GACEH,EACAE,GACAtmB,EACAC,EACAC,EACAC,EACAC,GACAC,EACAC,CACF,EACA,MACF,SAAW+J,GAAY,IAAK,CAC1Bmc,GACEJ,EACAE,GACAtmB,EACAC,EACAC,EACAC,EACAC,GACAC,EACAC,CACF,EACA,MACF,EAEEU,GAAY,GACVqlB,GAAgB,IAClBI,GAAgBL,EAAIlmB,EAAiBC,CAAc,EAEjDmmB,KAAOF,GACTxD,EAAmB5iB,EAAWsmB,EAAE,GAG9BD,GAAgB,GACdrlB,GAAY,GACdulB,GACEH,EACAE,GACAtmB,EACAC,EACAC,EACAC,EACAC,GACAC,EACAC,CACF,EAEAmmB,GAAgBL,EAAIlmB,EAAiBC,EAAgB,EAAI,GAGvDkmB,GAAgB,GAClBzD,EAAmB5iB,EAAW,EAAE,EAE9BgB,GAAY,IACdR,EACE8lB,GACAtmB,EACAC,EACAC,EACAC,EACAC,GACAC,EACAC,CACF,EAIR,EACMkmB,GAAuB,CAACJ,EAAIE,EAAItmB,EAAWC,EAAQC,EAAiBC,EAAgBC,GAAWC,EAAcC,IAAc,CAC/H8lB,EAAKA,GAAM1sB,EAAO,UAClB4sB,EAAKA,GAAM5sB,EAAO,UAClB,IAAMgtB,EAAYN,EAAG,OACfO,GAAYL,EAAG,OACfM,GAAe,KAAK,IAAIF,EAAWC,EAAS,EAC9C/rB,GACJ,IAAKA,GAAI,EAAGA,GAAIgsB,GAAchsB,KAAK,CACjC,IAAMisB,GAAYP,EAAG1rB,EAAC,EAAI0F,EAAYyjB,GAAeuC,EAAG1rB,EAAC,CAAC,EAAIsR,GAAeoa,EAAG1rB,EAAC,CAAC,EAClFkP,EACEsc,EAAGxrB,EAAC,EACJisB,GACA7mB,EACA,KACAE,EACAC,EACAC,GACAC,EACAC,CACF,CACF,CACIomB,EAAYC,GACdF,GACEL,EACAlmB,EACAC,EACA,GACA,GACAymB,EACF,EAEApmB,EACE8lB,EACAtmB,EACAC,EACAC,EACAC,EACAC,GACAC,EACAC,EACAsmB,EACF,CAEJ,EACML,GAAqB,CAACH,EAAIE,EAAItmB,EAAW0C,EAAcxC,EAAiBC,EAAgBC,GAAWC,EAAcC,IAAc,CACnI,IAAI1F,EAAI,EACFksB,GAAKR,EAAG,OACVS,GAAKX,EAAG,OAAS,EACjBY,GAAKF,GAAK,EACd,KAAOlsB,GAAKmsB,IAAMnsB,GAAKosB,IAAI,CACzB,IAAMlnB,GAAKsmB,EAAGxrB,CAAC,EACTmF,GAAKumB,EAAG1rB,CAAC,EAAI0F,EAAYyjB,GAAeuC,EAAG1rB,CAAC,CAAC,EAAIsR,GAAeoa,EAAG1rB,CAAC,CAAC,EAC3E,GAAIoK,GAAgBlF,GAAIC,EAAE,EACxB+J,EACEhK,GACAC,GACAC,EACA,KACAE,EACAC,EACAC,GACAC,EACAC,CACF,MAEA,OAEF1F,GACF,CACA,KAAOA,GAAKmsB,IAAMnsB,GAAKosB,IAAI,CACzB,IAAMlnB,GAAKsmB,EAAGW,EAAE,EACVhnB,GAAKumB,EAAGU,EAAE,EAAI1mB,EAAYyjB,GAAeuC,EAAGU,EAAE,CAAC,EAAI9a,GAAeoa,EAAGU,EAAE,CAAC,EAC9E,GAAIhiB,GAAgBlF,GAAIC,EAAE,EACxB+J,EACEhK,GACAC,GACAC,EACA,KACAE,EACAC,EACAC,GACAC,EACAC,CACF,MAEA,OAEFymB,KACAC,IACF,CACA,GAAIpsB,EAAImsB,IACN,GAAInsB,GAAKosB,GAAI,CACX,IAAMC,GAAUD,GAAK,EACf/mB,GAASgnB,GAAUH,GAAKR,EAAGW,EAAO,EAAE,GAAKvkB,EAC/C,KAAO9H,GAAKosB,IACVld,EACE,KACAwc,EAAG1rB,CAAC,EAAI0F,EAAYyjB,GAAeuC,EAAG1rB,CAAC,CAAC,EAAIsR,GAAeoa,EAAG1rB,CAAC,CAAC,EAChEoF,EACAC,GACAC,EACAC,EACAC,GACAC,EACAC,CACF,EACA1F,GAEJ,UACSA,EAAIosB,GACb,KAAOpsB,GAAKmsB,IACV5kB,EAAQikB,EAAGxrB,CAAC,EAAGsF,EAAiBC,EAAgB,EAAI,EACpDvF,QAEG,CACL,IAAMssB,GAAKtsB,EACLusB,GAAKvsB,EACLwsB,GAAmC,IAAI,IAC7C,IAAKxsB,EAAIusB,GAAIvsB,GAAKosB,GAAIpsB,IAAK,CACzB,IAAMisB,GAAYP,EAAG1rB,CAAC,EAAI0F,EAAYyjB,GAAeuC,EAAG1rB,CAAC,CAAC,EAAIsR,GAAeoa,EAAG1rB,CAAC,CAAC,EAC9EisB,GAAU,KAAO,MACnBO,GAAiB,IAAIP,GAAU,IAAKjsB,CAAC,CAEzC,CACA,IAAI8a,GACAzF,GAAU,EACRoX,GAAcL,GAAKG,GAAK,EAC1BG,GAAQ,GACRC,GAAmB,EACjBC,GAAwB,IAAI,MAAMH,EAAW,EACnD,IAAKzsB,EAAI,EAAGA,EAAIysB,GAAazsB,IAAK4sB,GAAsB5sB,CAAC,EAAI,EAC7D,IAAKA,EAAIssB,GAAItsB,GAAKmsB,GAAInsB,IAAK,CACzB,IAAM6sB,GAAYrB,EAAGxrB,CAAC,EACtB,GAAIqV,IAAWoX,GAAa,CAC1BllB,EAAQslB,GAAWvnB,EAAiBC,EAAgB,EAAI,EACxD,QACF,CACA,IAAIunB,GACJ,GAAID,GAAU,KAAO,KACnBC,GAAWN,GAAiB,IAAIK,GAAU,GAAG,MAE7C,KAAK/R,GAAIyR,GAAIzR,IAAKsR,GAAItR,KACpB,GAAI8R,GAAsB9R,GAAIyR,EAAE,IAAM,GAAKniB,GAAgByiB,GAAWnB,EAAG5Q,EAAC,CAAC,EAAG,CAC5EgS,GAAWhS,GACX,KACF,CAGAgS,KAAa,OACfvlB,EAAQslB,GAAWvnB,EAAiBC,EAAgB,EAAI,GAExDqnB,GAAsBE,GAAWP,EAAE,EAAIvsB,EAAI,EACvC8sB,IAAYH,GACdA,GAAmBG,GAEnBJ,GAAQ,GAEVxd,EACE2d,GACAnB,EAAGoB,EAAQ,EACX1nB,EACA,KACAE,EACAC,EACAC,GACAC,EACAC,CACF,EACA2P,KAEJ,CACA,IAAM0X,GAA6BL,GAAQM,GAAYJ,EAAqB,EAAI9tB,EAAO,UAEvF,IADAgc,GAAIiS,GAA2B,OAAS,EACnC/sB,EAAIysB,GAAc,EAAGzsB,GAAK,EAAGA,IAAK,CACrC,IAAMitB,GAAYV,GAAKvsB,EACjBisB,GAAYP,EAAGuB,EAAS,EACxBC,GAAcxB,EAAGuB,GAAY,CAAC,EAC9B5nB,GAAS4nB,GAAY,EAAIf,GAE7BgB,GAAY,IAAMA,GAAY,YAC5BplB,EACA8kB,GAAsB5sB,CAAC,IAAM,EAC/BkP,EACE,KACA+c,GACA7mB,EACAC,GACAC,EACAC,EACAC,GACAC,EACAC,CACF,EACSgnB,KACL5R,GAAI,GAAK9a,IAAM+sB,GAA2BjS,EAAC,EAC7C/S,GAAKkkB,GAAW7mB,EAAWC,GAAQ,CAAC,EAEpCyV,KAGN,CACF,CACF,EACM/S,GAAO,CAAC/I,EAAOoG,EAAWC,EAAQ2C,EAAUzC,EAAiB,OAAS,CAC1E,GAAM,CAAE,GAAA0C,EAAI,KAAA7I,GAAM,WAAAmR,EAAY,SAAAlK,EAAU,UAAAD,CAAU,EAAIpH,EACtD,GAAIoH,EAAY,EAAG,CACjB2B,GAAK/I,EAAM,UAAU,QAASoG,EAAWC,EAAQ2C,CAAQ,EACzD,MACF,CACA,GAAI5B,EAAY,IAAK,CACnBpH,EAAM,SAAS,KAAKoG,EAAWC,EAAQ2C,CAAQ,EAC/C,MACF,CACA,GAAI5B,EAAY,GAAI,CAClBhH,GAAK,KAAKJ,EAAOoG,EAAWC,EAAQM,EAAS,EAC7C,MACF,CACA,GAAIvG,KAAS4N,GAAU,CACrB0a,EAAWzf,EAAI7C,EAAWC,CAAM,EAChC,QAASrF,GAAI,EAAGA,GAAIqG,EAAS,OAAQrG,KACnC+H,GAAK1B,EAASrG,EAAC,EAAGoF,EAAWC,EAAQ2C,CAAQ,EAE/C0f,EAAW1oB,EAAM,OAAQoG,EAAWC,CAAM,EAC1C,MACF,CACA,GAAIjG,KAAS2Q,GAAQ,CACnB6Y,EAAe5pB,EAAOoG,EAAWC,CAAM,EACvC,MACF,CAEA,GADwB2C,IAAa,GAAK5B,EAAY,GAAKmK,EAEzD,GAAIvI,IAAa,EACfuI,EAAW,YAAYtI,CAAE,EACzByf,EAAWzf,EAAI7C,EAAWC,CAAM,EAChC2B,GAAsB,IAAMuJ,EAAW,MAAMtI,CAAE,EAAG1C,CAAc,MAC3D,CACL,GAAM,CAAE,MAAA4nB,GAAO,WAAAC,GAAY,WAAAC,EAAW,EAAI9c,EACpC+c,GAAU,IAAM,CAChBtuB,EAAM,IAAI,YACZwI,EAAWS,CAAE,EAEbyf,EAAWzf,EAAI7C,EAAWC,CAAM,CAEpC,EACMkoB,GAAe,IAAM,CACzBJ,GAAMllB,EAAI,IAAM,CACdqlB,GAAQ,EACRD,IAAcA,GAAW,CAC3B,CAAC,CACH,EACID,GACFA,GAAWnlB,EAAIqlB,GAASC,EAAY,EAEpCA,GAAa,CAEjB,MAEA7F,EAAWzf,EAAI7C,EAAWC,CAAM,CAEpC,EACMkC,EAAU,CAACvI,EAAOsG,EAAiBC,EAAgBkC,EAAW,GAAO/B,EAAY,KAAU,CAC/F,GAAM,CACJ,KAAAtG,EACA,MAAAqF,GACA,IAAAuJ,EACA,SAAA3H,EACA,gBAAAC,EACA,UAAAF,GACA,UAAAqJ,GACA,KAAAa,GACA,WAAAkd,EACF,EAAIxuB,EAYJ,GAXIyQ,KAAc,KAChB/J,EAAY,IAEVsI,GAAO,OACTnP,EAAW,cAAc,EACzB4O,GAAOO,EAAK,KAAMzI,EAAgBvG,EAAO,EAAI,EAC7CH,EAAW,cAAc,GAEvB2uB,IAAc,OAChBloB,EAAgB,YAAYkoB,EAAU,EAAI,QAExCpnB,GAAY,IAAK,CACnBd,EAAgB,IAAI,WAAWtG,CAAK,EACpC,MACF,CACA,IAAMyuB,GAAmBrnB,GAAY,GAAKkK,GACpCod,GAAwB,CAAC7f,GAAe7O,CAAK,EAC/CyX,GAIJ,GAHIiX,KAA0BjX,GAAYhS,IAASA,GAAM,uBACvDyM,GAAgBuF,GAAWnR,EAAiBtG,CAAK,EAE/CoH,GAAY,EACdunB,GAAiB3uB,EAAM,UAAWuG,EAAgBkC,CAAQ,MACrD,CACL,GAAIrB,GAAY,IAAK,CACnBpH,EAAM,SAAS,QAAQuG,EAAgBkC,CAAQ,EAC/C,MACF,CACIgmB,IACFzpB,GAAoBhF,EAAO,KAAMsG,EAAiB,eAAe,EAE/Dc,GAAY,GACdpH,EAAM,KAAK,OACTA,EACAsG,EACAC,EACAI,GACA8B,CACF,EACSnB,GAKX,CAACA,EAAgB,UAChBlH,IAAS4N,IAAYyC,GAAY,GAAKA,GAAY,IACjDoc,GACEvlB,EACAhB,EACAC,EACA,GACA,EACF,GACSnG,IAAS4N,IAAYyC,GAAa,KAAc,CAAC/J,GAAaU,GAAY,KACnFylB,GAAgBxlB,EAAUf,EAAiBC,CAAc,EAEvDkC,GACF6E,GAAOtN,CAAK,CAEhB,EACI0uB,KAA0BjX,GAAYhS,IAASA,GAAM,mBAAqBgpB,KAC5EzmB,GAAsB,IAAM,CAC1ByP,IAAavF,GAAgBuF,GAAWnR,EAAiBtG,CAAK,EAC9DyuB,IAAoBzpB,GAAoBhF,EAAO,KAAMsG,EAAiB,WAAW,CACnF,EAAGC,CAAc,CAErB,EACM+G,GAAUtN,GAAU,CACxB,GAAM,CAAE,KAAAI,EAAM,GAAA6I,EAAI,OAAA5C,EAAQ,WAAAkL,CAAW,EAAIvR,EACzC,GAAII,IAAS4N,GAAU,CAEnB4gB,GAAe3lB,EAAI5C,CAAM,EAE3B,MACF,CACA,GAAIjG,IAAS2Q,GAAQ,CACnB8Y,EAAiB7pB,CAAK,EACtB,MACF,CACA,IAAM6uB,EAAgB,IAAM,CAC1BrmB,EAAWS,CAAE,EACTsI,GAAc,CAACA,EAAW,WAAaA,EAAW,YACpDA,EAAW,WAAW,CAE1B,EACA,GAAIvR,EAAM,UAAY,GAAKuR,GAAc,CAACA,EAAW,UAAW,CAC9D,GAAM,CAAE,MAAA4c,GAAO,WAAAC,CAAW,EAAI7c,EACxBgd,EAAe,IAAMJ,GAAMllB,EAAI4lB,CAAa,EAC9CT,EACFA,EAAWpuB,EAAM,GAAI6uB,EAAeN,CAAY,EAEhDA,EAAa,CAEjB,MACEM,EAAc,CAElB,EACMD,GAAiB,CAACvtB,EAAKkB,IAAQ,CACnC,IAAIsP,EACJ,KAAOxQ,IAAQkB,GACbsP,EAAOqX,EAAgB7nB,CAAG,EAC1BmH,EAAWnH,CAAG,EACdA,EAAMwQ,EAERrJ,EAAWjG,CAAG,CAChB,EACMosB,GAAmB,CAACluB,EAAU8F,EAAgBkC,IAAa,CAC/D,GAAM,CACJ,IAAAqmB,EACA,MAAAC,EACA,IAAAlsB,EACA,QAAAsH,GACA,GAAA6kB,EACA,EAAAjM,EACA,EAAAvf,EACA,OAAA0P,GACA,MAAO,CAAE,GAAI+b,EAAc,CAC7B,EAAIxuB,EACJiX,GAAgBqL,CAAC,EACjBrL,GAAgBlU,CAAC,EACbsrB,GACFhvB,EAAO,eAAegvB,CAAG,EAEvB5b,IAAUpT,EAAO,QAAQmvB,EAAa,GACxCA,GAAc,QAAStN,IAAM,CAC3BzO,GAAO,YAAYyO,EAAC,EAAI,MAC1B,CAAC,EAEHoN,EAAM,KAAK,EACPlsB,IACFA,EAAI,OAAS,EACb0F,EAAQ4B,GAAS1J,EAAU8F,EAAgBkC,CAAQ,GAEjDumB,GACFhnB,GAAsBgnB,EAAIzoB,CAAc,EAE1CyB,GAAsB,IAAM,CAC1BvH,EAAS,YAAc,EACzB,EAAG8F,CAAc,EACbA,GAAkBA,EAAe,eAAiB,CAACA,EAAe,aAAe9F,EAAS,UAAY,CAACA,EAAS,eAAiBA,EAAS,aAAe8F,EAAe,YAC1KA,EAAe,OACXA,EAAe,OAAS,GAC1BA,EAAe,QAAQ,EAG7B,EACMsmB,GAAkB,CAACxlB,EAAUf,EAAiBC,EAAgBkC,EAAW,GAAO/B,EAAY,GAAOpE,EAAQ,IAAM,CACrH,QAAStB,GAAIsB,EAAOtB,GAAIqG,EAAS,OAAQrG,KACvCuH,EAAQlB,EAASrG,EAAC,EAAGsF,EAAiBC,EAAgBkC,EAAU/B,CAAS,CAE7E,EACM2iB,GAAmBrpB,GAAU,CACjC,GAAIA,EAAM,UAAY,EACpB,OAAOqpB,GAAgBrpB,EAAM,UAAU,OAAO,EAEhD,GAAIA,EAAM,UAAY,IACpB,OAAOA,EAAM,SAAS,KAAK,EAE7B,IAAMiJ,EAAKigB,EAAgBlpB,EAAM,QAAUA,EAAM,EAAE,EAC7CkvB,EAAcjmB,GAAMA,EAAG3D,EAAc,EAC3C,OAAO4pB,EAAchG,EAAgBgG,CAAW,EAAIjmB,CACtD,EACIkmB,GAAa,GACXtO,GAAS,CAAC7gB,EAAOoG,EAAWI,IAAc,CAC1CxG,GAAS,KACPoG,EAAU,QACZmC,EAAQnC,EAAU,OAAQ,KAAM,KAAM,EAAI,EAG5C8J,EACE9J,EAAU,QAAU,KACpBpG,EACAoG,EACA,KACA,KACA,KACAI,CACF,EAEFJ,EAAU,OAASpG,EACdmvB,KACHA,GAAa,GACb/rB,GAAiB,EACjBE,GAAkB,EAClB6rB,GAAa,GAEjB,EACMxoB,GAAY,CAChB,EAAGuJ,EACH,GAAI3H,EACJ,EAAGQ,GACH,EAAGuE,GACH,GAAI2C,GACJ,GAAIrJ,EACJ,GAAIC,GACJ,IAAKC,EACL,EAAGuiB,GACH,EAAGnb,CACL,EACIkC,GACAC,GACJ,OAAIoY,IACF,CAACrY,GAASC,EAAW,EAAIoY,EACvB9hB,EACF,GAEK,CACL,OAAAka,GACA,QAAAzQ,GACA,UAAW4T,GAAanD,GAAQzQ,EAAO,CACzC,CACF,CACA,SAAS4Z,GAAyB,CAAE,KAAA5pB,EAAM,MAAAqF,CAAM,EAAG2pB,EAAkB,CACnE,OAAOA,IAAqB,OAAShvB,IAAS,iBAAmBgvB,IAAqB,UAAYhvB,IAAS,kBAAoBqF,GAASA,EAAM,UAAYA,EAAM,SAAS,SAAS,MAAM,EAAI,OAAS2pB,CACvM,CACA,SAAS9E,GAAc,CAAE,OAAA8B,EAAQ,IAAAvpB,CAAI,EAAGwsB,EAAS,CAC3CA,GACFjD,EAAO,OAAS,GAChBvpB,EAAI,OAAS,IAEbupB,EAAO,OAAS,IAChBvpB,EAAI,OAAS,GAEjB,CACA,SAAS6O,GAAenL,EAAgBgL,EAAY,CAClD,OAAQ,CAAChL,GAAkBA,GAAkB,CAACA,EAAe,gBAAkBgL,GAAc,CAACA,EAAW,SAC3G,CACA,SAASnJ,GAAuBlC,EAAIC,EAAImpB,EAAU,GAAO,CACvD,IAAMC,EAAMrpB,EAAG,SACTspB,EAAMrpB,EAAG,SACf,GAAIrG,EAAO,QAAQyvB,CAAG,GAAKzvB,EAAO,QAAQ0vB,CAAG,EAC3C,QAASxuB,EAAI,EAAGA,EAAIuuB,EAAI,OAAQvuB,IAAK,CACnC,IAAMwrB,EAAK+C,EAAIvuB,CAAC,EACZ0rB,EAAK8C,EAAIxuB,CAAC,EACV0rB,EAAG,UAAY,GAAK,CAACA,EAAG,mBACtBA,EAAG,WAAa,GAAKA,EAAG,YAAc,MACxCA,EAAK8C,EAAIxuB,CAAC,EAAImpB,GAAeqF,EAAIxuB,CAAC,CAAC,EACnC0rB,EAAG,GAAKF,EAAG,IAET,CAAC8C,GAAW5C,EAAG,YAAc,IAC/BtkB,GAAuBokB,EAAIE,CAAE,GAE7BA,EAAG,OAAS9b,KACd8b,EAAG,GAAKF,EAAG,IAETE,EAAG,OAASzhB,IAAW,CAACyhB,EAAG,KAC7BA,EAAG,GAAKF,EAAG,GAEf,CAEJ,CACA,SAASwB,GAAYyB,EAAK,CACxB,IAAMttB,EAAIstB,EAAI,MAAM,EACdC,EAAS,CAAC,CAAC,EACb1uB,EAAG8a,EAAG0P,EAAG7J,EAAGjW,EACVikB,EAAMF,EAAI,OAChB,IAAKzuB,EAAI,EAAGA,EAAI2uB,EAAK3uB,IAAK,CACxB,IAAM4uB,EAAOH,EAAIzuB,CAAC,EAClB,GAAI4uB,IAAS,EAAG,CAEd,GADA9T,EAAI4T,EAAOA,EAAO,OAAS,CAAC,EACxBD,EAAI3T,CAAC,EAAI8T,EAAM,CACjBztB,EAAEnB,CAAC,EAAI8a,EACP4T,EAAO,KAAK1uB,CAAC,EACb,QACF,CAGA,IAFAwqB,EAAI,EACJ7J,EAAI+N,EAAO,OAAS,EACblE,EAAI7J,GACTjW,EAAI8f,EAAI7J,GAAK,EACT8N,EAAIC,EAAOhkB,CAAC,CAAC,EAAIkkB,EACnBpE,EAAI9f,EAAI,EAERiW,EAAIjW,EAGJkkB,EAAOH,EAAIC,EAAOlE,CAAC,CAAC,IAClBA,EAAI,IACNrpB,EAAEnB,CAAC,EAAI0uB,EAAOlE,EAAI,CAAC,GAErBkE,EAAOlE,CAAC,EAAIxqB,EAEhB,CACF,CAGA,IAFAwqB,EAAIkE,EAAO,OACX/N,EAAI+N,EAAOlE,EAAI,CAAC,EACTA,KAAM,GACXkE,EAAOlE,CAAC,EAAI7J,EACZA,EAAIxf,EAAEwf,CAAC,EAET,OAAO+N,CACT,CACA,SAAShE,GAA2BjrB,EAAU,CAC5C,IAAMovB,EAAepvB,EAAS,QAAQ,UACtC,GAAIovB,EACF,OAAIA,EAAa,UAAY,CAACA,EAAa,cAClCA,EAEAnE,GAA2BmE,CAAY,CAGpD,CACA,SAASnY,GAAgB1M,EAAO,CAC9B,GAAIA,EACF,QAAShK,EAAI,EAAGA,EAAIgK,EAAM,OAAQhK,IAChCgK,EAAMhK,CAAC,EAAE,OAAS,CAExB,CAEA,IAAM8uB,GAAgB,OAAO,IAAI,OAAO,EAClCC,GAAgB,IAEN3N,GAAO0N,EAAa,EAKpC,SAASE,GAAY5D,EAAQle,EAAS,CACpC,OAAO+hB,GAAQ7D,EAAQ,KAAMle,CAAO,CACtC,CACA,SAASgiB,GAAgB9D,EAAQle,EAAS,CACxC,OAAO+hB,GACL7D,EACA,KACA,CAAE,MAAO,MAAO,CAClB,CACF,CACA,SAAS+D,GAAgB/D,EAAQle,EAAS,CACxC,OAAO+hB,GACL7D,EACA,KACA,CAAE,MAAO,MAAO,CAClB,CACF,CACA,SAASnU,GAAM7C,EAAQjS,EAAI+K,EAAS,CAClC,OAAO+hB,GAAQ7a,EAAQjS,EAAI+K,CAAO,CACpC,CACA,SAAS+hB,GAAQ7a,EAAQjS,EAAI+K,EAAUpO,EAAO,UAAW,CACvD,GAAM,CAAE,UAAAswB,EAAW,KAAAC,EAAM,MAAAC,EAAO,KAAAC,CAAK,EAAIriB,EACnCsiB,EAAmB1wB,EAAO,OAAO,CAAC,EAAGoO,CAAO,EAC5CuiB,EAAkBttB,GAAMitB,GAAa,CAACjtB,GAAMmtB,IAAU,OACxDI,EACJ,GAAIha,IACF,GAAI4Z,IAAU,OAAQ,CACpB,IAAMnsB,EAAM4rB,GAAc,EAC1BW,EAAavsB,EAAI,mBAAqBA,EAAI,iBAAmB,CAAC,EAChE,SAAW,CAACssB,EAAiB,CAC3B,IAAME,EAAkB,IAAM,CAC9B,EACA,OAAAA,EAAgB,KAAO7wB,EAAO,KAC9B6wB,EAAgB,OAAS7wB,EAAO,KAChC6wB,EAAgB,MAAQ7wB,EAAO,KACxB6wB,CACT,EAEF,IAAMlwB,EAAW8V,GACjBia,EAAiB,KAAO,CAAChwB,EAAIJ,EAAMM,IAASG,GAA2BL,EAAIC,EAAUL,EAAMM,CAAI,EAC/F,IAAIkwB,EAAQ,GACRN,IAAU,OACZE,EAAiB,UAAa3tB,GAAQ,CACpCmF,GAAsBnF,EAAKpC,GAAYA,EAAS,QAAQ,CAC1D,EACS6vB,IAAU,SACnBM,EAAQ,GACRJ,EAAiB,UAAY,CAAC3tB,EAAKguB,IAAe,CAC5CA,EACFhuB,EAAI,EAEJD,GAASC,CAAG,CAEhB,GAEF2tB,EAAiB,WAAc3tB,GAAQ,CACjCM,IACFN,EAAI,OAAS,GAEX+tB,IACF/tB,EAAI,OAAS,EACTpC,IACFoC,EAAI,GAAKpC,EAAS,IAClBoC,EAAI,EAAIpC,GAGd,EACA,IAAMqwB,EAAcjxB,EAAW,MAAMuV,EAAQjS,EAAIqtB,CAAgB,EACjE,OAAI9Z,KACEga,EACFA,EAAW,KAAKI,CAAW,EAClBL,GACTK,EAAY,GAGTA,CACT,CACA,SAAS9T,GAAc5H,EAAQvQ,EAAOqJ,EAAS,CAC7C,IAAMyR,EAAa,KAAK,MAClB2C,EAASxiB,EAAO,SAASsV,CAAM,EAAIA,EAAO,SAAS,GAAG,EAAImN,GAAiB5C,EAAYvK,CAAM,EAAI,IAAMuK,EAAWvK,CAAM,EAAIA,EAAO,KAAKuK,EAAYA,CAAU,EAChKxc,EACArD,EAAO,WAAW+E,CAAK,EACzB1B,EAAK0B,GAEL1B,EAAK0B,EAAM,QACXqJ,EAAUrJ,GAEZ,IAAM+U,EAAQC,GAAmB,IAAI,EAC/B/Y,EAAMmvB,GAAQ3N,EAAQnf,EAAG,KAAKwc,CAAU,EAAGzR,CAAO,EACxD,OAAA0L,EAAM,EACC9Y,CACT,CACA,SAASyhB,GAAiBpe,EAAK4sB,EAAM,CACnC,IAAMC,EAAWD,EAAK,MAAM,GAAG,EAC/B,MAAO,IAAM,CACX,IAAI1vB,EAAM8C,EACV,QAAS,EAAI,EAAG,EAAI6sB,EAAS,QAAU3vB,EAAK,IAC1CA,EAAMA,EAAI2vB,EAAS,CAAC,CAAC,EAEvB,OAAO3vB,CACT,CACF,CAEA,SAAS4vB,GAASxrB,EAAOP,EAAMgJ,EAAUpO,EAAO,UAAW,CACzD,IAAMkB,EAAIsJ,GAAmB,EACvB4mB,EAAgBpxB,EAAO,SAASoF,CAAI,EACpCisB,EAAiBrxB,EAAO,UAAUoF,CAAI,EACtCH,EAAYqsB,GAAkB3rB,EAAOyrB,CAAa,EAClDpwB,EAAMjB,EAAW,UAAU,CAACwxB,EAAOC,IAAY,CACnD,IAAIC,EACAC,EAAe1xB,EAAO,UACtB2xB,EACJ,OAAAtB,GAAgB,IAAM,CACpB,IAAMuB,EAAYjsB,EAAMyrB,CAAa,EACjCpxB,EAAO,WAAWyxB,EAAYG,CAAS,IACzCH,EAAaG,EACbJ,EAAQ,EAEZ,CAAC,EACM,CACL,KAAM,CACJ,OAAAD,EAAM,EACCnjB,EAAQ,IAAMA,EAAQ,IAAIqjB,CAAU,EAAIA,CACjD,EACA,IAAI1sB,EAAO,CACT,IAAM8sB,EAAezjB,EAAQ,IAAMA,EAAQ,IAAIrJ,CAAK,EAAIA,EACxD,GAAI,CAAC/E,EAAO,WAAW6xB,EAAcJ,CAAU,GAAK,EAAEC,IAAiB1xB,EAAO,WAAaA,EAAO,WAAW+E,EAAO2sB,CAAY,GAC9H,OAEF,IAAM/mB,EAAWzJ,EAAE,MAAM,MACnByJ,IACLvF,KAAQuF,GAAYymB,KAAiBzmB,GAAY0mB,KAAkB1mB,KAAc,YAAYvF,CAAI,KAAMuF,GAAY,YAAYymB,CAAa,KAAMzmB,GAAY,YAAY0mB,CAAc,KAAM1mB,KAC7L8mB,EAAa1sB,EACbysB,EAAQ,GAEVtwB,EAAE,KAAK,UAAUkE,CAAI,GAAIysB,CAAY,EACjC7xB,EAAO,WAAW+E,EAAO8sB,CAAY,GAAK7xB,EAAO,WAAW+E,EAAO2sB,CAAY,GAAK,CAAC1xB,EAAO,WAAW6xB,EAAcF,CAAgB,GACvIH,EAAQ,EAEVE,EAAe3sB,EACf4sB,EAAmBE,CACrB,CACF,CACF,CAAC,EACD,OAAA7wB,EAAI,OAAO,QAAQ,EAAI,IAAM,CAC3B,IAAI8wB,EAAK,EACT,MAAO,CACL,MAAO,CACL,OAAIA,EAAK,EACA,CAAE,MAAOA,IAAO7sB,GAAajF,EAAO,UAAYgB,EAAK,KAAM,EAAM,EAEjE,CAAE,KAAM,EAAK,CAExB,CACF,CACF,EACOA,CACT,CACA,IAAMswB,GAAoB,CAAC3rB,EAAOosB,IACzBA,IAAc,cAAgBA,IAAc,cAAgBpsB,EAAM,eAAiBA,EAAM,GAAGosB,CAAS,WAAW,GAAKpsB,EAAM,GAAG3F,EAAO,SAAS+xB,CAAS,CAAC,WAAW,GAAKpsB,EAAM,GAAG3F,EAAO,UAAU+xB,CAAS,CAAC,WAAW,EAGhO,SAASC,GAAKrxB,EAAUsxB,KAAUC,EAAS,CACzC,GAAIvxB,EAAS,YAAa,OAC1B,IAAMgF,EAAQhF,EAAS,MAAM,OAASX,EAAO,UACzCY,EAAOsxB,EACLC,EAAkBF,EAAM,WAAW,SAAS,EAC5ChtB,EAAYktB,GAAmBb,GAAkB3rB,EAAOssB,EAAM,MAAM,CAAC,CAAC,EACxEhtB,IACEA,EAAU,OACZrE,EAAOsxB,EAAQ,IAAKxuB,GAAM1D,EAAO,SAAS0D,CAAC,EAAIA,EAAE,KAAK,EAAIA,CAAC,GAEzDuB,EAAU,SACZrE,EAAOsxB,EAAQ,IAAIlyB,EAAO,aAAa,IAG3C,IAAIoyB,EACA1P,EAAU/c,EAAMysB,EAAcpyB,EAAO,aAAaiyB,CAAK,CAAC,GAC5DtsB,EAAMysB,EAAcpyB,EAAO,aAAaA,EAAO,SAASiyB,CAAK,CAAC,CAAC,EAC3D,CAACvP,GAAWyP,IACdzP,EAAU/c,EAAMysB,EAAcpyB,EAAO,aAAaA,EAAO,UAAUiyB,CAAK,CAAC,CAAC,GAExEvP,GACF3hB,GACE2hB,EACA/hB,EACA,EACAC,CACF,EAEF,IAAMyxB,EAAc1sB,EAAMysB,EAAc,MAAM,EAC9C,GAAIC,EAAa,CACf,GAAI,CAAC1xB,EAAS,QACZA,EAAS,QAAU,CAAC,UACXA,EAAS,QAAQyxB,CAAW,EACrC,OAEFzxB,EAAS,QAAQyxB,CAAW,EAAI,GAChCrxB,GACEsxB,EACA1xB,EACA,EACAC,CACF,CACF,CACF,CACA,SAAS0xB,GAAsBhc,EAAMiH,EAAY+F,EAAU,GAAO,CAChE,IAAMlM,EAAQmG,EAAW,WACnBrF,EAASd,EAAM,IAAId,CAAI,EAC7B,GAAI4B,IAAW,OACb,OAAOA,EAET,IAAMiH,EAAM7I,EAAK,MACb2I,EAAa,CAAC,EACdgI,EAAa,GACjB,GAAI,CAACjnB,EAAO,WAAWsW,CAAI,EAAG,CAC5B,IAAMic,EAAepL,GAAS,CAC5B,IAAMqL,EAAuBF,GAAsBnL,EAAM5J,EAAY,EAAI,EACrEiV,IACFvL,EAAa,GACbjnB,EAAO,OAAOif,EAAYuT,CAAoB,EAElD,EACI,CAAClP,GAAW/F,EAAW,OAAO,QAChCA,EAAW,OAAO,QAAQgV,CAAW,EAEnCjc,EAAK,SACPic,EAAYjc,EAAK,OAAO,EAEtBA,EAAK,QACPA,EAAK,OAAO,QAAQic,CAAW,CAEnC,CACA,MAAI,CAACpT,GAAO,CAAC8H,GACPjnB,EAAO,SAASsW,CAAI,GACtBc,EAAM,IAAId,EAAM,IAAI,EAEf,OAELtW,EAAO,QAAQmf,CAAG,EACpBA,EAAI,QAASrS,GAAQmS,EAAWnS,CAAG,EAAI,IAAI,EAE3C9M,EAAO,OAAOif,EAAYE,CAAG,EAE3Bnf,EAAO,SAASsW,CAAI,GACtBc,EAAM,IAAId,EAAM2I,CAAU,EAErBA,EACT,CACA,SAASmH,GAAehY,EAAStB,EAAK,CACpC,MAAI,CAACsB,GAAW,CAACpO,EAAO,KAAK8M,CAAG,EACvB,IAETA,EAAMA,EAAI,MAAM,CAAC,EAAE,QAAQ,QAAS,EAAE,EAC/B9M,EAAO,OAAOoO,EAAStB,EAAI,CAAC,EAAE,YAAY,EAAIA,EAAI,MAAM,CAAC,CAAC,GAAK9M,EAAO,OAAOoO,EAASpO,EAAO,UAAU8M,CAAG,CAAC,GAAK9M,EAAO,OAAOoO,EAAStB,CAAG,EACnJ,CAIA,SAASif,GAAoBprB,EAAU,CACrC,GAAM,CACJ,KAAMua,EACN,MAAAhb,EACA,MAAAuyB,EACA,UAAAC,EACA,aAAc,CAAC5U,CAAY,EAC3B,MAAAvT,EACA,MAAAsb,EACA,KAAAmM,EACA,OAAAjR,EACA,YAAA4R,EACA,MAAAhtB,EACA,KAAA0X,EACA,WAAAjO,EACA,IAAA/K,EACA,aAAAgd,CACF,EAAI1gB,EACEoD,EAAOD,GAA4BnD,CAAQ,EAC7CivB,EACAgD,EACJ,GAAI,CACF,GAAI1yB,EAAM,UAAY,EAAG,CACvB,IAAM2yB,EAAaH,GAAaD,EAC1BK,EASDD,EACLjD,EAASpd,GACPuO,EAAO,KACL+R,EACAD,EACAF,EACiChtB,EACjCyJ,EACAiO,EACAhZ,CACF,CACF,EACAuuB,EAAmB/M,CACrB,KAAO,CACL,IAAMkN,EAAU7X,EAEhB0U,EAASpd,GACPugB,EAAQ,OAAS,EAAIA,EACcptB,EAQ7B,CAAE,MAAAkgB,EAAO,MAAAtb,EAAO,KAAAynB,CAAK,CAC3B,EAAIe,EAC+BptB,EACjC,IACF,CACF,EACAitB,EAAmB1X,EAAU,MAAQ2K,EAAQmN,GAAyBnN,CAAK,CAC7E,CACF,OAAShlB,EAAK,CACZoyB,GAAW,OAAS,EACpBnyB,GAAYD,EAAKF,EAAU,CAAC,EAC5BivB,EAASte,GAAYnG,EAAO,CAC9B,CACA,IAAI+gB,EAAO0D,EACX,GAAIgD,GAAoBvR,IAAiB,GAAO,CAC9C,IAAMhK,EAAO,OAAO,KAAKub,CAAgB,EACnC,CAAE,UAAAtrB,CAAU,EAAI4kB,EAClB7U,EAAK,QACH/P,EAAa,IACXwW,GAAgBzG,EAAK,KAAKrX,EAAO,eAAe,IAClD4yB,EAAmBM,GACjBN,EACA9U,CACF,GAEFoO,EAAOre,GAAWqe,EAAM0G,EAAkB,GAAO,EAAI,EAG3D,CACA,OAAI1yB,EAAM,OACRgsB,EAAOre,GAAWqe,EAAM,KAAM,GAAO,EAAI,EACzCA,EAAK,KAAOA,EAAK,KAAOA,EAAK,KAAK,OAAOhsB,EAAM,IAAI,EAAIA,EAAM,MAE3DA,EAAM,YACRkL,GAAmB8gB,EAAMhsB,EAAM,UAAU,EAGzC0vB,EAAS1D,EAEXpoB,GAA4BC,CAAI,EACzB6rB,CACT,CACA,SAASuD,GAAiB5rB,EAAU6rB,EAAU,GAAM,CAClD,IAAIC,EACJ,QAASnyB,EAAI,EAAGA,EAAIqG,EAAS,OAAQrG,IAAK,CACxC,IAAM4H,EAAQvB,EAASrG,CAAC,EACxB,GAAI6X,GAAQjQ,CAAK,GACf,GAAIA,EAAM,OAASqC,IAAWrC,EAAM,WAAa,OAAQ,CACvD,GAAIuqB,EACF,OAEAA,EAAavqB,CAEjB,MAEA,OAEJ,CACA,OAAOuqB,CACT,CACA,IAAML,GAA4BnN,GAAU,CAC1C,IAAI7kB,EACJ,QAAW8L,KAAO+Y,GACZ/Y,IAAQ,SAAWA,IAAQ,SAAW9M,EAAO,KAAK8M,CAAG,MACtD9L,IAAQA,EAAM,CAAC,IAAI8L,CAAG,EAAI+Y,EAAM/Y,CAAG,GAGxC,OAAO9L,CACT,EACMkyB,GAAuB,CAACrN,EAAOlgB,IAAU,CAC7C,IAAM3E,EAAM,CAAC,EACb,QAAW8L,KAAO+Y,GACZ,CAAC7lB,EAAO,gBAAgB8M,CAAG,GAAK,EAAEA,EAAI,MAAM,CAAC,IAAKnH,MACpD3E,EAAI8L,CAAG,EAAI+Y,EAAM/Y,CAAG,GAGxB,OAAO9L,CACT,EACA,SAASsqB,GAAsBnmB,EAAWqnB,EAAW5lB,EAAW,CAC9D,GAAM,CAAE,MAAO6lB,EAAW,SAAU6G,EAAc,UAAAvY,CAAU,EAAI5V,EAC1D,CAAE,MAAOouB,EAAW,SAAUC,EAAc,UAAA7iB,CAAU,EAAI6b,EAC1DiH,EAAQ1Y,EAAU,aACxB,GAAIyR,EAAU,MAAQA,EAAU,WAC9B,MAAO,GAET,GAAI5lB,GAAa+J,GAAa,EAAG,CAC/B,GAAIA,EAAY,KACd,MAAO,GAET,GAAIA,EAAY,GACd,OAAK8b,EAGEiH,GAAgBjH,EAAW8G,EAAWE,CAAK,EAFzC,CAAC,CAACF,EAGN,GAAI5iB,EAAY,EAAG,CACxB,IAAMgjB,EAAenH,EAAU,aAC/B,QAAStrB,EAAI,EAAGA,EAAIyyB,EAAa,OAAQzyB,IAAK,CAC5C,IAAM4L,EAAM6mB,EAAazyB,CAAC,EAC1B,GAAIqyB,EAAUzmB,CAAG,IAAM2f,EAAU3f,CAAG,GAAK,CAACsZ,GAAeqN,EAAO3mB,CAAG,EACjE,MAAO,EAEX,CACF,CACF,KACE,QAAIwmB,GAAgBE,KACd,CAACA,GAAgB,CAACA,EAAa,SAC1B,GAGP/G,IAAc8G,EACT,GAEJ9G,EAGA8G,EAGEG,GAAgBjH,EAAW8G,EAAWE,CAAK,EAFzC,GAHA,CAAC,CAACF,EAOb,MAAO,EACT,CACA,SAASG,GAAgBjH,EAAW8G,EAAWK,EAAc,CAC3D,IAAMC,EAAW,OAAO,KAAKN,CAAS,EACtC,GAAIM,EAAS,SAAW,OAAO,KAAKpH,CAAS,EAAE,OAC7C,MAAO,GAET,QAAS,EAAI,EAAG,EAAIoH,EAAS,OAAQ,IAAK,CACxC,IAAM/mB,EAAM+mB,EAAS,CAAC,EACtB,GAAIN,EAAUzmB,CAAG,IAAM2f,EAAU3f,CAAG,GAAK,CAACsZ,GAAewN,EAAc9mB,CAAG,EACxE,MAAO,EAEX,CACA,MAAO,EACT,CACA,SAAS+F,GAAgB,CAAE,MAAA3S,EAAO,OAAAkT,CAAO,EAAGjK,EAAI,CAC9C,KAAOiK,GAAQ,CACb,IAAM8Y,EAAO9Y,EAAO,QAIpB,GAHI8Y,EAAK,UAAYA,EAAK,SAAS,eAAiBhsB,IAClDgsB,EAAK,GAAKhsB,EAAM,IAEdgsB,IAAShsB,GACVA,EAAQkT,EAAO,OAAO,GAAKjK,EAC5BiK,EAASA,EAAO,WAEhB,MAEJ,CACF,CAEA,IAAMqF,GAAcnY,GAASA,EAAK,aAC9BwzB,GAAa,EACXC,GAAe,CACnB,KAAM,WAKN,aAAc,GACd,QAAQ3tB,EAAIC,EAAIC,EAAWC,EAAQC,EAAiBC,EAAgBC,EAAWC,EAAcC,EAAWsJ,EAAmB,CACzH,GAAI9J,GAAM,KACR4tB,GACE3tB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAsJ,CACF,MACK,CACL,GAAIzJ,GAAkBA,EAAe,KAAO,GAAK,CAACL,EAAG,SAAS,aAAc,CAC1EC,EAAG,SAAWD,EAAG,SACjBC,EAAG,SAAS,MAAQA,EACpBA,EAAG,GAAKD,EAAG,GACX,MACF,CACA6tB,GACE7tB,EACAC,EACAC,EACAC,EACAC,EACAE,EACAC,EACAC,EACAsJ,CACF,CACF,CACF,EACA,QAASgkB,GACT,UAAWC,EACb,EACMC,GAAWL,GACjB,SAASM,GAAan0B,EAAOkF,EAAM,CACjC,IAAMkvB,EAAgBp0B,EAAM,OAASA,EAAM,MAAMkF,CAAI,EACjDpF,EAAO,WAAWs0B,CAAa,GACjCA,EAAc,CAElB,CACA,SAASN,GAAc9zB,EAAOoG,EAAWC,EAAQC,EAAiBC,EAAgBC,EAAWC,EAAcC,EAAWsJ,EAAmB,CACvI,GAAM,CACJ,EAAGE,EACH,EAAG,CAAE,cAAAoH,CAAc,CACrB,EAAItH,EACEqkB,EAAkB/c,EAAc,KAAK,EACrCoB,EAAW1Y,EAAM,SAAWs0B,GAChCt0B,EACAuG,EACAD,EACAF,EACAiuB,EACAhuB,EACAG,EACAC,EACAC,EACAsJ,CACF,EACAE,EACE,KACAwI,EAAS,cAAgB1Y,EAAM,UAC/Bq0B,EACA,KACA/tB,EACAoS,EACAlS,EACAC,CACF,EACIiS,EAAS,KAAO,GAClByb,GAAan0B,EAAO,WAAW,EAC/Bm0B,GAAan0B,EAAO,YAAY,EAChCkQ,EACE,KACAlQ,EAAM,WACNoG,EACAC,EACAC,EACA,KAEAE,EACAC,CACF,EACA8tB,GAAgB7b,EAAU1Y,EAAM,UAAU,GAE1C0Y,EAAS,QAAQ,GAAO,EAAI,CAEhC,CACA,SAASqb,GAAc7tB,EAAIC,EAAIC,EAAWC,EAAQC,EAAiBE,EAAWC,EAAcC,EAAW,CAAE,EAAGwJ,EAAO,GAAI3H,EAAS,EAAG,CAAE,cAAA+O,CAAc,CAAE,EAAG,CACtJ,IAAMoB,EAAWvS,EAAG,SAAWD,EAAG,SAClCwS,EAAS,MAAQvS,EACjBA,EAAG,GAAKD,EAAG,GACX,IAAMsuB,EAAYruB,EAAG,UACfsuB,EAActuB,EAAG,WACjB,CAAE,aAAAuuB,EAAc,cAAAC,EAAe,aAAAC,EAAc,YAAAC,CAAY,EAAInc,EACnE,GAAIic,EACFjc,EAAS,cAAgB8b,EACrBppB,GAAgBopB,EAAWG,CAAa,GAC1CzkB,EACEykB,EACAH,EACA9b,EAAS,gBACT,KACApS,EACAoS,EACAlS,EACAC,EACAC,CACF,EACIgS,EAAS,MAAQ,EACnBA,EAAS,QAAQ,EACRkc,IACJC,IACH3kB,EACEwkB,EACAD,EACAruB,EACAC,EACAC,EACA,KAEAE,EACAC,EACAC,CACF,EACA6tB,GAAgB7b,EAAU+b,CAAW,MAIzC/b,EAAS,UAAYkb,KACjBiB,GACFnc,EAAS,YAAc,GACvBA,EAAS,aAAeic,GAExBpsB,EAAQosB,EAAeruB,EAAiBoS,CAAQ,EAElDA,EAAS,KAAO,EAChBA,EAAS,QAAQ,OAAS,EAC1BA,EAAS,gBAAkBpB,EAAc,KAAK,EAC1Csd,GACF1kB,EACE,KACAskB,EACA9b,EAAS,gBACT,KACApS,EACAoS,EACAlS,EACAC,EACAC,CACF,EACIgS,EAAS,MAAQ,EACnBA,EAAS,QAAQ,GAEjBxI,EACEwkB,EACAD,EACAruB,EACAC,EACAC,EACA,KAEAE,EACAC,EACAC,CACF,EACA6tB,GAAgB7b,EAAU+b,CAAW,IAE9BC,GAAgBtpB,GAAgBopB,EAAWE,CAAY,GAChExkB,EACEwkB,EACAF,EACApuB,EACAC,EACAC,EACAoS,EACAlS,EACAC,EACAC,CACF,EACAgS,EAAS,QAAQ,EAAI,IAErBxI,EACE,KACAskB,EACA9b,EAAS,gBACT,KACApS,EACAoS,EACAlS,EACAC,EACAC,CACF,EACIgS,EAAS,MAAQ,GACnBA,EAAS,QAAQ,YAKnBgc,GAAgBtpB,GAAgBopB,EAAWE,CAAY,EACzDxkB,EACEwkB,EACAF,EACApuB,EACAC,EACAC,EACAoS,EACAlS,EACAC,EACAC,CACF,EACA6tB,GAAgB7b,EAAU8b,CAAS,UAEnCL,GAAahuB,EAAI,WAAW,EAC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","names":["require_shared_cjs_prod","__commonJSMin","exports","makeMap","str","map","key","val","EMPTY_OBJ","EMPTY_ARR","NOOP","NO","isOn","isModelListener","extend","remove","arr","el","i","hasOwnProperty","hasOwn","isArray","isMap","toTypeString","isSet","isDate","isRegExp","isFunction","isString","isSymbol","isObject","isPromise","objectToString","value","toRawType","isPlainObject","isIntegerKey","isReservedProp","isBuiltInDirective","cacheStringFunction","fn","cache","camelizeRE","camelize","_","c","hyphenateRE","hyphenate","capitalize","toHandlerKey","hasChanged","oldValue","invokeArrayFns","fns","arg","def","obj","writable","looseToNumber","n","toNumber","_globalThis","getGlobalThis","identRE","genPropsAccessExp","name","genCacheKey","source","options","PatchFlags","PatchFlagNames","ShapeFlags","SlotFlags","slotFlagsText","GLOBALS_ALLOWED","isGloballyAllowed","isGloballyWhitelisted","range","generateCodeFrame","start","end","lines","newlineSequences","idx","count","res","j","line","lineLength","newLineSeqLength","pad","length","normalizeStyle","item","normalized","parseStringStyle","listDelimiterRE","propertyDelimiterRE","styleCommentRE","cssText","ret","tmp","stringifyStyle","styles","normalizedKey","normalizeClass","normalizeProps","props","klass","style","HTML_TAGS","SVG_TAGS","MATH_TAGS","VOID_TAGS","isHTMLTag","isSVGTag","isMathMLTag","isVoidTag","specialBooleanAttrs","isSpecialBooleanAttr","isBooleanAttr","includeBooleanAttr","unsafeAttrCharRE","attrValidationCache","isSSRSafeAttrName","isUnsafe","propsToAttrMap","isKnownHtmlAttr","isKnownSvgAttr","isKnownMathMLAttr","isRenderableAttrValue","type","escapeRE","escapeHtml","string","match","html","escaped","index","lastIndex","commentStripRE","escapeHtmlComment","src","cssVarNameEscapeSymbolsRE","getEscapedCssVarName","doubleEscape","s","looseCompareArrays","a","b","equal","looseEqual","aValidType","bValidType","aKeysCount","bKeysCount","aHasKey","bHasKey","looseIndexOf","isRef","toDisplayString","replacer","_key","entries","val2","stringifySymbol","v","_a","normalizeCssVarValue","require_shared","__commonJSMin","exports","module","exports","c","exports","c","decodeMap","exports","_a","codePoint","output","replaceCodePoint","decodeCodePoint","decode_data_html_js_1","__importDefault","exports","decode_data_xml_js_1","decode_codepoint_js_1","__importStar","decode_codepoint_js_2","CharCodes","TO_LOWER_BIT","BinTrieFlags","isNumber","code","isHexadecimalCharacter","isAsciiAlphaNumeric","isEntityInAttributeInvalidEnd","EntityDecoderState","DecodingMode","EntityDecoder","decodeTree","emitCodePoint","errors","decodeMode","str","offset","start","end","base","digitCount","startIdx","char","lastCp","expectedLength","_a","current","valueLength","determineBranch","_b","result","consumed","getDecoder","ret","decoder","lastIndex","len","nodeIdx","branchCount","jumpOffset","value","lo","hi","mid","midVal","htmlDecoder","xmlDecoder","decodeHTML","mode","decodeHTMLAttribute","decodeHTMLStrict","decodeXML","Position","constructor","line","col","index","column","SourceLocation","start","end","filename","identifierName","createPositionWithColumnOffset","position","columnOffset","code","ModuleErrors","ImportMetaOutsideModule","message","ImportOutsideModule","NodeDescriptions","ArrayPattern","AssignmentExpression","AssignmentPattern","ArrowFunctionExpression","ConditionalExpression","CatchClause","ForOfStatement","ForInStatement","ForStatement","FormalParameters","Identifier","ImportSpecifier","ImportDefaultSpecifier","ImportNamespaceSpecifier","ObjectPattern","ParenthesizedExpression","RestElement","UpdateExpression","true","false","VariableDeclarator","YieldExpression","toNodeDescription","node","type","prefix","StandardErrors","AccessorIsGenerator","kind","ArgumentsInClass","AsyncFunctionInSingleStatementContext","AwaitBindingIdentifier","AwaitBindingIdentifierInStaticBlock","AwaitExpressionFormalParameter","AwaitUsingNotInAsyncContext","AwaitNotInAsyncContext","BadGetterArity","BadSetterArity","BadSetterRestParameter","ConstructorClassField","ConstructorClassPrivateField","ConstructorIsAccessor","ConstructorIsAsync","ConstructorIsGenerator","DeclarationMissingInitializer","DecoratorArgumentsOutsideParentheses","DecoratorBeforeExport","DecoratorsBeforeAfterExport","DecoratorConstructor","DecoratorExportClass","DecoratorSemicolon","DecoratorStaticBlock","DeferImportRequiresNamespace","DeletePrivateField","DestructureNamedImport","DuplicateConstructor","DuplicateDefaultExport","DuplicateExport","exportName","DuplicateProto","DuplicateRegExpFlags","ElementAfterRest","EscapedCharNotAnIdentifier","ExportBindingIsString","localName","ExportDefaultFromAsIdentifier","ForInOfLoopInitializer","ForInUsing","ForOfAsync","ForOfLet","GeneratorInSingleStatementContext","IllegalBreakContinue","IllegalLanguageModeDirective","IllegalReturn","ImportAttributesUseAssert","ImportBindingIsString","importName","ImportCallArity","ImportCallNotNewExpression","ImportCallSpreadArgument","ImportJSONBindingNotDefault","ImportReflectionHasAssertion","ImportReflectionNotBinding","IncompatibleRegExpUVFlags","InvalidBigIntLiteral","InvalidCodePoint","InvalidCoverDiscardElement","InvalidCoverInitializedName","InvalidDecimal","InvalidDigit","radix","InvalidEscapeSequence","InvalidEscapeSequenceTemplate","InvalidEscapedReservedWord","reservedWord","InvalidIdentifier","InvalidLhs","ancestor","InvalidLhsBinding","InvalidLhsOptionalChaining","InvalidNumber","InvalidOrMissingExponent","InvalidOrUnexpectedToken","unexpected","InvalidParenthesizedAssignment","InvalidPrivateFieldResolution","InvalidPropertyBindingPattern","InvalidRecordProperty","InvalidRestAssignmentPattern","LabelRedeclaration","labelName","LetInLexicalBinding","LineTerminatorBeforeArrow","MalformedRegExpFlags","MissingClassName","MissingEqInAssignment","MissingSemicolon","MissingPlugin","missingPlugin","map","name","JSON","stringify","join","MissingOneOfPlugins","MissingUnicodeEscape","MixingCoalesceWithLogical","ModuleAttributeDifferentFromType","ModuleAttributeInvalidValue","ModuleAttributesWithDuplicateKeys","key","ModuleExportNameHasLoneSurrogate","surrogateCharCode","toString","ModuleExportUndefined","MultipleDefaultsInSwitch","NewlineAfterThrow","NoCatchOrFinally","NumberIdentifier","NumericSeparatorInEscapeSequence","ObsoleteAwaitStar","OptionalChainingNoNew","OptionalChainingNoTemplate","OverrideOnConstructor","ParamDupe","PatternHasAccessor","PatternHasMethod","PrivateInExpectedIn","PrivateNameRedeclaration","RecordExpressionBarIncorrectEndSyntaxType","RecordExpressionBarIncorrectStartSyntaxType","RecordExpressionHashIncorrectStartSyntaxType","RecordNoProto","RestTrailingComma","SloppyFunction","SloppyFunctionAnnexB","SourcePhaseImportRequiresDefault","StaticPrototype","SuperNotAllowed","SuperPrivateField","TrailingDecorator","TupleExpressionBarIncorrectEndSyntaxType","TupleExpressionBarIncorrectStartSyntaxType","TupleExpressionHashIncorrectStartSyntaxType","UnexpectedArgumentPlaceholder","UnexpectedAwaitAfterPipelineBody","UnexpectedDigitAfterHash","UnexpectedImportExport","UnexpectedKeyword","keyword","UnexpectedLeadingDecorator","UnexpectedLexicalDeclaration","UnexpectedNewTarget","UnexpectedNumericSeparator","UnexpectedPrivateField","UnexpectedReservedWord","UnexpectedSuper","UnexpectedToken","expected","UnexpectedTokenUnaryExponentiation","UnexpectedUsingDeclaration","UnexpectedVoidPattern","UnsupportedBind","UnsupportedDecoratorExport","UnsupportedDefaultExport","UnsupportedImport","UnsupportedMetaProperty","target","onlyValidPropertyName","UnsupportedParameterDecorator","UnsupportedPropertyDecorator","UnsupportedSuper","UnterminatedComment","UnterminatedRegExp","UnterminatedString","UnterminatedTemplate","UsingDeclarationExport","UsingDeclarationHasBindingPattern","VarRedeclaration","VoidPatternCatchClauseParam","VoidPatternInitializer","YieldBindingIdentifier","YieldInParameter","YieldNotInGeneratorFunction","ZeroDigitNumericSeparator","StrictModeErrors","StrictDelete","StrictEvalArguments","referenceName","StrictEvalArgumentsBinding","bindingName","StrictFunction","StrictNumericEscape","StrictOctalLiteral","StrictWith","ParseExpressionErrors","ParseExpressionEmptyInput","ParseExpressionExpectsEOF","String","fromCodePoint","UnparenthesizedPipeBodyDescriptions","Set","Object","assign","PipeBodyIsTighter","PipeTopicRequiresHackPipes","PipeTopicUnbound","PipeTopicUnconfiguredToken","token","PipeTopicUnused","PipeUnparenthesizedBody","PipelineBodyNoArrow","PipelineBodySequenceExpression","PipelineHeadSequenceExpression","PipelineTopicUnused","PrimaryTopicNotAllowed","PrimaryTopicRequiresSmartPipeline","defineHidden","obj","value","defineProperty","enumerable","configurable","toParseErrorConstructor","toMessage","reasonCode","syntaxPlugin","hasMissingPlugin","oldReasonCodes","AccessorCannotDeclareThisParameter","AccessorCannotHaveTypeParameters","ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference","SetAccessorCannotHaveOptionalParameter","SetAccessorCannotHaveRestParameter","SetAccessorCannotHaveReturnType","loc","details","error","SyntaxError","pos","overrides","_overrides$loc","get","set","writable","ParseErrorEnum","argument","Array","isArray","parseErrorTemplates","ParseErrorConstructors","keys","template","_ref","rest","_objectWithoutPropertiesLoose","_excluded","Errors","PipelineOperatorErrors","createDefaultOptions","sourceType","sourceFilename","undefined","startIndex","startColumn","startLine","allowAwaitOutsideFunction","allowReturnOutsideFunction","allowNewTargetOutsideFunction","allowImportExportEverywhere","allowSuperOutsideMethod","allowUndeclaredExports","allowYieldOutsideFunction","plugins","strictMode","ranges","tokens","createImportExpressions","createParenthesizedExpressions","errorRecovery","attachComment","annexB","getOptions","opts","options","Error","toUnenumerable","object","toESTreeLocation","estree","superClass","parse","file","optionFlags","parseRegExpLiteral","pattern","flags","regex","RegExp","estreeParseLiteral","parseBigIntLiteral","bigInt","BigInt","bigint","parseDecimalLiteral","decimal","parseLiteral","parseStringLiteral","parseNumericLiteral","parseNullLiteral","parseBooleanLiteral","estreeParseChainExpression","endLoc","chain","startNodeAtNode","expression","finishNodeAt","directiveToStmt","directive","castNodeTo","raw","extra","expressionValue","stmt","rawValue","fillOptionalPropertiesForTSESLint","cloneEstreeStringLiteral","range","cloned","create","prototype","initFunction","isAsync","checkDeclaration","isObjectProperty","getObjectOrClassMethodParams","method","params","isValidDirective","_stmt$expression$extr","parenthesized","parseBlockBody","allowDirectives","topLevel","afterBlockParse","directiveStatements","directives","d","body","concat","parsePrivateName","getPluginOption","convertPrivateNameToPrivateIdentifier","getPrivateNameSV","id","isPrivateName","parseFunctionBody","allowExpression","isMethod","parseMethod","isGenerator","isConstructor","allowDirectSuper","inClassScope","funcNode","startNode","typeParameters","resetStartLocationFromNode","valueNode","computed","shorthand","finishNode","nameIsConstructor","parseClassProperty","args","propertyNode","parseClassPrivateProperty","parseClassAccessorProperty","accessorPropertyNode","abstract","hasPlugin","parseObjectProperty","prop","startLoc","isPattern","refExpressionErrors","finishObjectProperty","isValidLVal","isUnparenthesizedInAssign","binding","isAssignable","isBinding","toAssignable","isLHS","classScope","usePrivateName","toAssignableObjectExpressionProp","isLast","raise","finishCallExpression","unfinished","optional","callee","source","arguments","_ref2","attributes","toReferencedArguments","parseExport","decorators","exportStartLoc","state","lastTokStartLoc","exported","specifiers","length","_declaration$decorato","declaration","resetStartLocation","stopParseSubscript","base","optionalChainMember","parseMember","isOptionalMemberExpression","hasPropertyAsPrivateName","isObjectMethod","result","cloneIdentifier","cloneStringLiteral","resetEndLocation","lastTokEndLoc","TokContext","preserveSpace","types","brace","j_oTag","j_cTag","j_expr","beforeExpr","startsExpr","isLoop","isAssign","postfix","ExportedTokenType","label","conf","rightAssociative","binop","updateContext","keywords","Map","createKeyword","createToken","createBinop","tokenTypeCounter","tokenTypes","tokenLabels","tokenBinops","tokenBeforeExprs","tokenStartsExprs","tokenPrefixes","_options$binop","_options$beforeExpr","_options$startsExpr","_options$prefix","push","createKeywordLike","_options$binop2","_options$beforeExpr2","_options$startsExpr2","_options$prefix2","tt","bracketL","bracketHashL","bracketBarL","bracketR","bracketBarR","braceL","braceBarL","braceHashL","braceR","braceBarR","parenL","parenR","comma","semi","colon","doubleColon","dot","question","questionDot","arrow","ellipsis","backQuote","dollarBraceL","templateTail","templateNonTail","at","hash","interpreterDirective","eq","slashAssign","xorAssign","moduloAssign","incDec","bang","tilde","doubleCaret","doubleAt","pipeline","nullishCoalescing","logicalOR","logicalAND","bitwiseOR","bitwiseXOR","bitwiseAND","equality","lt","gt","relational","bitShift","bitShiftL","bitShiftR","plusMin","modulo","star","slash","exponent","_in","_instanceof","_break","_case","_catch","_continue","_debugger","_default","_else","_finally","_function","_if","_return","_switch","_throw","_try","_var","_const","_with","_new","_this","_super","_class","_extends","_export","_import","_null","_true","_false","_typeof","_void","_delete","_do","_for","_while","_as","_assert","_async","_await","_defer","_from","_get","_let","_meta","_of","_sent","_set","_source","_static","_using","_yield","_asserts","_checks","_exports","_global","_implements","_intrinsic","_infer","_is","_mixins","_proto","_require","_satisfies","_keyof","_readonly","_unique","_abstract","_declare","_enum","_module","_namespace","_interface","_type","_opaque","placeholder","string","num","regexp","privateName","eof","jsxName","jsxText","jsxTagStart","jsxTagEnd","tokenIsIdentifier","tokenKeywordOrIdentifierIsKeyword","tokenIsKeywordOrIdentifier","tokenIsLiteralPropertyName","tokenComesBeforeExpression","tokenCanStartExpression","tokenIsAssignment","tokenIsFlowInterfaceOrTypeOrOpaque","tokenIsLoop","tokenIsKeyword","tokenIsOperator","tokenIsPostfix","tokenIsPrefix","tokenIsTSTypeOperator","tokenIsTSDeclarationStart","tokenLabelName","tokenOperatorPrecedence","tokenIsRightAssociative","tokenIsTemplate","getExportedToken","context","pop","tc","nonASCIIidentifierStartChars","nonASCIIidentifierChars","nonASCIIidentifierStart","nonASCIIidentifier","astralIdentifierStartCodes","astralIdentifierCodes","isInAstralSet","i","isIdentifierStart","test","fromCharCode","isIdentifierChar","reservedWords","strict","strictBind","reservedWordsStrictSet","reservedWordsStrictBindSet","isReservedWord","word","inModule","isStrictReservedWord","has","isStrictBindOnlyReservedWord","isStrictBindReservedWord","isKeyword","isIteratorStart","current","next","next2","reservedWordLikeSet","canBeReservedWord","Scope","names","firstLexicalName","ScopeHandler","parser","scopeStack","undefinedExports","inTopLevel","currentScope","inFunction","currentVarScopeFlags","allowSuper","currentThisScopeFlags","allowNewTarget","inClass","inClassAndNotInNonArrowFunction","inStaticBlock","ScopeFlag","inNonArrowFunction","inBareCaseStatement","treatFunctionsAsVar","treatFunctionsAsVarInScope","createScope","enter","exit","scope","declareName","bindingType","checkRedeclarationInScope","maybeExportDefined","delete","isRedeclaredInScope","checkLocalExport","FlowScope","declareFunctions","FlowScopeHandler","add","reservedTypes","FlowErrors","AmbiguousConditionalArrow","AmbiguousDeclareModuleKind","AssignReservedType","reservedType","DeclareClassElement","DeclareClassFieldInitializer","DuplicateDeclareModuleExports","EnumBooleanMemberNotInitialized","memberName","enumName","EnumDuplicateMemberName","EnumInconsistentMemberValues","EnumInvalidExplicitType","invalidEnumType","EnumInvalidExplicitTypeUnknownSupplied","EnumInvalidMemberInitializerPrimaryType","explicitType","EnumInvalidMemberInitializerSymbolType","EnumInvalidMemberInitializerUnknownType","EnumInvalidMemberName","suggestion","EnumNumberMemberNotInitialized","EnumStringMemberInconsistentlyInitialized","GetterMayNotHaveThisParam","ImportReflectionHasImportType","ImportTypeShorthandOnlyInPureImport","InexactInsideExact","InexactInsideNonObject","InexactVariance","InvalidNonTypeImportInDeclareModule","MissingTypeParamDefault","NestedDeclareModule","NestedFlowComment","PatternIsOptional","SetterMayNotHaveThisParam","SpreadVariance","ThisParamAnnotationRequired","ThisParamBannedInConstructor","ThisParamMayNotBeOptional","ThisParamMustBeFirst","ThisParamNoDefault","TypeBeforeInitializer","TypeCastInPattern","UnexpectedExplicitInexactInObject","UnexpectedReservedType","UnexpectedReservedUnderscore","UnexpectedSpaceBetweenModuloChecks","UnexpectedSpreadType","UnexpectedSubtractionOperand","UnexpectedTokenAfterTypeParameter","UnexpectedTypeParameterBeforeAsyncArrowFunction","UnsupportedDeclareExportKind","unsupportedExportKind","UnsupportedStatementInDeclareModule","UnterminatedFlowComment","isEsModuleType","bodyElement","hasTypeImportKind","importKind","exportSuggestions","const","let","interface","partition","list","list1","list2","FLOW_PRAGMA_REGEX","flow","flowPragma","getScopeHandler","shouldParseTypes","finishToken","val","addComment","comment","matches","exec","flowParseTypeInitialiser","tok","oldInType","inType","expect","flowParseType","flowParsePredicate","moduloLoc","expectContextual","eat","parseExpression","flowParseTypeAndPredicateInitialiser","predicate","match","flowParseDeclareClass","flowParseInterfaceish","flowParseDeclareFunction","parseIdentifier","typeNode","typeContainer","flowParseTypeParameterDeclaration","tmp","flowParseFunctionTypeParams","this","returnType","typeAnnotation","semicolon","flowParseDeclare","insideModule","flowParseDeclareVariable","eatContextual","flowParseDeclareModuleExports","flowParseDeclareModule","isContextual","flowParseDeclareTypeAlias","flowParseDeclareOpaqueType","flowParseDeclareInterface","flowParseDeclareExportDeclaration","flowParseTypeAnnotatableIdentifier","parseExprAtom","bodyNode","parseImport","hasModuleExport","forEach","default","isLet","exportKind","flowParseTypeAnnotation","finished","flowParseTypeAlias","flowParseOpaqueType","isClass","flowParseRestrictedIdentifier","extends","flowParseInterfaceExtends","implements","mixins","flowParseObjectType","allowStatic","allowExact","allowSpread","allowProto","allowInexact","flowParseQualifiedTypeIdentifier","flowParseTypeParameterInstantiation","flowParseInterface","checkNotUnderscore","checkReservedType","liberal","right","declare","supertype","impltype","flowParseTypeParameter","requireDefault","nodeStartLoc","variance","flowParseVariance","ident","bound","defaultRequired","typeParameter","flowInTopLevelContext","cb","curContext","oldContext","flowParseTypeParameterInstantiationInExpression","reScan_lt","oldNoAnonFunctionType","noAnonFunctionType","reScan_lt_gt","flowParseTypeParameterInstantiationCallOrNew","flowParseTypeOrImplicitInstantiation","flowParseInterfaceType","flowParseObjectPropertyKey","flowParseObjectTypeIndexer","isStatic","static","lookahead","flowParseObjectTypeInternalSlot","flowParseObjectTypeMethodish","startNodeAt","flowParseFunctionTypeParam","flowParseObjectTypeCallProperty","nodeStart","callProperties","properties","indexers","internalSlots","endDelim","exact","inexact","protoStartLoc","inexactStartLoc","propOrInexact","flowParseObjectTypeProperty","flowObjectTypeSemicolon","out","proto","flowCheckGetterSetterParams","property","paramCount","node2","qualification","flowParseGenericType","flowParseTypeofType","flowParsePrimaryType","flowParseTupleType","first","lh","isThis","reinterpretTypeAsFunctionTypeParam","flowIdentToTypeAnnotation","isGroupedType","parseLiteralAtNode","createIdentifier","flowParsePostfixType","seenOptionalIndexedAccess","canInsertSemicolon","elementType","objectType","indexType","flowParsePrefixType","flowParseAnonFunctionWithoutParens","param","flowParseIntersectionType","flowParseUnionType","allowPrimitiveOverride","typeCastToParameter","allowExpressionBody","forwardNoArrowParamsConversionAt","parseFunctionBodyAndFinish","parseStatementLike","flowParseEnumDeclaration","parseExpressionStatement","expr","shouldParseExportDeclaration","containsEsc","isExportDefaultSpecifier","parseExportDefaultExpression","parseConditional","maybeInArrowParameters","nextCh","lookaheadCharCode","setOptionalParametersError","clone","originalNoArrowAt","noArrowAt","consequent","failed","tryParseConditionalConsequent","valid","invalid","getArrowLikeExpressions","alternate","parseMaybeAssign","noArrowParamsConversionAt","parseMaybeAssignAllowIn","disallowInvalid","stack","arrows","finishArrowValidation","every","_node$extra","toAssignableList","trailingCommaLoc","checkParams","includes","offsetToSourcePos","parseParenItem","newNode","typeCastNode","assertModuleNodeAllowed","parseExportDeclaration","declarationNode","parseExportSpecifiers","parseExportFrom","eatExportStar","maybeParseExportNamespaceSpecifier","hasNamespace","parseClassId","isStatement","optionalId","parseClassMember","classBody","member","parseClassMemberFromModifier","isIterator","readIterator","readWord1","fullWord","curPosition","getTokenFromCode","input","charCodeAt","finishOp","left","exprList","toReferencedList","isParenthesizedExpr","_expr$extra","parseArrayLike","close","canBePattern","isTuple","elements","isParenthesized","isClassMethod","isClassProperty","isNonstaticConstructor","pushClassMethod","allowsDirectSuper","isThisParam","pushClassPrivateMethod","parseClassSuper","superTypeParameters","implemented","checkGetterSetterParams","parsePropertyNamePrefixOperator","parseObjPropValue","isAccessor","parseFunctionParamType","parseMaybeDefault","checkImportReflection","module","parseImportSpecifierLocal","specifier","local","finishImportSpecifier","isPotentialImportPhase","isExport","ch","applyImportPhase","phase","parseImportSpecifier","importedIsString","isInTypeOnlyImport","isMaybeTypeOnly","firstIdent","imported","specifierTypeKind","isLookaheadContextual","as_ident","specifierIsTypeImport","checkReservedWord","parseBindingAtom","parseFunctionParams","parseVarId","decl","parseAsyncArrowFromCallExpression","call","shouldParseAsyncArrow","afterLeftParse","_jsx","jsx","tryParse","currentContext","_jsx2","_jsx3","abort","_arrowExpression$extr","arrowExpression","maybeUnwrapTypeCastExpression","aborted","async","failState","thrown","parseArrow","shouldParseArrow","setArrowFunctionParameters","allowDuplicates","isArrowFunction","strictModeChanged","parseParenAndDistinguishExpression","canBeArrow","sourceToOffsetPos","parseSubscripts","noCalls","parseCallExpressionArguments","parseAsyncArrowWithTypeParameters","parseSubscript","subscriptState","isLookaheadToken_lt","stop","typeArguments","parseNewCallee","targs","parseArrowExpression","readToken_mult_modulo","hasFlowComment","nextToken","readToken_pipe_amp","parseTopLevel","program","fileNode","skipBlockComment","skipFlowComment","hasFlowCommentCompletion","commentSkip","shiftToFirstNonWhiteSpace","ch2","ch3","slice","indexOf","flowEnumErrorBooleanMemberNotInitialized","flowEnumErrorInvalidMemberInitializer","enumContext","flowEnumErrorNumberMemberNotInitialized","flowEnumErrorStringMemberInconsistentlyInitialized","flowEnumMemberInit","endOfInit","literal","flowEnumMemberRaw","init","flowEnumCheckExplicitTypeMismatch","expectedType","flowEnumMembers","seenNames","members","booleanMembers","numberMembers","stringMembers","defaultedMembers","hasUnknownMembers","memberNode","toUpperCase","flowEnumStringMembers","initializedMembers","flowEnumParseExplicitType","flowEnumBody","nameLoc","empty","boolsLen","numsLen","strsLen","defaultedLen","jsxParseOpeningElementAfterName","nextTokenStart","afterNext","readToken_lt","readToken_gt","entities","__proto__","quot","amp","apos","nbsp","iexcl","cent","pound","curren","yen","brvbar","sect","uml","copy","ordf","laquo","not","shy","reg","macr","deg","plusmn","sup2","sup3","acute","micro","para","middot","cedil","sup1","ordm","raquo","frac14","frac12","frac34","iquest","Agrave","Aacute","Acirc","Atilde","Auml","Aring","AElig","Ccedil","Egrave","Eacute","Ecirc","Euml","Igrave","Iacute","Icirc","Iuml","ETH","Ntilde","Ograve","Oacute","Ocirc","Otilde","Ouml","times","Oslash","Ugrave","Uacute","Ucirc","Uuml","Yacute","THORN","szlig","agrave","aacute","acirc","atilde","auml","aring","aelig","ccedil","egrave","eacute","ecirc","euml","igrave","iacute","icirc","iuml","eth","ntilde","ograve","oacute","ocirc","otilde","ouml","divide","oslash","ugrave","uacute","ucirc","uuml","yacute","thorn","yuml","OElig","oelig","Scaron","scaron","Yuml","fnof","circ","Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega","alpha","beta","gamma","delta","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","omicron","pi","rho","sigmaf","sigma","tau","upsilon","phi","chi","psi","omega","thetasym","upsih","piv","ensp","emsp","thinsp","zwnj","zwj","lrm","rlm","ndash","mdash","lsquo","rsquo","sbquo","ldquo","rdquo","bdquo","dagger","Dagger","bull","hellip","permil","prime","Prime","lsaquo","rsaquo","oline","frasl","euro","image","weierp","real","trade","alefsym","larr","uarr","rarr","darr","harr","crarr","lArr","uArr","rArr","dArr","hArr","forall","part","exist","nabla","isin","notin","ni","prod","sum","minus","lowast","radic","infin","ang","and","or","cap","cup","int","there4","sim","cong","asymp","ne","equiv","le","ge","sub","sup","nsub","sube","supe","oplus","otimes","perp","sdot","lceil","rceil","lfloor","rfloor","lang","rang","loz","spades","clubs","hearts","diams","lineBreak","lineBreakG","isNewLine","hasNewLine","skipWhiteSpace","skipWhiteSpaceInLine","isWhitespace","JsxErrors","AttributeIsEmpty","MissingClosingTagElement","openingTagName","MissingClosingTagFragment","UnexpectedSequenceExpression","HTMLEntity","UnsupportedJsxValue","UnterminatedJsxContent","UnwrappedAdjacentJSXElements","isFragment","getQualifiedJSXName","namespace","jsxReadToken","chunkStart","canStartJSXElement","jsxReadEntity","jsxReadNewLine","normalizeCRLF","curLine","lineStart","jsxReadString","quote","startPos","codePointAtPos","codePoint","readInt","count","desc","entity","XHTMLEntities","jsxReadWord","jsxParseIdentifier","jsxParseNamespacedName","jsxParseElementName","jsxParseAttributeValue","setContext","jsxParseExpressionContainer","jsxParseEmptyExpression","jsxParseSpreadChild","previousContext","jsxParseAttribute","jsxParseOpeningElementAt","selfClosing","jsxParseClosingElementAt","jsxParseElementAt","children","openingElement","closingElement","contents","openingFragment","closingFragment","jsxParseElement","newContext","replaceToken","skipSpace","prevType","splice","TypeScriptScope","tsNames","TypeScriptScopeHandler","importsStack","hasImport","allowShadow","len","isConst","wasConst","ProductionParameterHandler","stacks","currentFlags","hasAwait","hasYield","hasReturn","hasIn","functionFlags","BaseParser","sawUnambiguousESM","ambiguousScriptDifferentAst","sourcePos","offsetPos","pluginConfig","pluginName","pluginOptions","actualOptions","plugin","_this$plugins$get","setTrailingComments","comments","trailingComments","unshift","setLeadingComments","leadingComments","setInnerComments","innerComments","adjustInnerComments","commentWS","lastElement","CommentsParser","commentsLen","processComment","commentStack","commentStackLength","lastCommentWS","leadingNode","commentEnd","containingNode","finalizeComment","trailingNode","_node$options","commentStart","finalizeRemainingComments","resetPreviousNodeTrailingComments","takeSurroundingComments","State","errors","potentialArrowAt","topicContext","maxNumOfResolvableTopics","maxTopicIndex","labels","ct","firstInvalidTemplateEscapePos","strictErrors","tokensLength","v","isAmbientContext","inAbstractClass","inDisallowConditionalTypesContext","soloAwait","inFSharpPipelineDirectBody","hasTopLevelAwait","forbiddenNumericSeparatorSiblings","decBinOct","hex","isAllowedNumericSeparatorSibling","bin","oct","dec","readStringContents","initialPos","initialLineStart","initialCurLine","firstInvalidLoc","unterminated","isStringEnd","res","readEscapedChar","str","containsInvalid","inTemplate","throwOnInvalid","readHexChar","readCodePoint","strictNumericEscape","octalStr","octal","parseInt","forceLen","n","invalidEscapeSequence","allowNumSeparator","bailOnError","forbiddenSiblings","isAllowedSibling","total","e","Infinity","prev","Number","isNaN","unexpectedNumericSeparator","numericSeparatorInEscapeSequence","_isDigit","invalidDigit","invalidCodePoint","buildPosition","VALID_REGEX_FLAGS","Token","Tokenizer","isLookahead","errorHandlers_readInt","errorBuilder","errorHandlers_readCodePoint","errorHandlers_readStringContents_string","recordStrictModeErrors","errorHandlers_readStringContents_template","pushToken","checkKeywordEscapes","createLookaheadState","old","curr","nextTokenStartSince","lastIndex","lookaheadCharCodeSince","nextTokenInLineStart","nextTokenInLineStartSince","lookaheadInLineCharCode","cp","trail","setStrict","toParseError","clear","skipLineComment","startSkip","spaceStart","loop","commentWhitespace","readToken_numberSign","readToken_interpreter","nextPos","expectPlugin","readToken_dot","readNumber","readToken_slash","width","readToken_caret","proposal","topicToken","codePointAt","readToken_atSign","readToken_plus_min","size","readToken_eq_excl","readToken_question","readTemplateToken","readRadixNumber","readString","readWord","readRegexp","escaped","content","mods","char","isBigInt","replace","startsWithDot","isFloat","hasExponent","isOctal","hasLeadingZero","integer","underscorePos","isDecimal","parseFloat","readTemplateContinuation","opening","firstCode","escStart","identifierCheck","esc","keywordTypes","raiseOverwrite","expectOnePlugin","pluginNames","some","ClassScope","privateNames","loneAccessors","undefinedPrivateNames","ClassScopeHandler","oldClassScope","from","declarePrivateName","redefined","accessor","oldStatic","newStatic","oldKind","newKind","ExpressionScope","canBeArrowParameterDeclaration","isCertainlyParameterDeclaration","ArrowHeadParsingScope","declarationErrors","recordDeclarationError","ParsingErrorClass","clearDeclarationError","iterateErrors","iterator","ExpressionScopeHandler","recordParameterInitializerError","origin","recordArrowParameterBindingError","recordAsyncArrowParametersError","validateAsPattern","newParameterDeclarationScope","newArrowHeadScope","newAsyncArrowScope","newExpressionScope","UtilParser","addExtra","isUnparsedContextual","nameStart","startsWith","hasPrecedingLineBreak","hasFollowingLineBreak","isLineTerminator","allowAsi","fn","oldState","abortSignal","checkExpressionErrors","andThrow","shorthandAssignLoc","doubleProtoLoc","privateKeyLoc","optionalParametersLoc","voidPatternLoc","hasErrors","isLiteralPropertyName","initializeScopes","oldLabels","oldExportedIdentifiers","exportedIdentifiers","oldInModule","oldScope","oldProdParam","prodParam","oldExpressionScope","expressionScope","enterInitialScopes","paramFlags","isCommonJS","scopeFlags","checkDestructuringPrivate","ExpressionErrors","Node","NodePrototype","__clone","NodeUtils","locationNode","unwrapParenthesizedExpression","LValParser","_node$extra3","last","_node$extra2","operator","arg","checkToRestConversion","elt","toAssignableListItem","element","toReferencedListDeep","parseSpread","parseRestBinding","parseBindingList","ParseBindingListFlags","parseObjectLike","parseVoidPattern","closeCharCode","allowEmpty","elts","checkCommaAfterRest","parseDecorator","parseBindingElement","parseBindingRestProperty","parseBindingProperty","parsePropertyName","checkLVal","checkClashes","hasParenthesizedAncestor","_expression$extra","checkIdentifier","validity","ParseErrorClass","isParenthesizedExpression","nextAncestor","child","declareNameFromIdentifier","identifier","allowPattern","nonNull","x","assert","TSErrors","AbstractMethodHasImplementation","methodName","AbstractPropertyHasInitializer","propertyName","AccessorCannotBeOptional","ClassMethodHasDeclare","ClassMethodHasReadonly","ConstructorHasTypeParameters","DeclareAccessor","DeclareClassFieldHasInitializer","DeclareFunctionHasImplementation","DuplicateAccessibilityModifier","modifier","DuplicateModifier","EmptyHeritageClauseType","EmptyTypeArguments","EmptyTypeParameters","ExpectedAmbientAfterExportDeclare","ImportAliasHasImportType","IncompatibleModifiers","modifiers","IndexSignatureHasAbstract","IndexSignatureHasAccessibility","IndexSignatureHasDeclare","IndexSignatureHasOverride","IndexSignatureHasStatic","InitializerNotAllowedInAmbientContext","InvalidHeritageClauseType","InvalidModifierOnAwaitUsingDeclaration","InvalidModifierOnTypeMember","InvalidModifierOnTypeParameter","InvalidModifierOnTypeParameterPositions","InvalidModifierOnUsingDeclaration","InvalidModifiersOrder","orderedModifiers","InvalidPropertyAccessAfterInstantiationExpression","InvalidTupleMemberLabel","MissingInterfaceName","NonAbstractClassHasAbstractMethod","NonClassMethodPropertyHasAbstractModifier","OptionalTypeBeforeRequired","OverrideNotInSubClass","PrivateElementHasAbstract","PrivateElementHasAccessibility","ReadonlyForMethodSignature","ReservedArrowTypeParam","ReservedTypeAssertion","SingleTypeParameterWithoutTrailingComma","typeParameterName","StaticBlockCannotHaveModifier","TupleOptionalAfterType","TypeAnnotationAfterAssign","TypeImportCannotSpecifyDefaultAndNamed","TypeModifierIsUsedInTypeExports","TypeModifierIsUsedInTypeImports","UnexpectedParameterModifier","UnexpectedReadonly","UnexpectedTypeAnnotation","UnexpectedTypeCastInParameter","UnsupportedImportTypeArgument","UnsupportedParameterPropertyKind","UnsupportedSignatureParameterKind","UsingDeclarationInAmbientContext","keywordTypeFromName","tsIsAccessModifier","tsIsVarianceAnnotations","typescript","tsParseInOutModifiers","tsParseModifiers","bind","allowedModifiers","disallowedModifiers","errorTemplate","tsParseConstModifier","tsParseInOutConstModifiers","tsIsIdentifier","tsTokenCanFollowModifier","tsNextTokenOnSameLineAndCanFollowModifier","tsNextTokenCanFollowModifier","tsParseModifier","stopOnStartOfClassStaticBlock","hasSeenStaticModifier","tsIsStartOfStaticBlocks","tsTryParse","modified","enforceOrder","before","after","incompatible","mod1","mod2","accessibility","hasOwnProperty","tsIsListTerminator","tsParseList","parseElement","tsParseDelimitedList","refTrailingCommaPos","tsParseDelimitedListWorker","expectSuccess","trailingCommaPos","tsParseBracketedList","bracket","skipFirstToken","tsParseImportType","tsParseImportTypeOptions","qualifier","tsParseEntityName","tsParseEntityNameFlags","tsParseTypeArguments","withProperty","tsParseImportTypeWithPropertyValue","parsePropertyDefinition","tsParseTypeReference","typeName","tsParseThisTypePredicate","lhs","parameterName","tsParseTypeAnnotation","asserts","tsParseThisTypeNode","tsParseTypeQuery","exprName","tsParseTypeParameter","parseModifiers","tsParseTypeParameterName","constraint","tsEatThenParseType","tsTryParseTypeParameters","tsParseTypeParameters","tsFillSignature","returnToken","signature","returnTokenRequired","paramsKey","returnTypeKey","tsParseBindingListForSignature","tsParseTypeOrTypePredicateAnnotation","tsParseTypeMemberSemicolon","tsParseSignatureMember","tsIsUnambiguouslyIndexSignature","tsTryParseIndexSignature","tsLookAhead","parameters","tsTryParseTypeAnnotation","tsParsePropertyOrMethodSignature","readonly","firstParameter","tsParseTypeMember","idx","tsParseTypeLiteral","tsParseObjectTypeMembers","tsIsStartOfMappedType","tsParseMappedType","tsExpectThenParseType","nameType","tsParseType","tsTryParseType","tsParseTupleType","elementTypes","tsParseTupleElementType","seenOptionalElement","elementNode","restStartLoc","labeled","chAfterWord","wordName","typeOrLabel","tsParseNonArrayType","labeledNode","optionalTypeNode","restNode","tsParseParenthesizedType","tsParseFunctionOrConstructorType","tsInAllowConditionalTypesContext","tsParseLiteralTypeNode","tsParseTemplateLiteralType","parseTemplate","parseTemplateSubstitution","tsParseThisTypeOrThisTypePredicate","thisKeyword","parseMaybeUnary","nodeType","tsParseArrayTypeOrHigher","tsParseTypeOperator","tsParseTypeOperatorOrHigher","tsCheckTypeAnnotationForReadOnly","tsParseInferType","tsParseConstraintForInferType","tsInDisallowConditionalTypesContext","tsParseUnionOrIntersectionType","parseConstituentType","hasLeadingOperator","tsParseIntersectionTypeOrHigher","tsParseUnionTypeOrHigher","tsIsStartOfFunctionType","tsIsUnambiguouslyStartOfFunctionType","tsSkipParameterStart","previousErrorCount","tsInType","t","tsParseTypePredicateAsserts","thisTypePredicate","typePredicateVariable","tsParseTypePredicatePrefix","tsTryParseTypeOrTypePredicateAnnotation","eatColon","tsParseNonConditionalType","checkType","extendsType","trueType","falseType","isAbstractConstructorSignature","tsParseTypeAssertion","tsParseHeritageClause","originalStartLoc","delimitedList","tsParseInterfaceDeclaration","tsParseTypeAliasDeclaration","tsInTopLevelContext","oldInDisallowConditionalTypesContext","tsNextThenParseType","tsParseEnumMember","initializer","tsParseEnumDeclaration","tsParseEnumBody","tsParseModuleBlock","parseBlockOrModuleBlockBody","tsParseModuleOrNamespaceDeclaration","nested","inner","tsParseAmbientExternalModuleDeclaration","global","tsParseImportEqualsDeclaration","maybeDefaultIdentifier","moduleReference","tsParseModuleReference","tsIsExternalModuleReference","tsParseExternalModuleReference","f","tsTryParseAndCatch","tsTryParseDeclare","startType","tsInAmbientContext","parseFunctionStatement","parseClass","parseVarStatement","isUsing","isAwaitUsing","tsParseDeclaration","tsTryParseExportDeclaration","tsParseExpressionStatement","mod","tsCheckLineTerminator","tsParseAbstractDeclaration","tsTryParseGenericAsyncArrowFunction","oldMaybeInArrowParameters","tsParseTypeArgumentsInExpression","tsIsDeclarationStart","override","pp","parameter","isSimpleParameter","tsDisallowOptionalPattern","bodilessType","registerFunctionStatementId","tsCheckForInvalidTypeCasts","items","isInParens","nonNullExpression","isOptionalCall","missingParenErrorLoc","atPossibleAsyncArrow","asyncArrowFn","parseTaggedTemplateExpression","tokenType","_callee$extra","parseExprOp","leftStartLoc","minPrec","isSatisfies","checkKeywords","checkDuplicateExports","importNode","parseMaybeImportPhase","parseImportSpecifiersAndAfter","nodeImportEquals","isAbstractClass","cls","allowMissingInitializer","declarations","isValidAmbientConstInitializer","parseStatementContent","parseAccessModifier","tsHasSomeModifiers","callParseClassMemberWithIsStatic","parseClassStaticBlock","parseClassMemberWithIsStatic","hadSuperClass","parsePostMemberNameModifiers","methodOrProp","isDeclare","parseClassPropertyAnnotation","definite","declareClassPrivateMethodInScope","_typeCast","_typeCast2","typeCast","_typeParameters","reportReservedArrowTypeParam","trailingComma","sawUnary","toAssignableParenthesizedExpression","parseMaybeDecoratorArguments","canHaveLeadingDecorator","getGetterSetterExpectedParamCount","baseCount","firstParam","parseCatchClauseParam","oldIsAmbientContext","oldStrict","oldInAbstractClass","maybeTakeDecorators","shouldParseAsAmbientContext","getExpression","parseExportSpecifier","isString","isInTypeExport","parseTypeOnlyImportExportSpecifier","isImport","isInTypeOnlyImportExport","leftOfAsKey","rightOfAsKey","leftOfAs","rightOfAs","hasTypeSpecifier","canParseAsKeyword","firstAs","secondAs","parseModuleExportName","kindKey","_node$directive","_node$decorators","_node$optional","_node$typeAnnotation","_node$accessibility","_node$decorators2","_node$override","_node$readonly","_node$static","_node$declare","_node$returnType","_node$typeParameters","_node$optional2","_node$optional3","_node$accessibility2","_node$readonly2","_node$static2","_node$declare2","_node$definite","_node$readonly3","_node$typeAnnotation2","_node$accessibility3","_node$decorators3","_node$override2","_node$optional4","_node$id","_node$abstract","_node$declare3","_node$decorators4","_node$implements","_node$superTypeArgume","_node$typeParameters2","_node$declare4","_node$definite2","_node$const","_node$declare5","_node$computed","_node$qualifier","_node$declare6","_node$extends","_node$declare7","_node$global","_node$const2","_node$in","_node$out","superTypeArguments","in","isPossiblyLiteralEnum","expressions","isUncomputedMemberExpressionChain","isNumber","isNegativeNumber","PlaceholderErrors","ClassNameIsRequired","UnexpectedSpace","placeholders","parsePlaceholder","expectedNode","assertNoSpace","finishPlaceholder","chStartsBindingIdentifier","verifyBreakContinue","isBreak","parseStatementOrSloppyAnnexBFunctionDeclaration","stmtPlaceholder","parseBlock","createNewLexicalScope","parseFunctionId","requireId","parseClassBody","maybeParseExportDefaultSpecifier","_specifiers","checkExport","filter","maybeParseStarImportSpecifier","parseNamedImportSpecifiers","parseImportSource","v8intrinsic","parseV8Intrinsic","v8IntrinsicStartLoc","parseIdentifierName","PIPELINE_PROPOSALS","TOPIC_TOKENS","validatePlugins","pluginsMap","decoratorsBeforeExport","allowCallParenthesized","_pluginsMap$get2","proposalList","p","tokenList","_pluginsMap$get","syntaxType","version","deprecatedAssertSyntax","RECORD_AND_TUPLE_SYNTAX_TYPES","missingPlugins","mixinPlugins","mixinPluginNames","ExpressionParser","checkProto","isRecord","sawProto","shouldExitDescending","disallowIn","disallowInAnd","parseExpressionBase","allowInAnd","parseMaybeAssignDisallowIn","isYield","parseYield","ownExpressionErrors","parseMaybeConditional","isAmbiguousPrefixOrIdentifier","parseExprOps","parseMaybeUnaryOrPrivate","op","prec","checkPipelineAtInfixOperator","logical","coalesce","parseExprOpRightExpr","finishedNode","nextOp","withTopicBindingContext","parseHackPipeBody","withSoloAwaitPermittingContext","parseFSharpPipelineBody","parseSmartPipelineBodyInStyle","parseExprOpBaseRightExpr","_body$extra","topicReferenceWasUsedInCurrentContext","checkExponentialAfterUnary","isAwait","recordAwaitIfAllowed","parseAwait","update","isDelete","parseUpdate","updateExpressionNode","parseExprSubscripts","maybeAsyncArrow","parseBind","parseCoverCallAndAsyncArrowHead","parseNoCallExpr","tag","quasi","allowPlaceholder","nodeForExtra","oldInFSharpPipelineDirectBody","addTrailingCommaExtraToNode","parseExprListItem","_call$extra","parseSuper","parseImportMetaPropertyOrPhaseCall","parseImportCall","parseDo","parseFunctionOrFunctionSent","parseDecorators","parseNewOrNewTarget","parseTopicReferenceThenEqualsSign","parseTopicReference","pipeProposal","lookaheadCh","parseModuleExpression","parseAsyncFunctionExpression","parseAsyncArrowUnaryFunction","topicTokenType","topicTokenValue","finishTopicReference","testTopicReferenceConfiguration","topicReferenceIsAllowedInCurrentContext","registerTopicReference","meta","parseMetaProperty","parseFunction","isSource","createIdentifierAt","innerStartLoc","spreadStartLoc","optionalCommaStartLoc","spreadNodeStartLoc","parseMaybeAssignAllowInOrVoidPattern","innerEndLoc","arrowNode","wrapParenthesis","parenExpression","metaProp","parseNew","parseExprList","parseTemplateElement","isTagged","elemStart","elem","isTail","endOffset","elemEnd","cooked","tail","curElt","quasis","substitutions","maybeAsyncOrAccessorProp","keyName","_params","parseObjectMethod","finishedProp","generator","isExpression","hasStrictModeDirective","nonSimple","isSimpleParamList","formalParameters","isAwaitAllowed","delegating","delegate","childExpr","isSimpleReference","checkSmartPipeTopicBodyEarlyErrors","callback","outerContextTopicState","withSmartMixTopicForbiddingContext","outerContextSoloAwaitState","ParamKind","ret","revertScopes","parseProgram","nextCode","loopLabel","switchLabel","loneSurrogate","keywordRelationalOperator","babel7CompatTokens","hashEndPos","hashEndLoc","backquoteEnd","backquoteEndLoc","startToken","templateValue","templateElementEnd","templateElementEndLoc","endToken","StatementParser","interpreter","parseInterpreterDirective","finishedProgram","stmtToDirective","directiveLiteral","hasFollowingBindingAtom","isForUsing","nextCharAfterOf","endCh","chStartsBindingPattern","hasInLineFollowingBindingIdentifierOrBrace","allowsUsing","parseModuleItem","ParseStatementFlag","parseStatementListItem","allowLabeledFunction","parseStatement","allowDeclaration","allowFunctionDeclaration","parseBreakContinueStatement","parseDebuggerStatement","parseDoWhileStatement","parseForStatement","parseIfStatement","parseReturnStatement","parseSwitchStatement","parseThrowStatement","parseTryStatement","parseWhileStatement","parseWithStatement","parseEmptyStatement","nextTokenCharCode","isAsyncFunction","maybeName","parseLabeledStatement","decoratorsEnabledBeforeExport","maybeDecorators","classNode","exportNode","_classNode$decorators","allowExport","paramsStartLoc","lab","parseHeaderExpression","awaitAt","parseFor","startsWithLet","startsWithAwaitUsing","starsWithUsingDeclaration","isLetOrUsing","initNode","parseVar","isForIn","parseForIn","startsWithAsync","isForOf","isHangingDeclaration","ParseFunctionFlag","discriminant","cases","cur","sawDefault","isCase","block","handler","clause","finalizer","statementStart","parsedNonDirective","await","isFor","hangingDeclaration","isDeclaration","hadConstructor","publicMethod","privateMethod","publicProp","privateProp","accessorProp","publicMember","parseClassElementName","maybeContextualKw","isPrivate","maybeQuestionTokenStartLoc","pushClassPrivateProperty","pushClassProperty","pushClassAccessorProperty","_member$decorators","parseInitializer","hasDefault","parseAfterDefault","hasStar","parseAfterNamespace","isFromRequired","hasSpecifiers","maybeParseExportNamedSpecifiers","hasDeclaration","maybeParseExportDeclaration","_node2$declaration","_ref$specifiers","isTypeExport","assertions","nextChar","hasFrom","nextAfterFrom","maybeParseImportAttributes","checkJSONModuleImport","checkNames","isDefault","isFrom","_node$specifiers","_declaration$extra","nodes","surrogate","isJSONModuleImport","singleBindingType","_node$assertions","nonDefaultNamedSpecifier","find","phaseIdentifier","phaseIdentifierName","isPrecedingIdImportPhase","parseImportSourceAndAttributes","parseNext","maybeParseDefaultImportSpecifier","_node$specifiers2","parseImportAttributes","attrs","attrNames","parseModuleAttributes","useWith","importSpecifier","Parser","_options","getParser","ast","moduleError","generateExportedTokenTypes","internalTokenTypes","tokTypes","getParserClass","parserClassCache","pluginList","require_estree_walker","__commonJSMin","exports","module","global","factory","WalkerBase","node","parent","prop","index","SyncWalker","enter","leave","_should_skip","_should_remove","_replacement","skipped","removed","key","value","i","AsyncWalker","walk","ast","asyncWalk","require_base64","__commonJSMin","exports","intToCharMap","number","charCode","bigA","bigZ","littleA","littleZ","zero","nine","plus","slash","littleOffset","numberOffset","require_base64_vlq","__commonJSMin","exports","base64","VLQ_BASE_SHIFT","VLQ_BASE","VLQ_BASE_MASK","VLQ_CONTINUATION_BIT","toVLQSigned","aValue","fromVLQSigned","isNegative","shifted","encoded","digit","vlq","aStr","aIndex","aOutParam","strLen","result","shift","continuation","require_util","__commonJSMin","exports","getArg","aArgs","aName","aDefaultValue","urlRegexp","dataUrlRegexp","urlParse","aUrl","match","urlGenerate","aParsedUrl","url","MAX_CACHED_INPUTS","lruMemoize","f","cache","input","i","temp","result","normalize","aPath","path","isAbsolute","parts","start","part","up","join","aRoot","aPathUrl","aRootUrl","joined","relative","level","index","supportsNullProto","obj","identity","s","toSetString","aStr","isProtoString","fromSetString","length","compareByOriginalPositions","mappingA","mappingB","onlyCompareOriginal","cmp","strcmp","compareByOriginalPositionsNoSource","compareByGeneratedPositionsDeflated","onlyCompareGenerated","compareByGeneratedPositionsDeflatedNoLine","aStr1","aStr2","compareByGeneratedPositionsInflated","parseSourceMapInput","str","computeSourceURL","sourceRoot","sourceURL","sourceMapURL","parsed","require_array_set","__commonJSMin","exports","util","has","hasNativeMap","ArraySet","aArray","aAllowDuplicates","set","len","aStr","sStr","isDuplicate","idx","aIdx","require_mapping_list","__commonJSMin","exports","util","generatedPositionAfter","mappingA","mappingB","lineA","lineB","columnA","columnB","MappingList","aCallback","aThisArg","aMapping","require_source_map_generator","__commonJSMin","exports","base64VLQ","util","ArraySet","MappingList","SourceMapGenerator","aArgs","aSourceMapConsumer","generatorOps","sourceRoot","generator","mapping","newMapping","sourceFile","sourceRelative","content","generated","original","source","name","aSourceFile","aSourceContent","aSourceMapPath","newSources","newNames","aGenerated","aOriginal","aSource","aName","message","previousGeneratedColumn","previousGeneratedLine","previousOriginalColumn","previousOriginalLine","previousName","previousSource","result","next","nameIdx","sourceIdx","mappings","i","len","aSources","aSourceRoot","key","map","require_binary_search","__commonJSMin","exports","recursiveSearch","aLow","aHigh","aNeedle","aHaystack","aCompare","aBias","mid","cmp","index","require_quick_sort","__commonJSMin","exports","SortTemplate","comparator","swap","ary","x","y","temp","randomIntInRange","low","high","doQuickSort","p","r","pivotIndex","i","pivot","j","q","cloneSort","template","sortCache","start","require_source_map_consumer","__commonJSMin","exports","util","binarySearch","ArraySet","base64VLQ","quickSort","SourceMapConsumer","aSourceMap","aSourceMapURL","sourceMap","IndexedSourceMapConsumer","BasicSourceMapConsumer","aStr","index","c","aSourceRoot","aCallback","aContext","aOrder","context","order","mappings","sourceRoot","boundCallback","names","sources","sourceMapURL","i","n","mapping","source","aArgs","line","needle","originalLine","originalColumn","version","sourcesContent","file","s","aSource","relativeSource","smc","generatedMappings","destGeneratedMappings","destOriginalMappings","length","srcMapping","destMapping","Mapping","compareGenerated","sortGenerated","array","start","l","a","b","j","generatedLine","previousGeneratedColumn","previousOriginalLine","previousOriginalColumn","previousSource","previousName","cachedSegments","temp","originalMappings","str","segment","end","value","subarrayStart","currentSource","aNeedle","aMappings","aLineName","aColumnName","aComparator","aBias","nextMapping","name","sc","nullOnMissing","url","fileUriAbsPath","sections","lastOffset","offset","offsetLine","offsetColumn","sectionIndex","section","cmp","content","generatedPosition","ret","sectionMappings","adjustedMapping","require_source_node","__commonJSMin","exports","SourceMapGenerator","util","REGEX_NEWLINE","NEWLINE_CODE","isSourceNode","SourceNode","aLine","aColumn","aSource","aChunks","aName","aGeneratedCode","aSourceMapConsumer","aRelativePath","node","remainingLines","remainingLinesIndex","shiftNextLine","lineContents","getNextLine","newLine","lastGeneratedLine","lastGeneratedColumn","lastMapping","mapping","addMappingWithCode","nextLine","code","sourceFile","content","source","aChunk","chunk","i","aFn","len","aSep","newChildren","aPattern","aReplacement","lastChild","aSourceFile","aSourceContent","sources","str","aArgs","generated","map","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","original","idx","length","sourceContent","require_source_map","__commonJSMin","exports","require_compiler_core_cjs_prod","__commonJSMin","exports","shared","decode_js","parser","estreeWalker","sourceMapJs","FRAGMENT","TELEPORT","SUSPENSE","KEEP_ALIVE","BASE_TRANSITION","OPEN_BLOCK","CREATE_BLOCK","CREATE_ELEMENT_BLOCK","CREATE_VNODE","CREATE_ELEMENT_VNODE","CREATE_COMMENT","CREATE_TEXT","CREATE_STATIC","RESOLVE_COMPONENT","RESOLVE_DYNAMIC_COMPONENT","RESOLVE_DIRECTIVE","RESOLVE_FILTER","WITH_DIRECTIVES","RENDER_LIST","RENDER_SLOT","CREATE_SLOTS","TO_DISPLAY_STRING","MERGE_PROPS","NORMALIZE_CLASS","NORMALIZE_STYLE","NORMALIZE_PROPS","GUARD_REACTIVE_PROPS","TO_HANDLERS","CAMELIZE","CAPITALIZE","TO_HANDLER_KEY","SET_BLOCK_TRACKING","PUSH_SCOPE_ID","POP_SCOPE_ID","WITH_CTX","UNREF","IS_REF","WITH_MEMO","IS_MEMO_SAME","helperNameMap","registerRuntimeHelpers","helpers","s","Namespaces","NodeTypes","ElementTypes","ConstantTypes","locStub","createRoot","children","source","createVNodeCall","context","tag","props","patchFlag","dynamicProps","directives","isBlock","disableTracking","isComponent","loc","getVNodeBlockHelper","getVNodeHelper","createArrayExpression","elements","createObjectExpression","properties","createObjectProperty","key","value","createSimpleExpression","content","isStatic","constType","createInterpolation","createCompoundExpression","createCallExpression","callee","args","createFunctionExpression","params","returns","newline","isSlot","createConditionalExpression","test","consequent","alternate","createCacheExpression","index","needPauseTracking","inVOnce","createBlockStatement","body","createTemplateLiteral","createIfStatement","createAssignmentExpression","left","right","createSequenceExpression","expressions","createReturnStatement","ssr","convertToBlock","node","helper","removeHelper","inSSR","defaultDelimitersOpen","defaultDelimitersClose","isTagStartChar","c","isWhitespace","isEndOfTagSection","toCharCodes","str","ret","i","Sequences","Tokenizer","stack","cbs","cp","consumed","line","column","newlineIndex","start","isEnd","endOfText","actualIndex","cc","sequence","offset","quote","length","input","endIndex","CompilerDeprecationTypes","deprecationData","getCompatValue","compatConfig","isCompatEnabled","mode","checkCompatEnabled","warnDeprecation","message","link","msg","err","defaultOnError","error","defaultOnWarn","createCompilerError","code","messages","additionalMessage","errorMessages","ErrorCodes","walkIdentifiers","root","onIdentifier","includeAll","parentStack","knownIds","rootExp","parent","TS_NODE_TYPES","isLocal","isRefed","isReferencedIdentifier","isFunctionType","id","markKnownIds","walkFunctionParams","markScopeIdentifier","walkBlockDeclarations","extractIdentifiers","isForStatement","walkForStatement","isReferenced","isInDestructureAssignment","p","isInNewExpression","onIdent","block","stmt","decl","isVar","variable","param","nodes","object","prop","element","name","child","isStaticProperty","isStaticPropertyKey","grandparent","unwrapTSNode","isStaticExp","isCoreComponent","nonIdentifierRE","isSimpleIdentifier","validFirstIdentCharRE","validIdentCharRE","whitespaceRE","getExpSource","exp","isMemberExpressionBrowser","path","state","stateStack","currentOpenBracketCount","currentOpenParensCount","currentStringType","char","isMemberExpressionNode","isMemberExpression","fnExpRE","isFnExpressionBrowser","isFnExpressionNode","isFnExpression","advancePositionWithClone","pos","numberOfCharacters","advancePositionWithMutation","linesCount","lastNewLinePos","assert","condition","findDir","allowEmpty","findProp","dynamicOnly","isStaticArgOf","arg","hasDynamicKeyVBind","isText$1","isVPre","isVSlot","isTemplateNode","isSlotOutlet","propsHelperSet","getUnnormalizedProps","callPath","injectProp","propsWithInjection","parentCall","first","hasProp","result","propKeyName","toValidAssetId","type","searchValue","replaceValue","hasScopeRef","ids","b","getMemoedVNodeCall","forAliasRE","defaultParserOptions","currentOptions","currentRoot","currentInput","currentOpenTag","currentProp","currentAttrValue","currentAttrStartIndex","currentAttrEndIndex","inPre","inVPre","currentVPreBoundary","tokenizer","emitError","end","onText","getSlice","innerStart","innerEnd","addNode","createExp","getLoc","endOpenTag","found","j","el","onCloseTag","backTrack","raw","dirToAttr","setLocEnd","mod","condense","expParseMode","parseForExpression","syncIndex","forIteratorRE","stripParensRE","inMatch","LHS","RHS","createAliasExpression","asParam","valueContent","trimmedOffset","iteratorMatch","keyContent","keyOffset","indexContent","ns","lastNode","isImplied","lookAhead","isFragmentTemplate","condenseWhitespace","inlineTemplateProp","specialTemplateDir","isUpperCase","windowsNewlineRE","shouldCondense","removedWhitespace","isAllWhitespace","prev","next","hasNewlineChar","prevCharIsWhitespace","cloneLoc","dir","attr","parseMode","plugins","options","e","reset","baseParse","delimiters","cacheStatic","walk","getSingleElementRoot","x","doNotHoistNode","inFor","toCache","constantType","getConstantType","codegenNode","flag","getGeneratedPropsConstantType","getNodeProps","i2","cachedAsArray","slotCacheKeys","getCacheExpression","slot","getSlotNode","slotName","node2","constantCache","cached","returnType2","generatedPropsType","childType","expType","returnType","allowHoistedHelperSet","getConstantTypeOfHelperCall","keyType","valueType","createTransformContext","filename","prefixIdentifiers","hoistStatic","hmr","cacheHandlers","nodeTransforms","directiveTransforms","transformHoist","isBuiltInComponent","isCustomElement","expressionPlugins","scopeId","slotted","ssrCssVars","bindingMetadata","inline","isTS","onError","onWarn","nameMatch","count","currentCount","list","removalIndex","addId","removeId","identifier","isVNode","cacheExp","identifiers","transform","traverseNode","createRootCodegen","singleElementRootChild","traverseChildren","nodeRemoved","exitFns","onExit","createStructuralDirectiveTransform","fn","matches","n","PURE_ANNOTATION","aliasHelper","createCodegenContext","ast","sourceMap","optimizeImports","runtimeGlobalName","runtimeModuleName","ssrRuntimeModuleName","addMapping","withoutNewLine","_names","_mappings","generate","push","indent","deindent","hasHelpers","useWithBlock","genScopeId","isSetupInlined","preambleContext","genModulePreamble","genFunctionPreamble","functionName","signature","genAssets","genNode","VueBinding","staticHelpers","genHoists","genImports","assets","resolver","maybeSelfReference","hoists","importsOptions","imports","isText","genNodeListAsArray","multilines","genNodeList","comma","genText","genExpression","genInterpolation","genCompoundExpression","genComment","genVNodeCall","genCallExpression","genObjectExpression","genArrayExpression","genFunctionExpression","genConditionalExpression","genCacheExpression","genTemplateLiteral","genIfStatement","genAssignmentExpression","genSequenceExpression","genReturnStatement","pure","genExpressionAsPropertyKey","text","patchFlagString","callHelper","genNullableArgs","needNewline","needsParens","isNested","needArraySpread","l","isLiteralWhitelisted","transformExpression","processExpression","memo","asParams","asRawStatements","localVars","rewriteIdentifier","isAssignmentLVal","isUpdateArg","isDestructureAssignment","isNewExpression","wrapWithUnref","raw2","wrapped","isConst","rVal","operator","rExp","rawExp","rExpString","stringifyExpression","isPrefix","prefix","postfix","isScopeVarReference","isAllowedGlobal","isLiteral","_","needPrefix","canPrefix","a","last","leadingText","transformIf","processIf","ifNode","branch","isRoot","siblings","sibling","createCodegenNodeForBranch","parentCondition","getParentCondition","processCodegen","createIfBranch","userKey","isSameKey","isTemplateIf","keyIndex","createChildrenCodegenNode","keyProperty","firstChild","vnodeCall","branchExp","transformBind","_node","modifiers","transformBindShorthand","injectPrefix","propName","transformFor","processFor","forNode","renderExp","isTemplate","keyProp","isDirKey","keyExp","isStableFragment","fragmentFlag","childBlock","needFragmentWrapper","slotOutlet","loop","createForLoopParams","parseResult","finalizeForParseResult","addIdentifiers","removeIdentifiers","scopes","memoArgs","createParamsList","defaultFallback","trackSlotScopes","vSlot","slotProps","trackVForSlotScopes","vFor","buildClientSlotFn","_vForExp","buildSlots","buildSlotFn","slotsProperties","dynamicSlots","hasDynamicSlots","onComponentSlot","hasTemplateSlots","hasNamedDefaultSlot","implicitDefaultChildren","seenSlotNames","conditionalBranchIndex","slotElement","slotDir","slotChildren","slotLoc","dirLoc","staticSlotName","slotFunction","vIf","vElse","buildDynamicSlot","isNonWhitespaceContent","conditional","buildDefaultSlotProperty","children2","slotFlag","hasForwardedSlots","slots","directiveImportMap","transformElement","vnodeTag","resolveComponentType","isDynamicComponent","vnodeProps","vnodeChildren","vnodeDynamicProps","dynamicPropNames","vnodeDirectives","shouldUseBlock","propsBuildResult","buildProps","buildDirectiveArgs","hasDynamicTextChild","stringifyDynamicPropNames","isExplicitDynamic","isComponentTag","isProp","builtIn","fromSetup","resolveSetupReference","dotIndex","bindings","camelName","PascalName","checkType","fromConst","fromMaybeRef","fromProps","elementLoc","mergeArgs","runtimeDirectives","hasChildren","hasRef","hasClassBinding","hasStyleBinding","hasHydrationEventBinding","hasDynamicKeys","hasVnodeHook","pushMergeArg","dedupeProperties","pushRefVForMarker","analyzePatchFlag","isEventHandler","nameLoc","binding","isVBind","isVOn","directiveTransform","props2","needRuntime","propsExpression","classKeyIndex","styleKeyIndex","hasDynamicKey","classProp","styleProp","knownProps","deduped","existing","mergeAsArray","incoming","dirArgs","runtime","trueExpression","modifier","propsNamesString","transformSlotOutlet","processSlotOutlet","slotArgs","expectedLen","nonNameProps","transformOn","augmentor","eventName","rawName","eventString","shouldCache","isMemberExp","isInlineStatement","hasMultipleStatements","transformText","currentContainer","hasText","callArgs","seen$1","transformOnce","cur","transformModel","createTransformProps","expString","bindingType","maybeRef","assignmentExp","eventArg","altAssignment","m","modifiersKey","validDivisionCharRE","transformFilter","rewriteFilter","parseFilter","inSingle","inDouble","inTemplateString","inRegex","curly","square","paren","lastFilterIndex","expression","filters","pushFilter","wrapFilter","filter","seen","transformMemo","getBaseTransformPreset","baseCompile","isModuleMode","resolvedOptions","BindingTypes","noopDirectiveTransform","require_compiler_core","__commonJSMin","exports","module","require_compiler_dom_cjs_prod","__commonJSMin","exports","compilerCore","shared","V_MODEL_RADIO","V_MODEL_CHECKBOX","V_MODEL_TEXT","V_MODEL_SELECT","V_MODEL_DYNAMIC","V_ON_WITH_MODIFIERS","V_ON_WITH_KEYS","V_SHOW","TRANSITION","TRANSITION_GROUP","parserOptions","tag","parent","rootNamespace","ns","a","transformStyle","node","p","i","parseInlineCSS","cssText","loc","normalized","createDOMCompilerError","code","DOMErrorMessages","DOMErrorCodes","transformVHtml","dir","context","exp","transformVText","transformModel","baseResult","isCustomElement","directiveToUse","isInvalidType","type","isEventOptionModifier","isNonKeyModifier","maybeKeyModifier","isKeyboardEvent","resolveModifiers","key","modifiers","keyModifiers","nonKeyModifiers","eventOptionModifiers","modifier","transformClick","event","transformOn","handlerExp","modifierPostfix","transformShow","expReplaceRE","stringifyStatic","children","isParentCached","nc","ec","currentChunk","stringifyCurrentChunk","currentIndex","staticCall","stringifyNode","deleteCount","cacheIndex","i2","c","child","getCachedNode","result","analyzeNode","dataAriaRE","isStringifiableAttr","name","isNonStringifiable","bailed","bail","walk","node2","isOptionTag","stringifyElement","evaluateConstant","res","innerHTML","evaluated","arg","ignoreSideEffectTags","DOMNodeTransforms","DOMDirectiveTransforms","compile","src","options","parse","template","k","require_compiler_dom","__commonJSMin","exports","module","require_reactivity_cjs_prod","__commonJSMin","exports","shared","activeEffectScope","EffectScope","detached","i","l","fn","currentEffectScope","fromParent","last","effectScope","getCurrentScope","onScopeDispose","failSilently","activeSub","EffectFlags","pausedQueueEffects","ReactiveEffect","batch","cleanupEffect","prepareDeps","prevEffect","prevShouldTrack","shouldTrack","cleanupDeps","link","removeSub","isDirty","batchDepth","batchedSub","batchedComputed","sub","isComputed","startBatch","endBatch","next","error","err","head","tail","prev","removeDep","refreshComputed","computed","globalVersion","dep","prevSub","value","soft","nextSub","prevDep","nextDep","effect","options","e","runner","stop","trackStack","pauseTracking","enableTracking","resetTracking","onEffectCleanup","cleanup","Link","Dep","debugInfo","addSub","currentTail","targetMap","ITERATE_KEY","MAP_KEY_ITERATE_KEY","ARRAY_ITERATE_KEY","track","target","type","key","depsMap","trigger","newValue","oldValue","oldTarget","run","targetIsArray","isArrayIndex","newLength","key2","getDepFromReactive","object","depMap","reactiveReadArray","array","raw","toRaw","isShallow","toReactive","shallowReadArray","arr","arrayInstrumentations","iterator","args","x","thisArg","apply","v","searchProxy","separator","noTracking","reduce","comparer","self","method","wrapValue","iter","result","arrayProto","wrappedRetFn","needsWrap","methodFn","result2","wrappedFn","item","index","acc","res","isProxy","isNonTrackableKeys","builtInSymbols","hasOwnProperty","obj","BaseReactiveHandler","_isReadonly","_isShallow","receiver","isReadonly2","isShallow2","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","isRef","readonly","reactive","MutableReactiveHandler","isOldValueReadonly","isReadonly","hadKey","ReadonlyReactiveHandler","mutableHandlers","readonlyHandlers","shallowReactiveHandlers","shallowReadonlyHandlers","toShallow","getProto","createIterableMethod","rawTarget","targetIsMap","isPair","isKeyOnly","innerIterator","wrap","toReadonly","done","createReadonlyMethod","createInstrumentations","shallow","instrumentations","rawKey","has","callback","observed","get","hadItems","createInstrumentationGetter","mutableCollectionHandlers","shallowCollectionHandlers","readonlyCollectionHandlers","shallowReadonlyCollectionHandlers","targetTypeMap","rawType","getTargetType","createReactiveObject","shallowReactive","shallowReadonly","baseHandlers","collectionHandlers","proxyMap","targetType","existingProxy","proxy","isReactive","markRaw","ref","createRef","shallowRef","rawValue","RefImpl","useDirectValue","triggerRef","ref2","unref","toValue","source","shallowUnwrapHandlers","proxyRefs","objectWithRefs","CustomRefImpl","factory","set","newVal","customRef","toRefs","ret","propertyToRef","ObjectRefImpl","_object","_key","_defaultValue","val","GetterRefImpl","_getter","toRef","defaultValue","ComputedRefImpl","setter","isSSR","getterOrOptions","debugOptions","getter","TrackOpTypes","TriggerOpTypes","ReactiveFlags","WatchErrorCodes","INITIAL_WATCHER_VALUE","cleanupMap","activeWatcher","getCurrentWatcher","onWatcherCleanup","cleanupFn","owner","cleanups","watch","cb","immediate","deep","once","scheduler","augmentJob","call","reactiveGetter","source2","traverse","boundCleanup","forceTrigger","isMultiSource","s","currentEffect","baseGetter","depth","scope","watchHandle","_cb","job","immediateFirstRun","currentWatcher","cleanup2","seen","require_reactivity","__commonJSMin","exports","module","require_runtime_core_cjs_prod","__commonJSMin","exports","reactivity","shared","pushWarningContext","vnode","popWarningContext","assertNumber","val","type","ErrorCodes","ErrorTypeStrings$1","callWithErrorHandling","fn","instance","args","err","handleError","callWithAsyncErrorHandling","res","values","i","throwInDev","contextVNode","errorHandler","throwUnhandledErrorInProduction","cur","exposedInstance","errorInfo","errorCapturedHooks","logError","throwInProd","queue","flushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","currentFlushPromise","nextTick","p","findInsertionIndex","id","start","end","middle","middleJob","middleJobId","getId","queueJob","job","jobId","lastJob","queueFlush","flushJobs","queuePostFlushCb","cb","flushPreFlushCbs","seen","flushPostFlushCbs","deduped","a","b","currentRenderingInstance","currentScopeId","setCurrentRenderingInstance","prev","pushScopeId","popScopeId","withScopeId","_id","withCtx","ctx","isNonScopedSlot","renderFnWithContext","setBlockTracking","prevInstance","withDirectives","directives","getComponentPublicInstance","bindings","dir","value","arg","modifiers","invokeDirectiveHook","prevVNode","name","oldBindings","binding","hook","TeleportEndKey","isTeleport","isTeleportDisabled","props","isTeleportDeferred","isTargetSVG","target","isTargetMathML","resolveTarget","select","targetSelector","TeleportImpl","n1","n2","container","anchor","parentComponent","parentSuspense","namespace","slotScopeIds","optimized","internals","mountChildren","patchChildren","patchBlockChildren","insert","querySelector","createText","createComment","disabled","shapeFlag","children","dynamicChildren","placeholder","mainAnchor","mount","container2","anchor2","mountToTarget","targetAnchor","prepareAnchor","updateCssVars","queuePostRenderEffect","wasDisabled","currentContainer","currentAnchor","traverseStaticChildren","moveTeleport","nextTarget","unmount","hostRemove","doRemove","targetStart","shouldRemove","child","hydrateTeleport","parentAnchor","move","moveType","el","isReorder","node","nextSibling","parentNode","hydrateChildren","targetNode","Teleport","isDisabled","leaveCbKey","enterCbKey","useTransitionState","state","onMounted","onBeforeUnmount","TransitionHookValidator","BaseTransitionPropsValidators","recursiveGetSubtree","subTree","BaseTransitionImpl","slots","getCurrentInstance","getTransitionRawChildren","findNonCommentChild","rawProps","mode","emptyPlaceholder","innerChild","getInnerChild$1","enterHooks","resolveTransitionHooks","hooks","Comment","setTransitionHooks","oldInnerChild","isSameVNodeType","leavingHooks","earlyRemove","delayedLeave","leavingVNodesCache","getLeavingNodesForType","c","BaseTransition","leavingVNodes","postClone","appear","persisted","onBeforeEnter","onEnter","onAfterEnter","onEnterCancelled","onBeforeLeave","onLeave","onAfterLeave","onLeaveCancelled","onBeforeAppear","onAppear","onAfterAppear","onAppearCancelled","key","callHook","callAsyncHook","done","hook2","leavingVNode","afterHook","cancelHook","called","cancelled","remove","key2","vnode2","hooks2","isKeepAlive","cloneVNode","keepComment","parentKey","ret","keyedFragmentCount","Fragment","defineComponent","options","extraOptions","useId","markAsyncBoundary","useTemplateRef","r","refs","setRef","rawRef","oldRawRef","isUnmount","isAsyncWrapper","refValue","owner","ref","oldRef","setupState","rawSetupState","canSetSetupRef","_isString","_isRef","doSet","existing","hasLoggedMismatchError","logMismatchError","isSVGContainer","isMathMLContainer","getContainerType","isComment","createHydrationFunctions","rendererInternals","mountComponent","patch","patchProp","hydrate","hydrateNode","isFragmentStart","onMismatch","handleMismatch","patchFlag","domType","nextNode","Text","isTemplateNode","replaceNode","Static","needToAdoptContent","hydrateFragment","hydrateElement","locateClosingAnchor","createVNode","createTextVNode","dirs","transition","forcePatch","needCallTransitionHooks","needTransition","content","cls","next","isMismatchAllowed","clientText","isCustomElement","vnodeHooks","invokeVNodeHook","queueEffectWithSuspense","parentVNode","l","normalizeVNode","isText","fragmentSlotScopeIds","isFragment","next2","updateHOCHostEl","open","close","match","newNode","oldNode","parentNode2","parent","allowMismatchAttr","MismatchTypeString","allowedType","allowedAttr","list","requestIdleCallback","cancelIdleCallback","hydrateOnIdle","timeout","elementIsVisibleInViewport","top","left","bottom","right","innerHeight","innerWidth","hydrateOnVisible","opts","forEach","ob","entries","e","hydrateOnMediaQuery","query","mql","hydrateOnInteraction","interactions","hasHydrated","doHydrate","teardown","forEachElement","depth","defineAsyncComponent","source","loader","loadingComponent","errorComponent","delay","hydrateStrategy","suspensible","userOnError","pendingRequest","resolvedComp","retries","retry","load","thisRequest","resolve","reject","comp","patched","performHydrate","currentInstance","createInnerComp","onError","isInSSRComponentSetup","loaded","error","delayed","ref2","ce","KeepAliveImpl","sharedContext","cache","keys","current","_unmount","createElement","storageContainer","instance2","vnodeHook","invalidateMount","resetShapeFlag","pruneCache","filter","getComponentName","pruneCacheEntry","cached","watch","include","exclude","matches","pendingCacheKey","cacheSubtree","isSuspense","getInnerChild","onUpdated","suspense","da","rawVNode","isVNode","max","cachedVNode","KeepAlive","pattern","onActivated","registerKeepAliveHook","onDeactivated","wrappedHook","injectHook","injectToKeepAliveRoot","keepAliveRoot","injected","onUnmounted","prepend","reset","setCurrentInstance","createHook","lifecycle","onBeforeMount","onBeforeUpdate","onServerPrefetch","onRenderTriggered","onRenderTracked","onErrorCaptured","COMPONENTS","DIRECTIVES","resolveComponent","maybeSelfReference","resolveAsset","NULL_DYNAMIC_COMPONENT","resolveDynamicComponent","component","resolveDirective","warnMissing","Component","selfName","registry","renderList","renderItem","index","sourceIsArray","sourceIsReactiveArray","needsWrap","isReadonlySource","item","createSlots","dynamicSlots","slot","j","renderSlot","fallback","noSlotted","openBlock","createBlock","validSlotContent","ensureValidVNode","slotKey","rendered","vnodes","toHandlers","obj","preserveCaseIfNecessary","getPublicInstance","isStatefulComponent","publicPropertiesMap","resolveMergedOptions","instanceWatch","hasSetupBinding","PublicInstanceProxyHandlers","data","accessCache","appContext","normalizedProps","n","shouldCacheAccess","publicGetter","cssModule","globalProperties","propsOptions","descriptor","RuntimeCompiledPublicInstanceProxyHandlers","_","defineProps","defineEmits","defineExpose","exposed","defineOptions","defineSlots","defineModel","withDefaults","defaults","useSlots","getContext","useAttrs","calledFunctionName","createSetupContext","normalizePropsOrEmits","normalized","mergeDefaults","raw","opt","mergeModels","createPropsRestProxy","excludedKeys","withAsyncContext","getAwaitable","awaitable","unsetCurrentInstance","applyOptions","publicThis","dataOptions","computedOptions","methods","watchOptions","provideOptions","injectOptions","created","beforeMount","mounted","beforeUpdate","updated","activated","deactivated","beforeDestroy","beforeUnmount","destroyed","unmounted","render","renderTracked","renderTriggered","errorCaptured","serverPrefetch","expose","inheritAttrs","components","filters","resolveInjections","methodHandler","get","set","computed","v","createWatcher","provides","provide","registerLifecycleHook","register","_hook","checkDuplicateProperties","normalizeInject","inject","h","getter","createPathGetter","handler","base","mixins","extendsOptions","globalMixins","optionMergeStrategies","resolved","m","mergeOptions","to","from","strats","asMixin","strat","internalOptionMergeStrats","mergeDataFn","mergeEmitsOrPropsOptions","mergeObjectOptions","mergeAsArray","mergeWatchOptions","mergeInject","merged","createAppContext","uid$1","createAppAPI","rootComponent","rootProps","context","installedPlugins","pluginCleanupFns","isMounted","app","version","plugin","mixin","directive","rootContainer","isHydrate","cleanupFn","lastApp","currentApp","parentProvides","defaultValue","treatDefaultAsFactory","hasInjectionContext","internalObjectProto","createInternalObject","isInternalObject","initProps","isStateful","isSSR","attrs","setFullProps","updateProps","rawPrevProps","rawCurrentProps","hasAttrsChanged","propsToUpdate","isEmitListener","camelizedKey","resolvePropValue","kebabKey","needCastKeys","rawCastValues","camelKey","castValues","isAbsent","hasDefault","propsDefaults","mixinPropsCache","normalizePropsOptions","hasExtends","extendProps","raw2","normalizedKey","validatePropName","prop","propType","shouldCast","shouldCastTrue","typeName","isInternalKey","normalizeSlotValue","normalizeSlot","rawSlot","normalizeObjectSlots","rawSlots","normalizeVNodeSlots","assignSlots","initSlots","cacheIndexes","updateSlots","needDeletionCheck","deletionComparisonTarget","createRenderer","baseCreateRenderer","createHydrationRenderer","createHydrationFns","hostInsert","hostPatchProp","hostCreateElement","hostCreateText","hostCreateComment","hostSetText","hostSetElementText","hostParentNode","hostNextSibling","hostSetScopeId","hostInsertStaticContent","getNextHostNode","processText","processCommentNode","mountStaticNode","processFragment","processElement","processComponent","moveStaticNode","removeStaticNode","mountElement","patchElement","resolveChildrenNamespace","setScopeId","scopeId","cloneIfMounted","oldProps","newProps","toggleRecurse","patchProps","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","updateComponent","initialVNode","createComponentInstance","setupComponent","setupRenderEffect","shouldUpdateComponent","updateComponentPreRender","componentUpdateFn","bu","u","nonHydratedAsyncRoot","locateNonHydratedAsyncRoot","originNext","nextTree","renderComponentRoot","prevTree","bm","root","isAsyncWrapperVNode","hydrateSubTree","scopedInitialVNode","effect","update","nextVNode","prevProps","c1","prevShapeFlag","c2","patchKeyedChildren","patchUnkeyedChildren","unmountChildren","oldLength","newLength","commonLength","nextChild","l2","e1","e2","nextPos","s1","s2","keyToNewIndexMap","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","newIndex","increasingNewIndexSequence","getSequence","nextIndex","anchorVNode","leave","delayLeave","afterLeave","remove2","performLeave","cacheIndex","shouldInvokeDirs","shouldInvokeVnodeHook","unmountComponent","removeFragment","performRemove","bum","scope","um","slotCacheKeys","teleportEnd","isFlushing","currentNamespace","allowed","shallow","ch1","ch2","arr","result","len","arrI","subComponent","ssrContextKey","useSSRContext","watchEffect","doWatch","watchPostEffect","watchSyncEffect","immediate","deep","flush","once","baseWatchOptions","runsImmediately","ssrCleanup","watchStopHandle","isPre","isFirstRun","watchHandle","path","segments","useModel","camelizedName","hyphenatedName","getModelModifiers","track","trigger","localValue","prevSetValue","prevEmittedValue","propValue","emittedValue","i2","modelName","emit","event","rawArgs","isModelListener","handlerName","onceHandler","normalizeEmitsOptions","extendEmits","normalizedFromExtend","proxy","withProxy","renderCache","fallthroughAttrs","proxyToUse","thisProxy","render2","getFunctionalFallthrough","blockStack","filterModelListeners","filterSingleRoot","recurse","singleRoot","prevChildren","nextProps","nextChildren","emits","hasPropsChanged","dynamicProps","emitsOptions","nextKeys","suspenseId","SuspenseImpl","mountSuspense","patchSuspense","hydrateSuspense","normalizeSuspenseChildren","Suspense","triggerEvent","eventListener","hiddenContainer","createSuspenseBoundary","setActiveBranch","newBranch","newFallback","activeBranch","pendingBranch","isInFallback","isHydrating","pendingId","parentSuspenseId","isSuspensible","isVNodeSuspensible","initialAnchor","resume","sync","effects","parentComponent2","delayEnter","hasUnresolvedAncestor","fallbackVNode","namespace2","mountFallback","optimized2","isInPendingSuspense","hydratedEl","asyncSetupResult","handleSetupResult","parentSuspense2","isSlotChildren","normalizeSuspenseSlot","s","block","trackBlock","isBlockTreeEnabled","currentBlock","closeBlock","branch","disableTracking","inVOnce","setupBlock","createElementBlock","createBaseVNode","transformVNodeArgs","transformer","normalizeKey","normalizeRef","ref_key","ref_for","isBlockNode","needFullChildrenNormalization","normalizeChildren","_createVNode","cloned","isClassComponent","guardReactiveProps","klass","style","extraProps","mergeRef","cloneTransition","mergedProps","mergeProps","text","flag","createStaticVNode","numberOfNodes","createCommentVNode","asBlock","slotFlag","toMerge","incoming","emptyAppContext","uid","internalSetCurrentInstance","setInSSRSetupState","g","registerGlobalSetter","setter","setters","setupResult","setupStatefulComponent","setup","setupContext","isAsyncSetup","resolvedResult","finishComponentSetup","compile","installWithProxy","registerRuntimeCompiler","_compile","isRuntimeOnly","skipOptions","template","compilerOptions","delimiters","componentCompilerOptions","finalCompilerOptions","attrsProxyHandlers","includeInferred","getterOrOptions","debugOptions","propsOrChildren","initCustomFormatter","withMemo","memo","isMemoSame","warn$1","ErrorTypeStrings","devtools","setDevtoolsHook","_ssrUtils","ssrUtils","resolveFilter","compatUtils","DeprecationTypes","require_runtime_core","__commonJSMin","exports","module","require_runtime_dom_cjs_prod","__commonJSMin","exports","runtimeCore","shared","policy","tt","val","unsafeToTrustedHTML","svgNS","mathmlNS","doc","templateContainer","nodeOps","child","parent","anchor","tag","namespace","is","props","el","text","node","selector","id","content","start","end","before","template","wrapper","TRANSITION","ANIMATION","vtcKey","DOMTransitionPropsValidators","TransitionPropsValidators","decorate$1","t","Transition","slots","resolveTransitionProps","callHook","hook","args","h2","hasExplicitCallback","rawProps","baseProps","key","name","type","duration","enterFromClass","enterActiveClass","enterToClass","appearFromClass","appearActiveClass","appearToClass","leaveFromClass","leaveActiveClass","leaveToClass","durations","normalizeDuration","enterDuration","leaveDuration","onBeforeEnter","onEnter","onEnterCancelled","onLeave","onLeaveCancelled","onBeforeAppear","onAppear","onAppearCancelled","finishEnter","isAppear","done","isCancelled","removeTransitionClass","finishLeave","makeEnterHook","resolve","nextFrame","addTransitionClass","whenTransitionEnds","forceReflow","NumberOf","n","cls","c","_vtc","cb","endId","expectedType","explicitTimeout","resolveIfNotStale","timeout","propCount","getTransitionInfo","endEvent","ended","onEnd","e","styles","getStyleProperties","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","d","i","toMs","s","patchClass","value","isSVG","transitionClasses","vShowOriginalDisplay","vShowHidden","vShow","transition","setDisplay","oldValue","initVShowForSSR","CSS_VAR_TEXT","useCssVars","getter","displayRE","patchStyle","prev","next","style","isCssString","hasControlledDisplay","prevStyle","setStyle","cssVarText","importantRE","v","prefixed","autoPrefix","prefixes","prefixCache","rawName","cached","xlinkNS","patchAttr","instance","isBoolean","patchDOMProp","parentComponent","attrName","newValue","needRemove","addEventListener","event","handler","options","removeEventListener","veiKey","patchEvent","prevValue","nextValue","invokers","existingInvoker","parseName","invoker","createInvoker","optionsModifierRE","m","cachedNow","p","getNow","initialValue","patchStopImmediatePropagation","originalStop","fn","e2","isNativeOn","patchProp","shouldSetAsProp","REMOVAL","defineCustomElement","extraOptions","_createApp","Comp","VueCustomElement","VueElement","initialProps","defineSSRCustomElement","createSSRApp","BaseClass","_VueElement","_def","_props","createApp","mutations","def","isAsync","numberProps","opt","asyncDef","exposed","declaredPropKeys","has","camelKey","shouldReflect","shouldUpdate","ob","vnode","render","dispatch","owner","nonce","slotName","outlets","scopeId","o","walker","comp","useHost","caller","useShadowRoot","useCssModule","modules","mod","positionMap","newPositionMap","moveCbKey","enterCbKey","decorate","TransitionGroupImpl","state","prevChildren","children","moveClass","hasCSSTransform","callPendingCbs","recordPosition","movedChildren","applyTranslation","cssTransitionProps","TransitionGroup","oldPos","newPos","dx","dy","root","clone","container","getModelAssigner","onCompositionStart","onCompositionEnd","target","assignKey","vModelText","lazy","trim","number","castToNumber","domValue","elValue","vModelCheckbox","_","modelValue","elementValue","getValue","checked","assign","index","found","filtered","cloned","getCheckboxValue","setChecked","binding","vModelRadio","vModelSelect","isSetModel","selectedVal","setSelected","_binding","isMultiple","isArrayValue","l","option","optionValue","optionType","vModelDynamic","callModelHook","prevVNode","resolveDynamicModel","tagName","initVModelForSSR","modelToUse","systemModifiers","modifierGuards","modifiers","withModifiers","cache","cacheKey","guard","keyNames","withKeys","eventKey","k","rendererOptions","renderer","enabledHydration","ensureRenderer","ensureHydrationRenderer","hydrate","app","mount","containerOrSelector","normalizeContainer","component","proxy","resolveRootNamespace","ssrDirectiveInitialized","initDirectivesForSSR","require_runtime_dom","__commonJSMin","exports","module","require_vue_cjs_prod","__commonJSMin","exports","compilerDom","runtimeDom","shared","_interopNamespaceDefault","e","n","k","runtimeDom__namespace","compileCache","compileToFunction","template","options","key","cached","el","opts","tag","code","render","require_vue","__commonJSMin","exports","module","settingschangedcallbacks","globalDebugFlags","localDebugFlags","debugFlagsOverridesCB","DebugFlagsProxyHandler","debugFlagsOverridesCB","localDebugFlags","globalDebugFlags","target","p","record","keys","key","newValue","toModify","runSettingsCallbacks","value","debugFlags","formatForConsoleLogs","cb","settingschangedcallbacks","dtapStage","isLive","backendBase","dtapstage","dtapStage","islive","isLive","initEnv","setDtapStage","setBackendBase","dtapStage","isLive","backendBase","dtapstage","islive","getBrowserDebugFlags","varname","flags","urldebugvar","debugcookie","debugcookievalue","flag","sessionDebug","isElement","node","isHTMLElement","parseLanguageTag","languageTag","match","getLang","node","tag","omit","value","keys","elt","ret","key","val","unlock","LocalMutex","defer","LocalLock","mutex","config","siteroot","dtapStage","whconfigel","parsedConfig","omit","initEnv","flag","getBrowserDebugFlags","debugFlags","frontendConfig","getLang","prop","resolve","reject","_resolve","_reject","items","callbackfn","retval","idx","item","key","list","IteratorPrototype","ArrayIteratorPrototype","OriginalIteratorPrototype","callback","it","value","next_value","real_value","max_count","values","limit","remaining","index","mapper","mapped","reducer","initial_value","acc","count","string","final","first","iterables","others","it_array","e","finished","partition1","partition2","i","max","min","isObject","t","GetIteratorFlattenable","obj","method","iterator","Iterator","WrappedIterator","#iterator","args","returnMethod","Iterator_from","debugFlags","CustomEvent","parseUserAgent","ua","UA","platform","name","version","device","browser","parseUserAgent","config","forwardPublisherNavigation","event","isHTMLElement","navaction","desturl","origin","configureForCMS","e","import_vue","focusable","modalDialog","doc","tabbables","dialog","el","closeButton","setupPopupDialog","event","items","first","last","active","setupPopupHost","opener","popupFrame","frame","focusFrame","routes","siteRoot","pathname","parts","p","SITE_ROOT","currentRoute","dc_exports","__export","DCLogic","React","SITE_ROOT","attr","list","page","setRef","shows","style","useDC","import_vue","DCLogic","props","update","cb","patch","_prevProps","React","shows","value","setRef","holder","el","useDC","Logic","logic","version","prevProps","list","attr","page","route","SITE_ROOT","unitless","style","value","key","v","import_vue","useHelmet","css","style","THEMES","ACC","GREEN","PINK","OK","BAD","PERSPECTIVES","DEMO","DOCS","PEOPLE","COMPANIES","ALTS","CONVS","REPORTS","RDOCS","FB_LABELS","SUGGESTIONS","TRUST","Component","DCLogic","React","el","e","p","rol","th","sc","patch","q","naam","parts","pp","k","c","msg","screen","extra","id","x","fresh","blocks","s","s2","now","hm","conv","m","txt","b","u","d","advance","uid","entry","RDx","ix","nxt","main","v","cur","T","narrowNav","narrowSide","compactSide","isG","isU","sideScreen","docIds","num","ansNo","n","usedIn","usedAll","msgCites","numStyle","hot","openDoc","segOff","messages","doc","ns","cin","a","mk","t","i","label","color","verdict","recent","isR","isA","menuDef","activeKey","RSRC","usedCount","menu","key","icon","on","badge","persp","perspRows","items","open","text","mid","docs","ua","contacts","R","chip","report","name","level","cnt","title","stC","st","allFb","ALLR","obStepsDef","obDone","rsDocs","fbs","f","totalUses","myOpen","rsStats","RD","rsWide","rsRows","rsSummary","SF","shareFields","sharePreview","rs","use","U","mine","fb","idx","mineU","stU","cU","goIdx","THEMES_OF","convUse","pq","pubList","pubFilters","l","hq","histOrder","histGroups","answers","done","histFilters","modal","modalOpen","keys","labels","fd","ck","ph","bad","showSideBase","sideOverlayOn","sideStyle","navOverlay","navWrapStyle","padX","padR","hour","dl","iv","j","fq","SITE_ROOT","r","App_logic_default","App_helmet_default","PAL","REQS","ACCS","STUDIES","TOK","CONV","NEWU","fmtNum","n","ini","a","b","Component","DCLogic","React","el","k","t","list","cur","key","v","l","s","emb","openReqs","r","openStudies","x","nav","id","label","chip","badge","tok","conv","nu","maxT","maxC","tokSum","convSum","prevTok","prevConv","pct","dTok","dConv","users","delta","d","unit","start","kpis","reqs","p","q","accVis","roleCol","accounts","i","f","okMail","setF","e","resVis","selS","stInfo","st","studies","sel","color","next","rest","c","Beheer_logic_default","Beheer_helmet_default","props","__props","useHelmet","Beheer_helmet_default","dcv","useDC","Beheer_logic_default","import_vue","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_49","_hoisted_50","_hoisted_51","_hoisted_52","_hoisted_53","_hoisted_54","_hoisted_55","_hoisted_56","_hoisted_57","_hoisted_58","_hoisted_59","_hoisted_60","_hoisted_61","_hoisted_62","_hoisted_63","_hoisted_64","_hoisted_65","_hoisted_66","_hoisted_67","_hoisted_68","_hoisted_69","_hoisted_70","_hoisted_71","_hoisted_72","_hoisted_73","_hoisted_74","_hoisted_75","_hoisted_76","_hoisted_77","_hoisted_78","_hoisted_79","_hoisted_80","_hoisted_81","_hoisted_82","_hoisted_83","_hoisted_84","_hoisted_85","_hoisted_86","_hoisted_87","_hoisted_88","_hoisted_89","_hoisted_90","_hoisted_91","_hoisted_92","_hoisted_93","_hoisted_94","_hoisted_95","_hoisted_96","_hoisted_97","_hoisted_98","_hoisted_99","_hoisted_100","_hoisted_101","_hoisted_102","_hoisted_103","_hoisted_104","_hoisted_105","_hoisted_106","_hoisted_107","_hoisted_108","_hoisted_109","_hoisted_110","_hoisted_111","_hoisted_112","_hoisted_113","_hoisted_114","_hoisted_115","_hoisted_116","_hoisted_117","_hoisted_118","_hoisted_119","_hoisted_120","_hoisted_121","_hoisted_122","_hoisted_123","_hoisted_124","_hoisted_125","_hoisted_126","_hoisted_127","_hoisted_128","_hoisted_129","_hoisted_130","_hoisted_131","_hoisted_132","_hoisted_133","_hoisted_134","_hoisted_135","_hoisted_136","_hoisted_137","_hoisted_138","_hoisted_139","_hoisted_140","_hoisted_141","_hoisted_142","_hoisted_143","_hoisted_144","_hoisted_145","_hoisted_146","_hoisted_147","_hoisted_148","_hoisted_149","_hoisted_150","_hoisted_151","_hoisted_152","_hoisted_153","_hoisted_154","_hoisted_155","_hoisted_156","_hoisted_157","_hoisted_158","_hoisted_159","_hoisted_160","_hoisted_161","_hoisted_162","_hoisted_163","_hoisted_164","_hoisted_165","_hoisted_166","_hoisted_167","_hoisted_168","_hoisted_169","_hoisted_170","_hoisted_171","render","_ctx","_cache","$props","$setup","$data","$options","_openBlock","_createElementBlock","_createElementVNode","el","_createTextVNode","_Fragment","_renderList","n","$index","_normalizeStyle","_toDisplayString","_createCommentVNode","_createStaticVNode","p","k","b","sv","sp","t","r","args","a","st","pp","c","Beheer_default","render","props","__props","useHelmet","App_helmet_default","dcv","useDC","App_logic_default","import_vue","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_49","_hoisted_50","_hoisted_51","_hoisted_52","_hoisted_53","_hoisted_54","_hoisted_55","_hoisted_56","_hoisted_57","_hoisted_58","_hoisted_59","_hoisted_60","_hoisted_61","_hoisted_62","_hoisted_63","_hoisted_64","_hoisted_65","_hoisted_66","_hoisted_67","_hoisted_68","_hoisted_69","_hoisted_70","_hoisted_71","_hoisted_72","_hoisted_73","_hoisted_74","_hoisted_75","_hoisted_76","_hoisted_77","_hoisted_78","_hoisted_79","_hoisted_80","_hoisted_81","_hoisted_82","_hoisted_83","_hoisted_84","_hoisted_85","_hoisted_86","_hoisted_87","_hoisted_88","_hoisted_89","_hoisted_90","_hoisted_91","_hoisted_92","_hoisted_93","_hoisted_94","_hoisted_95","_hoisted_96","_hoisted_97","_hoisted_98","_hoisted_99","_hoisted_100","_hoisted_101","_hoisted_102","_hoisted_103","_hoisted_104","_hoisted_105","_hoisted_106","_hoisted_107","_hoisted_108","_hoisted_109","_hoisted_110","_hoisted_111","_hoisted_112","_hoisted_113","_hoisted_114","_hoisted_115","_hoisted_116","_hoisted_117","_hoisted_118","_hoisted_119","_hoisted_120","_hoisted_121","_hoisted_122","_hoisted_123","_hoisted_124","_hoisted_125","_hoisted_126","_hoisted_127","_hoisted_128","_hoisted_129","_hoisted_130","_hoisted_131","_hoisted_132","_hoisted_133","_hoisted_134","_hoisted_135","_hoisted_136","_hoisted_137","_hoisted_138","_hoisted_139","_hoisted_140","_hoisted_141","_hoisted_142","_hoisted_143","_hoisted_144","_hoisted_145","_hoisted_146","_hoisted_147","_hoisted_148","_hoisted_149","_hoisted_150","_hoisted_151","_hoisted_152","_hoisted_153","_hoisted_154","_hoisted_155","_hoisted_156","_hoisted_157","_hoisted_158","_hoisted_159","_hoisted_160","_hoisted_161","_hoisted_162","_hoisted_163","_hoisted_164","_hoisted_165","_hoisted_166","_hoisted_167","_hoisted_168","_hoisted_169","_hoisted_170","_hoisted_171","_hoisted_172","_hoisted_173","_hoisted_174","_hoisted_175","_hoisted_176","_hoisted_177","_hoisted_178","_hoisted_179","_hoisted_180","_hoisted_181","_hoisted_182","_hoisted_183","_hoisted_184","_hoisted_185","_hoisted_186","_hoisted_187","_hoisted_188","_hoisted_189","_hoisted_190","_hoisted_191","_hoisted_192","_hoisted_193","_hoisted_194","_hoisted_195","_hoisted_196","_hoisted_197","_hoisted_198","_hoisted_199","_hoisted_200","_hoisted_201","_hoisted_202","_hoisted_203","_hoisted_204","_hoisted_205","_hoisted_206","_hoisted_207","_hoisted_208","_hoisted_209","_hoisted_210","_hoisted_211","_hoisted_212","_hoisted_213","_hoisted_214","_hoisted_215","_hoisted_216","_hoisted_217","_hoisted_218","_hoisted_219","_hoisted_220","_hoisted_221","_hoisted_222","_hoisted_223","_hoisted_224","_hoisted_225","_hoisted_226","_hoisted_227","_hoisted_228","_hoisted_229","_hoisted_230","_hoisted_231","_hoisted_232","_hoisted_233","_hoisted_234","_hoisted_235","_hoisted_236","_hoisted_237","_hoisted_238","_hoisted_239","_hoisted_240","_hoisted_241","_hoisted_242","_hoisted_243","_hoisted_244","_hoisted_245","_hoisted_246","_hoisted_247","_hoisted_248","_hoisted_249","_hoisted_250","_hoisted_251","_hoisted_252","_hoisted_253","_hoisted_254","_hoisted_255","_hoisted_256","_hoisted_257","_hoisted_258","_hoisted_259","_hoisted_260","_hoisted_261","_hoisted_262","_hoisted_263","_hoisted_264","_hoisted_265","_hoisted_266","_hoisted_267","_hoisted_268","_hoisted_269","_hoisted_270","_hoisted_271","_hoisted_272","_hoisted_273","_hoisted_274","_hoisted_275","_hoisted_276","_hoisted_277","_hoisted_278","_hoisted_279","_hoisted_280","_hoisted_281","_hoisted_282","_hoisted_283","_hoisted_284","_hoisted_285","_hoisted_286","_hoisted_287","_hoisted_288","_hoisted_289","_hoisted_290","_hoisted_291","_hoisted_292","_hoisted_293","_hoisted_294","_hoisted_295","_hoisted_296","_hoisted_297","_hoisted_298","_hoisted_299","_hoisted_300","_hoisted_301","_hoisted_302","_hoisted_303","_hoisted_304","_hoisted_305","_hoisted_306","_hoisted_307","_hoisted_308","_hoisted_309","_hoisted_310","_hoisted_311","_hoisted_312","_hoisted_313","_hoisted_314","_hoisted_315","_hoisted_316","_hoisted_317","_hoisted_318","_hoisted_319","_hoisted_320","_hoisted_321","_hoisted_322","_hoisted_323","_hoisted_324","_hoisted_325","_hoisted_326","_hoisted_327","_hoisted_328","_hoisted_329","_hoisted_330","_hoisted_331","_hoisted_332","_hoisted_333","_hoisted_334","_hoisted_335","_hoisted_336","_hoisted_337","_hoisted_338","_hoisted_339","_hoisted_340","_hoisted_341","_hoisted_342","_hoisted_343","_hoisted_344","_hoisted_345","_hoisted_346","_hoisted_347","_hoisted_348","_hoisted_349","_hoisted_350","_hoisted_351","_hoisted_352","_hoisted_353","_hoisted_354","_hoisted_355","_hoisted_356","_hoisted_357","_hoisted_358","_hoisted_359","_hoisted_360","_hoisted_361","_hoisted_362","_hoisted_363","_hoisted_364","_hoisted_365","_hoisted_366","_hoisted_367","_hoisted_368","_hoisted_369","_hoisted_370","_hoisted_371","_hoisted_372","_hoisted_373","_hoisted_374","_hoisted_375","_hoisted_376","_hoisted_377","_hoisted_378","_hoisted_379","_hoisted_380","_hoisted_381","_hoisted_382","_hoisted_383","_hoisted_384","_hoisted_385","_hoisted_386","_hoisted_387","_hoisted_388","_hoisted_389","_hoisted_390","_hoisted_391","_hoisted_392","_hoisted_393","_hoisted_394","_hoisted_395","_hoisted_396","_hoisted_397","_hoisted_398","_hoisted_399","_hoisted_400","_hoisted_401","_hoisted_402","_hoisted_403","_hoisted_404","_hoisted_405","_hoisted_406","_hoisted_407","_hoisted_408","_hoisted_409","_hoisted_410","_hoisted_411","_hoisted_412","_hoisted_413","_hoisted_414","_hoisted_415","_hoisted_416","_hoisted_417","_hoisted_418","_hoisted_419","_hoisted_420","_hoisted_421","_hoisted_422","_hoisted_423","_hoisted_424","_hoisted_425","_hoisted_426","_hoisted_427","_hoisted_428","_hoisted_429","_hoisted_430","_hoisted_431","_hoisted_432","_hoisted_433","_hoisted_434","_hoisted_435","_hoisted_436","_hoisted_437","_hoisted_438","_hoisted_439","_hoisted_440","_hoisted_441","_hoisted_442","_hoisted_443","_hoisted_444","_hoisted_445","_hoisted_446","_hoisted_447","_hoisted_448","_hoisted_449","_hoisted_450","_hoisted_451","_hoisted_452","_hoisted_453","_hoisted_454","_hoisted_455","_hoisted_456","_hoisted_457","_hoisted_458","_hoisted_459","_hoisted_460","_hoisted_461","_hoisted_462","_hoisted_463","_hoisted_464","_hoisted_465","_hoisted_466","_hoisted_467","_hoisted_468","_hoisted_469","_hoisted_470","_hoisted_471","_hoisted_472","_hoisted_473","_hoisted_474","_hoisted_475","_hoisted_476","_hoisted_477","_hoisted_478","_hoisted_479","_hoisted_480","_hoisted_481","_hoisted_482","_hoisted_483","_hoisted_484","_hoisted_485","_hoisted_486","_hoisted_487","_hoisted_488","_hoisted_489","_hoisted_490","_hoisted_491","_hoisted_492","_hoisted_493","_hoisted_494","_hoisted_495","_hoisted_496","_hoisted_497","_hoisted_498","_hoisted_499","_hoisted_500","_hoisted_501","_hoisted_502","_hoisted_503","_hoisted_504","_hoisted_505","_hoisted_506","_hoisted_507","_hoisted_508","_hoisted_509","_hoisted_510","_hoisted_511","_hoisted_512","_hoisted_513","_hoisted_514","_hoisted_515","_hoisted_516","_hoisted_517","_hoisted_518","_hoisted_519","_hoisted_520","_hoisted_521","_hoisted_522","_hoisted_523","_hoisted_524","_hoisted_525","_hoisted_526","_hoisted_527","_hoisted_528","_hoisted_529","_hoisted_530","_hoisted_531","_hoisted_532","_hoisted_533","_hoisted_534","_hoisted_535","_hoisted_536","_hoisted_537","_hoisted_538","_hoisted_539","_hoisted_540","_hoisted_541","_hoisted_542","_hoisted_543","_hoisted_544","_hoisted_545","_hoisted_546","_hoisted_547","_hoisted_548","_hoisted_549","_hoisted_550","_hoisted_551","_hoisted_552","_hoisted_553","_hoisted_554","_hoisted_555","_hoisted_556","_hoisted_557","_hoisted_558","_hoisted_559","_hoisted_560","_hoisted_561","_hoisted_562","_hoisted_563","_hoisted_564","_hoisted_565","_hoisted_566","_hoisted_567","_hoisted_568","_hoisted_569","_hoisted_570","_hoisted_571","_hoisted_572","_hoisted_573","_hoisted_574","_hoisted_575","_hoisted_576","_hoisted_577","_hoisted_578","_hoisted_579","_hoisted_580","_hoisted_581","_hoisted_582","_hoisted_583","_hoisted_584","_hoisted_585","_hoisted_586","_hoisted_587","_hoisted_588","_hoisted_589","_hoisted_590","_hoisted_591","_hoisted_592","render","_ctx","_cache","$props","$setup","$data","$options","_openBlock","_createElementBlock","_createElementVNode","el","_normalizeStyle","args","_createTextVNode","_Fragment","_renderList","r","$index","_toDisplayString","_createCommentVNode","m","_createVNode","c","t","p","_createStaticVNode","s","b","sg","a","pt","it","src","st","f","d","pv","u","l","g","n","sr","sm","iv","App_default","render","Component","DCLogic","first","last","p","q","url","SITE_ROOT","s","okMail","okPw","fromChat","reduce","e","Aanmelden_logic_default","Aanmelden_helmet_default","props","__props","useHelmet","Aanmelden_helmet_default","dcv","useDC","Aanmelden_logic_default","import_vue","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","render","_ctx","_cache","$props","$setup","$data","$options","_openBlock","_createElementBlock","_createElementVNode","args","_createTextVNode","_toDisplayString","_createCommentVNode","Aanmelden_default","render","Component","DCLogic","t","React","el","atStart","atEnd","idx","d","card","w","n","q","SITE_ROOT","grid","e","Homepage_logic_default","Homepage_helmet_default","assets","researchPairs","researchCards","import_vue","_hoisted_1","_hoisted_2","_hoisted_3","render","_ctx","_cache","$props","$setup","$data","$options","_openBlock","_createElementBlock","_Fragment","_renderList","card","index","_normalizeStyle","_createElementVNode","line","li","_createCommentVNode","_createTextVNode","_toDisplayString","ResearchCards_default","render","props","__props","useHelmet","Homepage_helmet_default","dcv","useDC","Homepage_logic_default","import_vue","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","render","_ctx","_cache","$props","$setup","$data","$options","_openBlock","_createElementBlock","_createElementVNode","_createTextVNode","_createStaticVNode","_createCommentVNode","args","el","_normalizeStyle","_createVNode","_toDisplayString","Homepage_default","render","Component","DCLogic","SITE_ROOT","s","okMail","reduce","e","Login_logic_default","Login_helmet_default","props","__props","useHelmet","Login_helmet_default","dcv","useDC","Login_logic_default","import_vue","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","render","_ctx","_cache","$props","$setup","$data","$options","_openBlock","_createElementBlock","_createElementVNode","args","_createTextVNode","_createStaticVNode","_createCommentVNode","_toDisplayString","Login_default","render","Component","DCLogic","SITE_ROOT","title","key","base","i","th","bg","j","Overzicht_logic_default","Overzicht_helmet_default","props","__props","useHelmet","Overzicht_helmet_default","dcv","useDC","Overzicht_logic_default","import_vue","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","render","_ctx","_cache","$props","$setup","$data","$options","_openBlock","_createElementBlock","_createElementVNode","_createTextVNode","_Fragment","_renderList","row","$index","_toDisplayString","_createCommentVNode","f","_normalizeStyle","Overzicht_default","render","views","Homepage_default","App_default","Login_default","Aanmelden_default","Beheer_default","Overzicht_default","route","currentRoute","setupPopupDialog","setupPopupHost","aps"]}