@bigbinary/neeto-editor-frontend 2.0.4 → 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/dist/.ready +1 -1
  2. package/dist/Attachments.js +3 -3
  3. package/dist/Editor.js +10 -18
  4. package/dist/Editor.js.map +1 -1
  5. package/dist/EditorContent.js +2 -2
  6. package/dist/FormikEditor.js +7 -7
  7. package/dist/Menu.js +5 -5
  8. package/dist/{chunk-BXYtUHQm.js → chunk-2yDx3K8L.js} +5 -5
  9. package/dist/{chunk-BXYtUHQm.js.map → chunk-2yDx3K8L.js.map} +1 -1
  10. package/dist/{chunk-CiVaat1H.js → chunk-9vP3rEtI.js} +3 -3
  11. package/dist/{chunk-CiVaat1H.js.map → chunk-9vP3rEtI.js.map} +1 -1
  12. package/dist/{chunk-BrtRq7Gb.js → chunk-C4efob7L.js} +3 -3
  13. package/dist/{chunk-BrtRq7Gb.js.map → chunk-C4efob7L.js.map} +1 -1
  14. package/dist/{chunk-BNY-ueoj.js → chunk-C6Wn4nia.js} +2 -2
  15. package/dist/{chunk-BNY-ueoj.js.map → chunk-C6Wn4nia.js.map} +1 -1
  16. package/dist/{chunk-CfQriKjH.js → chunk-C893rdfW.js} +3 -3
  17. package/dist/{chunk-CfQriKjH.js.map → chunk-C893rdfW.js.map} +1 -1
  18. package/dist/{chunk-DByRVJk9.js → chunk-CA9DTddx.js} +2 -2
  19. package/dist/{chunk-DByRVJk9.js.map → chunk-CA9DTddx.js.map} +1 -1
  20. package/dist/{chunk-SHwPiLy9.js → chunk-CJfLgMJF.js} +4 -4
  21. package/dist/{chunk-SHwPiLy9.js.map → chunk-CJfLgMJF.js.map} +1 -1
  22. package/dist/{chunk-DSKEeXyj.js → chunk-CNIDH-FD.js} +2 -2
  23. package/dist/{chunk-DSKEeXyj.js.map → chunk-CNIDH-FD.js.map} +1 -1
  24. package/dist/{chunk-Bg0xYw5S.js → chunk-C_P2M3zF.js} +3 -3
  25. package/dist/{chunk-Bg0xYw5S.js.map → chunk-C_P2M3zF.js.map} +1 -1
  26. package/dist/{chunk-Ba4Q3HC8.js → chunk-Cnk9-9SJ.js} +50 -11
  27. package/dist/chunk-Cnk9-9SJ.js.map +1 -0
  28. package/dist/{chunk-DIORcYan.js → chunk-Dm4Qt79M.js} +4 -4
  29. package/dist/{chunk-DIORcYan.js.map → chunk-Dm4Qt79M.js.map} +1 -1
  30. package/dist/{chunk-CyfiHLWx.js → chunk-UwzgbfZD.js} +12 -2
  31. package/dist/{chunk-CyfiHLWx.js.map → chunk-UwzgbfZD.js.map} +1 -1
  32. package/dist/{chunk-BzEP-HS9.js → chunk-jiUuXPs1.js} +4 -4
  33. package/dist/{chunk-BzEP-HS9.js.map → chunk-jiUuXPs1.js.map} +1 -1
  34. package/dist/cjs/Attachments.cjs.js +3 -3
  35. package/dist/cjs/Editor.cjs.js +10 -18
  36. package/dist/cjs/Editor.cjs.js.map +1 -1
  37. package/dist/cjs/EditorContent.cjs.js +2 -2
  38. package/dist/cjs/FormikEditor.cjs.js +7 -7
  39. package/dist/cjs/Menu.cjs.js +5 -5
  40. package/dist/cjs/{chunk-CtTb6u9F.cjs.js → chunk-B1X-JIj8.cjs.js} +2 -2
  41. package/dist/cjs/{chunk-CtTb6u9F.cjs.js.map → chunk-B1X-JIj8.cjs.js.map} +1 -1
  42. package/dist/cjs/{chunk-DqjTYIpN.cjs.js → chunk-BETPWBif.cjs.js} +3 -3
  43. package/dist/cjs/{chunk-DqjTYIpN.cjs.js.map → chunk-BETPWBif.cjs.js.map} +1 -1
  44. package/dist/cjs/{chunk-CcJ_Jcsm.cjs.js → chunk-BL4O70ER.cjs.js} +4 -4
  45. package/dist/cjs/{chunk-CcJ_Jcsm.cjs.js.map → chunk-BL4O70ER.cjs.js.map} +1 -1
  46. package/dist/cjs/{chunk-BfUeWeV6.cjs.js → chunk-Bm1Dzh4r.cjs.js} +2 -2
  47. package/dist/cjs/{chunk-BfUeWeV6.cjs.js.map → chunk-Bm1Dzh4r.cjs.js.map} +1 -1
  48. package/dist/cjs/{chunk-BNUTjVYA.cjs.js → chunk-BxKa_XOs.cjs.js} +12 -1
  49. package/dist/cjs/{chunk-BNUTjVYA.cjs.js.map → chunk-BxKa_XOs.cjs.js.map} +1 -1
  50. package/dist/cjs/{chunk-DxXc6tiG.cjs.js → chunk-CNhef3wf.cjs.js} +50 -10
  51. package/dist/cjs/chunk-CNhef3wf.cjs.js.map +1 -0
  52. package/dist/cjs/{chunk-D1iu346F.cjs.js → chunk-CQ-j2kAX.cjs.js} +2 -2
  53. package/dist/cjs/{chunk-D1iu346F.cjs.js.map → chunk-CQ-j2kAX.cjs.js.map} +1 -1
  54. package/dist/cjs/{chunk-Bv4wbN1E.cjs.js → chunk-DBQBe3dq.cjs.js} +3 -3
  55. package/dist/cjs/{chunk-Bv4wbN1E.cjs.js.map → chunk-DBQBe3dq.cjs.js.map} +1 -1
  56. package/dist/cjs/{chunk-C98N-sIR.cjs.js → chunk-DRTgn9TG.cjs.js} +5 -5
  57. package/dist/cjs/{chunk-C98N-sIR.cjs.js.map → chunk-DRTgn9TG.cjs.js.map} +1 -1
  58. package/dist/cjs/{chunk-MFytiUwB.cjs.js → chunk-TCCIxl2A.cjs.js} +3 -3
  59. package/dist/cjs/{chunk-MFytiUwB.cjs.js.map → chunk-TCCIxl2A.cjs.js.map} +1 -1
  60. package/dist/cjs/{chunk-BuuzKD6e.cjs.js → chunk-Ty2BpOZ5.cjs.js} +3 -3
  61. package/dist/cjs/{chunk-BuuzKD6e.cjs.js.map → chunk-Ty2BpOZ5.cjs.js.map} +1 -1
  62. package/dist/cjs/{chunk-DIpaV2xG.cjs.js → chunk-UyXI9oIp.cjs.js} +4 -4
  63. package/dist/cjs/{chunk-DIpaV2xG.cjs.js.map → chunk-UyXI9oIp.cjs.js.map} +1 -1
  64. package/dist/cjs/{chunk-CUiAHc9-.cjs.js → chunk-WeNbd2ic.cjs.js} +4 -4
  65. package/dist/cjs/{chunk-CUiAHc9-.cjs.js.map → chunk-WeNbd2ic.cjs.js.map} +1 -1
  66. package/dist/cjs/constants.cjs.js +2 -2
  67. package/dist/cjs/index.cjs.js +7 -7
  68. package/dist/cjs/utils.cjs.js +3 -3
  69. package/dist/cjs/v2/Attachments.cjs.js +3 -3
  70. package/dist/cjs/v2/Editor.cjs.js +9 -17
  71. package/dist/cjs/v2/Editor.cjs.js.map +1 -1
  72. package/dist/cjs/v2/EditorContent.cjs.js +3 -3
  73. package/dist/cjs/v2/FormikEditor.cjs.js +6 -6
  74. package/dist/cjs/v2/Menu.cjs.js +3 -3
  75. package/dist/cjs/v2/constants.cjs.js +2 -2
  76. package/dist/cjs/v2/index.cjs.js +7 -7
  77. package/dist/cjs/v2/utils.cjs.js +3 -3
  78. package/dist/constants.js +2 -2
  79. package/dist/editor-stats.html +1 -19
  80. package/dist/index.js +7 -7
  81. package/dist/utils.js +3 -3
  82. package/dist/v2/Attachments.js +3 -3
  83. package/dist/v2/Editor.js +9 -17
  84. package/dist/v2/Editor.js.map +1 -1
  85. package/dist/v2/EditorContent.js +3 -3
  86. package/dist/v2/FormikEditor.js +6 -6
  87. package/dist/v2/Menu.js +3 -3
  88. package/dist/v2/constants.js +2 -2
  89. package/dist/v2/index.js +7 -7
  90. package/dist/v2/utils.js +3 -3
  91. package/package.json +2 -1
  92. package/dist/chunk-Ba4Q3HC8.js.map +0 -1
  93. package/dist/cjs/chunk-DxXc6tiG.cjs.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-Cnk9-9SJ.js","sources":["../app/javascript/src/components/Editor/CustomExtensions/LinkKbArticles/constants.js","../app/javascript/src/components/Editor/CustomExtensions/LinkKbArticles/utils.js","../app/javascript/src/hooks/constants/query.js","../app/javascript/src/apis/neeto_kb.js","../app/javascript/src/hooks/reactQuery/kbArticle/useArticleFetching.js","../app/javascript/src/hooks/reactQuery/kbArticle/useDeletedArticles.js","../app/javascript/src/hooks/useEditorWarnings.js","../node_modules/@tiptap/extension-code/dist/index.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/mutex.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/math.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/trait/equality.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/object.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/set.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/array.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/function.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/diff.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/error.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/binary.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/webcrypto.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/random.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/map.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/string.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/conditions.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/storage.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/environment.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/number.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/encoding.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/buffer.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/prng.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/schema.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/dom.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/eventloop.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/hash/sha256.js","../node_modules/@tiptap/y-tiptap/dist/y-tiptap.js","../node_modules/@tiptap/extension-collaboration/dist/index.js","../node_modules/@tiptap/extension-collaboration-caret/dist/index.js","../node_modules/@tiptap/extension-document/dist/index.js","../node_modules/@tiptap/extension-highlight/dist/index.js","../node_modules/@tiptap/extension-list/dist/index.js","../node_modules/@tiptap/extension-table/dist/index.js","../node_modules/@tiptap/extension-text-style/dist/index.js","../node_modules/@tiptap/extension-underline/dist/index.js","../node_modules/prosemirror-dropcursor/dist/index.js","../node_modules/prosemirror-gapcursor/dist/index.js","../node_modules/rope-sequence/dist/index.js","../node_modules/prosemirror-history/dist/index.js","../node_modules/@tiptap/extensions/dist/index.js","../node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.js","../node_modules/@tiptap/extension-blockquote/dist/index.js","../node_modules/@tiptap/extension-bold/dist/index.js","../node_modules/@tiptap/extension-code-block/dist/index.js","../node_modules/@tiptap/extension-hard-break/dist/index.js","../node_modules/@tiptap/extension-heading/dist/index.js","../node_modules/@tiptap/extension-horizontal-rule/dist/index.js","../node_modules/@tiptap/extension-italic/dist/index.js","../node_modules/linkifyjs/dist/linkify.mjs","../node_modules/@tiptap/extension-link/dist/index.js","../node_modules/@tiptap/extension-paragraph/dist/index.js","../node_modules/@tiptap/extension-strike/dist/index.js","../node_modules/@tiptap/extension-text/dist/index.js","../node_modules/@tiptap/starter-kit/dist/index.js","../app/javascript/src/common/safeListKeymap.js","../app/javascript/src/common/safeSplitBlock.js","../node_modules/@tiptap/extension-code-block-lowlight/dist/index.js","../node_modules/@tiptap/suggestion/dist/index.js","../node_modules/re-resizable/lib/resizer.js","../node_modules/re-resizable/lib/index.js","../node_modules/@tiptap/extension-mention/dist/index.js","../app/javascript/src/utils/scrollhandler.js","../app/javascript/src/utils/fuzzySearch.js"],"sourcesContent":["import { globalProps } from \"neetocommons/initializers\";\n\nexport const NEETO_KB_ENDPOINT = globalProps?.kbUrl;\nexport const NEETO_KB_ARTICLES_URL = \"/api/v1/articles\";\nexport const NEETO_KB_CATEGORIES_URL = \"/api/v1/categories\";\n\nexport const MODE = { MODAL: \"modal\", SELECT: \"select\" };\n\nexport const MODAL_BOTTOM_MARGIN = 50;\nexport const MODAL_LEFT_OFFSET = 50;\nexport const MODAL_TOP_OFFSET = 22;\nexport const MODAL_TRANSFORM_Y = 52;\nexport const MODAL_TRANSFORM_X = 8;\n","import { decodeHtmlEntities } from \"src/utils/common\";\n\nimport { NEETO_KB_ENDPOINT } from \"./constants\";\n\nexport const buildArticleFullUrl = slug =>\n slug ? `${NEETO_KB_ENDPOINT}/articles/${slug}` : null;\n\nexport const createArticleOptions = articles =>\n articles.map(article => ({\n label: decodeHtmlEntities(article.title),\n value: article.id,\n data: { type: \"article\", ...article },\n }));\n\nexport const extractKbArticleIds = editor => {\n if (!editor) return [];\n\n const articleIds = [];\n const { doc } = editor.state;\n\n doc.descendants(node => {\n if (node.marks) {\n node.marks.forEach(mark => {\n if (\n mark.type.name === \"link\" &&\n mark.attrs[\"data-neeto-kb-article\"] === \"true\" &&\n mark.attrs[\"data-article-id\"]\n ) {\n articleIds.push(mark.attrs[\"data-article-id\"]);\n }\n });\n }\n });\n\n return [...new Set(articleIds)];\n};\n","export const QUERY_KEYS = { KB_ARTICLES: \"KB_ARTICLES\" };\n","import axios from \"axios\";\nimport { globalProps } from \"neetocommons/initializers\";\n\nimport {\n NEETO_KB_ENDPOINT,\n NEETO_KB_ARTICLES_URL,\n} from \"../components/Editor/CustomExtensions/LinkKbArticles/constants\";\n\nconst apiConfig = {\n baseURL: NEETO_KB_ENDPOINT,\n headers: { \"X-Neeto-API-Key\": globalProps?.organization?.apiKey },\n transformResponseCase: false,\n transformRequestCase: false,\n};\n\nconst fetchArticles = params =>\n axios.get(NEETO_KB_ARTICLES_URL, { ...apiConfig, params });\n\nconst neetoKbApi = { fetchArticles };\n\nexport default neetoKbApi;\n","import { useQuery } from \"@tanstack/react-query\";\n\nimport { QUERY_KEYS } from \"hooks/constants/query\";\nimport neetoKbApi from \"src/apis/neeto_kb\";\n\nconst useFetchKbArticles = ({\n searchTerm = \"\",\n reactQueryOptions = {},\n} = {}) => {\n const queryParams = searchTerm ? { search_term: searchTerm } : {};\n\n return useQuery({\n queryKey: [QUERY_KEYS.KB_ARTICLES, queryParams],\n queryFn: async () => {\n const response = await neetoKbApi.fetchArticles(queryParams);\n\n return response.articles || response.data?.articles || [];\n },\n ...reactQueryOptions,\n });\n};\n\nexport { useFetchKbArticles };\n","import { useState, useEffect } from \"react\";\n\nimport { isEmpty, pluck } from \"ramda\";\n\nimport { extractKbArticleIds } from \"src/components/Editor/CustomExtensions/LinkKbArticles/utils\";\n\nimport { useFetchKbArticles } from \"./useArticleFetching\";\n\nexport const useDeletedArticles = editor => {\n const [deletedArticleIds, setDeletedArticleIds] = useState(new Set());\n\n const { data: allArticles = [], isLoading: isCheckingDeleted } =\n useFetchKbArticles({\n searchTerm: \"\",\n reactQueryOptions: { enabled: !!editor },\n });\n\n const checkAllArticles = () => {\n if (!editor) return;\n\n const articleIdsInEditor = extractKbArticleIds(editor);\n if (isEmpty(articleIdsInEditor)) {\n setDeletedArticleIds(new Set());\n\n return;\n }\n\n const existingArticleIds = new Set(pluck(\"id\", allArticles));\n\n const deletedIds = new Set(\n articleIdsInEditor.filter(id => !existingArticleIds.has(id))\n );\n\n setDeletedArticleIds(deletedIds);\n };\n\n useEffect(() => {\n if (!editor || isEmpty(allArticles)) return;\n\n checkAllArticles();\n }, [allArticles, editor]);\n\n return {\n deletedArticleIds,\n isCheckingDeleted,\n isArticleDeleted: deletedArticleIds.has.bind(deletedArticleIds),\n checkAllArticles,\n };\n};\n","import { useEffect } from \"react\";\n\nimport { isNotPresent } from \"neetocist\";\n\nconst useEditorWarnings = ({ initialValue }) => {\n useEffect(() => {\n const isProduction = [process.env.RAILS_ENV, process.env.NODE_ENV].includes(\n \"production\"\n );\n if (!isProduction && isNotPresent(initialValue)) {\n // eslint-disable-next-line no-console\n console.warn(\n `[neeto-editor]: Empty value of \"initialValue\" in needtoEditor is expected to be \"<p></p>\" instead of \"${initialValue}\".`\n );\n }\n }, [initialValue]);\n};\n\nexport default useEditorWarnings;\n","import { Mark, markInputRule, markPasteRule, mergeAttributes } from \"@tiptap/core\";\n//#region src/code.ts\n/**\n* The regular expression used for the inline code input rule.\n* @deprecated The extension now uses a function-based finder internally.\n* This regex is kept for backward compatibility.\n*/\nconst inputRegex = /(^|[^`])`([^`]+)`(?!`)$/;\n/**\n* The regular expression used for the inline code paste rule.\n* @deprecated The extension now uses a function-based finder internally.\n* This regex is kept for backward compatibility.\n*/\nconst pasteRegex = /(^|[^`])`([^`]+)`(?!`)/g;\n/**\n* A function-based finder for the inline code input rule.\n* Used internally by the extension to ensure the preceding character\n* is not consumed as part of the match, preventing it from being deleted.\n*/\nconst inputRegexMatch = (text) => {\n\tconst match = /`([^`]+)`(?!`)$/.exec(text);\n\tif (!match) return null;\n\tif (match.index > 0 && text[match.index - 1] === \"`\") return null;\n\treturn {\n\t\tindex: match.index,\n\t\ttext: match[0],\n\t\treplaceWith: match[1]\n\t};\n};\n/**\n* A function-based finder for the inline code paste rule.\n* Used internally by the extension to avoid consuming the preceding\n* character as part of the match.\n*/\nconst pasteRegexMatch = (text) => {\n\tconst regex = /`([^`]+)`(?!`)/g;\n\tconst matches = [];\n\tlet match;\n\twhile ((match = regex.exec(text)) !== null) {\n\t\tif (match.index > 0 && text[match.index - 1] === \"`\") continue;\n\t\tmatches.push({\n\t\t\tindex: match.index,\n\t\t\ttext: match[0],\n\t\t\treplaceWith: match[1]\n\t\t});\n\t}\n\treturn matches;\n};\n/**\n* This extension allows you to mark text as inline code.\n* @see https://tiptap.dev/api/marks/code\n*/\nconst Code = Mark.create({\n\tname: \"code\",\n\taddOptions() {\n\t\treturn { HTMLAttributes: {} };\n\t},\n\texcludes: \"_\",\n\tcode: true,\n\texitable: true,\n\tparseHTML() {\n\t\treturn [{ tag: \"code\" }];\n\t},\n\trenderHTML({ HTMLAttributes }) {\n\t\treturn [\n\t\t\t\"code\",\n\t\t\tmergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n\t\t\t0\n\t\t];\n\t},\n\tmarkdownTokenName: \"codespan\",\n\tparseMarkdown: (token, helpers) => {\n\t\treturn helpers.applyMark(\"code\", [{\n\t\t\ttype: \"text\",\n\t\t\ttext: token.text || \"\"\n\t\t}]);\n\t},\n\trenderMarkdown: (node, h) => {\n\t\tif (!node.content) return \"\";\n\t\treturn `\\`${h.renderChildren(node.content)}\\``;\n\t},\n\taddCommands() {\n\t\treturn {\n\t\t\tsetCode: () => ({ commands }) => {\n\t\t\t\treturn commands.setMark(this.name);\n\t\t\t},\n\t\t\ttoggleCode: () => ({ commands }) => {\n\t\t\t\treturn commands.toggleMark(this.name);\n\t\t\t},\n\t\t\tunsetCode: () => ({ commands }) => {\n\t\t\t\treturn commands.unsetMark(this.name);\n\t\t\t}\n\t\t};\n\t},\n\taddKeyboardShortcuts() {\n\t\treturn { \"Mod-e\": () => this.editor.commands.toggleCode() };\n\t},\n\taddInputRules() {\n\t\treturn [markInputRule({\n\t\t\tfind: inputRegexMatch,\n\t\t\ttype: this.type\n\t\t})];\n\t},\n\taddPasteRules() {\n\t\treturn [markPasteRule({\n\t\t\tfind: pasteRegexMatch,\n\t\t\ttype: this.type\n\t\t})];\n\t}\n});\n//#endregion\n//#region src/index.ts\nvar src_default = Code;\n//#endregion\nexport { Code, src_default as default, inputRegex, inputRegexMatch, pasteRegex, pasteRegexMatch };\n\n//# sourceMappingURL=index.js.map","/**\n * Mutual exclude for JavaScript.\n *\n * @module mutex\n */\n\n/**\n * @callback mutex\n * @param {function():void} cb Only executed when this mutex is not in the current stack\n * @param {function():void} [elseCb] Executed when this mutex is in the current stack\n */\n\n/**\n * Creates a mutual exclude function with the following property:\n *\n * ```js\n * const mutex = createMutex()\n * mutex(() => {\n * // This function is immediately executed\n * mutex(() => {\n * // This function is not executed, as the mutex is already active.\n * })\n * })\n * ```\n *\n * @return {mutex} A mutual exclude function\n * @public\n */\nexport const createMutex = () => {\n let token = true\n return (f, g) => {\n if (token) {\n token = false\n try {\n f()\n } finally {\n token = true\n }\n } else if (g !== undefined) {\n g()\n }\n }\n}\n","/**\n * Common Math expressions.\n *\n * @module math\n */\n\nexport const floor = Math.floor\nexport const ceil = Math.ceil\nexport const abs = Math.abs\nexport const imul = Math.imul\nexport const round = Math.round\nexport const log10 = Math.log10\nexport const log2 = Math.log2\nexport const log = Math.log\nexport const sqrt = Math.sqrt\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The sum of a and b\n */\nexport const add = (a, b) => a + b\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The smaller element of a and b\n */\nexport const min = (a, b) => a < b ? a : b\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The bigger element of a and b\n */\nexport const max = (a, b) => a > b ? a : b\n\nexport const isNaN = Number.isNaN\n\nexport const pow = Math.pow\n/**\n * Base 10 exponential function. Returns the value of 10 raised to the power of pow.\n *\n * @param {number} exp\n * @return {number}\n */\nexport const exp10 = exp => Math.pow(10, exp)\n\nexport const sign = Math.sign\n\n/**\n * Check whether n is negative, while considering the -0 edge case. While `-0 < 0` is false, this\n * function returns true for -0,-1,,.. and returns false for 0,1,2,...\n * @param {number} n\n * @return {boolean} Wether n is negative. This function also distinguishes between -0 and +0\n */\nexport const isNegativeZero = n => n !== 0 ? n < 0 : 1 / n < 0\n","export const EqualityTraitSymbol = Symbol('Equality')\n\n/**\n * @typedef {{ [EqualityTraitSymbol]:(other:EqualityTrait)=>boolean }} EqualityTrait\n */\n\n/**\n *\n * Utility function to compare any two objects.\n *\n * Note that it is expected that the first parameter is more specific than the latter one.\n *\n * @example js\n * class X { [traits.EqualityTraitSymbol] (other) { return other === this } }\n * class X2 { [traits.EqualityTraitSymbol] (other) { return other === this }, x2 () { return 2 } }\n * // this is fine\n * traits.equals(new X2(), new X())\n * // this is not, because the left type is less specific than the right one\n * traits.equals(new X(), new X2())\n *\n * @template {EqualityTrait} T\n * @param {NoInfer<T>} a\n * @param {T} b\n * @return {boolean}\n */\nexport const equals = (a, b) => a === b || !!a?.[EqualityTraitSymbol]?.(b) || false\n","import * as equalityTrait from './trait/equality.js'\n\n/**\n * Utility functions for working with EcmaScript objects.\n *\n * @module object\n */\n\n/**\n * @return {Object<string,any>} obj\n */\nexport const create = () => Object.create(null)\n\n/**\n * @param {any} o\n * @return {o is { [k:string]:any }}\n */\nexport const isObject = o => typeof o === 'object'\n\n/**\n * Object.assign\n */\nexport const assign = Object.assign\n\n/**\n * @param {Object<string,any>} obj\n */\nexport const keys = Object.keys\n\n/**\n * @template V\n * @param {{[key:string]: V}} obj\n * @return {Array<V>}\n */\nexport const values = Object.values\n\n/**\n * @template V\n * @param {{[k:string]:V}} obj\n * @param {function(V,string):any} f\n */\nexport const forEach = (obj, f) => {\n for (const key in obj) {\n f(obj[key], key)\n }\n}\n\n/**\n * @todo implement mapToArray & map\n *\n * @template R\n * @param {Object<string,any>} obj\n * @param {function(any,string):R} f\n * @return {Array<R>}\n */\nexport const map = (obj, f) => {\n const results = []\n for (const key in obj) {\n results.push(f(obj[key], key))\n }\n return results\n}\n\n/**\n * @deprecated use object.size instead\n * @param {Object<string,any>} obj\n * @return {number}\n */\nexport const length = obj => keys(obj).length\n\n/**\n * @param {Object<string,any>} obj\n * @return {number}\n */\nexport const size = obj => keys(obj).length\n\n/**\n * @template {{ [key:string|number|symbol]: any }} T\n * @param {T} obj\n * @param {(v:T[keyof T],k:keyof T)=>boolean} f\n * @return {boolean}\n */\nexport const some = (obj, f) => {\n for (const key in obj) {\n if (f(obj[key], key)) {\n return true\n }\n }\n return false\n}\n\n/**\n * @param {Object|null|undefined} obj\n */\nexport const isEmpty = obj => {\n // eslint-disable-next-line no-unreachable-loop\n for (const _k in obj) {\n return false\n }\n return true\n}\n\n/**\n * @template {{ [key:string|number|symbol]: any }} T\n * @param {T} obj\n * @param {(v:T[keyof T],k:keyof T)=>boolean} f\n * @return {boolean}\n */\nexport const every = (obj, f) => {\n for (const key in obj) {\n if (!f(obj[key], key)) {\n return false\n }\n }\n return true\n}\n\n/**\n * Calls `Object.prototype.hasOwnProperty`.\n *\n * @param {any} obj\n * @param {string|number|symbol} key\n * @return {boolean}\n */\nexport const hasProperty = (obj, key) => Object.prototype.hasOwnProperty.call(obj, key)\n\n/**\n * @param {Object<string,any>} a\n * @param {Object<string,any>} b\n * @return {boolean}\n */\nexport const equalFlat = (a, b) => a === b || (size(a) === size(b) && every(a, (val, key) => (val !== undefined || hasProperty(b, key)) && equalityTrait.equals(b[key], val)))\n\n/**\n * Make an object immutable. This hurts performance and is usually not needed if you perform good\n * coding practices.\n */\nexport const freeze = Object.freeze\n\n/**\n * Make an object and all its children immutable.\n * This *really* hurts performance and is usually not needed if you perform good coding practices.\n *\n * @template {any} T\n * @param {T} o\n * @return {Readonly<T>}\n */\nexport const deepFreeze = (o) => {\n for (const key in o) {\n const c = o[key]\n if (typeof c === 'object' || typeof c === 'function') {\n deepFreeze(o[key])\n }\n }\n return freeze(o)\n}\n\n/**\n * Get object property. Create T if property is undefined and set T on object.\n *\n * @function\n * @template {object} KV\n * @template {keyof KV} [K=keyof KV]\n * @param {KV} o\n * @param {K} key\n * @param {() => KV[K]} createT\n * @return {KV[K]}\n */\nexport const setIfUndefined = (o, key, createT) => hasProperty(o, key) ? o[key] : (o[key] = createT())\n","/**\n * Utility module to work with sets.\n *\n * @module set\n */\n\nexport const create = () => new Set()\n\n/**\n * @template T\n * @param {Set<T>} set\n * @return {Array<T>}\n */\nexport const toArray = set => Array.from(set)\n\n/**\n * @template T\n * @param {Set<T>} set\n * @return {T|undefined}\n */\nexport const first = set => set.values().next().value\n\n/**\n * @template T\n * @param {Iterable<T>} entries\n * @return {Set<T>}\n */\nexport const from = entries => new Set(entries)\n","/**\n * Utility module to work with Arrays.\n *\n * @module array\n */\n\nimport * as set from './set.js'\n\n/**\n * Return the last element of an array. The element must exist\n *\n * @template L\n * @param {ArrayLike<L>} arr\n * @return {L}\n */\nexport const last = arr => arr[arr.length - 1]\n\n/**\n * @template C\n * @return {Array<C>}\n */\nexport const create = () => /** @type {Array<C>} */ ([])\n\n/**\n * @template D\n * @param {Array<D>} a\n * @return {Array<D>}\n */\nexport const copy = a => /** @type {Array<D>} */ (a.slice())\n\n/**\n * Append elements from src to dest\n *\n * @template M\n * @param {Array<M>} dest\n * @param {Array<M>} src\n */\nexport const appendTo = (dest, src) => {\n for (let i = 0; i < src.length; i++) {\n dest.push(src[i])\n }\n}\n\n/**\n * Transforms something array-like to an actual Array.\n *\n * @function\n * @template T\n * @param {ArrayLike<T>|Iterable<T>} arraylike\n * @return {T}\n */\nexport const from = Array.from\n\n/**\n * True iff condition holds on every element in the Array.\n *\n * @function\n * @template {ArrayLike<any>} ARR\n *\n * @param {ARR} arr\n * @param {ARR extends ArrayLike<infer S> ? ((value:S, index:number, arr:ARR) => boolean) : any} f\n * @return {boolean}\n */\nexport const every = (arr, f) => {\n for (let i = 0; i < arr.length; i++) {\n if (!f(arr[i], i, arr)) {\n return false\n }\n }\n return true\n}\n\n/**\n * True iff condition holds on some element in the Array.\n *\n * @function\n * @template {ArrayLike<any>} ARR\n *\n * @param {ARR} arr\n * @param {ARR extends ArrayLike<infer S> ? ((value:S, index:number, arr:ARR) => boolean) : never} f\n * @return {boolean}\n */\nexport const some = (arr, f) => {\n for (let i = 0; i < arr.length; i++) {\n if (f(arr[i], i, arr)) {\n return true\n }\n }\n return false\n}\n\n/**\n * @template ELEM\n *\n * @param {ArrayLike<ELEM>} a\n * @param {ArrayLike<ELEM>} b\n * @return {boolean}\n */\nexport const equalFlat = (a, b) => a.length === b.length && every(a, (item, index) => item === b[index])\n\n/**\n * @template ELEM\n * @param {Array<Array<ELEM>>} arr\n * @return {Array<ELEM>}\n */\nexport const flatten = arr => fold(arr, /** @type {Array<ELEM>} */ ([]), (acc, val) => acc.concat(val))\n\n/**\n * @template T\n * @param {number} len\n * @param {function(number, Array<T>):T} f\n * @return {Array<T>}\n */\nexport const unfold = (len, f) => {\n const array = new Array(len)\n for (let i = 0; i < len; i++) {\n array[i] = f(i, array)\n }\n return array\n}\n\n/**\n * @template T\n * @template RESULT\n * @param {Array<T>} arr\n * @param {RESULT} seed\n * @param {function(RESULT, T, number):RESULT} folder\n */\nexport const fold = (arr, seed, folder) => arr.reduce(folder, seed)\n\nexport const isArray = Array.isArray\n\n/**\n * @template T\n * @param {Array<T>} arr\n * @return {Array<T>}\n */\nexport const unique = arr => from(set.from(arr))\n\n/**\n * @template T\n * @template M\n * @param {ArrayLike<T>} arr\n * @param {function(T):M} mapper\n * @return {Array<T>}\n */\nexport const uniqueBy = (arr, mapper) => {\n /**\n * @type {Set<M>}\n */\n const happened = set.create()\n /**\n * @type {Array<T>}\n */\n const result = []\n for (let i = 0; i < arr.length; i++) {\n const el = arr[i]\n const mapped = mapper(el)\n if (!happened.has(mapped)) {\n happened.add(mapped)\n result.push(el)\n }\n }\n return result\n}\n\n/**\n * @template {ArrayLike<any>} ARR\n * @template {function(ARR extends ArrayLike<infer T> ? T : never, number, ARR):any} MAPPER\n * @param {ARR} arr\n * @param {MAPPER} mapper\n * @return {Array<MAPPER extends function(...any): infer M ? M : never>}\n */\nexport const map = (arr, mapper) => {\n /**\n * @type {Array<any>}\n */\n const res = Array(arr.length)\n for (let i = 0; i < arr.length; i++) {\n res[i] = mapper(/** @type {any} */ (arr[i]), i, /** @type {any} */ (arr))\n }\n return /** @type {any} */ (res)\n}\n\n/**\n * This function bubble-sorts a single item to the correct position. The sort happens in-place and\n * might be useful to ensure that a single item is at the correct position in an otherwise sorted\n * array.\n *\n * @example\n * const arr = [3, 2, 5]\n * arr.sort((a, b) => a - b)\n * arr // => [2, 3, 5]\n * arr.splice(1, 0, 7)\n * array.bubbleSortItem(arr, 1, (a, b) => a - b)\n * arr // => [2, 3, 5, 7]\n *\n * @template T\n * @param {Array<T>} arr\n * @param {number} i\n * @param {(a:T,b:T) => number} compareFn\n */\nexport const bubblesortItem = (arr, i, compareFn) => {\n const n = arr[i]\n let j = i\n // try to sort to the right\n while (j + 1 < arr.length && compareFn(n, arr[j + 1]) > 0) {\n arr[j] = arr[j + 1]\n arr[++j] = n\n }\n if (i === j && j > 0) { // no change yet\n // sort to the left\n while (j > 0 && compareFn(arr[j - 1], n) > 0) {\n arr[j] = arr[j - 1]\n arr[--j] = n\n }\n }\n return j\n}\n","/**\n * Common functions and function call helpers.\n *\n * @module function\n */\n\nimport * as array from './array.js'\nimport * as object from './object.js'\nimport * as equalityTrait from './trait/equality.js'\n\n/**\n * Calls all functions in `fs` with args. Only throws after all functions were called.\n *\n * @param {Array<function>} fs\n * @param {Array<any>} args\n */\nexport const callAll = (fs, args, i = 0) => {\n try {\n for (; i < fs.length; i++) {\n fs[i](...args)\n }\n } finally {\n if (i < fs.length) {\n callAll(fs, args, i + 1)\n }\n }\n}\n\nexport const nop = () => {}\n\n/**\n * @template T\n * @param {function():T} f\n * @return {T}\n */\nexport const apply = f => f()\n\n/**\n * @template A\n *\n * @param {A} a\n * @return {A}\n */\nexport const id = a => a\n\n/**\n * @template T\n *\n * @param {T} a\n * @param {T} b\n * @return {boolean}\n */\nexport const equalityStrict = (a, b) => a === b\n\n/**\n * @template T\n *\n * @param {Array<T>|object} a\n * @param {Array<T>|object} b\n * @return {boolean}\n */\nexport const equalityFlat = (a, b) => a === b || (a != null && b != null && a.constructor === b.constructor && ((array.isArray(a) && array.equalFlat(a, /** @type {Array<T>} */ (b))) || (typeof a === 'object' && object.equalFlat(a, b))))\n\n/* c8 ignore start */\n\n/**\n * @param {any} a\n * @param {any} b\n * @return {boolean}\n */\nexport const equalityDeep = (a, b) => {\n if (a === b) {\n return true\n }\n if (a == null || b == null || (a.constructor !== b.constructor && (a.constructor || Object) !== (b.constructor || Object))) {\n return false\n }\n if (a[equalityTrait.EqualityTraitSymbol] != null) {\n return a[equalityTrait.EqualityTraitSymbol](b)\n }\n switch (a.constructor) {\n case ArrayBuffer:\n a = new Uint8Array(a)\n b = new Uint8Array(b)\n // eslint-disable-next-line no-fallthrough\n case Uint8Array: {\n if (a.byteLength !== b.byteLength) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false\n }\n }\n break\n }\n case Set: {\n if (a.size !== b.size) {\n return false\n }\n for (const value of a) {\n if (!b.has(value)) {\n return false\n }\n }\n break\n }\n case Map: {\n if (a.size !== b.size) {\n return false\n }\n for (const key of a.keys()) {\n if (!b.has(key) || !equalityDeep(a.get(key), b.get(key))) {\n return false\n }\n }\n break\n }\n case undefined:\n case Object:\n if (object.size(a) !== object.size(b)) {\n return false\n }\n for (const key in a) {\n if (!object.hasProperty(a, key) || !equalityDeep(a[key], b[key])) {\n return false\n }\n }\n break\n case Array:\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (!equalityDeep(a[i], b[i])) {\n return false\n }\n }\n break\n default:\n return false\n }\n return true\n}\n\n/**\n * @template V\n * @template {V} OPTS\n *\n * @param {V} value\n * @param {Array<OPTS>} options\n */\n// @ts-ignore\nexport const isOneOf = (value, options) => options.includes(value)\n/* c8 ignore stop */\n\nexport const isArray = array.isArray\n\n/**\n * @param {any} s\n * @return {s is String}\n */\nexport const isString = (s) => s && s.constructor === String\n\n/**\n * @param {any} n\n * @return {n is Number}\n */\nexport const isNumber = n => n != null && n.constructor === Number\n\n/**\n * @template {abstract new (...args: any) => any} TYPE\n * @param {any} n\n * @param {TYPE} T\n * @return {n is InstanceType<TYPE>}\n */\nexport const is = (n, T) => n && n.constructor === T\n\n/**\n * @template {abstract new (...args: any) => any} TYPE\n * @param {TYPE} T\n */\nexport const isTemplate = (T) =>\n /**\n * @param {any} n\n * @return {n is InstanceType<TYPE>}\n **/\n n => n && n.constructor === T\n","/**\n * Efficient diffs.\n *\n * @module diff\n */\n\nimport { equalityStrict } from './function.js'\n\n/**\n * A SimpleDiff describes a change on a String.\n *\n * ```js\n * console.log(a) // the old value\n * console.log(b) // the updated value\n * // Apply changes of diff (pseudocode)\n * a.remove(diff.index, diff.remove) // Remove `diff.remove` characters\n * a.insert(diff.index, diff.insert) // Insert `diff.insert`\n * a === b // values match\n * ```\n *\n * @template {string|Array<any>} T\n * @typedef {Object} SimpleDiff\n * @property {Number} index The index where changes were applied\n * @property {Number} remove The number of characters to delete starting\n * at `index`.\n * @property {T} insert The new text to insert at `index` after applying\n */\n\nconst highSurrogateRegex = /[\\uD800-\\uDBFF]/\nconst lowSurrogateRegex = /[\\uDC00-\\uDFFF]/\n\n/**\n * Create a diff between two strings. This diff implementation is highly\n * efficient, but not very sophisticated.\n *\n * @function\n *\n * @param {string} a The old version of the string\n * @param {string} b The updated version of the string\n * @return {SimpleDiff<string>} The diff description.\n */\nexport const simpleDiffString = (a, b) => {\n let left = 0 // number of same characters counting from left\n let right = 0 // number of same characters counting from right\n while (left < a.length && left < b.length && a[left] === b[left]) {\n left++\n }\n // If the last same character is a high surrogate, we need to rollback to the previous character\n if (left > 0 && highSurrogateRegex.test(a[left - 1])) left--\n while (right + left < a.length && right + left < b.length && a[a.length - right - 1] === b[b.length - right - 1]) {\n right++\n }\n // If the last same character is a low surrogate, we need to rollback to the previous character\n if (right > 0 && lowSurrogateRegex.test(a[a.length - right])) right--\n return {\n index: left,\n remove: a.length - left - right,\n insert: b.slice(left, b.length - right)\n }\n}\n\n/**\n * @todo Remove in favor of simpleDiffString\n * @deprecated\n */\nexport const simpleDiff = simpleDiffString\n\n/**\n * Create a diff between two arrays. This diff implementation is highly\n * efficient, but not very sophisticated.\n *\n * Note: This is basically the same function as above. Another function was created so that the runtime\n * can better optimize these function calls.\n *\n * @function\n * @template T\n *\n * @param {Array<T>} a The old version of the array\n * @param {Array<T>} b The updated version of the array\n * @param {function(T, T):boolean} [compare]\n * @return {SimpleDiff<Array<T>>} The diff description.\n */\nexport const simpleDiffArray = (a, b, compare = equalityStrict) => {\n let left = 0 // number of same characters counting from left\n let right = 0 // number of same characters counting from right\n while (left < a.length && left < b.length && compare(a[left], b[left])) {\n left++\n }\n while (right + left < a.length && right + left < b.length && compare(a[a.length - right - 1], b[b.length - right - 1])) {\n right++\n }\n return {\n index: left,\n remove: a.length - left - right,\n insert: b.slice(left, b.length - right)\n }\n}\n\n/**\n * Diff text and try to diff at the current cursor position.\n *\n * @param {string} a\n * @param {string} b\n * @param {number} cursor This should refer to the current left cursor-range position\n */\nexport const simpleDiffStringWithCursor = (a, b, cursor) => {\n let left = 0 // number of same characters counting from left\n let right = 0 // number of same characters counting from right\n // Iterate left to the right until we find a changed character\n // First iteration considers the current cursor position\n while (\n left < a.length &&\n left < b.length &&\n a[left] === b[left] &&\n left < cursor\n ) {\n left++\n }\n // If the last same character is a high surrogate, we need to rollback to the previous character\n if (left > 0 && highSurrogateRegex.test(a[left - 1])) left--\n // Iterate right to the left until we find a changed character\n while (\n right + left < a.length &&\n right + left < b.length &&\n a[a.length - right - 1] === b[b.length - right - 1]\n ) {\n right++\n }\n // If the last same character is a low surrogate, we need to rollback to the previous character\n if (right > 0 && lowSurrogateRegex.test(a[a.length - right])) right--\n // Try to iterate left further to the right without caring about the current cursor position\n while (\n right + left < a.length &&\n right + left < b.length &&\n a[left] === b[left]\n ) {\n left++\n }\n if (left > 0 && highSurrogateRegex.test(a[left - 1])) left--\n return {\n index: left,\n remove: a.length - left - right,\n insert: b.slice(left, b.length - right)\n }\n}\n","/**\n * Error helpers.\n *\n * @module error\n */\n\n/**\n * @param {string} s\n * @return {Error}\n */\n/* c8 ignore next */\nexport const create = s => new Error(s)\n\n/**\n * @throws {Error}\n * @return {never}\n */\n/* c8 ignore next 3 */\nexport const methodUnimplemented = () => {\n throw create('Method unimplemented')\n}\n\n/**\n * @throws {Error}\n * @return {never}\n */\n/* c8 ignore next 3 */\nexport const unexpectedCase = () => {\n throw create('Unexpected case')\n}\n\n/**\n * @param {boolean} property\n * @return {asserts property is true}\n */\nexport const assert = property => { if (!property) throw create('Assert failed') }\n","/* eslint-env browser */\n\n/**\n * Binary data constants.\n *\n * @module binary\n */\n\n/**\n * n-th bit activated.\n *\n * @type {number}\n */\nexport const BIT1 = 1\nexport const BIT2 = 2\nexport const BIT3 = 4\nexport const BIT4 = 8\nexport const BIT5 = 16\nexport const BIT6 = 32\nexport const BIT7 = 64\nexport const BIT8 = 128\nexport const BIT9 = 256\nexport const BIT10 = 512\nexport const BIT11 = 1024\nexport const BIT12 = 2048\nexport const BIT13 = 4096\nexport const BIT14 = 8192\nexport const BIT15 = 16384\nexport const BIT16 = 32768\nexport const BIT17 = 65536\nexport const BIT18 = 1 << 17\nexport const BIT19 = 1 << 18\nexport const BIT20 = 1 << 19\nexport const BIT21 = 1 << 20\nexport const BIT22 = 1 << 21\nexport const BIT23 = 1 << 22\nexport const BIT24 = 1 << 23\nexport const BIT25 = 1 << 24\nexport const BIT26 = 1 << 25\nexport const BIT27 = 1 << 26\nexport const BIT28 = 1 << 27\nexport const BIT29 = 1 << 28\nexport const BIT30 = 1 << 29\nexport const BIT31 = 1 << 30\nexport const BIT32 = 1 << 31\n\n/**\n * First n bits activated.\n *\n * @type {number}\n */\nexport const BITS0 = 0\nexport const BITS1 = 1\nexport const BITS2 = 3\nexport const BITS3 = 7\nexport const BITS4 = 15\nexport const BITS5 = 31\nexport const BITS6 = 63\nexport const BITS7 = 127\nexport const BITS8 = 255\nexport const BITS9 = 511\nexport const BITS10 = 1023\nexport const BITS11 = 2047\nexport const BITS12 = 4095\nexport const BITS13 = 8191\nexport const BITS14 = 16383\nexport const BITS15 = 32767\nexport const BITS16 = 65535\nexport const BITS17 = BIT18 - 1\nexport const BITS18 = BIT19 - 1\nexport const BITS19 = BIT20 - 1\nexport const BITS20 = BIT21 - 1\nexport const BITS21 = BIT22 - 1\nexport const BITS22 = BIT23 - 1\nexport const BITS23 = BIT24 - 1\nexport const BITS24 = BIT25 - 1\nexport const BITS25 = BIT26 - 1\nexport const BITS26 = BIT27 - 1\nexport const BITS27 = BIT28 - 1\nexport const BITS28 = BIT29 - 1\nexport const BITS29 = BIT30 - 1\nexport const BITS30 = BIT31 - 1\n/**\n * @type {number}\n */\nexport const BITS31 = 0x7FFFFFFF\n/**\n * @type {number}\n */\nexport const BITS32 = 0xFFFFFFFF\n","/* eslint-env browser */\n\nexport const subtle = crypto.subtle\nexport const getRandomValues = crypto.getRandomValues.bind(crypto)\n","/**\n * Isomorphic module for true random numbers / buffers / uuids.\n *\n * Attention: falls back to Math.random if the browser does not support crypto.\n *\n * @module random\n */\n\nimport * as math from './math.js'\nimport * as binary from './binary.js'\nimport { getRandomValues } from 'lib0/webcrypto'\n\nexport const rand = Math.random\n\nexport const uint32 = () => getRandomValues(new Uint32Array(1))[0]\n\nexport const uint53 = () => {\n const arr = getRandomValues(new Uint32Array(8))\n return (arr[0] & binary.BITS21) * (binary.BITS32 + 1) + (arr[1] >>> 0)\n}\n\n/**\n * @template T\n * @param {Array<T>} arr\n * @return {T}\n */\nexport const oneOf = arr => arr[math.floor(rand() * arr.length)]\n\n// @ts-ignore\nconst uuidv4Template = [1e7] + -1e3 + -4e3 + -8e3 + -1e11\n\n/**\n * @return {string}\n */\nexport const uuidv4 = () => uuidv4Template.replace(/[018]/g, /** @param {number} c */ c =>\n (c ^ uint32() & 15 >> c / 4).toString(16)\n)\n","/**\n * Utility module to work with key-value stores.\n *\n * @module map\n */\n\n/**\n * @template K\n * @template V\n * @typedef {Map<K,V>} GlobalMap\n */\n\n/**\n * Creates a new Map instance.\n *\n * @function\n * @return {Map<any, any>}\n *\n * @function\n */\nexport const create = () => new Map()\n\n/**\n * Copy a Map object into a fresh Map object.\n *\n * @function\n * @template K,V\n * @param {Map<K,V>} m\n * @return {Map<K,V>}\n */\nexport const copy = m => {\n const r = create()\n m.forEach((v, k) => { r.set(k, v) })\n return r\n}\n\n/**\n * Get map property. Create T if property is undefined and set T on map.\n *\n * ```js\n * const listeners = map.setIfUndefined(events, 'eventName', set.create)\n * listeners.add(listener)\n * ```\n *\n * @function\n * @template {Map<any, any>} MAP\n * @template {MAP extends Map<any,infer V> ? function():V : unknown} CF\n * @param {MAP} map\n * @param {MAP extends Map<infer K,any> ? K : unknown} key\n * @param {CF} createT\n * @return {ReturnType<CF>}\n */\nexport const setIfUndefined = (map, key, createT) => {\n let set = map.get(key)\n if (set === undefined) {\n map.set(key, set = createT())\n }\n return set\n}\n\n/**\n * Creates an Array and populates it with the content of all key-value pairs using the `f(value, key)` function.\n *\n * @function\n * @template K\n * @template V\n * @template R\n * @param {Map<K,V>} m\n * @param {function(V,K):R} f\n * @return {Array<R>}\n */\nexport const map = (m, f) => {\n const res = []\n for (const [key, value] of m) {\n res.push(f(value, key))\n }\n return res\n}\n\n/**\n * Tests whether any key-value pairs pass the test implemented by `f(value, key)`.\n *\n * @todo should rename to some - similarly to Array.some\n *\n * @function\n * @template K\n * @template V\n * @param {Map<K,V>} m\n * @param {function(V,K):boolean} f\n * @return {boolean}\n */\nexport const any = (m, f) => {\n for (const [key, value] of m) {\n if (f(value, key)) {\n return true\n }\n }\n return false\n}\n\n/**\n * Tests whether all key-value pairs pass the test implemented by `f(value, key)`.\n *\n * @function\n * @template K\n * @template V\n * @param {Map<K,V>} m\n * @param {function(V,K):boolean} f\n * @return {boolean}\n */\nexport const all = (m, f) => {\n for (const [key, value] of m) {\n if (!f(value, key)) {\n return false\n }\n }\n return true\n}\n","import * as array from './array.js'\n\n/**\n * Utility module to work with strings.\n *\n * @module string\n */\n\nexport const fromCharCode = String.fromCharCode\nexport const fromCodePoint = String.fromCodePoint\n\n/**\n * The largest utf16 character.\n * Corresponds to Uint8Array([255, 255]) or charcodeof(2x2^8)\n */\nexport const MAX_UTF16_CHARACTER = fromCharCode(65535)\n\n/**\n * @param {string} s\n * @return {string}\n */\nconst toLowerCase = s => s.toLowerCase()\n\nconst trimLeftRegex = /^\\s*/g\n\n/**\n * @param {string} s\n * @return {string}\n */\nexport const trimLeft = s => s.replace(trimLeftRegex, '')\n\nconst fromCamelCaseRegex = /([A-Z])/g\n\n/**\n * @param {string} s\n * @param {string} separator\n * @return {string}\n */\nexport const fromCamelCase = (s, separator) => trimLeft(s.replace(fromCamelCaseRegex, match => `${separator}${toLowerCase(match)}`))\n\n/**\n * Compute the utf8ByteLength\n * @param {string} str\n * @return {number}\n */\nexport const utf8ByteLength = str => unescape(encodeURIComponent(str)).length\n\n/**\n * @param {string} str\n * @return {Uint8Array<ArrayBuffer>}\n */\nexport const _encodeUtf8Polyfill = str => {\n const encodedString = unescape(encodeURIComponent(str))\n const len = encodedString.length\n const buf = new Uint8Array(len)\n for (let i = 0; i < len; i++) {\n buf[i] = /** @type {number} */ (encodedString.codePointAt(i))\n }\n return buf\n}\n\n/* c8 ignore next */\nexport const utf8TextEncoder = /** @type {TextEncoder} */ (typeof TextEncoder !== 'undefined' ? new TextEncoder() : null)\n\n/**\n * @param {string} str\n * @return {Uint8Array<ArrayBuffer>}\n */\nexport const _encodeUtf8Native = str => utf8TextEncoder.encode(str)\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\n/* c8 ignore next */\nexport const encodeUtf8 = utf8TextEncoder ? _encodeUtf8Native : _encodeUtf8Polyfill\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\nexport const _decodeUtf8Polyfill = buf => {\n let remainingLen = buf.length\n let encodedString = ''\n let bufPos = 0\n while (remainingLen > 0) {\n const nextLen = remainingLen < 10000 ? remainingLen : 10000\n const bytes = buf.subarray(bufPos, bufPos + nextLen)\n bufPos += nextLen\n // Starting with ES5.1 we can supply a generic array-like object as arguments\n encodedString += String.fromCodePoint.apply(null, /** @type {any} */ (bytes))\n remainingLen -= nextLen\n }\n return decodeURIComponent(escape(encodedString))\n}\n\n/* c8 ignore next */\nexport let utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf-8', { fatal: true, ignoreBOM: true })\n\n/* c8 ignore start */\nif (utf8TextDecoder && utf8TextDecoder.decode(new Uint8Array()).length === 1) {\n // Safari doesn't handle BOM correctly.\n // This fixes a bug in Safari 13.0.5 where it produces a BOM the first time it is called.\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the first call and\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the second call\n // Another issue is that from then on no BOM chars are recognized anymore\n /* c8 ignore next */\n utf8TextDecoder = null\n}\n/* c8 ignore stop */\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\nexport const _decodeUtf8Native = buf => /** @type {TextDecoder} */ (utf8TextDecoder).decode(buf)\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\n/* c8 ignore next */\nexport const decodeUtf8 = utf8TextDecoder ? _decodeUtf8Native : _decodeUtf8Polyfill\n\n/**\n * @param {string} str The initial string\n * @param {number} index Starting position\n * @param {number} remove Number of characters to remove\n * @param {string} insert New content to insert\n */\nexport const splice = (str, index, remove, insert = '') => str.slice(0, index) + insert + str.slice(index + remove)\n\n/**\n * @param {string} source\n * @param {number} n\n */\nexport const repeat = (source, n) => array.unfold(n, () => source).join('')\n\n/**\n * Escape HTML characters &,<,>,',\" to their respective HTML entities &amp;,&lt;,&gt;,&#39;,&quot;\n *\n * @param {string} str\n */\nexport const escapeHTML = str =>\n str.replace(/[&<>'\"]/g, r => /** @type {string} */ ({\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n \"'\": '&#39;',\n '\"': '&quot;'\n }[r]))\n\n/**\n * Reverse of `escapeHTML`\n *\n * @param {string} str\n */\nexport const unescapeHTML = str =>\n str.replace(/&amp;|&lt;|&gt;|&#39;|&quot;/g, r => /** @type {string} */ ({\n '&amp;': '&',\n '&lt;': '<',\n '&gt;': '>',\n '&#39;': \"'\",\n '&quot;': '\"'\n }[r]))\n","/**\n * Often used conditions.\n *\n * @module conditions\n */\n\n/**\n * @template T\n * @param {T|null|undefined} v\n * @return {T|null}\n */\n/* c8 ignore next */\nexport const undefinedToNull = v => v === undefined ? null : v\n","/* eslint-env browser */\n\n/**\n * Isomorphic variable storage.\n *\n * Uses LocalStorage in the browser and falls back to in-memory storage.\n *\n * @module storage\n */\n\n/* c8 ignore start */\nclass VarStoragePolyfill {\n constructor () {\n this.map = new Map()\n }\n\n /**\n * @param {string} key\n * @param {any} newValue\n */\n setItem (key, newValue) {\n this.map.set(key, newValue)\n }\n\n /**\n * @param {string} key\n */\n getItem (key) {\n return this.map.get(key)\n }\n}\n/* c8 ignore stop */\n\n/**\n * @type {any}\n */\nlet _localStorage = new VarStoragePolyfill()\nlet usePolyfill = true\n\n/* c8 ignore start */\ntry {\n // if the same-origin rule is violated, accessing localStorage might thrown an error\n if (typeof localStorage !== 'undefined' && localStorage) {\n _localStorage = localStorage\n usePolyfill = false\n }\n} catch (e) { }\n/* c8 ignore stop */\n\n/**\n * This is basically localStorage in browser, or a polyfill in nodejs\n */\n/* c8 ignore next */\nexport const varStorage = _localStorage\n\n/**\n * A polyfill for `addEventListener('storage', event => {..})` that does nothing if the polyfill is being used.\n *\n * @param {function({ key: string, newValue: string, oldValue: string }): void} eventHandler\n * @function\n */\n/* c8 ignore next */\nexport const onChange = eventHandler => usePolyfill || addEventListener('storage', /** @type {any} */ (eventHandler))\n\n/**\n * A polyfill for `removeEventListener('storage', event => {..})` that does nothing if the polyfill is being used.\n *\n * @param {function({ key: string, newValue: string, oldValue: string }): void} eventHandler\n * @function\n */\n/* c8 ignore next */\nexport const offChange = eventHandler => usePolyfill || removeEventListener('storage', /** @type {any} */ (eventHandler))\n","/**\n * Isomorphic module to work access the environment (query params, env variables).\n *\n * @module environment\n */\n\nimport * as map from './map.js'\nimport * as string from './string.js'\nimport * as conditions from './conditions.js'\nimport * as storage from './storage.js'\nimport * as f from './function.js'\n\n/* c8 ignore next 2 */\n// @ts-ignore\nexport const isNode = typeof process !== 'undefined' && process.release && /node|io\\.js/.test(process.release.name) && Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n\n/* c8 ignore next */\nexport const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && !isNode\n/* c8 ignore next 3 */\nexport const isMac = typeof navigator !== 'undefined'\n ? /Mac/.test(navigator.platform)\n : false\n\n/**\n * @type {Map<string,string>}\n */\nlet params\nconst args = []\n\n/* c8 ignore start */\nconst computeParams = () => {\n if (params === undefined) {\n if (isNode) {\n params = map.create()\n const pargs = process.argv\n let currParamName = null\n for (let i = 0; i < pargs.length; i++) {\n const parg = pargs[i]\n if (parg[0] === '-') {\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n currParamName = parg\n } else {\n if (currParamName !== null) {\n params.set(currParamName, parg)\n currParamName = null\n } else {\n args.push(parg)\n }\n }\n }\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n // in ReactNative for example this would not be true (unless connected to the Remote Debugger)\n } else if (typeof location === 'object') {\n params = map.create(); // eslint-disable-next-line no-undef\n (location.search || '?').slice(1).split('&').forEach((kv) => {\n if (kv.length !== 0) {\n const [key, value] = kv.split('=')\n params.set(`--${string.fromCamelCase(key, '-')}`, value)\n params.set(`-${string.fromCamelCase(key, '-')}`, value)\n }\n })\n } else {\n params = map.create()\n }\n }\n return params\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* c8 ignore next */\nexport const hasParam = (name) => computeParams().has(name)\n\n/**\n * @param {string} name\n * @param {string} defaultVal\n * @return {string}\n */\n/* c8 ignore next 2 */\nexport const getParam = (name, defaultVal) =>\n computeParams().get(name) || defaultVal\n\n/**\n * @param {string} name\n * @return {string|null}\n */\n/* c8 ignore next 4 */\nexport const getVariable = (name) =>\n isNode\n ? conditions.undefinedToNull(process.env[name.toUpperCase().replaceAll('-', '_')])\n : conditions.undefinedToNull(storage.varStorage.getItem(name))\n\n/**\n * @param {string} name\n * @return {string|null}\n */\n/* c8 ignore next 2 */\nexport const getConf = (name) =>\n computeParams().get('--' + name) || getVariable(name)\n\n/**\n * @param {string} name\n * @return {string}\n */\n/* c8 ignore next 5 */\nexport const ensureConf = (name) => {\n const c = getConf(name)\n if (c == null) throw new Error(`Expected configuration \"${name.toUpperCase().replaceAll('-', '_')}\"`)\n return c\n}\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* c8 ignore next 2 */\nexport const hasConf = (name) =>\n hasParam('--' + name) || getVariable(name) !== null\n\n/* c8 ignore next */\nexport const production = hasConf('production')\n\n/* c8 ignore next 2 */\nconst forceColor = isNode &&\n f.isOneOf(process.env.FORCE_COLOR, ['true', '1', '2'])\n\n/* c8 ignore start */\n/**\n * Color is enabled by default if the terminal supports it.\n *\n * Explicitly enable color using `--color` parameter\n * Disable color using `--no-color` parameter or using `NO_COLOR=1` environment variable.\n * `FORCE_COLOR=1` enables color and takes precedence over all.\n */\nexport const supportsColor = forceColor || (\n !hasParam('--no-colors') && // @todo deprecate --no-colors\n !hasConf('no-color') &&\n (!isNode || process.stdout.isTTY) && (\n !isNode ||\n hasParam('--color') ||\n getVariable('COLORTERM') !== null ||\n (getVariable('TERM') || '').includes('color')\n )\n)\n/* c8 ignore stop */\n","/**\n * Utility helpers for working with numbers.\n *\n * @module number\n */\n\nimport * as math from './math.js'\nimport * as binary from './binary.js'\n\nexport const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER\nexport const MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER\n\nexport const LOWEST_INT32 = 1 << 31\nexport const HIGHEST_INT32 = binary.BITS31\nexport const HIGHEST_UINT32 = binary.BITS32\n\n/* c8 ignore next */\nexport const isInteger = Number.isInteger || (num => typeof num === 'number' && isFinite(num) && math.floor(num) === num)\nexport const isNaN = Number.isNaN\nexport const parseInt = Number.parseInt\n\n/**\n * Count the number of \"1\" bits in an unsigned 32bit number.\n *\n * Super fun bitcount algorithm by Brian Kernighan.\n *\n * @param {number} n\n */\nexport const countBits = n => {\n n &= binary.BITS32\n let count = 0\n while (n) {\n n &= (n - 1)\n count++\n }\n return count\n}\n","/**\n * Efficient schema-less binary encoding with support for variable length encoding.\n *\n * Use [lib0/encoding] with [lib0/decoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n *\n * @module encoding\n */\n\nimport * as math from './math.js'\nimport * as number from './number.js'\nimport * as binary from './binary.js'\nimport * as string from './string.js'\nimport * as array from './array.js'\n\n/**\n * A BinaryEncoder handles the encoding to an Uint8Array.\n */\nexport class Encoder {\n constructor () {\n this.cpos = 0\n this.cbuf = new Uint8Array(100)\n /**\n * @type {Array<Uint8Array>}\n */\n this.bufs = []\n }\n}\n\n/**\n * @function\n * @return {Encoder}\n */\nexport const createEncoder = () => new Encoder()\n\n/**\n * @param {function(Encoder):void} f\n */\nexport const encode = (f) => {\n const encoder = createEncoder()\n f(encoder)\n return toUint8Array(encoder)\n}\n\n/**\n * The current length of the encoded data.\n *\n * @function\n * @param {Encoder} encoder\n * @return {number}\n */\nexport const length = encoder => {\n let len = encoder.cpos\n for (let i = 0; i < encoder.bufs.length; i++) {\n len += encoder.bufs[i].length\n }\n return len\n}\n\n/**\n * Check whether encoder is empty.\n *\n * @function\n * @param {Encoder} encoder\n * @return {boolean}\n */\nexport const hasContent = encoder => encoder.cpos > 0 || encoder.bufs.length > 0\n\n/**\n * Transform to Uint8Array.\n *\n * @function\n * @param {Encoder} encoder\n * @return {Uint8Array<ArrayBuffer>} The created ArrayBuffer.\n */\nexport const toUint8Array = encoder => {\n const uint8arr = new Uint8Array(length(encoder))\n let curPos = 0\n for (let i = 0; i < encoder.bufs.length; i++) {\n const d = encoder.bufs[i]\n uint8arr.set(d, curPos)\n curPos += d.length\n }\n uint8arr.set(new Uint8Array(encoder.cbuf.buffer, 0, encoder.cpos), curPos)\n return uint8arr\n}\n\n/**\n * Verify that it is possible to write `len` bytes wtihout checking. If\n * necessary, a new Buffer with the required length is attached.\n *\n * @param {Encoder} encoder\n * @param {number} len\n */\nexport const verifyLen = (encoder, len) => {\n const bufferLen = encoder.cbuf.length\n if (bufferLen - encoder.cpos < len) {\n encoder.bufs.push(new Uint8Array(encoder.cbuf.buffer, 0, encoder.cpos))\n encoder.cbuf = new Uint8Array(math.max(bufferLen, len) * 2)\n encoder.cpos = 0\n }\n}\n\n/**\n * Write one byte to the encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The byte that is to be encoded.\n */\nexport const write = (encoder, num) => {\n const bufferLen = encoder.cbuf.length\n if (encoder.cpos === bufferLen) {\n encoder.bufs.push(encoder.cbuf)\n encoder.cbuf = new Uint8Array(bufferLen * 2)\n encoder.cpos = 0\n }\n encoder.cbuf[encoder.cpos++] = num\n}\n\n/**\n * Write one byte at a specific position.\n * Position must already be written (i.e. encoder.length > pos)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos Position to which to write data\n * @param {number} num Unsigned 8-bit integer\n */\nexport const set = (encoder, pos, num) => {\n let buffer = null\n // iterate all buffers and adjust position\n for (let i = 0; i < encoder.bufs.length && buffer === null; i++) {\n const b = encoder.bufs[i]\n if (pos < b.length) {\n buffer = b // found buffer\n } else {\n pos -= b.length\n }\n }\n if (buffer === null) {\n // use current buffer\n buffer = encoder.cbuf\n }\n buffer[pos] = num\n}\n\n/**\n * Write one byte as an unsigned integer.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint8 = write\n\n/**\n * Write one byte as an unsigned Integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint8 = set\n\n/**\n * Write two bytes as an unsigned integer.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint16 = (encoder, num) => {\n write(encoder, num & binary.BITS8)\n write(encoder, (num >>> 8) & binary.BITS8)\n}\n/**\n * Write two bytes as an unsigned integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint16 = (encoder, pos, num) => {\n set(encoder, pos, num & binary.BITS8)\n set(encoder, pos + 1, (num >>> 8) & binary.BITS8)\n}\n\n/**\n * Write two bytes as an unsigned integer\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint32 = (encoder, num) => {\n for (let i = 0; i < 4; i++) {\n write(encoder, num & binary.BITS8)\n num >>>= 8\n }\n}\n\n/**\n * Write two bytes as an unsigned integer in big endian order.\n * (most significant byte first)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint32BigEndian = (encoder, num) => {\n for (let i = 3; i >= 0; i--) {\n write(encoder, (num >>> (8 * i)) & binary.BITS8)\n }\n}\n\n/**\n * Write two bytes as an unsigned integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint32 = (encoder, pos, num) => {\n for (let i = 0; i < 4; i++) {\n set(encoder, pos + i, num & binary.BITS8)\n num >>>= 8\n }\n}\n\n/**\n * Write a variable length unsigned integer. Max encodable integer is 2^53.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeVarUint = (encoder, num) => {\n while (num > binary.BITS7) {\n write(encoder, binary.BIT8 | (binary.BITS7 & num))\n num = math.floor(num / 128) // shift >>> 7\n }\n write(encoder, binary.BITS7 & num)\n}\n\n/**\n * Write a variable length integer.\n *\n * We use the 7th bit instead for signaling that this is a negative number.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeVarInt = (encoder, num) => {\n const isNegative = math.isNegativeZero(num)\n if (isNegative) {\n num = -num\n }\n // |- whether to continue reading |- whether is negative |- number\n write(encoder, (num > binary.BITS6 ? binary.BIT8 : 0) | (isNegative ? binary.BIT7 : 0) | (binary.BITS6 & num))\n num = math.floor(num / 64) // shift >>> 6\n // We don't need to consider the case of num === 0 so we can use a different\n // pattern here than above.\n while (num > 0) {\n write(encoder, (num > binary.BITS7 ? binary.BIT8 : 0) | (binary.BITS7 & num))\n num = math.floor(num / 128) // shift >>> 7\n }\n}\n\n/**\n * A cache to store strings temporarily\n */\nconst _strBuffer = new Uint8Array(30000)\nconst _maxStrBSize = _strBuffer.length / 3\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\nexport const _writeVarStringNative = (encoder, str) => {\n if (str.length < _maxStrBSize) {\n // We can encode the string into the existing buffer\n /* c8 ignore next */\n const written = string.utf8TextEncoder.encodeInto(str, _strBuffer).written || 0\n writeVarUint(encoder, written)\n for (let i = 0; i < written; i++) {\n write(encoder, _strBuffer[i])\n }\n } else {\n writeVarUint8Array(encoder, string.encodeUtf8(str))\n }\n}\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\nexport const _writeVarStringPolyfill = (encoder, str) => {\n const encodedString = unescape(encodeURIComponent(str))\n const len = encodedString.length\n writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n write(encoder, /** @type {number} */ (encodedString.codePointAt(i)))\n }\n}\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\n/* c8 ignore next */\nexport const writeVarString = (string.utf8TextEncoder && /** @type {any} */ (string.utf8TextEncoder).encodeInto) ? _writeVarStringNative : _writeVarStringPolyfill\n\n/**\n * Write a string terminated by a special byte sequence. This is not very performant and is\n * generally discouraged. However, the resulting byte arrays are lexiographically ordered which\n * makes this a nice feature for databases.\n *\n * The string will be encoded using utf8 and then terminated and escaped using writeTerminatingUint8Array.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\nexport const writeTerminatedString = (encoder, str) =>\n writeTerminatedUint8Array(encoder, string.encodeUtf8(str))\n\n/**\n * Write a terminating Uint8Array. Note that this is not performant and is generally\n * discouraged. There are few situations when this is needed.\n *\n * We use 0x0 as a terminating character. 0x1 serves as an escape character for 0x0 and 0x1.\n *\n * Example: [0,1,2] is encoded to [1,0,1,1,2,0]. 0x0, and 0x1 needed to be escaped using 0x1. Then\n * the result is terminated using the 0x0 character.\n *\n * This is basically how many systems implement null terminated strings. However, we use an escape\n * character 0x1 to avoid issues and potenial attacks on our database (if this is used as a key\n * encoder for NoSql databases).\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} buf The string that is to be encoded.\n */\nexport const writeTerminatedUint8Array = (encoder, buf) => {\n for (let i = 0; i < buf.length; i++) {\n const b = buf[i]\n if (b === 0 || b === 1) {\n write(encoder, 1)\n }\n write(encoder, buf[i])\n }\n write(encoder, 0)\n}\n\n/**\n * Write the content of another Encoder.\n *\n * @TODO: can be improved!\n * - Note: Should consider that when appending a lot of small Encoders, we should rather clone than referencing the old structure.\n * Encoders start with a rather big initial buffer.\n *\n * @function\n * @param {Encoder} encoder The enUint8Arr\n * @param {Encoder} append The BinaryEncoder to be written.\n */\nexport const writeBinaryEncoder = (encoder, append) => writeUint8Array(encoder, toUint8Array(append))\n\n/**\n * Append fixed-length Uint8Array to the encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} uint8Array\n */\nexport const writeUint8Array = (encoder, uint8Array) => {\n const bufferLen = encoder.cbuf.length\n const cpos = encoder.cpos\n const leftCopyLen = math.min(bufferLen - cpos, uint8Array.length)\n const rightCopyLen = uint8Array.length - leftCopyLen\n encoder.cbuf.set(uint8Array.subarray(0, leftCopyLen), cpos)\n encoder.cpos += leftCopyLen\n if (rightCopyLen > 0) {\n // Still something to write, write right half..\n // Append new buffer\n encoder.bufs.push(encoder.cbuf)\n // must have at least size of remaining buffer\n encoder.cbuf = new Uint8Array(math.max(bufferLen * 2, rightCopyLen))\n // copy array\n encoder.cbuf.set(uint8Array.subarray(leftCopyLen))\n encoder.cpos = rightCopyLen\n }\n}\n\n/**\n * Append an Uint8Array to Encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} uint8Array\n */\nexport const writeVarUint8Array = (encoder, uint8Array) => {\n writeVarUint(encoder, uint8Array.byteLength)\n writeUint8Array(encoder, uint8Array)\n}\n\n/**\n * Create an DataView of the next `len` bytes. Use it to write data after\n * calling this function.\n *\n * ```js\n * // write float32 using DataView\n * const dv = writeOnDataView(encoder, 4)\n * dv.setFloat32(0, 1.1)\n * // read float32 using DataView\n * const dv = readFromDataView(encoder, 4)\n * dv.getFloat32(0) // => 1.100000023841858 (leaving it to the reader to find out why this is the correct result)\n * ```\n *\n * @param {Encoder} encoder\n * @param {number} len\n * @return {DataView}\n */\nexport const writeOnDataView = (encoder, len) => {\n verifyLen(encoder, len)\n const dview = new DataView(encoder.cbuf.buffer, encoder.cpos, len)\n encoder.cpos += len\n return dview\n}\n\n/**\n * @param {Encoder} encoder\n * @param {number} num\n */\nexport const writeFloat32 = (encoder, num) => writeOnDataView(encoder, 4).setFloat32(0, num, false)\n\n/**\n * @param {Encoder} encoder\n * @param {number} num\n */\nexport const writeFloat64 = (encoder, num) => writeOnDataView(encoder, 8).setFloat64(0, num, false)\n\n/**\n * @param {Encoder} encoder\n * @param {bigint} num\n */\nexport const writeBigInt64 = (encoder, num) => /** @type {any} */ (writeOnDataView(encoder, 8)).setBigInt64(0, num, false)\n\n/**\n * @param {Encoder} encoder\n * @param {bigint} num\n */\nexport const writeBigUint64 = (encoder, num) => /** @type {any} */ (writeOnDataView(encoder, 8)).setBigUint64(0, num, false)\n\nconst floatTestBed = new DataView(new ArrayBuffer(4))\n/**\n * Check if a number can be encoded as a 32 bit float.\n *\n * @param {number} num\n * @return {boolean}\n */\nconst isFloat32 = num => {\n floatTestBed.setFloat32(0, num)\n return floatTestBed.getFloat32(0) === num\n}\n\n/**\n * @typedef {Array<AnyEncodable>} AnyEncodableArray\n */\n\n/**\n * @typedef {undefined|null|number|bigint|boolean|string|{[k:string]:AnyEncodable}|AnyEncodableArray|Uint8Array} AnyEncodable\n */\n\n/**\n * Encode data with efficient binary format.\n *\n * Differences to JSON:\n * • Transforms data to a binary format (not to a string)\n * • Encodes undefined, NaN, and ArrayBuffer (these can't be represented in JSON)\n * • Numbers are efficiently encoded either as a variable length integer, as a\n * 32 bit float, as a 64 bit float, or as a 64 bit bigint.\n *\n * Encoding table:\n *\n * | Data Type | Prefix | Encoding Method | Comment |\n * | ------------------- | -------- | ------------------ | ------- |\n * | undefined | 127 | | Functions, symbol, and everything that cannot be identified is encoded as undefined |\n * | null | 126 | | |\n * | integer | 125 | writeVarInt | Only encodes 32 bit signed integers |\n * | float32 | 124 | writeFloat32 | |\n * | float64 | 123 | writeFloat64 | |\n * | bigint | 122 | writeBigInt64 | |\n * | boolean (false) | 121 | | True and false are different data types so we save the following byte |\n * | boolean (true) | 120 | | - 0b01111000 so the last bit determines whether true or false |\n * | string | 119 | writeVarString | |\n * | object<string,any> | 118 | custom | Writes {length} then {length} key-value pairs |\n * | array<any> | 117 | custom | Writes {length} then {length} json values |\n * | Uint8Array | 116 | writeVarUint8Array | We use Uint8Array for any kind of binary data |\n *\n * Reasons for the decreasing prefix:\n * We need the first bit for extendability (later we may want to encode the\n * prefix with writeVarUint). The remaining 7 bits are divided as follows:\n * [0-30] the beginning of the data range is used for custom purposes\n * (defined by the function that uses this library)\n * [31-127] the end of the data range is used for data encoding by\n * lib0/encoding.js\n *\n * @param {Encoder} encoder\n * @param {AnyEncodable} data\n */\nexport const writeAny = (encoder, data) => {\n switch (typeof data) {\n case 'string':\n // TYPE 119: STRING\n write(encoder, 119)\n writeVarString(encoder, data)\n break\n case 'number':\n if (number.isInteger(data) && math.abs(data) <= binary.BITS31) {\n // TYPE 125: INTEGER\n write(encoder, 125)\n writeVarInt(encoder, data)\n } else if (isFloat32(data)) {\n // TYPE 124: FLOAT32\n write(encoder, 124)\n writeFloat32(encoder, data)\n } else {\n // TYPE 123: FLOAT64\n write(encoder, 123)\n writeFloat64(encoder, data)\n }\n break\n case 'bigint':\n // TYPE 122: BigInt\n write(encoder, 122)\n writeBigInt64(encoder, data)\n break\n case 'object':\n if (data === null) {\n // TYPE 126: null\n write(encoder, 126)\n } else if (array.isArray(data)) {\n // TYPE 117: Array\n write(encoder, 117)\n writeVarUint(encoder, data.length)\n for (let i = 0; i < data.length; i++) {\n writeAny(encoder, data[i])\n }\n } else if (data instanceof Uint8Array) {\n // TYPE 116: ArrayBuffer\n write(encoder, 116)\n writeVarUint8Array(encoder, data)\n } else {\n // TYPE 118: Object\n write(encoder, 118)\n const keys = Object.keys(data)\n writeVarUint(encoder, keys.length)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n writeVarString(encoder, key)\n writeAny(encoder, data[key])\n }\n }\n break\n case 'boolean':\n // TYPE 120/121: boolean (true/false)\n write(encoder, data ? 120 : 121)\n break\n default:\n // TYPE 127: undefined\n write(encoder, 127)\n }\n}\n\n/**\n * Now come a few stateful encoder that have their own classes.\n */\n\n/**\n * Basic Run Length Encoder - a basic compression implementation.\n *\n * Encodes [1,1,1,7] to [1,3,7,1] (3 times 1, 1 time 7). This encoder might do more harm than good if there are a lot of values that are not repeated.\n *\n * It was originally used for image compression. Cool .. article http://csbruce.com/cbm/transactor/pdfs/trans_v7_i06.pdf\n *\n * @note T must not be null!\n *\n * @template T\n */\nexport class RleEncoder extends Encoder {\n /**\n * @param {function(Encoder, T):void} writer\n */\n constructor (writer) {\n super()\n /**\n * The writer\n */\n this.w = writer\n /**\n * Current state\n * @type {T|null}\n */\n this.s = null\n this.count = 0\n }\n\n /**\n * @param {T} v\n */\n write (v) {\n if (this.s === v) {\n this.count++\n } else {\n if (this.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n writeVarUint(this, this.count - 1) // since count is always > 0, we can decrement by one. non-standard encoding ftw\n }\n this.count = 1\n // write first value\n this.w(this, v)\n this.s = v\n }\n }\n}\n\n/**\n * Basic diff decoder using variable length encoding.\n *\n * Encodes the values [3, 1100, 1101, 1050, 0] to [3, 1097, 1, -51, -1050] using writeVarInt.\n */\nexport class IntDiffEncoder extends Encoder {\n /**\n * @param {number} start\n */\n constructor (start) {\n super()\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n writeVarInt(this, v - this.s)\n this.s = v\n }\n}\n\n/**\n * A combination of IntDiffEncoder and RleEncoder.\n *\n * Basically first writes the IntDiffEncoder and then counts duplicate diffs using RleEncoding.\n *\n * Encodes the values [1,1,1,2,3,4,5,6] as [1,1,0,2,1,5] (RLE([1,0,0,1,1,1,1,1]) ⇒ RleIntDiff[1,1,0,2,1,5])\n */\nexport class RleIntDiffEncoder extends Encoder {\n /**\n * @param {number} start\n */\n constructor (start) {\n super()\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s === v && this.count > 0) {\n this.count++\n } else {\n if (this.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n writeVarUint(this, this.count - 1) // since count is always > 0, we can decrement by one. non-standard encoding ftw\n }\n this.count = 1\n // write first value\n writeVarInt(this, v - this.s)\n this.s = v\n }\n }\n}\n\n/**\n * @param {UintOptRleEncoder} encoder\n */\nconst flushUintOptRleEncoder = encoder => {\n if (encoder.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n // case 1: just a single value. set sign to positive\n // case 2: write several values. set sign to negative to indicate that there is a length coming\n writeVarInt(encoder.encoder, encoder.count === 1 ? encoder.s : -encoder.s)\n if (encoder.count > 1) {\n writeVarUint(encoder.encoder, encoder.count - 2) // since count is always > 1, we can decrement by one. non-standard encoding ftw\n }\n }\n}\n\n/**\n * Optimized Rle encoder that does not suffer from the mentioned problem of the basic Rle encoder.\n *\n * Internally uses VarInt encoder to write unsigned integers. If the input occurs multiple times, we write\n * write it as a negative number. The UintOptRleDecoder then understands that it needs to read a count.\n *\n * Encodes [1,2,3,3,3] as [1,2,-3,3] (once 1, once 2, three times 3)\n */\nexport class UintOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s === v) {\n this.count++\n } else {\n flushUintOptRleEncoder(this)\n this.count = 1\n this.s = v\n }\n }\n\n /**\n * Flush the encoded state and transform this to a Uint8Array.\n *\n * Note that this should only be called once.\n */\n toUint8Array () {\n flushUintOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * Increasing Uint Optimized RLE Encoder\n *\n * The RLE encoder counts the number of same occurences of the same value.\n * The IncUintOptRle encoder counts if the value increases.\n * I.e. 7, 8, 9, 10 will be encoded as [-7, 4]. 1, 3, 5 will be encoded\n * as [1, 3, 5].\n */\nexport class IncUintOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s + this.count === v) {\n this.count++\n } else {\n flushUintOptRleEncoder(this)\n this.count = 1\n this.s = v\n }\n }\n\n /**\n * Flush the encoded state and transform this to a Uint8Array.\n *\n * Note that this should only be called once.\n */\n toUint8Array () {\n flushUintOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * @param {IntDiffOptRleEncoder} encoder\n */\nconst flushIntDiffOptRleEncoder = encoder => {\n if (encoder.count > 0) {\n // 31 bit making up the diff | wether to write the counter\n // const encodedDiff = encoder.diff << 1 | (encoder.count === 1 ? 0 : 1)\n const encodedDiff = encoder.diff * 2 + (encoder.count === 1 ? 0 : 1)\n // flush counter, unless this is the first value (count = 0)\n // case 1: just a single value. set first bit to positive\n // case 2: write several values. set first bit to negative to indicate that there is a length coming\n writeVarInt(encoder.encoder, encodedDiff)\n if (encoder.count > 1) {\n writeVarUint(encoder.encoder, encoder.count - 2) // since count is always > 1, we can decrement by one. non-standard encoding ftw\n }\n }\n}\n\n/**\n * A combination of the IntDiffEncoder and the UintOptRleEncoder.\n *\n * The count approach is similar to the UintDiffOptRleEncoder, but instead of using the negative bitflag, it encodes\n * in the LSB whether a count is to be read. Therefore this Encoder only supports 31 bit integers!\n *\n * Encodes [1, 2, 3, 2] as [3, 1, 6, -1] (more specifically [(1 << 1) | 1, (3 << 0) | 0, -1])\n *\n * Internally uses variable length encoding. Contrary to normal UintVar encoding, the first byte contains:\n * * 1 bit that denotes whether the next value is a count (LSB)\n * * 1 bit that denotes whether this value is negative (MSB - 1)\n * * 1 bit that denotes whether to continue reading the variable length integer (MSB)\n *\n * Therefore, only five bits remain to encode diff ranges.\n *\n * Use this Encoder only when appropriate. In most cases, this is probably a bad idea.\n */\nexport class IntDiffOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n this.diff = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.diff === v - this.s) {\n this.s = v\n this.count++\n } else {\n flushIntDiffOptRleEncoder(this)\n this.count = 1\n this.diff = v - this.s\n this.s = v\n }\n }\n\n /**\n * Flush the encoded state and transform this to a Uint8Array.\n *\n * Note that this should only be called once.\n */\n toUint8Array () {\n flushIntDiffOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * Optimized String Encoder.\n *\n * Encoding many small strings in a simple Encoder is not very efficient. The function call to decode a string takes some time and creates references that must be eventually deleted.\n * In practice, when decoding several million small strings, the GC will kick in more and more often to collect orphaned string objects (or maybe there is another reason?).\n *\n * This string encoder solves the above problem. All strings are concatenated and written as a single string using a single encoding call.\n *\n * The lengths are encoded using a UintOptRleEncoder.\n */\nexport class StringEncoder {\n constructor () {\n /**\n * @type {Array<string>}\n */\n this.sarr = []\n this.s = ''\n this.lensE = new UintOptRleEncoder()\n }\n\n /**\n * @param {string} string\n */\n write (string) {\n this.s += string\n if (this.s.length > 19) {\n this.sarr.push(this.s)\n this.s = ''\n }\n this.lensE.write(string.length)\n }\n\n toUint8Array () {\n const encoder = new Encoder()\n this.sarr.push(this.s)\n this.s = ''\n writeVarString(encoder, this.sarr.join(''))\n writeUint8Array(encoder, this.lensE.toUint8Array())\n return toUint8Array(encoder)\n }\n}\n","/**\n * Utility functions to work with buffers (Uint8Array).\n *\n * @module buffer\n */\n\nimport * as string from './string.js'\nimport * as env from './environment.js'\nimport * as array from './array.js'\nimport * as math from './math.js'\nimport * as encoding from './encoding.js'\nimport * as decoding from './decoding.js'\n\n/**\n * @param {number} len\n */\nexport const createUint8ArrayFromLen = len => new Uint8Array(len)\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n * @param {number} byteOffset\n * @param {number} length\n */\nexport const createUint8ArrayViewFromArrayBuffer = (buffer, byteOffset, length) => new Uint8Array(buffer, byteOffset, length)\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n */\nexport const createUint8ArrayFromArrayBuffer = buffer => new Uint8Array(buffer)\n\n/* c8 ignore start */\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Browser = bytes => {\n let s = ''\n for (let i = 0; i < bytes.byteLength; i++) {\n s += string.fromCharCode(bytes[i])\n }\n // eslint-disable-next-line no-undef\n return btoa(s)\n}\n/* c8 ignore stop */\n\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Node = bytes => Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString('base64')\n\n/* c8 ignore start */\n/**\n * @param {string} s\n * @return {Uint8Array<ArrayBuffer>}\n */\nconst fromBase64Browser = s => {\n // eslint-disable-next-line no-undef\n const a = atob(s)\n const bytes = createUint8ArrayFromLen(a.length)\n for (let i = 0; i < a.length; i++) {\n bytes[i] = a.charCodeAt(i)\n }\n return bytes\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} s\n */\nconst fromBase64Node = s => {\n const buf = Buffer.from(s, 'base64')\n return createUint8ArrayViewFromArrayBuffer(buf.buffer, buf.byteOffset, buf.byteLength)\n}\n\n/* c8 ignore next */\nexport const toBase64 = env.isBrowser ? toBase64Browser : toBase64Node\n\n/* c8 ignore next */\nexport const fromBase64 = env.isBrowser ? fromBase64Browser : fromBase64Node\n\n/**\n * Implements base64url - see https://datatracker.ietf.org/doc/html/rfc4648#section-5\n * @param {Uint8Array} buf\n */\nexport const toBase64UrlEncoded = buf => toBase64(buf).replaceAll('+', '-').replaceAll('/', '_').replaceAll('=', '')\n\n/**\n * @param {string} base64\n */\nexport const fromBase64UrlEncoded = base64 => fromBase64(base64.replaceAll('-', '+').replaceAll('_', '/'))\n\n/**\n * Base64 is always a more efficient choice. This exists for utility purposes only.\n *\n * @param {Uint8Array} buf\n */\nexport const toHexString = buf => array.map(buf, b => b.toString(16).padStart(2, '0')).join('')\n\n/**\n * Note: This function expects that the hex doesn't start with 0x..\n *\n * @param {string} hex\n */\nexport const fromHexString = hex => {\n const hlen = hex.length\n const buf = new Uint8Array(math.ceil(hlen / 2))\n for (let i = 0; i < hlen; i += 2) {\n buf[buf.length - i / 2 - 1] = Number.parseInt(hex.slice(hlen - i - 2, hlen - i), 16)\n }\n return buf\n}\n\n/**\n * Copy the content of an Uint8Array view to a new ArrayBuffer.\n *\n * @param {Uint8Array} uint8Array\n * @return {Uint8Array}\n */\nexport const copyUint8Array = uint8Array => {\n const newBuf = createUint8ArrayFromLen(uint8Array.byteLength)\n newBuf.set(uint8Array)\n return newBuf\n}\n\n/**\n * Encode anything as a UInt8Array. It's a pun on typescripts's `any` type.\n * See encoding.writeAny for more information.\n *\n * @param {any} data\n * @return {Uint8Array}\n */\nexport const encodeAny = data =>\n encoding.encode(encoder => encoding.writeAny(encoder, data))\n\n/**\n * Decode an any-encoded value.\n *\n * @param {Uint8Array} buf\n * @return {any}\n */\nexport const decodeAny = buf => decoding.readAny(decoding.createDecoder(buf))\n\n/**\n * Shift Byte Array {N} bits to the left. Does not expand byte array.\n *\n * @param {Uint8Array} bs\n * @param {number} N should be in the range of [0-7]\n */\nexport const shiftNBitsLeft = (bs, N) => {\n if (N === 0) return bs\n bs = new Uint8Array(bs)\n bs[0] <<= N\n for (let i = 1; i < bs.length; i++) {\n bs[i - 1] |= bs[i] >>> (8 - N)\n bs[i] <<= N\n }\n return bs\n}\n","/**\n * Fast Pseudo Random Number Generators.\n *\n * Given a seed a PRNG generates a sequence of numbers that cannot be reasonably predicted.\n * Two PRNGs must generate the same random sequence of numbers if given the same seed.\n *\n * @module prng\n */\n\nimport * as binary from './binary.js'\nimport { fromCharCode, fromCodePoint } from './string.js'\nimport * as math from './math.js'\nimport { Xoroshiro128plus } from './prng/Xoroshiro128plus.js'\nimport * as buffer from './buffer.js'\n\n/**\n * Description of the function\n * @callback generatorNext\n * @return {number} A random float in the cange of [0,1)\n */\n\n/**\n * A random type generator.\n *\n * @typedef {Object} PRNG\n * @property {generatorNext} next Generate new number\n */\nexport const DefaultPRNG = Xoroshiro128plus\n\n/**\n * Create a Xoroshiro128plus Pseudo-Random-Number-Generator.\n * This is the fastest full-period generator passing BigCrush without systematic failures.\n * But there are more PRNGs available in ./PRNG/.\n *\n * @param {number} seed A positive 32bit integer. Do not use negative numbers.\n * @return {PRNG}\n */\nexport const create = seed => new DefaultPRNG(seed)\n\n/**\n * Generates a single random bool.\n *\n * @param {PRNG} gen A random number generator.\n * @return {Boolean} A random boolean\n */\nexport const bool = gen => (gen.next() >= 0.5)\n\n/**\n * Generates a random integer with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const int53 = (gen, min, max) => math.floor(gen.next() * (max + 1 - min) + min)\n\n/**\n * Generates a random integer with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const uint53 = (gen, min, max) => math.abs(int53(gen, min, max))\n\n/**\n * Generates a random integer with 32 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const int32 = (gen, min, max) => math.floor(gen.next() * (max + 1 - min) + min)\n\n/**\n * Generates a random integer with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const uint32 = (gen, min, max) => int32(gen, min, max) >>> 0\n\n/**\n * @deprecated\n * Optimized version of prng.int32. It has the same precision as prng.int32, but should be preferred when\n * openaring on smaller ranges.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive). The max inclusive number is `binary.BITS31-1`\n * @return {Number} A random integer on [min, max]\n */\nexport const int31 = (gen, min, max) => int32(gen, min, max)\n\n/**\n * Generates a random real on [0, 1) with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @return {Number} A random real number on [0, 1).\n */\nexport const real53 = gen => gen.next() // (((gen.next() >>> 5) * binary.BIT26) + (gen.next() >>> 6)) / MAX_SAFE_INTEGER\n\n/**\n * Generates a random character from char code 32 - 126. I.e. Characters, Numbers, special characters, and Space:\n *\n * @param {PRNG} gen A random number generator.\n * @return {string}\n *\n * (Space)!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[/]^_`abcdefghijklmnopqrstuvwxyz{|}~\n */\nexport const char = gen => fromCharCode(int31(gen, 32, 126))\n\n/**\n * @param {PRNG} gen\n * @return {string} A single letter (a-z)\n */\nexport const letter = gen => fromCharCode(int31(gen, 97, 122))\n\n/**\n * @param {PRNG} gen\n * @param {number} [minLen=0]\n * @param {number} [maxLen=20]\n * @return {string} A random word (0-20 characters) without spaces consisting of letters (a-z)\n */\nexport const word = (gen, minLen = 0, maxLen = 20) => {\n const len = int31(gen, minLen, maxLen)\n let str = ''\n for (let i = 0; i < len; i++) {\n str += letter(gen)\n }\n return str\n}\n\n/**\n * TODO: this function produces invalid runes. Does not cover all of utf16!!\n *\n * @param {PRNG} gen\n * @return {string}\n */\nexport const utf16Rune = gen => {\n const codepoint = int31(gen, 0, 256)\n return fromCodePoint(codepoint)\n}\n\n/**\n * @param {PRNG} gen\n * @param {number} [maxlen = 20]\n */\nexport const utf16String = (gen, maxlen = 20) => {\n const len = int31(gen, 0, maxlen)\n let str = ''\n for (let i = 0; i < len; i++) {\n str += utf16Rune(gen)\n }\n return str\n}\n\n/**\n * Returns one element of a given array.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Array<T>} array Non empty Array of possible values.\n * @return {T} One of the values of the supplied Array.\n * @template T\n */\nexport const oneOf = (gen, array) => array[int31(gen, 0, array.length - 1)]\n\n/**\n * @param {PRNG} gen\n * @param {number} len\n * @return {Uint8Array<ArrayBuffer>}\n */\nexport const uint8Array = (gen, len) => {\n const buf = buffer.createUint8ArrayFromLen(len)\n for (let i = 0; i < buf.length; i++) {\n buf[i] = int32(gen, 0, binary.BITS8)\n }\n return buf\n}\n\n/* c8 ignore start */\n/**\n * @param {PRNG} gen\n * @param {number} len\n * @return {Uint16Array}\n */\nexport const uint16Array = (gen, len) => new Uint16Array(uint8Array(gen, len * 2).buffer)\n\n/**\n * @param {PRNG} gen\n * @param {number} len\n * @return {Uint32Array}\n */\nexport const uint32Array = (gen, len) => new Uint32Array(uint8Array(gen, len * 4).buffer)\n/* c8 ignore stop */\n","/**\n * @experimental WIP\n *\n * Simple & efficient schemas for your data.\n */\n\nimport * as obj from './object.js'\nimport * as arr from './array.js'\nimport * as error from './error.js'\nimport * as env from './environment.js'\nimport * as equalityTraits from './trait/equality.js'\nimport * as fun from './function.js'\nimport * as string from './string.js'\nimport * as prng from './prng.js'\nimport * as number from './number.js'\n\n/**\n * @typedef {string|number|bigint|boolean|null|undefined|symbol} Primitive\n */\n\n/**\n * @typedef {{ [k:string|number|symbol]: any }} AnyObject\n */\n\n/**\n * @template T\n * @typedef {T extends Schema<infer X> ? X : T} Unwrap\n */\n\n/**\n * @template T\n * @typedef {T extends Schema<infer X> ? X : T} TypeOf\n */\n\n/**\n * @template {readonly unknown[]} T\n * @typedef {T extends readonly [Schema<infer First>, ...infer Rest] ? [First, ...UnwrapArray<Rest>] : [] } UnwrapArray\n */\n\n/**\n * @template T\n * @typedef {T extends Schema<infer S> ? Schema<S> : never} CastToSchema\n */\n\n/**\n * @template {unknown[]} Arr\n * @typedef {Arr extends [...unknown[], infer L] ? L : never} TupleLast\n */\n\n/**\n * @template {unknown[]} Arr\n * @typedef {Arr extends [...infer Fs, unknown] ? Fs : never} TuplePop\n */\n\n/**\n * @template {readonly unknown[]} T\n * @typedef {T extends []\n * ? {}\n * : T extends [infer First]\n * ? First\n * : T extends [infer First, ...infer Rest]\n * ? First & Intersect<Rest>\n * : never\n * } Intersect\n */\n\nconst schemaSymbol = Symbol('0schema')\n\nexport class ValidationError {\n constructor () {\n /**\n * Reverse errors\n * @type {Array<{ path: string?, expected: string, has: string, message: string? }>}\n */\n this._rerrs = []\n }\n\n /**\n * @param {string?} path\n * @param {string} expected\n * @param {string} has\n * @param {string?} message\n */\n extend (path, expected, has, message = null) {\n this._rerrs.push({ path, expected, has, message })\n }\n\n toString () {\n const s = []\n for (let i = this._rerrs.length - 1; i > 0; i--) {\n const r = this._rerrs[i]\n /* c8 ignore next */\n s.push(string.repeat(' ', (this._rerrs.length - i) * 2) + `${r.path != null ? `[${r.path}] ` : ''}${r.has} doesn't match ${r.expected}. ${r.message}`)\n }\n return s.join('\\n')\n }\n}\n\n/**\n * @param {any} a\n * @param {any} b\n * @return {boolean}\n */\nconst shapeExtends = (a, b) => {\n if (a === b) return true\n if (a == null || b == null || a.constructor !== b.constructor) return false\n if (a[equalityTraits.EqualityTraitSymbol]) return equalityTraits.equals(a, b) // last resort: check equality (do this before array and obj check which don't implement the equality trait)\n if (arr.isArray(a)) {\n return arr.every(a, aitem =>\n arr.some(b, bitem => shapeExtends(aitem, bitem))\n )\n } else if (obj.isObject(a)) {\n return obj.every(a, (aitem, akey) =>\n shapeExtends(aitem, b[akey])\n )\n }\n /* c8 ignore next */\n return false\n}\n\n/**\n * @template T\n * @implements {equalityTraits.EqualityTrait}\n */\nexport class Schema {\n // this.shape must not be defined on Schema. Otherwise typecheck on metatypes (e.g. $$object) won't work as expected anymore\n /**\n * If true, the more things are added to the shape the more objects this schema will accept (e.g.\n * union). By default, the more objects are added, the the fewer objects this schema will accept.\n * @protected\n */\n static _dilutes = false\n\n /**\n * @param {Schema<any>} other\n */\n extends (other) {\n let [a, b] = [/** @type {any} */(this).shape, /** @type {any} */ (other).shape]\n if (/** @type {typeof Schema<any>} */ (this.constructor)._dilutes) [b, a] = [a, b]\n return shapeExtends(a, b)\n }\n\n /**\n * Overwrite this when necessary. By default, we only check the `shape` property which every shape\n * should have.\n * @param {Schema<any>} other\n */\n equals (other) {\n // @ts-ignore\n return this.constructor === other.constructor && fun.equalityDeep(this.shape, other.shape)\n }\n\n [schemaSymbol] () { return true }\n\n /**\n * @param {object} other\n */\n [equalityTraits.EqualityTraitSymbol] (other) {\n return this.equals(/** @type {any} */ (other))\n }\n\n /**\n * Use `schema.validate(obj)` with a typed parameter that is already of typed to be an instance of\n * Schema. Validate will check the structure of the parameter and return true iff the instance\n * really is an instance of Schema.\n *\n * @param {T} o\n * @return {boolean}\n */\n validate (o) {\n return this.check(o)\n }\n\n /* c8 ignore start */\n /**\n * Similar to validate, but this method accepts untyped parameters.\n *\n * @param {any} _o\n * @param {ValidationError} [_err]\n * @return {_o is T}\n */\n check (_o, _err) {\n error.methodUnimplemented()\n }\n /* c8 ignore stop */\n\n /**\n * @type {Schema<T?>}\n */\n get nullable () {\n // @ts-ignore\n return $union(this, $null)\n }\n\n /**\n * @type {$Optional<Schema<T>>}\n */\n get optional () {\n return new $Optional(/** @type {Schema<T>} */ (this))\n }\n\n /**\n * Cast a variable to a specific type. Returns the casted value, or throws an exception otherwise.\n * Use this if you know that the type is of a specific type and you just want to convince the type\n * system.\n *\n * **Do not rely on these error messages!**\n * Performs an assertion check only if not in a production environment.\n *\n * @template OO\n * @param {OO} o\n * @return {Extract<OO, T> extends never ? T : (OO extends Array<never> ? T : Extract<OO,T>)}\n */\n cast (o) {\n assert(o, this)\n return /** @type {any} */ (o)\n }\n\n /**\n * EXPECTO PATRONUM!! 🪄\n * This function protects against type errors. Though it may not work in the real world.\n *\n * \"After all this time?\"\n * \"Always.\" - Snape, talking about type safety\n *\n * Ensures that a variable is a a specific type. Returns the value, or throws an exception if the assertion check failed.\n * Use this if you know that the type is of a specific type and you just want to convince the type\n * system.\n *\n * Can be useful when defining lambdas: `s.lambda(s.$number, s.$void).expect((n) => n + 1)`\n *\n * **Do not rely on these error messages!**\n * Performs an assertion check if not in a production environment.\n *\n * @param {T} o\n * @return {o extends T ? T : never}\n */\n expect (o) {\n assert(o, this)\n return o\n }\n}\n\n/**\n * @template {(new (...args:any[]) => any) | ((...args:any[]) => any)} Constr\n * @typedef {Constr extends ((...args:any[]) => infer T) ? T : (Constr extends (new (...args:any[]) => any) ? InstanceType<Constr> : never)} Instance\n */\n\n/**\n * @template {(new (...args:any[]) => any) | ((...args:any[]) => any)} C\n * @extends {Schema<Instance<C>>}\n */\nexport class $ConstructedBy extends Schema {\n /**\n * @param {C} c\n * @param {((o:Instance<C>)=>boolean)|null} check\n */\n constructor (c, check) {\n super()\n this.shape = c\n this._c = check\n }\n\n /**\n * @param {any} o\n * @param {ValidationError} [err]\n * @return {o is C extends ((...args:any[]) => infer T) ? T : (C extends (new (...args:any[]) => any) ? InstanceType<C> : never)} o\n */\n check (o, err = undefined) {\n const c = o?.constructor === this.shape && (this._c == null || this._c(o))\n /* c8 ignore next */\n !c && err?.extend(null, this.shape.name, o?.constructor.name, o?.constructor !== this.shape ? 'Constructor match failed' : 'Check failed')\n return c\n }\n}\n\n/**\n * @template {(new (...args:any[]) => any) | ((...args:any[]) => any)} C\n * @param {C} c\n * @param {((o:Instance<C>) => boolean)|null} check\n * @return {CastToSchema<$ConstructedBy<C>>}\n */\nexport const $constructedBy = (c, check = null) => new $ConstructedBy(c, check)\nexport const $$constructedBy = $constructedBy($ConstructedBy)\n\n/**\n * Check custom properties on any object. You may want to overwrite the generated Schema<any>.\n *\n * @extends {Schema<any>}\n */\nexport class $Custom extends Schema {\n /**\n * @param {(o:any) => boolean} check\n */\n constructor (check) {\n super()\n /**\n * @type {(o:any) => boolean}\n */\n this.shape = check\n }\n\n /**\n * @param {any} o\n * @param {ValidationError} err\n * @return {o is any}\n */\n check (o, err) {\n const c = this.shape(o)\n /* c8 ignore next */\n !c && err?.extend(null, 'custom prop', o?.constructor.name, 'failed to check custom prop')\n return c\n }\n}\n\n/**\n * @param {(o:any) => boolean} check\n * @return {Schema<any>}\n */\nexport const $custom = (check) => new $Custom(check)\nexport const $$custom = $constructedBy($Custom)\n\n/**\n * @template {Primitive} T\n * @extends {Schema<T>}\n */\nexport class $Literal extends Schema {\n /**\n * @param {Array<T>} literals\n */\n constructor (literals) {\n super()\n this.shape = literals\n }\n\n /**\n *\n * @param {any} o\n * @param {ValidationError} [err]\n * @return {o is T}\n */\n check (o, err) {\n const c = this.shape.some(a => a === o)\n /* c8 ignore next */\n !c && err?.extend(null, this.shape.join(' | '), o.toString())\n return c\n }\n}\n\n/**\n * @template {Primitive[]} T\n * @param {T} literals\n * @return {CastToSchema<$Literal<T[number]>>}\n */\nexport const $literal = (...literals) => new $Literal(literals)\nexport const $$literal = $constructedBy($Literal)\n\n/**\n * @template {Array<string|Schema<string|number>>} Ts\n * @typedef {Ts extends [] ? `` : (Ts extends [infer T] ? (Unwrap<T> extends (string|number) ? Unwrap<T> : never) : (Ts extends [infer T1, ...infer Rest] ? `${Unwrap<T1> extends (string|number) ? Unwrap<T1> : never}${Rest extends Array<string|Schema<string|number>> ? CastStringTemplateArgsToTemplate<Rest> : never}` : never))} CastStringTemplateArgsToTemplate\n */\n\n/**\n * @param {string} str\n * @return {string}\n */\nconst _regexEscape = /** @type {any} */ (RegExp).escape || /** @type {(str:string) => string} */ (str =>\n str.replace(/[().|&,$^[\\]]/g, s => '\\\\' + s)\n)\n\n/**\n * @param {string|Schema<any>} s\n * @return {string[]}\n */\nconst _schemaStringTemplateToRegex = s => {\n if ($string.check(s)) {\n return [_regexEscape(s)]\n }\n if ($$literal.check(s)) {\n return /** @type {Array<string|number>} */ (s.shape).map(v => v + '')\n }\n if ($$number.check(s)) {\n return ['[+-]?\\\\d+.?\\\\d*']\n }\n if ($$string.check(s)) {\n return ['.*']\n }\n if ($$union.check(s)) {\n return s.shape.map(_schemaStringTemplateToRegex).flat(1)\n }\n /* c8 ignore next 2 */\n // unexpected schema structure (only supports unions and string in literal types)\n error.unexpectedCase()\n}\n\n/**\n * @template {Array<string|Schema<string|number>>} T\n * @extends {Schema<CastStringTemplateArgsToTemplate<T>>}\n */\nexport class $StringTemplate extends Schema {\n /**\n * @param {T} shape\n */\n constructor (shape) {\n super()\n this.shape = shape\n this._r = new RegExp('^' + shape.map(_schemaStringTemplateToRegex).map(opts => `(${opts.join('|')})`).join('') + '$')\n }\n\n /**\n * @param {any} o\n * @param {ValidationError} [err]\n * @return {o is CastStringTemplateArgsToTemplate<T>}\n */\n check (o, err) {\n const c = this._r.exec(o) != null\n /* c8 ignore next */\n !c && err?.extend(null, this._r.toString(), o.toString(), 'String doesn\\'t match string template.')\n return c\n }\n}\n\n/**\n * @template {Array<string|Schema<string|number>>} T\n * @param {T} literals\n * @return {CastToSchema<$StringTemplate<T>>}\n */\nexport const $stringTemplate = (...literals) => new $StringTemplate(literals)\nexport const $$stringTemplate = $constructedBy($StringTemplate)\n\nconst isOptionalSymbol = Symbol('optional')\n/**\n * @template {Schema<any>} S\n * @extends Schema<Unwrap<S>|undefined>\n */\nclass $Optional extends Schema {\n /**\n * @param {S} shape\n */\n constructor (shape) {\n super()\n this.shape = shape\n }\n\n /**\n * @param {any} o\n * @param {ValidationError} [err]\n * @return {o is (Unwrap<S>|undefined)}\n */\n check (o, err) {\n const c = o === undefined || this.shape.check(o)\n /* c8 ignore next */\n !c && err?.extend(null, 'undefined (optional)', '()')\n return c\n }\n\n get [isOptionalSymbol] () { return true }\n}\nexport const $$optional = $constructedBy($Optional)\n\n/**\n * @extends Schema<never>\n */\nclass $Never extends Schema {\n /**\n * @param {any} _o\n * @param {ValidationError} [err]\n * @return {_o is never}\n */\n check (_o, err) {\n /* c8 ignore next */\n err?.extend(null, 'never', typeof _o)\n return false\n }\n}\n\n/**\n * @type {Schema<never>}\n */\nexport const $never = new $Never()\nexport const $$never = $constructedBy($Never)\n\n/**\n * @template {{ [key: string|symbol|number]: Schema<any> }} S\n * @typedef {{ [Key in keyof S as S[Key] extends $Optional<Schema<any>> ? Key : never]?: S[Key] extends $Optional<Schema<infer Type>> ? Type : never } & { [Key in keyof S as S[Key] extends $Optional<Schema<any>> ? never : Key]: S[Key] extends Schema<infer Type> ? Type : never }} $ObjectToType\n */\n\n/**\n * @template {{[key:string|symbol|number]: Schema<any>}} S\n * @extends {Schema<$ObjectToType<S>>}\n */\nexport class $Object extends Schema {\n /**\n * @param {S} shape\n * @param {boolean} partial\n */\n constructor (shape, partial = false) {\n super()\n /**\n * @type {S}\n */\n this.shape = shape\n this._isPartial = partial\n }\n\n static _dilutes = true\n\n /**\n * @type {Schema<Partial<$ObjectToType<S>>>}\n */\n get partial () {\n return new $Object(this.shape, true)\n }\n\n /**\n * @param {any} o\n * @param {ValidationError} err\n * @return {o is $ObjectToType<S>}\n */\n check (o, err) {\n if (o == null) {\n /* c8 ignore next */\n err?.extend(null, 'object', 'null')\n return false\n }\n return obj.every(this.shape, (vv, vk) => {\n const c = (this._isPartial && !obj.hasProperty(o, vk)) || vv.check(o[vk], err)\n !c && err?.extend(vk.toString(), vv.toString(), typeof o[vk], 'Object property does not match')\n return c\n })\n }\n}\n\n/**\n * @template S\n * @typedef {Schema<{ [Key in keyof S as S[Key] extends $Optional<Schema<any>> ? Key : never]?: S[Key] extends $Optional<Schema<infer Type>> ? Type : never } & { [Key in keyof S as S[Key] extends $Optional<Schema<any>> ? never : Key]: S[Key] extends Schema<infer Type> ? Type : never }>} _ObjectDefToSchema\n */\n\n// I used an explicit type annotation instead of $ObjectToType, so that the user doesn't see the\n// weird type definitions when inspecting type definions.\n/**\n * @template {{ [key:string|symbol|number]: Schema<any> }} S\n * @param {S} def\n * @return {_ObjectDefToSchema<S> extends Schema<infer S> ? Schema<{ [K in keyof S]: S[K] }> : never}\n */\nexport const $object = def => /** @type {any} */ (new $Object(def))\nexport const $$object = $constructedBy($Object)\n/**\n * @type {Schema<{[key:string]: any}>}\n */\nexport const $objectAny = $custom(o => o != null && (o.constructor === Object || o.constructor == null))\n\n/**\n * @template {Schema<string|number|symbol>} Keys\n * @template {Schema<any>} Values\n * @extends {Schema<{ [key in Unwrap<Keys>]: Unwrap<Values> }>}\n */\nexport class $Record extends Schema {\n /**\n * @param {Keys} keys\n * @param {Values} values\n */\n constructor (keys, values) {\n super()\n this.shape = {\n keys, values\n }\n }\n\n /**\n * @param {any} o\n * @param {ValidationError} err\n * @return {o is { [key in Unwrap<Keys>]: Unwrap<Values> }}\n */\n check (o, err) {\n return o != null && obj.every(o, (vv, vk) => {\n const ck = this.shape.keys.check(vk, err)\n /* c8 ignore next */\n !ck && err?.extend(vk + '', 'Record', typeof o, ck ? 'Key doesn\\'t match schema' : 'Value doesn\\'t match value')\n return ck && this.shape.values.check(vv, err)\n })\n }\n}\n\n/**\n * @template {Schema<string|number|symbol>} Keys\n * @template {Schema<any>} Values\n * @param {Keys} keys\n * @param {Values} values\n * @return {CastToSchema<$Record<Keys,Values>>}\n */\nexport const $record = (keys, values) => new $Record(keys, values)\nexport const $$record = $constructedBy($Record)\n\n/**\n * @template {Schema<any>[]} S\n * @extends {Schema<{ [Key in keyof S]: S[Key] extends Schema<infer Type> ? Type : never }>}\n */\nexport class $Tuple extends Schema {\n /**\n * @param {S} shape\n */\n constructor (shape) {\n super()\n this.shape = shape\n }\n\n /**\n * @param {any} o\n * @param {ValidationError} err\n * @return {o is { [K in keyof S]: S[K] extends Schema<infer Type> ? Type : never }}\n */\n check (o, err) {\n return o != null && obj.every(this.shape, (vv, vk) => {\n const c = /** @type {Schema<any>} */ (vv).check(o[vk], err)\n /* c8 ignore next */\n !c && err?.extend(vk.toString(), 'Tuple', typeof vv)\n return c\n })\n }\n}\n\n/**\n * @template {Array<Schema<any>>} T\n * @param {T} def\n * @return {CastToSchema<$Tuple<T>>}\n */\nexport const $tuple = (...def) => new $Tuple(def)\nexport const $$tuple = $constructedBy($Tuple)\n\n/**\n * @template {Schema<any>} S\n * @extends {Schema<Array<S extends Schema<infer T> ? T : never>>}\n */\nexport class $Array extends Schema {\n /**\n * @param {Array<S>} v\n */\n constructor (v) {\n super()\n /**\n * @type {Schema<S extends Schema<infer T> ? T : never>}\n */\n this.shape = v.length === 1 ? v[0] : new $Union(v)\n }\n\n /**\n * @param {any} o\n * @param {ValidationError} [err]\n * @return {o is Array<S extends Schema<infer T> ? T : never>} o\n */\n check (o, err) {\n const c = arr.isArray(o) && arr.every(o, oi => this.shape.check(oi))\n /* c8 ignore next */\n !c && err?.extend(null, 'Array', '')\n return c\n }\n}\n\n/**\n * @template {Array<Schema<any>>} T\n * @param {T} def\n * @return {Schema<Array<T extends Array<Schema<infer S>> ? S : never>>}\n */\nexport const $array = (...def) => new $Array(def)\nexport const $$array = $constructedBy($Array)\n/**\n * @type {Schema<Array<any>>}\n */\nexport const $arrayAny = $custom(o => arr.isArray(o))\n\n/**\n * @template T\n * @extends {Schema<T>}\n */\nexport class $InstanceOf extends Schema {\n /**\n * @param {new (...args:any) => T} constructor\n * @param {((o:T) => boolean)|null} check\n */\n constructor (constructor, check) {\n super()\n this.shape = constructor\n this._c = check\n }\n\n /**\n * @param {any} o\n * @param {ValidationError} err\n * @return {o is T}\n */\n check (o, err) {\n const c = o instanceof this.shape && (this._c == null || this._c(o))\n /* c8 ignore next */\n !c && err?.extend(null, this.shape.name, o?.constructor.name)\n return c\n }\n}\n\n/**\n * @template T\n * @param {new (...args:any) => T} c\n * @param {((o:T) => boolean)|null} check\n * @return {Schema<T>}\n */\nexport const $instanceOf = (c, check = null) => new $InstanceOf(c, check)\nexport const $$instanceOf = $constructedBy($InstanceOf)\n\nexport const $$schema = $instanceOf(Schema)\n\n/**\n * @template {Schema<any>[]} Args\n * @typedef {(...args:UnwrapArray<TuplePop<Args>>)=>Unwrap<TupleLast<Args>>} _LArgsToLambdaDef\n */\n\n/**\n * @template {Array<Schema<any>>} Args\n * @extends {Schema<_LArgsToLambdaDef<Args>>}\n */\nexport class $Lambda extends Schema {\n /**\n * @param {Args} args\n */\n constructor (args) {\n super()\n this.len = args.length - 1\n this.args = $tuple(...args.slice(-1))\n this.res = args[this.len]\n }\n\n /**\n * @param {any} f\n * @param {ValidationError} err\n * @return {f is _LArgsToLambdaDef<Args>}\n */\n check (f, err) {\n const c = f.constructor === Function && f.length <= this.len\n /* c8 ignore next */\n !c && err?.extend(null, 'function', typeof f)\n return c\n }\n}\n\n/**\n * @template {Schema<any>[]} Args\n * @param {Args} args\n * @return {Schema<(...args:UnwrapArray<TuplePop<Args>>)=>Unwrap<TupleLast<Args>>>}\n */\nexport const $lambda = (...args) => new $Lambda(args.length > 0 ? args : [$void])\nexport const $$lambda = $constructedBy($Lambda)\n\n/**\n * @type {Schema<Function>}\n */\nexport const $function = $custom(o => typeof o === 'function')\n\n/**\n * @template {Array<Schema<any>>} T\n * @extends {Schema<Intersect<UnwrapArray<T>>>}\n */\nexport class $Intersection extends Schema {\n /**\n * @param {T} v\n */\n constructor (v) {\n super()\n /**\n * @type {T}\n */\n this.shape = v\n }\n\n /**\n * @param {any} o\n * @param {ValidationError} [err]\n * @return {o is Intersect<UnwrapArray<T>>}\n */\n check (o, err) {\n // @ts-ignore\n const c = arr.every(this.shape, check => check.check(o, err))\n /* c8 ignore next */\n !c && err?.extend(null, 'Intersectinon', typeof o)\n return c\n }\n}\n\n/**\n * @template {Schema<any>[]} T\n * @param {T} def\n * @return {CastToSchema<$Intersection<T>>}\n */\nexport const $intersect = (...def) => new $Intersection(def)\nexport const $$intersect = $constructedBy($Intersection, o => o.shape.length > 0) // Intersection with length=0 is considered \"any\"\n\n/**\n * @template S\n * @extends {Schema<S>}\n */\nexport class $Union extends Schema {\n static _dilutes = true\n\n /**\n * @param {Array<Schema<S>>} v\n */\n constructor (v) {\n super()\n this.shape = v\n }\n\n /**\n * @param {any} o\n * @param {ValidationError} [err]\n * @return {o is S}\n */\n check (o, err) {\n const c = arr.some(this.shape, (vv) => vv.check(o, err))\n err?.extend(null, 'Union', typeof o)\n return c\n }\n}\n\n/**\n * @template {Array<any>} T\n * @param {T} schemas\n * @return {CastToSchema<$Union<Unwrap<ReadSchema<T>>>>}\n */\nexport const $union = (...schemas) => schemas.findIndex($s => $$union.check($s)) >= 0\n ? $union(...schemas.map($s => $($s)).map($s => $$union.check($s) ? $s.shape : [$s]).flat(1))\n : (schemas.length === 1\n ? schemas[0]\n : new $Union(schemas))\nexport const $$union = /** @type {Schema<$Union<any>>} */ ($constructedBy($Union))\n\nconst _t = () => true\n/**\n * @type {Schema<any>}\n */\nexport const $any = $custom(_t)\nexport const $$any = /** @type {Schema<Schema<any>>} */ ($constructedBy($Custom, o => o.shape === _t))\n\n/**\n * @type {Schema<bigint>}\n */\nexport const $bigint = $custom(o => typeof o === 'bigint')\nexport const $$bigint = /** @type {Schema<Schema<BigInt>>} */ ($custom(o => o === $bigint))\n\n/**\n * @type {Schema<symbol>}\n */\nexport const $symbol = $custom(o => typeof o === 'symbol')\nexport const $$symbol = /** @type {Schema<Schema<Symbol>>} */ ($custom(o => o === $symbol))\n\n/**\n * @type {Schema<number>}\n */\nexport const $number = $custom(o => typeof o === 'number')\nexport const $$number = /** @type {Schema<Schema<number>>} */ ($custom(o => o === $number))\n\n/**\n * @type {Schema<string>}\n */\nexport const $string = $custom(o => typeof o === 'string')\nexport const $$string = /** @type {Schema<Schema<string>>} */ ($custom(o => o === $string))\n\n/**\n * @type {Schema<boolean>}\n */\nexport const $boolean = $custom(o => typeof o === 'boolean')\nexport const $$boolean = /** @type {Schema<Schema<Boolean>>} */ ($custom(o => o === $boolean))\n\n/**\n * @type {Schema<undefined>}\n */\nexport const $undefined = $literal(undefined)\nexport const $$undefined = /** @type {Schema<Schema<undefined>>} */ ($constructedBy($Literal, o => o.shape.length === 1 && o.shape[0] === undefined))\n\n/**\n * @type {Schema<void>}\n */\nexport const $void = $literal(undefined)\nexport const $$void = /** @type {Schema<Schema<void>>} */ ($$undefined)\n\nexport const $null = $literal(null)\nexport const $$null = /** @type {Schema<Schema<null>>} */ ($constructedBy($Literal, o => o.shape.length === 1 && o.shape[0] === null))\n\nexport const $uint8Array = $constructedBy(Uint8Array)\nexport const $$uint8Array = /** @type {Schema<Schema<Uint8Array>>} */ ($constructedBy($ConstructedBy, o => o.shape === Uint8Array))\n\n/**\n * @type {Schema<Primitive>}\n */\nexport const $primitive = $union($number, $string, $null, $undefined, $bigint, $boolean, $symbol)\n\n/**\n * @typedef {JSON[]} JSONArray\n */\n/**\n * @typedef {Primitive|JSONArray|{ [key:string]:JSON }} JSON\n */\n/**\n * @type {Schema<null|number|string|boolean|JSON[]|{[key:string]:JSON}>}\n */\nexport const $json = (() => {\n const $jsonArr = /** @type {$Array<$any>} */ ($array($any))\n const $jsonRecord = /** @type {$Record<$string,$any>} */ ($record($string, $any))\n const $json = $union($number, $string, $null, $boolean, $jsonArr, $jsonRecord)\n $jsonArr.shape = $json\n $jsonRecord.shape.values = $json\n return $json\n})()\n\n/**\n * @template {any} IN\n * @typedef {IN extends Schema<any> ? IN\n * : (IN extends string|number|boolean|null ? Schema<IN>\n * : (IN extends new (...args:any[])=>any ? Schema<InstanceType<IN>>\n * : (IN extends any[] ? Schema<{ [K in keyof IN]: Unwrap<ReadSchema<IN[K]>> }[number]>\n * : (IN extends object ? (_ObjectDefToSchema<{[K in keyof IN]:ReadSchema<IN[K]>}> extends Schema<infer S> ? Schema<{ [K in keyof S]: S[K] }> : never)\n * : never)\n * )\n * )\n * )\n * } ReadSchemaOld\n */\n\n/**\n * @template {any} IN\n * @typedef {[Extract<IN,Schema<any>>,Extract<IN,string|number|boolean|null>,Extract<IN,new (...args:any[])=>any>,Extract<IN,any[]>,Extract<Exclude<IN,Schema<any>|string|number|boolean|null|(new (...args:any[])=>any)|any[]>,object>] extends [infer Schemas, infer Primitives, infer Constructors, infer Arrs, infer Obj]\n * ? Schema<\n * (Schemas extends Schema<infer S> ? S : never)\n * | Primitives\n * | (Constructors extends new (...args:any[])=>any ? InstanceType<Constructors> : never)\n * | (Arrs extends any[] ? { [K in keyof Arrs]: Unwrap<ReadSchema<Arrs[K]>> }[number] : never)\n * | (Obj extends object ? Unwrap<(_ObjectDefToSchema<{[K in keyof Obj]:ReadSchema<Obj[K]>}> extends Schema<infer S> ? Schema<{ [K in keyof S]: S[K] }> : never)> : never)>\n * : never\n * } ReadSchema\n */\n\n/**\n * @typedef {ReadSchema<{x:42}|{y:99}|Schema<string>|[1,2,{}]>} Q\n */\n\n/**\n * @template IN\n * @param {IN} o\n * @return {ReadSchema<IN>}\n */\nexport const $ = o => {\n if ($$schema.check(o)) {\n return /** @type {any} */ (o)\n } else if ($objectAny.check(o)) {\n /**\n * @type {any}\n */\n const o2 = {}\n for (const k in o) {\n o2[k] = $(o[k])\n }\n return /** @type {any} */ ($object(o2))\n } else if ($arrayAny.check(o)) {\n return /** @type {any} */ ($union(...o.map($)))\n } else if ($primitive.check(o)) {\n return /** @type {any} */ ($literal(o))\n } else if ($function.check(o)) {\n return /** @type {any} */ ($constructedBy(/** @type {any} */ (o)))\n }\n /* c8 ignore next */\n error.unexpectedCase()\n}\n\n/* c8 ignore start */\n/**\n * Assert that a variable is of this specific type.\n * The assertion check is only performed in non-production environments.\n *\n * @type {<T>(o:any,schema:Schema<T>) => asserts o is T}\n */\nexport const assert = env.production\n ? () => {}\n : (o, schema) => {\n const err = new ValidationError()\n if (!schema.check(o, err)) {\n throw error.create(`Expected value to be of type ${schema.constructor.name}.\\n${err.toString()}`)\n }\n }\n/* c8 ignore end */\n\n/**\n * @template In\n * @template Out\n * @typedef {{ if: Schema<In>, h: (o:In,state?:any)=>Out }} Pattern\n */\n\n/**\n * @template {Pattern<any,any>} P\n * @template In\n * @typedef {ReturnType<Extract<P,Pattern<In extends number ? number : (In extends string ? string : In),any>>['h']>} PatternMatchResult\n */\n\n/**\n * @todo move this to separate library\n * @template {any} [State=undefined]\n * @template {Pattern<any,any>} [Patterns=never]\n */\nexport class PatternMatcher {\n /**\n * @param {Schema<State>} [$state]\n */\n constructor ($state) {\n /**\n * @type {Array<Patterns>}\n */\n this.patterns = []\n this.$state = $state\n }\n\n /**\n * @template P\n * @template R\n * @param {P} pattern\n * @param {(o:NoInfer<Unwrap<ReadSchema<P>>>,s:State)=>R} handler\n * @return {PatternMatcher<State,Patterns|Pattern<Unwrap<ReadSchema<P>>,R>>}\n */\n if (pattern, handler) {\n // @ts-ignore\n this.patterns.push({ if: $(pattern), h: handler })\n // @ts-ignore\n return this\n }\n\n /**\n * @template R\n * @param {(o:any,s:State)=>R} h\n */\n else (h) {\n return this.if($any, h)\n }\n\n /**\n * @return {State extends undefined\n * ? <In extends Unwrap<Patterns['if']>>(o:In,state?:undefined)=>PatternMatchResult<Patterns,In>\n * : <In extends Unwrap<Patterns['if']>>(o:In,state:State)=>PatternMatchResult<Patterns,In>}\n */\n done () {\n // @ts-ignore\n return /** @type {any} */ (o, s) => {\n for (let i = 0; i < this.patterns.length; i++) {\n const p = this.patterns[i]\n if (p.if.check(o)) {\n // @ts-ignore\n return p.h(o, s)\n }\n }\n throw error.create('Unhandled pattern')\n }\n }\n}\n\n/**\n * @template [State=undefined]\n * @param {State} [state]\n * @return {PatternMatcher<State extends undefined ? undefined : Unwrap<ReadSchema<State>>>}\n */\nexport const match = state => new PatternMatcher(/** @type {any} */ (state))\n\n/**\n * Helper function to generate a (non-exhaustive) sample set from a gives schema.\n *\n * @type {<T>(o:T,gen:prng.PRNG)=>T}\n */\nconst _random = /** @type {any} */ (match(/** @type {Schema<prng.PRNG>} */ ($any))\n .if($$number, (_o, gen) => prng.int53(gen, number.MIN_SAFE_INTEGER, number.MAX_SAFE_INTEGER))\n .if($$string, (_o, gen) => prng.word(gen))\n .if($$boolean, (_o, gen) => prng.bool(gen))\n .if($$bigint, (_o, gen) => BigInt(prng.int53(gen, number.MIN_SAFE_INTEGER, number.MAX_SAFE_INTEGER)))\n .if($$union, (o, gen) => random(gen, prng.oneOf(gen, o.shape)))\n .if($$object, (o, gen) => {\n /**\n * @type {any}\n */\n const res = {}\n for (const k in o.shape) {\n let prop = o.shape[k]\n if ($$optional.check(prop)) {\n if (prng.bool(gen)) { continue }\n prop = prop.shape\n }\n res[k] = _random(prop, gen)\n }\n return res\n })\n .if($$array, (o, gen) => {\n const arr = []\n const n = prng.int32(gen, 0, 42)\n for (let i = 0; i < n; i++) {\n arr.push(random(gen, o.shape))\n }\n return arr\n })\n .if($$literal, (o, gen) => {\n return prng.oneOf(gen, o.shape)\n })\n .if($$null, (o, gen) => {\n return null\n })\n .if($$lambda, (o, gen) => {\n const res = random(gen, o.res)\n return () => res\n })\n .if($$any, (o, gen) => random(gen, prng.oneOf(gen, [\n $number, $string, $null, $undefined, $bigint, $boolean,\n $array($number),\n $record($union('a', 'b', 'c'), $number)\n ])))\n .if($$record, (o, gen) => {\n /**\n * @type {any}\n */\n const res = {}\n const keysN = prng.int53(gen, 0, 3)\n for (let i = 0; i < keysN; i++) {\n const key = random(gen, o.shape.keys)\n const val = random(gen, o.shape.values)\n res[key] = val\n }\n return res\n })\n .done())\n\n/**\n * @template S\n * @param {prng.PRNG} gen\n * @param {S} schema\n * @return {Unwrap<ReadSchema<S>>}\n */\nexport const random = (gen, schema) => /** @type {any} */ (_random($(schema), gen))\n","/* eslint-env browser */\n\n/**\n * Utility module to work with the DOM.\n *\n * @module dom\n */\n\nimport * as pair from './pair.js'\nimport * as map from './map.js'\nimport * as $ from './schema.js'\n\n/* c8 ignore start */\n/**\n * @type {Document}\n */\nexport const doc = /** @type {Document} */ (typeof document !== 'undefined' ? document : {})\n\n/**\n * @param {string} name\n * @return {HTMLElement}\n */\nexport const createElement = name => doc.createElement(name)\n\n/**\n * @return {DocumentFragment}\n */\nexport const createDocumentFragment = () => doc.createDocumentFragment()\n\n/**\n * @type {$.Schema<DocumentFragment>}\n */\nexport const $fragment = $.$custom(el => el.nodeType === DOCUMENT_FRAGMENT_NODE)\n\n/**\n * @param {string} text\n * @return {Text}\n */\nexport const createTextNode = text => doc.createTextNode(text)\n\nexport const domParser = /** @type {DOMParser} */ (typeof DOMParser !== 'undefined' ? new DOMParser() : null)\n\n/**\n * @param {HTMLElement} el\n * @param {string} name\n * @param {Object} opts\n */\nexport const emitCustomEvent = (el, name, opts) => el.dispatchEvent(new CustomEvent(name, opts))\n\n/**\n * @param {Element} el\n * @param {Array<pair.Pair<string,string|boolean>>} attrs Array of key-value pairs\n * @return {Element}\n */\nexport const setAttributes = (el, attrs) => {\n pair.forEach(attrs, (key, value) => {\n if (value === false) {\n el.removeAttribute(key)\n } else if (value === true) {\n el.setAttribute(key, '')\n } else {\n // @ts-ignore\n el.setAttribute(key, value)\n }\n })\n return el\n}\n\n/**\n * @param {Element} el\n * @param {Map<string, string>} attrs Array of key-value pairs\n * @return {Element}\n */\nexport const setAttributesMap = (el, attrs) => {\n attrs.forEach((value, key) => { el.setAttribute(key, value) })\n return el\n}\n\n/**\n * @param {Array<Node>|HTMLCollection} children\n * @return {DocumentFragment}\n */\nexport const fragment = children => {\n const fragment = createDocumentFragment()\n for (let i = 0; i < children.length; i++) {\n appendChild(fragment, children[i])\n }\n return fragment\n}\n\n/**\n * @param {Element} parent\n * @param {Array<Node>} nodes\n * @return {Element}\n */\nexport const append = (parent, nodes) => {\n appendChild(parent, fragment(nodes))\n return parent\n}\n\n/**\n * @param {HTMLElement} el\n */\nexport const remove = el => el.remove()\n\n/**\n * @param {EventTarget} el\n * @param {string} name\n * @param {EventListener} f\n */\nexport const addEventListener = (el, name, f) => el.addEventListener(name, f)\n\n/**\n * @param {EventTarget} el\n * @param {string} name\n * @param {EventListener} f\n */\nexport const removeEventListener = (el, name, f) => el.removeEventListener(name, f)\n\n/**\n * @param {Node} node\n * @param {Array<pair.Pair<string,EventListener>>} listeners\n * @return {Node}\n */\nexport const addEventListeners = (node, listeners) => {\n pair.forEach(listeners, (name, f) => addEventListener(node, name, f))\n return node\n}\n\n/**\n * @param {Node} node\n * @param {Array<pair.Pair<string,EventListener>>} listeners\n * @return {Node}\n */\nexport const removeEventListeners = (node, listeners) => {\n pair.forEach(listeners, (name, f) => removeEventListener(node, name, f))\n return node\n}\n\n/**\n * @param {string} name\n * @param {Array<pair.Pair<string,string>|pair.Pair<string,boolean>>} attrs Array of key-value pairs\n * @param {Array<Node>} children\n * @return {Element}\n */\nexport const element = (name, attrs = [], children = []) =>\n append(setAttributes(createElement(name), attrs), children)\n\n/**\n * @type {$.Schema<Element>}\n */\nexport const $element = $.$custom(el => el.nodeType === ELEMENT_NODE)\n\n/**\n * @param {number} width\n * @param {number} height\n */\nexport const canvas = (width, height) => {\n const c = /** @type {HTMLCanvasElement} */ (createElement('canvas'))\n c.height = height\n c.width = width\n return c\n}\n\n/**\n * @param {string} t\n * @return {Text}\n */\nexport const text = createTextNode\n\n/**\n * @type {$.Schema<Text>}\n */\nexport const $text = $.$custom(el => el.nodeType === TEXT_NODE)\n\n/**\n * @param {pair.Pair<string,string>} pair\n */\nexport const pairToStyleString = pair => `${pair.left}:${pair.right};`\n\n/**\n * @param {Array<pair.Pair<string,string>>} pairs\n * @return {string}\n */\nexport const pairsToStyleString = pairs => pairs.map(pairToStyleString).join('')\n\n/**\n * @param {Map<string,string>} m\n * @return {string}\n */\nexport const mapToStyleString = m => map.map(m, (value, key) => `${key}:${value};`).join('')\n\n/**\n * @todo should always query on a dom element\n *\n * @param {HTMLElement|ShadowRoot} el\n * @param {string} query\n * @return {HTMLElement | null}\n */\nexport const querySelector = (el, query) => el.querySelector(query)\n\n/**\n * @param {HTMLElement|ShadowRoot} el\n * @param {string} query\n * @return {NodeListOf<HTMLElement>}\n */\nexport const querySelectorAll = (el, query) => el.querySelectorAll(query)\n\n/**\n * @param {string} id\n * @return {HTMLElement}\n */\nexport const getElementById = id => /** @type {HTMLElement} */ (doc.getElementById(id))\n\n/**\n * @param {string} html\n * @return {HTMLElement}\n */\nconst _parse = html => domParser.parseFromString(`<html><body>${html}</body></html>`, 'text/html').body\n\n/**\n * @param {string} html\n * @return {DocumentFragment}\n */\nexport const parseFragment = html => fragment(/** @type {any} */ (_parse(html).childNodes))\n\n/**\n * @param {string} html\n * @return {HTMLElement}\n */\nexport const parseElement = html => /** @type HTMLElement */ (_parse(html).firstElementChild)\n\n/**\n * @param {HTMLElement} oldEl\n * @param {HTMLElement|DocumentFragment} newEl\n */\nexport const replaceWith = (oldEl, newEl) => oldEl.replaceWith(newEl)\n\n/**\n * @param {HTMLElement} parent\n * @param {HTMLElement} el\n * @param {Node|null} ref\n * @return {HTMLElement}\n */\nexport const insertBefore = (parent, el, ref) => parent.insertBefore(el, ref)\n\n/**\n * @param {Node} parent\n * @param {Node} child\n * @return {Node}\n */\nexport const appendChild = (parent, child) => parent.appendChild(child)\n\nexport const ELEMENT_NODE = doc.ELEMENT_NODE\nexport const TEXT_NODE = doc.TEXT_NODE\nexport const CDATA_SECTION_NODE = doc.CDATA_SECTION_NODE\nexport const COMMENT_NODE = doc.COMMENT_NODE\nexport const DOCUMENT_NODE = doc.DOCUMENT_NODE\nexport const DOCUMENT_TYPE_NODE = doc.DOCUMENT_TYPE_NODE\nexport const DOCUMENT_FRAGMENT_NODE = doc.DOCUMENT_FRAGMENT_NODE\n\n/**\n * @type {$.Schema<Node>}\n */\nexport const $node = $.$custom(el => el.nodeType === DOCUMENT_NODE)\n\n/**\n * @param {any} node\n * @param {number} type\n */\nexport const checkNodeType = (node, type) => node.nodeType === type\n\n/**\n * @param {Node} parent\n * @param {HTMLElement} child\n */\nexport const isParentOf = (parent, child) => {\n let p = child.parentNode\n while (p && p !== parent) {\n p = p.parentNode\n }\n return p === parent\n}\n/* c8 ignore stop */\n","/* global requestIdleCallback, requestAnimationFrame, cancelIdleCallback, cancelAnimationFrame */\n\nimport * as time from './time.js'\n\n/**\n * Utility module to work with EcmaScript's event loop.\n *\n * @module eventloop\n */\n\n/**\n * @type {Array<function>}\n */\nlet queue = []\n\nconst _runQueue = () => {\n for (let i = 0; i < queue.length; i++) {\n queue[i]()\n }\n queue = []\n}\n\n/**\n * @param {function():void} f\n */\nexport const enqueue = f => {\n queue.push(f)\n if (queue.length === 1) {\n setTimeout(_runQueue, 0)\n }\n}\n\n/**\n * @typedef {Object} TimeoutObject\n * @property {function} TimeoutObject.destroy\n */\n\n/**\n * @param {function(number):void} clearFunction\n */\nconst createTimeoutClass = clearFunction => class TT {\n /**\n * @param {number} timeoutId\n */\n constructor (timeoutId) {\n this._ = timeoutId\n }\n\n destroy () {\n clearFunction(this._)\n }\n}\n\nconst Timeout = createTimeoutClass(clearTimeout)\n\n/**\n * @param {number} timeout\n * @param {function} callback\n * @return {TimeoutObject}\n */\nexport const timeout = (timeout, callback) => new Timeout(setTimeout(callback, timeout))\n\nconst Interval = createTimeoutClass(clearInterval)\n\n/**\n * @param {number} timeout\n * @param {function} callback\n * @return {TimeoutObject}\n */\nexport const interval = (timeout, callback) => new Interval(setInterval(callback, timeout))\n\n/* c8 ignore next */\nexport const Animation = createTimeoutClass(arg => typeof requestAnimationFrame !== 'undefined' && cancelAnimationFrame(arg))\n\n/**\n * @param {function(number):void} cb\n * @return {TimeoutObject}\n */\n/* c8 ignore next */\nexport const animationFrame = cb => typeof requestAnimationFrame === 'undefined' ? timeout(0, cb) : new Animation(requestAnimationFrame(cb))\n\n/* c8 ignore next */\n// @ts-ignore\nconst Idle = createTimeoutClass(arg => typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(arg))\n\n/**\n * Note: this is experimental and is probably only useful in browsers.\n *\n * @param {function} cb\n * @return {TimeoutObject}\n */\n/* c8 ignore next 2 */\n// @ts-ignore\nexport const idleCallback = cb => typeof requestIdleCallback !== 'undefined' ? new Idle(requestIdleCallback(cb)) : timeout(1000, cb)\n\n/**\n * @param {number} timeout Timeout of the debounce action\n * @param {number} triggerAfter Optional. Trigger callback after a certain amount of time\n * without waiting for debounce.\n */\nexport const createDebouncer = (timeout, triggerAfter = -1) => {\n let timer = -1\n /**\n * @type {number?}\n */\n let lastCall = null\n /**\n * @param {((...args: any)=>void)?} cb function to trigger after debounce. If null, it will reset the\n * debounce.\n */\n return cb => {\n clearTimeout(timer)\n if (cb) {\n if (triggerAfter >= 0) {\n const now = time.getUnixTime()\n if (lastCall === null) lastCall = now\n if (now - lastCall > triggerAfter) {\n lastCall = null\n timer = /** @type {any} */ (setTimeout(cb, 0))\n return\n }\n }\n timer = /** @type {any} */ (setTimeout(() => { lastCall = null; cb() }, timeout))\n } else {\n lastCall = null\n }\n }\n}\n","/**\n * @module sha256\n * Spec: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\n * Resources:\n * - https://web.archive.org/web/20150315061807/http://csrc.nist.gov/groups/STM/cavp/documents/shs/sha256-384-512.pdf\n */\n\nimport * as binary from '../binary.js'\n\n/**\n * @param {number} w - a 32bit uint\n * @param {number} shift\n */\nconst rotr = (w, shift) => (w >>> shift) | (w << (32 - shift))\n\n/**\n * Helper for SHA-224 & SHA-256. See 4.1.2.\n * @param {number} x\n */\nconst sum0to256 = x => rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22)\n\n/**\n * Helper for SHA-224 & SHA-256. See 4.1.2.\n * @param {number} x\n */\nconst sum1to256 = x => rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25)\n\n/**\n * Helper for SHA-224 & SHA-256. See 4.1.2.\n * @param {number} x\n */\nconst sigma0to256 = x => rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3\n\n/**\n * Helper for SHA-224 & SHA-256. See 4.1.2.\n * @param {number} x\n */\nconst sigma1to256 = x => rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10\n\n// @todo don't init these variables globally\n\n/**\n * See 4.2.2: Constant for sha256 & sha224\n * These words represent the first thirty-two bits of the fractional parts of\n * the cube roots of the first sixty-four prime numbers. In hex, these constant words are (from left to\n * right)\n */\nconst K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n])\n\n/**\n * See 5.3.3. Initial hash value.\n *\n * These words were obtained by taking the first thirty-two bits of the fractional parts of the\n * square roots of the first eight prime numbers.\n *\n * @todo shouldn't be a global variable\n */\nconst HINIT = new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n])\n\n// time to beat: (large value < 4.35s)\n\nclass Hasher {\n constructor () {\n const buf = new ArrayBuffer(64 + 64 * 4)\n // Init working variables using a single arraybuffer\n this._H = new Uint32Array(buf, 0, 8)\n this._H.set(HINIT)\n // \"Message schedule\" - a working variable\n this._W = new Uint32Array(buf, 64, 64)\n }\n\n _updateHash () {\n const H = this._H\n const W = this._W\n for (let t = 16; t < 64; t++) {\n W[t] = sigma1to256(W[t - 2]) + W[t - 7] + sigma0to256(W[t - 15]) + W[t - 16]\n }\n let a = H[0]\n let b = H[1]\n let c = H[2]\n let d = H[3]\n let e = H[4]\n let f = H[5]\n let g = H[6]\n let h = H[7]\n for (let tt = 0, T1, T2; tt < 64; tt++) {\n T1 = (h + sum1to256(e) + ((e & f) ^ (~e & g)) + K[tt] + W[tt]) >>> 0\n T2 = (sum0to256(a) + ((a & b) ^ (a & c) ^ (b & c))) >>> 0\n h = g\n g = f\n f = e\n e = (d + T1) >>> 0\n d = c\n c = b\n b = a\n a = (T1 + T2) >>> 0\n }\n H[0] += a\n H[1] += b\n H[2] += c\n H[3] += d\n H[4] += e\n H[5] += f\n H[6] += g\n H[7] += h\n }\n\n /**\n * Returns a 32-byte hash.\n *\n * @param {Uint8Array} data\n */\n digest (data) {\n let i = 0\n for (; i + 56 <= data.length;) {\n // write data in big endianess\n let j = 0\n for (; j < 16 && i + 3 < data.length; j++) {\n this._W[j] = data[i++] << 24 | data[i++] << 16 | data[i++] << 8 | data[i++]\n }\n if (i % 64 !== 0) { // there is still room to write partial content and the ending bit.\n this._W.fill(0, j, 16)\n while (i < data.length) {\n this._W[j] |= data[i] << ((3 - (i % 4)) * 8)\n i++\n }\n this._W[j] |= binary.BIT8 << ((3 - (i % 4)) * 8)\n }\n this._updateHash()\n }\n // same check as earlier - the ending bit has been written\n const isPaddedWith1 = i % 64 !== 0\n this._W.fill(0, 0, 16)\n let j = 0\n for (; i < data.length; j++) {\n for (let ci = 3; ci >= 0 && i < data.length; ci--) {\n this._W[j] |= data[i++] << (ci * 8)\n }\n }\n // Write padding of the message. See 5.1.2.\n if (!isPaddedWith1) {\n this._W[j - (i % 4 === 0 ? 0 : 1)] |= binary.BIT8 << ((3 - (i % 4)) * 8)\n }\n // write length of message (size in bits) as 64 bit uint\n // @todo test that this works correctly\n this._W[14] = data.byteLength / binary.BIT30 // same as data.byteLength >>> 30 - but works on floats\n this._W[15] = data.byteLength * 8\n this._updateHash()\n // correct H endianness to use big endiannes and return a Uint8Array\n const dv = new Uint8Array(32)\n for (let i = 0; i < this._H.length; i++) {\n for (let ci = 0; ci < 4; ci++) {\n dv[i * 4 + ci] = this._H[i] >>> (3 - ci) * 8\n }\n }\n return dv\n }\n}\n\n/**\n * Returns a 32-byte hash.\n *\n * @param {Uint8Array} data\n */\nexport const digest = data => new Hasher().digest(data)\n","import * as Y from 'yjs';\nimport { Item, ContentType, Text, XmlElement, UndoManager } from 'yjs';\nimport { DecorationSet, Decoration } from 'prosemirror-view';\nimport { PluginKey, Plugin, TextSelection, AllSelection, NodeSelection, Selection } from 'prosemirror-state';\nimport 'y-protocols/awareness';\nimport { createMutex } from 'lib0/mutex';\nimport * as PModel from 'prosemirror-model';\nimport { Fragment, Node } from 'prosemirror-model';\nimport * as math from 'lib0/math';\nimport * as object from 'lib0/object';\nimport * as set from 'lib0/set';\nimport { simpleDiff } from 'lib0/diff';\nimport * as error from 'lib0/error';\nimport * as random from 'lib0/random';\nimport * as environment from 'lib0/environment';\nimport * as dom from 'lib0/dom';\nimport * as eventloop from 'lib0/eventloop';\nimport * as map from 'lib0/map';\nimport * as sha256 from 'lib0/hash/sha256';\nimport * as buf from 'lib0/buffer';\nimport { ReplaceStep } from 'prosemirror-transform';\n\n/**\n * The unique prosemirror plugin key for syncPlugin\n *\n * @public\n */\nconst ySyncPluginKey = new PluginKey('y-sync');\n\n/**\n * The unique prosemirror plugin key for undoPlugin\n *\n * @public\n */\nconst yUndoPluginKey = new PluginKey('y-undo');\n\n/**\n * The unique prosemirror plugin key for cursorPlugin\n *\n * @public\n */\nconst yCursorPluginKey = new PluginKey('yjs-cursor');\n\n/**\n * Custom function to transform sha256 hash to N byte\n *\n * @param {Uint8Array} digest\n */\nconst _convolute = digest => {\n const N = 6;\n for (let i = N; i < digest.length; i++) {\n digest[i % N] = digest[i % N] ^ digest[i];\n }\n return digest.slice(0, N)\n};\n\n/**\n * @param {any} json\n */\nconst hashOfJSON = (json) => buf.toBase64(_convolute(sha256.digest(buf.encodeAny(json))));\n\n/**\n * @module bindings/prosemirror\n */\n\n/**\n * @typedef {Object} BindingMetadata\n * @property {ProsemirrorMapping} BindingMetadata.mapping\n * @property {Map<import('prosemirror-model').MarkType, boolean>} BindingMetadata.isOMark - is overlapping mark\n */\n\n/**\n * @return BindingMetadata\n */\nconst createEmptyMeta = () => ({\n mapping: new Map(),\n isOMark: new Map()\n});\n\n/**\n * @param {Y.Item} item\n * @param {Y.Snapshot} [snapshot]\n */\nconst isVisible = (item, snapshot) =>\n snapshot === undefined\n ? !item.deleted\n : (snapshot.sv.has(item.id.client) && /** @type {number} */\n (snapshot.sv.get(item.id.client)) > item.id.clock &&\n !Y.isDeleted(snapshot.ds, item.id));\n\n/**\n * Either a node if type is YXmlElement or an Array of text nodes if YXmlText\n * @typedef {Map<Y.AbstractType<any>, PModel.Node | Array<PModel.Node>>} ProsemirrorMapping\n */\n\n/**\n * @typedef {Object} ColorDef\n * @property {string} ColorDef.light\n * @property {string} ColorDef.dark\n */\n\n/**\n * @typedef {Object} YSyncOpts\n * @property {Array<ColorDef>} [YSyncOpts.colors]\n * @property {Map<string,ColorDef>} [YSyncOpts.colorMapping]\n * @property {Y.PermanentUserData|null} [YSyncOpts.permanentUserData]\n * @property {ProsemirrorMapping} [YSyncOpts.mapping]\n * @property {function} [YSyncOpts.onFirstRender] Fired when the content from Yjs is initially rendered to ProseMirror\n */\n\n/**\n * @type {Array<ColorDef>}\n */\nconst defaultColors = [{ light: '#ecd44433', dark: '#ecd444' }];\n\n/**\n * @param {Map<string,ColorDef>} colorMapping\n * @param {Array<ColorDef>} colors\n * @param {string} user\n * @return {ColorDef}\n */\nconst getUserColor = (colorMapping, colors, user) => {\n // @todo do not hit the same color twice if possible\n if (!colorMapping.has(user)) {\n if (colorMapping.size < colors.length) {\n const usedColors = set.create();\n colorMapping.forEach((color) => usedColors.add(color));\n colors = colors.filter((color) => !usedColors.has(color));\n }\n colorMapping.set(user, random.oneOf(colors));\n }\n return /** @type {ColorDef} */ (colorMapping.get(user))\n};\n\n/**\n * This plugin listens to changes in prosemirror view and keeps yXmlState and view in sync.\n *\n * This plugin also keeps references to the type and the shared document so other plugins can access it.\n * @param {Y.XmlFragment} yXmlFragment\n * @param {YSyncOpts} opts\n * @return {any} Returns a prosemirror plugin that binds to this type\n */\nconst ySyncPlugin = (yXmlFragment, {\n colors = defaultColors,\n colorMapping = new Map(),\n permanentUserData = null,\n onFirstRender = () => {},\n mapping\n} = {}) => {\n let initialContentChanged = false;\n const binding = new ProsemirrorBinding(yXmlFragment, mapping);\n const plugin = new Plugin({\n props: {\n editable: (state) => {\n const syncState = ySyncPluginKey.getState(state);\n return syncState.snapshot == null && syncState.prevSnapshot == null\n }\n },\n key: ySyncPluginKey,\n state: {\n /**\n * @returns {any}\n */\n init: (_initargs, _state) => {\n return {\n type: yXmlFragment,\n doc: yXmlFragment.doc,\n binding,\n snapshot: null,\n prevSnapshot: null,\n isChangeOrigin: false,\n isUndoRedoOperation: false,\n addToHistory: true,\n colors,\n colorMapping,\n permanentUserData\n }\n },\n apply: (tr, pluginState) => {\n const change = tr.getMeta(ySyncPluginKey);\n if (change !== undefined) {\n pluginState = Object.assign({}, pluginState);\n for (const key in change) {\n pluginState[key] = change[key];\n }\n }\n pluginState.addToHistory = tr.getMeta('addToHistory') !== false;\n // always set isChangeOrigin. If undefined, this is not change origin.\n pluginState.isChangeOrigin = change !== undefined &&\n !!change.isChangeOrigin;\n pluginState.isUndoRedoOperation = change !== undefined && !!change.isChangeOrigin && !!change.isUndoRedoOperation;\n if (binding.prosemirrorView !== null) {\n if (\n change !== undefined &&\n (change.snapshot != null || change.prevSnapshot != null)\n ) {\n // snapshot changed, rerender next\n eventloop.timeout(0, () => {\n if (binding.prosemirrorView == null) {\n return\n }\n if (change.restore == null) {\n binding._renderSnapshot(\n change.snapshot,\n change.prevSnapshot,\n pluginState\n );\n } else {\n binding._renderSnapshot(\n change.snapshot,\n change.snapshot,\n pluginState\n );\n // reset to current prosemirror state\n delete pluginState.restore;\n delete pluginState.snapshot;\n delete pluginState.prevSnapshot;\n binding.mux(() => {\n binding._prosemirrorChanged(\n binding.prosemirrorView.state.doc\n );\n });\n }\n });\n }\n }\n return pluginState\n }\n },\n view: (view) => {\n binding.initView(view);\n if (mapping == null) {\n // force rerender to update the bindings mapping\n binding._forceRerender();\n }\n onFirstRender();\n return {\n update: () => {\n const pluginState = plugin.getState(view.state);\n if (\n pluginState.snapshot == null && pluginState.prevSnapshot == null\n ) {\n if (\n // If the content doesn't change initially, we don't render anything to Yjs\n // If the content was cleared by a user action, we want to catch the change and\n // represent it in Yjs\n initialContentChanged ||\n view.state.doc.content.findDiffStart(\n view.state.doc.type.createAndFill().content\n ) !== null\n ) {\n initialContentChanged = true;\n if (\n pluginState.addToHistory === false &&\n !pluginState.isChangeOrigin\n ) {\n const yUndoPluginState = yUndoPluginKey.getState(view.state);\n /**\n * @type {Y.UndoManager}\n */\n const um = yUndoPluginState && yUndoPluginState.undoManager;\n if (um) {\n um.stopCapturing();\n }\n }\n binding.mux(() => {\n /** @type {Y.Doc} */ (pluginState.doc).transact((tr) => {\n tr.meta.set('addToHistory', pluginState.addToHistory);\n binding._prosemirrorChanged(view.state.doc);\n }, ySyncPluginKey);\n });\n }\n }\n },\n destroy: () => {\n binding.destroy();\n }\n }\n }\n });\n return plugin\n};\n\n/**\n * Resolves one text-selection endpoint after a remote update. Falls back to\n * content-based matching when the Yjs resolution is missing or lands in the\n * wrong block, and keeps the Yjs resolution when the fallback finds nothing.\n *\n * @param {import('prosemirror-model').Node} newDoc\n * @param {import('prosemirror-model').Node} oldDoc\n * @param {number|null|undefined} oldAbs\n * @param {number|null} resolved\n * @return {number|null}\n */\nconst recoverSelectionEndpoint = (newDoc, oldDoc, oldAbs, resolved) => {\n if (oldAbs == null) {\n return resolved\n }\n const misresolved = resolved === null ||\n (oldAbs > 1 && resolved <= 1) ||\n isMisresolvedAfterStructuralChange(oldDoc, newDoc, oldAbs, resolved);\n if (!misresolved) {\n return resolved\n }\n const recovered = findAbsolutePositionAfterStructuralChange(oldDoc, newDoc, oldAbs);\n return recovered !== null ? recovered : resolved\n};\n\n/**\n * @param {import('prosemirror-state').Transaction} tr\n * @param {ReturnType<typeof getRelativeSelection>} relSel\n * @param {ProsemirrorBinding} binding\n * @param {import('prosemirror-model').Node} [oldDoc]\n */\nconst restoreRelativeSelection = (tr, relSel, binding, oldDoc) => {\n if (relSel !== null && relSel.anchor !== null && relSel.head !== null) {\n if (relSel.type === 'all') {\n tr.setSelection(new AllSelection(tr.doc));\n } else if (relSel.type === 'node') {\n const anchor = relativePositionToAbsolutePosition(\n binding.doc,\n binding.type,\n relSel.anchor,\n binding.mapping\n );\n // anchor is null when the referenced node was deleted or moved out of\n // binding.type by a remote update; resolving null would throw.\n if (anchor !== null) {\n tr.setSelection(createSafeNodeSelection(tr, anchor));\n }\n } else if (relSel.type === 'nodeRange') {\n const anchor = relativePositionToAbsolutePosition(\n binding.doc,\n binding.type,\n relSel.anchor,\n binding.mapping\n );\n const head = relativePositionToAbsolutePosition(\n binding.doc,\n binding.type,\n relSel.head,\n binding.mapping\n );\n const selection = createSafeNodeRangeSelection(tr, anchor, head, relSel.depth);\n if (selection !== null) {\n tr.setSelection(selection);\n }\n } else {\n let anchor = relativePositionToAbsolutePosition(\n binding.doc,\n binding.type,\n relSel.anchor,\n binding.mapping\n );\n let head = relativePositionToAbsolutePosition(\n binding.doc,\n binding.type,\n relSel.head,\n binding.mapping\n );\n if (oldDoc != null) {\n anchor = recoverSelectionEndpoint(tr.doc, oldDoc, relSel.absAnchor, anchor);\n head = recoverSelectionEndpoint(tr.doc, oldDoc, relSel.absHead, head);\n }\n // Collapse to the surviving endpoint instead of dropping the selection;\n // an unset selection maps through the full-doc replace to the doc start.\n if (anchor === null) {\n anchor = head;\n }\n if (head === null) {\n head = anchor;\n }\n if (anchor !== null && head !== null) {\n tr.setSelection(TextSelection.between(tr.doc.resolve(anchor), tr.doc.resolve(head)));\n }\n }\n }\n};\n\n/**\n * @param {import('prosemirror-state').Transaction} tr\n * @param {number} pos\n * @returns {import('prosemirror-state').Selection}\n *\n * Creates a NodeSelection if the position points to a valid node, otherwise\n * creates a TextSelection near the position.\n */\nconst createSafeNodeSelection = (tr, pos) => {\n const $pos = tr.doc.resolve(pos);\n if ($pos.nodeAfter) {\n return NodeSelection.create(tr.doc, pos)\n } else {\n return TextSelection.near($pos)\n }\n};\n\n/**\n * Safely reconstructs a NodeRangeSelection from resolved absolute positions.\n *\n * @param {import('prosemirror-state').Transaction} tr - The transaction whose document provides resolved positions.\n * @param {number|null} anchor - Absolute document position marking the start (boundary) of the node range.\n * Use `relativePositionToAbsolutePosition` before calling this function.\n * @param {number|null} head - Absolute document position marking the end (boundary) of the node range.\n * Use `relativePositionToAbsolutePosition` before calling this function.\n * @param {number|undefined} depth - The nesting depth at which the range operates (e.g. 0 for\n * top-level blocks, 1 for blocks nested inside a wrapper). Passed through to\n * `Selection.fromJSON`; ignored by `@tiptap/extension-node-range` < v2.29 but\n * properly stored starting from that version.\n * @returns {import('prosemirror-state').Selection|null} Reconstructed selection, or null if\n * anchor/head could not be resolved.\n */\nconst createSafeNodeRangeSelection = (tr, anchor, head, depth) => {\n if (anchor === null || head === null) {\n return null\n }\n const clampedAnchor = Math.min(Math.max(anchor, 0), tr.doc.content.size);\n const clampedHead = Math.min(Math.max(head, 0), tr.doc.content.size);\n try {\n const selection = Selection.fromJSON(tr.doc, {\n type: 'nodeRange',\n anchor: clampedAnchor,\n head: clampedHead,\n depth\n });\n if (!selection.ranges.length) {\n return TextSelection.near(tr.doc.resolve(clampedAnchor))\n }\n return selection\n } catch (e) {\n return TextSelection.near(tr.doc.resolve(clampedAnchor))\n }\n};\n\n/**\n * @param {ProsemirrorBinding} pmbinding\n * @param {import('prosemirror-state').EditorState} state\n */\nconst getRelativeSelection = (pmbinding, state) => {\n const type = /** @type {any} */ (state.selection).jsonID;\n return {\n type,\n // `depth` is only meaningful for NodeRangeSelection; undefined for every other type.\n depth: type === 'nodeRange' ? /** @type {any} */ (state.selection).depth : undefined,\n anchor: absolutePositionToRelativePosition(\n state.selection.anchor,\n pmbinding.type,\n pmbinding.mapping\n ),\n head: absolutePositionToRelativePosition(\n state.selection.head,\n pmbinding.type,\n pmbinding.mapping\n ),\n absAnchor: state.selection.anchor,\n absHead: state.selection.head\n }\n};\n\n/**\n * Binding for prosemirror.\n *\n * @protected\n */\nclass ProsemirrorBinding {\n /**\n * @param {Y.XmlFragment} yXmlFragment The bind source\n * @param {ProsemirrorMapping} mapping\n */\n constructor (yXmlFragment, mapping = new Map()) {\n this.type = yXmlFragment;\n /**\n * this will be set once the view is created\n * @type {any}\n */\n this.prosemirrorView = null;\n this.mux = createMutex();\n this.mapping = mapping;\n /**\n * Is overlapping mark - i.e. mark does not exclude itself.\n *\n * @type {Map<import('prosemirror-model').MarkType, boolean>}\n */\n this.isOMark = new Map();\n this._observeFunction = this._typeChanged.bind(this);\n /**\n * @type {Y.Doc}\n */\n // @ts-ignore\n this.doc = yXmlFragment.doc;\n /**\n * current selection as relative positions in the Yjs model\n */\n this.beforeTransactionSelection = null;\n this.beforeAllTransactions = () => {\n if (this.beforeTransactionSelection === null && this.prosemirrorView != null) {\n this.beforeTransactionSelection = getRelativeSelection(\n this,\n this.prosemirrorView.state\n );\n }\n };\n this.afterAllTransactions = () => {\n this.beforeTransactionSelection = null;\n };\n this._domSelectionInView = null;\n }\n\n /**\n * Create a transaction for changing the prosemirror state.\n *\n * @returns\n */\n get _tr () {\n return this.prosemirrorView.state.tr.setMeta('addToHistory', false)\n }\n\n _isLocalCursorInView () {\n if (!this.prosemirrorView.hasFocus()) return false\n if (environment.isBrowser && this._domSelectionInView === null) {\n // Calculate the domSelectionInView and clear by next tick after all events are finished\n eventloop.timeout(0, () => {\n this._domSelectionInView = null;\n });\n this._domSelectionInView = this._isDomSelectionInView();\n }\n return this._domSelectionInView\n }\n\n _isDomSelectionInView () {\n const selection = this.prosemirrorView._root.getSelection();\n\n if (selection == null || selection.anchorNode == null) return false\n\n const range = this.prosemirrorView._root.createRange();\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n\n // This is a workaround for an edgecase where getBoundingClientRect will\n // return zero values if the selection is collapsed at the start of a newline\n // see reference here: https://stackoverflow.com/a/59780954\n const rects = range.getClientRects();\n if (rects.length === 0) {\n // probably buggy newline behavior, explicitly select the node contents\n if (range.startContainer && range.collapsed) {\n range.selectNodeContents(range.startContainer);\n }\n }\n\n const bounding = range.getBoundingClientRect();\n const documentElement = dom.doc.documentElement;\n\n return bounding.bottom >= 0 && bounding.right >= 0 &&\n bounding.left <=\n (window.innerWidth || documentElement.clientWidth || 0) &&\n bounding.top <= (window.innerHeight || documentElement.clientHeight || 0)\n }\n\n /**\n * @param {Y.Snapshot} snapshot\n * @param {Y.Snapshot} prevSnapshot\n */\n renderSnapshot (snapshot, prevSnapshot) {\n if (!prevSnapshot) {\n prevSnapshot = Y.createSnapshot(Y.createDeleteSet(), new Map());\n }\n this.prosemirrorView.dispatch(\n this._tr.setMeta(ySyncPluginKey, { snapshot, prevSnapshot })\n );\n }\n\n unrenderSnapshot () {\n this.mapping.clear();\n this.mux(() => {\n const fragmentContent = this.type.toArray().map((t) =>\n createNodeFromYElement(\n /** @type {Y.XmlElement} */ (t),\n this.prosemirrorView.state.schema,\n this\n )\n ).filter((n) => n !== null);\n // @ts-ignore\n const tr = this._tr.replace(\n 0,\n this.prosemirrorView.state.doc.content.size,\n new PModel.Slice(PModel.Fragment.from(fragmentContent), 0, 0)\n );\n tr.setMeta(ySyncPluginKey, { snapshot: null, prevSnapshot: null });\n this.prosemirrorView.dispatch(tr);\n });\n }\n\n _forceRerender () {\n this.mapping.clear();\n this.mux(() => {\n // If this is a forced rerender, this might neither happen as a pm change nor within a Yjs\n // transaction. Then the \"before selection\" doesn't exist. In this case, we need to create a\n // relative position before replacing content. Fixes #126\n const sel = this.beforeTransactionSelection !== null ? null : this.prosemirrorView.state.selection;\n const fragmentContent = this.type.toArray().map((t) =>\n createNodeFromYElement(\n /** @type {Y.XmlElement} */ (t),\n this.prosemirrorView.state.schema,\n this\n )\n ).filter((n) => n !== null);\n // @ts-ignore\n const tr = this._tr.replace(\n 0,\n this.prosemirrorView.state.doc.content.size,\n new PModel.Slice(PModel.Fragment.from(fragmentContent), 0, 0)\n );\n if (sel) {\n /**\n * If the Prosemirror document we just created from this.type is\n * smaller than the previous document, the selection might be\n * out of bound, which would make Prosemirror throw an error.\n */\n const clampedAnchor = math.min(math.max(sel.anchor, 0), tr.doc.content.size);\n const clampedHead = math.min(math.max(sel.head, 0), tr.doc.content.size);\n\n tr.setSelection(TextSelection.create(tr.doc, clampedAnchor, clampedHead));\n }\n this.prosemirrorView.dispatch(\n tr.setMeta(ySyncPluginKey, { isChangeOrigin: true, binding: this })\n );\n });\n }\n\n /**\n * @param {Y.Snapshot|Uint8Array} snapshot\n * @param {Y.Snapshot|Uint8Array} prevSnapshot\n * @param {Object} pluginState\n */\n _renderSnapshot (snapshot, prevSnapshot, pluginState) {\n /**\n * The document that contains the full history of this document.\n * @type {Y.Doc}\n */\n let historyDoc = this.doc;\n let historyType = this.type;\n if (!snapshot) {\n snapshot = Y.snapshot(this.doc);\n }\n if (snapshot instanceof Uint8Array || prevSnapshot instanceof Uint8Array) {\n if (!(snapshot instanceof Uint8Array) || !(prevSnapshot instanceof Uint8Array)) {\n // expected both snapshots to be v2 updates\n error.unexpectedCase();\n }\n historyDoc = new Y.Doc({ gc: false });\n Y.applyUpdateV2(historyDoc, prevSnapshot);\n prevSnapshot = Y.snapshot(historyDoc);\n Y.applyUpdateV2(historyDoc, snapshot);\n snapshot = Y.snapshot(historyDoc);\n if (historyType._item === null) {\n /**\n * If is a root type, we need to find the root key in the initial document\n * and use it to get the history type.\n */\n const rootKey = Array.from(this.doc.share.keys()).find(\n (key) => this.doc.share.get(key) === this.type\n );\n historyType = historyDoc.getXmlFragment(rootKey);\n } else {\n /**\n * If it is a sub type, we use the item id to find the history type.\n */\n const historyStructs =\n historyDoc.store.clients.get(historyType._item.id.client) ?? [];\n const itemIndex = Y.findIndexSS(\n historyStructs,\n historyType._item.id.clock\n );\n const item = /** @type {Y.Item} */ (historyStructs[itemIndex]);\n const content = /** @type {Y.ContentType} */ (item.content);\n historyType = /** @type {Y.XmlFragment} */ (content.type);\n }\n }\n // clear mapping because we are going to rerender\n this.mapping.clear();\n this.mux(() => {\n historyDoc.transact((transaction) => {\n // before rendering, we are going to sanitize ops and split deleted ops\n // if they were deleted by seperate users.\n /**\n * @type {Y.PermanentUserData}\n */\n const pud = pluginState.permanentUserData;\n if (pud) {\n pud.dss.forEach((ds) => {\n Y.iterateDeletedStructs(transaction, ds, (_item) => {});\n });\n }\n /**\n * @param {'removed'|'added'} type\n * @param {Y.ID} id\n */\n const computeYChange = (type, id) => {\n const user = type === 'added'\n ? pud.getUserByClientId(id.client)\n : pud.getUserByDeletedId(id);\n return {\n user,\n type,\n color: getUserColor(\n pluginState.colorMapping,\n pluginState.colors,\n user\n )\n }\n };\n // Create document fragment and render\n const fragmentContent = Y.typeListToArraySnapshot(\n historyType,\n new Y.Snapshot(prevSnapshot.ds, snapshot.sv)\n ).map((t) => {\n if (\n !t._item.deleted || isVisible(t._item, snapshot) ||\n isVisible(t._item, prevSnapshot)\n ) {\n return createNodeFromYElement(\n t,\n this.prosemirrorView.state.schema,\n { mapping: new Map(), isOMark: new Map() },\n snapshot,\n prevSnapshot,\n computeYChange\n )\n } else {\n // No need to render elements that are not visible by either snapshot.\n // If a client adds and deletes content in the same snapshot the element is not visible by either snapshot.\n return null\n }\n }).filter((n) => n !== null);\n // @ts-ignore\n const tr = this._tr.replace(\n 0,\n this.prosemirrorView.state.doc.content.size,\n new PModel.Slice(PModel.Fragment.from(fragmentContent), 0, 0)\n );\n this.prosemirrorView.dispatch(\n tr.setMeta(ySyncPluginKey, { isChangeOrigin: true })\n );\n }, ySyncPluginKey);\n });\n }\n\n /**\n * @param {Array<Y.YEvent<any>>} events\n * @param {Y.Transaction} transaction\n */\n _typeChanged (events, transaction) {\n if (this.prosemirrorView == null) return\n const syncState = ySyncPluginKey.getState(this.prosemirrorView.state);\n if (\n events.length === 0 || syncState.snapshot != null ||\n syncState.prevSnapshot != null\n ) {\n // drop out if snapshot is active\n this.renderSnapshot(syncState.snapshot, syncState.prevSnapshot);\n return\n }\n this.mux(() => {\n /**\n * @param {any} _\n * @param {Y.AbstractType<any>} type\n */\n const delType = (_, type) => this.mapping.delete(type);\n Y.iterateDeletedStructs(\n transaction,\n transaction.deleteSet,\n (struct) => {\n if (struct.constructor === Y.Item) {\n const type = /** @type {Y.ContentType} */ (/** @type {Y.Item} */ (struct).content).type;\n type && this.mapping.delete(type);\n }\n }\n );\n transaction.changed.forEach(delType);\n transaction.changedParentTypes.forEach(delType);\n // Rebuild the full Y↔PM mapping so relative cursor positions resolve against\n // current node sizes after structural changes (e.g. drag-and-drop block moves).\n this.mapping.clear();\n const fragmentContent = this.type.toArray().map((t) =>\n createNodeIfNotExists(\n /** @type {Y.XmlElement | Y.XmlHook} */ (t),\n this.prosemirrorView.state.schema,\n this\n )\n ).filter((n) => n !== null);\n const oldDoc = this.prosemirrorView.state.doc;\n // @ts-ignore\n let tr = this._tr.replace(\n 0,\n this.prosemirrorView.state.doc.content.size,\n new PModel.Slice(PModel.Fragment.from(fragmentContent), 0, 0)\n );\n restoreRelativeSelection(tr, this.beforeTransactionSelection, this, oldDoc);\n tr = tr.setMeta(ySyncPluginKey, { isChangeOrigin: true, isUndoRedoOperation: transaction.origin instanceof Y.UndoManager });\n if (\n this.beforeTransactionSelection !== null && this._isLocalCursorInView()\n ) {\n tr.scrollIntoView();\n }\n this.prosemirrorView.dispatch(tr);\n });\n }\n\n /**\n * @param {import('prosemirror-model').Node} doc\n */\n _prosemirrorChanged (doc) {\n this.doc.transact(() => {\n updateYFragment(this.doc, this.type, doc, this);\n this.beforeTransactionSelection = getRelativeSelection(\n this,\n this.prosemirrorView.state\n );\n }, ySyncPluginKey);\n }\n\n /**\n * View is ready to listen to changes. Register observers.\n * @param {any} prosemirrorView\n */\n initView (prosemirrorView) {\n if (this.prosemirrorView != null) this.destroy();\n this.prosemirrorView = prosemirrorView;\n this.doc.on('beforeAllTransactions', this.beforeAllTransactions);\n this.doc.on('afterAllTransactions', this.afterAllTransactions);\n this.type.observeDeep(this._observeFunction);\n }\n\n destroy () {\n if (this.prosemirrorView == null) return\n this.prosemirrorView = null;\n this.type.unobserveDeep(this._observeFunction);\n this.doc.off('beforeAllTransactions', this.beforeAllTransactions);\n this.doc.off('afterAllTransactions', this.afterAllTransactions);\n }\n}\n\n/**\n * @private\n * @param {Y.XmlElement | Y.XmlHook} el\n * @param {PModel.Schema} schema\n * @param {BindingMetadata} meta\n * @param {Y.Snapshot} [snapshot]\n * @param {Y.Snapshot} [prevSnapshot]\n * @param {function('removed' | 'added', Y.ID):any} [computeYChange]\n * @return {PModel.Node | null}\n */\nconst createNodeIfNotExists = (\n el,\n schema,\n meta,\n snapshot,\n prevSnapshot,\n computeYChange\n) => {\n const node = /** @type {PModel.Node} */ (meta.mapping.get(el));\n if (node === undefined) {\n if (el instanceof Y.XmlElement) {\n return createNodeFromYElement(\n el,\n schema,\n meta,\n snapshot,\n prevSnapshot,\n computeYChange\n )\n } else {\n throw error.methodUnimplemented() // we are currently not handling hooks\n }\n }\n return node\n};\n\n/**\n * @private\n * @param {Y.XmlElement} el\n * @param {any} schema\n * @param {BindingMetadata} meta\n * @param {Y.Snapshot} [snapshot]\n * @param {Y.Snapshot} [prevSnapshot]\n * @param {function('removed' | 'added', Y.ID):any} [computeYChange]\n * @return {PModel.Node | null} Returns node if node could be created. Otherwise it deletes the yjs type and returns null\n */\nconst createNodeFromYElement = (\n el,\n schema,\n meta,\n snapshot,\n prevSnapshot,\n computeYChange\n) => {\n const children = [];\n /**\n * @param {Y.XmlElement | Y.XmlText} type\n */\n const createChildren = (type) => {\n if (type instanceof Y.XmlElement) {\n const n = createNodeIfNotExists(\n type,\n schema,\n meta,\n snapshot,\n prevSnapshot,\n computeYChange\n );\n if (n !== null) {\n children.push(n);\n }\n } else {\n // If the next ytext exists and was created by us, move the content to the current ytext.\n // This is a fix for #160 -- duplication of characters when two Y.Text exist next to each\n // other.\n const nextytext = /** @type {Y.ContentType} */ (type._item.right?.content)?.type;\n if (nextytext instanceof Y.Text && !nextytext._item.deleted && nextytext._item.id.client === nextytext.doc.clientID) {\n type.applyDelta([\n { retain: type.length },\n ...nextytext.toDelta()\n ]);\n nextytext.doc.transact(tr => {\n nextytext._item.delete(tr);\n });\n }\n // now create the prosemirror text nodes\n const ns = createTextNodesFromYText(\n type,\n schema,\n meta,\n snapshot,\n prevSnapshot,\n computeYChange\n );\n if (ns !== null) {\n ns.forEach((textchild) => {\n if (textchild !== null) {\n children.push(textchild);\n }\n });\n }\n }\n };\n if (snapshot === undefined || prevSnapshot === undefined) {\n el.toArray().forEach(createChildren);\n } else {\n Y.typeListToArraySnapshot(el, new Y.Snapshot(prevSnapshot.ds, snapshot.sv))\n .forEach(createChildren);\n }\n try {\n const attrs = el.getAttributes(snapshot);\n if (snapshot !== undefined) {\n if (!isVisible(/** @type {Y.Item} */ (el._item), snapshot)) {\n attrs.ychange = computeYChange\n ? computeYChange('removed', /** @type {Y.Item} */ (el._item).id)\n : { type: 'removed' };\n } else if (!isVisible(/** @type {Y.Item} */ (el._item), prevSnapshot)) {\n attrs.ychange = computeYChange\n ? computeYChange('added', /** @type {Y.Item} */ (el._item).id)\n : { type: 'added' };\n }\n }\n const node = schema.node(el.nodeName, attrs, children);\n meta.mapping.set(el, node);\n return node\n } catch (e) {\n // an error occured while creating the node. This is probably a result of a concurrent action.\n /** @type {Y.Doc} */ (el.doc).transact((transaction) => {\n /** @type {Y.Item} */ (el._item).delete(transaction);\n }, ySyncPluginKey);\n meta.mapping.delete(el);\n return null\n }\n};\n\n/**\n * @private\n * @param {Y.XmlText} text\n * @param {import('prosemirror-model').Schema} schema\n * @param {BindingMetadata} _meta\n * @param {Y.Snapshot} [snapshot]\n * @param {Y.Snapshot} [prevSnapshot]\n * @param {function('removed' | 'added', Y.ID):any} [computeYChange]\n * @return {Array<PModel.Node>|null}\n */\nconst createTextNodesFromYText = (\n text,\n schema,\n _meta,\n snapshot,\n prevSnapshot,\n computeYChange\n) => {\n const nodes = [];\n const deltas = text.toDelta(snapshot, prevSnapshot, computeYChange);\n try {\n for (let i = 0; i < deltas.length; i++) {\n const delta = deltas[i];\n nodes.push(schema.text(delta.insert, attributesToMarks(delta.attributes, schema)));\n }\n } catch (e) {\n // an error occured while creating the node. This is probably a result of a concurrent action.\n /** @type {Y.Doc} */ (text.doc).transact((transaction) => {\n /** @type {Y.Item} */ (text._item).delete(transaction);\n }, ySyncPluginKey);\n return null\n }\n // @ts-ignore\n return nodes\n};\n\n/**\n * @private\n * @param {Array<any>} nodes prosemirror node\n * @param {BindingMetadata} meta\n * @return {Y.XmlText}\n */\nconst createTypeFromTextNodes = (nodes, meta) => {\n const type = new Y.XmlText();\n const delta = nodes.map((node) => ({\n // @ts-ignore\n insert: node.text,\n attributes: marksToAttributes(node.marks, meta)\n }));\n type.applyDelta(delta);\n meta.mapping.set(type, nodes);\n return type\n};\n\n/**\n * @private\n * @param {any} node prosemirror node\n * @param {BindingMetadata} meta\n * @return {Y.XmlElement}\n */\nconst createTypeFromElementNode = (node, meta) => {\n const type = new Y.XmlElement(node.type.name);\n for (const key in node.attrs) {\n const val = node.attrs[key];\n if (val !== null && key !== 'ychange') {\n type.setAttribute(key, val);\n }\n }\n type.insert(\n 0,\n normalizePNodeContent(node).map((n) =>\n createTypeFromTextOrElementNode(n, meta)\n )\n );\n meta.mapping.set(type, node);\n return type\n};\n\n/**\n * @private\n * @param {PModel.Node|Array<PModel.Node>} node prosemirror text node\n * @param {BindingMetadata} meta\n * @return {Y.XmlElement|Y.XmlText}\n */\nconst createTypeFromTextOrElementNode = (node, meta) =>\n node instanceof Array\n ? createTypeFromTextNodes(node, meta)\n : createTypeFromElementNode(node, meta);\n\n/**\n * @param {any} val\n */\nconst isObject = (val) => typeof val === 'object' && val !== null;\n\n/**\n * @param {any} pattrs\n * @param {any} yattrs\n */\nconst equalAttrs = (pattrs, yattrs) => {\n const keys = Object.keys(pattrs).filter((key) => pattrs[key] !== null);\n let eq =\n keys.length ===\n Object.keys(yattrs).filter((key) => yattrs[key] !== null).length;\n for (let i = 0; i < keys.length && eq; i++) {\n const key = keys[i];\n const l = pattrs[key];\n const r = yattrs[key];\n eq = key === 'ychange' || l === r ||\n (isObject(l) && isObject(r) && equalAttrs(l, r));\n }\n return eq\n};\n\n/**\n * @typedef {Array<Array<PModel.Node>|PModel.Node>} NormalizedPNodeContent\n */\n\n/**\n * @param {any} pnode\n * @return {NormalizedPNodeContent}\n */\nconst normalizePNodeContent = (pnode) => {\n const c = pnode.content.content;\n const res = [];\n for (let i = 0; i < c.length; i++) {\n const n = c[i];\n if (n.isText) {\n const textNodes = [];\n for (let tnode = c[i]; i < c.length && tnode.isText; tnode = c[++i]) {\n textNodes.push(tnode);\n }\n i--;\n res.push(textNodes);\n } else {\n res.push(n);\n }\n }\n return res\n};\n\n/**\n * @param {Y.XmlText} ytext\n * @param {Array<any>} ptexts\n */\nconst equalYTextPText = (ytext, ptexts) => {\n const delta = ytext.toDelta();\n return delta.length === ptexts.length &&\n delta.every(/** @type {(d:any,i:number) => boolean} */ (d, i) =>\n d.insert === /** @type {any} */ (ptexts[i]).text &&\n object.keys(d.attributes || {}).length === ptexts[i].marks.length &&\n object.every(d.attributes, (attr, /** @type {string} */ yattrname) => {\n const markname = yattr2markname(yattrname);\n const pmarks = ptexts[i].marks;\n\n const pmark = pmarks.find(/** @param {any} mark */ mark => mark.type.name === markname);\n\n // Ensure the pmark is present in the ptexts before checking equality. When replacing a mark with another mark\n // the pmark will be missing from the ptexts and the equalAttrs will throw an error.\n if (!pmark) {\n return false\n }\n\n return equalAttrs(attr, pmarks.find(/** @param {any} mark */ mark => mark.type.name === markname)?.attrs)\n })\n )\n};\n\n/**\n * @param {Y.XmlElement|Y.XmlText|Y.XmlHook} ytype\n * @param {any|Array<any>} pnode\n */\nconst equalYTypePNode = (ytype, pnode) => {\n if (\n ytype instanceof Y.XmlElement && !(pnode instanceof Array) &&\n matchNodeName(ytype, pnode)\n ) {\n const normalizedContent = normalizePNodeContent(pnode);\n return ytype._length === normalizedContent.length &&\n equalAttrs(ytype.getAttributes(), pnode.attrs) &&\n ytype.toArray().every((ychild, i) =>\n equalYTypePNode(ychild, normalizedContent[i])\n )\n }\n return ytype instanceof Y.XmlText && pnode instanceof Array &&\n equalYTextPText(ytype, pnode)\n};\n\n/**\n * @param {PModel.Node | Array<PModel.Node> | undefined} mapped\n * @param {PModel.Node | Array<PModel.Node>} pcontent\n */\nconst mappedIdentity = (mapped, pcontent) =>\n mapped === pcontent ||\n (mapped instanceof Array && pcontent instanceof Array &&\n mapped.length === pcontent.length && mapped.every((a, i) =>\n pcontent[i] === a\n ));\n\n/**\n * @param {Y.XmlElement} ytype\n * @param {PModel.Node} pnode\n * @param {BindingMetadata} meta\n * @return {{ foundMappedChild: boolean, equalityFactor: number }}\n */\nconst computeChildEqualityFactor = (ytype, pnode, meta) => {\n const yChildren = ytype.toArray();\n const pChildren = normalizePNodeContent(pnode);\n const pChildCnt = pChildren.length;\n const yChildCnt = yChildren.length;\n const minCnt = math.min(yChildCnt, pChildCnt);\n let left = 0;\n let right = 0;\n let foundMappedChild = false;\n for (; left < minCnt; left++) {\n const leftY = yChildren[left];\n const leftP = pChildren[left];\n if (mappedIdentity(meta.mapping.get(leftY), leftP)) {\n foundMappedChild = true; // definite (good) match!\n } else if (!equalYTypePNode(leftY, leftP)) {\n break\n }\n }\n for (; left + right < minCnt; right++) {\n const rightY = yChildren[yChildCnt - right - 1];\n const rightP = pChildren[pChildCnt - right - 1];\n if (mappedIdentity(meta.mapping.get(rightY), rightP)) {\n foundMappedChild = true;\n } else if (!equalYTypePNode(rightY, rightP)) {\n break\n }\n }\n return {\n equalityFactor: left + right,\n foundMappedChild\n }\n};\n\n/**\n * @param {Y.Text} ytext\n */\nconst ytextTrans = (ytext) => {\n let str = '';\n /**\n * @type {Y.Item|null}\n */\n let n = ytext._start;\n const nAttrs = {};\n while (n !== null) {\n if (!n.deleted) {\n if (n.countable && n.content instanceof Y.ContentString) {\n str += n.content.str;\n } else if (n.content instanceof Y.ContentFormat) {\n nAttrs[n.content.key] = null;\n }\n }\n n = n.right;\n }\n return {\n str,\n nAttrs\n }\n};\n\n/**\n * @todo test this more\n *\n * @param {Y.Text} ytext\n * @param {Array<any>} ptexts\n * @param {BindingMetadata} meta\n */\nconst updateYText = (ytext, ptexts, meta) => {\n meta.mapping.set(ytext, ptexts);\n const { nAttrs, str } = ytextTrans(ytext);\n const content = ptexts.map((p) => ({\n insert: /** @type {any} */ (p).text,\n attributes: Object.assign({}, nAttrs, marksToAttributes(p.marks, meta))\n }));\n const { insert, remove, index } = simpleDiff(\n str,\n content.map((c) => c.insert).join('')\n );\n ytext.delete(index, remove);\n ytext.insert(index, insert);\n ytext.applyDelta(\n content.map((c) => ({ retain: c.insert.length, attributes: c.attributes }))\n );\n};\n\nconst hashedMarkNameRegex = /(.*)(--[a-zA-Z0-9+/=]{8})$/;\n/**\n * @param {string} attrName\n */\nconst yattr2markname = attrName => hashedMarkNameRegex.exec(attrName)?.[1] ?? attrName;\n\n/**\n * @todo move this to markstoattributes\n *\n * @param {Object<string, any>} attrs\n * @param {import('prosemirror-model').Schema} schema\n */\nconst attributesToMarks = (attrs, schema) => {\n /**\n * @type {Array<import('prosemirror-model').Mark>}\n */\n const marks = [];\n for (const markName in attrs) {\n // remove hashes if necessary\n marks.push(schema.mark(yattr2markname(markName), attrs[markName]));\n }\n return marks\n};\n\n/**\n * @param {Array<import('prosemirror-model').Mark>} marks\n * @param {BindingMetadata} meta\n */\nconst marksToAttributes = (marks, meta) => {\n const pattrs = {};\n marks.forEach((mark) => {\n if (mark.type.name !== 'ychange') {\n const isOverlapping = map.setIfUndefined(meta.isOMark, mark.type, () => !mark.type.excludes(mark.type));\n pattrs[isOverlapping ? `${mark.type.name}--${hashOfJSON(mark.toJSON())}` : mark.type.name] = mark.attrs;\n }\n });\n return pattrs\n};\n\n/**\n * Update a yDom node by syncing the current content of the prosemirror node.\n *\n * This is a y-prosemirror internal feature that you can use at your own risk.\n *\n * @private\n * @unstable\n *\n * @param {{transact: Function}} y\n * @param {Y.XmlFragment} yDomFragment\n * @param {any} pNode\n * @param {BindingMetadata} meta\n */\nconst updateYFragment = (y, yDomFragment, pNode, meta) => {\n if (\n yDomFragment instanceof Y.XmlElement &&\n yDomFragment.nodeName !== pNode.type.name\n ) {\n throw new Error('node name mismatch!')\n }\n meta.mapping.set(yDomFragment, pNode);\n // update attributes\n if (yDomFragment instanceof Y.XmlElement) {\n const yDomAttrs = yDomFragment.getAttributes();\n const pAttrs = pNode.attrs;\n for (const key in pAttrs) {\n if (pAttrs[key] !== null) {\n if (yDomAttrs[key] !== pAttrs[key] && key !== 'ychange') {\n yDomFragment.setAttribute(key, pAttrs[key]);\n }\n } else {\n yDomFragment.removeAttribute(key);\n }\n }\n // remove all keys that are no longer in pAttrs\n for (const key in yDomAttrs) {\n if (pAttrs[key] === undefined) {\n yDomFragment.removeAttribute(key);\n }\n }\n }\n // update children\n const pChildren = normalizePNodeContent(pNode);\n const pChildCnt = pChildren.length;\n const yChildren = yDomFragment.toArray();\n const yChildCnt = yChildren.length;\n const minCnt = math.min(pChildCnt, yChildCnt);\n let left = 0;\n let right = 0;\n // find number of matching elements from left\n for (; left < minCnt; left++) {\n const leftY = yChildren[left];\n const leftP = pChildren[left];\n if (!mappedIdentity(meta.mapping.get(leftY), leftP)) {\n if (equalYTypePNode(leftY, leftP)) {\n // update mapping\n meta.mapping.set(leftY, leftP);\n } else {\n break\n }\n }\n }\n // find number of matching elements from right\n for (; right + left + 1 < minCnt; right++) {\n const rightY = yChildren[yChildCnt - right - 1];\n const rightP = pChildren[pChildCnt - right - 1];\n if (!mappedIdentity(meta.mapping.get(rightY), rightP)) {\n if (equalYTypePNode(rightY, rightP)) {\n // update mapping\n meta.mapping.set(rightY, rightP);\n } else {\n break\n }\n }\n }\n y.transact(() => {\n // try to compare and update\n while (yChildCnt - left - right > 0 && pChildCnt - left - right > 0) {\n const leftY = yChildren[left];\n const leftP = pChildren[left];\n const rightY = yChildren[yChildCnt - right - 1];\n const rightP = pChildren[pChildCnt - right - 1];\n if (leftY instanceof Y.XmlText && leftP instanceof Array) {\n if (!equalYTextPText(leftY, leftP)) {\n updateYText(leftY, leftP, meta);\n }\n left += 1;\n } else {\n let updateLeft = leftY instanceof Y.XmlElement &&\n matchNodeName(leftY, leftP);\n let updateRight = rightY instanceof Y.XmlElement &&\n matchNodeName(rightY, rightP);\n if (updateLeft && updateRight) {\n // decide which which element to update\n const equalityLeft = computeChildEqualityFactor(\n /** @type {Y.XmlElement} */ (leftY),\n /** @type {PModel.Node} */ (leftP),\n meta\n );\n const equalityRight = computeChildEqualityFactor(\n /** @type {Y.XmlElement} */ (rightY),\n /** @type {PModel.Node} */ (rightP),\n meta\n );\n if (\n equalityLeft.foundMappedChild && !equalityRight.foundMappedChild\n ) {\n updateRight = false;\n } else if (\n !equalityLeft.foundMappedChild && equalityRight.foundMappedChild\n ) {\n updateLeft = false;\n } else if (\n equalityLeft.equalityFactor < equalityRight.equalityFactor\n ) {\n updateLeft = false;\n } else {\n updateRight = false;\n }\n }\n if (updateLeft) {\n updateYFragment(\n y,\n /** @type {Y.XmlFragment} */ (leftY),\n /** @type {PModel.Node} */ (leftP),\n meta\n );\n left += 1;\n } else if (updateRight) {\n updateYFragment(\n y,\n /** @type {Y.XmlFragment} */ (rightY),\n /** @type {PModel.Node} */ (rightP),\n meta\n );\n right += 1;\n } else {\n meta.mapping.delete(yDomFragment.get(left));\n yDomFragment.delete(left, 1);\n yDomFragment.insert(left, [\n createTypeFromTextOrElementNode(leftP, meta)\n ]);\n left += 1;\n }\n }\n }\n const yDelLen = yChildCnt - left - right;\n if (\n yChildCnt === 1 && pChildCnt === 0 && yChildren[0] instanceof Y.XmlText\n ) {\n meta.mapping.delete(yChildren[0]);\n // Edge case handling https://github.com/yjs/y-prosemirror/issues/108\n // Only delete the content of the Y.Text to retain remote changes on the same Y.Text object\n yChildren[0].delete(0, yChildren[0].length);\n } else if (yDelLen > 0) {\n yDomFragment.slice(left, left + yDelLen).forEach(type => meta.mapping.delete(type));\n yDomFragment.delete(left, yDelLen);\n }\n if (left + right < pChildCnt) {\n const ins = [];\n for (let i = left; i < pChildCnt - right; i++) {\n ins.push(createTypeFromTextOrElementNode(pChildren[i], meta));\n }\n yDomFragment.insert(left, ins);\n }\n }, ySyncPluginKey);\n};\n\n/**\n * @function\n * @param {Y.XmlElement} yElement\n * @param {any} pNode Prosemirror Node\n */\nconst matchNodeName = (yElement, pNode) =>\n !(pNode instanceof Array) && yElement.nodeName === pNode.type.name;\n\n/**\n * Either a node if type is YXmlElement or an Array of text nodes if YXmlText\n * @typedef {Map<Y.AbstractType, Node | Array<Node>>} ProsemirrorMapping\n */\n\n/**\n * Is null if no timeout is in progress.\n * Is defined if a timeout is in progress.\n * Maps from view\n * @type {Map<EditorView, Map<any, any>>|null}\n */\nlet viewsToUpdate = null;\n\nclass MetaEntry {\n /**\n * @param {EditorView} view\n * @param {any} key\n * @param {any} value\n */\n constructor (view, key, value) {\n this.view = view;\n this.key = key;\n this.value = value;\n }\n\n apply () {\n const syncState = ySyncPluginKey.getState(this.view.state);\n if (syncState && syncState.binding && !syncState.binding.isDestroyed) {\n const tr = this.view.state.tr;\n tr.setMeta(this.key, this.value);\n this.view.dispatch(tr);\n }\n }\n}\n\nclass MetaEntriesQueue {\n /**\n * @param {Array<MetaEntry>} [entries=[]]\n */\n constructor (entries = []) {\n this.entries = entries;\n }\n\n /**\n * @return {MetaEntry|undefined}\n */\n getFirst () {\n return this.entries[0]\n }\n\n /**\n * @return {MetaEntry|undefined}\n */\n dequeueFirst () {\n return this.entries.shift()\n }\n\n /**\n * @return {boolean}\n */\n isEmpty () {\n return this.entries.length === 0\n }\n\n static fromViewsToUpdate () {\n const ups = /** @type {Map<EditorView, Map<any, any>>} */ (viewsToUpdate);\n viewsToUpdate = null;\n const entries = [];\n ups.forEach((metas, view) => {\n metas.forEach((value, key) => {\n entries.push(new MetaEntry(view, key, value));\n });\n });\n return new MetaEntriesQueue(entries)\n }\n}\n\n/**\n * Dispatch queued plugin metadata in order, retrying only the remaining\n * entries if a transaction becomes stale while the async queue is flushing.\n *\n * Cursor awareness updates are decoration-only refreshes. If a real document\n * transaction lands before one of these queued meta transactions is applied,\n * ProseMirror can reject it with a RangeError. In that case we reschedule the\n * remaining entries on the next tick. If the first remaining entry fails again\n * on retry, we drop that entry and continue with the rest of the queue instead\n * of retrying forever or crashing the editor.\n *\n * @param {MetaEntriesQueue} [metaEntries=MetaEntriesQueue.fromViewsToUpdate()]\n * @param {boolean} [isRetry=false]\n */\nconst updateMetas = (metaEntries = MetaEntriesQueue.fromViewsToUpdate(), isRetry = false) => {\n let isFirst = true;\n while (!metaEntries.isEmpty()) {\n const metaEntry = metaEntries.getFirst();\n try {\n metaEntry.apply();\n } catch (err) {\n // ProseMirror throws a RangeError when this transaction was created from\n // an older state and another transaction changed the document before this\n // meta-only dispatch was applied (\"Applying a mismatched transaction\").\n if (err instanceof RangeError) {\n if (isRetry && isFirst) {\n // Drop the repeatedly stale entry so the queue can continue flushing.\n metaEntries.dequeueFirst();\n }\n if (!metaEntries.isEmpty()) {\n eventloop.timeout(0, () => updateMetas(metaEntries, true));\n }\n return\n }\n throw err\n }\n isFirst = false;\n metaEntries.dequeueFirst();\n }\n};\n\nconst setMeta = (view, key, value) => {\n if (!viewsToUpdate) {\n viewsToUpdate = new Map();\n // Awareness listeners can fire in bursts, so batch them into one tick.\n eventloop.timeout(0, updateMetas);\n }\n map.setIfUndefined(viewsToUpdate, view, map.create).set(key, value);\n};\n\n/**\n * Transforms a Prosemirror based absolute position to a Yjs Cursor (relative position in the Yjs model).\n *\n * @param {number} pos\n * @param {Y.XmlFragment} type\n * @param {ProsemirrorMapping} mapping\n * @return {any} relative position\n */\nconst absolutePositionToRelativePosition = (pos, type, mapping) => {\n if (pos === 0) {\n return Y.createRelativePositionFromTypeIndex(type, 0, -1)\n }\n /**\n * @type {any}\n */\n let n = type._first === null ? null : /** @type {Y.ContentType} */ (type._first.content).type;\n while (n !== null && type !== n) {\n if (n instanceof Y.XmlText) {\n if (n._length >= pos) {\n return Y.createRelativePositionFromTypeIndex(n, pos, -1)\n } else {\n pos -= n._length;\n }\n if (n._item !== null && n._item.next !== null) {\n n = /** @type {Y.ContentType} */ (n._item.next.content).type;\n } else {\n do {\n n = n._item === null ? null : n._item.parent;\n pos--;\n } while (n !== type && n !== null && n._item !== null && n._item.next === null)\n if (n !== null && n !== type) {\n // @ts-gnore we know that n.next !== null because of above loop conditition\n n = n._item === null ? null : /** @type {Y.ContentType} */ (/** @type Y.Item */ (n._item.next).content).type;\n }\n }\n } else {\n const pNodeSize = /** @type {any} */ (mapping.get(n) || { nodeSize: 0 }).nodeSize;\n if (n._first !== null && pos < pNodeSize) {\n n = /** @type {Y.ContentType} */ (n._first.content).type;\n pos--;\n } else {\n if (pos === 1 && n._length === 0 && pNodeSize > 1) {\n // edge case, should end in this paragraph\n return new Y.RelativePosition(n._item === null ? null : n._item.id, n._item === null ? Y.findRootTypeKey(n) : null, null)\n }\n pos -= pNodeSize;\n if (n._item !== null && n._item.next !== null) {\n n = /** @type {Y.ContentType} */ (n._item.next.content).type;\n } else {\n if (pos === 0) {\n // set to end of n.parent\n n = n._item === null ? n : n._item.parent;\n return new Y.RelativePosition(n._item === null ? null : n._item.id, n._item === null ? Y.findRootTypeKey(n) : null, null)\n }\n do {\n n = /** @type {Y.Item} */ (n._item).parent;\n pos--;\n } while (n !== type && /** @type {Y.Item} */ (n._item).next === null)\n // if n is null at this point, we have an unexpected case\n if (n !== type) {\n // We know that n._item.next is defined because of above loop condition\n n = /** @type {Y.ContentType} */ (/** @type {Y.Item} */ (/** @type {Y.Item} */ (n._item).next).content).type;\n }\n }\n }\n }\n if (n === null) {\n throw error.unexpectedCase()\n }\n if (pos === 0 && n.constructor !== Y.XmlText && n !== type) { // TODO: set to <= 0\n return createRelativePosition(n._item.parent, n._item)\n }\n }\n return Y.createRelativePositionFromTypeIndex(type, type._length, -1)\n};\n\n/**\n * Item-id based relative positions can misresolve to the document start after\n * block reorder during collaborative drag-and-drop.\n *\n * @param {Y.Doc} y\n * @param {Y.RelativePosition} relPos\n * @param {number|null} absPos\n * @return {boolean}\n */\nconst isMisresolvedTextPosition = (y, relPos, absPos) => {\n if (absPos === null) {\n return false\n }\n const decoded = Y.createAbsolutePositionFromRelativePosition(relPos, y);\n return decoded !== null &&\n decoded.type instanceof Y.XmlText &&\n relPos.item !== null &&\n absPos <= 1\n};\n\nconst createRelativePosition = (type, item) => {\n let typeid = null;\n let tname = null;\n if (type._item === null) {\n tname = Y.findRootTypeKey(type);\n } else {\n typeid = Y.createID(type._item.id.client, type._item.id.clock);\n }\n return new Y.RelativePosition(typeid, tname, item.id)\n};\n\n/**\n * @param {Y.Doc} y\n * @param {Y.XmlFragment} documentType Top level type that is bound to pView\n * @param {any} relPos Encoded Yjs based relative position\n * @param {ProsemirrorMapping} mapping\n * @return {null|number}\n */\nconst relativePositionToAbsolutePosition = (y, documentType, relPos, mapping) => {\n const decodedPos = Y.createAbsolutePositionFromRelativePosition(relPos, y);\n if (decodedPos === null || (decodedPos.type !== documentType && !Y.isParentOf(documentType, decodedPos.type._item))) {\n return null\n }\n let type = decodedPos.type;\n let pos = 0;\n if (type.constructor === Y.XmlText) {\n pos = decodedPos.index;\n } else if (type._item === null || !type._item.deleted) {\n let n = type._first;\n let i = 0;\n while (i < type._length && i < decodedPos.index && n !== null) {\n if (!n.deleted) {\n const t = /** @type {Y.ContentType} */ (n.content).type;\n i++;\n if (t instanceof Y.XmlText) {\n pos += t._length;\n } else {\n const mapped = mapping.get(t);\n if (mapped == null) {\n return null\n }\n pos += /** @type {any} */ (mapped).nodeSize;\n }\n }\n n = /** @type {Y.Item} */ (n.right);\n }\n pos += 1; // increase because we go out of n\n }\n while (type !== documentType && type._item !== null) {\n // @ts-ignore\n const parent = type._item.parent;\n // @ts-ignore\n if (parent._item === null || !parent._item.deleted) {\n pos += 1; // the start tag\n let n = /** @type {Y.AbstractType} */ (parent)._first;\n // now iterate until we found type\n while (n !== null) {\n const contentType = /** @type {Y.ContentType} */ (n.content).type;\n if (contentType === type) {\n break\n }\n if (!n.deleted) {\n if (contentType instanceof Y.XmlText) {\n pos += contentType._length;\n } else {\n const mapped = mapping.get(contentType);\n if (mapped == null) {\n return null\n }\n pos += /** @type {any} */ (mapped).nodeSize;\n }\n }\n n = n.right;\n }\n }\n type = /** @type {Y.AbstractType} */ (parent);\n }\n const absPos = pos - 1; // we don't count the most outer tag, because it is a fragment\n if (isMisresolvedTextPosition(y, relPos, absPos)) {\n return null\n }\n return absPos\n};\n\n/**\n * Shallow attrs comparison. Attr values are primitives in most schemas;\n * non-primitive values fail the check and callers fall back to text matching.\n *\n * @param {Object<string, any>} a\n * @param {Object<string, any>} b\n * @return {boolean}\n */\nconst attrsEqual = (a, b) => {\n if (a === b) {\n return true\n }\n const aKeys = Object.keys(a);\n return aKeys.length === Object.keys(b).length && aKeys.every((k) => a[k] === b[k])\n};\n\n/**\n * Returns true when any attr deviates from its spec default or has none.\n * Default-only attrs cannot tell same-type siblings apart.\n *\n * @param {import('prosemirror-model').Node} node\n * @return {boolean}\n */\nconst hasDistinctiveAttrs = (node) => {\n const specAttrs = node.type.spec.attrs || {};\n return Object.keys(node.attrs).some((key) => {\n const spec = specAttrs[key];\n return spec == null ||\n !Object.prototype.hasOwnProperty.call(spec, 'default') ||\n spec.default !== node.attrs[key]\n })\n};\n\n/**\n * Remaps a position into a matched block by walking the same child-index path\n * it had in the old block. A raw byte offset would overshoot into a sibling\n * inner textblock when the old block contains local keystrokes that are not\n * yet part of the rebuilt document.\n *\n * @param {import('prosemirror-model').ResolvedPos} $oldPos\n * @param {number} newBlockStart\n * @param {import('prosemirror-model').Node} newBlock\n * @return {number|null}\n */\nconst remapIntoBlock = ($oldPos, newBlockStart, newBlock) => {\n let pos = newBlockStart + 1;\n let node = newBlock;\n for (let depth = 1; depth < $oldPos.depth; depth++) {\n const idx = $oldPos.index(depth);\n if (idx >= node.childCount) {\n return null\n }\n for (let i = 0; i < idx; i++) {\n pos += node.child(i).nodeSize;\n }\n pos += 1;\n node = node.child(idx);\n if (node.type !== $oldPos.node(depth + 1).type) {\n return null\n }\n }\n if (!node.isTextblock) {\n return null\n }\n return pos + Math.min($oldPos.parentOffset, node.content.size)\n};\n\n/**\n * @param {import('prosemirror-model').Node} oldDoc\n * @param {import('prosemirror-model').Node} newDoc\n * @param {number} absPos\n * @return {number|null}\n */\nconst findAbsolutePositionAfterStructuralChange = (oldDoc, newDoc, absPos) => {\n let pos = 0;\n let targetIdx = 0;\n for (; targetIdx < oldDoc.childCount; targetIdx++) {\n const child = oldDoc.child(targetIdx);\n if (pos + child.nodeSize > absPos) {\n break\n }\n pos += child.nodeSize;\n }\n if (targetIdx >= oldDoc.childCount) {\n return null\n }\n const targetChild = oldDoc.child(targetIdx);\n const $oldPos = oldDoc.resolve(absPos);\n\n /**\n * @param {number} newBlockStart\n * @param {import('prosemirror-model').Node} newBlock\n * @return {number|null}\n */\n const place = (newBlockStart, newBlock) => {\n // Positions between top-level blocks carry no inner path; clamp them just\n // inside the matched block like the previous raw-offset remap did.\n if ($oldPos.depth === 0) {\n const remapped = newBlockStart + (absPos - pos);\n const contentStart = newBlockStart + 1;\n const contentEnd = newBlockStart + newBlock.nodeSize - 1;\n return Math.max(contentStart, Math.min(remapped, contentEnd))\n }\n return remapIntoBlock($oldPos, newBlockStart, newBlock)\n };\n\n /**\n * Finds the Nth block in newDoc matching `pred`, where N is the number of\n * matching blocks in oldDoc up to and including the target block.\n *\n * @param {function(import('prosemirror-model').Node): boolean} pred\n * @param {boolean} requireUnique\n * @return {number|null}\n */\n const findByPredicate = (pred, requireUnique = false) => {\n let occurrence = 0;\n for (let i = 0; i <= targetIdx; i++) {\n if (pred(oldDoc.child(i))) {\n occurrence++;\n }\n }\n let matchCount = 0;\n let matchStart = -1;\n let matchBlock = null;\n let newPos = 0;\n for (let i = 0; i < newDoc.childCount; i++) {\n const child = newDoc.child(i);\n if (pred(child)) {\n matchCount++;\n if (matchCount === occurrence) {\n matchStart = newPos;\n matchBlock = child;\n }\n }\n newPos += child.nodeSize;\n }\n if (matchBlock === null || (requireUnique && (occurrence !== 1 || matchCount !== 1))) {\n return null\n }\n return place(matchStart, matchBlock)\n };\n\n /**\n * @param {import('prosemirror-model').Node} child\n * @return {boolean}\n */\n const sameTypeAndAttrs = (child) =>\n child.type === targetChild.type && attrsEqual(child.attrs, targetChild.attrs);\n const oldText = targetChild.textContent;\n\n const byAll = findByPredicate((child) => sameTypeAndAttrs(child) && child.textContent === oldText);\n if (byAll !== null) {\n return byAll\n }\n\n // Text must be matched before attrs: after a remote attr-only edit, the\n // attrs pass would steer the cursor into a sibling that kept the old attrs.\n const byText = findByPredicate(\n (child) => child.type === targetChild.type && child.textContent === oldText\n );\n if (byText !== null) {\n return byText\n }\n\n // In-flight local typing diverges the text between both docs. Distinctive\n // attrs still identify the block; default-only attrs match every sibling.\n if (hasDistinctiveAttrs(targetChild)) {\n const byAttrs = findByPredicate(sameTypeAndAttrs, true);\n if (byAttrs !== null) {\n return byAttrs\n }\n }\n\n // Trailing in-flight keystrokes leave a prefix relation between old and new\n // text. Empty text is a prefix of everything and must never match.\n return findByPredicate(\n (child) => sameTypeAndAttrs(child) &&\n oldText !== '' && child.textContent !== '' &&\n (oldText.startsWith(child.textContent) || child.textContent.startsWith(oldText)),\n true\n )\n};\n\n/**\n * Returns true when a transaction changes block structure rather than only\n * editing inline content inside existing blocks.\n *\n * @param {import('prosemirror-state').Transaction} tr\n * @param {import('prosemirror-model').Node} oldDoc\n * @return {boolean}\n */\nconst isStructuralTransaction = (tr, oldDoc) => {\n if (!tr.docChanged) {\n return false\n }\n if (tr.doc.childCount !== oldDoc.childCount) {\n return true\n }\n for (const step of tr.steps) {\n if (step instanceof ReplaceStep) {\n if (step.from === 0 && step.to === oldDoc.content.size) {\n return true\n }\n if (step.slice.content.size > 0) {\n let hasBlock = false;\n step.slice.content.forEach((node) => {\n if (node.isBlock) {\n hasBlock = true;\n }\n });\n if (hasBlock) {\n return true\n }\n } else if (step.to > step.from) {\n const $from = oldDoc.resolve(step.from);\n const $to = oldDoc.resolve(step.to);\n if ($from.depth === 0 && $to.depth === 0 && $from.index() !== $to.index()) {\n return true\n }\n }\n }\n }\n return false\n};\n\n/**\n * Detect stale relative positions after structural changes that resolve to the\n * wrong text block or to the start of the correct block.\n *\n * @param {import('prosemirror-model').Node} oldDoc\n * @param {import('prosemirror-model').Node} newDoc\n * @param {number} oldAbs\n * @param {number|null} resolvedAbs\n * @return {boolean}\n */\nconst isMisresolvedAfterStructuralChange = (oldDoc, newDoc, oldAbs, resolvedAbs) => {\n if (resolvedAbs === null) {\n return false\n }\n const $old = oldDoc.resolve(oldAbs);\n const $new = newDoc.resolve(resolvedAbs);\n if (!$old.parent.isTextblock) {\n return false\n }\n // A textblock cursor cannot legitimately resolve into a non-textblock;\n // a structural reorder replaced the block via delete + insert.\n if (!$new.parent.isTextblock) {\n return true\n }\n if ($old.parent.textContent !== $new.parent.textContent) {\n return true\n }\n if ($old.parentOffset !== 0 && $new.parentOffset === 0) {\n return true\n }\n const bothAtStart = $old.parentOffset === 0 && $new.parentOffset === 0;\n // A changed offset, type or attrs hints at a same-text sibling. When all\n // of them agree there is no signal left and the Yjs resolution must win.\n const suspicious = $old.parentOffset !== $new.parentOffset ||\n $old.parent.type !== $new.parent.type ||\n !attrsEqual($old.parent.attrs, $new.parent.attrs);\n if (bothAtStart || suspicious) {\n const expected = findAbsolutePositionAfterStructuralChange(oldDoc, newDoc, oldAbs);\n return expected !== null && expected !== resolvedAbs\n }\n return false\n};\n\n/**\n * Utility function for converting an Y.Fragment to a ProseMirror fragment.\n *\n * @param {Y.XmlFragment} yXmlFragment\n * @param {Schema} schema\n */\nconst yXmlFragmentToProseMirrorFragment = (yXmlFragment, schema) => {\n const fragmentContent = yXmlFragment.toArray().map((t) =>\n createNodeFromYElement(\n /** @type {Y.XmlElement} */ (t),\n schema,\n createEmptyMeta()\n )\n ).filter((n) => n !== null);\n return Fragment.fromArray(fragmentContent)\n};\n\n/**\n * Utility function for converting an Y.Fragment to a ProseMirror node.\n *\n * @param {Y.XmlFragment} yXmlFragment\n * @param {Schema} schema\n */\nconst yXmlFragmentToProseMirrorRootNode = (yXmlFragment, schema) =>\n schema.topNodeType.create(null, yXmlFragmentToProseMirrorFragment(yXmlFragment, schema));\n\n/**\n * The initial ProseMirror content should be supplied by Yjs. This function transforms a Y.Fragment\n * to a ProseMirror Doc node and creates a mapping that is used by the sync plugin.\n *\n * @param {Y.XmlFragment} yXmlFragment\n * @param {Schema} schema\n *\n * @todo deprecate mapping property\n */\nconst initProseMirrorDoc = (yXmlFragment, schema) => {\n const meta = createEmptyMeta();\n const fragmentContent = yXmlFragment.toArray().map((t) =>\n createNodeFromYElement(\n /** @type {Y.XmlElement} */ (t),\n schema,\n meta\n )\n ).filter((n) => n !== null);\n const doc = schema.topNodeType.create(null, Fragment.fromArray(fragmentContent));\n return { doc, meta, mapping: meta.mapping }\n};\n\n/**\n * Utility method to convert a Prosemirror Doc Node into a Y.Doc.\n *\n * This can be used when importing existing content to Y.Doc for the first time,\n * note that this should not be used to rehydrate a Y.Doc from a database once\n * collaboration has begun as all history will be lost\n *\n * @param {Node} doc\n * @param {string} xmlFragment\n * @return {Y.Doc}\n */\nfunction prosemirrorToYDoc (doc, xmlFragment = 'prosemirror') {\n const ydoc = new Y.Doc();\n const type = /** @type {Y.XmlFragment} */ (ydoc.get(xmlFragment, Y.XmlFragment));\n if (!type.doc) {\n return ydoc\n }\n\n prosemirrorToYXmlFragment(doc, type);\n return type.doc\n}\n\n/**\n * Utility method to update an empty Y.XmlFragment with content from a Prosemirror Doc Node.\n *\n * This can be used when importing existing content to Y.Doc for the first time,\n * note that this should not be used to rehydrate a Y.Doc from a database once\n * collaboration has begun as all history will be lost\n *\n * Note: The Y.XmlFragment does not need to be part of a Y.Doc document at the time that this\n * method is called, but it must be added before any other operations are performed on it.\n *\n * @param {Node} doc prosemirror document.\n * @param {Y.XmlFragment} [xmlFragment] If supplied, an xml fragment to be\n * populated from the prosemirror state; otherwise a new XmlFragment will be created.\n * @return {Y.XmlFragment}\n */\nfunction prosemirrorToYXmlFragment (doc, xmlFragment) {\n const type = xmlFragment || new Y.XmlFragment();\n const ydoc = type.doc ? type.doc : { transact: (transaction) => transaction(undefined) };\n updateYFragment(ydoc, type, doc, { mapping: new Map(), isOMark: new Map() });\n return type\n}\n\n/**\n * Utility method to convert Prosemirror compatible JSON into a Y.Doc.\n *\n * This can be used when importing existing content to Y.Doc for the first time,\n * note that this should not be used to rehydrate a Y.Doc from a database once\n * collaboration has begun as all history will be lost\n *\n * @param {Schema} schema\n * @param {any} state\n * @param {string} xmlFragment\n * @return {Y.Doc}\n */\nfunction prosemirrorJSONToYDoc (schema, state, xmlFragment = 'prosemirror') {\n const doc = Node.fromJSON(schema, state);\n return prosemirrorToYDoc(doc, xmlFragment)\n}\n\n/**\n * Utility method to convert Prosemirror compatible JSON to a Y.XmlFragment\n *\n * This can be used when importing existing content to Y.Doc for the first time,\n * note that this should not be used to rehydrate a Y.Doc from a database once\n * collaboration has begun as all history will be lost\n *\n * @param {Schema} schema\n * @param {any} state\n * @param {Y.XmlFragment} [xmlFragment] If supplied, an xml fragment to be\n * populated from the prosemirror state; otherwise a new XmlFragment will be created.\n * @return {Y.XmlFragment}\n */\nfunction prosemirrorJSONToYXmlFragment (schema, state, xmlFragment) {\n const doc = Node.fromJSON(schema, state);\n return prosemirrorToYXmlFragment(doc, xmlFragment)\n}\n\n/**\n * @deprecated Use `yXmlFragmentToProseMirrorRootNode` instead\n *\n * Utility method to convert a Y.Doc to a Prosemirror Doc node.\n *\n * @param {Schema} schema\n * @param {Y.Doc} ydoc\n * @return {Node}\n */\nfunction yDocToProsemirror (schema, ydoc) {\n const state = yDocToProsemirrorJSON(ydoc);\n return Node.fromJSON(schema, state)\n}\n\n/**\n *\n * @deprecated Use `yXmlFragmentToProseMirrorRootNode` instead\n *\n * Utility method to convert a Y.XmlFragment to a Prosemirror Doc node.\n *\n * @param {Schema} schema\n * @param {Y.XmlFragment} xmlFragment\n * @return {Node}\n */\nfunction yXmlFragmentToProsemirror (schema, xmlFragment) {\n const state = yXmlFragmentToProsemirrorJSON(xmlFragment);\n return Node.fromJSON(schema, state)\n}\n\n/**\n *\n * @deprecated Use `yXmlFragmentToProseMirrorRootNode` instead\n *\n * Utility method to convert a Y.Doc to Prosemirror compatible JSON.\n *\n * @param {Y.Doc} ydoc\n * @param {string} xmlFragment\n * @return {Record<string, any>}\n */\nfunction yDocToProsemirrorJSON (\n ydoc,\n xmlFragment = 'prosemirror'\n) {\n return yXmlFragmentToProsemirrorJSON(ydoc.getXmlFragment(xmlFragment))\n}\n\n/**\n * @deprecated Use `yXmlFragmentToProseMirrorRootNode` instead\n *\n * Utility method to convert a Y.Doc to Prosemirror compatible JSON.\n *\n * @param {Y.XmlFragment} xmlFragment The fragment, which must be part of a Y.Doc.\n * @return {Record<string, any>}\n */\nfunction yXmlFragmentToProsemirrorJSON (xmlFragment) {\n const items = xmlFragment.toArray();\n\n /**\n * @param {Y.AbstractType} item\n */\n const serialize = item => {\n /**\n * @type {Object} NodeObject\n * @property {string} NodeObject.type\n * @property {Record<string, string>=} NodeObject.attrs\n * @property {Array<NodeObject>=} NodeObject.content\n */\n let response;\n\n // TODO: Must be a better way to detect text nodes than this\n if (item instanceof Y.XmlText) {\n const delta = item.toDelta();\n response = delta.map(/** @param {any} d */ (d) => {\n const text = {\n type: 'text',\n text: d.insert\n };\n if (d.attributes) {\n text.marks = Object.keys(d.attributes).map((type_) => {\n const attrs = d.attributes[type_];\n const type = yattr2markname(type_);\n const mark = {\n type\n };\n if (Object.keys(attrs)) {\n mark.attrs = attrs;\n }\n return mark\n });\n }\n return text\n });\n } else if (item instanceof Y.XmlElement) {\n response = {\n type: item.nodeName\n };\n\n const attrs = item.getAttributes();\n if (Object.keys(attrs).length) {\n response.attrs = attrs;\n }\n\n const children = item.toArray();\n if (children.length) {\n response.content = children.map(serialize).flat();\n }\n } else {\n // expected either Y.XmlElement or Y.XmlText\n error.unexpectedCase();\n }\n\n return response\n };\n\n return {\n type: 'doc',\n content: items.map(serialize)\n }\n}\n\n/**\n * Default awareness state filter\n *\n * @param {number} currentClientId current client id\n * @param {number} userClientId user client id\n * @param {any} _user user data\n * @return {boolean}\n */\nconst defaultAwarenessStateFilter = (\n currentClientId,\n userClientId,\n _user\n) => currentClientId !== userClientId;\n\n/**\n * Default generator for a cursor element\n *\n * @param {any} user user data\n * @return {HTMLElement}\n */\nconst defaultCursorBuilder = (user) => {\n const cursor = document.createElement('span');\n cursor.classList.add('ProseMirror-yjs-cursor');\n cursor.setAttribute('style', `border-color: ${user.color}`);\n const userDiv = document.createElement('div');\n userDiv.setAttribute('style', `background-color: ${user.color}`);\n userDiv.insertBefore(document.createTextNode(user.name), null);\n const nonbreakingSpace1 = document.createTextNode('\\u2060');\n const nonbreakingSpace2 = document.createTextNode('\\u2060');\n cursor.insertBefore(nonbreakingSpace1, null);\n cursor.insertBefore(userDiv, null);\n cursor.insertBefore(nonbreakingSpace2, null);\n return cursor\n};\n\n/**\n * Default generator for the selection attributes\n *\n * @param {any} user user data\n * @return {import('prosemirror-view').DecorationAttrs}\n */\nconst defaultSelectionBuilder = (user) => {\n return {\n style: `background-color: ${user.color}70`,\n class: 'ProseMirror-yjs-selection'\n }\n};\n\nconst rxValidColor = /^#[0-9a-fA-F]{6}$/;\n\n/**\n * @param {any} state\n * @param {Awareness} awareness\n * @param {function(number, number, any):boolean} awarenessFilter\n * @param {(user: { name: string, color: string }, clientId: number) => Element} createCursor\n * @param {(user: { name: string, color: string }, clientId: number) => import('prosemirror-view').DecorationAttrs} createSelection\n * @return {any} DecorationSet\n */\nconst createDecorations = (\n state,\n awareness,\n awarenessFilter,\n createCursor,\n createSelection\n) => {\n const ystate = ySyncPluginKey.getState(state);\n if (ystate == null || ystate.doc == null || ystate.binding == null) {\n return DecorationSet.create(state.doc, [])\n }\n const y = ystate.doc;\n const decorations = [];\n if (\n ystate.snapshot != null ||\n ystate.prevSnapshot != null ||\n ystate.binding.mapping.size === 0\n ) {\n // do not render cursors while snapshot is active\n return DecorationSet.create(state.doc, [])\n }\n awareness.getStates().forEach((aw, clientId) => {\n if (!awarenessFilter(y.clientID, clientId, aw)) {\n return\n }\n\n // `aw` can be null when a client disconnects, so we guard against it\n // before reading `cursor` to avoid a TypeError.\n if (aw && aw.cursor != null) {\n const user = aw.user || {};\n if (user.color == null) {\n user.color = '#ffa500';\n } else if (!rxValidColor.test(user.color)) {\n // We only support 6-digit RGB colors in y-prosemirror\n console.warn('A user uses an unsupported color format', user);\n }\n if (user.name == null) {\n user.name = `User: ${clientId}`;\n }\n let anchor = relativePositionToAbsolutePosition(\n y,\n ystate.type,\n Y.createRelativePositionFromJSON(aw.cursor.anchor),\n ystate.binding.mapping\n );\n let head = relativePositionToAbsolutePosition(\n y,\n ystate.type,\n Y.createRelativePositionFromJSON(aw.cursor.head),\n ystate.binding.mapping\n );\n if (anchor !== null && head !== null) {\n const maxsize = math.max(state.doc.content.size - 1, 0);\n anchor = math.min(anchor, maxsize);\n head = math.min(head, maxsize);\n decorations.push(\n Decoration.widget(head, () => createCursor(user, clientId), {\n key: clientId + '',\n side: 10\n })\n );\n const from = math.min(anchor, head);\n const to = math.max(anchor, head);\n decorations.push(\n Decoration.inline(from, to, createSelection(user, clientId), {\n inclusiveEnd: true,\n inclusiveStart: false\n })\n );\n }\n }\n });\n return DecorationSet.create(state.doc, decorations)\n};\n\n/**\n * A prosemirror plugin that listens to awareness information on Yjs.\n * This requires that a `prosemirrorPlugin` is also bound to the prosemirror.\n *\n * @public\n * @param {Awareness} awareness\n * @param {object} opts\n * @param {function(any, any, any):boolean} [opts.awarenessStateFilter]\n * @param {(user: any, clientId: number) => HTMLElement} [opts.cursorBuilder]\n * @param {(user: any, clientId: number) => import('prosemirror-view').DecorationAttrs} [opts.selectionBuilder]\n * @param {function(any):any} [opts.getSelection]\n * @param {string} [cursorStateField] By default all editor bindings use the awareness 'cursor' field to propagate cursor information.\n * @return {any}\n */\nconst yCursorPlugin = (\n awareness,\n {\n awarenessStateFilter = defaultAwarenessStateFilter,\n cursorBuilder = defaultCursorBuilder,\n selectionBuilder = defaultSelectionBuilder,\n getSelection = (state) => state.selection\n } = {},\n cursorStateField = 'cursor'\n) =>\n new Plugin({\n key: yCursorPluginKey,\n state: {\n init (_, state) {\n return createDecorations(\n state,\n awareness,\n awarenessStateFilter,\n cursorBuilder,\n selectionBuilder\n )\n },\n apply (tr, prevState, oldState, newState) {\n const ystate = ySyncPluginKey.getState(newState);\n const yCursorState = tr.getMeta(yCursorPluginKey);\n const isRemoteChange = ystate && ystate.isChangeOrigin;\n if (\n tr.docChanged &&\n !isRemoteChange &&\n isStructuralTransaction(tr, oldState.doc)\n ) {\n // The ProseMirror document leads the Yjs mapping during local moves.\n // Hide stale awareness until the collaborator publishes its new cursor.\n return DecorationSet.empty\n }\n if (\n isRemoteChange ||\n (yCursorState && yCursorState.awarenessUpdated)\n ) {\n return createDecorations(\n newState,\n awareness,\n awarenessStateFilter,\n cursorBuilder,\n selectionBuilder\n )\n }\n if (tr.docChanged) {\n return prevState.map(tr.mapping, tr.doc)\n }\n return prevState\n }\n },\n props: {\n decorations: (state) => {\n return yCursorPluginKey.getState(state)\n }\n },\n view: (view) => {\n const awarenessListener = () => {\n // @ts-ignore\n if (view.docView) {\n setMeta(view, yCursorPluginKey, { awarenessUpdated: true });\n }\n };\n /**\n * @param {import('prosemirror-view').EditorView} editorView\n * @param {{ force?: boolean }} [opts]\n */\n const updateCursorInfo = (editorView, opts = {}) => {\n const ystate = ySyncPluginKey.getState(editorView.state);\n // `ystate` is undefined during sync-plugin init and Y.Doc transitions;\n // reading from it here would throw and break cursor tracking for the view.\n if (!ystate || !ystate.binding) return\n // @note We make implicit checks when checking for the cursor property\n const current = awareness.getLocalState() || {};\n if (editorView.hasFocus()) {\n const selection = getSelection(editorView.state);\n /**\n * @type {Y.RelativePosition}\n */\n const anchor = absolutePositionToRelativePosition(\n selection.anchor,\n ystate.type,\n ystate.binding.mapping\n );\n /**\n * @type {Y.RelativePosition}\n */\n const head = absolutePositionToRelativePosition(\n selection.head,\n ystate.type,\n ystate.binding.mapping\n );\n if (\n opts.force ||\n current.cursor == null ||\n !Y.compareRelativePositions(\n Y.createRelativePositionFromJSON(current.cursor.anchor),\n anchor\n ) ||\n !Y.compareRelativePositions(\n Y.createRelativePositionFromJSON(current.cursor.head),\n head\n )\n ) {\n awareness.setLocalStateField(cursorStateField, {\n anchor,\n head\n });\n }\n } else if (\n current.cursor != null &&\n relativePositionToAbsolutePosition(\n ystate.doc,\n ystate.type,\n Y.createRelativePositionFromJSON(current.cursor.anchor),\n ystate.binding.mapping\n ) !== null\n ) {\n // delete cursor information if current cursor information is owned by this editor binding\n awareness.setLocalStateField(cursorStateField, null);\n }\n };\n const onFocusChange = () => updateCursorInfo(view);\n awareness.on('change', awarenessListener);\n view.dom.addEventListener('focusin', onFocusChange);\n view.dom.addEventListener('focusout', onFocusChange);\n return {\n update: (editorView, prevState) => {\n const ystate = ySyncPluginKey.getState(editorView.state);\n const forceAwarenessUpdate = !!(\n ystate?.isChangeOrigin &&\n prevState?.doc &&\n !prevState.doc.eq(editorView.state.doc)\n );\n updateCursorInfo(editorView, { force: forceAwarenessUpdate });\n },\n destroy: () => {\n view.dom.removeEventListener('focusin', onFocusChange);\n view.dom.removeEventListener('focusout', onFocusChange);\n awareness.off('change', awarenessListener);\n awareness.setLocalStateField(cursorStateField, null);\n }\n }\n }\n });\n\nconst undo = state => {\n const undoManager = yUndoPluginKey.getState(state).undoManager;\n if (undoManager != null) {\n undoManager.undo();\n return true\n }\n};\n\nconst redo = state => {\n const undoManager = yUndoPluginKey.getState(state).undoManager;\n if (undoManager != null) {\n undoManager.redo();\n return true\n }\n};\n\nconst defaultProtectedNodes = new Set(['paragraph']);\n\nconst defaultDeleteFilter = (item, protectedNodes) => !(item instanceof Item) ||\n!(item.content instanceof ContentType) ||\n!(item.content.type instanceof Text ||\n (item.content.type instanceof XmlElement && protectedNodes.has(item.content.type.nodeName))) ||\nitem.content.type._length === 0;\n\nconst yUndoPlugin = ({ protectedNodes = defaultProtectedNodes, trackedOrigins = [], undoManager = null } = {}) => new Plugin({\n key: yUndoPluginKey,\n state: {\n init: (initargs, state) => {\n // TODO: check if plugin order matches and fix\n const ystate = ySyncPluginKey.getState(state);\n let _undoManager = undoManager;\n if (!_undoManager) {\n // Y.UndoManager registers a `doc.on('destroy', …)` listener in its\n // constructor that UndoManager.destroy() never removes. When the doc\n // outlives the editor (e.g. several editors sharing one provider), that\n // listener keeps the UndoManager — and everything it references —\n // reachable from the doc, leaking memory on every editor destroy.\n // We only own the lifecycle of a manager we create here, so capture the\n // listener(s) it adds and remove them when the plugin view is destroyed.\n const doc = ystate.doc;\n const destroyListenersBefore = new Set(doc ? doc._observers.get('destroy') : []);\n _undoManager = new UndoManager(ystate.type, {\n trackedOrigins: new Set([ySyncPluginKey].concat(trackedOrigins)),\n deleteFilter: (item) => defaultDeleteFilter(item, protectedNodes),\n captureTransaction: tr => tr.meta.get('addToHistory') !== false\n });\n const destroyListenersAfter = doc ? doc._observers.get('destroy') : new Set();\n _undoManager._yTiptapDocDestroyListeners = Array.from(destroyListenersAfter || [])\n .filter(listener => !destroyListenersBefore.has(listener));\n }\n return {\n undoManager: _undoManager,\n prevSel: null,\n hasUndoOps: _undoManager.undoStack.length > 0,\n hasRedoOps: _undoManager.redoStack.length > 0\n }\n },\n /**\n * @returns {any}\n */\n apply: (tr, val, oldState, state) => {\n const binding = ySyncPluginKey.getState(state).binding;\n const undoManager = val.undoManager;\n const hasUndoOps = undoManager.undoStack.length > 0;\n const hasRedoOps = undoManager.redoStack.length > 0;\n if (binding) {\n return {\n undoManager,\n prevSel: getRelativeSelection(binding, oldState),\n hasUndoOps,\n hasRedoOps\n }\n } else {\n if (hasUndoOps !== val.hasUndoOps || hasRedoOps !== val.hasRedoOps) {\n return Object.assign({}, val, {\n hasUndoOps: undoManager.undoStack.length > 0,\n hasRedoOps: undoManager.redoStack.length > 0\n })\n } else { // nothing changed\n return val\n }\n }\n }\n },\n view: view => {\n const ystate = ySyncPluginKey.getState(view.state);\n const undoManager = yUndoPluginKey.getState(view.state).undoManager;\n undoManager.on('stack-item-added', ({ stackItem }) => {\n const binding = ystate.binding;\n if (binding) {\n stackItem.meta.set(binding, yUndoPluginKey.getState(view.state).prevSel);\n }\n });\n undoManager.on('stack-item-popped', ({ stackItem }) => {\n const binding = ystate.binding;\n if (binding) {\n binding.beforeTransactionSelection = stackItem.meta.get(binding) || binding.beforeTransactionSelection;\n }\n });\n return {\n destroy: () => {\n undoManager.destroy();\n // Remove the doc 'destroy' listener Y.UndoManager fails to clean up\n // (only for managers we created — see state.init above).\n const leakedDestroyListeners = undoManager._yTiptapDocDestroyListeners;\n if (leakedDestroyListeners && undoManager.doc) {\n leakedDestroyListeners.forEach(listener => undoManager.doc.off('destroy', listener));\n undoManager._yTiptapDocDestroyListeners = null;\n }\n }\n }\n }\n});\n\nexport { ProsemirrorBinding, absolutePositionToRelativePosition, createDecorations, defaultAwarenessStateFilter, defaultCursorBuilder, defaultDeleteFilter, defaultProtectedNodes, defaultSelectionBuilder, findAbsolutePositionAfterStructuralChange, getRelativeSelection, initProseMirrorDoc, isMisresolvedAfterStructuralChange, isMisresolvedTextPosition, isStructuralTransaction, isVisible, prosemirrorJSONToYDoc, prosemirrorJSONToYXmlFragment, prosemirrorToYDoc, prosemirrorToYXmlFragment, redo, relativePositionToAbsolutePosition, setMeta, undo, updateYFragment, yCursorPlugin, yCursorPluginKey, yDocToProsemirror, yDocToProsemirrorJSON, ySyncPlugin, ySyncPluginKey, yUndoPlugin, yUndoPluginKey, yXmlFragmentToProseMirrorFragment, yXmlFragmentToProseMirrorRootNode, yXmlFragmentToProsemirror, yXmlFragmentToProsemirrorJSON };\n//# sourceMappingURL=y-tiptap.js.map\n","import { Extension, MappablePosition, getUpdatedPosition as getUpdatedPosition$1 } from \"@tiptap/core\";\nimport { Plugin, PluginKey } from \"@tiptap/pm/state\";\nimport { absolutePositionToRelativePosition, redo, relativePositionToAbsolutePosition, undo, ySyncPlugin, ySyncPluginKey, yUndoPlugin, yUndoPluginKey } from \"@tiptap/y-tiptap\";\n//#region src/helpers/isChangeOrigin.ts\n/**\n* Checks if a transaction was originated from a Yjs change.\n* @param {Transaction} transaction - The transaction to check.\n* @returns {boolean} - True if the transaction was originated from a Yjs change, false otherwise.\n* @example\n* const transaction = new Transaction(doc)\n* const isOrigin = isChangeOrigin(transaction) // returns false\n*/\nfunction isChangeOrigin(transaction) {\n\treturn !!transaction.getMeta(ySyncPluginKey);\n}\n//#endregion\n//#region src/helpers/yRelativePosition.ts\n/**\n* Converts a Y.js relative position to a position in the Tiptap document.\n*/\nfunction getYAbsolutePosition(state, relativePos) {\n\tconst ystate = ySyncPluginKey.getState(state);\n\treturn relativePositionToAbsolutePosition(ystate.doc, ystate.type, relativePos, ystate.binding.mapping) || 0;\n}\n/**\n* Converts a position in the Tiptap document to a Y.js relative position.\n*/\nfunction getYRelativePosition(state, absolutePos) {\n\tconst ystate = ySyncPluginKey.getState(state);\n\treturn absolutePositionToRelativePosition(absolutePos, ystate.type, ystate.binding.mapping);\n}\n//#endregion\n//#region src/helpers/CollaborationMappablePosition.ts\n/**\n* A MappablePosition subclass that includes Y.js relative position information\n* to track positions in collaborative transactions.\n*/\nvar CollaborationMappablePosition = class CollaborationMappablePosition extends MappablePosition {\n\tconstructor(position, yRelativePosition) {\n\t\tsuper(position);\n\t\tthis.yRelativePosition = yRelativePosition;\n\t}\n\t/**\n\t* Creates a CollaborationMappablePosition from a JSON object.\n\t*/\n\tstatic fromJSON(json) {\n\t\treturn new CollaborationMappablePosition(json.position, json.yRelativePosition);\n\t}\n\t/**\n\t* Converts the CollaborationMappablePosition to a JSON object.\n\t*/\n\ttoJSON() {\n\t\treturn {\n\t\t\tposition: this.position,\n\t\t\tyRelativePosition: this.yRelativePosition\n\t\t};\n\t}\n};\n/**\n* Creates a MappablePosition from a position number.\n* This is the collaboration implementation that returns a CollaborationMappablePosition.\n*/\nfunction createMappablePosition(position, state) {\n\treturn new CollaborationMappablePosition(position, getYRelativePosition(state, position));\n}\n/**\n* Returns the new position after applying a transaction. Handles both Y.js\n* transactions and regular transactions.\n*/\nfunction getUpdatedPosition(position, transaction, state) {\n\tconst yRelativePosition = position instanceof CollaborationMappablePosition ? position.yRelativePosition : null;\n\tif (isChangeOrigin(transaction) && yRelativePosition) return {\n\t\tposition: new CollaborationMappablePosition(getYAbsolutePosition(state, yRelativePosition), yRelativePosition),\n\t\tmapResult: null\n\t};\n\tconst result = getUpdatedPosition$1(position, transaction);\n\tconst absolutePosition = result.position.position;\n\treturn {\n\t\tposition: new CollaborationMappablePosition(absolutePosition, yRelativePosition !== null && yRelativePosition !== void 0 ? yRelativePosition : getYRelativePosition(state, absolutePosition)),\n\t\tmapResult: result.mapResult\n\t};\n}\n//#endregion\n//#region src/collaboration.ts\n/**\n* This extension allows you to collaborate with others in real-time.\n* @see https://tiptap.dev/api/extensions/collaboration\n*/\nconst Collaboration = Extension.create({\n\tname: \"collaboration\",\n\tpriority: 1e3,\n\taddOptions() {\n\t\treturn {\n\t\t\tdocument: null,\n\t\t\tfield: \"default\",\n\t\t\tfragment: null,\n\t\t\tprovider: null\n\t\t};\n\t},\n\taddStorage() {\n\t\treturn { isDisabled: false };\n\t},\n\tonCreate() {\n\t\tif (this.editor.extensionManager.extensions.find((extension) => extension.name === \"undoRedo\")) console.warn(\"[tiptap warn]: \\\"@tiptap/extension-collaboration\\\" comes with its own history support and is not compatible with \\\"@tiptap/extension-undo-redo\\\".\");\n\t},\n\tonBeforeCreate() {\n\t\tthis.editor.utils.getUpdatedPosition = (position, transaction) => getUpdatedPosition(position, transaction, this.editor.state);\n\t\tthis.editor.utils.createMappablePosition = (position) => createMappablePosition(position, this.editor.state);\n\t},\n\taddCommands() {\n\t\treturn {\n\t\t\tundo: () => ({ tr, state, dispatch }) => {\n\t\t\t\ttr.setMeta(\"preventDispatch\", true);\n\t\t\t\tif (yUndoPluginKey.getState(state).undoManager.undoStack.length === 0) return false;\n\t\t\t\tif (!dispatch) return true;\n\t\t\t\treturn undo(state);\n\t\t\t},\n\t\t\tredo: () => ({ tr, state, dispatch }) => {\n\t\t\t\ttr.setMeta(\"preventDispatch\", true);\n\t\t\t\tif (yUndoPluginKey.getState(state).undoManager.redoStack.length === 0) return false;\n\t\t\t\tif (!dispatch) return true;\n\t\t\t\treturn redo(state);\n\t\t\t}\n\t\t};\n\t},\n\taddKeyboardShortcuts() {\n\t\treturn {\n\t\t\t\"Mod-z\": () => this.editor.commands.undo(),\n\t\t\t\"Mod-y\": () => this.editor.commands.redo(),\n\t\t\t\"Shift-Mod-z\": () => this.editor.commands.redo()\n\t\t};\n\t},\n\taddProseMirrorPlugins() {\n\t\tconst fragment = this.options.fragment ? this.options.fragment : this.options.document.getXmlFragment(this.options.field);\n\t\tconst yUndoPluginInstance = yUndoPlugin(this.options.yUndoOptions);\n\t\tconst originalUndoPluginView = yUndoPluginInstance.spec.view;\n\t\tyUndoPluginInstance.spec.view = (view) => {\n\t\t\tconst { undoManager } = yUndoPluginKey.getState(view.state);\n\t\t\tif (undoManager.restore) {\n\t\t\t\tundoManager.restore();\n\t\t\t\tundoManager.restore = () => {};\n\t\t\t}\n\t\t\tconst viewRet = originalUndoPluginView ? originalUndoPluginView(view) : void 0;\n\t\t\treturn { destroy: () => {\n\t\t\t\tconst hasUndoManSelf = undoManager.trackedOrigins.has(undoManager);\n\t\t\t\tconst observers = undoManager._observers;\n\t\t\t\tundoManager.restore = () => {\n\t\t\t\t\tif (hasUndoManSelf) undoManager.trackedOrigins.add(undoManager);\n\t\t\t\t\tundoManager.doc.on(\"afterTransaction\", undoManager.afterTransactionHandler);\n\t\t\t\t\tundoManager._observers = observers;\n\t\t\t\t};\n\t\t\t\tif (viewRet === null || viewRet === void 0 ? void 0 : viewRet.destroy) viewRet.destroy();\n\t\t\t} };\n\t\t};\n\t\tconst ySyncPluginOptions = {\n\t\t\t...this.options.ySyncOptions,\n\t\t\tonFirstRender: this.options.onFirstRender\n\t\t};\n\t\treturn [\n\t\t\tySyncPlugin(fragment, ySyncPluginOptions),\n\t\t\tyUndoPluginInstance,\n\t\t\tthis.editor.options.enableContentCheck && new Plugin({\n\t\t\t\tkey: new PluginKey(\"filterInvalidContent\"),\n\t\t\t\tfilterTransaction: (transaction) => {\n\t\t\t\t\tif (!isChangeOrigin(transaction)) return true;\n\t\t\t\t\tif (this.storage.isDisabled) return false;\n\t\t\t\t\tif (!transaction.docChanged) return true;\n\t\t\t\t\ttry {\n\t\t\t\t\t\ttransaction.doc.check();\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tthis.storage.isDisabled = true;\n\t\t\t\t\t\tthis.editor.emit(\"contentError\", {\n\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t\teditor: this.editor,\n\t\t\t\t\t\t\tdisableCollaboration: () => {\n\t\t\t\t\t\t\t\tvar _fragment$doc;\n\t\t\t\t\t\t\t\t(_fragment$doc = fragment.doc) === null || _fragment$doc === void 0 || _fragment$doc.destroy();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t].filter(Boolean);\n\t}\n});\n//#endregion\n//#region src/index.ts\nvar src_default = Collaboration;\n//#endregion\nexport { Collaboration, CollaborationMappablePosition, createMappablePosition, src_default as default, getUpdatedPosition, isChangeOrigin };\n\n//# sourceMappingURL=index.js.map","import { Extension } from \"@tiptap/core\";\nimport { Plugin, PluginKey } from \"@tiptap/pm/state\";\nimport { defaultSelectionBuilder, yCursorPlugin } from \"@tiptap/y-tiptap\";\n//#region src/lib/isValidColor.ts\nfunction isValidColor(color) {\n\treturn typeof color === \"string\" && /^#[0-9a-fA-F]{6}$/.test(color);\n}\n//#endregion\n//#region src/collaboration-caret.ts\nconst awarenessStatesToArray = (states) => {\n\treturn Array.from(states.entries()).map(([key, value]) => {\n\t\tif (value && value.user) return {\n\t\t\tclientId: key,\n\t\t\t...value.user\n\t\t};\n\t\treturn { clientId: key };\n\t});\n};\nconst defaultOnUpdate = () => null;\nconst sanitizeUserColor = (user) => ({\n\t...user,\n\tcolor: isValidColor(user.color) ? user.color : \"transparent\"\n});\n/**\n* This extension allows you to add collaboration carets to your editor.\n* @see https://tiptap.dev/api/extensions/collaboration-caret\n*/\nconst CollaborationCaret = Extension.create({\n\tname: \"collaborationCaret\",\n\tpriority: 999,\n\taddOptions() {\n\t\treturn {\n\t\t\tprovider: null,\n\t\t\tuser: {\n\t\t\t\tname: null,\n\t\t\t\tcolor: null\n\t\t\t},\n\t\t\trender: (user) => {\n\t\t\t\tconst cursor = document.createElement(\"span\");\n\t\t\t\tconst { color } = sanitizeUserColor(user);\n\t\t\t\tcursor.classList.add(\"collaboration-carets__caret\");\n\t\t\t\tcursor.style.borderColor = color;\n\t\t\t\tconst label = document.createElement(\"div\");\n\t\t\t\tlabel.classList.add(\"collaboration-carets__label\");\n\t\t\t\tlabel.style.backgroundColor = color;\n\t\t\t\tlabel.insertBefore(document.createTextNode(user.name), null);\n\t\t\t\tcursor.insertBefore(label, null);\n\t\t\t\treturn cursor;\n\t\t\t},\n\t\t\tselectionRender: (user) => {\n\t\t\t\tif (!isValidColor(user.color)) return {};\n\t\t\t\treturn defaultSelectionBuilder(user);\n\t\t\t},\n\t\t\tonUpdate: defaultOnUpdate\n\t\t};\n\t},\n\tonCreate() {\n\t\tif (this.options.onUpdate !== defaultOnUpdate) console.warn(\"[tiptap warn]: DEPRECATED: The \\\"onUpdate\\\" option is deprecated. Please use `editor.storage.collaborationCaret.users` instead. Read more: https://tiptap.dev/api/extensions/collaboration-caret\");\n\t\tif (!this.options.provider) throw new Error(\"The \\\"provider\\\" option is required for the CollaborationCaret extension\");\n\t},\n\taddStorage() {\n\t\treturn { users: [] };\n\t},\n\taddCommands() {\n\t\treturn {\n\t\t\tupdateUser: (attributes) => () => {\n\t\t\t\tthis.options.provider.awareness.setLocalStateField(\"user\", attributes);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tuser: (attributes) => ({ editor }) => {\n\t\t\t\tconsole.warn(\"[tiptap warn]: DEPRECATED: The \\\"user\\\" command is deprecated. Please use \\\"updateUser\\\" instead. Read more: https://tiptap.dev/api/extensions/collaboration-caret\");\n\t\t\t\treturn editor.commands.updateUser(attributes);\n\t\t\t}\n\t\t};\n\t},\n\taddProseMirrorPlugins() {\n\t\tconst { provider } = this.options;\n\t\tconst storage = this.storage;\n\t\tconst user = this.options.user;\n\t\treturn [new Plugin({\n\t\t\tkey: new PluginKey(\"collaborationCaretAwarenessListener\"),\n\t\t\tview: () => {\n\t\t\t\tconst onAwarenessUpdate = () => {\n\t\t\t\t\tstorage.users = awarenessStatesToArray(provider.awareness.states);\n\t\t\t\t};\n\t\t\t\tprovider.awareness.setLocalStateField(\"user\", user);\n\t\t\t\tstorage.users = awarenessStatesToArray(provider.awareness.states);\n\t\t\t\tprovider.awareness.on(\"update\", onAwarenessUpdate);\n\t\t\t\treturn { destroy: () => {\n\t\t\t\t\tprovider.awareness.off(\"update\", onAwarenessUpdate);\n\t\t\t\t\tstorage.users = [];\n\t\t\t\t} };\n\t\t\t}\n\t\t}), yCursorPlugin(provider.awareness, {\n\t\t\tcursorBuilder: (currentUser) => this.options.render(sanitizeUserColor(currentUser)),\n\t\t\tselectionBuilder: (currentUser) => this.options.selectionRender(sanitizeUserColor(currentUser))\n\t\t})];\n\t}\n});\n//#endregion\n//#region src/index.ts\nvar src_default = CollaborationCaret;\n//#endregion\nexport { CollaborationCaret, src_default as default };\n\n//# sourceMappingURL=index.js.map","import { Node } from \"@tiptap/core\";\n//#region src/document.ts\n/**\n* The default document node which represents the top level node of the editor.\n* @see https://tiptap.dev/api/nodes/document\n*/\nconst Document = Node.create({\n\tname: \"doc\",\n\ttopNode: true,\n\tcontent: \"block+\",\n\trenderMarkdown: (node, h) => {\n\t\tif (!node.content) return \"\";\n\t\treturn h.renderChildren(node.content, \"\\n\\n\");\n\t}\n});\n//#endregion\n//#region src/index.ts\nvar src_default = Document;\n//#endregion\nexport { Document, src_default as default };\n\n//# sourceMappingURL=index.js.map","import { Mark, getStyleProperty, markInputRule, markPasteRule, mergeAttributes } from \"@tiptap/core\";\n//#region src/highlight.ts\n/**\n* Matches a highlight to a ==highlight== on input.\n*/\nconst inputRegex = /(?:^|\\s)(==(?!\\s+==)((?:[^=]+))==(?!\\s+==))$/;\n/**\n* Matches a highlight to a ==highlight== on paste.\n*/\nconst pasteRegex = /(?:^|\\s)(==(?!\\s+==)((?:[^=]+))==(?!\\s+==))/g;\n/**\n* This extension allows you to highlight text.\n* @see https://www.tiptap.dev/api/marks/highlight\n*/\nconst Highlight = Mark.create({\n\tname: \"highlight\",\n\taddOptions() {\n\t\treturn {\n\t\t\tmulticolor: false,\n\t\t\tHTMLAttributes: {}\n\t\t};\n\t},\n\taddAttributes() {\n\t\tif (!this.options.multicolor) return {};\n\t\treturn { color: {\n\t\t\tdefault: null,\n\t\t\tparseHTML: (element) => element.getAttribute(\"data-color\") || getStyleProperty(element, \"background-color\") || element.style.backgroundColor,\n\t\t\trenderHTML: (attributes) => {\n\t\t\t\tif (!attributes.color) return {};\n\t\t\t\treturn {\n\t\t\t\t\t\"data-color\": attributes.color,\n\t\t\t\t\tstyle: `background-color: ${attributes.color}; color: inherit`\n\t\t\t\t};\n\t\t\t}\n\t\t} };\n\t},\n\tparseHTML() {\n\t\treturn [{ tag: \"mark\" }];\n\t},\n\trenderHTML({ HTMLAttributes }) {\n\t\treturn [\n\t\t\t\"mark\",\n\t\t\tmergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n\t\t\t0\n\t\t];\n\t},\n\trenderMarkdown: (node, h) => {\n\t\treturn `==${h.renderChildren(node)}==`;\n\t},\n\tparseMarkdown: (token, h) => {\n\t\treturn h.applyMark(\"highlight\", h.parseInline(token.tokens || []));\n\t},\n\tmarkdownTokenizer: {\n\t\tname: \"highlight\",\n\t\tlevel: \"inline\",\n\t\tstart: (src) => src.indexOf(\"==\"),\n\t\ttokenize(src, _, h) {\n\t\t\tconst match = /^(==)([^=]+)(==)/.exec(src);\n\t\t\tif (match) {\n\t\t\t\tconst innerContent = match[2].trim();\n\t\t\t\tconst children = h.inlineTokens(innerContent);\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"highlight\",\n\t\t\t\t\traw: match[0],\n\t\t\t\t\ttext: innerContent,\n\t\t\t\t\ttokens: children\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t},\n\taddCommands() {\n\t\treturn {\n\t\t\tsetHighlight: (attributes) => ({ commands }) => {\n\t\t\t\treturn commands.setMark(this.name, attributes);\n\t\t\t},\n\t\t\ttoggleHighlight: (attributes) => ({ commands }) => {\n\t\t\t\treturn commands.toggleMark(this.name, attributes);\n\t\t\t},\n\t\t\tunsetHighlight: () => ({ commands }) => {\n\t\t\t\treturn commands.unsetMark(this.name);\n\t\t\t}\n\t\t};\n\t},\n\taddKeyboardShortcuts() {\n\t\treturn { \"Mod-Shift-h\": () => this.editor.commands.toggleHighlight() };\n\t},\n\taddInputRules() {\n\t\treturn [markInputRule({\n\t\t\tfind: inputRegex,\n\t\t\ttype: this.type\n\t\t})];\n\t},\n\taddPasteRules() {\n\t\treturn [markPasteRule({\n\t\t\tfind: pasteRegex,\n\t\t\ttype: this.type\n\t\t})];\n\t}\n});\n//#endregion\n//#region src/index.ts\nvar src_default = Highlight;\n//#endregion\nexport { Highlight, src_default as default, inputRegex, pasteRegex };\n\n//# sourceMappingURL=index.js.map","import { t as __exportAll } from \"./rolldown-runtime-D7D4PA-g.js\";\nimport { Extension, Node, getNodeAtPosition, getNodeType, getPreviousBlockSibling, getRenderedAttributes, isAtEndOfNode, isAtStartOfNode, isNodeActive, mergeAttributes, parseIndentedBlocks, renderNestedMarkdownContent, wrappingInputRule } from \"@tiptap/core\";\nimport { Fragment } from \"@tiptap/pm/model\";\nimport { Plugin, TextSelection } from \"@tiptap/pm/state\";\n//#region src/bullet-list/bullet-list.ts\nconst ListItemName$1 = \"listItem\";\nconst TextStyleName$1 = \"textStyle\";\n/**\n* Matches a bullet list to a dash or asterisk.\n*/\nconst bulletListInputRegex = /^\\s*([-+*])\\s$/;\n/**\n* This extension allows you to create bullet lists.\n* This requires the ListItem extension\n* @see https://tiptap.dev/api/nodes/bullet-list\n* @see https://tiptap.dev/api/nodes/list-item.\n*/\nconst BulletList = Node.create({\n\tname: \"bulletList\",\n\taddOptions() {\n\t\treturn {\n\t\t\titemTypeName: \"listItem\",\n\t\t\tHTMLAttributes: {},\n\t\t\tkeepMarks: false,\n\t\t\tkeepAttributes: false\n\t\t};\n\t},\n\tgroup: \"block list\",\n\tcontent() {\n\t\treturn `${this.options.itemTypeName}+`;\n\t},\n\tparseHTML() {\n\t\treturn [{ tag: \"ul\" }];\n\t},\n\trenderHTML({ HTMLAttributes }) {\n\t\treturn [\n\t\t\t\"ul\",\n\t\t\tmergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n\t\t\t0\n\t\t];\n\t},\n\tmarkdownTokenName: \"list\",\n\tparseMarkdown: (token, helpers) => {\n\t\tif (token.type !== \"list\" || token.ordered) return [];\n\t\treturn {\n\t\t\ttype: \"bulletList\",\n\t\t\tcontent: token.items ? helpers.parseChildren(token.items) : []\n\t\t};\n\t},\n\trenderMarkdown: (node, h) => {\n\t\tif (!node.content) return \"\";\n\t\treturn h.renderChildren(node.content, \"\\n\");\n\t},\n\tmarkdownOptions: { indentsContent: true },\n\taddCommands() {\n\t\treturn { toggleBulletList: () => ({ commands, chain }) => {\n\t\t\tif (this.options.keepAttributes) return chain().toggleList(this.name, this.options.itemTypeName, this.options.keepMarks).updateAttributes(ListItemName$1, this.editor.getAttributes(TextStyleName$1)).run();\n\t\t\treturn commands.toggleList(this.name, this.options.itemTypeName, this.options.keepMarks);\n\t\t} };\n\t},\n\taddKeyboardShortcuts() {\n\t\treturn { \"Mod-Shift-8\": () => this.editor.commands.toggleBulletList() };\n\t},\n\taddInputRules() {\n\t\tlet inputRule = wrappingInputRule({\n\t\t\tfind: bulletListInputRegex,\n\t\t\ttype: this.type\n\t\t});\n\t\tif (this.options.keepMarks || this.options.keepAttributes) inputRule = wrappingInputRule({\n\t\t\tfind: bulletListInputRegex,\n\t\t\ttype: this.type,\n\t\t\tkeepMarks: this.options.keepMarks,\n\t\t\tkeepAttributes: this.options.keepAttributes,\n\t\t\tgetAttributes: () => {\n\t\t\t\treturn this.editor.getAttributes(TextStyleName$1);\n\t\t\t},\n\t\t\teditor: this.editor\n\t\t});\n\t\treturn [inputRule];\n\t}\n});\n//#endregion\n//#region src/helpers/getBranchingNestedListAtCursor.ts\n/**\n* Resolves a branching nested list immediately after the cursor when the selection is\n* collapsed at the end of a textblock inside a list item.\n*\n* @param state - The editor state to inspect.\n* @param itemName - The list item node name (for example `listItem` or `taskItem`).\n* @param wrapperNames - List wrapper node names (for example `bulletList` and `orderedList`).\n* @returns Resolved positions and nodes for hoisting, or `null` when not applicable.\n*\n* @example\n* ```ts\n* const context = getBranchingNestedListAtCursor(editor.state, 'listItem', [\n* 'bulletList',\n* 'orderedList',\n* ])\n*\n* if (context) {\n* // cursor is at the end of Item 1 before a branching nested sublist\n* }\n* ```\n*/\nconst getBranchingNestedListAtCursor = (state, itemName, wrapperNames) => {\n\tconst { selection } = state;\n\tif (!selection.empty) return null;\n\tconst { $from } = selection;\n\tif (!$from.parent.isTextblock) return null;\n\tif ($from.parentOffset !== $from.parent.content.size) return null;\n\tlet listItemDepth = -1;\n\tfor (let depth = $from.depth; depth > 0; depth -= 1) if ($from.node(depth).type.name === itemName) {\n\t\tlistItemDepth = depth;\n\t\tbreak;\n\t}\n\tif (listItemDepth < 0) return null;\n\tconst listItem = $from.node(listItemDepth);\n\tconst indexInListItem = $from.index(listItemDepth);\n\tif (indexInListItem + 1 >= listItem.childCount) return null;\n\tconst nextChild = listItem.child(indexInListItem + 1);\n\tif (!wrapperNames.includes(nextChild.type.name)) return null;\n\tconst itemType = state.schema.nodes[itemName];\n\tlet hasBranching = false;\n\tnextChild.forEach((child) => {\n\t\tif (child.type === itemType && child.childCount > 1) hasBranching = true;\n\t});\n\tif (!hasBranching) return null;\n\tconst nodeAfter = state.doc.resolve($from.after()).nodeAfter;\n\tif (!nodeAfter || !wrapperNames.includes(nodeAfter.type.name)) return null;\n\tconst items = [];\n\tnodeAfter.forEach((child) => {\n\t\titems.push(child);\n\t});\n\tif (items.length === 0) return null;\n\treturn {\n\t\tlistItemDepth,\n\t\tnestedList: nodeAfter,\n\t\tnestedListPos: $from.after(),\n\t\tinsertPos: $from.after(listItemDepth),\n\t\titems\n\t};\n};\n//#endregion\n//#region src/helpers/hoistBranchingNestedList.ts\n/**\n* Hoists all list items from a branching nested list after the cursor into the parent list.\n*\n* Use this when `joinForward` cannot restructure a nested list that contains list items\n* with sublists (see issue #6906).\n*\n* @param state - The editor state to transform.\n* @param dispatch - Optional dispatch function for the transaction.\n* @param itemName - The list item node name (for example `listItem` or `taskItem`).\n* @param wrapperNames - List wrapper node names (for example `bulletList` and `orderedList`).\n* @returns `true` when the nested list was hoisted, otherwise `false`.\n*\n* @example\n* ```ts\n* // Cursor at the end of \"Item 1\" before a nested list with branching items.\n* hoistBranchingNestedList(editor.state, editor.view.dispatch, 'listItem', [\n* 'bulletList',\n* 'orderedList',\n* ])\n* ```\n*/\nconst hoistBranchingNestedList = (state, dispatch, itemName, wrapperNames) => {\n\tconst context = getBranchingNestedListAtCursor(state, itemName, wrapperNames);\n\tif (!context) return false;\n\tconst { selection } = state;\n\tconst { nestedList, nestedListPos, insertPos, items } = context;\n\tconst tr = state.tr;\n\ttr.delete(nestedListPos, nestedListPos + nestedList.nodeSize);\n\tconst mappedInsertPos = tr.mapping.map(insertPos);\n\ttr.insert(mappedInsertPos, Fragment.from(items));\n\ttr.setSelection(selection.map(tr.doc, tr.mapping));\n\tif (dispatch) dispatch(tr);\n\treturn true;\n};\n//#endregion\n//#region src/helpers/handleDeleteBranchingNestedList.ts\n/**\n* Handles Delete for a list item when a branching nested sublist follows the cursor.\n*\n* @param editor - The editor instance whose state should be updated.\n* @param itemName - The list item node name (for example `listItem` or `taskItem`).\n* @param wrapperNames - List wrapper node names (for example `bulletList` and `orderedList`).\n* @returns `true` when the nested list was hoisted, otherwise `false`.\n*\n* @example\n* ```ts\n* Delete: () =>\n* handleDeleteBranchingNestedList(editor, 'listItem', ['bulletList', 'orderedList']),\n* ```\n*/\nconst handleDeleteBranchingNestedList = (editor, itemName, wrapperNames) => {\n\treturn hoistBranchingNestedList(editor.state, editor.view.dispatch, itemName, wrapperNames);\n};\n//#endregion\n//#region src/helpers/createBranchingListDeleteKeymap.ts\n/**\n* Creates a high-priority keymap extension that handles Delete for branching nested lists.\n* Kept separate from the list item node so Enter/Tab shortcuts keep their default priority.\n*/\nconst createBranchingListDeleteKeymap = (itemName, wrapperNames) => {\n\treturn Extension.create({\n\t\tname: `${itemName}BranchingDeleteKeymap`,\n\t\tpriority: 101,\n\t\taddKeyboardShortcuts() {\n\t\t\tconst handleDelete = () => handleDeleteBranchingNestedList(this.editor, itemName, wrapperNames);\n\t\t\treturn {\n\t\t\t\tDelete: handleDelete,\n\t\t\t\t\"Mod-Delete\": handleDelete\n\t\t\t};\n\t\t}\n\t});\n};\n//#endregion\n//#region src/ordered-list/roman.ts\nconst ROMAN_NUMERALS = [\n\t[1e3, \"m\"],\n\t[900, \"cm\"],\n\t[500, \"d\"],\n\t[400, \"cd\"],\n\t[100, \"c\"],\n\t[90, \"xc\"],\n\t[50, \"l\"],\n\t[40, \"xl\"],\n\t[10, \"x\"],\n\t[9, \"ix\"],\n\t[5, \"v\"],\n\t[4, \"iv\"],\n\t[1, \"i\"]\n];\nconst ALPHA_NUMERALS = \"abcdefghijklmnopqrstuvwxyz\";\n/**\n* Marker segment for ordered list lines: numeric, roman, or 1–2 letter alpha.\n* Roman is matched before alpha so \"iii\" is roman; invalid romans like \"aa\" fall through to alpha.\n*/\nconst ORDERED_LIST_MARKER_PATTERN = String.raw`\\d+|[ivxlcdmIVXLCDM]+|${\"[a-zA-Z]{1,2}\"}`;\n/**\n* Convert a number to lowercase roman numerals.\n* @example toRoman(1) // 'i'\n* @example toRoman(4) // 'iv'\n*/\nfunction toRoman(num) {\n\tlet remaining = num;\n\tlet result = \"\";\n\tfor (const [value, numeral] of ROMAN_NUMERALS) while (remaining >= value) {\n\t\tresult += numeral;\n\t\tremaining -= value;\n\t}\n\treturn result;\n}\n/**\n* Convert a number to uppercase roman numerals.\n* @example toRomanUpper(1) // 'I'\n* @example toRomanUpper(4) // 'IV'\n*/\nfunction toRomanUpper(num) {\n\treturn toRoman(num).toUpperCase();\n}\nfunction fromRoman(roman) {\n\tconst lower = roman.toLowerCase();\n\tlet index = 0;\n\tlet result = 0;\n\twhile (index < lower.length) {\n\t\tlet matched = false;\n\t\tfor (const [value, numeral] of ROMAN_NUMERALS) if (lower.startsWith(numeral, index)) {\n\t\t\tresult += value;\n\t\t\tindex += numeral.length;\n\t\t\tmatched = true;\n\t\t\tbreak;\n\t\t}\n\t\tif (!matched) return 0;\n\t}\n\treturn result;\n}\nfunction isValidRoman(marker) {\n\tif (!/^[ivxlcdmIVXLCDM]+$/.test(marker)) return false;\n\tconst value = fromRoman(marker);\n\tif (value <= 0) return false;\n\treturn (marker === marker.toLowerCase() ? toRoman(value) : toRomanUpper(value)) === marker;\n}\nfunction fromAlpha(marker) {\n\tconst lower = marker.toLowerCase();\n\tif (lower.length === 1) return lower.charCodeAt(0) - \"a\".charCodeAt(0) + 1;\n\tif (lower.length === 2) {\n\t\tconst first = lower.charCodeAt(0) - \"a\".charCodeAt(0);\n\t\tconst second = lower.charCodeAt(1) - \"a\".charCodeAt(0);\n\t\treturn (first + 1) * 26 + second + 1;\n\t}\n\treturn 0;\n}\nfunction toRomanAlpha(num) {\n\tif (num <= 26) return ALPHA_NUMERALS[num - 1];\n\tconst first = Math.floor((num - 1) / 26) - 1;\n\tconst second = (num - 1) % 26;\n\tif (first < 0) return ALPHA_NUMERALS[second];\n\treturn ALPHA_NUMERALS[first] + ALPHA_NUMERALS[second];\n}\n/**\n* Extract the list marker type from a marker string.\n* Supports \"1\", \"a\", \"A\", \"i\", \"I\" marker styles.\n*\n* @param marker The text content of the list marker (e.g. \"a\", \"1\", \"iii\", \"b\")\n* @returns The normalized type string, or undefined for default numeric type\n*/\nfunction detectMarkerType(marker) {\n\tif (!marker || /^\\d+$/.test(marker)) return;\n\tif (isValidRoman(marker)) return marker === marker.toLowerCase() ? \"i\" : \"I\";\n\tif (/^[a-z]{1,2}$/.test(marker)) return \"a\";\n\tif (/^[A-Z]{1,2}$/.test(marker)) return \"A\";\n}\n/**\n* Convert a list marker string to its numeric start position.\n*\n* @param marker The text content of the list marker (e.g. \"3\", \"b\", \"II\")\n* @returns The 1-based start value for the ordered list\n*/\nfunction markerToStart(marker) {\n\tif (/^\\d+$/.test(marker)) return parseInt(marker, 10);\n\tconst type = detectMarkerType(marker);\n\tif (type === \"i\" || type === \"I\") return fromRoman(marker);\n\tif (type === \"a\" || type === \"A\") {\n\t\tconst start = fromAlpha(marker);\n\t\treturn start > 0 ? start : 1;\n\t}\n\tconst parsed = parseInt(marker, 10);\n\treturn Number.isNaN(parsed) ? 1 : parsed;\n}\nfunction startToMarker(type, start) {\n\tif (type === \"numeric\") return String(start);\n\tswitch (type) {\n\t\tcase \"a\": return toRomanAlpha(start);\n\t\tcase \"A\": return toRomanAlpha(start).toUpperCase();\n\t\tcase \"i\": return toRoman(start);\n\t\tcase \"I\": return toRomanUpper(start);\n\t\tdefault: return String(start);\n\t}\n}\n/**\n* Returns true when all markers share the same style and increment by 1.\n* Style is inferred from the first marker so ambiguous letters (e.g. \"c\", \"i\")\n* are not re-classified differently on later lines.\n*/\nfunction areOrderedListMarkersSequential(markers) {\n\tvar _detectMarkerType;\n\tif (markers.length === 0) return false;\n\tconst firstType = (_detectMarkerType = detectMarkerType(markers[0])) !== null && _detectMarkerType !== void 0 ? _detectMarkerType : \"numeric\";\n\tconst firstStart = markerToStart(markers[0]);\n\tif (firstStart < 1) return false;\n\tfor (let i = 0; i < markers.length; i++) {\n\t\tconst expected = startToMarker(firstType, firstStart + i);\n\t\tif (markers[i] !== expected) return false;\n\t}\n\treturn true;\n}\n/**\n* Parse a list marker into HTML ordered-list attrs (type + start).\n*/\nfunction parseListMarker(marker) {\n\treturn {\n\t\ttype: detectMarkerType(marker),\n\t\tstart: markerToStart(marker)\n\t};\n}\n/**\n* Build orderedList node attrs from the first list item marker.\n*/\nfunction buildOrderedListAttrsFromMarker(marker) {\n\tconst { type, start } = parseListMarker(marker);\n\tconst attrs = {};\n\tif (type) attrs.type = type;\n\tif (start !== 1) attrs.start = start;\n\treturn attrs;\n}\n/**\n* Returns the list marker prefix for a given item at a given index.\n*\n* @param type The list type attribute (e.g. \"a\", \"A\", \"i\", \"I\", null/undefined for default)\n* @param index The zero-based index of the list item\n* @param separator The separator to use (default: \". \")\n* @returns The marker string (e.g. \"a. \", \"I. \", \"1. \")\n*/\nfunction getListMarker(type, index, separator = \". \") {\n\tconst position = index + 1;\n\tif (!type || type === \"1\") return `${position}${separator}`;\n\tswitch (type) {\n\t\tcase \"a\": return `${toRomanAlpha(position)}${separator}`;\n\t\tcase \"A\": return `${toRomanAlpha(position).toUpperCase()}${separator}`;\n\t\tcase \"i\": return `${toRoman(position)}${separator}`;\n\t\tcase \"I\": return `${toRomanUpper(position)}${separator}`;\n\t\tdefault: return `${position}${separator}`;\n\t}\n}\n//#endregion\n//#region src/item/list-item.ts\nfunction isSameLineOrderedListToken(token) {\n\tvar _token$tokens, _token$tokens2;\n\tconst nestedToken = (_token$tokens = token.tokens) === null || _token$tokens === void 0 ? void 0 : _token$tokens[0];\n\treturn Boolean(token.text && ((_token$tokens2 = token.tokens) === null || _token$tokens2 === void 0 ? void 0 : _token$tokens2.length) === 1 && (nestedToken === null || nestedToken === void 0 ? void 0 : nestedToken.type) === \"list\" && nestedToken.ordered && nestedToken.raw === token.text);\n}\nfunction parseSameLineOrderedListText(text, helpers) {\n\tif (helpers.tokenizeInline) return helpers.parseInline(helpers.tokenizeInline(text));\n\treturn helpers.parseInline([{\n\t\ttype: \"text\",\n\t\traw: text,\n\t\ttext\n\t}]);\n}\n/**\n* This extension allows you to create list items.\n* @see https://www.tiptap.dev/api/nodes/list-item\n*/\nconst ListItem = Node.create({\n\tname: \"listItem\",\n\taddOptions() {\n\t\treturn {\n\t\t\tHTMLAttributes: {},\n\t\t\tbulletListTypeName: \"bulletList\",\n\t\t\torderedListTypeName: \"orderedList\"\n\t\t};\n\t},\n\tcontent: \"paragraph block*\",\n\tdefining: true,\n\tparseHTML() {\n\t\treturn [{ tag: \"li\" }];\n\t},\n\trenderHTML({ HTMLAttributes }) {\n\t\treturn [\n\t\t\t\"li\",\n\t\t\tmergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n\t\t\t0\n\t\t];\n\t},\n\tmarkdownTokenName: \"list_item\",\n\tparseMarkdown: (token, helpers) => {\n\t\tvar _helpers$parseBlockCh;\n\t\tif (token.type !== \"list_item\") return [];\n\t\tconst parseBlockChildren = (_helpers$parseBlockCh = helpers.parseBlockChildren) !== null && _helpers$parseBlockCh !== void 0 ? _helpers$parseBlockCh : helpers.parseChildren;\n\t\tlet content = [];\n\t\tif (token.tokens && token.tokens.length > 0) {\n\t\t\tif (isSameLineOrderedListToken(token)) return {\n\t\t\t\ttype: \"listItem\",\n\t\t\t\tcontent: [{\n\t\t\t\t\ttype: \"paragraph\",\n\t\t\t\t\tcontent: parseSameLineOrderedListText(token.text || \"\", helpers)\n\t\t\t\t}]\n\t\t\t};\n\t\t\tif (token.tokens.some((t) => t.type === \"paragraph\")) content = parseBlockChildren(token.tokens);\n\t\t\telse {\n\t\t\t\tconst firstToken = token.tokens[0];\n\t\t\t\tif (firstToken && firstToken.type === \"text\" && firstToken.tokens && firstToken.tokens.length > 0) {\n\t\t\t\t\tcontent = [{\n\t\t\t\t\t\ttype: \"paragraph\",\n\t\t\t\t\t\tcontent: helpers.parseInline(firstToken.tokens)\n\t\t\t\t\t}];\n\t\t\t\t\tif (token.tokens.length > 1) {\n\t\t\t\t\t\tconst additionalContent = parseBlockChildren(token.tokens.slice(1));\n\t\t\t\t\t\tcontent.push(...additionalContent);\n\t\t\t\t\t}\n\t\t\t\t} else content = parseBlockChildren(token.tokens);\n\t\t\t}\n\t\t}\n\t\tif (content.length === 0) content = [{\n\t\t\ttype: \"paragraph\",\n\t\t\tcontent: []\n\t\t}];\n\t\treturn {\n\t\t\ttype: \"listItem\",\n\t\t\tcontent\n\t\t};\n\t},\n\trenderMarkdown: (node, h, ctx) => {\n\t\treturn renderNestedMarkdownContent(node, h, (context) => {\n\t\t\tif (context.parentType === \"bulletList\") return \"- \";\n\t\t\tif (context.parentType === \"orderedList\") {\n\t\t\t\tvar _context$meta, _context$meta2;\n\t\t\t\tconst start = ((_context$meta = context.meta) === null || _context$meta === void 0 || (_context$meta = _context$meta.parentAttrs) === null || _context$meta === void 0 ? void 0 : _context$meta.start) || 1;\n\t\t\t\treturn getListMarker((_context$meta2 = context.meta) === null || _context$meta2 === void 0 || (_context$meta2 = _context$meta2.parentAttrs) === null || _context$meta2 === void 0 ? void 0 : _context$meta2.type, start - 1 + (context.index || 0), \". \");\n\t\t\t}\n\t\t\treturn \"- \";\n\t\t}, ctx, { alignNestedToPrefix: (ctx === null || ctx === void 0 ? void 0 : ctx.parentType) === \"orderedList\" });\n\t},\n\taddExtensions() {\n\t\treturn [createBranchingListDeleteKeymap(this.name, [this.options.bulletListTypeName, this.options.orderedListTypeName])];\n\t},\n\taddKeyboardShortcuts() {\n\t\treturn {\n\t\t\tEnter: () => this.editor.commands.splitListItem(this.name),\n\t\t\tTab: () => this.editor.commands.sinkListItem(this.name),\n\t\t\t\"Shift-Tab\": () => this.editor.commands.liftListItem(this.name)\n\t\t};\n\t}\n});\n//#endregion\n//#region src/keymap/listHelpers/findListItemPos.ts\nconst findListItemPos = (typeOrName, state) => {\n\tconst { $from } = state.selection;\n\tconst nodeType = getNodeType(typeOrName, state.schema);\n\tlet currentNode = null;\n\tlet currentDepth = $from.depth;\n\tlet currentPos = $from.pos;\n\tlet targetDepth = null;\n\twhile (currentDepth > 0 && targetDepth === null) {\n\t\tcurrentNode = $from.node(currentDepth);\n\t\tif (currentNode.type === nodeType) targetDepth = currentDepth;\n\t\telse {\n\t\t\tcurrentDepth -= 1;\n\t\t\tcurrentPos -= 1;\n\t\t}\n\t}\n\tif (targetDepth === null) return null;\n\treturn {\n\t\t$pos: state.doc.resolve(currentPos),\n\t\tdepth: targetDepth\n\t};\n};\n//#endregion\n//#region src/keymap/listHelpers/getNextListDepth.ts\nconst getNextListDepth = (typeOrName, state) => {\n\tconst listItemPos = findListItemPos(typeOrName, state);\n\tif (!listItemPos) return false;\n\tconst [, depth] = getNodeAtPosition(state, typeOrName, listItemPos.$pos.pos + 4);\n\treturn depth;\n};\n//#endregion\n//#region src/keymap/listHelpers/hasListBefore.ts\nconst hasListBefore = (editorState, name, parentListTypes) => {\n\tconst { $anchor } = editorState.selection;\n\tconst previousNodePos = Math.max(0, $anchor.pos - 2);\n\tconst previousNode = editorState.doc.resolve(previousNodePos).node();\n\tif (!previousNode || !parentListTypes.includes(previousNode.type.name)) return false;\n\treturn true;\n};\n//#endregion\n//#region src/keymap/listHelpers/handleBackspace.ts\nconst handleBackspace = (editor, name, parentListTypes) => {\n\tif (editor.commands.undoInputRule()) return true;\n\tif (editor.state.selection.from !== editor.state.selection.to) return false;\n\tif (!isNodeActive(editor.state, name) && hasListBefore(editor.state, name, parentListTypes)) {\n\t\tconst { $anchor } = editor.state.selection;\n\t\tconst $listPos = editor.state.doc.resolve($anchor.before() - 1);\n\t\tconst listDescendants = [];\n\t\t$listPos.node().descendants((node, pos) => {\n\t\t\tif (node.type.name === name) listDescendants.push({\n\t\t\t\tnode,\n\t\t\t\tpos\n\t\t\t});\n\t\t});\n\t\tconst lastItem = listDescendants.at(-1);\n\t\tif (!lastItem) return false;\n\t\tconst $lastItemPos = editor.state.doc.resolve($listPos.start() + lastItem.pos + 1);\n\t\treturn editor.chain().cut({\n\t\t\tfrom: $anchor.start() - 1,\n\t\t\tto: $anchor.end() + 1\n\t\t}, $lastItemPos.end()).joinForward().run();\n\t}\n\tif (!isNodeActive(editor.state, name)) return false;\n\tif (!isAtStartOfNode(editor.state)) return false;\n\tconst { $from } = editor.state.selection;\n\tconst itemDepth = $from.depth - 1;\n\tif ($from.node(itemDepth).type !== editor.schema.nodes[name] || $from.index(itemDepth) !== 0) return false;\n\treturn editor.chain().liftListItem(name).run();\n};\n//#endregion\n//#region src/keymap/listHelpers/nextListIsDeeper.ts\nconst nextListIsDeeper = (typeOrName, state) => {\n\tconst listDepth = getNextListDepth(typeOrName, state);\n\tconst listItemPos = findListItemPos(typeOrName, state);\n\tif (!listItemPos || !listDepth) return false;\n\tif (listDepth > listItemPos.depth) return true;\n\treturn false;\n};\n//#endregion\n//#region src/keymap/listHelpers/nextListIsHigher.ts\nconst nextListIsHigher = (typeOrName, state) => {\n\tconst listDepth = getNextListDepth(typeOrName, state);\n\tconst listItemPos = findListItemPos(typeOrName, state);\n\tif (!listItemPos || !listDepth) return false;\n\tif (listDepth < listItemPos.depth) return true;\n\treturn false;\n};\n//#endregion\n//#region src/keymap/listHelpers/handleDelete.ts\nconst handleDelete = (editor, name) => {\n\tif (!isNodeActive(editor.state, name)) return false;\n\tif (!isAtEndOfNode(editor.state, name)) return false;\n\tconst { selection } = editor.state;\n\tconst { $from, $to } = selection;\n\tif (!selection.empty && $from.sameParent($to)) return false;\n\tif (nextListIsDeeper(name, editor.state)) return editor.chain().focus(editor.state.selection.from + 4).lift(name).joinBackward().run();\n\tif (nextListIsHigher(name, editor.state)) return editor.chain().joinForward().joinBackward().run();\n\treturn editor.commands.joinItemForward();\n};\n//#endregion\n//#region src/keymap/listHelpers/handleTab.ts\nconst handleTab = (editor, name, parentListTypes) => {\n\tconst { state } = editor;\n\tconst { selection } = state;\n\tif (!selection.empty) return false;\n\tconst { $from } = selection;\n\tif ($from.parentOffset !== 0) return false;\n\tif (!$from.parent.isTextblock) return false;\n\tif (isNodeActive(state, name)) return false;\n\tconst previous = getPreviousBlockSibling($from);\n\tif (!previous || !parentListTypes.includes(previous.type.name)) return false;\n\tconst lastItem = previous.lastChild;\n\tif (!lastItem || lastItem.type.name !== name) return false;\n\tconst block = $from.parent;\n\tif (!lastItem.canReplace(lastItem.childCount, lastItem.childCount, Fragment.from(block))) return false;\n\tconst blockStart = $from.before();\n\tconst blockEnd = $from.after();\n\tconst insideLastItemEnd = blockStart - 2;\n\treturn editor.commands.command(({ tr, dispatch }) => {\n\t\tif (dispatch) {\n\t\t\ttr.delete(blockStart, blockEnd).insert(insideLastItemEnd, Fragment.from(block));\n\t\t\ttr.setSelection(TextSelection.create(tr.doc, insideLastItemEnd + 1));\n\t\t\ttr.scrollIntoView();\n\t\t}\n\t\treturn true;\n\t});\n};\n//#endregion\n//#region src/keymap/listHelpers/hasListItemAfter.ts\nconst hasListItemAfter = (typeOrName, state) => {\n\tvar _$targetPos$nodeAfter;\n\tconst { $anchor } = state.selection;\n\tconst $targetPos = state.doc.resolve($anchor.pos - $anchor.parentOffset - 2);\n\tif ($targetPos.index() === $targetPos.parent.childCount - 1) return false;\n\tif (((_$targetPos$nodeAfter = $targetPos.nodeAfter) === null || _$targetPos$nodeAfter === void 0 ? void 0 : _$targetPos$nodeAfter.type.name) !== typeOrName) return false;\n\treturn true;\n};\n//#endregion\n//#region src/keymap/listHelpers/hasListItemBefore.ts\nconst hasListItemBefore = (typeOrName, state) => {\n\tvar _$targetPos$nodeBefor;\n\tconst { $anchor } = state.selection;\n\tconst $targetPos = state.doc.resolve($anchor.pos - 2);\n\tif ($targetPos.index() === 0) return false;\n\tif (((_$targetPos$nodeBefor = $targetPos.nodeBefore) === null || _$targetPos$nodeBefor === void 0 ? void 0 : _$targetPos$nodeBefor.type.name) !== typeOrName) return false;\n\treturn true;\n};\n//#endregion\n//#region src/keymap/listHelpers/listItemHasSubList.ts\nconst listItemHasSubList = (typeOrName, state, node) => {\n\tif (!node) return false;\n\tconst nodeType = getNodeType(typeOrName, state.schema);\n\tlet hasSubList = false;\n\tnode.descendants((child) => {\n\t\tif (child.type === nodeType) hasSubList = true;\n\t});\n\treturn hasSubList;\n};\n//#endregion\n//#region src/keymap/listHelpers/index.ts\nvar listHelpers_exports = /* @__PURE__ */ __exportAll({\n\tfindListItemPos: () => findListItemPos,\n\tgetNextListDepth: () => getNextListDepth,\n\thandleBackspace: () => handleBackspace,\n\thandleDelete: () => handleDelete,\n\thandleTab: () => handleTab,\n\thasListBefore: () => hasListBefore,\n\thasListItemAfter: () => hasListItemAfter,\n\thasListItemBefore: () => hasListItemBefore,\n\tlistItemHasSubList: () => listItemHasSubList,\n\tnextListIsDeeper: () => nextListIsDeeper,\n\tnextListIsHigher: () => nextListIsHigher\n});\n//#endregion\n//#region src/keymap/list-keymap.ts\n/**\n* This extension registers custom keymaps to change the behaviour of the backspace and delete keys.\n* By default Prosemirror keyhandling will always lift or sink items so paragraphs are joined into\n* the adjacent or previous list item. This extension will prevent this behaviour and instead will\n* try to join paragraphs from two list items into a single list item.\n* @see https://www.tiptap.dev/api/extensions/list-keymap\n*/\nconst ListKeymap = Extension.create({\n\tname: \"listKeymap\",\n\taddOptions() {\n\t\treturn { listTypes: [{\n\t\t\titemName: \"listItem\",\n\t\t\twrapperNames: [\"bulletList\", \"orderedList\"]\n\t\t}, {\n\t\t\titemName: \"taskItem\",\n\t\t\twrapperNames: [\"taskList\"]\n\t\t}] };\n\t},\n\taddKeyboardShortcuts() {\n\t\treturn {\n\t\t\tDelete: ({ editor }) => {\n\t\t\t\tlet handled = false;\n\t\t\t\tthis.options.listTypes.forEach(({ itemName }) => {\n\t\t\t\t\tif (editor.state.schema.nodes[itemName] === void 0) return;\n\t\t\t\t\tif (handleDelete(editor, itemName)) handled = true;\n\t\t\t\t});\n\t\t\t\treturn handled;\n\t\t\t},\n\t\t\t\"Mod-Delete\": ({ editor }) => {\n\t\t\t\tlet handled = false;\n\t\t\t\tthis.options.listTypes.forEach(({ itemName }) => {\n\t\t\t\t\tif (editor.state.schema.nodes[itemName] === void 0) return;\n\t\t\t\t\tif (handleDelete(editor, itemName)) handled = true;\n\t\t\t\t});\n\t\t\t\treturn handled;\n\t\t\t},\n\t\t\tBackspace: ({ editor }) => {\n\t\t\t\tlet handled = false;\n\t\t\t\tthis.options.listTypes.forEach(({ itemName, wrapperNames }) => {\n\t\t\t\t\tif (editor.state.schema.nodes[itemName] === void 0) return;\n\t\t\t\t\tif (handleBackspace(editor, itemName, wrapperNames)) handled = true;\n\t\t\t\t});\n\t\t\t\treturn handled;\n\t\t\t},\n\t\t\t\"Mod-Backspace\": ({ editor }) => {\n\t\t\t\tlet handled = false;\n\t\t\t\tthis.options.listTypes.forEach(({ itemName, wrapperNames }) => {\n\t\t\t\t\tif (editor.state.schema.nodes[itemName] === void 0) return;\n\t\t\t\t\tif (handleBackspace(editor, itemName, wrapperNames)) handled = true;\n\t\t\t\t});\n\t\t\t\treturn handled;\n\t\t\t},\n\t\t\tTab: ({ editor }) => {\n\t\t\t\tfor (const { itemName, wrapperNames } of this.options.listTypes) {\n\t\t\t\t\tif (editor.state.schema.nodes[itemName] === void 0) continue;\n\t\t\t\t\tif (handleTab(editor, itemName, wrapperNames)) return true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t};\n\t}\n});\n//#endregion\n//#region src/ordered-list/utils.ts\n/**\n* Matches an ordered list item line with optional leading whitespace.\n* Captures: (1) indentation spaces, (2) item marker (number, letter, or roman numeral),\n* (3) separator (. or )), (4) content after marker\n*\n* Examples: \"1. Item\", \" a) Nested item\", \" I. Roman item\", \"iii. Another\", \"aa. Item 27\"\n*/\nconst ORDERED_LIST_ITEM_REGEX = new RegExp(`^(\\\\s*)(${ORDERED_LIST_MARKER_PATTERN})([.)])\\\\s+(.*)$`);\n/**\n* Matches any line that starts with whitespace (indented content).\n* Used to identify continuation content that belongs to a list item.\n*/\nconst INDENTED_LINE_REGEX = /^\\s/;\n/**\n* This are blocks that can interrupt a paragraph, so a line starting with one of\n* them can never be lazy continuation text of a list item\n*/\nconst PARAGRAPH_INTERRUPTERS = {\n\theading: /^#{1,6}(?:\\s|$)/,\n\tbulletItem: /^[-+*]\\s+/,\n\tcodeFence: /^(?:```|~~~)/,\n\tblockMath: /^\\$\\$/,\n\tthematicBreak: /^(?:(?:-[ \\t]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})$/\n};\nfunction isOrderedListMarkerLine(line) {\n\treturn ORDERED_LIST_ITEM_REGEX.test(line.trimStart());\n}\nfunction isBlockContentLine(line) {\n\tconst trimmedLine = line.trimStart();\n\treturn PARAGRAPH_INTERRUPTERS.bulletItem.test(trimmedLine) || isOrderedListMarkerLine(trimmedLine) || PARAGRAPH_INTERRUPTERS.heading.test(trimmedLine) || PARAGRAPH_INTERRUPTERS.thematicBreak.test(trimmedLine) && !trimmedLine.startsWith(\"-\") || /^>\\s?/.test(trimmedLine) || PARAGRAPH_INTERRUPTERS.codeFence.test(trimmedLine) || PARAGRAPH_INTERRUPTERS.blockMath.test(trimmedLine);\n}\nfunction interruptsLazyContinuation(line) {\n\treturn Object.values(PARAGRAPH_INTERRUPTERS).some((pattern) => pattern.test(line));\n}\nfunction splitItemContent(contentLines) {\n\tconst paragraphLines = [];\n\tconst blockLines = [];\n\tlet reachedBlockBoundary = false;\n\tcontentLines.forEach((line) => {\n\t\tif (reachedBlockBoundary) {\n\t\t\tblockLines.push(line);\n\t\t\treturn;\n\t\t}\n\t\tif (line.trim() === \"\") {\n\t\t\treachedBlockBoundary = true;\n\t\t\tblockLines.push(line);\n\t\t\treturn;\n\t\t}\n\t\tif (paragraphLines.length > 0 && isBlockContentLine(line)) {\n\t\t\treachedBlockBoundary = true;\n\t\t\tblockLines.push(line);\n\t\t\treturn;\n\t\t}\n\t\tparagraphLines.push(line);\n\t});\n\treturn {\n\t\tparagraphLines,\n\t\tblockLines\n\t};\n}\n/**\n* Collects all ordered list items from lines, parsing them into a flat array\n* with indentation information. Stops collecting continuation content when\n* encountering nested list items, allowing them to be processed separately.\n*\n* @param lines - Array of source lines to parse\n* @returns Tuple of [listItems array, number of lines consumed]\n*/\nfunction collectOrderedListItems(lines) {\n\tconst listItems = [];\n\tlet currentLineIndex = 0;\n\tlet consumed = 0;\n\twhile (currentLineIndex < lines.length) {\n\t\tconst line = lines[currentLineIndex];\n\t\tconst match = line.match(ORDERED_LIST_ITEM_REGEX);\n\t\tif (!match) break;\n\t\tconst [, indent, marker, _separator, content] = match;\n\t\tconst indentLevel = indent.length;\n\t\tconst number = parseInt(marker, 10);\n\t\tconst markerType = isNaN(number) ? detectMarkerType(marker) : void 0;\n\t\tconst itemNumber = isNaN(number) ? markerToStart(marker) : number;\n\t\tconst itemContentLines = [content];\n\t\tlet nextLineIndex = currentLineIndex + 1;\n\t\tconst itemLines = [line];\n\t\tlet sawBlankLine = false;\n\t\twhile (nextLineIndex < lines.length) {\n\t\t\tconst nextLine = lines[nextLineIndex];\n\t\t\tif (nextLine.match(ORDERED_LIST_ITEM_REGEX)) break;\n\t\t\tif (nextLine.trim() === \"\") {\n\t\t\t\titemLines.push(nextLine);\n\t\t\t\titemContentLines.push(\"\");\n\t\t\t\tsawBlankLine = true;\n\t\t\t\tnextLineIndex += 1;\n\t\t\t} else if (nextLine.match(INDENTED_LINE_REGEX)) {\n\t\t\t\tconst leadingWhitespace = nextLine.length - nextLine.trimStart().length;\n\t\t\t\tconst contentIndent = indentLevel + marker.length + 1;\n\t\t\t\titemLines.push(nextLine);\n\t\t\t\titemContentLines.push(nextLine.slice(Math.min(leadingWhitespace, contentIndent)));\n\t\t\t\tnextLineIndex += 1;\n\t\t\t} else {\n\t\t\t\tif (sawBlankLine || interruptsLazyContinuation(nextLine)) break;\n\t\t\t\titemLines.push(nextLine);\n\t\t\t\titemContentLines.push(nextLine);\n\t\t\t\tnextLineIndex += 1;\n\t\t\t}\n\t\t}\n\t\tlistItems.push({\n\t\t\tindent: indentLevel,\n\t\t\tnumber: itemNumber,\n\t\t\ttype: markerType,\n\t\t\tcontent: itemContentLines.join(\"\\n\").trim(),\n\t\t\tcontentLines: itemContentLines,\n\t\t\traw: itemLines.join(\"\\n\")\n\t\t});\n\t\tconsumed = nextLineIndex;\n\t\tcurrentLineIndex = nextLineIndex;\n\t}\n\treturn [listItems, consumed];\n}\nconst PLAIN_TEXT_ORDERED_LIST_LINE_REGEX = new RegExp(`^(${ORDERED_LIST_MARKER_PATTERN})([.)])\\\\s+(.+)$`);\n/**\n* Parse plain-text pasted ordered list lines into JSONContent, or null if not a typed list.\n*/\nfunction parsePlainTextOrderedListPaste(text) {\n\tconst lines = text.split(\"\\n\").filter((l) => l.trim().length > 0);\n\tif (lines.length === 0) return null;\n\tconst parsedItems = [];\n\tfor (const line of lines) {\n\t\tconst match = line.trim().match(PLAIN_TEXT_ORDERED_LIST_LINE_REGEX);\n\t\tif (!match) return null;\n\t\tparsedItems.push({\n\t\t\tmarker: match[1],\n\t\t\tcontent: match[3]\n\t\t});\n\t}\n\tif (!areOrderedListMarkersSequential(parsedItems.map((item) => item.marker))) return null;\n\treturn {\n\t\ttype: \"orderedList\",\n\t\tattrs: buildOrderedListAttrsFromMarker(parsedItems[0].marker),\n\t\tcontent: parsedItems.map((item) => ({\n\t\t\ttype: \"listItem\",\n\t\t\tcontent: [{\n\t\t\t\ttype: \"paragraph\",\n\t\t\t\tcontent: [{\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: item.content\n\t\t\t\t}]\n\t\t\t}]\n\t\t}))\n\t};\n}\n/**\n* Recursively builds a nested structure from a flat array of list items\n* based on their indentation levels. Creates proper markdown tokens with\n* nested lists where appropriate.\n*\n* @param items - Flat array of list items with indentation info\n* @param baseIndent - The indentation level to process at this recursion level\n* @param lexer - Markdown lexer for parsing inline and block content\n* @returns Array of list_item tokens with proper nesting\n*/\nfunction buildNestedStructure(items, baseIndent, lexer) {\n\tconst result = [];\n\tlet currentIndex = 0;\n\twhile (currentIndex < items.length) {\n\t\tconst item = items[currentIndex];\n\t\tif (item.indent === baseIndent) {\n\t\t\tconst { paragraphLines, blockLines } = splitItemContent(item.contentLines);\n\t\t\tconst mainText = paragraphLines.join(\"\\n\").trim();\n\t\t\tconst tokens = [];\n\t\t\tif (mainText) tokens.push({\n\t\t\t\ttype: \"paragraph\",\n\t\t\t\traw: mainText,\n\t\t\t\ttokens: lexer.inlineTokens(mainText)\n\t\t\t});\n\t\t\tconst additionalContent = blockLines.join(\"\\n\").trim();\n\t\t\tif (additionalContent) {\n\t\t\t\tconst blockTokens = lexer.blockTokens(additionalContent);\n\t\t\t\ttokens.push(...blockTokens);\n\t\t\t}\n\t\t\tlet lookAheadIndex = currentIndex + 1;\n\t\t\tconst nestedItems = [];\n\t\t\twhile (lookAheadIndex < items.length && items[lookAheadIndex].indent > baseIndent) {\n\t\t\t\tnestedItems.push(items[lookAheadIndex]);\n\t\t\t\tlookAheadIndex += 1;\n\t\t\t}\n\t\t\tif (nestedItems.length > 0) {\n\t\t\t\tconst nestedListItems = buildNestedStructure(nestedItems, Math.min(...nestedItems.map((nestedItem) => nestedItem.indent)), lexer);\n\t\t\t\ttokens.push({\n\t\t\t\t\ttype: \"list\",\n\t\t\t\t\tordered: true,\n\t\t\t\t\tstart: nestedItems[0].number,\n\t\t\t\t\ttypeMarker: nestedItems[0].type,\n\t\t\t\t\titems: nestedListItems,\n\t\t\t\t\traw: nestedItems.map((nestedItem) => nestedItem.raw).join(\"\\n\")\n\t\t\t\t});\n\t\t\t}\n\t\t\tresult.push({\n\t\t\t\ttype: \"list_item\",\n\t\t\t\traw: item.raw,\n\t\t\t\ttokens\n\t\t\t});\n\t\t\tcurrentIndex = lookAheadIndex;\n\t\t} else currentIndex += 1;\n\t}\n\treturn result;\n}\n/**\n* Parses markdown list item tokens into Tiptap JSONContent structure,\n* ensuring text content is properly wrapped in paragraph nodes.\n*\n* @param items - Array of markdown tokens representing list items\n* @param helpers - Markdown parse helpers for recursive parsing\n* @returns Array of listItem JSONContent nodes\n*/\nfunction parseListItems(items, helpers) {\n\treturn items.map((item) => {\n\t\tif (item.type !== \"list_item\") return helpers.parseChildren([item])[0];\n\t\tconst content = [];\n\t\tif (item.tokens && item.tokens.length > 0) item.tokens.forEach((itemToken) => {\n\t\t\tif (itemToken.type === \"paragraph\" || itemToken.type === \"list\" || itemToken.type === \"blockquote\" || itemToken.type === \"code\") content.push(...helpers.parseChildren([itemToken]));\n\t\t\telse if (itemToken.type === \"text\" && itemToken.tokens) {\n\t\t\t\tconst inlineContent = helpers.parseChildren([itemToken]);\n\t\t\t\tcontent.push({\n\t\t\t\t\ttype: \"paragraph\",\n\t\t\t\t\tcontent: inlineContent\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst parsed = helpers.parseChildren([itemToken]);\n\t\t\t\tif (parsed.length > 0) content.push(...parsed);\n\t\t\t}\n\t\t});\n\t\treturn {\n\t\t\ttype: \"listItem\",\n\t\t\tcontent\n\t\t};\n\t});\n}\n//#endregion\n//#region src/ordered-list/ordered-list.ts\nconst ListItemName = \"listItem\";\nconst TextStyleName = \"textStyle\";\n/**\n* Matches an ordered list to a 1. on input (or any number followed by a dot).\n*/\nconst orderedListInputRegex = /^(\\d+)\\.\\s$/;\n/**\n* Maps CSS list-style-type values to HTML type attribute values.\n* Google Docs and Word often use CSS instead of the HTML type attribute.\n*/\nfunction cssListStyleTypeToHtmlType(style) {\n\tconst match = style.match(/list-style-type\\s*:\\s*([^;]+)/i);\n\tif (!match) return null;\n\tswitch (match[1].trim().toLowerCase()) {\n\t\tcase \"upper-roman\": return \"I\";\n\t\tcase \"lower-roman\": return \"i\";\n\t\tcase \"upper-alpha\":\n\t\tcase \"upper-latin\": return \"A\";\n\t\tcase \"lower-alpha\":\n\t\tcase \"lower-latin\": return \"a\";\n\t\tdefault: return null;\n\t}\n}\n/**\n* This extension allows you to create ordered lists.\n* This requires the ListItem extension\n* @see https://www.tiptap.dev/api/nodes/ordered-list\n* @see https://www.tiptap.dev/api/nodes/list-item\n*/\nconst OrderedList = Node.create({\n\tname: \"orderedList\",\n\taddOptions() {\n\t\treturn {\n\t\t\titemTypeName: \"listItem\",\n\t\t\tHTMLAttributes: {},\n\t\t\tkeepMarks: false,\n\t\t\tkeepAttributes: false\n\t\t};\n\t},\n\tgroup: \"block list\",\n\tcontent() {\n\t\treturn `${this.options.itemTypeName}+`;\n\t},\n\taddAttributes() {\n\t\treturn {\n\t\t\tstart: {\n\t\t\t\tdefault: 1,\n\t\t\t\tparseHTML: (element) => {\n\t\t\t\t\treturn element.hasAttribute(\"start\") ? parseInt(element.getAttribute(\"start\") || \"\", 10) : 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\ttype: {\n\t\t\t\tdefault: null,\n\t\t\t\tparseHTML: (element) => {\n\t\t\t\t\tconst htmlType = element.getAttribute(\"type\");\n\t\t\t\t\tif (htmlType) return htmlType;\n\t\t\t\t\tconst style = element.getAttribute(\"style\");\n\t\t\t\t\tif (style) {\n\t\t\t\t\t\tconst mappedFromOl = cssListStyleTypeToHtmlType(style);\n\t\t\t\t\t\tif (mappedFromOl) return mappedFromOl;\n\t\t\t\t\t}\n\t\t\t\t\tconst firstLi = element.querySelector(\"li\");\n\t\t\t\t\tif (firstLi) {\n\t\t\t\t\t\tconst liStyle = firstLi.getAttribute(\"style\");\n\t\t\t\t\t\tif (liStyle) {\n\t\t\t\t\t\t\tconst mappedFromLi = cssListStyleTypeToHtmlType(liStyle);\n\t\t\t\t\t\t\tif (mappedFromLi) return mappedFromLi;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t},\n\tparseHTML() {\n\t\treturn [{ tag: \"ol\" }];\n\t},\n\trenderHTML({ HTMLAttributes }) {\n\t\tconst { start, type, ...attributesWithoutType } = HTMLAttributes;\n\t\tconst attrs = mergeAttributes(this.options.HTMLAttributes, attributesWithoutType);\n\t\tif (start !== 1) attrs.start = start;\n\t\tif (type && type !== \"1\") attrs.type = type;\n\t\treturn [\n\t\t\t\"ol\",\n\t\t\tattrs,\n\t\t\t0\n\t\t];\n\t},\n\tmarkdownTokenName: \"list\",\n\tparseMarkdown: (token, helpers) => {\n\t\tif (token.type !== \"list\" || !token.ordered) return [];\n\t\tconst startValue = token.start || 1;\n\t\tconst typeValue = token.typeMarker;\n\t\tconst content = token.items ? parseListItems(token.items, helpers) : [];\n\t\tconst attrs = {};\n\t\tif (startValue !== 1) attrs.start = startValue;\n\t\tif (typeValue) attrs.type = typeValue;\n\t\tif (Object.keys(attrs).length > 0) return {\n\t\t\ttype: \"orderedList\",\n\t\t\tattrs,\n\t\t\tcontent\n\t\t};\n\t\treturn {\n\t\t\ttype: \"orderedList\",\n\t\t\tcontent\n\t\t};\n\t},\n\trenderMarkdown: (node, h) => {\n\t\tif (!node.content) return \"\";\n\t\treturn h.renderChildren(node.content, \"\\n\");\n\t},\n\tmarkdownTokenizer: {\n\t\tname: \"orderedList\",\n\t\tlevel: \"block\",\n\t\tstart: () => -1,\n\t\ttokenize: (src, _tokens, lexer) => {\n\t\t\tvar _listItems$, _listItems$2;\n\t\t\tconst lines = src.split(\"\\n\");\n\t\t\tconst [listItems, consumed] = collectOrderedListItems(lines);\n\t\t\tif (listItems.length === 0) return;\n\t\t\tconst items = buildNestedStructure(listItems, listItems[0].indent, lexer);\n\t\t\tif (items.length === 0) return;\n\t\t\treturn {\n\t\t\t\ttype: \"list\",\n\t\t\t\tordered: true,\n\t\t\t\tstart: ((_listItems$ = listItems[0]) === null || _listItems$ === void 0 ? void 0 : _listItems$.number) || 1,\n\t\t\t\ttypeMarker: (_listItems$2 = listItems[0]) === null || _listItems$2 === void 0 ? void 0 : _listItems$2.type,\n\t\t\t\titems,\n\t\t\t\traw: lines.slice(0, consumed).join(\"\\n\")\n\t\t\t};\n\t\t}\n\t},\n\tmarkdownOptions: { indentsContent: true },\n\taddCommands() {\n\t\treturn { toggleOrderedList: () => ({ commands, chain }) => {\n\t\t\tif (this.options.keepAttributes) return chain().toggleList(this.name, this.options.itemTypeName, this.options.keepMarks).updateAttributes(ListItemName, this.editor.getAttributes(TextStyleName)).run();\n\t\t\treturn commands.toggleList(this.name, this.options.itemTypeName, this.options.keepMarks);\n\t\t} };\n\t},\n\taddKeyboardShortcuts() {\n\t\treturn { \"Mod-Shift-7\": () => this.editor.commands.toggleOrderedList() };\n\t},\n\taddProseMirrorPlugins() {\n\t\treturn [new Plugin({ props: { handlePaste: (view, event) => {\n\t\t\tvar _event$clipboardData, _event$clipboardData2;\n\t\t\tconst html = (_event$clipboardData = event.clipboardData) === null || _event$clipboardData === void 0 ? void 0 : _event$clipboardData.getData(\"text/html\");\n\t\t\tif (html === null || html === void 0 ? void 0 : html.trim()) return false;\n\t\t\tconst text = (_event$clipboardData2 = event.clipboardData) === null || _event$clipboardData2 === void 0 ? void 0 : _event$clipboardData2.getData(\"text/plain\");\n\t\t\tif (!text) return false;\n\t\t\tconst orderedListContent = parsePlainTextOrderedListPaste(text);\n\t\t\tif (!orderedListContent) return false;\n\t\t\ttry {\n\t\t\t\tconst orderedListNode = view.state.schema.nodeFromJSON(orderedListContent);\n\t\t\t\tconst tr = view.state.tr.replaceSelectionWith(orderedListNode);\n\t\t\t\tview.dispatch(tr);\n\t\t\t\treturn true;\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} } })];\n\t},\n\taddInputRules() {\n\t\tconst joinPredicate = (match, node) => {\n\t\t\treturn (!node.attrs.type || node.attrs.type === \"1\") && node.childCount + node.attrs.start === +match[1];\n\t\t};\n\t\tlet inputRule = wrappingInputRule({\n\t\t\tfind: orderedListInputRegex,\n\t\t\ttype: this.type,\n\t\t\tgetAttributes: (match) => ({ start: +match[1] }),\n\t\t\tjoinPredicate\n\t\t});\n\t\tif (this.options.keepMarks || this.options.keepAttributes) inputRule = wrappingInputRule({\n\t\t\tfind: orderedListInputRegex,\n\t\t\ttype: this.type,\n\t\t\tkeepMarks: this.options.keepMarks,\n\t\t\tkeepAttributes: this.options.keepAttributes,\n\t\t\tgetAttributes: (match) => ({\n\t\t\t\tstart: +match[1],\n\t\t\t\t...this.editor.getAttributes(TextStyleName)\n\t\t\t}),\n\t\t\tjoinPredicate,\n\t\t\teditor: this.editor\n\t\t});\n\t\treturn [inputRule];\n\t}\n});\n//#endregion\n//#region src/task-item/task-item.ts\n/**\n* Matches a task item to a - [ ] on input.\n*/\nconst inputRegex = /^\\s*(\\[([( |x])?\\])\\s$/;\n/**\n* Hides the checkbox label visually while keeping it in the accessibility tree.\n*/\nconst visuallyHiddenStyle = \"position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0\";\nconst getCheckboxLabel = (node, checked, a11y) => {\n\tvar _a11y$checkboxLabel;\n\treturn (a11y === null || a11y === void 0 || (_a11y$checkboxLabel = a11y.checkboxLabel) === null || _a11y$checkboxLabel === void 0 ? void 0 : _a11y$checkboxLabel.call(a11y, node, checked)) || `Task item checkbox for ${node.textContent || \"empty task item\"}`;\n};\n/**\n* This extension allows you to create task items.\n* @see https://www.tiptap.dev/api/nodes/task-item\n*/\nconst TaskItem = Node.create({\n\tname: \"taskItem\",\n\taddOptions() {\n\t\treturn {\n\t\t\tnested: false,\n\t\t\tHTMLAttributes: {},\n\t\t\ttaskListTypeName: \"taskList\",\n\t\t\ta11y: void 0\n\t\t};\n\t},\n\tcontent() {\n\t\treturn this.options.nested ? \"paragraph block*\" : \"paragraph+\";\n\t},\n\tdefining: true,\n\taddAttributes() {\n\t\treturn { checked: {\n\t\t\tdefault: false,\n\t\t\tkeepOnSplit: false,\n\t\t\tparseHTML: (element) => {\n\t\t\t\tconst dataChecked = element.getAttribute(\"data-checked\");\n\t\t\t\treturn dataChecked === \"\" || dataChecked === \"true\";\n\t\t\t},\n\t\t\trenderHTML: (attributes) => ({ \"data-checked\": attributes.checked })\n\t\t} };\n\t},\n\tparseHTML() {\n\t\treturn [{\n\t\t\ttag: `li[data-type=\"${this.name}\"]`,\n\t\t\tpriority: 51,\n\t\t\tcontentElement: (element) => {\n\t\t\t\tvar _element$querySelecto;\n\t\t\t\treturn (_element$querySelecto = element.querySelector(\"div\")) !== null && _element$querySelecto !== void 0 ? _element$querySelecto : element;\n\t\t\t}\n\t\t}];\n\t},\n\trenderHTML({ node, HTMLAttributes }) {\n\t\treturn [\n\t\t\t\"li\",\n\t\t\tmergeAttributes(this.options.HTMLAttributes, HTMLAttributes, { \"data-type\": this.name }),\n\t\t\t[\n\t\t\t\t\"label\",\n\t\t\t\t[\"input\", {\n\t\t\t\t\ttype: \"checkbox\",\n\t\t\t\t\tchecked: node.attrs.checked ? \"checked\" : null\n\t\t\t\t}],\n\t\t\t\t[\"span\"]\n\t\t\t],\n\t\t\t[\"div\", 0]\n\t\t];\n\t},\n\tparseMarkdown: (token, h) => {\n\t\tconst content = [];\n\t\tif (token.tokens && token.tokens.length > 0) content.push(h.createNode(\"paragraph\", {}, h.parseInline(token.tokens)));\n\t\telse if (token.text) content.push(h.createNode(\"paragraph\", {}, [h.createNode(\"text\", { text: token.text })]));\n\t\telse content.push(h.createNode(\"paragraph\", {}, []));\n\t\tif (token.nestedTokens && token.nestedTokens.length > 0) {\n\t\t\tconst nestedContent = h.parseChildren(token.nestedTokens);\n\t\t\tcontent.push(...nestedContent);\n\t\t}\n\t\treturn h.createNode(\"taskItem\", { checked: token.checked || false }, content);\n\t},\n\trenderMarkdown: (node, h) => {\n\t\tvar _node$attrs;\n\t\tconst prefix = `- [${((_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs.checked) ? \"x\" : \" \"}] `;\n\t\treturn renderNestedMarkdownContent(node, h, prefix);\n\t},\n\taddExtensions() {\n\t\tif (!this.options.nested) return [];\n\t\treturn [createBranchingListDeleteKeymap(this.name, [this.options.taskListTypeName])];\n\t},\n\taddKeyboardShortcuts() {\n\t\tconst shortcuts = {\n\t\t\tEnter: () => this.editor.commands.splitListItem(this.name),\n\t\t\t\"Shift-Tab\": () => this.editor.commands.liftListItem(this.name)\n\t\t};\n\t\tif (!this.options.nested) return shortcuts;\n\t\treturn {\n\t\t\t...shortcuts,\n\t\t\tTab: () => this.editor.commands.sinkListItem(this.name)\n\t\t};\n\t},\n\taddNodeView() {\n\t\treturn ({ node, HTMLAttributes, getPos, editor }) => {\n\t\t\tconst listItem = document.createElement(\"li\");\n\t\t\tconst checkboxWrapper = document.createElement(\"label\");\n\t\t\tconst checkboxStyler = document.createElement(\"span\");\n\t\t\tconst checkbox = document.createElement(\"input\");\n\t\t\tconst content = document.createElement(\"div\");\n\t\t\tcheckboxStyler.style.cssText = visuallyHiddenStyle;\n\t\t\tconst updateA11Y = (currentNode) => {\n\t\t\t\tconst label = getCheckboxLabel(currentNode, currentNode.attrs.checked, this.options.a11y);\n\t\t\t\tcheckbox.setAttribute(\"aria-label\", label);\n\t\t\t\tcheckboxStyler.textContent = label;\n\t\t\t};\n\t\t\tupdateA11Y(node);\n\t\t\tcheckboxWrapper.contentEditable = \"false\";\n\t\t\tcheckbox.type = \"checkbox\";\n\t\t\tcheckbox.addEventListener(\"mousedown\", (event) => event.preventDefault());\n\t\t\tcheckbox.addEventListener(\"change\", (event) => {\n\t\t\t\tif (!editor.isEditable && !this.options.onReadOnlyChecked) {\n\t\t\t\t\tcheckbox.checked = !checkbox.checked;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst { checked } = event.target;\n\t\t\t\tif (editor.isEditable && typeof getPos === \"function\") editor.chain().focus(void 0, { scrollIntoView: false }).command(({ tr }) => {\n\t\t\t\t\tconst position = getPos();\n\t\t\t\t\tif (typeof position !== \"number\") return false;\n\t\t\t\t\tconst currentNode = tr.doc.nodeAt(position);\n\t\t\t\t\ttr.setNodeMarkup(position, void 0, {\n\t\t\t\t\t\t...currentNode === null || currentNode === void 0 ? void 0 : currentNode.attrs,\n\t\t\t\t\t\tchecked\n\t\t\t\t\t});\n\t\t\t\t\treturn true;\n\t\t\t\t}).run();\n\t\t\t\tif (!editor.isEditable && this.options.onReadOnlyChecked) {\n\t\t\t\t\tif (!this.options.onReadOnlyChecked(node, checked)) checkbox.checked = !checkbox.checked;\n\t\t\t\t}\n\t\t\t});\n\t\t\tObject.entries(this.options.HTMLAttributes).forEach(([key, value]) => {\n\t\t\t\tlistItem.setAttribute(key, value);\n\t\t\t});\n\t\t\tlistItem.dataset.checked = node.attrs.checked;\n\t\t\tcheckbox.checked = node.attrs.checked;\n\t\t\tcheckboxWrapper.append(checkbox, checkboxStyler);\n\t\t\tlistItem.append(checkboxWrapper, content);\n\t\t\tObject.entries(HTMLAttributes).forEach(([key, value]) => {\n\t\t\t\tlistItem.setAttribute(key, value);\n\t\t\t});\n\t\t\tlet prevRenderedAttributeKeys = new Set(Object.keys(HTMLAttributes));\n\t\t\treturn {\n\t\t\t\tdom: listItem,\n\t\t\t\tcontentDOM: content,\n\t\t\t\tupdate: (updatedNode) => {\n\t\t\t\t\tif (updatedNode.type !== this.type) return false;\n\t\t\t\t\tlistItem.dataset.checked = updatedNode.attrs.checked;\n\t\t\t\t\tcheckbox.checked = updatedNode.attrs.checked;\n\t\t\t\t\tupdateA11Y(updatedNode);\n\t\t\t\t\tconst extensionAttributes = editor.extensionManager.attributes;\n\t\t\t\t\tconst newHTMLAttributes = getRenderedAttributes(updatedNode, extensionAttributes);\n\t\t\t\t\tconst newKeys = new Set(Object.keys(newHTMLAttributes));\n\t\t\t\t\tconst staticAttrs = this.options.HTMLAttributes;\n\t\t\t\t\tprevRenderedAttributeKeys.forEach((key) => {\n\t\t\t\t\t\tif (!newKeys.has(key)) {\n\t\t\t\t\t\t\tif (key in staticAttrs) listItem.setAttribute(key, staticAttrs[key]);\n\t\t\t\t\t\t\telse listItem.removeAttribute(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tObject.entries(newHTMLAttributes).forEach(([key, value]) => {\n\t\t\t\t\t\tif (value === null || value === void 0) {\n\t\t\t\t\t\t\tif (key in staticAttrs) listItem.setAttribute(key, staticAttrs[key]);\n\t\t\t\t\t\t\telse listItem.removeAttribute(key);\n\t\t\t\t\t\t} else listItem.setAttribute(key, value);\n\t\t\t\t\t});\n\t\t\t\t\tprevRenderedAttributeKeys = newKeys;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t};\n\t\t};\n\t},\n\taddInputRules() {\n\t\treturn [wrappingInputRule({\n\t\t\tfind: inputRegex,\n\t\t\ttype: this.type,\n\t\t\tgetAttributes: (match) => ({ checked: match[match.length - 1] === \"x\" })\n\t\t})];\n\t}\n});\n//#endregion\n//#region src/task-list/task-list.ts\n/**\n* This extension allows you to create task lists.\n* @see https://www.tiptap.dev/api/nodes/task-list\n*/\nconst TaskList = Node.create({\n\tname: \"taskList\",\n\taddOptions() {\n\t\treturn {\n\t\t\titemTypeName: \"taskItem\",\n\t\t\tHTMLAttributes: {}\n\t\t};\n\t},\n\tgroup: \"block list\",\n\tcontent() {\n\t\treturn `${this.options.itemTypeName}+`;\n\t},\n\tparseHTML() {\n\t\treturn [{\n\t\t\ttag: `ul[data-type=\"${this.name}\"]`,\n\t\t\tpriority: 51\n\t\t}];\n\t},\n\trenderHTML({ HTMLAttributes }) {\n\t\treturn [\n\t\t\t\"ul\",\n\t\t\tmergeAttributes(this.options.HTMLAttributes, HTMLAttributes, { \"data-type\": this.name }),\n\t\t\t0\n\t\t];\n\t},\n\tparseMarkdown: (token, h) => {\n\t\treturn h.createNode(\"taskList\", {}, h.parseChildren(token.items || []));\n\t},\n\trenderMarkdown: (node, h) => {\n\t\tif (!node.content) return \"\";\n\t\treturn h.renderChildren(node.content, \"\\n\");\n\t},\n\tmarkdownTokenizer: {\n\t\tname: \"taskList\",\n\t\tlevel: \"block\",\n\t\tstart(src) {\n\t\t\tvar _src$match;\n\t\t\tconst index = (_src$match = src.match(/^\\s*[-+*]\\s+\\[([ xX])\\]\\s+/)) === null || _src$match === void 0 ? void 0 : _src$match.index;\n\t\t\treturn index !== void 0 ? index : -1;\n\t\t},\n\t\ttokenize(src, tokens, lexer) {\n\t\t\tconst parseTaskListContent = (content) => {\n\t\t\t\tconst nestedResult = parseIndentedBlocks(content, {\n\t\t\t\t\titemPattern: /^(\\s*)([-+*])\\s+\\[([ xX])\\]\\s+(.*)$/,\n\t\t\t\t\textractItemData: (match) => ({\n\t\t\t\t\t\tindentLevel: match[1].length,\n\t\t\t\t\t\tmainContent: match[4],\n\t\t\t\t\t\tchecked: match[3].toLowerCase() === \"x\"\n\t\t\t\t\t}),\n\t\t\t\t\tcreateToken: (data, nestedTokens) => ({\n\t\t\t\t\t\ttype: \"taskItem\",\n\t\t\t\t\t\traw: \"\",\n\t\t\t\t\t\tmainContent: data.mainContent,\n\t\t\t\t\t\tindentLevel: data.indentLevel,\n\t\t\t\t\t\tchecked: data.checked,\n\t\t\t\t\t\ttext: data.mainContent,\n\t\t\t\t\t\ttokens: lexer.inlineTokens(data.mainContent),\n\t\t\t\t\t\tnestedTokens\n\t\t\t\t\t}),\n\t\t\t\t\tcustomNestedParser: parseTaskListContent\n\t\t\t\t}, lexer);\n\t\t\t\tif (nestedResult) {\n\t\t\t\t\tconst taskListToken = {\n\t\t\t\t\t\ttype: \"taskList\",\n\t\t\t\t\t\traw: nestedResult.raw,\n\t\t\t\t\t\titems: nestedResult.items\n\t\t\t\t\t};\n\t\t\t\t\tconst remainder = content.slice(nestedResult.raw.length);\n\t\t\t\t\tif (remainder.trim()) return [taskListToken, ...lexer.blockTokens(remainder)];\n\t\t\t\t\treturn [taskListToken];\n\t\t\t\t}\n\t\t\t\treturn lexer.blockTokens(content);\n\t\t\t};\n\t\t\tconst result = parseIndentedBlocks(src, {\n\t\t\t\titemPattern: /^(\\s*)([-+*])\\s+\\[([ xX])\\]\\s+(.*)$/,\n\t\t\t\textractItemData: (match) => ({\n\t\t\t\t\tindentLevel: match[1].length,\n\t\t\t\t\tmainContent: match[4],\n\t\t\t\t\tchecked: match[3].toLowerCase() === \"x\"\n\t\t\t\t}),\n\t\t\t\tcreateToken: (data, nestedTokens) => ({\n\t\t\t\t\ttype: \"taskItem\",\n\t\t\t\t\traw: \"\",\n\t\t\t\t\tmainContent: data.mainContent,\n\t\t\t\t\tindentLevel: data.indentLevel,\n\t\t\t\t\tchecked: data.checked,\n\t\t\t\t\ttext: data.mainContent,\n\t\t\t\t\ttokens: lexer.inlineTokens(data.mainContent),\n\t\t\t\t\tnestedTokens\n\t\t\t\t}),\n\t\t\t\tcustomNestedParser: parseTaskListContent\n\t\t\t}, lexer);\n\t\t\tif (!result) return;\n\t\t\treturn {\n\t\t\t\ttype: \"taskList\",\n\t\t\t\traw: result.raw,\n\t\t\t\titems: result.items\n\t\t\t};\n\t\t}\n\t},\n\tmarkdownOptions: { indentsContent: true },\n\taddCommands() {\n\t\treturn { toggleTaskList: () => ({ commands }) => {\n\t\t\treturn commands.toggleList(this.name, this.options.itemTypeName);\n\t\t} };\n\t},\n\taddKeyboardShortcuts() {\n\t\treturn { \"Mod-Shift-9\": () => this.editor.commands.toggleTaskList() };\n\t}\n});\n//#endregion\n//#region src/kit/index.ts\n/**\n* The table kit is a collection of table editor extensions.\n*\n* It’s a good starting point for building your own table in Tiptap.\n*/\nconst ListKit = Extension.create({\n\tname: \"listKit\",\n\taddExtensions() {\n\t\tconst extensions = [];\n\t\tif (this.options.bulletList !== false) extensions.push(BulletList.configure(this.options.bulletList));\n\t\tif (this.options.listItem !== false) extensions.push(ListItem.configure(this.options.listItem));\n\t\tif (this.options.listKeymap !== false) extensions.push(ListKeymap.configure(this.options.listKeymap));\n\t\tif (this.options.orderedList !== false) extensions.push(OrderedList.configure(this.options.orderedList));\n\t\tif (this.options.taskItem !== false) extensions.push(TaskItem.configure(this.options.taskItem));\n\t\tif (this.options.taskList !== false) extensions.push(TaskList.configure(this.options.taskList));\n\t\treturn extensions;\n\t}\n});\n//#endregion\nexport { BulletList, ListItem, ListKeymap, ListKit, ORDERED_LIST_MARKER_PATTERN, OrderedList, TaskItem, TaskList, areOrderedListMarkersSequential, buildOrderedListAttrsFromMarker, bulletListInputRegex, detectMarkerType, getListMarker, inputRegex, listHelpers_exports as listHelpers, markerToStart, orderedListInputRegex, parseListMarker, parsePlainTextOrderedListPaste, toRoman, toRomanUpper };\n\n//# sourceMappingURL=index.js.map","import { Extension, Node, callOrReturn, findParentNodeClosestToPos, getExtensionField, mergeAttributes } from \"@tiptap/core\";\nimport { TextSelection } from \"@tiptap/pm/state\";\nimport { CellSelection, addColumnAfter, addColumnBefore, addRowAfter, addRowBefore, columnResizing, deleteColumn, deleteRow, deleteTable, fixTables, goToNextCell, mergeCells, setCellAttr, splitCell, tableEditing, toggleHeader, toggleHeaderCell } from \"@tiptap/pm/tables\";\n//#region src/utils/parseAlign.ts\n/**\n* Normalize unknown input into a supported table alignment\n*\n* @param value - A potential alignment value\n* @returns A valid TableCellAlign value or null\n*/\nfunction normalizeTableCellAlign(value) {\n\tif (value === \"left\" || value === \"right\" || value === \"center\") return value;\n\treturn null;\n}\n/**\n* Parse table cell alignment from an HTML element\n*\n* Prefers inline style (${\"`\"}text-align${\"`\"}) and falls back to the legacy\n* ${\"`\"}align${\"`\"} attribute.\n*\n* @param element - The table cell/header DOM element\n* @returns A valid TableCellAlign value or null\n*/\nfunction parseAlign(element) {\n\tconst styleAlign = (element.style.textAlign || \"\").trim().toLowerCase();\n\tconst attrAlign = (element.getAttribute(\"align\") || \"\").trim().toLowerCase();\n\treturn normalizeTableCellAlign(styleAlign || attrAlign);\n}\n/**\n* Normalize alignment from a generic attrs object that may include an align field\n*\n* @param attributes - A node attrs-like object with an optional align field\n* @returns A valid TableCellAlign value or null.\n*/\nfunction normalizeTableCellAlignFromAttributes(attributes) {\n\treturn normalizeTableCellAlign(attributes === null || attributes === void 0 ? void 0 : attributes.align);\n}\n/**\n* Create a reusable Tiptap attribute config for table alignment\n*\n* @returns A Tiptap Attribute definition that parses and renders table alignment\n*/\nfunction createAlignAttribute() {\n\treturn {\n\t\tdefault: null,\n\t\tparseHTML: (element) => parseAlign(element),\n\t\trenderHTML: (attributes) => {\n\t\t\tif (!attributes.align) return {};\n\t\t\treturn { style: `text-align: ${attributes.align}` };\n\t\t}\n\t};\n}\n//#endregion\n//#region src/utils/parseColwidth.ts\n/**\n* reads the width of the `<col>` element matching a cell's column from the table's `<colgroup>`\n*\n* @param element - The table cell/header DOM element\n* @returns - An array with the column width in pixels or null\n*/\nfunction parseColgroupWidth(element) {\n\tvar _table$querySelectorA;\n\tconst row = element.parentElement;\n\tconst table = element.closest(\"table\");\n\tif (!row || !table) return null;\n\tconst cellIndex = Array.from(row.children).indexOf(element);\n\tconst width = (_table$querySelectorA = table.querySelectorAll(\"colgroup > col\")[cellIndex]) === null || _table$querySelectorA === void 0 ? void 0 : _table$querySelectorA.getAttribute(\"width\");\n\treturn width ? [parseInt(width, 10)] : null;\n}\n/**\n* Parse the column width/s of a table cell/header from an HTML element.\n* it prefers the `colwidth` attribute and if not-provided falls back to the `width` attribute\n* of the matching `<col>` element in the table's `<colgroup>`.\n*\n* @param element - The table cell/header DOM element\n* @returns - An array of column widths in pixels or null\n*/\nfunction parseColwidth(element) {\n\tconst colwidth = element.getAttribute(\"colwidth\");\n\tif (colwidth) return colwidth.split(\",\").map((width) => parseInt(width, 10));\n\treturn parseColgroupWidth(element);\n}\n//#endregion\n//#region src/utils/fillEmptyCellContent.ts\nconst COLLAPSIBLE_WHITESPACE = /[ \\t\\r\\n\\f]+/g;\n/** Whether a cell/header element has no child elements and only collapsible whitespace. */\nfunction isEmptyCellElement(element) {\n\tvar _element$textContent;\n\tif (element.children.length > 0) return false;\n\treturn ((_element$textContent = element.textContent) !== null && _element$textContent !== void 0 ? _element$textContent : \"\").replace(COLLAPSIBLE_WHITESPACE, \"\") === \"\";\n}\n/** Builds a cell/header's minimal `block+` content, derived from the node type. */\nfunction fillEmptyCellContent(cellType) {\n\tconst filled = cellType.createAndFill();\n\tif (!filled) throw new Error(`[tiptap error]: \"${cellType.name}\" has no default content to backfill.`);\n\treturn filled.content;\n}\n//#endregion\n//#region src/cell/table-cell.ts\n/**\n* This extension allows you to create table cells.\n* @see https://www.tiptap.dev/api/nodes/table-cell\n*/\nconst TableCell = Node.create({\n\tname: \"tableCell\",\n\taddOptions() {\n\t\treturn { HTMLAttributes: {} };\n\t},\n\tcontent: \"block+\",\n\taddAttributes() {\n\t\treturn {\n\t\t\tcolspan: { default: 1 },\n\t\t\trowspan: { default: 1 },\n\t\t\tcolwidth: {\n\t\t\t\tdefault: null,\n\t\t\t\tparseHTML: parseColwidth\n\t\t\t},\n\t\t\talign: createAlignAttribute()\n\t\t};\n\t},\n\ttableRole: \"cell\",\n\tisolating: true,\n\tparseHTML() {\n\t\treturn [{\n\t\t\ttag: \"td\",\n\t\t\tgetAttrs: (node) => isEmptyCellElement(node) ? {} : false,\n\t\t\tgetContent: (_node, schema) => fillEmptyCellContent(schema.nodes[this.name])\n\t\t}, { tag: \"td\" }];\n\t},\n\trenderHTML({ HTMLAttributes }) {\n\t\treturn [\n\t\t\t\"td\",\n\t\t\tmergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n\t\t\t0\n\t\t];\n\t}\n});\n//#endregion\n//#region src/header/table-header.ts\n/**\n* This extension allows you to create table headers.\n* @see https://www.tiptap.dev/api/nodes/table-header\n*/\nconst TableHeader = Node.create({\n\tname: \"tableHeader\",\n\taddOptions() {\n\t\treturn { HTMLAttributes: {} };\n\t},\n\tcontent: \"block+\",\n\taddAttributes() {\n\t\treturn {\n\t\t\tcolspan: { default: 1 },\n\t\t\trowspan: { default: 1 },\n\t\t\tcolwidth: {\n\t\t\t\tdefault: null,\n\t\t\t\tparseHTML: parseColwidth\n\t\t\t},\n\t\t\talign: createAlignAttribute()\n\t\t};\n\t},\n\ttableRole: \"header_cell\",\n\tisolating: true,\n\tparseHTML() {\n\t\treturn [{\n\t\t\ttag: \"th\",\n\t\t\tgetAttrs: (node) => isEmptyCellElement(node) ? {} : false,\n\t\t\tgetContent: (_node, schema) => fillEmptyCellContent(schema.nodes[this.name])\n\t\t}, { tag: \"th\" }];\n\t},\n\trenderHTML({ HTMLAttributes }) {\n\t\treturn [\n\t\t\t\"th\",\n\t\t\tmergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n\t\t\t0\n\t\t];\n\t}\n});\n//#endregion\n//#region src/row/table-row.ts\n/**\n* This extension allows you to create table rows.\n* @see https://www.tiptap.dev/api/nodes/table-row\n*/\nconst TableRow = Node.create({\n\tname: \"tableRow\",\n\taddOptions() {\n\t\treturn { HTMLAttributes: {} };\n\t},\n\tcontent: \"(tableCell | tableHeader)*\",\n\ttableRole: \"row\",\n\tparseHTML() {\n\t\treturn [{ tag: \"tr\" }];\n\t},\n\trenderHTML({ HTMLAttributes }) {\n\t\treturn [\n\t\t\t\"tr\",\n\t\t\tmergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n\t\t\t0\n\t\t];\n\t}\n});\n//#endregion\n//#region src/table/utilities/colStyle.ts\nfunction getColStyleDeclaration(minWidth, width) {\n\tif (width) return [\"width\", `${Math.max(width, minWidth)}px`];\n\treturn [\"min-width\", `${minWidth}px`];\n}\n//#endregion\n//#region src/table/TableView.ts\nfunction updateColumns(node, colgroup, table, cellMinWidth, overrideCol, overrideValue) {\n\tlet totalWidth = 0;\n\tlet fixedWidth = true;\n\tlet nextDOM = colgroup.firstChild;\n\tconst row = node.firstChild;\n\tif (row !== null) for (let i = 0, col = 0; i < row.childCount; i += 1) {\n\t\tconst { colspan, colwidth } = row.child(i).attrs;\n\t\tfor (let j = 0; j < colspan; j += 1, col += 1) {\n\t\t\tconst hasWidth = overrideCol === col ? overrideValue : colwidth && colwidth[j];\n\t\t\tconst cssWidth = hasWidth ? `${hasWidth}px` : \"\";\n\t\t\ttotalWidth += hasWidth || cellMinWidth;\n\t\t\tif (!hasWidth) fixedWidth = false;\n\t\t\tif (!nextDOM) {\n\t\t\t\tconst colElement = document.createElement(\"col\");\n\t\t\t\tconst [propertyKey, propertyValue] = getColStyleDeclaration(cellMinWidth, hasWidth);\n\t\t\t\tcolElement.style.setProperty(propertyKey, propertyValue);\n\t\t\t\tcolgroup.appendChild(colElement);\n\t\t\t} else {\n\t\t\t\tif (nextDOM.style.width !== cssWidth) {\n\t\t\t\t\tconst [propertyKey, propertyValue] = getColStyleDeclaration(cellMinWidth, hasWidth);\n\t\t\t\t\tnextDOM.style.setProperty(propertyKey, propertyValue);\n\t\t\t\t}\n\t\t\t\tnextDOM = nextDOM.nextSibling;\n\t\t\t}\n\t\t}\n\t}\n\twhile (nextDOM) {\n\t\tvar _nextDOM$parentNode;\n\t\tconst after = nextDOM.nextSibling;\n\t\t(_nextDOM$parentNode = nextDOM.parentNode) === null || _nextDOM$parentNode === void 0 || _nextDOM$parentNode.removeChild(nextDOM);\n\t\tnextDOM = after;\n\t}\n\tconst hasUserWidth = node.attrs.style && typeof node.attrs.style === \"string\" && /\\bwidth\\s*:/i.test(node.attrs.style);\n\tif (fixedWidth && !hasUserWidth) {\n\t\ttable.style.width = `${totalWidth}px`;\n\t\ttable.style.minWidth = \"\";\n\t} else {\n\t\ttable.style.width = \"\";\n\t\ttable.style.minWidth = `${totalWidth}px`;\n\t}\n}\nvar TableView = class {\n\tconstructor(node, cellMinWidth, _view, HTMLAttributes = {}) {\n\t\tthis.node = node;\n\t\tthis.cellMinWidth = cellMinWidth;\n\t\tthis.dom = document.createElement(\"div\");\n\t\tthis.dom.className = \"tableWrapper\";\n\t\tthis.table = this.dom.appendChild(document.createElement(\"table\"));\n\t\tfor (const [key, value] of Object.entries(HTMLAttributes)) if (value !== void 0 && value !== null) {\n\t\t\tif (key === \"style\") this.table.style.cssText = String(value);\n\t\t\telse this.table.setAttribute(key, String(value));\n\t\t}\n\t\tif (node.attrs.style) this.table.style.cssText = node.attrs.style;\n\t\tthis.colgroup = this.table.appendChild(document.createElement(\"colgroup\"));\n\t\tupdateColumns(node, this.colgroup, this.table, cellMinWidth);\n\t\tthis.contentDOM = this.table.appendChild(document.createElement(\"tbody\"));\n\t}\n\tupdate(node) {\n\t\tif (node.type !== this.node.type) return false;\n\t\tthis.node = node;\n\t\tupdateColumns(node, this.colgroup, this.table, this.cellMinWidth);\n\t\treturn true;\n\t}\n\tignoreMutation(mutation) {\n\t\tconst target = mutation.target;\n\t\tconst isInsideWrapper = this.dom.contains(target);\n\t\tconst isInsideContent = this.contentDOM.contains(target);\n\t\tif (isInsideWrapper && !isInsideContent) {\n\t\t\tif (mutation.type === \"attributes\" || mutation.type === \"childList\" || mutation.type === \"characterData\") return true;\n\t\t}\n\t\treturn false;\n\t}\n};\n//#endregion\n//#region src/table/utilities/createColGroup.ts\nfunction createColGroup(node, cellMinWidth, overrideCol, overrideValue) {\n\tlet totalWidth = 0;\n\tlet fixedWidth = true;\n\tconst cols = [];\n\tconst row = node.firstChild;\n\tif (!row) return {};\n\tfor (let i = 0, col = 0; i < row.childCount; i += 1) {\n\t\tconst { colspan, colwidth } = row.child(i).attrs;\n\t\tfor (let j = 0; j < colspan; j += 1, col += 1) {\n\t\t\tconst hasWidth = overrideCol === col ? overrideValue : colwidth && colwidth[j];\n\t\t\ttotalWidth += hasWidth || cellMinWidth;\n\t\t\tif (!hasWidth) fixedWidth = false;\n\t\t\tconst [property, value] = getColStyleDeclaration(cellMinWidth, hasWidth);\n\t\t\tcols.push([\"col\", { style: `${property}: ${value}` }]);\n\t\t}\n\t}\n\tconst tableWidth = fixedWidth ? `${totalWidth}px` : \"\";\n\tconst tableMinWidth = fixedWidth ? \"\" : `${totalWidth}px`;\n\treturn {\n\t\tcolgroup: [\n\t\t\t\"colgroup\",\n\t\t\t{},\n\t\t\t...cols\n\t\t],\n\t\ttableWidth,\n\t\ttableMinWidth\n\t};\n}\n//#endregion\n//#region src/table/utilities/createCell.ts\nfunction createCell(cellType, cellContent) {\n\tif (cellContent) return cellType.createChecked(null, cellContent);\n\treturn cellType.createAndFill();\n}\n//#endregion\n//#region src/table/utilities/getTableNodeTypes.ts\nfunction getTableNodeTypes(schema) {\n\tif (schema.cached.tableNodeTypes) return schema.cached.tableNodeTypes;\n\tconst roles = {};\n\tObject.keys(schema.nodes).forEach((type) => {\n\t\tconst nodeType = schema.nodes[type];\n\t\tif (nodeType.spec.tableRole) roles[nodeType.spec.tableRole] = nodeType;\n\t});\n\tschema.cached.tableNodeTypes = roles;\n\treturn roles;\n}\n//#endregion\n//#region src/table/utilities/createTable.ts\nfunction createTable(schema, rowsCount, colsCount, withHeaderRow, cellContent) {\n\tconst types = getTableNodeTypes(schema);\n\tconst headerCells = [];\n\tconst cells = [];\n\tfor (let index = 0; index < colsCount; index += 1) {\n\t\tconst cell = createCell(types.cell, cellContent);\n\t\tif (cell) cells.push(cell);\n\t\tif (withHeaderRow) {\n\t\t\tconst headerCell = createCell(types.header_cell, cellContent);\n\t\t\tif (headerCell) headerCells.push(headerCell);\n\t\t}\n\t}\n\tconst rows = [];\n\tfor (let index = 0; index < rowsCount; index += 1) rows.push(types.row.createChecked(null, withHeaderRow && index === 0 ? headerCells : cells));\n\treturn types.table.createChecked(null, rows);\n}\n//#endregion\n//#region src/table/utilities/isCellSelection.ts\nfunction isCellSelection(value) {\n\treturn value instanceof CellSelection;\n}\n//#endregion\n//#region src/table/utilities/deleteTableWhenAllCellsSelected.ts\nconst deleteTableWhenAllCellsSelected = ({ editor }) => {\n\tconst { selection } = editor.state;\n\tif (!isCellSelection(selection)) return false;\n\tlet cellCount = 0;\n\tconst table = findParentNodeClosestToPos(selection.ranges[0].$from, (node) => {\n\t\treturn node.type.name === \"table\";\n\t});\n\ttable === null || table === void 0 || table.node.descendants((node) => {\n\t\tif (node.type.name === \"table\") return false;\n\t\tif ([\"tableCell\", \"tableHeader\"].includes(node.type.name)) cellCount += 1;\n\t});\n\tif (!(cellCount === selection.ranges.length)) return false;\n\teditor.commands.deleteTable();\n\treturn true;\n};\n//#endregion\n//#region src/table/utilities/keepCursorInTable.ts\nfunction keepCursorInTable(tr, tablePos) {\n\tconst mappedTablePos = tr.mapping.map(tablePos);\n\tconst stillInTable = findParentNodeClosestToPos(tr.selection.$from, (node) => node.type.name === \"table\");\n\tif ((stillInTable === null || stillInTable === void 0 ? void 0 : stillInTable.pos) === mappedTablePos) return;\n\tconst tableNode = tr.doc.nodeAt(mappedTablePos);\n\tif (!tableNode) return;\n\tconst endOfTable = mappedTablePos + tableNode.nodeSize - 1;\n\ttr.setSelection(TextSelection.near(tr.doc.resolve(endOfTable), -1));\n}\n//#endregion\n//#region src/table/utilities/markdown.ts\nconst DEFAULT_CELL_LINE_SEPARATOR = \"\u001f\";\n/**\n* Walk a single table-row line and escape any `|` characters that appear\n* inside backtick code spans so marked's cell splitter ignores them.\n* Backslash escape sequences outside code spans are passed through untouched.\n* If a backtick run has no matching closer on the same line it is emitted\n* as-is — no over-escaping for malformed input.\n*/\nfunction escapeTableCellPipes(line) {\n\tlet result = \"\";\n\tlet i = 0;\n\twhile (i < line.length) {\n\t\tif (line[i] === \"\\\\\" && i + 1 < line.length) {\n\t\t\tresult += line[i] + line[i + 1];\n\t\t\ti += 2;\n\t\t\tcontinue;\n\t\t}\n\t\tif (line[i] !== \"`\") {\n\t\t\tresult += line[i++];\n\t\t\tcontinue;\n\t\t}\n\t\tlet runLen = 0;\n\t\twhile (i + runLen < line.length && line[i + runLen] === \"`\") runLen += 1;\n\t\tlet j = i + runLen;\n\t\tlet found = false;\n\t\twhile (j < line.length) {\n\t\t\tif (line[j] !== \"`\") {\n\t\t\t\tj += 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlet closeLen = 0;\n\t\t\twhile (j + closeLen < line.length && line[j + closeLen] === \"`\") closeLen += 1;\n\t\t\tif (closeLen === runLen) {\n\t\t\t\tconst spanContent = line.slice(i + runLen, j);\n\t\t\t\tresult += line.slice(i, i + runLen) + spanContent.replace(/\\\\\\||\\|/g, (match) => match === \"|\" ? \"\\\\|\" : match) + line.slice(j, j + runLen);\n\t\t\t\ti = j + runLen;\n\t\t\t\tfound = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tj += closeLen;\n\t\t}\n\t\tif (!found) {\n\t\t\tresult += line.slice(i, i + runLen);\n\t\t\ti += runLen;\n\t\t}\n\t}\n\treturn result;\n}\n/**\n* Escape pipe characters inside backtick code spans on table-row lines.\n* marked's `splitCells` only recognises backslash-escaped pipes (`\\|`) and\n* splits on every other `|`, so \\`a || b\\` in a table cell would be treated\n* as multiple column delimiters. Escaping them here lets `splitCells` skip\n* them; it already converts `\\|` → `|` after splitting, so the cell content\n* is restored correctly.\n*/\nfunction preprocessTablePipes(src) {\n\treturn src.split(\"\\n\").map((line) => {\n\t\tif (!line.includes(\"|\") || !line.includes(\"`\")) return line;\n\t\treturn escapeTableCellPipes(line);\n\t}).join(\"\\n\");\n}\nfunction collapseWhitespace(s) {\n\treturn (s || \"\").replace(/\\s+/g, \" \").trim();\n}\nfunction renderTableToMarkdown(node, h, options = {}) {\n\tvar _options$cellLineSepa;\n\tconst cellSep = (_options$cellLineSepa = options.cellLineSeparator) !== null && _options$cellLineSepa !== void 0 ? _options$cellLineSepa : \"\u001f\";\n\tif (!node || !node.content || node.content.length === 0) return \"\";\n\tconst rows = [];\n\tnode.content.forEach((rowNode) => {\n\t\tconst cells = [];\n\t\tif (rowNode.content) rowNode.content.forEach((cellNode) => {\n\t\t\tlet raw = \"\";\n\t\t\tif (cellNode.content && Array.isArray(cellNode.content) && cellNode.content.length > 1) raw = cellNode.content.map((child) => h.renderChildren(child)).join(cellSep);\n\t\t\telse raw = cellNode.content ? h.renderChildren(cellNode.content) : \"\";\n\t\t\tconst text = collapseWhitespace(raw.split(cellSep).join(\"\\n\").replace(/[ \\t]*\\r?\\n[ \\t]*/g, \"<br>\"));\n\t\t\tconst isHeader = cellNode.type === \"tableHeader\";\n\t\t\tconst align = normalizeTableCellAlignFromAttributes(cellNode.attrs);\n\t\t\tcells.push({\n\t\t\t\ttext,\n\t\t\t\tisHeader,\n\t\t\t\talign\n\t\t\t});\n\t\t});\n\t\trows.push(cells);\n\t});\n\tconst columnCount = rows.reduce((max, r) => Math.max(max, r.length), 0);\n\tif (columnCount === 0) return \"\";\n\tconst colWidths = Array.from({ length: columnCount }).fill(0);\n\trows.forEach((r) => {\n\t\tfor (let i = 0; i < columnCount; i += 1) {\n\t\t\tvar _r$i;\n\t\t\tconst len = (((_r$i = r[i]) === null || _r$i === void 0 ? void 0 : _r$i.text) || \"\").length;\n\t\t\tif (len > colWidths[i]) colWidths[i] = len;\n\t\t\tif (colWidths[i] < 3) colWidths[i] = 3;\n\t\t}\n\t});\n\tconst pad = (s, width) => s + \" \".repeat(Math.max(0, width - s.length));\n\tconst headerRow = rows[0];\n\tconst hasHeader = headerRow.some((c) => c.isHeader);\n\tconst colAlignments = Array.from({ length: columnCount }).fill(null);\n\trows.forEach((r) => {\n\t\tfor (let i = 0; i < columnCount; i += 1) {\n\t\t\tvar _r$i2;\n\t\t\tif (!colAlignments[i] && ((_r$i2 = r[i]) === null || _r$i2 === void 0 ? void 0 : _r$i2.align)) colAlignments[i] = r[i].align;\n\t\t}\n\t});\n\tlet out = \"\\n\";\n\tconst headerTexts = Array.from({ length: columnCount }).map((_, i) => hasHeader ? headerRow[i] && headerRow[i].text || \"\" : \"\");\n\tout += `| ${headerTexts.map((t, i) => pad(t, colWidths[i])).join(\" | \")} |\\n`;\n\tout += `| ${colWidths.map((w, index) => {\n\t\tconst dashCount = Math.max(3, w);\n\t\tconst alignment = colAlignments[index];\n\t\tif (alignment === \"left\") return `:${\"-\".repeat(dashCount)}`;\n\t\tif (alignment === \"right\") return `${\"-\".repeat(dashCount)}:`;\n\t\tif (alignment === \"center\") return `:${\"-\".repeat(dashCount)}:`;\n\t\treturn \"-\".repeat(dashCount);\n\t}).join(\" | \")} |\\n`;\n\t(hasHeader ? rows.slice(1) : rows).forEach((r) => {\n\t\tout += `| ${Array.from({ length: columnCount }).fill(0).map((_, i) => pad(r[i] && r[i].text || \"\", colWidths[i])).join(\" | \")} |\\n`;\n\t});\n\treturn out;\n}\n//#endregion\n//#region src/table/table.ts\n/**\n* This extension allows you to create tables.\n* @see https://www.tiptap.dev/api/nodes/table\n*/\nconst Table = Node.create({\n\tname: \"table\",\n\taddOptions() {\n\t\treturn {\n\t\t\tHTMLAttributes: {},\n\t\t\tresizable: false,\n\t\t\trenderWrapper: false,\n\t\t\thandleWidth: 5,\n\t\t\tcellMinWidth: 25,\n\t\t\tView: TableView,\n\t\t\tlastColumnResizable: true,\n\t\t\tallowTableNodeSelection: false\n\t\t};\n\t},\n\tcontent: \"tableRow+\",\n\ttableRole: \"table\",\n\tisolating: true,\n\tgroup: \"block\",\n\tparseHTML() {\n\t\treturn [{ tag: \"table\" }];\n\t},\n\trenderHTML({ node, HTMLAttributes }) {\n\t\tconst { colgroup, tableWidth, tableMinWidth } = createColGroup(node, this.options.cellMinWidth);\n\t\tconst userStyles = HTMLAttributes.style;\n\t\tfunction getTableStyle() {\n\t\t\tif (userStyles) return userStyles;\n\t\t\treturn tableWidth ? `width: ${tableWidth}` : `min-width: ${tableMinWidth}`;\n\t\t}\n\t\tconst table = [\n\t\t\t\"table\",\n\t\t\tmergeAttributes(this.options.HTMLAttributes, HTMLAttributes, { style: getTableStyle() }),\n\t\t\tcolgroup,\n\t\t\t[\"tbody\", 0]\n\t\t];\n\t\treturn this.options.renderWrapper ? [\n\t\t\t\"div\",\n\t\t\t{ class: \"tableWrapper\" },\n\t\t\ttable\n\t\t] : table;\n\t},\n\tparseMarkdown: (token, h) => {\n\t\tconst rows = [];\n\t\tconst alignments = Array.isArray(token.align) ? token.align : [];\n\t\tif (token.header) {\n\t\t\tconst headerCells = [];\n\t\t\ttoken.header.forEach((cell, index) => {\n\t\t\t\tvar _alignments$index;\n\t\t\t\tconst align = normalizeTableCellAlign((_alignments$index = alignments[index]) !== null && _alignments$index !== void 0 ? _alignments$index : cell.align);\n\t\t\t\tconst attrs = align ? { align } : {};\n\t\t\t\theaderCells.push(h.createNode(\"tableHeader\", attrs, [{\n\t\t\t\t\ttype: \"paragraph\",\n\t\t\t\t\tcontent: h.parseInline(cell.tokens)\n\t\t\t\t}]));\n\t\t\t});\n\t\t\trows.push(h.createNode(\"tableRow\", {}, headerCells));\n\t\t}\n\t\tif (token.rows) token.rows.forEach((row) => {\n\t\t\tconst bodyCells = [];\n\t\t\trow.forEach((cell, index) => {\n\t\t\t\tvar _alignments$index2;\n\t\t\t\tconst align = normalizeTableCellAlign((_alignments$index2 = alignments[index]) !== null && _alignments$index2 !== void 0 ? _alignments$index2 : cell.align);\n\t\t\t\tconst attrs = align ? { align } : {};\n\t\t\t\tbodyCells.push(h.createNode(\"tableCell\", attrs, [{\n\t\t\t\t\ttype: \"paragraph\",\n\t\t\t\t\tcontent: h.parseInline(cell.tokens)\n\t\t\t\t}]));\n\t\t\t});\n\t\t\trows.push(h.createNode(\"tableRow\", {}, bodyCells));\n\t\t});\n\t\treturn h.createNode(\"table\", void 0, rows);\n\t},\n\trenderMarkdown: (node, h) => {\n\t\treturn renderTableToMarkdown(node, h);\n\t},\n\tmarkdownTokenizer: {\n\t\tname: \"table\",\n\t\tlevel: \"block\",\n\t\tstart: (src) => {\n\t\t\tconst lines = src.split(\"\\n\");\n\t\t\tif (lines.length < 2) return -1;\n\t\t\tconst sep = lines[1];\n\t\t\tif (!/^[ \\t|:]*-[ \\t|:-]*$/.test(sep) || !sep.includes(\"|\")) return -1;\n\t\t\treturn lines[0].includes(\"|\") ? 0 : -1;\n\t\t},\n\t\ttokenize(src, _tokens, helper) {\n\t\t\tconst blankLineIndex = src.indexOf(\"\\n\\n\");\n\t\t\tconst candidate = blankLineIndex >= 0 ? src.slice(0, blankLineIndex) : src;\n\t\t\tconst candidateLines = candidate.split(\"\\n\");\n\t\t\tif (candidateLines.length < 2) return void 0;\n\t\t\tconst sep = candidateLines[1];\n\t\t\tif (!/^[ \\t|:]*-[ \\t|:-]*$/.test(sep) || !sep.includes(\"|\")) return void 0;\n\t\t\tconst preprocessed = preprocessTablePipes(candidate);\n\t\t\tif (preprocessed === candidate) return void 0;\n\t\t\tconst tableToken = helper.blockTokens(preprocessed)[0];\n\t\t\tif ((tableToken === null || tableToken === void 0 ? void 0 : tableToken.type) !== \"table\" || !tableToken.raw) return void 0;\n\t\t\tconst lineCount = tableToken.raw.split(\"\\n\").length;\n\t\t\tconst raw = src.split(\"\\n\").slice(0, lineCount).join(\"\\n\");\n\t\t\treturn {\n\t\t\t\t...tableToken,\n\t\t\t\traw\n\t\t\t};\n\t\t}\n\t},\n\taddCommands() {\n\t\treturn {\n\t\t\tinsertTable: ({ rows = 3, cols = 3, withHeaderRow = true } = {}) => ({ tr, dispatch, editor }) => {\n\t\t\t\tconst node = createTable(editor.schema, rows, cols, withHeaderRow);\n\t\t\t\tif (dispatch) {\n\t\t\t\t\tconst offset = tr.selection.from + 1;\n\t\t\t\t\ttr.replaceSelectionWith(node).scrollIntoView().setSelection(TextSelection.near(tr.doc.resolve(offset)));\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\taddColumnBefore: () => ({ state, dispatch }) => {\n\t\t\t\treturn addColumnBefore(state, dispatch);\n\t\t\t},\n\t\t\taddColumnAfter: () => ({ state, dispatch }) => {\n\t\t\t\treturn addColumnAfter(state, dispatch);\n\t\t\t},\n\t\t\tdeleteColumn: () => ({ state, dispatch }) => {\n\t\t\t\tconst table = findParentNodeClosestToPos(state.selection.$from, (node) => node.type.name === \"table\");\n\t\t\t\treturn deleteColumn(state, dispatch && ((tr) => {\n\t\t\t\t\tif (table) keepCursorInTable(tr, table.pos);\n\t\t\t\t\tdispatch(tr);\n\t\t\t\t}));\n\t\t\t},\n\t\t\taddRowBefore: () => ({ state, dispatch }) => {\n\t\t\t\treturn addRowBefore(state, dispatch);\n\t\t\t},\n\t\t\taddRowAfter: () => ({ state, dispatch }) => {\n\t\t\t\treturn addRowAfter(state, dispatch);\n\t\t\t},\n\t\t\tdeleteRow: () => ({ state, dispatch }) => {\n\t\t\t\tconst table = findParentNodeClosestToPos(state.selection.$from, (node) => node.type.name === \"table\");\n\t\t\t\treturn deleteRow(state, dispatch && ((tr) => {\n\t\t\t\t\tif (table) keepCursorInTable(tr, table.pos);\n\t\t\t\t\tdispatch(tr);\n\t\t\t\t}));\n\t\t\t},\n\t\t\tdeleteTable: () => ({ state, dispatch }) => {\n\t\t\t\treturn deleteTable(state, dispatch);\n\t\t\t},\n\t\t\tmergeCells: () => ({ state, dispatch }) => {\n\t\t\t\treturn mergeCells(state, dispatch);\n\t\t\t},\n\t\t\tsplitCell: () => ({ state, dispatch }) => {\n\t\t\t\treturn splitCell(state, dispatch);\n\t\t\t},\n\t\t\ttoggleHeaderColumn: () => ({ state, dispatch }) => {\n\t\t\t\treturn toggleHeader(\"column\")(state, dispatch);\n\t\t\t},\n\t\t\ttoggleHeaderRow: () => ({ state, dispatch }) => {\n\t\t\t\treturn toggleHeader(\"row\")(state, dispatch);\n\t\t\t},\n\t\t\ttoggleHeaderCell: () => ({ state, dispatch }) => {\n\t\t\t\treturn toggleHeaderCell(state, dispatch);\n\t\t\t},\n\t\t\tmergeOrSplit: () => ({ state, dispatch }) => {\n\t\t\t\tif (mergeCells(state, dispatch)) return true;\n\t\t\t\treturn splitCell(state, dispatch);\n\t\t\t},\n\t\t\tsetCellAttribute: (name, value) => ({ state, dispatch }) => {\n\t\t\t\treturn setCellAttr(name, value)(state, dispatch);\n\t\t\t},\n\t\t\tgoToNextCell: () => ({ state, dispatch }) => {\n\t\t\t\treturn goToNextCell(1)(state, dispatch);\n\t\t\t},\n\t\t\tgoToPreviousCell: () => ({ state, dispatch }) => {\n\t\t\t\treturn goToNextCell(-1)(state, dispatch);\n\t\t\t},\n\t\t\tfixTables: () => ({ state, dispatch }) => {\n\t\t\t\tif (dispatch) fixTables(state);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tsetCellSelection: (position) => ({ tr, dispatch }) => {\n\t\t\t\tif (dispatch) {\n\t\t\t\t\tconst selection = CellSelection.create(tr.doc, position.anchorCell, position.headCell);\n\t\t\t\t\ttr.setSelection(selection);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t};\n\t},\n\taddKeyboardShortcuts() {\n\t\treturn {\n\t\t\tTab: () => {\n\t\t\t\tif (this.editor.commands.goToNextCell()) return true;\n\t\t\t\tif (!this.editor.can().addRowAfter()) return false;\n\t\t\t\treturn this.editor.chain().addRowAfter().goToNextCell().run();\n\t\t\t},\n\t\t\t\"Shift-Tab\": () => this.editor.commands.goToPreviousCell(),\n\t\t\tBackspace: deleteTableWhenAllCellsSelected,\n\t\t\t\"Mod-Backspace\": deleteTableWhenAllCellsSelected,\n\t\t\tDelete: deleteTableWhenAllCellsSelected,\n\t\t\t\"Mod-Delete\": deleteTableWhenAllCellsSelected\n\t\t};\n\t},\n\taddProseMirrorPlugins() {\n\t\treturn [...this.options.resizable && this.editor.isEditable ? [columnResizing({\n\t\t\thandleWidth: this.options.handleWidth,\n\t\t\tcellMinWidth: this.options.cellMinWidth,\n\t\t\tdefaultCellMinWidth: this.options.cellMinWidth,\n\t\t\tView: this.options.View,\n\t\t\tlastColumnResizable: this.options.lastColumnResizable\n\t\t})] : [], tableEditing({ allowTableNodeSelection: this.options.allowTableNodeSelection })];\n\t},\n\taddNodeView() {\n\t\tconst isResizable = this.options.resizable && this.editor.isEditable;\n\t\tconst View = this.options.View;\n\t\tif (isResizable || !View) return null;\n\t\treturn ({ node, view, HTMLAttributes }) => {\n\t\t\tconst mergedAttributes = mergeAttributes(this.options.HTMLAttributes, HTMLAttributes);\n\t\t\treturn new View(node, this.options.cellMinWidth, view, mergedAttributes);\n\t\t};\n\t},\n\textendNodeSchema(extension) {\n\t\tconst context = {\n\t\t\tname: extension.name,\n\t\t\toptions: extension.options,\n\t\t\tstorage: extension.storage\n\t\t};\n\t\treturn { tableRole: callOrReturn(getExtensionField(extension, \"tableRole\", context)) };\n\t}\n});\n//#endregion\n//#region src/kit/index.ts\n/**\n* The table kit is a collection of table editor extensions.\n*\n* It’s a good starting point for building your own table in Tiptap.\n*/\nconst TableKit = Extension.create({\n\tname: \"tableKit\",\n\taddExtensions() {\n\t\tconst extensions = [];\n\t\tif (this.options.table !== false) extensions.push(Table.configure(this.options.table));\n\t\tif (this.options.tableCell !== false) extensions.push(TableCell.configure(this.options.tableCell));\n\t\tif (this.options.tableHeader !== false) extensions.push(TableHeader.configure(this.options.tableHeader));\n\t\tif (this.options.tableRow !== false) extensions.push(TableRow.configure(this.options.tableRow));\n\t\treturn extensions;\n\t}\n});\n//#endregion\nexport { DEFAULT_CELL_LINE_SEPARATOR, Table, TableCell, TableHeader, TableKit, TableRow, TableView, createColGroup, createTable, escapeTableCellPipes, preprocessTablePipes, renderTableToMarkdown, updateColumns };\n\n//# sourceMappingURL=index.js.map","import { Extension, Mark, getStyleProperty, mergeAttributes } from \"@tiptap/core\";\n//#region src/text-style/index.ts\nconst MAX_FIND_CHILD_SPAN_DEPTH = 20;\n/**\n* Returns all next child spans, either direct children or nested deeper\n* but won't traverse deeper into child spans found, will only go MAX_FIND_CHILD_SPAN_DEPTH levels deep (default: 20)\n*/\nconst findChildSpans = (element, depth = 0) => {\n\tconst childSpans = [];\n\tif (!element.children.length || depth > MAX_FIND_CHILD_SPAN_DEPTH) return childSpans;\n\tArray.from(element.children).forEach((child) => {\n\t\tif (child.tagName === \"SPAN\") childSpans.push(child);\n\t\telse if (child.children.length) childSpans.push(...findChildSpans(child, depth + 1));\n\t});\n\treturn childSpans;\n};\nconst mergeNestedSpanStyles = (element) => {\n\tif (!element.children.length) return;\n\tconst childSpans = findChildSpans(element);\n\tif (!childSpans) return;\n\tchildSpans.forEach((childSpan) => {\n\t\tvar _childSpan$parentElem;\n\t\tconst childStyle = childSpan.getAttribute(\"style\");\n\t\tconst closestParentSpanStyleOfChild = (_childSpan$parentElem = childSpan.parentElement) === null || _childSpan$parentElem === void 0 || (_childSpan$parentElem = _childSpan$parentElem.closest(\"span\")) === null || _childSpan$parentElem === void 0 ? void 0 : _childSpan$parentElem.getAttribute(\"style\");\n\t\tchildSpan.setAttribute(\"style\", `${closestParentSpanStyleOfChild};${childStyle}`);\n\t});\n};\n/**\n* This extension allows you to create text styles. It is required by default\n* for the `text-color` and `font-family` extensions.\n* @see https://www.tiptap.dev/api/marks/text-style\n*/\nconst TextStyle = Mark.create({\n\tname: \"textStyle\",\n\tpriority: 101,\n\taddOptions() {\n\t\treturn {\n\t\t\tHTMLAttributes: {},\n\t\t\tmergeNestedSpanStyles: true\n\t\t};\n\t},\n\tparseHTML() {\n\t\treturn [{\n\t\t\ttag: \"span\",\n\t\t\tconsuming: false,\n\t\t\tgetAttrs: (element) => {\n\t\t\t\tif (!element.hasAttribute(\"style\")) return false;\n\t\t\t\tif (this.options.mergeNestedSpanStyles) mergeNestedSpanStyles(element);\n\t\t\t\treturn {};\n\t\t\t}\n\t\t}];\n\t},\n\trenderHTML({ HTMLAttributes }) {\n\t\treturn [\n\t\t\t\"span\",\n\t\t\tmergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n\t\t\t0\n\t\t];\n\t},\n\taddCommands() {\n\t\treturn {\n\t\t\ttoggleTextStyle: (attributes) => ({ commands }) => {\n\t\t\t\treturn commands.toggleMark(this.name, attributes);\n\t\t\t},\n\t\t\tremoveEmptyTextStyle: () => ({ tr }) => {\n\t\t\t\tconst { selection } = tr;\n\t\t\t\ttr.doc.nodesBetween(selection.from, selection.to, (node, pos) => {\n\t\t\t\t\tif (!node.isInline) return true;\n\t\t\t\t\tif (!node.marks.filter((mark) => mark.type === this.type).some((mark) => Object.values(mark.attrs).some((value) => !!value))) tr.removeMark(pos, pos + node.nodeSize, this.type);\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t}\n\t\t};\n\t}\n});\n//#endregion\n//#region src/background-color/background-color.ts\n/**\n* This extension allows you to color your text.\n* @see https://tiptap.dev/api/extensions/background-color\n*/\nconst BackgroundColor = Extension.create({\n\tname: \"backgroundColor\",\n\taddOptions() {\n\t\treturn { types: [\"textStyle\"] };\n\t},\n\taddGlobalAttributes() {\n\t\treturn [{\n\t\t\ttypes: this.options.types,\n\t\t\tattributes: { backgroundColor: {\n\t\t\t\tdefault: null,\n\t\t\t\tparseHTML: (element) => {\n\t\t\t\t\tvar _getStyleProperty;\n\t\t\t\t\tconst value = (_getStyleProperty = getStyleProperty(element, \"background-color\")) !== null && _getStyleProperty !== void 0 ? _getStyleProperty : element.style.backgroundColor;\n\t\t\t\t\treturn value === null || value === void 0 ? void 0 : value.replace(/['\"]+/g, \"\");\n\t\t\t\t},\n\t\t\t\trenderHTML: (attributes) => {\n\t\t\t\t\tif (!attributes.backgroundColor) return {};\n\t\t\t\t\treturn { style: `background-color: ${attributes.backgroundColor}` };\n\t\t\t\t}\n\t\t\t} }\n\t\t}];\n\t},\n\taddCommands() {\n\t\treturn {\n\t\t\tsetBackgroundColor: (backgroundColor) => ({ chain }) => {\n\t\t\t\treturn chain().setMark(\"textStyle\", { backgroundColor }).run();\n\t\t\t},\n\t\t\tunsetBackgroundColor: () => ({ chain }) => {\n\t\t\t\treturn chain().setMark(\"textStyle\", { backgroundColor: null }).removeEmptyTextStyle().run();\n\t\t\t}\n\t\t};\n\t}\n});\n//#endregion\n//#region src/color/color.ts\n/**\n* This extension allows you to color your text.\n* @see https://tiptap.dev/api/extensions/color\n*/\nconst Color = Extension.create({\n\tname: \"color\",\n\taddOptions() {\n\t\treturn { types: [\"textStyle\"] };\n\t},\n\taddGlobalAttributes() {\n\t\treturn [{\n\t\t\ttypes: this.options.types,\n\t\t\tattributes: { color: {\n\t\t\t\tdefault: null,\n\t\t\t\tparseHTML: (element) => {\n\t\t\t\t\tvar _getStyleProperty;\n\t\t\t\t\tconst value = (_getStyleProperty = getStyleProperty(element, \"color\")) !== null && _getStyleProperty !== void 0 ? _getStyleProperty : element.style.color;\n\t\t\t\t\treturn value === null || value === void 0 ? void 0 : value.replace(/['\"]+/g, \"\");\n\t\t\t\t},\n\t\t\t\trenderHTML: (attributes) => {\n\t\t\t\t\tif (!attributes.color) return {};\n\t\t\t\t\treturn { style: `color: ${attributes.color}` };\n\t\t\t\t}\n\t\t\t} }\n\t\t}];\n\t},\n\taddCommands() {\n\t\treturn {\n\t\t\tsetColor: (color) => ({ chain }) => {\n\t\t\t\treturn chain().setMark(\"textStyle\", { color }).run();\n\t\t\t},\n\t\t\tunsetColor: () => ({ chain }) => {\n\t\t\t\treturn chain().setMark(\"textStyle\", { color: null }).removeEmptyTextStyle().run();\n\t\t\t}\n\t\t};\n\t}\n});\n//#endregion\n//#region src/font-family/font-family.ts\n/**\n* This extension allows you to set a font family for text.\n* @see https://www.tiptap.dev/api/extensions/font-family\n*/\nconst FontFamily = Extension.create({\n\tname: \"fontFamily\",\n\taddOptions() {\n\t\treturn { types: [\"textStyle\"] };\n\t},\n\taddGlobalAttributes() {\n\t\treturn [{\n\t\t\ttypes: this.options.types,\n\t\t\tattributes: { fontFamily: {\n\t\t\t\tdefault: null,\n\t\t\t\tparseHTML: (element) => {\n\t\t\t\t\tvar _getStyleProperty;\n\t\t\t\t\treturn (_getStyleProperty = getStyleProperty(element, \"font-family\")) !== null && _getStyleProperty !== void 0 ? _getStyleProperty : element.style.fontFamily;\n\t\t\t\t},\n\t\t\t\trenderHTML: (attributes) => {\n\t\t\t\t\tif (!attributes.fontFamily) return {};\n\t\t\t\t\treturn { style: `font-family: ${attributes.fontFamily}` };\n\t\t\t\t}\n\t\t\t} }\n\t\t}];\n\t},\n\taddCommands() {\n\t\treturn {\n\t\t\tsetFontFamily: (fontFamily) => ({ chain }) => {\n\t\t\t\treturn chain().setMark(\"textStyle\", { fontFamily }).run();\n\t\t\t},\n\t\t\tunsetFontFamily: () => ({ chain }) => {\n\t\t\t\treturn chain().setMark(\"textStyle\", { fontFamily: null }).removeEmptyTextStyle().run();\n\t\t\t}\n\t\t};\n\t}\n});\n//#endregion\n//#region src/font-size/font-size.ts\n/**\n* This extension allows you to set a font size for text.\n* @see https://www.tiptap.dev/api/extensions/font-size\n*/\nconst FontSize = Extension.create({\n\tname: \"fontSize\",\n\taddOptions() {\n\t\treturn { types: [\"textStyle\"] };\n\t},\n\taddGlobalAttributes() {\n\t\treturn [{\n\t\t\ttypes: this.options.types,\n\t\t\tattributes: { fontSize: {\n\t\t\t\tdefault: null,\n\t\t\t\tparseHTML: (element) => {\n\t\t\t\t\tvar _getStyleProperty;\n\t\t\t\t\treturn (_getStyleProperty = getStyleProperty(element, \"font-size\")) !== null && _getStyleProperty !== void 0 ? _getStyleProperty : element.style.fontSize;\n\t\t\t\t},\n\t\t\t\trenderHTML: (attributes) => {\n\t\t\t\t\tif (!attributes.fontSize) return {};\n\t\t\t\t\treturn { style: `font-size: ${attributes.fontSize}` };\n\t\t\t\t}\n\t\t\t} }\n\t\t}];\n\t},\n\taddCommands() {\n\t\treturn {\n\t\t\tsetFontSize: (fontSize) => ({ chain }) => {\n\t\t\t\treturn chain().setMark(\"textStyle\", { fontSize }).run();\n\t\t\t},\n\t\t\tunsetFontSize: () => ({ chain }) => {\n\t\t\t\treturn chain().setMark(\"textStyle\", { fontSize: null }).removeEmptyTextStyle().run();\n\t\t\t}\n\t\t};\n\t}\n});\n//#endregion\n//#region src/line-height/line-height.ts\n/**\n* This extension allows you to set the line-height for text.\n* @see https://www.tiptap.dev/api/extensions/line-height\n*/\nconst LineHeight = Extension.create({\n\tname: \"lineHeight\",\n\taddOptions() {\n\t\treturn { types: [\"textStyle\"] };\n\t},\n\taddGlobalAttributes() {\n\t\treturn [{\n\t\t\ttypes: this.options.types,\n\t\t\tattributes: { lineHeight: {\n\t\t\t\tdefault: null,\n\t\t\t\tparseHTML: (element) => {\n\t\t\t\t\tvar _getStyleProperty;\n\t\t\t\t\treturn (_getStyleProperty = getStyleProperty(element, \"line-height\")) !== null && _getStyleProperty !== void 0 ? _getStyleProperty : element.style.lineHeight;\n\t\t\t\t},\n\t\t\t\trenderHTML: (attributes) => {\n\t\t\t\t\tif (!attributes.lineHeight) return {};\n\t\t\t\t\treturn { style: `line-height: ${attributes.lineHeight}` };\n\t\t\t\t}\n\t\t\t} }\n\t\t}];\n\t},\n\taddCommands() {\n\t\treturn {\n\t\t\tsetLineHeight: (lineHeight) => ({ chain }) => {\n\t\t\t\treturn chain().setMark(\"textStyle\", { lineHeight }).run();\n\t\t\t},\n\t\t\tunsetLineHeight: () => ({ chain }) => {\n\t\t\t\treturn chain().setMark(\"textStyle\", { lineHeight: null }).removeEmptyTextStyle().run();\n\t\t\t}\n\t\t};\n\t}\n});\n//#endregion\n//#region src/text-style-kit/index.ts\n/**\n* The table kit is a collection of table editor extensions.\n*\n* It’s a good starting point for building your own table in Tiptap.\n*/\nconst TextStyleKit = Extension.create({\n\tname: \"textStyleKit\",\n\taddExtensions() {\n\t\tconst extensions = [];\n\t\tif (this.options.backgroundColor !== false) extensions.push(BackgroundColor.configure(this.options.backgroundColor));\n\t\tif (this.options.color !== false) extensions.push(Color.configure(this.options.color));\n\t\tif (this.options.fontFamily !== false) extensions.push(FontFamily.configure(this.options.fontFamily));\n\t\tif (this.options.fontSize !== false) extensions.push(FontSize.configure(this.options.fontSize));\n\t\tif (this.options.lineHeight !== false) extensions.push(LineHeight.configure(this.options.lineHeight));\n\t\tif (this.options.textStyle !== false) extensions.push(TextStyle.configure(this.options.textStyle));\n\t\treturn extensions;\n\t}\n});\n//#endregion\nexport { BackgroundColor, Color, FontFamily, FontSize, LineHeight, TextStyle, TextStyleKit };\n\n//# sourceMappingURL=index.js.map","import { Mark, mergeAttributes } from \"@tiptap/core\";\n//#region src/underline.ts\n/**\n* This extension allows you to create underline text.\n* @see https://www.tiptap.dev/api/marks/underline\n*/\nconst Underline = Mark.create({\n\tname: \"underline\",\n\taddOptions() {\n\t\treturn { HTMLAttributes: {} };\n\t},\n\tparseHTML() {\n\t\treturn [{ tag: \"u\" }, {\n\t\t\tstyle: \"text-decoration\",\n\t\t\tconsuming: false,\n\t\t\tgetAttrs: (style) => style.includes(\"underline\") ? {} : false\n\t\t}];\n\t},\n\trenderHTML({ HTMLAttributes }) {\n\t\treturn [\n\t\t\t\"u\",\n\t\t\tmergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n\t\t\t0\n\t\t];\n\t},\n\tparseMarkdown(token, helpers) {\n\t\treturn helpers.applyMark(this.name || \"underline\", helpers.parseInline(token.tokens || []));\n\t},\n\trenderMarkdown(node, helpers) {\n\t\treturn `++${helpers.renderChildren(node)}++`;\n\t},\n\tmarkdownTokenizer: {\n\t\tname: \"underline\",\n\t\tlevel: \"inline\",\n\t\tstart(src) {\n\t\t\treturn src.indexOf(\"++\");\n\t\t},\n\t\ttokenize(src, _tokens, lexer) {\n\t\t\tconst match = /^(\\+\\+)([\\s\\S]+?)(\\+\\+)/.exec(src);\n\t\t\tif (!match) return;\n\t\t\tconst innerContent = match[2].trim();\n\t\t\treturn {\n\t\t\t\ttype: \"underline\",\n\t\t\t\traw: match[0],\n\t\t\t\ttext: innerContent,\n\t\t\t\ttokens: lexer.inlineTokens(innerContent)\n\t\t\t};\n\t\t}\n\t},\n\taddCommands() {\n\t\treturn {\n\t\t\tsetUnderline: () => ({ commands }) => {\n\t\t\t\treturn commands.setMark(this.name);\n\t\t\t},\n\t\t\ttoggleUnderline: () => ({ commands }) => {\n\t\t\t\treturn commands.toggleMark(this.name);\n\t\t\t},\n\t\t\tunsetUnderline: () => ({ commands }) => {\n\t\t\t\treturn commands.unsetMark(this.name);\n\t\t\t}\n\t\t};\n\t},\n\taddKeyboardShortcuts() {\n\t\treturn {\n\t\t\t\"Mod-u\": () => this.editor.commands.toggleUnderline(),\n\t\t\t\"Mod-U\": () => this.editor.commands.toggleUnderline()\n\t\t};\n\t}\n});\n//#endregion\n//#region src/index.ts\nvar src_default = Underline;\n//#endregion\nexport { Underline, src_default as default };\n\n//# sourceMappingURL=index.js.map","import { Plugin } from 'prosemirror-state';\nimport { dropPoint } from 'prosemirror-transform';\n\n/**\nCreate a plugin that, when added to a ProseMirror instance,\ncauses a decoration to show up at the drop position when something\nis dragged over the editor.\n\nNodes may add a `disableDropCursor` property to their spec to\ncontrol the showing of a drop cursor inside them. This may be a\nboolean or a function, which will be called with a view and a\nposition, and should return a boolean.\n*/\nfunction dropCursor(options = {}) {\n return new Plugin({\n view(editorView) { return new DropCursorView(editorView, options); }\n });\n}\nclass DropCursorView {\n constructor(editorView, options) {\n var _a;\n this.editorView = editorView;\n this.cursorPos = null;\n this.element = null;\n this.timeout = -1;\n this.lastDragEvent = null;\n this.width = (_a = options.width) !== null && _a !== void 0 ? _a : 1;\n this.color = options.color === false ? undefined : (options.color || \"black\");\n this.class = options.class;\n this.handlers = [\"dragover\", \"dragend\", \"drop\", \"dragleave\"].map(name => {\n let handler = (e) => { this[name](e); };\n editorView.dom.addEventListener(name, handler);\n return { name, handler };\n });\n }\n destroy() {\n this.handlers.forEach(({ name, handler }) => this.editorView.dom.removeEventListener(name, handler));\n }\n update(editorView, prevState) {\n if (this.cursorPos != null && prevState.doc != editorView.state.doc) {\n // if we currently have an on-going drag event\n // we need to update the cursor position again and update the overlay\n if (this.lastDragEvent) {\n let target = this.computeTarget(this.lastDragEvent);\n if (target == this.cursorPos)\n this.updateOverlay();\n else\n this.setCursor(target);\n }\n else {\n this.updateOverlay();\n }\n }\n }\n setCursor(pos) {\n if (pos == this.cursorPos)\n return;\n this.cursorPos = pos;\n if (pos == null) {\n this.element.parentNode.removeChild(this.element);\n this.element = null;\n }\n else {\n this.updateOverlay();\n }\n }\n updateOverlay() {\n let $pos = this.editorView.state.doc.resolve(this.cursorPos);\n let isBlock = !$pos.parent.inlineContent, rect;\n let editorDOM = this.editorView.dom, editorRect = editorDOM.getBoundingClientRect();\n let scaleX = editorRect.width / editorDOM.offsetWidth, scaleY = editorRect.height / editorDOM.offsetHeight;\n if (isBlock) {\n let before = $pos.nodeBefore, after = $pos.nodeAfter;\n if (before || after) {\n let node = this.editorView.nodeDOM(this.cursorPos - (before ? before.nodeSize : 0));\n if (node) {\n let nodeRect = node.getBoundingClientRect();\n let top = before ? nodeRect.bottom : nodeRect.top;\n if (before && after)\n top = (top + this.editorView.nodeDOM(this.cursorPos).getBoundingClientRect().top) / 2;\n let halfWidth = (this.width / 2) * scaleY;\n rect = { left: nodeRect.left, right: nodeRect.right, top: top - halfWidth, bottom: top + halfWidth };\n }\n }\n }\n if (!rect) {\n let coords = this.editorView.coordsAtPos(this.cursorPos);\n let halfWidth = (this.width / 2) * scaleX;\n rect = { left: coords.left - halfWidth, right: coords.left + halfWidth, top: coords.top, bottom: coords.bottom };\n }\n let parent = this.editorView.dom.offsetParent;\n if (!this.element) {\n this.element = parent.appendChild(document.createElement(\"div\"));\n if (this.class)\n this.element.className = this.class;\n this.element.style.cssText = \"position: absolute; z-index: 50; pointer-events: none;\";\n if (this.color) {\n this.element.style.backgroundColor = this.color;\n }\n }\n this.element.classList.toggle(\"prosemirror-dropcursor-block\", isBlock);\n this.element.classList.toggle(\"prosemirror-dropcursor-inline\", !isBlock);\n let parentLeft, parentTop;\n if (!parent || parent == document.body && getComputedStyle(parent).position == \"static\") {\n parentLeft = -pageXOffset;\n parentTop = -pageYOffset;\n }\n else {\n let rect = parent.getBoundingClientRect();\n let parentScaleX = rect.width / parent.offsetWidth, parentScaleY = rect.height / parent.offsetHeight;\n parentLeft = rect.left - parent.scrollLeft * parentScaleX;\n parentTop = rect.top - parent.scrollTop * parentScaleY;\n }\n this.element.style.left = (rect.left - parentLeft) / scaleX + \"px\";\n this.element.style.top = (rect.top - parentTop) / scaleY + \"px\";\n this.element.style.width = (rect.right - rect.left) / scaleX + \"px\";\n this.element.style.height = (rect.bottom - rect.top) / scaleY + \"px\";\n }\n scheduleRemoval(timeout) {\n clearTimeout(this.timeout);\n this.timeout = setTimeout(() => this.setCursor(null), timeout);\n }\n computeTarget(event) {\n let pos = this.editorView.posAtCoords({ left: event.clientX, top: event.clientY });\n let node = pos && pos.inside >= 0 && this.editorView.state.doc.nodeAt(pos.inside);\n let disableDropCursor = node && node.type.spec.disableDropCursor;\n let disabled = typeof disableDropCursor == \"function\"\n ? disableDropCursor(this.editorView, pos, event)\n : disableDropCursor;\n if (!pos || disabled)\n return null;\n let target = pos.pos;\n if (this.editorView.dragging && this.editorView.dragging.slice) {\n let point = dropPoint(this.editorView.state.doc, target, this.editorView.dragging.slice);\n if (point != null)\n target = point;\n }\n return target;\n }\n dragover(event) {\n if (!this.editorView.editable)\n return;\n this.lastDragEvent = event;\n let target = this.computeTarget(event);\n if (target != null) {\n this.setCursor(target);\n this.scheduleRemoval(5000);\n }\n }\n dragend() {\n this.scheduleRemoval(20);\n }\n drop() {\n this.scheduleRemoval(20);\n }\n dragleave(event) {\n if (!this.editorView.dom.contains(event.relatedTarget))\n this.setCursor(null);\n }\n}\n\nexport { dropCursor };\n","import { keydownHandler } from 'prosemirror-keymap';\nimport { Selection, NodeSelection, TextSelection, Plugin } from 'prosemirror-state';\nimport { Slice, Fragment } from 'prosemirror-model';\nimport { DecorationSet, Decoration } from 'prosemirror-view';\n\n/**\nGap cursor selections are represented using this class. Its\n`$anchor` and `$head` properties both point at the cursor position.\n*/\nclass GapCursor extends Selection {\n /**\n Create a gap cursor.\n */\n constructor($pos) {\n super($pos, $pos);\n }\n map(doc, mapping) {\n let $pos = doc.resolve(mapping.map(this.head));\n return GapCursor.valid($pos) ? new GapCursor($pos) : Selection.near($pos);\n }\n content() { return Slice.empty; }\n eq(other) {\n return other instanceof GapCursor && other.head == this.head;\n }\n toJSON() {\n return { type: \"gapcursor\", pos: this.head };\n }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for GapCursor.fromJSON\");\n return new GapCursor(doc.resolve(json.pos));\n }\n /**\n @internal\n */\n getBookmark() { return new GapBookmark(this.anchor); }\n /**\n @internal\n */\n static valid($pos) {\n let parent = $pos.parent;\n if (parent.inlineContent || !closedBefore($pos) || !closedAfter($pos))\n return false;\n let override = parent.type.spec.allowGapCursor;\n if (override != null)\n return override;\n let deflt = parent.contentMatchAt($pos.index()).defaultType;\n return deflt && deflt.isTextblock;\n }\n /**\n @internal\n */\n static findGapCursorFrom($pos, dir, mustMove = false) {\n search: for (;;) {\n if (!mustMove && GapCursor.valid($pos))\n return $pos;\n let pos = $pos.pos, next = null;\n // Scan up from this position\n for (let d = $pos.depth;; d--) {\n let parent = $pos.node(d);\n if (dir > 0 ? $pos.indexAfter(d) < parent.childCount : $pos.index(d) > 0) {\n next = parent.child(dir > 0 ? $pos.indexAfter(d) : $pos.index(d) - 1);\n break;\n }\n else if (d == 0) {\n return null;\n }\n pos += dir;\n let $cur = $pos.doc.resolve(pos);\n if (GapCursor.valid($cur))\n return $cur;\n }\n // And then down into the next node\n for (;;) {\n let inside = dir > 0 ? next.firstChild : next.lastChild;\n if (!inside) {\n if (next.isAtom && !next.isText && !NodeSelection.isSelectable(next)) {\n $pos = $pos.doc.resolve(pos + next.nodeSize * dir);\n mustMove = false;\n continue search;\n }\n break;\n }\n next = inside;\n pos += dir;\n let $cur = $pos.doc.resolve(pos);\n if (GapCursor.valid($cur))\n return $cur;\n }\n return null;\n }\n }\n}\nGapCursor.prototype.visible = false;\nGapCursor.findFrom = GapCursor.findGapCursorFrom;\nSelection.jsonID(\"gapcursor\", GapCursor);\nclass GapBookmark {\n constructor(pos) {\n this.pos = pos;\n }\n map(mapping) {\n return new GapBookmark(mapping.map(this.pos));\n }\n resolve(doc) {\n let $pos = doc.resolve(this.pos);\n return GapCursor.valid($pos) ? new GapCursor($pos) : Selection.near($pos);\n }\n}\nfunction needsGap(type) {\n return type.isAtom || type.spec.isolating || type.spec.createGapCursor;\n}\nfunction closedBefore($pos) {\n for (let d = $pos.depth; d >= 0; d--) {\n let index = $pos.index(d), parent = $pos.node(d);\n // At the start of this parent, look at next one\n if (index == 0) {\n if (parent.type.spec.isolating)\n return true;\n continue;\n }\n // See if the node before (or its first ancestor) is closed\n for (let before = parent.child(index - 1);; before = before.lastChild) {\n if ((before.childCount == 0 && !before.inlineContent) || needsGap(before.type))\n return true;\n if (before.inlineContent)\n return false;\n }\n }\n // Hit start of document\n return true;\n}\nfunction closedAfter($pos) {\n for (let d = $pos.depth; d >= 0; d--) {\n let index = $pos.indexAfter(d), parent = $pos.node(d);\n if (index == parent.childCount) {\n if (parent.type.spec.isolating)\n return true;\n continue;\n }\n for (let after = parent.child(index);; after = after.firstChild) {\n if ((after.childCount == 0 && !after.inlineContent) || needsGap(after.type))\n return true;\n if (after.inlineContent)\n return false;\n }\n }\n return true;\n}\n\n/**\nCreate a gap cursor plugin. When enabled, this will capture clicks\nnear and arrow-key-motion past places that don't have a normally\nselectable position nearby, and create a gap cursor selection for\nthem. The cursor is drawn as an element with class\n`ProseMirror-gapcursor`. You can either include\n`style/gapcursor.css` from the package's directory or add your own\nstyles to make it visible.\n*/\nfunction gapCursor() {\n return new Plugin({\n props: {\n decorations: drawGapCursor,\n createSelectionBetween(_view, $anchor, $head) {\n return $anchor.pos == $head.pos && GapCursor.valid($head) ? new GapCursor($head) : null;\n },\n handleClick,\n handleKeyDown,\n handleDOMEvents: { beforeinput: beforeinput }\n }\n });\n}\nconst handleKeyDown = keydownHandler({\n \"ArrowLeft\": arrow(\"horiz\", -1),\n \"ArrowRight\": arrow(\"horiz\", 1),\n \"ArrowUp\": arrow(\"vert\", -1),\n \"ArrowDown\": arrow(\"vert\", 1)\n});\nfunction arrow(axis, dir) {\n const dirStr = axis == \"vert\" ? (dir > 0 ? \"down\" : \"up\") : (dir > 0 ? \"right\" : \"left\");\n return function (state, dispatch, view) {\n let sel = state.selection;\n let $start = dir > 0 ? sel.$to : sel.$from, mustMove = sel.empty;\n if (sel instanceof TextSelection) {\n if (!view.endOfTextblock(dirStr) || $start.depth == 0)\n return false;\n mustMove = false;\n $start = state.doc.resolve(dir > 0 ? $start.after() : $start.before());\n }\n let $found = GapCursor.findGapCursorFrom($start, dir, mustMove);\n if (!$found)\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(new GapCursor($found)));\n return true;\n };\n}\nfunction handleClick(view, pos, event) {\n if (!view || !view.editable)\n return false;\n let $pos = view.state.doc.resolve(pos);\n if (!GapCursor.valid($pos))\n return false;\n let clickPos = view.posAtCoords({ left: event.clientX, top: event.clientY });\n if (clickPos && clickPos.inside > -1 && NodeSelection.isSelectable(view.state.doc.nodeAt(clickPos.inside)))\n return false;\n view.dispatch(view.state.tr.setSelection(new GapCursor($pos)));\n return true;\n}\n// This is a hack that, when a composition starts while a gap cursor\n// is active, quickly creates an inline context for the composition to\n// happen in, to avoid it being aborted by the DOM selection being\n// moved into a valid position.\nfunction beforeinput(view, event) {\n if (event.inputType != \"insertCompositionText\" || !(view.state.selection instanceof GapCursor))\n return false;\n let { $from } = view.state.selection;\n let insert = $from.parent.contentMatchAt($from.index()).findWrapping(view.state.schema.nodes.text);\n if (!insert)\n return false;\n let frag = Fragment.empty;\n for (let i = insert.length - 1; i >= 0; i--)\n frag = Fragment.from(insert[i].createAndFill(null, frag));\n let tr = view.state.tr.replace($from.pos, $from.pos, new Slice(frag, 0, 0));\n tr.setSelection(TextSelection.near(tr.doc.resolve($from.pos + 1)));\n view.dispatch(tr);\n return false;\n}\nfunction drawGapCursor(state) {\n if (!(state.selection instanceof GapCursor))\n return null;\n let node = document.createElement(\"div\");\n node.className = \"ProseMirror-gapcursor\";\n return DecorationSet.create(state.doc, [Decoration.widget(state.selection.head, node, { key: \"gapcursor\" })]);\n}\n\nexport { GapCursor, gapCursor };\n","var GOOD_LEAF_SIZE = 200;\n\n// :: class<T> A rope sequence is a persistent sequence data structure\n// that supports appending, prepending, and slicing without doing a\n// full copy. It is represented as a mostly-balanced tree.\nvar RopeSequence = function RopeSequence () {};\n\nRopeSequence.prototype.append = function append (other) {\n if (!other.length) { return this }\n other = RopeSequence.from(other);\n\n return (!this.length && other) ||\n (other.length < GOOD_LEAF_SIZE && this.leafAppend(other)) ||\n (this.length < GOOD_LEAF_SIZE && other.leafPrepend(this)) ||\n this.appendInner(other)\n};\n\n// :: (union<[T], RopeSequence<T>>) → RopeSequence<T>\n// Prepend an array or other rope to this one, returning a new rope.\nRopeSequence.prototype.prepend = function prepend (other) {\n if (!other.length) { return this }\n return RopeSequence.from(other).append(this)\n};\n\nRopeSequence.prototype.appendInner = function appendInner (other) {\n return new Append(this, other)\n};\n\n// :: (?number, ?number) → RopeSequence<T>\n// Create a rope repesenting a sub-sequence of this rope.\nRopeSequence.prototype.slice = function slice (from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from >= to) { return RopeSequence.empty }\n return this.sliceInner(Math.max(0, from), Math.min(this.length, to))\n};\n\n// :: (number) → T\n// Retrieve the element at the given position from this rope.\nRopeSequence.prototype.get = function get (i) {\n if (i < 0 || i >= this.length) { return undefined }\n return this.getInner(i)\n};\n\n// :: ((element: T, index: number) → ?bool, ?number, ?number)\n// Call the given function for each element between the given\n// indices. This tends to be more efficient than looping over the\n// indices and calling `get`, because it doesn't have to descend the\n// tree for every element.\nRopeSequence.prototype.forEach = function forEach (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from <= to)\n { this.forEachInner(f, from, to, 0); }\n else\n { this.forEachInvertedInner(f, from, to, 0); }\n};\n\n// :: ((element: T, index: number) → U, ?number, ?number) → [U]\n// Map the given functions over the elements of the rope, producing\n// a flat array.\nRopeSequence.prototype.map = function map (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n var result = [];\n this.forEach(function (elt, i) { return result.push(f(elt, i)); }, from, to);\n return result\n};\n\n// :: (?union<[T], RopeSequence<T>>) → RopeSequence<T>\n// Create a rope representing the given array, or return the rope\n// itself if a rope was given.\nRopeSequence.from = function from (values) {\n if (values instanceof RopeSequence) { return values }\n return values && values.length ? new Leaf(values) : RopeSequence.empty\n};\n\nvar Leaf = /*@__PURE__*/(function (RopeSequence) {\n function Leaf(values) {\n RopeSequence.call(this);\n this.values = values;\n }\n\n if ( RopeSequence ) Leaf.__proto__ = RopeSequence;\n Leaf.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Leaf.prototype.constructor = Leaf;\n\n var prototypeAccessors = { length: { configurable: true },depth: { configurable: true } };\n\n Leaf.prototype.flatten = function flatten () {\n return this.values\n };\n\n Leaf.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n return new Leaf(this.values.slice(from, to))\n };\n\n Leaf.prototype.getInner = function getInner (i) {\n return this.values[i]\n };\n\n Leaf.prototype.forEachInner = function forEachInner (f, from, to, start) {\n for (var i = from; i < to; i++)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n for (var i = from - 1; i >= to; i--)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.leafAppend = function leafAppend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(this.values.concat(other.flatten())) }\n };\n\n Leaf.prototype.leafPrepend = function leafPrepend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(other.flatten().concat(this.values)) }\n };\n\n prototypeAccessors.length.get = function () { return this.values.length };\n\n prototypeAccessors.depth.get = function () { return 0 };\n\n Object.defineProperties( Leaf.prototype, prototypeAccessors );\n\n return Leaf;\n}(RopeSequence));\n\n// :: RopeSequence\n// The empty rope sequence.\nRopeSequence.empty = new Leaf([]);\n\nvar Append = /*@__PURE__*/(function (RopeSequence) {\n function Append(left, right) {\n RopeSequence.call(this);\n this.left = left;\n this.right = right;\n this.length = left.length + right.length;\n this.depth = Math.max(left.depth, right.depth) + 1;\n }\n\n if ( RopeSequence ) Append.__proto__ = RopeSequence;\n Append.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Append.prototype.constructor = Append;\n\n Append.prototype.flatten = function flatten () {\n return this.left.flatten().concat(this.right.flatten())\n };\n\n Append.prototype.getInner = function getInner (i) {\n return i < this.left.length ? this.left.get(i) : this.right.get(i - this.left.length)\n };\n\n Append.prototype.forEachInner = function forEachInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from < leftLen &&\n this.left.forEachInner(f, from, Math.min(to, leftLen), start) === false)\n { return false }\n if (to > leftLen &&\n this.right.forEachInner(f, Math.max(from - leftLen, 0), Math.min(this.length, to) - leftLen, start + leftLen) === false)\n { return false }\n };\n\n Append.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from > leftLen &&\n this.right.forEachInvertedInner(f, from - leftLen, Math.max(to, leftLen) - leftLen, start + leftLen) === false)\n { return false }\n if (to < leftLen &&\n this.left.forEachInvertedInner(f, Math.min(from, leftLen), to, start) === false)\n { return false }\n };\n\n Append.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n var leftLen = this.left.length;\n if (to <= leftLen) { return this.left.slice(from, to) }\n if (from >= leftLen) { return this.right.slice(from - leftLen, to - leftLen) }\n return this.left.slice(from, leftLen).append(this.right.slice(0, to - leftLen))\n };\n\n Append.prototype.leafAppend = function leafAppend (other) {\n var inner = this.right.leafAppend(other);\n if (inner) { return new Append(this.left, inner) }\n };\n\n Append.prototype.leafPrepend = function leafPrepend (other) {\n var inner = this.left.leafPrepend(other);\n if (inner) { return new Append(inner, this.right) }\n };\n\n Append.prototype.appendInner = function appendInner (other) {\n if (this.left.depth >= Math.max(this.right.depth, other.depth) + 1)\n { return new Append(this.left, new Append(this.right, other)) }\n return new Append(this, other)\n };\n\n return Append;\n}(RopeSequence));\n\nexport default RopeSequence;\n","import RopeSequence from 'rope-sequence';\nimport { Mapping } from 'prosemirror-transform';\nimport { PluginKey, Plugin } from 'prosemirror-state';\n\n// ProseMirror's history isn't simply a way to roll back to a previous\n// state, because ProseMirror supports applying changes without adding\n// them to the history (for example during collaboration).\n//\n// To this end, each 'Branch' (one for the undo history and one for\n// the redo history) keeps an array of 'Items', which can optionally\n// hold a step (an actual undoable change), and always hold a position\n// map (which is needed to move changes below them to apply to the\n// current document).\n//\n// An item that has both a step and a selection bookmark is the start\n// of an 'event' — a group of changes that will be undone or redone at\n// once. (It stores only the bookmark, since that way we don't have to\n// provide a document until the selection is actually applied, which\n// is useful when compressing.)\n// Used to schedule history compression\nconst max_empty_items = 500;\nclass Branch {\n constructor(items, eventCount) {\n this.items = items;\n this.eventCount = eventCount;\n }\n // Pop the latest event off the branch's history and apply it\n // to a document transform.\n popEvent(state, preserveItems) {\n if (this.eventCount == 0)\n return null;\n let end = this.items.length;\n for (;; end--) {\n let next = this.items.get(end - 1);\n if (next.selection) {\n --end;\n break;\n }\n }\n let remap, mapFrom;\n if (preserveItems) {\n remap = this.remapping(end, this.items.length);\n mapFrom = remap.maps.length;\n }\n let transform = state.tr;\n let selection, remaining;\n let addAfter = [], addBefore = [];\n this.items.forEach((item, i) => {\n if (!item.step) {\n if (!remap) {\n remap = this.remapping(end, i + 1);\n mapFrom = remap.maps.length;\n }\n mapFrom--;\n addBefore.push(item);\n return;\n }\n if (remap) {\n addBefore.push(new Item(item.map));\n let step = item.step.map(remap.slice(mapFrom)), map;\n if (step && transform.maybeStep(step).doc) {\n map = transform.mapping.maps[transform.mapping.maps.length - 1];\n addAfter.push(new Item(map, undefined, undefined, addAfter.length + addBefore.length));\n }\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n }\n else {\n transform.maybeStep(item.step);\n }\n if (item.selection) {\n selection = remap ? item.selection.map(remap.slice(mapFrom)) : item.selection;\n remaining = new Branch(this.items.slice(0, end).append(addBefore.reverse().concat(addAfter)), this.eventCount - 1);\n return false;\n }\n }, this.items.length, 0);\n return { remaining: remaining, transform, selection: selection };\n }\n // Create a new branch with the given transform added.\n addTransform(transform, selection, histOptions, preserveItems) {\n let newItems = [], eventCount = this.eventCount;\n let oldItems = this.items, lastItem = !preserveItems && oldItems.length ? oldItems.get(oldItems.length - 1) : null;\n for (let i = 0; i < transform.steps.length; i++) {\n let step = transform.steps[i].invert(transform.docs[i]);\n let item = new Item(transform.mapping.maps[i], step, selection), merged;\n if (merged = lastItem && lastItem.merge(item)) {\n item = merged;\n if (i)\n newItems.pop();\n else\n oldItems = oldItems.slice(0, oldItems.length - 1);\n }\n newItems.push(item);\n if (selection) {\n eventCount++;\n selection = undefined;\n }\n if (!preserveItems)\n lastItem = item;\n }\n let overflow = eventCount - histOptions.depth;\n if (overflow > DEPTH_OVERFLOW) {\n oldItems = cutOffEvents(oldItems, overflow);\n eventCount -= overflow;\n }\n return new Branch(oldItems.append(newItems), eventCount);\n }\n remapping(from, to) {\n let maps = new Mapping;\n this.items.forEach((item, i) => {\n let mirrorPos = item.mirrorOffset != null && i - item.mirrorOffset >= from\n ? maps.maps.length - item.mirrorOffset : undefined;\n maps.appendMap(item.map, mirrorPos);\n }, from, to);\n return maps;\n }\n addMaps(array) {\n if (this.eventCount == 0)\n return this;\n return new Branch(this.items.append(array.map(map => new Item(map))), this.eventCount);\n }\n // When the collab module receives remote changes, the history has\n // to know about those, so that it can adjust the steps that were\n // rebased on top of the remote changes, and include the position\n // maps for the remote changes in its array of items.\n rebased(rebasedTransform, rebasedCount) {\n if (!this.eventCount)\n return this;\n let rebasedItems = [], start = Math.max(0, this.items.length - rebasedCount);\n let mapping = rebasedTransform.mapping;\n let newUntil = rebasedTransform.steps.length;\n let eventCount = this.eventCount;\n this.items.forEach(item => { if (item.selection)\n eventCount--; }, start);\n let iRebased = rebasedCount;\n this.items.forEach(item => {\n let pos = mapping.getMirror(--iRebased);\n if (pos == null)\n return;\n newUntil = Math.min(newUntil, pos);\n let map = mapping.maps[pos];\n if (item.step) {\n let step = rebasedTransform.steps[pos].invert(rebasedTransform.docs[pos]);\n let selection = item.selection && item.selection.map(mapping.slice(iRebased + 1, pos));\n if (selection)\n eventCount++;\n rebasedItems.push(new Item(map, step, selection));\n }\n else {\n rebasedItems.push(new Item(map));\n }\n }, start);\n let newMaps = [];\n for (let i = rebasedCount; i < newUntil; i++)\n newMaps.push(new Item(mapping.maps[i]));\n let items = this.items.slice(0, start).append(newMaps).append(rebasedItems);\n let branch = new Branch(items, eventCount);\n if (branch.emptyItemCount() > max_empty_items)\n branch = branch.compress(this.items.length - rebasedItems.length);\n return branch;\n }\n emptyItemCount() {\n let count = 0;\n this.items.forEach(item => { if (!item.step)\n count++; });\n return count;\n }\n // Compressing a branch means rewriting it to push the air (map-only\n // items) out. During collaboration, these naturally accumulate\n // because each remote change adds one. The `upto` argument is used\n // to ensure that only the items below a given level are compressed,\n // because `rebased` relies on a clean, untouched set of items in\n // order to associate old items with rebased steps.\n compress(upto = this.items.length) {\n let remap = this.remapping(0, upto), mapFrom = remap.maps.length;\n let items = [], events = 0;\n this.items.forEach((item, i) => {\n if (i >= upto) {\n items.push(item);\n if (item.selection)\n events++;\n }\n else if (item.step) {\n let step = item.step.map(remap.slice(mapFrom)), map = step && step.getMap();\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n if (step) {\n let selection = item.selection && item.selection.map(remap.slice(mapFrom));\n if (selection)\n events++;\n let newItem = new Item(map.invert(), step, selection), merged, last = items.length - 1;\n if (merged = items.length && items[last].merge(newItem))\n items[last] = merged;\n else\n items.push(newItem);\n }\n }\n else if (item.map) {\n mapFrom--;\n }\n }, this.items.length, 0);\n return new Branch(RopeSequence.from(items.reverse()), events);\n }\n}\nBranch.empty = new Branch(RopeSequence.empty, 0);\nfunction cutOffEvents(items, n) {\n let cutPoint;\n items.forEach((item, i) => {\n if (item.selection && (n-- == 0)) {\n cutPoint = i;\n return false;\n }\n });\n return items.slice(cutPoint);\n}\nclass Item {\n constructor(\n // The (forward) step map for this item.\n map, \n // The inverted step\n step, \n // If this is non-null, this item is the start of a group, and\n // this selection is the starting selection for the group (the one\n // that was active before the first step was applied)\n selection, \n // If this item is the inverse of a previous mapping on the stack,\n // this points at the inverse's offset\n mirrorOffset) {\n this.map = map;\n this.step = step;\n this.selection = selection;\n this.mirrorOffset = mirrorOffset;\n }\n merge(other) {\n if (this.step && other.step && !other.selection) {\n let step = other.step.merge(this.step);\n if (step)\n return new Item(step.getMap().invert(), step, this.selection);\n }\n }\n}\n// The value of the state field that tracks undo/redo history for that\n// state. Will be stored in the plugin state when the history plugin\n// is active.\nclass HistoryState {\n constructor(done, undone, prevRanges, prevTime, prevComposition) {\n this.done = done;\n this.undone = undone;\n this.prevRanges = prevRanges;\n this.prevTime = prevTime;\n this.prevComposition = prevComposition;\n }\n}\nconst DEPTH_OVERFLOW = 20;\n// Record a transformation in undo history.\nfunction applyTransaction(history, state, tr, options) {\n let historyTr = tr.getMeta(historyKey), rebased;\n if (historyTr)\n return historyTr.historyState;\n if (tr.getMeta(closeHistoryKey))\n history = new HistoryState(history.done, history.undone, null, 0, -1);\n let appended = tr.getMeta(\"appendedTransaction\");\n if (tr.steps.length == 0) {\n return history;\n }\n else if (appended && appended.getMeta(historyKey)) {\n if (appended.getMeta(historyKey).redo)\n return new HistoryState(history.done.addTransform(tr, undefined, options, mustPreserveItems(state)), history.undone, rangesFor(tr.mapping.maps), history.prevTime, history.prevComposition);\n else\n return new HistoryState(history.done, history.undone.addTransform(tr, undefined, options, mustPreserveItems(state)), null, history.prevTime, history.prevComposition);\n }\n else if (tr.getMeta(\"addToHistory\") !== false && !(appended && appended.getMeta(\"addToHistory\") === false)) {\n // Group transforms that occur in quick succession into one event.\n let composition = tr.getMeta(\"composition\");\n let newGroup = history.prevTime == 0 ||\n (!appended && history.prevComposition != composition &&\n (history.prevTime < (tr.time || 0) - options.newGroupDelay || !isAdjacentTo(tr, history.prevRanges)));\n let prevRanges = appended ? mapRanges(history.prevRanges, tr.mapping) : rangesFor(tr.mapping.maps);\n return new HistoryState(history.done.addTransform(tr, newGroup ? state.selection.getBookmark() : undefined, options, mustPreserveItems(state)), Branch.empty, prevRanges, tr.time, composition == null ? history.prevComposition : composition);\n }\n else if (rebased = tr.getMeta(\"rebased\")) {\n // Used by the collab module to tell the history that some of its\n // content has been rebased.\n return new HistoryState(history.done.rebased(tr, rebased), history.undone.rebased(tr, rebased), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n else {\n return new HistoryState(history.done.addMaps(tr.mapping.maps), history.undone.addMaps(tr.mapping.maps), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n}\nfunction isAdjacentTo(transform, prevRanges) {\n if (!prevRanges)\n return false;\n if (!transform.docChanged)\n return true;\n let adjacent = false;\n transform.mapping.maps[0].forEach((start, end) => {\n for (let i = 0; i < prevRanges.length; i += 2)\n if (start <= prevRanges[i + 1] && end >= prevRanges[i])\n adjacent = true;\n });\n return adjacent;\n}\nfunction rangesFor(maps) {\n let result = [];\n for (let i = maps.length - 1; i >= 0 && result.length == 0; i--)\n maps[i].forEach((_from, _to, from, to) => result.push(from, to));\n return result;\n}\nfunction mapRanges(ranges, mapping) {\n if (!ranges)\n return null;\n let result = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = mapping.map(ranges[i], 1), to = mapping.map(ranges[i + 1], -1);\n if (from <= to)\n result.push(from, to);\n }\n return result;\n}\n// Apply the latest event from one branch to the document and shift the event\n// onto the other branch.\nfunction histTransaction(history, state, redo) {\n let preserveItems = mustPreserveItems(state);\n let histOptions = historyKey.get(state).spec.config;\n let pop = (redo ? history.undone : history.done).popEvent(state, preserveItems);\n if (!pop)\n return null;\n let selection = pop.selection.resolve(pop.transform.doc);\n let added = (redo ? history.done : history.undone).addTransform(pop.transform, state.selection.getBookmark(), histOptions, preserveItems);\n let newHist = new HistoryState(redo ? added : pop.remaining, redo ? pop.remaining : added, null, 0, -1);\n return pop.transform.setSelection(selection).setMeta(historyKey, { redo, historyState: newHist });\n}\nlet cachedPreserveItems = false, cachedPreserveItemsPlugins = null;\n// Check whether any plugin in the given state has a\n// `historyPreserveItems` property in its spec, in which case we must\n// preserve steps exactly as they came in, so that they can be\n// rebased.\nfunction mustPreserveItems(state) {\n let plugins = state.plugins;\n if (cachedPreserveItemsPlugins != plugins) {\n cachedPreserveItems = false;\n cachedPreserveItemsPlugins = plugins;\n for (let i = 0; i < plugins.length; i++)\n if (plugins[i].spec.historyPreserveItems) {\n cachedPreserveItems = true;\n break;\n }\n }\n return cachedPreserveItems;\n}\n/**\nSet a flag on the given transaction that will prevent further steps\nfrom being appended to an existing history event (so that they\nrequire a separate undo command to undo).\n*/\nfunction closeHistory(tr) {\n return tr.setMeta(closeHistoryKey, true);\n}\nconst historyKey = new PluginKey(\"history\");\nconst closeHistoryKey = new PluginKey(\"closeHistory\");\n/**\nReturns a plugin that enables the undo history for an editor. The\nplugin will track undo and redo stacks, which can be used with the\n[`undo`](https://prosemirror.net/docs/ref/#history.undo) and [`redo`](https://prosemirror.net/docs/ref/#history.redo) commands.\n\nYou can set an `\"addToHistory\"` [metadata\nproperty](https://prosemirror.net/docs/ref/#state.Transaction.setMeta) of `false` on a transaction\nto prevent it from being rolled back by undo.\n*/\nfunction history(config = {}) {\n config = { depth: config.depth || 100,\n newGroupDelay: config.newGroupDelay || 500 };\n return new Plugin({\n key: historyKey,\n state: {\n init() {\n return new HistoryState(Branch.empty, Branch.empty, null, 0, -1);\n },\n apply(tr, hist, state) {\n return applyTransaction(hist, state, tr, config);\n }\n },\n config,\n props: {\n handleDOMEvents: {\n beforeinput(view, e) {\n let inputType = e.inputType;\n let command = inputType == \"historyUndo\" ? undo : inputType == \"historyRedo\" ? redo : null;\n if (!command || !view.editable)\n return false;\n e.preventDefault();\n return command(view.state, view.dispatch);\n }\n }\n }\n });\n}\nfunction buildCommand(redo, scroll) {\n return (state, dispatch) => {\n let hist = historyKey.getState(state);\n if (!hist || (redo ? hist.undone : hist.done).eventCount == 0)\n return false;\n if (dispatch) {\n let tr = histTransaction(hist, state, redo);\n if (tr)\n dispatch(scroll ? tr.scrollIntoView() : tr);\n }\n return true;\n };\n}\n/**\nA command function that undoes the last change, if any.\n*/\nconst undo = buildCommand(false, true);\n/**\nA command function that redoes the last undone change, if any.\n*/\nconst redo = buildCommand(true, true);\n/**\nA command function that undoes the last change. Don't scroll the\nselection into view.\n*/\nconst undoNoScroll = buildCommand(false, false);\n/**\nA command function that redoes the last undone change. Don't\nscroll the selection into view.\n*/\nconst redoNoScroll = buildCommand(true, false);\n/**\nThe amount of undoable events available in a given state.\n*/\nfunction undoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.done.eventCount : 0;\n}\n/**\nThe amount of redoable events available in a given editor state.\n*/\nfunction redoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.undone.eventCount : 0;\n}\n/**\nReturns true if the given transaction was generated by the history\nplugin.\n*/\nfunction isHistoryTransaction(tr) {\n return tr.getMeta(historyKey) != null;\n}\n\nexport { closeHistory, history, isHistoryTransaction, redo, redoDepth, redoNoScroll, undo, undoDepth, undoNoScroll };\n","import { Extension, callOrReturn, getChangedRanges, getExtensionField, isNodeEmpty, isNodeSelection } from \"@tiptap/core\";\nimport { Plugin, PluginKey } from \"@tiptap/pm/state\";\nimport { dropCursor } from \"@tiptap/pm/dropcursor\";\nimport { Decoration, DecorationSet } from \"@tiptap/pm/view\";\nimport { gapCursor } from \"@tiptap/pm/gapcursor\";\nimport { history, redo, undo } from \"@tiptap/pm/history\";\n//#region src/character-count/character-count.ts\n/**\n* This extension allows you to count the characters and words of your document.\n* @see https://tiptap.dev/api/extensions/character-count\n*/\nconst CharacterCount = Extension.create({\n\tname: \"characterCount\",\n\taddOptions() {\n\t\treturn {\n\t\t\tlimit: null,\n\t\t\tautoTrim: true,\n\t\t\tmode: \"textSize\",\n\t\t\ttextCounter: (text) => text.length,\n\t\t\twordCounter: (text) => text.split(\" \").filter((word) => word !== \"\").length\n\t\t};\n\t},\n\taddStorage() {\n\t\treturn {\n\t\t\tcharacters: () => 0,\n\t\t\twords: () => 0\n\t\t};\n\t},\n\tonBeforeCreate() {\n\t\tthis.storage.characters = (options) => {\n\t\t\tconst node = (options === null || options === void 0 ? void 0 : options.node) || this.editor.state.doc;\n\t\t\tif (((options === null || options === void 0 ? void 0 : options.mode) || this.options.mode) === \"textSize\") {\n\t\t\t\tconst text = node.textBetween(0, node.content.size, void 0, \" \");\n\t\t\t\treturn this.options.textCounter(text);\n\t\t\t}\n\t\t\treturn node.nodeSize;\n\t\t};\n\t\tthis.storage.words = (options) => {\n\t\t\tconst node = (options === null || options === void 0 ? void 0 : options.node) || this.editor.state.doc;\n\t\t\tconst text = node.textBetween(0, node.content.size, \" \", \" \");\n\t\t\treturn this.options.wordCounter(text);\n\t\t};\n\t},\n\taddProseMirrorPlugins() {\n\t\tlet initialEvaluationDone = false;\n\t\treturn [new Plugin({\n\t\t\tkey: new PluginKey(\"characterCount\"),\n\t\t\tappendTransaction: (transactions, oldState, newState) => {\n\t\t\t\tif (initialEvaluationDone) return;\n\t\t\t\tconst limit = this.options.limit;\n\t\t\t\tconst autoTrim = this.options.autoTrim;\n\t\t\t\tif (limit === null || limit === void 0 || limit === 0 || autoTrim === false) {\n\t\t\t\t\tinitialEvaluationDone = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst initialContentSize = this.storage.characters({ node: newState.doc });\n\t\t\t\tif (initialContentSize > limit) {\n\t\t\t\t\tconst over = initialContentSize - limit;\n\t\t\t\t\tconst from = 0;\n\t\t\t\t\tconst to = over;\n\t\t\t\t\tconsole.warn(`[CharacterCount] Initial content exceeded limit of ${limit} characters. Content was automatically trimmed.`);\n\t\t\t\t\tconst tr = newState.tr.deleteRange(from, to);\n\t\t\t\t\tinitialEvaluationDone = true;\n\t\t\t\t\treturn tr;\n\t\t\t\t}\n\t\t\t\tinitialEvaluationDone = true;\n\t\t\t},\n\t\t\tfilterTransaction: (transaction, state) => {\n\t\t\t\tconst limit = this.options.limit;\n\t\t\t\tif (!transaction.docChanged || limit === 0 || limit === null || limit === void 0) return true;\n\t\t\t\tconst oldSize = this.storage.characters({ node: state.doc });\n\t\t\t\tconst newSize = this.storage.characters({ node: transaction.doc });\n\t\t\t\tif (newSize <= limit) return true;\n\t\t\t\tif (oldSize > limit && newSize > limit && newSize <= oldSize) return true;\n\t\t\t\tif (oldSize > limit && newSize > limit && newSize > oldSize) return false;\n\t\t\t\tif (!transaction.getMeta(\"paste\")) return false;\n\t\t\t\tconst pos = transaction.selection.$head.pos;\n\t\t\t\tconst from = pos - (newSize - limit);\n\t\t\t\tconst to = pos;\n\t\t\t\ttransaction.deleteRange(from, to);\n\t\t\t\tif (this.storage.characters({ node: transaction.doc }) > limit) return false;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t})];\n\t}\n});\n//#endregion\n//#region src/drop-cursor/drop-cursor.ts\n/**\n* This extension allows you to add a drop cursor to your editor.\n* A drop cursor is a line that appears when you drag and drop content\n* in-between nodes.\n* @see https://tiptap.dev/api/extensions/dropcursor\n*/\nconst Dropcursor = Extension.create({\n\tname: \"dropCursor\",\n\taddOptions() {\n\t\treturn {\n\t\t\tcolor: \"currentColor\",\n\t\t\twidth: 1,\n\t\t\tclass: void 0\n\t\t};\n\t},\n\taddProseMirrorPlugins() {\n\t\treturn [dropCursor(this.options)];\n\t}\n});\n//#endregion\n//#region src/focus/focus.ts\n/**\n* This extension allows you to add a class to the focused node.\n* @see https://www.tiptap.dev/api/extensions/focus\n*/\nconst Focus = Extension.create({\n\tname: \"focus\",\n\taddOptions() {\n\t\treturn {\n\t\t\tclassName: \"has-focus\",\n\t\t\tmode: \"all\"\n\t\t};\n\t},\n\taddProseMirrorPlugins() {\n\t\treturn [new Plugin({\n\t\t\tkey: new PluginKey(\"focus\"),\n\t\t\tprops: { decorations: ({ doc, selection }) => {\n\t\t\t\tconst { isEditable, isFocused } = this.editor;\n\t\t\t\tconst { anchor } = selection;\n\t\t\t\tconst decorations = [];\n\t\t\t\tif (!isEditable || !isFocused) return DecorationSet.create(doc, []);\n\t\t\t\tlet maxLevels = 0;\n\t\t\t\tif (this.options.mode === \"deepest\") doc.descendants((node, pos) => {\n\t\t\t\t\tif (node.isText) return;\n\t\t\t\t\tif (!(anchor >= pos && anchor <= pos + node.nodeSize - 1)) return false;\n\t\t\t\t\tmaxLevels += 1;\n\t\t\t\t});\n\t\t\t\tlet currentLevel = 0;\n\t\t\t\tdoc.descendants((node, pos) => {\n\t\t\t\t\tif (node.isText) return false;\n\t\t\t\t\tif (!(anchor >= pos && anchor <= pos + node.nodeSize - 1)) return false;\n\t\t\t\t\tcurrentLevel += 1;\n\t\t\t\t\tif (this.options.mode === \"deepest\" && maxLevels - currentLevel > 0 || this.options.mode === \"shallowest\" && currentLevel > 1) return this.options.mode === \"deepest\";\n\t\t\t\t\tdecorations.push(Decoration.node(pos, pos + node.nodeSize, { class: this.options.className }));\n\t\t\t\t});\n\t\t\t\treturn DecorationSet.create(doc, decorations);\n\t\t\t} }\n\t\t})];\n\t}\n});\n//#endregion\n//#region src/gap-cursor/gap-cursor.ts\n/**\n* This extension allows you to add a gap cursor to your editor.\n* A gap cursor is a cursor that appears when you click on a place\n* where no content is present, for example inbetween nodes.\n* @see https://tiptap.dev/api/extensions/gapcursor\n*/\nconst Gapcursor = Extension.create({\n\tname: \"gapCursor\",\n\taddProseMirrorPlugins() {\n\t\treturn [gapCursor()];\n\t},\n\textendNodeSchema(extension) {\n\t\tvar _callOrReturn;\n\t\tconst context = {\n\t\t\tname: extension.name,\n\t\t\toptions: extension.options,\n\t\t\tstorage: extension.storage\n\t\t};\n\t\treturn { allowGapCursor: (_callOrReturn = callOrReturn(getExtensionField(extension, \"allowGapCursor\", context))) !== null && _callOrReturn !== void 0 ? _callOrReturn : null };\n\t}\n});\n//#endregion\n//#region src/placeholder/constants.ts\n/** The default data attribute label */\nconst DEFAULT_DATA_ATTRIBUTE = \"placeholder\";\n/** The plugin key used to store and read the placeholder decoration set */\nconst PLUGIN_KEY = new PluginKey(\"tiptap__placeholder\");\n//#endregion\n//#region src/placeholder/utils/createPlaceholderDecoration.ts\n/**\n* Creates a ProseMirror node decoration that applies a placeholder\n* CSS class and data attribute to an empty node.\n* @param options.editor - The editor instance\n* @param options.pos - The position of the node in the document\n* @param options.node - The ProseMirror node\n* @param options.isEmptyDoc - Whether the entire document is empty\n* @param options.hasAnchor - Whether the selection anchor is within the node\n* @param options.dataAttribute - The data attribute name (e.g. `data-placeholder`)\n* @param options.classes - CSS classes for empty nodes and the empty editor\n* @param options.placeholder - The placeholder text or a function that returns it\n* @returns A ProseMirror node decoration with placeholder classes and data attribute\n*/\nfunction createPlaceholderDecoration(options) {\n\tconst { editor, placeholder, dataAttribute, pos, node, isEmptyDoc, hasAnchor, classes: { emptyNode, emptyEditor } } = options;\n\tconst classes = [emptyNode];\n\tif (isEmptyDoc) classes.push(emptyEditor);\n\treturn Decoration.node(pos, pos + node.nodeSize, {\n\t\tclass: classes.join(\" \"),\n\t\t[dataAttribute]: typeof placeholder === \"function\" ? placeholder({\n\t\t\teditor,\n\t\t\tnode,\n\t\t\tpos,\n\t\t\thasAnchor\n\t\t}) : placeholder\n\t});\n}\n//#endregion\n//#region src/placeholder/utils/buildPlaceholderDecorations.ts\nfunction resolveEmptyNodeClass(emptyNodeClass, props) {\n\treturn typeof emptyNodeClass === \"function\" ? emptyNodeClass(props) : emptyNodeClass;\n}\n/**\n* Scans a document range for empty textblocks that should receive placeholder\n* decorations. Used by the slow path and incremental state updates.\n*/\nfunction scanRangeForDecorations({ editor, options, dataAttribute, doc, selection, from, to }) {\n\tconst { anchor } = selection;\n\tconst decorations = [];\n\tconst isEmptyDoc = editor.isEmpty;\n\tdoc.nodesBetween(from, to, (node, pos) => {\n\t\tconst hasAnchor = anchor >= pos && anchor <= pos + node.nodeSize;\n\t\tconst isEmpty = !node.isLeaf && isNodeEmpty(node);\n\t\tif (!node.type.isTextblock) return options.includeChildren;\n\t\tif ((hasAnchor || !options.showOnlyCurrent) && isEmpty) decorations.push(createPlaceholderDecoration({\n\t\t\teditor,\n\t\t\tisEmptyDoc,\n\t\t\tdataAttribute,\n\t\t\thasAnchor,\n\t\t\tplaceholder: options.placeholder,\n\t\t\tclasses: {\n\t\t\t\temptyEditor: options.emptyEditorClass,\n\t\t\t\temptyNode: resolveEmptyNodeClass(options.emptyNodeClass, {\n\t\t\t\t\teditor,\n\t\t\t\t\tnode,\n\t\t\t\t\tpos,\n\t\t\t\t\thasAnchor\n\t\t\t\t})\n\t\t\t},\n\t\t\tnode,\n\t\t\tpos\n\t\t}));\n\t\treturn options.includeChildren;\n\t});\n\treturn decorations;\n}\n/**\n* Builds the placeholder decorations for the current document state.\n* @param options.editor - The editor instance.\n* @param options.options - The resolved placeholder options.\n* @param options.dataAttribute - The prepared `data-*` attribute name.\n* @param options.doc - The current document node.\n* @param options.selection - The current selection.\n* @returns A decoration set, or `null` when no placeholders should be shown.\n*/\nfunction buildPlaceholderDecorations({ editor, options, dataAttribute, doc, selection }) {\n\tif (!(editor.isEditable || !options.showOnlyWhenEditable)) return null;\n\tconst { anchor } = selection;\n\tconst decorations = [];\n\tconst isEmptyDoc = editor.isEmpty;\n\tif (options.showOnlyCurrent && !options.includeChildren) {\n\t\tconst resolved = doc.resolve(anchor);\n\t\tconst node = resolved.depth > 0 ? resolved.node(1) : resolved.nodeAfter;\n\t\tconst nodeStart = resolved.depth > 0 ? resolved.before(1) : anchor;\n\t\tif (node && node.type.isTextblock && isNodeEmpty(node)) {\n\t\t\tconst hasAnchor = anchor >= nodeStart && anchor <= nodeStart + node.nodeSize;\n\t\t\tdecorations.push(createPlaceholderDecoration({\n\t\t\t\teditor,\n\t\t\t\tisEmptyDoc,\n\t\t\t\tdataAttribute,\n\t\t\t\thasAnchor,\n\t\t\t\tplaceholder: options.placeholder,\n\t\t\t\tclasses: {\n\t\t\t\t\temptyEditor: options.emptyEditorClass,\n\t\t\t\t\temptyNode: resolveEmptyNodeClass(options.emptyNodeClass, {\n\t\t\t\t\t\teditor,\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tpos: nodeStart,\n\t\t\t\t\t\thasAnchor\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tnode,\n\t\t\t\tpos: nodeStart\n\t\t\t}));\n\t\t}\n\t} else decorations.push(...scanRangeForDecorations({\n\t\teditor,\n\t\toptions,\n\t\tdataAttribute,\n\t\tdoc,\n\t\tselection,\n\t\tfrom: 0,\n\t\tto: doc.content.size\n\t}));\n\treturn DecorationSet.create(doc, decorations);\n}\n//#endregion\n//#region src/placeholder/utils/resolveTopLevelRange.ts\n/**\n* Resolves a document position to the `[from, to)` range of its containing\n* top-level block node in absolute document positions.\n*/\nfunction resolveTopLevelRange(doc, pos) {\n\tconst resolved = doc.resolve(pos);\n\tif (resolved.depth === 0) {\n\t\tvar _resolved$nodeAfter;\n\t\tconst node = (_resolved$nodeAfter = resolved.nodeAfter) !== null && _resolved$nodeAfter !== void 0 ? _resolved$nodeAfter : resolved.nodeBefore;\n\t\tif (!node) return {\n\t\t\tfrom: pos,\n\t\t\tto: pos\n\t\t};\n\t\tconst nodePos = resolved.nodeAfter ? pos : pos - node.nodeSize;\n\t\treturn {\n\t\t\tfrom: nodePos,\n\t\t\tto: nodePos + node.nodeSize\n\t\t};\n\t}\n\tconst topLevelPos = resolved.before(1);\n\treturn {\n\t\tfrom: topLevelPos,\n\t\tto: topLevelPos + resolved.node(1).nodeSize\n\t};\n}\n/**\n* Converts an absolute document range to content-relative positions used by\n* `Node#nodesBetween` and `Node#forEach` offsets.\n*/\nfunction toContentRelativeRange(doc, range) {\n\treturn {\n\t\tfrom: Math.max(0, range.from - 1),\n\t\tto: Math.min(doc.content.size, range.to - 1)\n\t};\n}\n/**\n* Returns the top-level block ranges that intersect a document change range.\n* Input `from`/`to` are absolute positions (e.g. from `getChangedRanges`).\n* Returned ranges are content-relative, matching `Node#forEach` offsets.\n*/\nfunction getTopLevelBlocksInRange(doc, from, to) {\n\tconst ranges = [];\n\tdoc.forEach((node, offset) => {\n\t\tconst nodeStart = offset;\n\t\tconst nodeEnd = nodeStart + node.nodeSize;\n\t\tconst absNodeStart = nodeStart + 1;\n\t\tconst absNodeEnd = nodeEnd + 1;\n\t\tif (absNodeStart < to && absNodeEnd > from) ranges.push({\n\t\t\tfrom: nodeStart,\n\t\t\tto: nodeEnd\n\t\t});\n\t});\n\treturn ranges;\n}\n/**\n* Sorts ranges by start position and merges overlapping or adjacent ranges.\n*/\nfunction mergeRanges(ranges) {\n\tif (ranges.length === 0) return [];\n\tconst sorted = [...ranges].sort((a, b) => a.from - b.from);\n\tconst merged = [{ ...sorted[0] }];\n\tfor (let i = 1; i < sorted.length; i += 1) {\n\t\tconst last = merged[merged.length - 1];\n\t\tconst current = sorted[i];\n\t\tif (current.from <= last.to) last.to = Math.max(last.to, current.to);\n\t\telse merged.push({ ...current });\n\t}\n\treturn merged;\n}\n//#endregion\n//#region src/placeholder/utils/placeholderStateField.ts\n/**\n* Expands a single changed range to the top-level blocks it touches.\n* Also resolves blocks at range boundaries so split/merge edits update\n* adjacent empty nodes (e.g. a new paragraph after Enter).\n*/\nfunction collectBlocksForChange(doc, change) {\n\tconst ranges = getTopLevelBlocksInRange(doc, change.from, change.to);\n\tranges.push(toContentRelativeRange(doc, resolveTopLevelRange(doc, change.from)));\n\tif (change.to > change.from) ranges.push(toContentRelativeRange(doc, resolveTopLevelRange(doc, Math.min(change.to, doc.content.size + 1) - 1)));\n\telse if (change.from < doc.content.size + 1) ranges.push(toContentRelativeRange(doc, resolveTopLevelRange(doc, Math.min(change.from + 1, doc.content.size))));\n\treturn ranges;\n}\n/**\n* Collects content-relative top-level block ranges that need placeholder\n* decorations recomputed after a transaction.\n*/\nfunction collectRescanRanges(tr, oldState, newState) {\n\tconst ranges = [];\n\tif (tr.docChanged) {\n\t\tconst changes = getChangedRanges(tr);\n\t\tfor (const change of changes) ranges.push(...collectBlocksForChange(newState.doc, change.newRange));\n\t}\n\tif (tr.selectionSet) {\n\t\tranges.push(toContentRelativeRange(newState.doc, resolveTopLevelRange(newState.doc, tr.mapping.map(oldState.selection.anchor))));\n\t\tranges.push(toContentRelativeRange(newState.doc, resolveTopLevelRange(newState.doc, newState.selection.anchor)));\n\t}\n\treturn mergeRanges(ranges);\n}\n/** Clamps a content-relative range to `[0, doc.content.size]`. */\nfunction clampRange(from, to, doc) {\n\tconst clampedFrom = Math.max(0, Math.min(from, doc.content.size));\n\treturn {\n\t\tfrom: clampedFrom,\n\t\tto: Math.max(clampedFrom, Math.min(to, doc.content.size))\n\t};\n}\n/**\n* Removes and rebuilds placeholder decorations within the given ranges.\n* Only drops decorations fully contained in a range so mapped decorations\n* on neighbouring blocks (e.g. at a block boundary) are kept intact.\n*/\nfunction updateDecorationsInRanges({ decorations, ranges, editor, options, dataAttribute, doc, selection }) {\n\tlet next = decorations;\n\tfor (const range of ranges) {\n\t\tconst { from, to } = clampRange(range.from, range.to, doc);\n\t\tconst existing = next.find(from, to).filter((decoration) => decoration.from >= from && decoration.to <= to);\n\t\tif (existing.length) next = next.remove(existing);\n\t\tconst newDecos = scanRangeForDecorations({\n\t\t\teditor,\n\t\t\toptions,\n\t\t\tdataAttribute,\n\t\t\tdoc,\n\t\t\tselection,\n\t\t\tfrom,\n\t\t\tto\n\t\t});\n\t\tif (newDecos.length) next = next.add(doc, newDecos);\n\t}\n\treturn next;\n}\n/**\n* Creates the incremental `StateField<DecorationSet>` used by the slow path\n* (`showOnlyCurrent: false` or `includeChildren: true`).\n*\n* Decorations are mapped through each transaction and only recomputed for\n* top-level blocks touched by document or selection changes.\n* @param options.editor - The editor instance.\n* @param options.options - The resolved placeholder options.\n* @param options.dataAttribute - The prepared `data-*` attribute name.\n* @returns A ProseMirror state field storing the placeholder decoration set.\n*/\nfunction createPlaceholderStateField({ editor, options, dataAttribute }) {\n\treturn {\n\t\tinit(_config, state) {\n\t\t\tconst decorations = buildPlaceholderDecorations({\n\t\t\t\teditor,\n\t\t\t\toptions,\n\t\t\t\tdataAttribute,\n\t\t\t\tdoc: state.doc,\n\t\t\t\tselection: state.selection\n\t\t\t});\n\t\t\treturn decorations !== null && decorations !== void 0 ? decorations : DecorationSet.empty;\n\t\t},\n\t\tapply(tr, prev, oldState, newState) {\n\t\t\tif (!tr.docChanged && !tr.selectionSet) return prev;\n\t\t\treturn updateDecorationsInRanges({\n\t\t\t\tdecorations: prev.map(tr.mapping, tr.doc),\n\t\t\t\tranges: collectRescanRanges(tr, oldState, newState),\n\t\t\t\teditor,\n\t\t\t\toptions,\n\t\t\t\tdataAttribute,\n\t\t\t\tdoc: newState.doc,\n\t\t\t\tselection: newState.selection\n\t\t\t});\n\t\t}\n\t};\n}\n//#endregion\n//#region src/placeholder/utils/preparePlaceholderAttribute.ts\n/**\n* Prepares the placeholder attribute by ensuring it is properly formatted.\n* @param attr - The placeholder attribute string.\n* @returns The prepared placeholder attribute string.\n*/\nfunction preparePlaceholderAttribute(attr) {\n\treturn attr.replace(/\\s+/g, \"-\").replace(/[^a-zA-Z0-9-]/g, \"\").replace(/^[0-9-]+/, \"\").replace(/^-+/, \"\").toLowerCase();\n}\n//#endregion\n//#region src/placeholder/plugins/PlaceholderPlugin.ts\n/**\n* Creates the ProseMirror plugin that renders placeholder decorations.\n* @param options.editor - The editor instance.\n* @param options.options - The resolved placeholder options.\n* @returns The configured placeholder plugin.\n*/\nfunction createPlaceholderPlugin({ editor, options }) {\n\tconst dataAttribute = options.dataAttribute ? `data-${preparePlaceholderAttribute(options.dataAttribute)}` : `data-${DEFAULT_DATA_ATTRIBUTE}`;\n\tconst useResolvedPath = options.showOnlyCurrent && !options.includeChildren;\n\treturn new Plugin({\n\t\tkey: PLUGIN_KEY,\n\t\t...useResolvedPath ? {} : { state: createPlaceholderStateField({\n\t\t\teditor,\n\t\t\toptions,\n\t\t\tdataAttribute\n\t\t}) },\n\t\tprops: { decorations: useResolvedPath ? ({ doc, selection }) => buildPlaceholderDecorations({\n\t\t\teditor,\n\t\t\toptions,\n\t\t\tdataAttribute,\n\t\t\tdoc,\n\t\t\tselection\n\t\t}) : (state) => {\n\t\t\tvar _PLUGIN_KEY$getState;\n\t\t\tif (options.showOnlyWhenEditable && !editor.isEditable) return DecorationSet.empty;\n\t\t\treturn (_PLUGIN_KEY$getState = PLUGIN_KEY.getState(state)) !== null && _PLUGIN_KEY$getState !== void 0 ? _PLUGIN_KEY$getState : DecorationSet.empty;\n\t\t} }\n\t});\n}\n//#endregion\n//#region src/placeholder/placeholder.ts\n/**\n* This extension allows you to add a placeholder to your editor.\n* A placeholder is a text that appears when the editor or a node is empty.\n* @see https://www.tiptap.dev/api/extensions/placeholder\n*/\nconst Placeholder = Extension.create({\n\tname: \"placeholder\",\n\taddOptions() {\n\t\treturn {\n\t\t\temptyEditorClass: \"is-editor-empty\",\n\t\t\temptyNodeClass: \"is-empty\",\n\t\t\tdataAttribute: DEFAULT_DATA_ATTRIBUTE,\n\t\t\tplaceholder: \"Write something …\",\n\t\t\tshowOnlyWhenEditable: true,\n\t\t\tshowOnlyCurrent: true,\n\t\t\tincludeChildren: false\n\t\t};\n\t},\n\taddProseMirrorPlugins() {\n\t\treturn [createPlaceholderPlugin({\n\t\t\teditor: this.editor,\n\t\t\toptions: this.options\n\t\t})];\n\t}\n});\n//#endregion\n//#region src/selection/selection.ts\n/**\n* Whether the native browser selection should be cleared on blur and restored on focus.\n* Only applies to non-empty text selections in an editable editor.\n*/\nfunction shouldSyncDomSelection(state, editor) {\n\treturn !state.selection.empty && !isNodeSelection(state.selection) && editor.isEditable;\n}\n/**\n* Whether the selection decoration should be rendered to keep the selection\n* visible while the editor is blurred (and not dragging).\n*/\nfunction shouldPreserveSelection(state, editor) {\n\treturn shouldSyncDomSelection(state, editor) && !editor.isFocused && !editor.view.dragging;\n}\nfunction clearDomSelection() {\n\tvar _window$getSelection;\n\t(_window$getSelection = window.getSelection()) === null || _window$getSelection === void 0 || _window$getSelection.removeAllRanges();\n}\n/**\n* Sync the native selection from the editor state.\n* @see https://prosemirror.net/docs/ref/#view.EditorView.focus\n*/\nfunction restoreDomSelection(view) {\n\tview.focus();\n}\n/**\n* This extension allows you to add a class to the selected text when the editor is blurred.\n* It clears the native browser selection on blur (so `::selection` styles do not overlap the\n* decoration) and restores it when the editor is focused again.\n* @see https://www.tiptap.dev/api/extensions/selection\n*/\nconst Selection = Extension.create({\n\tname: \"selection\",\n\taddOptions() {\n\t\treturn { className: \"selection\" };\n\t},\n\taddProseMirrorPlugins() {\n\t\tconst { editor, options } = this;\n\t\treturn [new Plugin({\n\t\t\tkey: new PluginKey(\"selection\"),\n\t\t\tprops: {\n\t\t\t\tdecorations(state) {\n\t\t\t\t\tif (!shouldPreserveSelection(state, editor)) return null;\n\t\t\t\t\treturn DecorationSet.create(state.doc, [Decoration.inline(state.selection.from, state.selection.to, { class: options.className })]);\n\t\t\t\t},\n\t\t\t\thandleDOMEvents: {\n\t\t\t\t\tblur(view) {\n\t\t\t\t\t\tif (!shouldSyncDomSelection(view.state, editor)) return false;\n\t\t\t\t\t\tclearDomSelection();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t},\n\t\t\t\t\tfocus(view) {\n\t\t\t\t\t\tif (!shouldSyncDomSelection(view.state, editor)) return false;\n\t\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\t\tif (!editor.isDestroyed && view.hasFocus()) restoreDomSelection(view);\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})];\n\t}\n});\n//#endregion\n//#region src/trailing-node/trailing-node.ts\nconst skipTrailingNodeMeta = \"skipTrailingNode\";\nfunction nodeEqualsType({ types, node }) {\n\treturn node && Array.isArray(types) && types.includes(node.type) || (node === null || node === void 0 ? void 0 : node.type) === types;\n}\n/**\n* This extension allows you to add an extra node at the end of the document.\n* @see https://www.tiptap.dev/api/extensions/trailing-node\n*/\nconst TrailingNode = Extension.create({\n\tname: \"trailingNode\",\n\taddOptions() {\n\t\treturn {\n\t\t\tnode: void 0,\n\t\t\tnotAfter: []\n\t\t};\n\t},\n\taddProseMirrorPlugins() {\n\t\tvar _this$editor$schema$t;\n\t\tconst plugin = new PluginKey(this.name);\n\t\tconst defaultNode = this.options.node || ((_this$editor$schema$t = this.editor.schema.topNodeType.contentMatch.defaultType) === null || _this$editor$schema$t === void 0 ? void 0 : _this$editor$schema$t.name) || \"paragraph\";\n\t\tconst disabledNodes = Object.entries(this.editor.schema.nodes).map(([, value]) => value).filter((node) => (this.options.notAfter || []).concat(defaultNode).includes(node.name));\n\t\treturn [new Plugin({\n\t\t\tkey: plugin,\n\t\t\tappendTransaction: (transactions, __, state) => {\n\t\t\t\tconst { doc, tr, schema } = state;\n\t\t\t\tconst shouldInsertNodeAtEnd = plugin.getState(state);\n\t\t\t\tconst endPosition = doc.content.size;\n\t\t\t\tconst type = schema.nodes[defaultNode];\n\t\t\t\tif (transactions.some((transaction) => transaction.getMeta(\"skipTrailingNode\"))) return;\n\t\t\t\tif (!shouldInsertNodeAtEnd) return;\n\t\t\t\treturn tr.insert(endPosition, type.create());\n\t\t\t},\n\t\t\tstate: {\n\t\t\t\tinit: (_, state) => {\n\t\t\t\t\tconst lastNode = state.tr.doc.lastChild;\n\t\t\t\t\treturn !nodeEqualsType({\n\t\t\t\t\t\tnode: lastNode,\n\t\t\t\t\t\ttypes: disabledNodes\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tapply: (tr, value) => {\n\t\t\t\t\tif (!tr.docChanged) return value;\n\t\t\t\t\tif (tr.getMeta(\"__uniqueIDTransaction\")) return value;\n\t\t\t\t\tconst lastNode = tr.doc.lastChild;\n\t\t\t\t\treturn !nodeEqualsType({\n\t\t\t\t\t\tnode: lastNode,\n\t\t\t\t\t\ttypes: disabledNodes\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t})];\n\t}\n});\n//#endregion\n//#region src/undo-redo/undo-redo.ts\n/**\n* This extension allows you to undo and redo recent changes.\n* @see https://www.tiptap.dev/api/extensions/undo-redo\n*\n* **Important**: If the `@tiptap/extension-collaboration` package is used, make sure to remove\n* the `undo-redo` extension, as it is not compatible with the `collaboration` extension.\n*\n* `@tiptap/extension-collaboration` uses its own history implementation.\n*/\nconst UndoRedo = Extension.create({\n\tname: \"undoRedo\",\n\taddOptions() {\n\t\treturn {\n\t\t\tdepth: 100,\n\t\t\tnewGroupDelay: 500\n\t\t};\n\t},\n\taddCommands() {\n\t\treturn {\n\t\t\tundo: () => ({ state, dispatch }) => {\n\t\t\t\treturn undo(state, dispatch);\n\t\t\t},\n\t\t\tredo: () => ({ state, dispatch }) => {\n\t\t\t\treturn redo(state, dispatch);\n\t\t\t}\n\t\t};\n\t},\n\taddProseMirrorPlugins() {\n\t\treturn [history(this.options)];\n\t},\n\taddKeyboardShortcuts() {\n\t\treturn {\n\t\t\t\"Mod-z\": () => this.editor.commands.undo(),\n\t\t\t\"Shift-Mod-z\": () => this.editor.commands.redo(),\n\t\t\t\"Mod-y\": () => this.editor.commands.redo(),\n\t\t\t\"Mod-я\": () => this.editor.commands.undo(),\n\t\t\t\"Shift-Mod-я\": () => this.editor.commands.redo()\n\t\t};\n\t}\n});\n//#endregion\nexport { CharacterCount, DEFAULT_DATA_ATTRIBUTE, Dropcursor, Focus, Gapcursor, PLUGIN_KEY, Placeholder, Selection, TrailingNode, UndoRedo, preparePlaceholderAttribute, skipTrailingNodeMeta };\n\n//# sourceMappingURL=index.js.map","//#region src/jsx-runtime.ts\nconst jsxElements = /* @__PURE__ */ new WeakSet();\nconst jsxFragments = /* @__PURE__ */ new WeakSet();\n/** Create a new JSX element from the given spec */\nfunction createJSXElement(spec) {\n\tconst element = spec;\n\tjsxElements.add(element);\n\treturn element;\n}\n/** Check if a spec is a JSX element */\nfunction isJSXElement(value) {\n\treturn Array.isArray(value) && jsxElements.has(value);\n}\nfunction flattenFragmentChildren(children) {\n\treturn children.flatMap((child) => {\n\t\tif (child == null) return [];\n\t\tif (Array.isArray(child) && jsxFragments.has(child) && !isJSXElement(child)) return flattenFragmentChildren(child);\n\t\treturn [child];\n\t});\n}\nfunction Fragment(props) {\n\tjsxFragments.add(props.children);\n\treturn props.children;\n}\nfunction render(tag, attributes) {\n\tif (tag === \"slot\") return 0;\n\tif (tag instanceof Function) {\n\t\tconst result = tag(attributes);\n\t\tif (Array.isArray(result) && !isJSXElement(result) && !jsxFragments.has(result)) return createJSXElement(result);\n\t\treturn result;\n\t}\n\tconst { children, ...rest } = attributes !== null && attributes !== void 0 ? attributes : {};\n\tif (tag === \"svg\") throw new Error(\"SVG elements are not supported in the JSX syntax, use the array syntax instead\");\n\tif (Array.isArray(children)) {\n\t\tif (isJSXElement(children)) return createJSXElement([\n\t\t\ttag,\n\t\t\trest,\n\t\t\tchildren\n\t\t]);\n\t\tif (children.length === 0) return createJSXElement([tag, rest]);\n\t\tconst flattenedChildren = flattenFragmentChildren(children);\n\t\tif (flattenedChildren.length === 0) return createJSXElement([tag, rest]);\n\t\treturn createJSXElement([\n\t\t\ttag,\n\t\t\trest,\n\t\t\t...flattenedChildren\n\t\t]);\n\t}\n\tif (children !== void 0 && children !== null) return createJSXElement([\n\t\ttag,\n\t\trest,\n\t\tchildren\n\t]);\n\treturn createJSXElement([tag, rest]);\n}\nconst h = (tag, attributes) => render(tag, attributes);\nconst jsxs = (tag, attributes) => render(tag, attributes);\nconst jsxDEV = (tag, attributes, _key, _isStaticChildren) => {\n\treturn render(tag, attributes);\n};\n//#endregion\nexport { Fragment, h as createElement, h, h as jsx, jsxDEV, jsxs };\n\n//# sourceMappingURL=jsx-runtime.js.map","import { Node, mergeAttributes, wrappingInputRule } from \"@tiptap/core\";\nimport { Slice } from \"@tiptap/pm/model\";\nimport { TextSelection } from \"@tiptap/pm/state\";\nimport { jsx } from \"@tiptap/core/jsx-runtime\";\n//#region src/handleBackspace.ts\n/**\n* Restructure the blockquote boundary at the caret.\n*\n* Two cases are handled in a single backspace:\n*\n* 1. Caret at the start of a non-first child of a blockquote — lift the\n* current child out, splitting the blockquote around it.\n* 2. Caret at the start of a top-level textblock whose previous sibling is\n* a blockquote with a textblock last child — merge the current\n* textblock's inline content into the blockquote's last textblock\n* instead of letting joinBackward pull the paragraph back inside.\n*\n* Returns true when the backspace was consumed.\n*/\nconst handleBackspace = (editor, type) => {\n\tvar _previous$lastChild;\n\tconst { state } = editor;\n\tconst { selection } = state;\n\tif (!selection.empty) return false;\n\tconst { $from } = selection;\n\tif ($from.parentOffset !== 0) return false;\n\tconst parentDepth = $from.depth - 1;\n\tif (parentDepth < 0) return false;\n\tconst parent = $from.node(parentDepth);\n\tconst index = $from.index(parentDepth);\n\tif (index === 0) return false;\n\tif (parent.type === type) return editor.commands.lift(type.name);\n\tconst previous = parent.child(index - 1);\n\tif (previous.type !== type || !((_previous$lastChild = previous.lastChild) === null || _previous$lastChild === void 0 ? void 0 : _previous$lastChild.isTextblock)) return false;\n\tconst targetPos = $from.before() - 1 - 1;\n\treturn editor.commands.command(({ tr, dispatch }) => {\n\t\tif (!dispatch) return true;\n\t\tconst content = $from.parent.content;\n\t\tconst slice = new Slice(content, 0, 0);\n\t\ttr.replace(targetPos, $from.after(), slice);\n\t\ttr.setSelection(TextSelection.create(tr.doc, targetPos + content.size));\n\t\ttr.scrollIntoView();\n\t\tdispatch(tr);\n\t\treturn true;\n\t});\n};\n//#endregion\n//#region src/blockquote.tsx\n/** @jsxImportSource @tiptap/core */\n/**\n* Matches a blockquote to a `>` as input.\n*/\nconst inputRegex = /^\\s*>\\s$/;\n/**\n* This extension allows you to create blockquotes.\n* @see https://tiptap.dev/api/nodes/blockquote\n*/\nconst Blockquote = Node.create({\n\tname: \"blockquote\",\n\taddOptions() {\n\t\treturn { HTMLAttributes: {} };\n\t},\n\tcontent: \"block+\",\n\tgroup: \"block\",\n\tdefining: true,\n\tparseHTML() {\n\t\treturn [{ tag: \"blockquote\" }];\n\t},\n\trenderHTML({ HTMLAttributes }) {\n\t\treturn /* @__PURE__ */ jsx(\"blockquote\", {\n\t\t\t...mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n\t\t\tchildren: /* @__PURE__ */ jsx(\"slot\", {})\n\t\t});\n\t},\n\tparseMarkdown: (token, helpers) => {\n\t\tvar _helpers$parseBlockCh;\n\t\tconst parseBlockChildren = (_helpers$parseBlockCh = helpers.parseBlockChildren) !== null && _helpers$parseBlockCh !== void 0 ? _helpers$parseBlockCh : helpers.parseChildren;\n\t\treturn helpers.createNode(\"blockquote\", void 0, parseBlockChildren(token.tokens || []));\n\t},\n\trenderMarkdown: (node, h) => {\n\t\tif (!node.content) return \"\";\n\t\tconst prefix = \">\";\n\t\tconst result = [];\n\t\tnode.content.forEach((child, index) => {\n\t\t\tvar _h$renderChild, _h$renderChild2;\n\t\t\tconst linesWithPrefix = ((_h$renderChild = (_h$renderChild2 = h.renderChild) === null || _h$renderChild2 === void 0 ? void 0 : _h$renderChild2.call(h, child, index)) !== null && _h$renderChild !== void 0 ? _h$renderChild : h.renderChildren([child])).split(\"\\n\").map((line) => {\n\t\t\t\tif (line.trim() === \"\") return prefix;\n\t\t\t\treturn `${prefix} ${line}`;\n\t\t\t});\n\t\t\tresult.push(linesWithPrefix.join(\"\\n\"));\n\t\t});\n\t\treturn result.join(`\\n${prefix}\\n`);\n\t},\n\taddCommands() {\n\t\treturn {\n\t\t\tsetBlockquote: () => ({ commands }) => {\n\t\t\t\treturn commands.wrapIn(this.name);\n\t\t\t},\n\t\t\ttoggleBlockquote: () => ({ commands }) => {\n\t\t\t\treturn commands.toggleWrap(this.name);\n\t\t\t},\n\t\t\tunsetBlockquote: () => ({ commands }) => {\n\t\t\t\treturn commands.lift(this.name);\n\t\t\t}\n\t\t};\n\t},\n\taddKeyboardShortcuts() {\n\t\treturn {\n\t\t\t\"Mod-Shift-b\": () => this.editor.commands.toggleBlockquote(),\n\t\t\tBackspace: () => handleBackspace(this.editor, this.type)\n\t\t};\n\t},\n\taddInputRules() {\n\t\treturn [wrappingInputRule({\n\t\t\tfind: inputRegex,\n\t\t\ttype: this.type\n\t\t})];\n\t}\n});\n//#endregion\n//#region src/index.ts\nvar src_default = Blockquote;\n//#endregion\nexport { Blockquote, src_default as default, inputRegex };\n\n//# sourceMappingURL=index.js.map","import { Mark, markInputRule, markPasteRule, mergeAttributes } from \"@tiptap/core\";\nimport { jsx } from \"@tiptap/core/jsx-runtime\";\n//#region src/bold.tsx\n/** @jsxImportSource @tiptap/core */\n/**\n* Matches bold text via `**` as input.\n*/\nconst starInputRegex = /(?:^|\\s)(\\*\\*(?!\\s+\\*\\*)((?:[^*]+))\\*\\*(?!\\s+\\*\\*))$/;\n/**\n* Matches bold text via `**` while pasting.\n*/\nconst starPasteRegex = /(?:^|\\s)(\\*\\*(?!\\s+\\*\\*)((?:[^*]+))\\*\\*(?!\\s+\\*\\*))/g;\n/**\n* Matches bold text via `__` as input.\n*/\nconst underscoreInputRegex = /(?:^|\\s)(__(?!\\s+__)((?:[^_]+))__(?!\\s+__))$/;\n/**\n* Matches bold text via `__` while pasting.\n*/\nconst underscorePasteRegex = /(?:^|\\s)(__(?!\\s+__)((?:[^_]+))__(?!\\s+__))/g;\n/**\n* This extension allows you to mark text as bold.\n* @see https://tiptap.dev/api/marks/bold\n*/\nconst Bold = Mark.create({\n\tname: \"bold\",\n\taddOptions() {\n\t\treturn { HTMLAttributes: {} };\n\t},\n\tparseHTML() {\n\t\treturn [\n\t\t\t{ tag: \"strong\" },\n\t\t\t{\n\t\t\t\ttag: \"b\",\n\t\t\t\tgetAttrs: (node) => node.style.fontWeight !== \"normal\" && null\n\t\t\t},\n\t\t\t{\n\t\t\t\tstyle: \"font-weight=400\",\n\t\t\t\tclearMark: (mark) => mark.type.name === this.name\n\t\t\t},\n\t\t\t{\n\t\t\t\tstyle: \"font-weight\",\n\t\t\t\tgetAttrs: (value) => /^(bold(er)?|[5-9]\\d{2,})$/.test(value) && null\n\t\t\t}\n\t\t];\n\t},\n\trenderHTML({ HTMLAttributes }) {\n\t\treturn /* @__PURE__ */ jsx(\"strong\", {\n\t\t\t...mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n\t\t\tchildren: /* @__PURE__ */ jsx(\"slot\", {})\n\t\t});\n\t},\n\tmarkdownTokenName: \"strong\",\n\tparseMarkdown: (token, helpers) => {\n\t\treturn helpers.applyMark(\"bold\", helpers.parseInline(token.tokens || []));\n\t},\n\tmarkdownOptions: { htmlReopen: {\n\t\topen: \"<strong>\",\n\t\tclose: \"</strong>\"\n\t} },\n\trenderMarkdown: (node, h) => {\n\t\treturn `**${h.renderChildren(node)}**`;\n\t},\n\taddCommands() {\n\t\treturn {\n\t\t\tsetBold: () => ({ commands }) => {\n\t\t\t\treturn commands.setMark(this.name);\n\t\t\t},\n\t\t\ttoggleBold: () => ({ commands }) => {\n\t\t\t\treturn commands.toggleMark(this.name);\n\t\t\t},\n\t\t\tunsetBold: () => ({ commands }) => {\n\t\t\t\treturn commands.unsetMark(this.name);\n\t\t\t}\n\t\t};\n\t},\n\taddKeyboardShortcuts() {\n\t\treturn {\n\t\t\t\"Mod-b\": () => this.editor.commands.toggleBold(),\n\t\t\t\"Mod-B\": () => this.editor.commands.toggleBold()\n\t\t};\n\t},\n\taddInputRules() {\n\t\treturn [markInputRule({\n\t\t\tfind: starInputRegex,\n\t\t\ttype: this.type\n\t\t}), markInputRule({\n\t\t\tfind: underscoreInputRegex,\n\t\t\ttype: this.type\n\t\t})];\n\t},\n\taddPasteRules() {\n\t\treturn [markPasteRule({\n\t\t\tfind: starPasteRegex,\n\t\t\ttype: this.type\n\t\t}), markPasteRule({\n\t\t\tfind: underscorePasteRegex,\n\t\t\ttype: this.type\n\t\t})];\n\t}\n});\n//#endregion\n//#region src/index.ts\nvar src_default = Bold;\n//#endregion\nexport { Bold, src_default as default, starInputRegex, starPasteRegex, underscoreInputRegex, underscorePasteRegex };\n\n//# sourceMappingURL=index.js.map","import { Node, mergeAttributes, textblockTypeInputRule } from \"@tiptap/core\";\nimport { Plugin, PluginKey, Selection, TextSelection } from \"@tiptap/pm/state\";\n//#region src/code-block.ts\nconst DEFAULT_TAB_SIZE = 4;\n/**\n* Matches a code block with backticks.\n*/\nconst backtickInputRegex = /^```([a-z]+)?[\\s\\n]$/;\n/**\n* Matches a code block with tildes.\n*/\nconst tildeInputRegex = /^~~~([a-z]+)?[\\s\\n]$/;\n/**\n* This extension allows you to create code blocks.\n* @see https://tiptap.dev/api/nodes/code-block\n*/\nconst CodeBlock = Node.create({\n\tname: \"codeBlock\",\n\taddOptions() {\n\t\treturn {\n\t\t\tlanguageClassPrefix: \"language-\",\n\t\t\texitOnTripleEnter: true,\n\t\t\texitOnArrowDown: true,\n\t\t\texitOnArrowUp: true,\n\t\t\tdefaultLanguage: null,\n\t\t\tenableTabIndentation: false,\n\t\t\ttabSize: DEFAULT_TAB_SIZE,\n\t\t\tHTMLAttributes: {}\n\t\t};\n\t},\n\tcontent: \"text*\",\n\tmarks: \"\",\n\tgroup: \"block\",\n\tcode: true,\n\tdefining: true,\n\taddAttributes() {\n\t\treturn { language: {\n\t\t\tdefault: this.options.defaultLanguage,\n\t\t\tparseHTML: (element) => {\n\t\t\t\tvar _element$firstElement;\n\t\t\t\tconst { languageClassPrefix } = this.options;\n\t\t\t\tif (!languageClassPrefix) return null;\n\t\t\t\tconst language = [...((_element$firstElement = element.firstElementChild) === null || _element$firstElement === void 0 ? void 0 : _element$firstElement.classList) || []].filter((className) => className.startsWith(languageClassPrefix)).map((className) => className.replace(languageClassPrefix, \"\"))[0];\n\t\t\t\tif (!language) return null;\n\t\t\t\treturn language;\n\t\t\t},\n\t\t\trendered: false\n\t\t} };\n\t},\n\tparseHTML() {\n\t\treturn [{\n\t\t\ttag: \"pre\",\n\t\t\tpreserveWhitespace: \"full\"\n\t\t}];\n\t},\n\trenderHTML({ node, HTMLAttributes }) {\n\t\treturn [\n\t\t\t\"pre\",\n\t\t\tmergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n\t\t\t[\n\t\t\t\t\"code\",\n\t\t\t\t{ class: node.attrs.language ? this.options.languageClassPrefix + node.attrs.language : null },\n\t\t\t\t0\n\t\t\t]\n\t\t];\n\t},\n\tmarkdownTokenName: \"code\",\n\tparseMarkdown: (token, helpers) => {\n\t\tvar _token$raw, _token$raw2;\n\t\tif (((_token$raw = token.raw) === null || _token$raw === void 0 ? void 0 : _token$raw.startsWith(\"```\")) === false && ((_token$raw2 = token.raw) === null || _token$raw2 === void 0 ? void 0 : _token$raw2.startsWith(\"~~~\")) === false && token.codeBlockStyle !== \"indented\") return [];\n\t\treturn helpers.createNode(\"codeBlock\", { language: token.lang || null }, token.text ? [helpers.createTextNode(token.text)] : []);\n\t},\n\trenderMarkdown: (node, h) => {\n\t\tvar _node$attrs;\n\t\tlet output = \"\";\n\t\tconst language = ((_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs.language) || \"\";\n\t\tif (!node.content) output = `\\`\\`\\`${language}\\n\\n\\`\\`\\``;\n\t\telse output = [\n\t\t\t`\\`\\`\\`${language}`,\n\t\t\th.renderChildren(node.content),\n\t\t\t\"```\"\n\t\t].join(\"\\n\");\n\t\treturn output;\n\t},\n\taddCommands() {\n\t\treturn {\n\t\t\tsetCodeBlock: (attributes) => ({ commands }) => {\n\t\t\t\treturn commands.setNode(this.name, attributes);\n\t\t\t},\n\t\t\ttoggleCodeBlock: (attributes) => ({ commands }) => {\n\t\t\t\treturn commands.toggleNode(this.name, \"paragraph\", attributes);\n\t\t\t}\n\t\t};\n\t},\n\taddKeyboardShortcuts() {\n\t\treturn {\n\t\t\t\"Mod-Alt-c\": () => this.editor.commands.toggleCodeBlock(),\n\t\t\tBackspace: () => {\n\t\t\t\tconst { empty, $anchor } = this.editor.state.selection;\n\t\t\t\tconst isAtStart = $anchor.pos === 1;\n\t\t\t\tif (!empty || $anchor.parent.type.name !== this.name) return false;\n\t\t\t\tif (isAtStart || !$anchor.parent.textContent.length) return this.editor.commands.clearNodes();\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tTab: ({ editor }) => {\n\t\t\t\tvar _this$options$tabSize;\n\t\t\t\tif (!this.options.enableTabIndentation) return false;\n\t\t\t\tconst tabSize = (_this$options$tabSize = this.options.tabSize) !== null && _this$options$tabSize !== void 0 ? _this$options$tabSize : DEFAULT_TAB_SIZE;\n\t\t\t\tconst { state } = editor;\n\t\t\t\tconst { selection } = state;\n\t\t\t\tconst { $from, empty } = selection;\n\t\t\t\tif ($from.parent.type !== this.type) return false;\n\t\t\t\tconst indent = \" \".repeat(tabSize);\n\t\t\t\tif (empty) return editor.commands.insertContent(indent);\n\t\t\t\treturn editor.commands.command(({ tr }) => {\n\t\t\t\t\tconst { from, to } = selection;\n\t\t\t\t\tconst indentedText = state.doc.textBetween(from, to, \"\\n\", \"\\n\").split(\"\\n\").map((line) => indent + line).join(\"\\n\");\n\t\t\t\t\ttr.replaceWith(from, to, state.schema.text(indentedText));\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\t\t\t},\n\t\t\t\"Shift-Tab\": ({ editor }) => {\n\t\t\t\tvar _this$options$tabSize2;\n\t\t\t\tif (!this.options.enableTabIndentation) return false;\n\t\t\t\tconst tabSize = (_this$options$tabSize2 = this.options.tabSize) !== null && _this$options$tabSize2 !== void 0 ? _this$options$tabSize2 : DEFAULT_TAB_SIZE;\n\t\t\t\tconst { state } = editor;\n\t\t\t\tconst { selection } = state;\n\t\t\t\tconst { $from, empty } = selection;\n\t\t\t\tif ($from.parent.type !== this.type) return false;\n\t\t\t\tif (empty) return editor.commands.command(({ tr }) => {\n\t\t\t\t\tvar _currentLine$match;\n\t\t\t\t\tconst { pos } = $from;\n\t\t\t\t\tconst codeBlockStart = $from.start();\n\t\t\t\t\tconst codeBlockEnd = $from.end();\n\t\t\t\t\tconst lines = state.doc.textBetween(codeBlockStart, codeBlockEnd, \"\\n\", \"\\n\").split(\"\\n\");\n\t\t\t\t\tlet currentLineIndex = 0;\n\t\t\t\t\tlet charCount = 0;\n\t\t\t\t\tconst relativeCursorPos = pos - codeBlockStart;\n\t\t\t\t\tfor (let i = 0; i < lines.length; i += 1) {\n\t\t\t\t\t\tif (charCount + lines[i].length >= relativeCursorPos) {\n\t\t\t\t\t\t\tcurrentLineIndex = i;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcharCount += lines[i].length + 1;\n\t\t\t\t\t}\n\t\t\t\t\tconst leadingSpaces = ((_currentLine$match = lines[currentLineIndex].match(/^ */)) === null || _currentLine$match === void 0 ? void 0 : _currentLine$match[0]) || \"\";\n\t\t\t\t\tconst spacesToRemove = Math.min(leadingSpaces.length, tabSize);\n\t\t\t\t\tif (spacesToRemove === 0) return true;\n\t\t\t\t\tlet lineStartPos = codeBlockStart;\n\t\t\t\t\tfor (let i = 0; i < currentLineIndex; i += 1) lineStartPos += lines[i].length + 1;\n\t\t\t\t\ttr.delete(lineStartPos, lineStartPos + spacesToRemove);\n\t\t\t\t\tif (pos - lineStartPos <= spacesToRemove) tr.setSelection(TextSelection.create(tr.doc, lineStartPos));\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\t\t\t\treturn editor.commands.command(({ tr }) => {\n\t\t\t\t\tconst { from, to } = selection;\n\t\t\t\t\tconst reverseIndentText = state.doc.textBetween(from, to, \"\\n\", \"\\n\").split(\"\\n\").map((line) => {\n\t\t\t\t\t\tvar _line$match;\n\t\t\t\t\t\tconst leadingSpaces = ((_line$match = line.match(/^ */)) === null || _line$match === void 0 ? void 0 : _line$match[0]) || \"\";\n\t\t\t\t\t\tconst spacesToRemove = Math.min(leadingSpaces.length, tabSize);\n\t\t\t\t\t\treturn line.slice(spacesToRemove);\n\t\t\t\t\t}).join(\"\\n\");\n\t\t\t\t\ttr.replaceWith(from, to, state.schema.text(reverseIndentText));\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\t\t\t},\n\t\t\tEnter: ({ editor }) => {\n\t\t\t\tif (!this.options.exitOnTripleEnter) return false;\n\t\t\t\tconst { state } = editor;\n\t\t\t\tconst { selection } = state;\n\t\t\t\tconst { $from, empty } = selection;\n\t\t\t\tif (!empty || $from.parent.type !== this.type) return false;\n\t\t\t\tconst isAtEnd = $from.parentOffset === $from.parent.nodeSize - 2;\n\t\t\t\tconst endsWithDoubleNewline = $from.parent.textContent.endsWith(\"\\n\\n\");\n\t\t\t\tif (!isAtEnd || !endsWithDoubleNewline) return false;\n\t\t\t\treturn editor.chain().command(({ tr }) => {\n\t\t\t\t\ttr.delete($from.pos - 2, $from.pos);\n\t\t\t\t\treturn true;\n\t\t\t\t}).exitCode().run();\n\t\t\t},\n\t\t\tArrowUp: ({ editor }) => {\n\t\t\t\tif (!this.options.exitOnArrowUp) return false;\n\t\t\t\tconst { state } = editor;\n\t\t\t\tconst { selection } = state;\n\t\t\t\tconst { $from, empty } = selection;\n\t\t\t\tif (!empty || $from.parent.type !== this.type) return false;\n\t\t\t\tif ($from.parentOffset !== 0) return false;\n\t\t\t\tconst before = $from.before();\n\t\t\t\tif (before > 0) return false;\n\t\t\t\treturn editor.commands.insertDefaultBlock({ pos: before });\n\t\t\t},\n\t\t\tArrowDown: ({ editor }) => {\n\t\t\t\tif (!this.options.exitOnArrowDown) return false;\n\t\t\t\tconst { state } = editor;\n\t\t\t\tconst { selection, doc } = state;\n\t\t\t\tconst { $from, empty } = selection;\n\t\t\t\tif (!empty || $from.parent.type !== this.type) return false;\n\t\t\t\tif (!($from.parentOffset === $from.parent.nodeSize - 2)) return false;\n\t\t\t\tconst after = $from.after();\n\t\t\t\tif (after === void 0) return false;\n\t\t\t\tif (doc.nodeAt(after)) return editor.commands.command(({ tr }) => {\n\t\t\t\t\ttr.setSelection(Selection.near(doc.resolve(after)));\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\t\t\t\treturn editor.commands.exitCode();\n\t\t\t}\n\t\t};\n\t},\n\taddInputRules() {\n\t\treturn [textblockTypeInputRule({\n\t\t\tfind: backtickInputRegex,\n\t\t\ttype: this.type,\n\t\t\tgetAttributes: (match) => ({ language: match[1] })\n\t\t}), textblockTypeInputRule({\n\t\t\tfind: tildeInputRegex,\n\t\t\ttype: this.type,\n\t\t\tgetAttributes: (match) => ({ language: match[1] })\n\t\t})];\n\t},\n\taddProseMirrorPlugins() {\n\t\treturn [new Plugin({\n\t\t\tkey: new PluginKey(\"codeBlockVSCodeHandler\"),\n\t\t\tprops: { handlePaste: (view, event) => {\n\t\t\t\tif (!event.clipboardData) return false;\n\t\t\t\tif (this.editor.isActive(this.type.name)) return false;\n\t\t\t\tconst text = event.clipboardData.getData(\"text/plain\");\n\t\t\t\tconst vscode = event.clipboardData.getData(\"vscode-editor-data\");\n\t\t\t\tconst vscodeData = vscode ? JSON.parse(vscode) : void 0;\n\t\t\t\tconst language = vscodeData === null || vscodeData === void 0 ? void 0 : vscodeData.mode;\n\t\t\t\tif (!text || !language) return false;\n\t\t\t\tconst { tr, schema } = view.state;\n\t\t\t\tconst textNode = schema.text(text.replace(/\\r\\n?/g, \"\\n\"));\n\t\t\t\ttr.replaceSelectionWith(this.type.create({ language }, textNode));\n\t\t\t\tif (tr.selection.$from.parent.type !== this.type) tr.setSelection(TextSelection.near(tr.doc.resolve(Math.max(0, tr.selection.from - 2))));\n\t\t\t\ttr.setMeta(\"paste\", true);\n\t\t\t\tview.dispatch(tr);\n\t\t\t\treturn true;\n\t\t\t} }\n\t\t})];\n\t}\n});\n//#endregion\n//#region src/index.ts\nvar src_default = CodeBlock;\n//#endregion\nexport { CodeBlock, backtickInputRegex, src_default as default, tildeInputRegex };\n\n//# sourceMappingURL=index.js.map","import { Node, mergeAttributes } from \"@tiptap/core\";\n//#region src/hard-break.ts\n/**\n* This extension allows you to insert hard breaks.\n* @see https://www.tiptap.dev/api/nodes/hard-break\n*/\nconst HardBreak = Node.create({\n\tname: \"hardBreak\",\n\tmarkdownTokenName: \"br\",\n\taddOptions() {\n\t\treturn {\n\t\t\tkeepMarks: true,\n\t\t\tHTMLAttributes: {}\n\t\t};\n\t},\n\tinline: true,\n\tgroup: \"inline\",\n\tselectable: false,\n\tlinebreakReplacement: true,\n\tparseHTML() {\n\t\treturn [{ tag: \"br\" }];\n\t},\n\trenderHTML({ HTMLAttributes }) {\n\t\treturn [\"br\", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes)];\n\t},\n\trenderText() {\n\t\treturn \"\\n\";\n\t},\n\trenderMarkdown: () => ` \\n`,\n\tparseMarkdown: () => {\n\t\treturn { type: \"hardBreak\" };\n\t},\n\taddCommands() {\n\t\treturn { setHardBreak: () => ({ commands, chain, state, editor }) => {\n\t\t\treturn commands.first([() => commands.exitCode(), () => commands.command(() => {\n\t\t\t\tconst { selection, storedMarks } = state;\n\t\t\t\tif (selection.$from.parent.type.spec.isolating) return false;\n\t\t\t\tconst { keepMarks } = this.options;\n\t\t\t\tconst { splittableMarks } = editor.extensionManager;\n\t\t\t\tconst marks = storedMarks || selection.$to.parentOffset && selection.$from.marks();\n\t\t\t\treturn chain().insertContent({ type: this.name }).command(({ tr, dispatch }) => {\n\t\t\t\t\tif (dispatch && marks && keepMarks) {\n\t\t\t\t\t\tconst filteredMarks = marks.filter((mark) => splittableMarks.includes(mark.type.name));\n\t\t\t\t\t\ttr.ensureMarks(filteredMarks);\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}).scrollIntoView().run();\n\t\t\t})]);\n\t\t} };\n\t},\n\taddKeyboardShortcuts() {\n\t\treturn {\n\t\t\t\"Mod-Enter\": () => this.editor.commands.setHardBreak(),\n\t\t\t\"Shift-Enter\": () => this.editor.commands.setHardBreak()\n\t\t};\n\t}\n});\n//#endregion\n//#region src/index.ts\nvar src_default = HardBreak;\n//#endregion\nexport { HardBreak, src_default as default };\n\n//# sourceMappingURL=index.js.map","import { Node, mergeAttributes, textblockTypeInputRule } from \"@tiptap/core\";\n//#region src/heading.ts\n/**\n* This extension allows you to create headings.\n* @see https://www.tiptap.dev/api/nodes/heading\n*/\nconst Heading = Node.create({\n\tname: \"heading\",\n\taddOptions() {\n\t\treturn {\n\t\t\tlevels: [\n\t\t\t\t1,\n\t\t\t\t2,\n\t\t\t\t3,\n\t\t\t\t4,\n\t\t\t\t5,\n\t\t\t\t6\n\t\t\t],\n\t\t\tHTMLAttributes: {}\n\t\t};\n\t},\n\tcontent: \"inline*\",\n\tgroup: \"block\",\n\tdefining: true,\n\taddAttributes() {\n\t\treturn { level: {\n\t\t\tdefault: 1,\n\t\t\trendered: false\n\t\t} };\n\t},\n\tparseHTML() {\n\t\treturn this.options.levels.map((level) => ({\n\t\t\ttag: `h${level}`,\n\t\t\tattrs: { level }\n\t\t}));\n\t},\n\trenderHTML({ node, HTMLAttributes }) {\n\t\treturn [\n\t\t\t`h${this.options.levels.includes(node.attrs.level) ? node.attrs.level : this.options.levels[0]}`,\n\t\t\tmergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n\t\t\t0\n\t\t];\n\t},\n\tparseMarkdown: (token, helpers) => {\n\t\treturn helpers.createNode(\"heading\", { level: token.depth || 1 }, helpers.parseInline(token.tokens || []));\n\t},\n\trenderMarkdown: (node, h) => {\n\t\tvar _node$attrs;\n\t\tconst level = ((_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs.level) ? parseInt(node.attrs.level, 10) : 1;\n\t\tconst headingChars = \"#\".repeat(level);\n\t\tif (!node.content) return \"\";\n\t\treturn `${headingChars} ${h.renderChildren(node.content)}`;\n\t},\n\taddCommands() {\n\t\treturn {\n\t\t\tsetHeading: (attributes) => ({ commands }) => {\n\t\t\t\tif (!this.options.levels.includes(attributes.level)) return false;\n\t\t\t\treturn commands.setNode(this.name, attributes);\n\t\t\t},\n\t\t\ttoggleHeading: (attributes) => ({ commands }) => {\n\t\t\t\tif (!this.options.levels.includes(attributes.level)) return false;\n\t\t\t\treturn commands.toggleNode(this.name, \"paragraph\", attributes);\n\t\t\t}\n\t\t};\n\t},\n\taddKeyboardShortcuts() {\n\t\treturn this.options.levels.reduce((items, level) => ({\n\t\t\t...items,\n\t\t\t[`Mod-Alt-${level}`]: () => this.editor.commands.toggleHeading({ level })\n\t\t}), {});\n\t},\n\taddInputRules() {\n\t\treturn this.options.levels.map((level) => {\n\t\t\treturn textblockTypeInputRule({\n\t\t\t\tfind: new RegExp(`^(#{${Math.min(...this.options.levels)},${level}})\\\\s$`),\n\t\t\t\ttype: this.type,\n\t\t\t\tgetAttributes: { level }\n\t\t\t});\n\t\t});\n\t}\n});\n//#endregion\n//#region src/index.ts\nvar src_default = Heading;\n//#endregion\nexport { Heading, src_default as default };\n\n//# sourceMappingURL=index.js.map","import { Node, canInsertNode, isNodeSelection, mergeAttributes, nodeInputRule } from \"@tiptap/core\";\nimport { NodeSelection, TextSelection } from \"@tiptap/pm/state\";\n//#region src/horizontal-rule.ts\n/**\n* This extension allows you to insert horizontal rules.\n* @see https://www.tiptap.dev/api/nodes/horizontal-rule\n*/\nconst HorizontalRule = Node.create({\n\tname: \"horizontalRule\",\n\taddOptions() {\n\t\treturn {\n\t\t\tHTMLAttributes: {},\n\t\t\tnextNodeType: \"paragraph\"\n\t\t};\n\t},\n\tgroup: \"block\",\n\tparseHTML() {\n\t\treturn [{ tag: \"hr\" }];\n\t},\n\trenderHTML({ HTMLAttributes }) {\n\t\treturn [\"hr\", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes)];\n\t},\n\tmarkdownTokenName: \"hr\",\n\tparseMarkdown: (token, helpers) => {\n\t\treturn helpers.createNode(\"horizontalRule\");\n\t},\n\trenderMarkdown: () => {\n\t\treturn \"---\";\n\t},\n\taddCommands() {\n\t\treturn { setHorizontalRule: () => ({ chain, state }) => {\n\t\t\tif (!canInsertNode(state, state.schema.nodes[this.name])) return false;\n\t\t\tconst { selection } = state;\n\t\t\tconst { $to: $originTo } = selection;\n\t\t\tconst currentChain = chain();\n\t\t\tif (isNodeSelection(selection)) currentChain.insertContentAt($originTo.pos, { type: this.name });\n\t\t\telse currentChain.insertContent({ type: this.name });\n\t\t\treturn currentChain.command(({ state: chainState, tr, dispatch }) => {\n\t\t\t\tif (dispatch) {\n\t\t\t\t\tconst { $to } = tr.selection;\n\t\t\t\t\tconst posAfter = $to.end();\n\t\t\t\t\tif ($to.nodeAfter) {\n\t\t\t\t\t\tif ($to.nodeAfter.isTextblock) tr.setSelection(TextSelection.create(tr.doc, $to.pos + 1));\n\t\t\t\t\t\telse if ($to.nodeAfter.isBlock) tr.setSelection(NodeSelection.create(tr.doc, $to.pos));\n\t\t\t\t\t\telse tr.setSelection(TextSelection.create(tr.doc, $to.pos));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst nodeType = chainState.schema.nodes[this.options.nextNodeType] || $to.parent.type.contentMatch.defaultType;\n\t\t\t\t\t\tconst node = nodeType === null || nodeType === void 0 ? void 0 : nodeType.create();\n\t\t\t\t\t\tif (node) {\n\t\t\t\t\t\t\ttr.insert(posAfter, node);\n\t\t\t\t\t\t\ttr.setSelection(TextSelection.create(tr.doc, posAfter + 1));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\ttr.scrollIntoView();\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}).run();\n\t\t} };\n\t},\n\taddInputRules() {\n\t\treturn [nodeInputRule({\n\t\t\tfind: /^(?:---|—-|___\\s|\\*\\*\\*\\s)$/,\n\t\t\ttype: this.type\n\t\t})];\n\t}\n});\n//#endregion\n//#region src/index.ts\nvar src_default = HorizontalRule;\n//#endregion\nexport { HorizontalRule, src_default as default };\n\n//# sourceMappingURL=index.js.map","import { Mark, markInputRule, markPasteRule, mergeAttributes } from \"@tiptap/core\";\n//#region src/italic.ts\n/**\n* Matches an italic to a *italic* on input.\n*/\nconst starInputRegex = /(?:^|\\s)(\\*(?!\\s+\\*)((?:[^*]+))\\*(?!\\s+\\*))$/;\n/**\n* Matches an italic to a *italic* on paste.\n*/\nconst starPasteRegex = /(?:^|\\s)(\\*(?!\\s+\\*)((?:[^*]+))\\*(?!\\s+\\*))/g;\n/**\n* Matches an italic to a _italic_ on input.\n*/\nconst underscoreInputRegex = /(?:^|\\s)(_(?!\\s+_)((?:[^_]+))_(?!\\s+_))$/;\n/**\n* Matches an italic to a _italic_ on paste.\n*/\nconst underscorePasteRegex = /(?:^|\\s)(_(?!\\s+_)((?:[^_]+))_(?!\\s+_))/g;\n/**\n* This extension allows you to create italic text.\n* @see https://www.tiptap.dev/api/marks/italic\n*/\nconst Italic = Mark.create({\n\tname: \"italic\",\n\taddOptions() {\n\t\treturn { HTMLAttributes: {} };\n\t},\n\tparseHTML() {\n\t\treturn [\n\t\t\t{ tag: \"em\" },\n\t\t\t{\n\t\t\t\ttag: \"i\",\n\t\t\t\tgetAttrs: (node) => node.style.fontStyle !== \"normal\" && null\n\t\t\t},\n\t\t\t{\n\t\t\t\tstyle: \"font-style=normal\",\n\t\t\t\tclearMark: (mark) => mark.type.name === this.name\n\t\t\t},\n\t\t\t{ style: \"font-style=italic\" }\n\t\t];\n\t},\n\trenderHTML({ HTMLAttributes }) {\n\t\treturn [\n\t\t\t\"em\",\n\t\t\tmergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n\t\t\t0\n\t\t];\n\t},\n\taddCommands() {\n\t\treturn {\n\t\t\tsetItalic: () => ({ commands }) => {\n\t\t\t\treturn commands.setMark(this.name);\n\t\t\t},\n\t\t\ttoggleItalic: () => ({ commands }) => {\n\t\t\t\treturn commands.toggleMark(this.name);\n\t\t\t},\n\t\t\tunsetItalic: () => ({ commands }) => {\n\t\t\t\treturn commands.unsetMark(this.name);\n\t\t\t}\n\t\t};\n\t},\n\tmarkdownTokenName: \"em\",\n\tparseMarkdown: (token, helpers) => {\n\t\treturn helpers.applyMark(\"italic\", helpers.parseInline(token.tokens || []));\n\t},\n\tmarkdownOptions: { htmlReopen: {\n\t\topen: \"<em>\",\n\t\tclose: \"</em>\"\n\t} },\n\trenderMarkdown: (node, h) => {\n\t\treturn `*${h.renderChildren(node)}*`;\n\t},\n\taddKeyboardShortcuts() {\n\t\treturn {\n\t\t\t\"Mod-i\": () => this.editor.commands.toggleItalic(),\n\t\t\t\"Mod-I\": () => this.editor.commands.toggleItalic()\n\t\t};\n\t},\n\taddInputRules() {\n\t\treturn [markInputRule({\n\t\t\tfind: starInputRegex,\n\t\t\ttype: this.type\n\t\t}), markInputRule({\n\t\t\tfind: underscoreInputRegex,\n\t\t\ttype: this.type\n\t\t})];\n\t},\n\taddPasteRules() {\n\t\treturn [markPasteRule({\n\t\t\tfind: starPasteRegex,\n\t\t\ttype: this.type\n\t\t}), markPasteRule({\n\t\t\tfind: underscorePasteRegex,\n\t\t\ttype: this.type\n\t\t})];\n\t}\n});\n//#endregion\n//#region src/index.ts\nvar src_default = Italic;\n//#endregion\nexport { Italic, src_default as default, starInputRegex, starPasteRegex, underscoreInputRegex, underscorePasteRegex };\n\n//# sourceMappingURL=index.js.map","// THIS FILE IS AUTOMATICALLY GENERATED DO NOT EDIT DIRECTLY\n// See update-tlds.js for encoding/decoding format\n// https://data.iana.org/TLD/tlds-alpha-by-domain.txt\nconst encodedTlds = 'aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2odyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3nd0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rck0msd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0axi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2oodside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2';\n// Internationalized domain names containing non-ASCII\nconst encodedUtlds = 'ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2';\n\n/**\n * Finite State Machine generation utilities\n */\n\n/**\n * @template T\n * @typedef {{ [group: string]: T[] }} Collections\n */\n\n/**\n * @typedef {{ [group: string]: true }} Flags\n */\n\n// Keys in scanner Collections instances\nconst numeric = 'numeric';\nconst ascii = 'ascii';\nconst alpha = 'alpha';\nconst asciinumeric = 'asciinumeric';\nconst alphanumeric = 'alphanumeric';\nconst domain = 'domain';\nconst emoji = 'emoji';\nconst scheme = 'scheme';\nconst slashscheme = 'slashscheme';\nconst whitespace = 'whitespace';\n\n/**\n * @template T\n * @param {string} name\n * @param {Collections<T>} groups to register in\n * @returns {T[]} Current list of tokens in the given collection\n */\nfunction registerGroup(name, groups) {\n if (!(name in groups)) {\n groups[name] = [];\n }\n return groups[name];\n}\n\n/**\n * @template T\n * @param {T} t token to add\n * @param {Collections<T>} groups\n * @param {Flags} flags\n */\nfunction addToGroups(t, flags, groups) {\n if (flags[numeric]) {\n flags[asciinumeric] = true;\n flags[alphanumeric] = true;\n }\n if (flags[ascii]) {\n flags[asciinumeric] = true;\n flags[alpha] = true;\n }\n if (flags[asciinumeric]) {\n flags[alphanumeric] = true;\n }\n if (flags[alpha]) {\n flags[alphanumeric] = true;\n }\n if (flags[alphanumeric]) {\n flags[domain] = true;\n }\n if (flags[emoji]) {\n flags[domain] = true;\n }\n for (const k in flags) {\n const group = registerGroup(k, groups);\n if (group.indexOf(t) < 0) {\n group.push(t);\n }\n }\n}\n\n/**\n * @template T\n * @param {T} t token to check\n * @param {Collections<T>} groups\n * @returns {Flags} group flags that contain this token\n */\nfunction flagsForToken(t, groups) {\n const result = {};\n for (const c in groups) {\n if (groups[c].indexOf(t) >= 0) {\n result[c] = true;\n }\n }\n return result;\n}\n\n/**\n * @template T\n * @typedef {null | T } Transition\n */\n\n/**\n * Define a basic state machine state. j is the list of character transitions,\n * jr is the list of regex-match transitions, jd is the default state to\n * transition to t is the accepting token type, if any. If this is the terminal\n * state, then it does not emit a token.\n *\n * The template type T represents the type of the token this state accepts. This\n * should be a string (such as of the token exports in `text.js`) or a\n * MultiToken subclass (from `multi.js`)\n *\n * @template T\n * @param {T} [token] Token that this state emits\n */\nfunction State(token = null) {\n // this.n = null; // DEBUG: State name\n /** @type {{ [input: string]: State<T> }} j */\n this.j = {}; // IMPLEMENTATION 1\n // this.j = []; // IMPLEMENTATION 2\n /** @type {[RegExp, State<T>][]} jr */\n this.jr = [];\n /** @type {?State<T>} jd */\n this.jd = null;\n /** @type {?T} t */\n this.t = token;\n}\n\n/**\n * Scanner token groups\n * @type Collections<string>\n */\nState.groups = {};\nState.prototype = {\n accepts() {\n return !!this.t;\n },\n /**\n * Follow an existing transition from the given input to the next state.\n * Does not mutate.\n * @param {string} input character or token type to transition on\n * @returns {?State<T>} the next state, if any\n */\n go(input) {\n const state = this;\n const nextState = state.j[input];\n if (nextState) {\n return nextState;\n }\n for (let i = 0; i < state.jr.length; i++) {\n const regex = state.jr[i][0];\n const nextState = state.jr[i][1]; // note: might be empty to prevent default jump\n if (nextState && regex.test(input)) {\n return nextState;\n }\n }\n // Nowhere left to jump! Return default, if any\n return state.jd;\n },\n /**\n * Whether the state has a transition for the given input. Set the second\n * argument to true to only look for an exact match (and not a default or\n * regular-expression-based transition)\n * @param {string} input\n * @param {boolean} exactOnly\n */\n has(input, exactOnly = false) {\n return exactOnly ? input in this.j : !!this.go(input);\n },\n /**\n * Short for \"transition all\"; create a transition from the array of items\n * in the given list to the same final resulting state.\n * @param {string | string[]} inputs Group of inputs to transition on\n * @param {Transition<T> | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n */\n ta(inputs, next, flags, groups) {\n for (let i = 0; i < inputs.length; i++) {\n this.tt(inputs[i], next, flags, groups);\n }\n },\n /**\n * Short for \"take regexp transition\"; defines a transition for this state\n * when it encounters a token which matches the given regular expression\n * @param {RegExp} regexp Regular expression transition (populate first)\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n * @returns {State<T>} taken after the given input\n */\n tr(regexp, next, flags, groups) {\n groups = groups || State.groups;\n let nextState;\n if (next && next.j) {\n nextState = next;\n } else {\n // Token with maybe token groups\n nextState = new State(next);\n if (flags && groups) {\n addToGroups(next, flags, groups);\n }\n }\n this.jr.push([regexp, nextState]);\n return nextState;\n },\n /**\n * Short for \"take transitions\", will take as many sequential transitions as\n * the length of the given input and returns the\n * resulting final state.\n * @param {string | string[]} input\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n * @returns {State<T>} taken after the given input\n */\n ts(input, next, flags, groups) {\n let state = this;\n const len = input.length;\n if (!len) {\n return state;\n }\n for (let i = 0; i < len - 1; i++) {\n state = state.tt(input[i]);\n }\n return state.tt(input[len - 1], next, flags, groups);\n },\n /**\n * Short for \"take transition\", this is a method for building/working with\n * state machines.\n *\n * If a state already exists for the given input, returns it.\n *\n * If a token is specified, that state will emit that token when reached by\n * the linkify engine.\n *\n * If no state exists, it will be initialized with some default transitions\n * that resemble existing default transitions.\n *\n * If a state is given for the second argument, that state will be\n * transitioned to on the given input regardless of what that input\n * previously did.\n *\n * Specify a token group flags to define groups that this token belongs to.\n * The token will be added to corresponding entires in the given groups\n * object.\n *\n * @param {string} input character, token type to transition on\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of groups\n * @returns {State<T>} taken after the given input\n */\n tt(input, next, flags, groups) {\n groups = groups || State.groups;\n const state = this;\n\n // Check if existing state given, just a basic transition\n if (next && next.j) {\n state.j[input] = next;\n return next;\n }\n const t = next;\n\n // Take the transition with the usual default mechanisms and use that as\n // a template for creating the next state\n let nextState,\n templateState = state.go(input);\n if (templateState) {\n nextState = new State();\n Object.assign(nextState.j, templateState.j);\n nextState.jr.push.apply(nextState.jr, templateState.jr);\n nextState.jd = templateState.jd;\n nextState.t = templateState.t;\n } else {\n nextState = new State();\n }\n if (t) {\n // Ensure newly token is in the same groups as the old token\n if (groups) {\n if (nextState.t && typeof nextState.t === 'string') {\n const allFlags = Object.assign(flagsForToken(nextState.t, groups), flags);\n addToGroups(t, allFlags, groups);\n } else if (flags) {\n addToGroups(t, flags, groups);\n }\n }\n nextState.t = t; // overwrite anything that was previously there\n }\n state.j[input] = nextState;\n return nextState;\n }\n};\n\n// Helper functions to improve minification (not exported outside linkifyjs module)\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string | string[]} input\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst ta = (state, input, next, flags, groups) => state.ta(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {RegExp} regexp\n * @param {T | State<T>} [next]\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst tr = (state, regexp, next, flags, groups) => state.tr(regexp, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string | string[]} input\n * @param {T | State<T>} [next]\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst ts = (state, input, next, flags, groups) => state.ts(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string} input\n * @param {T | State<T>} [next]\n * @param {Collections<T>} [groups]\n * @param {Flags} [flags]\n */\nconst tt = (state, input, next, flags, groups) => state.tt(input, next, flags, groups);\n\n/******************************************************************************\nText Tokens\nIdentifiers for token outputs from the regexp scanner\n******************************************************************************/\n\n// A valid web domain token\nconst WORD = 'WORD'; // only contains a-z\nconst UWORD = 'UWORD'; // contains letters other than a-z, used for IDN\nconst ASCIINUMERICAL = 'ASCIINUMERICAL'; // contains a-z, 0-9\nconst ALPHANUMERICAL = 'ALPHANUMERICAL'; // contains numbers and letters other than a-z, used for IDN\n\n// Special case of word\nconst LOCALHOST = 'LOCALHOST';\n\n// Valid top-level domain, special case of WORD (see tlds.js)\nconst TLD = 'TLD';\n\n// Valid IDN TLD, special case of UWORD (see tlds.js)\nconst UTLD = 'UTLD';\n\n// The scheme portion of a web URI protocol. Supported types include: `mailto`,\n// `file`, and user-defined custom protocols. Limited to schemes that contain\n// only letters\nconst SCHEME = 'SCHEME';\n\n// Similar to SCHEME, except makes distinction for schemes that must always be\n// followed by `://`, not just `:`. Supported types include `http`, `https`,\n// `ftp`, `ftps`\nconst SLASH_SCHEME = 'SLASH_SCHEME';\n\n// Any sequence of digits 0-9\nconst NUM = 'NUM';\n\n// Any number of consecutive whitespace characters that are not newline\nconst WS = 'WS';\n\n// New line (unix style)\nconst NL = 'NL'; // \\n\n\n// Opening/closing bracket classes\n// TODO: Rename OPEN -> LEFT and CLOSE -> RIGHT in v5 to fit with Unicode names\n// Also rename angle brackes to LESSTHAN and GREATER THAN\nconst OPENBRACE = 'OPENBRACE'; // {\nconst CLOSEBRACE = 'CLOSEBRACE'; // }\nconst OPENBRACKET = 'OPENBRACKET'; // [\nconst CLOSEBRACKET = 'CLOSEBRACKET'; // ]\nconst OPENPAREN = 'OPENPAREN'; // (\nconst CLOSEPAREN = 'CLOSEPAREN'; // )\nconst OPENANGLEBRACKET = 'OPENANGLEBRACKET'; // <\nconst CLOSEANGLEBRACKET = 'CLOSEANGLEBRACKET'; // >\nconst FULLWIDTHLEFTPAREN = 'FULLWIDTHLEFTPAREN'; // (\nconst FULLWIDTHRIGHTPAREN = 'FULLWIDTHRIGHTPAREN'; // )\nconst LEFTCORNERBRACKET = 'LEFTCORNERBRACKET'; // 「\nconst RIGHTCORNERBRACKET = 'RIGHTCORNERBRACKET'; // 」\nconst LEFTWHITECORNERBRACKET = 'LEFTWHITECORNERBRACKET'; // 『\nconst RIGHTWHITECORNERBRACKET = 'RIGHTWHITECORNERBRACKET'; // 』\nconst FULLWIDTHLESSTHAN = 'FULLWIDTHLESSTHAN'; // <\nconst FULLWIDTHGREATERTHAN = 'FULLWIDTHGREATERTHAN'; // >\n\n// Various symbols\nconst AMPERSAND = 'AMPERSAND'; // &\nconst APOSTROPHE = 'APOSTROPHE'; // '\nconst ASTERISK = 'ASTERISK'; // *\nconst AT = 'AT'; // @\nconst BACKSLASH = 'BACKSLASH'; // \\\nconst BACKTICK = 'BACKTICK'; // `\nconst CARET = 'CARET'; // ^\nconst COLON = 'COLON'; // :\nconst COMMA = 'COMMA'; // ,\nconst DOLLAR = 'DOLLAR'; // $\nconst DOT = 'DOT'; // .\nconst EQUALS = 'EQUALS'; // =\nconst EXCLAMATION = 'EXCLAMATION'; // !\nconst HYPHEN = 'HYPHEN'; // -\nconst PERCENT = 'PERCENT'; // %\nconst PIPE = 'PIPE'; // |\nconst PLUS = 'PLUS'; // +\nconst POUND = 'POUND'; // #\nconst QUERY = 'QUERY'; // ?\nconst QUOTE = 'QUOTE'; // \"\nconst FULLWIDTHMIDDLEDOT = 'FULLWIDTHMIDDLEDOT'; // ・\n\nconst SEMI = 'SEMI'; // ;\nconst SLASH = 'SLASH'; // /\nconst TILDE = 'TILDE'; // ~\nconst UNDERSCORE = 'UNDERSCORE'; // _\n\n// Emoji symbol\nconst EMOJI$1 = 'EMOJI';\n\n// Default token - anything that is not one of the above\nconst SYM = 'SYM';\n\nvar tk = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tALPHANUMERICAL: ALPHANUMERICAL,\n\tAMPERSAND: AMPERSAND,\n\tAPOSTROPHE: APOSTROPHE,\n\tASCIINUMERICAL: ASCIINUMERICAL,\n\tASTERISK: ASTERISK,\n\tAT: AT,\n\tBACKSLASH: BACKSLASH,\n\tBACKTICK: BACKTICK,\n\tCARET: CARET,\n\tCLOSEANGLEBRACKET: CLOSEANGLEBRACKET,\n\tCLOSEBRACE: CLOSEBRACE,\n\tCLOSEBRACKET: CLOSEBRACKET,\n\tCLOSEPAREN: CLOSEPAREN,\n\tCOLON: COLON,\n\tCOMMA: COMMA,\n\tDOLLAR: DOLLAR,\n\tDOT: DOT,\n\tEMOJI: EMOJI$1,\n\tEQUALS: EQUALS,\n\tEXCLAMATION: EXCLAMATION,\n\tFULLWIDTHGREATERTHAN: FULLWIDTHGREATERTHAN,\n\tFULLWIDTHLEFTPAREN: FULLWIDTHLEFTPAREN,\n\tFULLWIDTHLESSTHAN: FULLWIDTHLESSTHAN,\n\tFULLWIDTHMIDDLEDOT: FULLWIDTHMIDDLEDOT,\n\tFULLWIDTHRIGHTPAREN: FULLWIDTHRIGHTPAREN,\n\tHYPHEN: HYPHEN,\n\tLEFTCORNERBRACKET: LEFTCORNERBRACKET,\n\tLEFTWHITECORNERBRACKET: LEFTWHITECORNERBRACKET,\n\tLOCALHOST: LOCALHOST,\n\tNL: NL,\n\tNUM: NUM,\n\tOPENANGLEBRACKET: OPENANGLEBRACKET,\n\tOPENBRACE: OPENBRACE,\n\tOPENBRACKET: OPENBRACKET,\n\tOPENPAREN: OPENPAREN,\n\tPERCENT: PERCENT,\n\tPIPE: PIPE,\n\tPLUS: PLUS,\n\tPOUND: POUND,\n\tQUERY: QUERY,\n\tQUOTE: QUOTE,\n\tRIGHTCORNERBRACKET: RIGHTCORNERBRACKET,\n\tRIGHTWHITECORNERBRACKET: RIGHTWHITECORNERBRACKET,\n\tSCHEME: SCHEME,\n\tSEMI: SEMI,\n\tSLASH: SLASH,\n\tSLASH_SCHEME: SLASH_SCHEME,\n\tSYM: SYM,\n\tTILDE: TILDE,\n\tTLD: TLD,\n\tUNDERSCORE: UNDERSCORE,\n\tUTLD: UTLD,\n\tUWORD: UWORD,\n\tWORD: WORD,\n\tWS: WS\n});\n\n// Note that these two Unicode ones expand into a really big one with Babel\nconst ASCII_LETTER = /[a-z]/;\nconst LETTER = /\\p{L}/u; // Any Unicode character with letter data type\nconst EMOJI = /\\p{Emoji}/u; // Any Unicode emoji character\nconst EMOJI_VARIATION$1 = /\\ufe0f/;\nconst DIGIT = /\\d/;\nconst SPACE = /\\s/;\n\nvar regexp = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tASCII_LETTER: ASCII_LETTER,\n\tDIGIT: DIGIT,\n\tEMOJI: EMOJI,\n\tEMOJI_VARIATION: EMOJI_VARIATION$1,\n\tLETTER: LETTER,\n\tSPACE: SPACE\n});\n\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n*/\n\nconst CR = '\\r'; // carriage-return character\nconst LF = '\\n'; // line-feed character\nconst EMOJI_VARIATION = '\\ufe0f'; // Variation selector, follows heart and others\nconst EMOJI_JOINER = '\\u200d'; // zero-width joiner\nconst OBJECT_REPLACEMENT = '\\ufffc'; // whitespace placeholder that sometimes appears in rich text editors\n\nlet tlds = null,\n utlds = null; // don't change so only have to be computed once\n\n/**\n * Scanner output token:\n * - `t` is the token name (e.g., 'NUM', 'EMOJI', 'TLD')\n * - `v` is the value of the token (e.g., '123', '❤️', 'com')\n * - `s` is the start index of the token in the original string\n * - `e` is the end index of the token in the original string\n * @typedef {{t: string, v: string, s: number, e: number}} Token\n */\n\n/**\n * @template T\n * @typedef {{ [collection: string]: T[] }} Collections\n */\n\n/**\n * Initialize the scanner character-based state machine for the given start\n * state\n * @param {[string, boolean][]} customSchemes List of custom schemes, where each\n * item is a length-2 tuple with the first element set to the string scheme, and\n * the second element set to `true` if the `://` after the scheme is optional\n */\nfunction init$2(customSchemes = []) {\n // Frequently used states (name argument removed during minification)\n /** @type Collections<string> */\n const groups = {}; // of tokens\n State.groups = groups;\n /** @type State<string> */\n const Start = new State();\n if (tlds == null) {\n tlds = decodeTlds(encodedTlds);\n }\n if (utlds == null) {\n utlds = decodeTlds(encodedUtlds);\n }\n\n // States for special URL symbols that accept immediately after start\n tt(Start, \"'\", APOSTROPHE);\n tt(Start, '{', OPENBRACE);\n tt(Start, '}', CLOSEBRACE);\n tt(Start, '[', OPENBRACKET);\n tt(Start, ']', CLOSEBRACKET);\n tt(Start, '(', OPENPAREN);\n tt(Start, ')', CLOSEPAREN);\n tt(Start, '<', OPENANGLEBRACKET);\n tt(Start, '>', CLOSEANGLEBRACKET);\n tt(Start, '(', FULLWIDTHLEFTPAREN);\n tt(Start, ')', FULLWIDTHRIGHTPAREN);\n tt(Start, '「', LEFTCORNERBRACKET);\n tt(Start, '」', RIGHTCORNERBRACKET);\n tt(Start, '『', LEFTWHITECORNERBRACKET);\n tt(Start, '』', RIGHTWHITECORNERBRACKET);\n tt(Start, '<', FULLWIDTHLESSTHAN);\n tt(Start, '>', FULLWIDTHGREATERTHAN);\n tt(Start, '&', AMPERSAND);\n tt(Start, '*', ASTERISK);\n tt(Start, '@', AT);\n tt(Start, '`', BACKTICK);\n tt(Start, '^', CARET);\n tt(Start, ':', COLON);\n tt(Start, ',', COMMA);\n tt(Start, '$', DOLLAR);\n tt(Start, '.', DOT);\n tt(Start, '=', EQUALS);\n tt(Start, '!', EXCLAMATION);\n tt(Start, '-', HYPHEN);\n tt(Start, '%', PERCENT);\n tt(Start, '|', PIPE);\n tt(Start, '+', PLUS);\n tt(Start, '#', POUND);\n tt(Start, '?', QUERY);\n tt(Start, '\"', QUOTE);\n tt(Start, '/', SLASH);\n tt(Start, ';', SEMI);\n tt(Start, '~', TILDE);\n tt(Start, '_', UNDERSCORE);\n tt(Start, '\\\\', BACKSLASH);\n tt(Start, '・', FULLWIDTHMIDDLEDOT);\n const Num = tr(Start, DIGIT, NUM, {\n [numeric]: true\n });\n tr(Num, DIGIT, Num);\n const Asciinumeric = tr(Num, ASCII_LETTER, ASCIINUMERICAL, {\n [asciinumeric]: true\n });\n const Alphanumeric = tr(Num, LETTER, ALPHANUMERICAL, {\n [alphanumeric]: true\n });\n\n // State which emits a word token\n const Word = tr(Start, ASCII_LETTER, WORD, {\n [ascii]: true\n });\n tr(Word, DIGIT, Asciinumeric);\n tr(Word, ASCII_LETTER, Word);\n tr(Asciinumeric, DIGIT, Asciinumeric);\n tr(Asciinumeric, ASCII_LETTER, Asciinumeric);\n\n // Same as previous, but specific to non-fsm.ascii alphabet words\n const UWord = tr(Start, LETTER, UWORD, {\n [alpha]: true\n });\n tr(UWord, ASCII_LETTER); // Non-accepting\n tr(UWord, DIGIT, Alphanumeric);\n tr(UWord, LETTER, UWord);\n tr(Alphanumeric, DIGIT, Alphanumeric);\n tr(Alphanumeric, ASCII_LETTER); // Non-accepting\n tr(Alphanumeric, LETTER, Alphanumeric); // Non-accepting\n\n // Whitespace jumps\n // Tokens of only non-newline whitespace are arbitrarily long\n // If any whitespace except newline, more whitespace!\n const Nl = tt(Start, LF, NL, {\n [whitespace]: true\n });\n const Cr = tt(Start, CR, WS, {\n [whitespace]: true\n });\n const Ws = tr(Start, SPACE, WS, {\n [whitespace]: true\n });\n tt(Start, OBJECT_REPLACEMENT, Ws);\n tt(Cr, LF, Nl); // \\r\\n\n tt(Cr, OBJECT_REPLACEMENT, Ws);\n tr(Cr, SPACE, Ws);\n tt(Ws, CR); // non-accepting state to avoid mixing whitespaces\n tt(Ws, LF); // non-accepting state to avoid mixing whitespaces\n tr(Ws, SPACE, Ws);\n tt(Ws, OBJECT_REPLACEMENT, Ws);\n\n // Emoji tokens. They are not grouped by the scanner except in cases where a\n // zero-width joiner is present\n const Emoji = tr(Start, EMOJI, EMOJI$1, {\n [emoji]: true\n });\n tt(Emoji, '#'); // no transition, emoji regex seems to match #\n tr(Emoji, EMOJI, Emoji);\n tt(Emoji, EMOJI_VARIATION, Emoji);\n // tt(Start, EMOJI_VARIATION, Emoji); // This one is sketchy\n\n const EmojiJoiner = tt(Emoji, EMOJI_JOINER);\n tt(EmojiJoiner, '#');\n tr(EmojiJoiner, EMOJI, Emoji);\n // tt(EmojiJoiner, EMOJI_VARIATION, Emoji); // also sketchy\n\n // Generates states for top-level domains\n // Note that this is most accurate when tlds are in alphabetical order\n const wordjr = [[ASCII_LETTER, Word], [DIGIT, Asciinumeric]];\n const uwordjr = [[ASCII_LETTER, null], [LETTER, UWord], [DIGIT, Alphanumeric]];\n for (let i = 0; i < tlds.length; i++) {\n fastts(Start, tlds[i], TLD, WORD, wordjr);\n }\n for (let i = 0; i < utlds.length; i++) {\n fastts(Start, utlds[i], UTLD, UWORD, uwordjr);\n }\n addToGroups(TLD, {\n tld: true,\n ascii: true\n }, groups);\n addToGroups(UTLD, {\n utld: true,\n alpha: true\n }, groups);\n\n // Collect the states generated by different protocols. NOTE: If any new TLDs\n // get added that are also protocols, set the token to be the same as the\n // protocol to ensure parsing works as expected.\n fastts(Start, 'file', SCHEME, WORD, wordjr);\n fastts(Start, 'mailto', SCHEME, WORD, wordjr);\n fastts(Start, 'http', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'https', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftp', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftps', SLASH_SCHEME, WORD, wordjr);\n addToGroups(SCHEME, {\n scheme: true,\n ascii: true\n }, groups);\n addToGroups(SLASH_SCHEME, {\n slashscheme: true,\n ascii: true\n }, groups);\n\n // Register custom schemes. Assumes each scheme is asciinumeric with hyphens\n customSchemes = customSchemes.sort((a, b) => a[0] > b[0] ? 1 : -1);\n for (let i = 0; i < customSchemes.length; i++) {\n const sch = customSchemes[i][0];\n const optionalSlashSlash = customSchemes[i][1];\n const flags = optionalSlashSlash ? {\n [scheme]: true\n } : {\n [slashscheme]: true\n };\n if (sch.indexOf('-') >= 0) {\n flags[domain] = true;\n } else if (!ASCII_LETTER.test(sch)) {\n flags[numeric] = true; // numbers only\n } else if (DIGIT.test(sch)) {\n flags[asciinumeric] = true;\n } else {\n flags[ascii] = true;\n }\n ts(Start, sch, sch, flags);\n }\n\n // Localhost token\n ts(Start, 'localhost', LOCALHOST, {\n ascii: true\n });\n\n // Set default transition for start state (some symbol)\n Start.jd = new State(SYM);\n return {\n start: Start,\n tokens: Object.assign({\n groups\n }, tk)\n };\n}\n\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {State<string>} start scanner starting state\n\t@param {string} str input string to scan\n\t@return {Token[]} list of tokens, each with a type and value\n*/\nfunction run$1(start, str) {\n // State machine is not case sensitive, so input is tokenized in lowercased\n // form (still returns regular case). Uses selective `toLowerCase` because\n // lowercasing the entire string causes the length and character position to\n // vary in some non-English strings with V8-based runtimes.\n const iterable = stringToArray(str.replace(/[A-Z]/g, c => c.toLowerCase()));\n const charCount = iterable.length; // <= len if there are emojis, etc\n const tokens = []; // return value\n\n // cursor through the string itself, accounting for characters that have\n // width with length 2 such as emojis\n let cursor = 0;\n\n // Cursor through the array-representation of the string\n let charCursor = 0;\n\n // Tokenize the string\n while (charCursor < charCount) {\n let state = start;\n let nextState = null;\n let tokenLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n let charsSinceAccepts = -1;\n while (charCursor < charCount && (nextState = state.go(iterable[charCursor]))) {\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n charsSinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts += iterable[charCursor].length;\n charsSinceAccepts++;\n }\n tokenLength += iterable[charCursor].length;\n cursor += iterable[charCursor].length;\n charCursor++;\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n charCursor -= charsSinceAccepts;\n tokenLength -= sinceAccepts;\n\n // No more jumps, just make a new token from the last accepting one\n tokens.push({\n t: latestAccepting.t,\n // token type/name\n v: str.slice(cursor - tokenLength, cursor),\n // string value\n s: cursor - tokenLength,\n // start index\n e: cursor // end index (excluding)\n });\n }\n return tokens;\n}\n\n/**\n * Convert a String to an Array of characters, taking into account that some\n * characters like emojis take up two string indexes.\n *\n * Adapted from core-js (MIT license)\n * https://github.com/zloirock/core-js/blob/2d69cf5f99ab3ea3463c395df81e5a15b68f49d9/packages/core-js/internals/string-multibyte.js\n *\n * @function stringToArray\n * @param {string} str\n * @returns {string[]}\n */\nfunction stringToArray(str) {\n const result = [];\n const len = str.length;\n let index = 0;\n while (index < len) {\n let first = str.charCodeAt(index);\n let second;\n let char = first < 0xd800 || first > 0xdbff || index + 1 === len || (second = str.charCodeAt(index + 1)) < 0xdc00 || second > 0xdfff ? str[index] // single character\n : str.slice(index, index + 2); // two-index characters\n result.push(char);\n index += char.length;\n }\n return result;\n}\n\n/**\n * Fast version of ts function for when transition defaults are well known\n * @param {State<string>} state\n * @param {string} input\n * @param {string} t\n * @param {string} defaultt\n * @param {[RegExp, State<string>][]} jr\n * @returns {State<string>}\n */\nfunction fastts(state, input, t, defaultt, jr) {\n let next;\n const len = input.length;\n for (let i = 0; i < len - 1; i++) {\n const char = input[i];\n if (state.j[char]) {\n next = state.j[char];\n } else {\n next = new State(defaultt);\n next.jr = jr.slice();\n state.j[char] = next;\n }\n state = next;\n }\n next = new State(t);\n next.jr = jr.slice();\n state.j[input[len - 1]] = next;\n return next;\n}\n\n/**\n * Converts a string of Top-Level Domain names encoded in update-tlds.js back\n * into a list of strings.\n * @param {str} encoded encoded TLDs string\n * @returns {str[]} original TLDs list\n */\nfunction decodeTlds(encoded) {\n const words = [];\n const stack = [];\n let i = 0;\n let digits = '0123456789';\n while (i < encoded.length) {\n let popDigitCount = 0;\n while (digits.indexOf(encoded[i + popDigitCount]) >= 0) {\n popDigitCount++; // encountered some digits, have to pop to go one level up trie\n }\n if (popDigitCount > 0) {\n words.push(stack.join('')); // whatever preceded the pop digits must be a word\n for (let popCount = parseInt(encoded.substring(i, i + popDigitCount), 10); popCount > 0; popCount--) {\n stack.pop();\n }\n i += popDigitCount;\n } else {\n stack.push(encoded[i]); // drop down a level into the trie\n i++;\n }\n }\n return words;\n}\n\n/**\n * An object where each key is a valid DOM Event Name such as `click` or `focus`\n * and each value is an event handler function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Element#events\n * @typedef {?{ [event: string]: Function }} EventListeners\n */\n\n/**\n * All formatted properties required to render a link, including `tagName`,\n * `attributes`, `content` and `eventListeners`.\n * @typedef {{ tagName: any, attributes: {[attr: string]: any}, content: string,\n * eventListeners: EventListeners }} IntermediateRepresentation\n */\n\n/**\n * Specify either an object described by the template type `O` or a function.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `O`\n * @template O\n * @typedef {O | ((value: string, type: string, token: MultiToken) => O)} OptObj\n */\n\n/**\n * Specify either a function described by template type `F` or an object.\n *\n * Each key in the object should be a link type (`'url'`, `'hashtag`', etc.). Each\n * value should be a function with template type `F` that is called when the\n * corresponding link type is encountered.\n * @template F\n * @typedef {F | { [type: string]: F}} OptFn\n */\n\n/**\n * Specify either a value with template type `V`, a function that returns `V` or\n * an object where each value resolves to `V`.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `V`\n *\n * For the object, each key should be a link type (`'url'`, `'hashtag`', etc.).\n * Each value should either have type `V` or a function that returns V. This\n * function similarly takes a string value and a token.\n *\n * Example valid types for `Opt<string>`:\n *\n * ```js\n * 'hello'\n * (value, type, token) => 'world'\n * { url: 'hello', email: (value, token) => 'world'}\n * ```\n * @template V\n * @typedef {V | ((value: string, type: string, token: MultiToken) => V) | { [type: string]: V | ((value: string, token: MultiToken) => V) }} Opt\n */\n\n/**\n * See available options: https://linkify.js.org/docs/options.html\n * @typedef {{\n * \tdefaultProtocol?: string,\n * events?: OptObj<EventListeners>,\n * \tformat?: Opt<string>,\n * \tformatHref?: Opt<string>,\n * \tnl2br?: boolean,\n * \ttagName?: Opt<any>,\n * \ttarget?: Opt<string>,\n * \trel?: Opt<string>,\n * \tvalidate?: Opt<boolean>,\n * \ttruncate?: Opt<number>,\n * \tclassName?: Opt<string>,\n * \tattributes?: OptObj<({ [attr: string]: any })>,\n * ignoreTags?: string[],\n * \trender?: OptFn<((ir: IntermediateRepresentation) => any)>\n * }} Opts\n */\n\n/**\n * @type Required<Opts>\n */\nconst defaults = {\n defaultProtocol: 'http',\n events: null,\n format: noop,\n formatHref: noop,\n nl2br: false,\n tagName: 'a',\n target: null,\n rel: null,\n validate: true,\n truncate: Infinity,\n className: null,\n attributes: null,\n ignoreTags: [],\n render: null\n};\n\n/**\n * Utility class for linkify interfaces to apply specified\n * {@link Opts formatting and rendering options}.\n *\n * @param {Opts | Options} [opts] Option value overrides.\n * @param {(ir: IntermediateRepresentation) => any} [defaultRender] (For\n * internal use) default render function that determines how to generate an\n * HTML element based on a link token's derived tagName, attributes and HTML.\n * Similar to render option\n */\nfunction Options(opts, defaultRender = null) {\n let o = Object.assign({}, defaults);\n if (opts) {\n o = Object.assign(o, opts instanceof Options ? opts.o : opts);\n }\n\n // Ensure all ignored tags are uppercase\n const ignoredTags = o.ignoreTags;\n const uppercaseIgnoredTags = [];\n for (let i = 0; i < ignoredTags.length; i++) {\n uppercaseIgnoredTags.push(ignoredTags[i].toUpperCase());\n }\n /** @protected */\n this.o = o;\n if (defaultRender) {\n this.defaultRender = defaultRender;\n }\n this.ignoreTags = uppercaseIgnoredTags;\n}\nOptions.prototype = {\n o: defaults,\n /**\n * @type string[]\n */\n ignoreTags: [],\n /**\n * @param {IntermediateRepresentation} ir\n * @returns {any}\n */\n defaultRender(ir) {\n return ir;\n },\n /**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options.\n * @param {MultiToken} token\n * @returns {boolean}\n */\n check(token) {\n return this.get('validate', token.toString(), token);\n },\n // Private methods\n\n /**\n * Resolve an option's value based on the value of the option and the given\n * params. If operator and token are specified and the target option is\n * callable, automatically calls the function with the given argument.\n * @template {keyof Opts} K\n * @param {K} key Name of option to use\n * @param {string} [operator] will be passed to the target option if it's a\n * function. If not specified, RAW function value gets returned\n * @param {MultiToken} [token] The token from linkify.tokenize\n * @returns {Opts[K] | any}\n */\n get(key, operator, token) {\n const isCallable = operator != null;\n let option = this.o[key];\n if (!option) {\n return option;\n }\n if (typeof option === 'object') {\n option = token.t in option ? option[token.t] : defaults[key];\n if (typeof option === 'function' && isCallable) {\n option = option(operator, token);\n }\n } else if (typeof option === 'function' && isCallable) {\n option = option(operator, token.t, token);\n }\n return option;\n },\n /**\n * @template {keyof Opts} L\n * @param {L} key Name of options object to use\n * @param {string} [operator]\n * @param {MultiToken} [token]\n * @returns {Opts[L] | any}\n */\n getObj(key, operator, token) {\n let obj = this.o[key];\n if (typeof obj === 'function' && operator != null) {\n obj = obj(operator, token.t, token);\n }\n return obj;\n },\n /**\n * Convert the given token to a rendered element that may be added to the\n * calling-interface's DOM\n * @param {MultiToken} token Token to render to an HTML element\n * @returns {any} Render result; e.g., HTML string, DOM element, React\n * Component, etc.\n */\n render(token) {\n const ir = token.render(this); // intermediate representation\n const renderFn = this.get('render', null, token) || this.defaultRender;\n return renderFn(ir, token.t, token);\n }\n};\nfunction noop(val) {\n return val;\n}\n\nvar options = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tOptions: Options,\n\tdefaults: defaults\n});\n\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/\n\n/**\n * @param {string} value\n * @param {Token[]} tokens\n */\nfunction MultiToken(value, tokens) {\n this.t = 'token';\n this.v = value;\n this.tk = tokens;\n}\n\n/**\n * Abstract class used for manufacturing tokens of text tokens. That is rather\n * than the value for a token being a small string of text, it's value an array\n * of text tokens.\n *\n * Used for grouping together URLs, emails, hashtags, and other potential\n * creations.\n * @class MultiToken\n * @property {string} t\n * @property {string} v\n * @property {Token[]} tk\n * @abstract\n */\nMultiToken.prototype = {\n isLink: false,\n /**\n * Return the string this token represents.\n * @return {string}\n */\n toString() {\n return this.v;\n },\n /**\n * What should the value for this token be in the `href` HTML attribute?\n * Returns the `.toString` value by default.\n * @param {string} [scheme]\n * @return {string}\n */\n toHref(scheme) {\n return this.toString();\n },\n /**\n * @param {Options} options Formatting options\n * @returns {string}\n */\n toFormattedString(options) {\n const val = this.toString();\n const truncate = options.get('truncate', val, this);\n const formatted = options.get('format', val, this);\n return truncate && formatted.length > truncate ? formatted.substring(0, truncate) + '…' : formatted;\n },\n /**\n *\n * @param {Options} options\n * @returns {string}\n */\n toFormattedHref(options) {\n return options.get('formatHref', this.toHref(options.get('defaultProtocol')), this);\n },\n /**\n * The start index of this token in the original input string\n * @returns {number}\n */\n startIndex() {\n return this.tk[0].s;\n },\n /**\n * The end index of this token in the original input string (up to this\n * index but not including it)\n * @returns {number}\n */\n endIndex() {\n return this.tk[this.tk.length - 1].e;\n },\n /**\n \tReturns an object of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {string} [protocol] `'http'` by default\n */\n toObject(protocol = defaults.defaultProtocol) {\n return {\n type: this.t,\n value: this.toString(),\n isLink: this.isLink,\n href: this.toHref(protocol),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n *\n * @param {Options} options Formatting option\n */\n toFormattedObject(options) {\n return {\n type: this.t,\n value: this.toFormattedString(options),\n isLink: this.isLink,\n href: this.toFormattedHref(options),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n * Whether this token should be rendered as a link according to the given options\n * @param {Options} options\n * @returns {boolean}\n */\n validate(options) {\n return options.get('validate', this.toString(), this);\n },\n /**\n * Return an object that represents how this link should be rendered.\n * @param {Options} options Formattinng options\n */\n render(options) {\n const token = this;\n const href = this.toHref(options.get('defaultProtocol'));\n const formattedHref = options.get('formatHref', href, this);\n const tagName = options.get('tagName', href, token);\n const content = this.toFormattedString(options);\n const attributes = {};\n const className = options.get('className', href, token);\n const target = options.get('target', href, token);\n const rel = options.get('rel', href, token);\n const attrs = options.getObj('attributes', href, token);\n const eventListeners = options.getObj('events', href, token);\n attributes.href = formattedHref;\n if (className) {\n attributes.class = className;\n }\n if (target) {\n attributes.target = target;\n }\n if (rel) {\n attributes.rel = rel;\n }\n if (attrs) {\n Object.assign(attributes, attrs);\n }\n return {\n tagName,\n attributes,\n content,\n eventListeners\n };\n }\n};\n\n/**\n * Create a new token that can be emitted by the parser state machine\n * @param {string} type readable type of the token\n * @param {object} props properties to assign or override, including isLink = true or false\n * @returns {new (value: string, tokens: Token[]) => MultiToken} new token class\n */\nfunction createTokenClass(type, props) {\n class Token extends MultiToken {\n constructor(value, tokens) {\n super(value, tokens);\n this.t = type;\n }\n }\n for (const p in props) {\n Token.prototype[p] = props[p];\n }\n Token.t = type;\n return Token;\n}\n\n/**\n\tRepresents a list of tokens making up a valid email address\n*/\nconst Email = createTokenClass('email', {\n isLink: true,\n toHref() {\n return 'mailto:' + this.toString();\n }\n});\n\n/**\n\tRepresents some plain text\n*/\nconst Text = createTokenClass('text');\n\n/**\n\tMulti-linebreak token - represents a line break\n\t@class Nl\n*/\nconst Nl = createTokenClass('nl');\n\n/**\n\tRepresents a list of text tokens making up a valid URL\n\t@class Url\n*/\nconst Url = createTokenClass('url', {\n isLink: true,\n /**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@param {string} [scheme] default scheme (e.g., 'https')\n \t@return {string} the full href\n */\n toHref(scheme = defaults.defaultProtocol) {\n // Check if already has a prefix scheme\n return this.hasProtocol() ? this.v : `${scheme}://${this.v}`;\n },\n /**\n * Check whether this URL token has a protocol\n * @return {boolean}\n */\n hasProtocol() {\n const tokens = this.tk;\n return tokens.length >= 2 && tokens[0].t !== LOCALHOST && tokens[1].t === COLON;\n }\n});\n\nvar multi = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBase: MultiToken,\n\tEmail: Email,\n\tMultiToken: MultiToken,\n\tNl: Nl,\n\tText: Text,\n\tUrl: Url,\n\tcreateTokenClass: createTokenClass\n});\n\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/EmailAddress (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main run\n*/\n\nconst makeState = arg => new State(arg);\n\n/**\n * Generate the parser multi token-based state machine\n * @param {{ groups: Collections<string> }} tokens\n */\nfunction init$1({\n groups\n}) {\n // Types of characters the URL can definitely end in\n const qsAccepting = groups.domain.concat([AMPERSAND, ASTERISK, AT, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, NUM, PERCENT, PIPE, PLUS, POUND, SLASH, SYM, TILDE, UNDERSCORE]);\n\n // Types of tokens that can follow a URL and be part of the query string\n // but cannot be the very last characters\n // Characters that cannot appear in the URL at all should be excluded\n const qsNonAccepting = [APOSTROPHE, COLON, COMMA, DOT, EXCLAMATION, PERCENT, QUERY, QUOTE, SEMI, OPENANGLEBRACKET, CLOSEANGLEBRACKET, OPENBRACE, CLOSEBRACE, CLOSEBRACKET, OPENBRACKET, OPENPAREN, CLOSEPAREN, FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN, LEFTCORNERBRACKET, RIGHTCORNERBRACKET, LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET, FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN];\n\n // For addresses without the mailto prefix\n // Tokens allowed in the localpart of the email\n const localpartAccepting = [AMPERSAND, APOSTROPHE, ASTERISK, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, OPENBRACE, CLOSEBRACE, PERCENT, PIPE, PLUS, POUND, QUERY, SLASH, SYM, TILDE, UNDERSCORE];\n\n // The universal starting state.\n /**\n * @type State<Token>\n */\n const Start = makeState();\n const Localpart = tt(Start, TILDE); // Local part of the email address\n ta(Localpart, localpartAccepting, Localpart);\n ta(Localpart, groups.domain, Localpart);\n const Domain = makeState(),\n Scheme = makeState(),\n SlashScheme = makeState();\n ta(Start, groups.domain, Domain); // parsed string ends with a potential domain name (A)\n ta(Start, groups.scheme, Scheme); // e.g., 'mailto'\n ta(Start, groups.slashscheme, SlashScheme); // e.g., 'http'\n\n ta(Domain, localpartAccepting, Localpart);\n ta(Domain, groups.domain, Domain);\n const LocalpartAt = tt(Domain, AT); // Local part of the email address plus @\n\n tt(Localpart, AT, LocalpartAt); // close to an email address now\n\n // Local part of an email address can be e.g. 'http' or 'mailto'\n tt(Scheme, AT, LocalpartAt);\n tt(SlashScheme, AT, LocalpartAt);\n const LocalpartDot = tt(Localpart, DOT); // Local part of the email address plus '.' (localpart cannot end in .)\n ta(LocalpartDot, localpartAccepting, Localpart);\n ta(LocalpartDot, groups.domain, Localpart);\n const EmailDomain = makeState();\n ta(LocalpartAt, groups.domain, EmailDomain); // parsed string starts with local email info + @ with a potential domain name\n ta(EmailDomain, groups.domain, EmailDomain);\n const EmailDomainDot = tt(EmailDomain, DOT); // domain followed by DOT\n ta(EmailDomainDot, groups.domain, EmailDomain);\n const Email$1 = makeState(Email); // Possible email address (could have more tlds)\n ta(EmailDomainDot, groups.tld, Email$1);\n ta(EmailDomainDot, groups.utld, Email$1);\n tt(LocalpartAt, LOCALHOST, Email$1);\n\n // Hyphen can jump back to a domain name\n const EmailDomainHyphen = tt(EmailDomain, HYPHEN); // parsed string starts with local email info + @ with a potential domain name\n tt(EmailDomainHyphen, HYPHEN, EmailDomainHyphen);\n ta(EmailDomainHyphen, groups.domain, EmailDomain);\n ta(Email$1, groups.domain, EmailDomain);\n tt(Email$1, DOT, EmailDomainDot);\n tt(Email$1, HYPHEN, EmailDomainHyphen);\n\n // Account for dots and hyphens. Hyphens are usually parts of domain names\n // (but not TLDs)\n const DomainHyphen = tt(Domain, HYPHEN); // domain followed by hyphen\n const DomainDot = tt(Domain, DOT); // domain followed by DOT\n tt(DomainHyphen, HYPHEN, DomainHyphen);\n ta(DomainHyphen, groups.domain, Domain);\n ta(DomainDot, localpartAccepting, Localpart);\n ta(DomainDot, groups.domain, Domain);\n const DomainDotTld = makeState(Url); // Simplest possible URL with no query string\n ta(DomainDot, groups.tld, DomainDotTld);\n ta(DomainDot, groups.utld, DomainDotTld);\n ta(DomainDotTld, groups.domain, Domain);\n ta(DomainDotTld, localpartAccepting, Localpart);\n tt(DomainDotTld, DOT, DomainDot);\n tt(DomainDotTld, HYPHEN, DomainHyphen);\n tt(DomainDotTld, AT, LocalpartAt);\n const DomainDotTldColon = tt(DomainDotTld, COLON); // URL followed by colon (potential port number here)\n const DomainDotTldColonPort = makeState(Url); // TLD followed by a port number\n ta(DomainDotTldColon, groups.numeric, DomainDotTldColonPort);\n\n // Long URL with optional port and maybe query string\n const Url$1 = makeState(Url);\n\n // URL with extra symbols at the end, followed by an opening bracket\n const UrlNonaccept = makeState(); // URL followed by some symbols (will not be part of the final URL)\n\n // Query strings\n ta(Url$1, qsAccepting, Url$1);\n ta(Url$1, qsNonAccepting, UrlNonaccept);\n ta(UrlNonaccept, qsAccepting, Url$1);\n ta(UrlNonaccept, qsNonAccepting, UrlNonaccept);\n\n // Become real URLs after `SLASH` or `COLON NUM SLASH`\n // Here works with or without scheme:// prefix\n tt(DomainDotTld, SLASH, Url$1);\n tt(DomainDotTldColonPort, SLASH, Url$1);\n\n // Note that domains that begin with schemes are treated slighly differently\n const SchemeColon = tt(Scheme, COLON); // e.g., 'mailto:'\n const SlashSchemeColon = tt(SlashScheme, COLON); // e.g., 'http:'\n const SlashSchemeColonSlash = tt(SlashSchemeColon, SLASH); // e.g., 'http:/'\n\n const UriPrefix = tt(SlashSchemeColonSlash, SLASH); // e.g., 'http://'\n\n // Scheme states can transition to domain states\n ta(Scheme, groups.domain, Domain);\n tt(Scheme, DOT, DomainDot);\n tt(Scheme, HYPHEN, DomainHyphen);\n ta(SlashScheme, groups.domain, Domain);\n tt(SlashScheme, DOT, DomainDot);\n tt(SlashScheme, HYPHEN, DomainHyphen);\n\n // Force URL with scheme prefix followed by anything sane\n ta(SchemeColon, groups.domain, Url$1);\n tt(SchemeColon, SLASH, Url$1);\n tt(SchemeColon, QUERY, Url$1);\n ta(UriPrefix, groups.domain, Url$1);\n ta(UriPrefix, qsAccepting, Url$1);\n tt(UriPrefix, SLASH, Url$1);\n const bracketPairs = [[OPENBRACE, CLOSEBRACE],\n // {}\n [OPENBRACKET, CLOSEBRACKET],\n // []\n [OPENPAREN, CLOSEPAREN],\n // ()\n [OPENANGLEBRACKET, CLOSEANGLEBRACKET],\n // <>\n [FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN],\n // ()\n [LEFTCORNERBRACKET, RIGHTCORNERBRACKET],\n // 「」\n [LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET],\n // 『』\n [FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN] // <>\n ];\n for (let i = 0; i < bracketPairs.length; i++) {\n const [OPEN, CLOSE] = bracketPairs[i];\n const UrlOpen = tt(Url$1, OPEN); // URL followed by open bracket\n\n // Continue not accepting for open brackets\n tt(UrlNonaccept, OPEN, UrlOpen);\n\n // URL that begins with an opening bracket, followed by a symbols.\n // Note that the final state can still be `UrlOpen` (if the URL has a\n // single opening bracket for some reason).\n const UrlOpenQ = makeState(Url);\n ta(UrlOpen, qsAccepting, UrlOpenQ);\n const UrlOpenSyms = makeState(); // UrlOpen followed by some symbols it cannot end it\n ta(UrlOpen, qsNonAccepting, UrlOpenSyms);\n\n // Closing bracket component. This character WILL be included in the URL.\n // Must come after qsNonAccepting (which includes all close-bracket tokens)\n // so that CLOSE -> Url wins over CLOSE -> UrlOpenSyms.\n tt(UrlOpen, CLOSE, Url$1);\n\n // URL that begins with an opening bracket, followed by some symbols\n ta(UrlOpenQ, qsAccepting, UrlOpenQ);\n ta(UrlOpenQ, qsNonAccepting, UrlOpenSyms);\n ta(UrlOpenSyms, qsAccepting, UrlOpenQ);\n ta(UrlOpenSyms, qsNonAccepting, UrlOpenSyms);\n\n // Close brace/bracket to become regular URL\n tt(UrlOpenQ, CLOSE, Url$1);\n tt(UrlOpenSyms, CLOSE, Url$1);\n }\n tt(Start, LOCALHOST, DomainDotTld); // localhost is a valid URL state\n tt(Start, NL, Nl); // single new line\n\n return {\n start: Start,\n tokens: tk\n };\n}\n\n/**\n * Run the parser state machine on a list of scanned string-based tokens to\n * create a list of multi tokens, each of which represents a URL, email address,\n * plain text, etc.\n *\n * @param {State<MultiToken>} start parser start state\n * @param {string} input the original input used to generate the given tokens\n * @param {Token[]} tokens list of scanned tokens\n * @returns {MultiToken[]}\n */\nfunction run(start, input, tokens) {\n let len = tokens.length;\n let cursor = 0;\n let multis = [];\n let textTokens = [];\n while (cursor < len) {\n let state = start;\n let secondState = null;\n let nextState = null;\n let multiLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n while (cursor < len && !(secondState = state.go(tokens[cursor].t))) {\n // Starting tokens with nowhere to jump to.\n // Consider these to be just plain text\n textTokens.push(tokens[cursor++]);\n }\n while (cursor < len && (nextState = secondState || state.go(tokens[cursor].t))) {\n // Get the next state\n secondState = null;\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts++;\n }\n cursor++;\n multiLength++;\n }\n if (sinceAccepts < 0) {\n // No accepting state was found, part of a regular text token add\n // the first text token to the text tokens array and try again from\n // the next\n cursor -= multiLength;\n if (cursor < len) {\n textTokens.push(tokens[cursor]);\n cursor++;\n }\n } else {\n // Accepting state!\n // First close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n textTokens = [];\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n multiLength -= sinceAccepts;\n\n // Create a new multitoken\n const Multi = latestAccepting.t;\n const subtokens = tokens.slice(cursor - multiLength, cursor);\n multis.push(initMultiToken(Multi, input, subtokens));\n }\n }\n\n // Finally close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n }\n return multis;\n}\n\n/**\n * Utility function for instantiating a new multitoken with all the relevant\n * fields during parsing.\n * @param {new (value: string, tokens: Token[]) => MultiToken} Multi class to instantiate\n * @param {string} input original input string\n * @param {Token[]} tokens consecutive tokens scanned from input string\n * @returns {MultiToken}\n */\nfunction initMultiToken(Multi, input, tokens) {\n const startIdx = tokens[0].s;\n const endIdx = tokens[tokens.length - 1].e;\n const value = input.slice(startIdx, endIdx);\n return new Multi(value, tokens);\n}\n\nconst warn = typeof console !== 'undefined' && console && console.warn || (() => {});\nconst warnAdvice = 'until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.';\n\n// Side-effect initialization state\nconst INIT = {\n scanner: null,\n parser: null,\n tokenQueue: [],\n pluginQueue: [],\n customSchemes: [],\n initialized: false\n};\n\n/**\n * @typedef {{\n * \tstart: State<string>,\n * \ttokens: { groups: Collections<string> } & typeof tk\n * }} ScannerInit\n */\n\n/**\n * @typedef {{\n * \tstart: State<MultiToken>,\n * \ttokens: typeof multi\n * }} ParserInit\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit }) => void} TokenPlugin\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit, parser: ParserInit }) => void} Plugin\n */\n\n/**\n * De-register all plugins and reset the internal state-machine. Used for\n * testing; not required in practice.\n * @private\n */\nfunction reset() {\n State.groups = {};\n INIT.scanner = null;\n INIT.parser = null;\n INIT.tokenQueue = [];\n INIT.pluginQueue = [];\n INIT.customSchemes = [];\n INIT.initialized = false;\n return INIT;\n}\n\n/**\n * Register a token plugin to allow the scanner to recognize additional token\n * types before the parser state machine is constructed from the results.\n * @param {string} name of plugin to register\n * @param {TokenPlugin} plugin function that accepts the scanner state machine\n * and available scanner tokens and collections and extends the state machine to\n * recognize additional tokens or groups.\n */\nfunction registerTokenPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid token plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n if (name === INIT.tokenQueue[i][0]) {\n warn(`linkifyjs: token plugin \"${name}\" already registered - will be overwritten`);\n INIT.tokenQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.tokenQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register token plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Register a linkify plugin\n * @param {string} name of plugin to register\n * @param {Plugin} plugin function that accepts the parser state machine and\n * extends the parser to recognize additional link types\n */\nfunction registerPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n if (name === INIT.pluginQueue[i][0]) {\n warn(`linkifyjs: plugin \"${name}\" already registered - will be overwritten`);\n INIT.pluginQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.pluginQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Detect URLs with the following additional protocol. Anything with format\n * \"protocol://...\" will be considered a link. If `optionalSlashSlash` is set to\n * `true`, anything with format \"protocol:...\" will be considered a link.\n * @param {string} scheme\n * @param {boolean} [optionalSlashSlash]\n */\nfunction registerCustomProtocol(scheme, optionalSlashSlash = false) {\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register custom scheme \"${scheme}\" ${warnAdvice}`);\n }\n if (!/^[0-9a-z]+(-[0-9a-z]+)*$/.test(scheme)) {\n throw new Error(`linkifyjs: incorrect scheme format.\n1. Must only contain digits, lowercase ASCII letters or \"-\"\n2. Cannot start or end with \"-\"\n3. \"-\" cannot repeat`);\n }\n INIT.customSchemes.push([scheme, optionalSlashSlash]);\n}\n\n/**\n * Initialize the linkify state machine. Called automatically the first time\n * linkify is called on a string, but may be called manually as well.\n */\nfunction init() {\n // Initialize scanner state machine and plugins\n INIT.scanner = init$2(INIT.customSchemes);\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n INIT.tokenQueue[i][1]({\n scanner: INIT.scanner\n });\n }\n\n // Initialize parser state machine and plugins\n INIT.parser = init$1(INIT.scanner.tokens);\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n INIT.pluginQueue[i][1]({\n scanner: INIT.scanner,\n parser: INIT.parser\n });\n }\n INIT.initialized = true;\n return INIT;\n}\n\n/**\n * Parse a string into tokens that represent linkable and non-linkable sub-components\n * @param {string} str\n * @return {MultiToken[]} tokens\n */\nfunction tokenize(str) {\n if (!INIT.initialized) {\n init();\n }\n return run(INIT.parser.start, str, run$1(INIT.scanner.start, str));\n}\ntokenize.scan = run$1; // for testing\n\n/**\n * Find a list of linkable items in the given string.\n * @param {string} str string to find links in\n * @param {string | Opts} [type] either formatting options or specific type of\n * links to find, e.g., 'url' or 'email'\n * @param {Opts} [opts] formatting options for final output. Cannot be specified\n * if opts already provided in `type` argument\n */\nfunction find(str, type = null, opts = null) {\n if (type && typeof type === 'object') {\n if (opts) {\n throw Error(`linkifyjs: Invalid link type ${type}; must be a string`);\n }\n opts = type;\n type = null;\n }\n const options = new Options(opts);\n const tokens = tokenize(str);\n const filtered = [];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.isLink && (!type || token.t === type) && options.check(token)) {\n filtered.push(token.toFormattedObject(options));\n }\n }\n return filtered;\n}\n\n/**\n * Is the given string valid linkable text of some sort. Note that this does not\n * trim the text for you.\n *\n * Optionally pass in a second `type` param, which is the type of link to test\n * for.\n *\n * For example,\n *\n * linkify.test(str, 'email');\n *\n * Returns `true` if str is a valid email.\n * @param {string} str string to test for links\n * @param {string} [type] optional specific link type to look for\n * @returns boolean true/false\n */\nfunction test(str, type = null) {\n const tokens = tokenize(str);\n return tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].t === type);\n}\n\nexport { MultiToken, Options, State, createTokenClass, find, init, multi, options, regexp, registerCustomProtocol, registerPlugin, registerTokenPlugin, reset, stringToArray, test, multi as text, tokenize };\n","import { InputRule, Mark, PasteRule, combineTransactionSteps, findChildrenInRange, getAttributes, getChangedRanges, getMarksBetween, markInputRule, markPasteRule, mergeAttributes } from \"@tiptap/core\";\nimport { find, registerCustomProtocol, reset, tokenize } from \"linkifyjs\";\nimport { Plugin, PluginKey } from \"@tiptap/pm/state\";\n//#region src/helpers/whitespace.ts\nconst UNICODE_WHITESPACE_PATTERN = \"[\\0- \\xA0 ᠎ -\\u2029  ]\";\nconst UNICODE_WHITESPACE_REGEX = new RegExp(UNICODE_WHITESPACE_PATTERN);\nconst UNICODE_WHITESPACE_REGEX_END = new RegExp(`${UNICODE_WHITESPACE_PATTERN}$`);\nconst UNICODE_WHITESPACE_REGEX_GLOBAL = new RegExp(UNICODE_WHITESPACE_PATTERN, \"g\");\n//#endregion\n//#region src/helpers/autolink.ts\n/**\n* Check if the provided tokens form a valid link structure, which can either be a single link token\n* or a link token surrounded by parentheses or square brackets.\n*\n* This ensures that only complete and valid text is hyperlinked, preventing cases where a valid\n* top-level domain (TLD) is immediately followed by an invalid character, like a number. For\n* example, with the `find` method from Linkify, entering `example.com1` would result in\n* `example.com` being linked and the trailing `1` left as plain text. By using the `tokenize`\n* method, we can perform more comprehensive validation on the input text.\n*/\nfunction isValidLinkStructure(tokens) {\n\tif (tokens.length === 1) return tokens[0].isLink;\n\tif (tokens.length === 3 && tokens[1].isLink) return [\"()\", \"[]\"].includes(tokens[0].value + tokens[2].value);\n\treturn false;\n}\n/**\n* This plugin allows you to automatically add links to your editor.\n* @param options The plugin options\n* @returns The plugin instance\n*/\nfunction autolink(options) {\n\treturn new Plugin({\n\t\tkey: new PluginKey(\"autolink\"),\n\t\tappendTransaction: (transactions, oldState, newState) => {\n\t\t\t/**\n\t\t\t* Does the transaction change the document?\n\t\t\t*/\n\t\t\tconst docChanges = transactions.some((transaction) => transaction.docChanged) && !oldState.doc.eq(newState.doc);\n\t\t\t/**\n\t\t\t* Prevent autolink if the transaction is not a document change or if the transaction has the meta `preventAutolink`.\n\t\t\t*/\n\t\t\tconst preventAutolink = transactions.some((transaction) => transaction.getMeta(\"preventAutolink\"));\n\t\t\t/**\n\t\t\t* Prevent autolink if the transaction is not a document change\n\t\t\t* or if the transaction has the meta `preventAutolink`.\n\t\t\t*/\n\t\t\tif (!docChanges || preventAutolink) return;\n\t\t\tconst { tr } = newState;\n\t\t\tconst transform = combineTransactionSteps(oldState.doc, [...transactions]);\n\t\t\tgetChangedRanges(transform).forEach(({ newRange }) => {\n\t\t\t\tconst nodesInChangedRanges = findChildrenInRange(newState.doc, newRange, (node) => node.isTextblock);\n\t\t\t\tlet textBlock;\n\t\t\t\tlet textBeforeWhitespace;\n\t\t\t\tif (nodesInChangedRanges.length > 1) {\n\t\t\t\t\ttextBlock = nodesInChangedRanges[0];\n\t\t\t\t\ttextBeforeWhitespace = newState.doc.textBetween(textBlock.pos, textBlock.pos + textBlock.node.nodeSize, void 0, \" \");\n\t\t\t\t} else if (nodesInChangedRanges.length) {\n\t\t\t\t\tconst endText = newState.doc.textBetween(newRange.from, newRange.to, \" \", \" \");\n\t\t\t\t\tif (!UNICODE_WHITESPACE_REGEX_END.test(endText)) return;\n\t\t\t\t\ttextBlock = nodesInChangedRanges[0];\n\t\t\t\t\ttextBeforeWhitespace = newState.doc.textBetween(textBlock.pos, newRange.to, void 0, \" \");\n\t\t\t\t}\n\t\t\t\tif (textBlock && textBeforeWhitespace) {\n\t\t\t\t\tconst wordsBeforeWhitespace = textBeforeWhitespace.split(UNICODE_WHITESPACE_REGEX).filter(Boolean);\n\t\t\t\t\tif (wordsBeforeWhitespace.length <= 0) return false;\n\t\t\t\t\tconst lastWordBeforeSpace = wordsBeforeWhitespace[wordsBeforeWhitespace.length - 1];\n\t\t\t\t\tconst lastWordAndBlockOffset = textBlock.pos + textBeforeWhitespace.lastIndexOf(lastWordBeforeSpace);\n\t\t\t\t\tif (!lastWordBeforeSpace) return false;\n\t\t\t\t\tconst linksBeforeSpace = tokenize(lastWordBeforeSpace).map((t) => t.toObject(options.defaultProtocol));\n\t\t\t\t\tif (!isValidLinkStructure(linksBeforeSpace)) return false;\n\t\t\t\t\tlinksBeforeSpace.filter((link) => link.isLink).map((link) => ({\n\t\t\t\t\t\t...link,\n\t\t\t\t\t\tfrom: lastWordAndBlockOffset + link.start + 1,\n\t\t\t\t\t\tto: lastWordAndBlockOffset + link.end + 1\n\t\t\t\t\t})).filter((link) => {\n\t\t\t\t\t\tif (!newState.schema.marks.code) return true;\n\t\t\t\t\t\treturn !newState.doc.rangeHasMark(link.from, link.to, newState.schema.marks.code);\n\t\t\t\t\t}).filter((link) => options.validate(link.value)).filter((link) => options.shouldAutoLink(link.value)).forEach((link) => {\n\t\t\t\t\t\tif (getMarksBetween(link.from, link.to, newState.doc).some((item) => item.mark.type === options.type)) return;\n\t\t\t\t\t\ttr.addMark(link.from, link.to, options.type.create({ href: link.href }));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (!tr.steps.length) return;\n\t\t\treturn tr;\n\t\t}\n\t});\n}\n//#endregion\n//#region src/helpers/clickHandler.ts\nfunction clickHandler(options) {\n\treturn new Plugin({\n\t\tkey: new PluginKey(\"handleClickLink\"),\n\t\tprops: { handleClick: (view, pos, event) => {\n\t\t\tif (event.button !== 0) return false;\n\t\t\tif (!view.editable) return false;\n\t\t\tlet link = null;\n\t\t\tif (event.target instanceof HTMLAnchorElement) link = event.target;\n\t\t\telse {\n\t\t\t\tconst target = event.target;\n\t\t\t\tif (!target) return false;\n\t\t\t\tconst root = options.editor.view.dom;\n\t\t\t\tlink = target.closest(\"a\");\n\t\t\t\tif (link && !root.contains(link)) link = null;\n\t\t\t}\n\t\t\tif (!link) return false;\n\t\t\tlet handled = false;\n\t\t\tif (options.enableClickSelection) handled = options.editor.commands.extendMarkRange(options.type.name);\n\t\t\tif (options.openOnClick) {\n\t\t\t\tvar _link$href, _link$target;\n\t\t\t\tconst attrs = getAttributes(view.state, options.type.name);\n\t\t\t\tconst href = (_link$href = link.href) !== null && _link$href !== void 0 ? _link$href : attrs.href;\n\t\t\t\tconst target = (_link$target = link.target) !== null && _link$target !== void 0 ? _link$target : attrs.target;\n\t\t\t\tif (href) {\n\t\t\t\t\twindow.open(href, target);\n\t\t\t\t\thandled = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn handled;\n\t\t} }\n\t});\n}\n//#endregion\n//#region src/helpers/markdownLink.ts\n/**\n* Matches a Markdown link with an optional quoted title.\n* for ex: [Tiptap](https://tiptap.dev) or [Tiptap](https://tiptap.dev \"some title\")\n* the URL may also contain one level of balanced parentheses, as in CommonMark\n* (titles accept curly quotes too, the Typography extension swaps them in while typing)\n* the title delimiters must come in matching pairs\n*/\nconst MARKDOWN_LINK_INPUT_REGEX = /\\[([^[\\]]+)\\]\\(((?:[^\\s()]|\\([^\\s()]*\\))+)(?:\\s+(?:([\"'])(.*?)\\3|“(.*?)”|‘(.*?)’))?\\)$/;\n/**\n* Same as the input regex but global, to find every Markdown link in pasted text.\n*/\nconst MARKDOWN_LINK_PASTE_REGEX = /\\[([^[\\]]+)\\]\\(((?:[^\\s()]|\\([^\\s()]*\\))+)(?:\\s+(?:([\"'])(.*?)\\3|“(.*?)”|‘(.*?)’))?\\)/g;\nfunction isEscaped(text, index) {\n\tlet backslashes = 0;\n\tfor (let position = index - 1; position >= 0 && text[position] === \"\\\\\"; position -= 1) backslashes += 1;\n\treturn backslashes % 2 === 1;\n}\n/**\n* Pairs the backtick runs before the match by length, as CommonMark does.\n* A run left open means the match sits in an unfinished code span.\n*/\nfunction isInsideCodeSpan(text, matchIndex) {\n\tlet openRunLength = 0;\n\tlet index = 0;\n\twhile (index < matchIndex) {\n\t\tif (text[index] !== \"`\") {\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (openRunLength === 0 && isEscaped(text, index)) {\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tlet runLength = 0;\n\t\twhile (index < matchIndex && text[index] === \"`\") {\n\t\t\trunLength += 1;\n\t\t\tindex += 1;\n\t\t}\n\t\tif (openRunLength === 0) openRunLength = runLength;\n\t\telse if (runLength === openRunLength) openRunLength = 0;\n\t}\n\treturn openRunLength > 0;\n}\nfunction isConvertibleLink(text, match, isAllowedHref) {\n\tvar _match$index, _match$index2;\n\tconst [, linkText, href] = match;\n\tif ((match.index ? text[match.index - 1] : void 0) === \"!\" || isEscaped(text, (_match$index = match.index) !== null && _match$index !== void 0 ? _match$index : 0)) return false;\n\tif (isInsideCodeSpan(text, (_match$index2 = match.index) !== null && _match$index2 !== void 0 ? _match$index2 : 0)) return false;\n\treturn !!linkText.trim() && isAllowedHref(href);\n}\nfunction toRuleMatch(match) {\n\tvar _ref, _match$index3;\n\tconst [linkSyntax, linkText, href, , straightQuotedTitle, curlyDoubleTitle, curlySingleTitle] = match;\n\tconst title = (_ref = straightQuotedTitle !== null && straightQuotedTitle !== void 0 ? straightQuotedTitle : curlyDoubleTitle) !== null && _ref !== void 0 ? _ref : curlySingleTitle;\n\treturn {\n\t\tindex: (_match$index3 = match.index) !== null && _match$index3 !== void 0 ? _match$index3 : 0,\n\t\ttext: linkSyntax,\n\t\treplaceWith: linkText,\n\t\tdata: {\n\t\t\thref,\n\t\t\ttitle: title || null,\n\t\t\tmarkdown: true\n\t\t}\n\t};\n}\nfunction matchesOverlap(a, b) {\n\treturn a.index < b.index + b.text.length && b.index < a.index + a.text.length;\n}\nfunction getMarkdownLinkAttributes(match) {\n\tvar _match$data, _match$data$title, _match$data2;\n\treturn {\n\t\thref: (_match$data = match.data) === null || _match$data === void 0 ? void 0 : _match$data.href,\n\t\ttitle: (_match$data$title = (_match$data2 = match.data) === null || _match$data2 === void 0 ? void 0 : _match$data2.title) !== null && _match$data$title !== void 0 ? _match$data$title : null\n\t};\n}\n/**\n* Turns typed Markdown link syntax into a link mark as soon as the closing `)` comes in.\n* The transaction gets flagged so autolink doesn't touch the converted text again.\n*/\nfunction markdownLinkInputRule(config) {\n\tconst rule = markInputRule({\n\t\tfind: (text) => {\n\t\t\tconst match = MARKDOWN_LINK_INPUT_REGEX.exec(text);\n\t\t\tif (!match || !isConvertibleLink(text, match, config.isAllowedHref)) return null;\n\t\t\treturn toRuleMatch(match);\n\t\t},\n\t\ttype: config.type,\n\t\tgetAttributes: getMarkdownLinkAttributes\n\t});\n\treturn new InputRule({\n\t\tfind: rule.find,\n\t\thandler: (props) => {\n\t\t\tconst result = rule.handler(props);\n\t\t\tif (result !== null && props.state.tr.steps.length) props.state.tr.setMeta(\"preventAutolink\", true);\n\t\t\treturn result;\n\t\t}\n\t});\n}\n/**\n* Same for pasting, converts every Markdown link found in the pasted text\n* and links the plain URLs from `findPlainUrls`.\n*/\nfunction markdownLinkPasteRule(config) {\n\tconst rule = markPasteRule({\n\t\tfind: (text) => {\n\t\t\tvar _config$findPlainUrls, _config$findPlainUrls2;\n\t\t\tconst markdownMatches = [];\n\t\t\tfor (const match of text.matchAll(MARKDOWN_LINK_PASTE_REGEX)) if (isConvertibleLink(text, match, config.isAllowedHref)) markdownMatches.push(toRuleMatch(match));\n\t\t\tconst plainUrlMatches = ((_config$findPlainUrls = (_config$findPlainUrls2 = config.findPlainUrls) === null || _config$findPlainUrls2 === void 0 ? void 0 : _config$findPlainUrls2.call(config, text)) !== null && _config$findPlainUrls !== void 0 ? _config$findPlainUrls : []).filter((urlMatch) => !markdownMatches.some((markdownMatch) => matchesOverlap(markdownMatch, urlMatch)));\n\t\t\treturn [...markdownMatches, ...plainUrlMatches];\n\t\t},\n\t\ttype: config.type,\n\t\tgetAttributes: getMarkdownLinkAttributes\n\t});\n\treturn new PasteRule({\n\t\tfind: rule.find,\n\t\thandler: (props) => {\n\t\t\tvar _props$match$data;\n\t\t\tconst result = rule.handler(props);\n\t\t\tif (result !== null && props.state.tr.steps.length && ((_props$match$data = props.match.data) === null || _props$match$data === void 0 ? void 0 : _props$match$data.markdown)) props.state.tr.setMeta(\"preventAutolink\", true);\n\t\t\treturn result;\n\t\t}\n\t});\n}\n//#endregion\n//#region src/helpers/pasteHandler.ts\nfunction pasteHandler(options) {\n\treturn new Plugin({\n\t\tkey: new PluginKey(\"handlePasteLink\"),\n\t\tprops: { handlePaste: (view, _event, slice) => {\n\t\t\tconst { shouldAutoLink } = options;\n\t\t\tconst { state } = view;\n\t\t\tconst { selection } = state;\n\t\t\tconst { empty } = selection;\n\t\t\tif (empty) return false;\n\t\t\tlet textContent = \"\";\n\t\t\tslice.content.forEach((node) => {\n\t\t\t\ttextContent += node.textContent;\n\t\t\t});\n\t\t\tconst link = find(textContent, { defaultProtocol: options.defaultProtocol }).find((item) => item.isLink && item.value === textContent);\n\t\t\tif (!textContent || !link || shouldAutoLink !== void 0 && !shouldAutoLink(link.value)) return false;\n\t\t\treturn options.editor.commands.setMark(options.type, { href: link.href });\n\t\t} }\n\t});\n}\n//#endregion\n//#region src/link.ts\nconst pasteRegex = /https?:\\/\\/(?:www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z]{2,}\\b(?:[-a-zA-Z0-9@:%._+~#=?!&/]*)(?:[-a-zA-Z0-9@:%._+~#=?!&/]*)/gi;\nfunction isAllowedUri(uri, protocols) {\n\tconst allowedProtocols = [\n\t\t\"http\",\n\t\t\"https\",\n\t\t\"ftp\",\n\t\t\"ftps\",\n\t\t\"mailto\",\n\t\t\"tel\",\n\t\t\"callto\",\n\t\t\"sms\",\n\t\t\"cid\",\n\t\t\"xmpp\"\n\t];\n\tif (protocols) protocols.forEach((protocol) => {\n\t\tconst nextProtocol = typeof protocol === \"string\" ? protocol : protocol.scheme;\n\t\tif (nextProtocol) allowedProtocols.push(nextProtocol);\n\t});\n\treturn !uri || uri.replace(UNICODE_WHITESPACE_REGEX_GLOBAL, \"\").match(new RegExp(`^(?:(?:${allowedProtocols.map((protocol) => protocol.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\")).join(\"|\")}):|[^a-z]|[a-z0-9+.\\\\-]+(?:[^a-z+.\\\\-:]|$))`, \"i\"));\n}\n/**\n* This extension allows you to create links.\n* @see https://www.tiptap.dev/api/marks/link\n*/\nconst Link = Mark.create({\n\tname: \"link\",\n\tpriority: 1e3,\n\tkeepOnSplit: false,\n\texitable: true,\n\tonCreate() {\n\t\tif (this.options.validate && !this.options.shouldAutoLink) {\n\t\t\tthis.options.shouldAutoLink = this.options.validate;\n\t\t\tconsole.warn(\"The `validate` option is deprecated. Rename to the `shouldAutoLink` option instead.\");\n\t\t}\n\t\tthis.options.protocols.forEach((protocol) => {\n\t\t\tif (typeof protocol === \"string\") {\n\t\t\t\tregisterCustomProtocol(protocol);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tregisterCustomProtocol(protocol.scheme, protocol.optionalSlashes);\n\t\t});\n\t},\n\tonDestroy() {\n\t\treset();\n\t},\n\tinclusive() {\n\t\treturn this.options.autolink;\n\t},\n\taddOptions() {\n\t\treturn {\n\t\t\topenOnClick: true,\n\t\t\tenableClickSelection: false,\n\t\t\tlinkOnPaste: true,\n\t\t\tmarkdownLinks: false,\n\t\t\tautolink: true,\n\t\t\tprotocols: [],\n\t\t\tdefaultProtocol: \"http\",\n\t\t\tHTMLAttributes: {\n\t\t\t\ttarget: \"_blank\",\n\t\t\t\trel: \"noopener noreferrer nofollow\",\n\t\t\t\tclass: null\n\t\t\t},\n\t\t\tisAllowedUri: (url, ctx) => !!isAllowedUri(url, ctx.protocols),\n\t\t\tvalidate: (url) => !!url,\n\t\t\tshouldAutoLink: (url) => {\n\t\t\t\tconst hasProtocol = /^[a-z][a-z0-9+.-]*:\\/\\//i.test(url);\n\t\t\t\tconst hasMaybeProtocol = /^[a-z][a-z0-9+.-]*:/i.test(url);\n\t\t\t\tif (hasProtocol || hasMaybeProtocol && !url.includes(\"@\")) return true;\n\t\t\t\tconst hostname = (url.includes(\"@\") ? url.split(\"@\").pop() : url).split(/[/?#:]/)[0];\n\t\t\t\tif (/^\\d{1,3}(\\.\\d{1,3}){3}$/.test(hostname)) return false;\n\t\t\t\tif (!/\\./.test(hostname)) return false;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t};\n\t},\n\taddAttributes() {\n\t\tvar _this$options$HTMLAtt, _this$options$HTMLAtt2, _this$options$HTMLAtt3;\n\t\treturn {\n\t\t\thref: {\n\t\t\t\tdefault: null,\n\t\t\t\tparseHTML(element) {\n\t\t\t\t\treturn element.getAttribute(\"href\");\n\t\t\t\t}\n\t\t\t},\n\t\t\ttarget: { default: (_this$options$HTMLAtt = this.options.HTMLAttributes.target) !== null && _this$options$HTMLAtt !== void 0 ? _this$options$HTMLAtt : null },\n\t\t\trel: { default: (_this$options$HTMLAtt2 = this.options.HTMLAttributes.rel) !== null && _this$options$HTMLAtt2 !== void 0 ? _this$options$HTMLAtt2 : null },\n\t\t\tclass: { default: (_this$options$HTMLAtt3 = this.options.HTMLAttributes.class) !== null && _this$options$HTMLAtt3 !== void 0 ? _this$options$HTMLAtt3 : null },\n\t\t\ttitle: { default: null }\n\t\t};\n\t},\n\tparseHTML() {\n\t\treturn [{\n\t\t\ttag: \"a[href]\",\n\t\t\tgetAttrs: (dom) => {\n\t\t\t\tconst href = dom.getAttribute(\"href\");\n\t\t\t\tif (!href || !this.options.isAllowedUri(href, {\n\t\t\t\t\tdefaultValidate: (url) => !!isAllowedUri(url, this.options.protocols),\n\t\t\t\t\tprotocols: this.options.protocols,\n\t\t\t\t\tdefaultProtocol: this.options.defaultProtocol\n\t\t\t\t})) return false;\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}];\n\t},\n\trenderHTML({ HTMLAttributes }) {\n\t\tif (!this.options.isAllowedUri(HTMLAttributes.href, {\n\t\t\tdefaultValidate: (href) => !!isAllowedUri(href, this.options.protocols),\n\t\t\tprotocols: this.options.protocols,\n\t\t\tdefaultProtocol: this.options.defaultProtocol\n\t\t})) return [\n\t\t\t\"a\",\n\t\t\tmergeAttributes(this.options.HTMLAttributes, {\n\t\t\t\t...HTMLAttributes,\n\t\t\t\thref: \"\"\n\t\t\t}),\n\t\t\t0\n\t\t];\n\t\treturn [\n\t\t\t\"a\",\n\t\t\tmergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n\t\t\t0\n\t\t];\n\t},\n\tmarkdownTokenName: \"link\",\n\tparseMarkdown: (token, helpers) => {\n\t\treturn helpers.applyMark(\"link\", helpers.parseInline(token.tokens || []), {\n\t\t\thref: token.href,\n\t\t\ttitle: token.title || null\n\t\t});\n\t},\n\trenderMarkdown: (node, h) => {\n\t\tvar _node$attrs$href, _node$attrs, _node$attrs$title, _node$attrs2;\n\t\tconst href = (_node$attrs$href = (_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs.href) !== null && _node$attrs$href !== void 0 ? _node$attrs$href : \"\";\n\t\tconst title = (_node$attrs$title = (_node$attrs2 = node.attrs) === null || _node$attrs2 === void 0 ? void 0 : _node$attrs2.title) !== null && _node$attrs$title !== void 0 ? _node$attrs$title : \"\";\n\t\tconst text = h.renderChildren(node);\n\t\treturn title ? `[${text}](${href} \"${title}\")` : `[${text}](${href})`;\n\t},\n\taddCommands() {\n\t\treturn {\n\t\t\tsetLink: (attributes) => ({ chain }) => {\n\t\t\t\tconst { href } = attributes;\n\t\t\t\tif (!this.options.isAllowedUri(href, {\n\t\t\t\t\tdefaultValidate: (url) => !!isAllowedUri(url, this.options.protocols),\n\t\t\t\t\tprotocols: this.options.protocols,\n\t\t\t\t\tdefaultProtocol: this.options.defaultProtocol\n\t\t\t\t})) return false;\n\t\t\t\treturn chain().setMark(this.name, attributes).setMeta(\"preventAutolink\", true).run();\n\t\t\t},\n\t\t\ttoggleLink: (attributes) => ({ chain }) => {\n\t\t\t\tconst { href } = attributes || {};\n\t\t\t\tif (href && !this.options.isAllowedUri(href, {\n\t\t\t\t\tdefaultValidate: (url) => !!isAllowedUri(url, this.options.protocols),\n\t\t\t\t\tprotocols: this.options.protocols,\n\t\t\t\t\tdefaultProtocol: this.options.defaultProtocol\n\t\t\t\t})) return false;\n\t\t\t\treturn chain().toggleMark(this.name, attributes, { extendEmptyMarkRange: true }).setMeta(\"preventAutolink\", true).run();\n\t\t\t},\n\t\t\tunsetLink: () => ({ chain }) => {\n\t\t\t\treturn chain().unsetMark(this.name, { extendEmptyMarkRange: true }).setMeta(\"preventAutolink\", true).run();\n\t\t\t}\n\t\t};\n\t},\n\taddInputRules() {\n\t\tif (!this.options.markdownLinks) return [];\n\t\treturn [markdownLinkInputRule({\n\t\t\ttype: this.type,\n\t\t\tisAllowedHref: (href) => this.options.isAllowedUri(href, {\n\t\t\t\tdefaultValidate: (url) => !!isAllowedUri(url, this.options.protocols),\n\t\t\t\tprotocols: this.options.protocols,\n\t\t\t\tdefaultProtocol: this.options.defaultProtocol\n\t\t\t})\n\t\t})];\n\t},\n\taddPasteRules() {\n\t\tconst findPlainUrls = (text) => {\n\t\t\tconst foundLinks = [];\n\t\t\tif (text) {\n\t\t\t\tconst { protocols, defaultProtocol } = this.options;\n\t\t\t\tfind(text).filter((item) => item.isLink && this.options.isAllowedUri(item.value, {\n\t\t\t\t\tdefaultValidate: (href) => !!isAllowedUri(href, protocols),\n\t\t\t\t\tprotocols,\n\t\t\t\t\tdefaultProtocol\n\t\t\t\t})).forEach((link) => {\n\t\t\t\t\tif (!this.options.shouldAutoLink(link.value)) return;\n\t\t\t\t\tfoundLinks.push({\n\t\t\t\t\t\ttext: link.value,\n\t\t\t\t\t\tdata: { href: link.href },\n\t\t\t\t\t\tindex: link.start\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn foundLinks;\n\t\t};\n\t\tif (this.options.markdownLinks) return [markdownLinkPasteRule({\n\t\t\ttype: this.type,\n\t\t\tisAllowedHref: (href) => this.options.isAllowedUri(href, {\n\t\t\t\tdefaultValidate: (url) => !!isAllowedUri(url, this.options.protocols),\n\t\t\t\tprotocols: this.options.protocols,\n\t\t\t\tdefaultProtocol: this.options.defaultProtocol\n\t\t\t}),\n\t\t\tfindPlainUrls\n\t\t})];\n\t\treturn [markPasteRule({\n\t\t\tfind: findPlainUrls,\n\t\t\ttype: this.type,\n\t\t\tgetAttributes: (match) => {\n\t\t\t\tvar _match$data;\n\t\t\t\treturn { href: (_match$data = match.data) === null || _match$data === void 0 ? void 0 : _match$data.href };\n\t\t\t}\n\t\t})];\n\t},\n\taddProseMirrorPlugins() {\n\t\tconst plugins = [];\n\t\tconst { protocols, defaultProtocol } = this.options;\n\t\tif (this.options.autolink) plugins.push(autolink({\n\t\t\ttype: this.type,\n\t\t\tdefaultProtocol: this.options.defaultProtocol,\n\t\t\tvalidate: (url) => this.options.isAllowedUri(url, {\n\t\t\t\tdefaultValidate: (href) => !!isAllowedUri(href, protocols),\n\t\t\t\tprotocols,\n\t\t\t\tdefaultProtocol\n\t\t\t}),\n\t\t\tshouldAutoLink: this.options.shouldAutoLink\n\t\t}));\n\t\tplugins.push(clickHandler({\n\t\t\ttype: this.type,\n\t\t\teditor: this.editor,\n\t\t\topenOnClick: this.options.openOnClick === \"whenNotEditable\" ? true : this.options.openOnClick,\n\t\t\tenableClickSelection: this.options.enableClickSelection\n\t\t}));\n\t\tif (this.options.linkOnPaste) plugins.push(pasteHandler({\n\t\t\teditor: this.editor,\n\t\t\tdefaultProtocol: this.options.defaultProtocol,\n\t\t\ttype: this.type,\n\t\t\tshouldAutoLink: this.options.shouldAutoLink\n\t\t}));\n\t\treturn plugins;\n\t}\n});\n//#endregion\n//#region src/index.ts\nvar src_default = Link;\n//#endregion\nexport { Link, src_default as default, isAllowedUri, pasteRegex };\n\n//# sourceMappingURL=index.js.map","import { Node, mergeAttributes } from \"@tiptap/core\";\n//#region src/paragraph.ts\n/**\n* Markdown marker for empty paragraphs to preserve blank lines.\n* Using &nbsp; (non-breaking space HTML entity) ensures the paragraph\n* is not collapsed by markdown parsers while remaining human-readable.\n*/\nconst EMPTY_PARAGRAPH_MARKDOWN = \"&nbsp;\";\n/**\n* Unicode character for non-breaking space (U+00A0).\n* Some markdown parsers may convert &nbsp; entities to this literal character.\n*/\nconst NBSP_CHAR = \"\\xA0\";\n/**\n* This extension allows you to create paragraphs.\n* @see https://www.tiptap.dev/api/nodes/paragraph\n*/\nconst Paragraph = Node.create({\n\tname: \"paragraph\",\n\tpriority: 1e3,\n\taddOptions() {\n\t\treturn { HTMLAttributes: {} };\n\t},\n\tgroup: \"block\",\n\tcontent: \"inline*\",\n\tparseHTML() {\n\t\treturn [{ tag: \"p\" }];\n\t},\n\trenderHTML({ HTMLAttributes }) {\n\t\treturn [\n\t\t\t\"p\",\n\t\t\tmergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n\t\t\t0\n\t\t];\n\t},\n\tparseMarkdown: (token, helpers) => {\n\t\tconst tokens = token.tokens || [];\n\t\tif (tokens.length === 1 && tokens[0].type === \"image\") return helpers.parseChildren([tokens[0]]);\n\t\tconst content = helpers.parseInline(tokens);\n\t\tif (tokens.length === 1 && tokens[0].type === \"text\" && (tokens[0].raw === EMPTY_PARAGRAPH_MARKDOWN || tokens[0].text === EMPTY_PARAGRAPH_MARKDOWN || tokens[0].raw === NBSP_CHAR || tokens[0].text === NBSP_CHAR) && content.length === 1 && content[0].type === \"text\" && (content[0].text === EMPTY_PARAGRAPH_MARKDOWN || content[0].text === NBSP_CHAR)) return helpers.createNode(\"paragraph\", void 0, []);\n\t\treturn helpers.createNode(\"paragraph\", void 0, content);\n\t},\n\trenderMarkdown: (node, h, ctx) => {\n\t\tif (!node) return \"\";\n\t\tconst content = Array.isArray(node.content) ? node.content : [];\n\t\tif (content.length === 0) {\n\t\t\tvar _ctx$previousNode, _ctx$previousNode2;\n\t\t\tconst previousContent = Array.isArray(ctx === null || ctx === void 0 || (_ctx$previousNode = ctx.previousNode) === null || _ctx$previousNode === void 0 ? void 0 : _ctx$previousNode.content) ? ctx.previousNode.content : [];\n\t\t\treturn (ctx === null || ctx === void 0 || (_ctx$previousNode2 = ctx.previousNode) === null || _ctx$previousNode2 === void 0 ? void 0 : _ctx$previousNode2.type) === \"paragraph\" && previousContent.length === 0 ? EMPTY_PARAGRAPH_MARKDOWN : \"\";\n\t\t}\n\t\treturn h.renderChildren(content);\n\t},\n\taddCommands() {\n\t\treturn { setParagraph: () => ({ commands }) => {\n\t\t\treturn commands.setNode(this.name);\n\t\t} };\n\t},\n\taddKeyboardShortcuts() {\n\t\treturn { \"Mod-Alt-0\": () => this.editor.commands.setParagraph() };\n\t}\n});\n//#endregion\n//#region src/index.ts\nvar src_default = Paragraph;\n//#endregion\nexport { Paragraph, src_default as default };\n\n//# sourceMappingURL=index.js.map","import { Mark, markInputRule, markPasteRule, mergeAttributes } from \"@tiptap/core\";\n//#region src/strike.ts\n/**\n* Matches a strike to a ~~strike~~ on input.\n*/\nconst inputRegex = /(?:^|\\s)(~~(?!\\s+~~)((?:[^~]+))~~(?!\\s+~~))$/;\n/**\n* Matches a strike to a ~~strike~~ on paste.\n*/\nconst pasteRegex = /(?:^|\\s)(~~(?!\\s+~~)((?:[^~]+))~~(?!\\s+~~))/g;\n/**\n* This extension allows you to create strike text.\n* @see https://www.tiptap.dev/api/marks/strike\n*/\nconst Strike = Mark.create({\n\tname: \"strike\",\n\taddOptions() {\n\t\treturn { HTMLAttributes: {} };\n\t},\n\tparseHTML() {\n\t\treturn [\n\t\t\t{ tag: \"s\" },\n\t\t\t{ tag: \"del\" },\n\t\t\t{ tag: \"strike\" },\n\t\t\t{\n\t\t\t\tstyle: \"text-decoration\",\n\t\t\t\tconsuming: false,\n\t\t\t\tgetAttrs: (style) => style.includes(\"line-through\") ? {} : false\n\t\t\t}\n\t\t];\n\t},\n\trenderHTML({ HTMLAttributes }) {\n\t\treturn [\n\t\t\t\"s\",\n\t\t\tmergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n\t\t\t0\n\t\t];\n\t},\n\tmarkdownTokenName: \"del\",\n\tparseMarkdown: (token, helpers) => {\n\t\treturn helpers.applyMark(\"strike\", helpers.parseInline(token.tokens || []));\n\t},\n\trenderMarkdown: (node, h) => {\n\t\treturn `~~${h.renderChildren(node)}~~`;\n\t},\n\taddCommands() {\n\t\treturn {\n\t\t\tsetStrike: () => ({ commands }) => {\n\t\t\t\treturn commands.setMark(this.name);\n\t\t\t},\n\t\t\ttoggleStrike: () => ({ commands }) => {\n\t\t\t\treturn commands.toggleMark(this.name);\n\t\t\t},\n\t\t\tunsetStrike: () => ({ commands }) => {\n\t\t\t\treturn commands.unsetMark(this.name);\n\t\t\t}\n\t\t};\n\t},\n\taddKeyboardShortcuts() {\n\t\treturn { \"Mod-Shift-s\": () => this.editor.commands.toggleStrike() };\n\t},\n\taddInputRules() {\n\t\treturn [markInputRule({\n\t\t\tfind: inputRegex,\n\t\t\ttype: this.type\n\t\t})];\n\t},\n\taddPasteRules() {\n\t\treturn [markPasteRule({\n\t\t\tfind: pasteRegex,\n\t\t\ttype: this.type\n\t\t})];\n\t}\n});\n//#endregion\n//#region src/index.ts\nvar src_default = Strike;\n//#endregion\nexport { Strike, src_default as default, inputRegex, pasteRegex };\n\n//# sourceMappingURL=index.js.map","import { Node } from \"@tiptap/core\";\n//#region src/text.ts\n/**\n* This extension allows you to create text nodes.\n* @see https://www.tiptap.dev/api/nodes/text\n*/\nconst Text = Node.create({\n\tname: \"text\",\n\tgroup: \"inline\",\n\tparseMarkdown: (token) => {\n\t\treturn {\n\t\t\ttype: \"text\",\n\t\t\ttext: token.text || \"\"\n\t\t};\n\t},\n\trenderMarkdown: (node) => node.text || \"\"\n});\n//#endregion\n//#region src/index.ts\nvar src_default = Text;\n//#endregion\nexport { Text, src_default as default };\n\n//# sourceMappingURL=index.js.map","import { Extension } from \"@tiptap/core\";\nimport { Blockquote } from \"@tiptap/extension-blockquote\";\nimport { Bold } from \"@tiptap/extension-bold\";\nimport { Code } from \"@tiptap/extension-code\";\nimport { CodeBlock } from \"@tiptap/extension-code-block\";\nimport { Document } from \"@tiptap/extension-document\";\nimport { HardBreak } from \"@tiptap/extension-hard-break\";\nimport { Heading } from \"@tiptap/extension-heading\";\nimport { HorizontalRule } from \"@tiptap/extension-horizontal-rule\";\nimport { Italic } from \"@tiptap/extension-italic\";\nimport { Link } from \"@tiptap/extension-link\";\nimport { BulletList, ListItem, ListKeymap, OrderedList } from \"@tiptap/extension-list\";\nimport { Paragraph } from \"@tiptap/extension-paragraph\";\nimport { Strike } from \"@tiptap/extension-strike\";\nimport { Text } from \"@tiptap/extension-text\";\nimport { Underline } from \"@tiptap/extension-underline\";\nimport { Dropcursor, Gapcursor, TrailingNode, UndoRedo } from \"@tiptap/extensions\";\n//#region src/starter-kit.ts\n/**\n* The starter kit is a collection of essential editor extensions.\n*\n* It’s a good starting point for building your own editor.\n*/\nconst StarterKit = Extension.create({\n\tname: \"starterKit\",\n\taddExtensions() {\n\t\tconst extensions = [];\n\t\tif (this.options.bold !== false) extensions.push(Bold.configure(this.options.bold));\n\t\tif (this.options.blockquote !== false) extensions.push(Blockquote.configure(this.options.blockquote));\n\t\tif (this.options.bulletList !== false) extensions.push(BulletList.configure(this.options.bulletList));\n\t\tif (this.options.code !== false) extensions.push(Code.configure(this.options.code));\n\t\tif (this.options.codeBlock !== false) extensions.push(CodeBlock.configure(this.options.codeBlock));\n\t\tif (this.options.document !== false) extensions.push(Document.configure(this.options.document));\n\t\tif (this.options.dropcursor !== false) extensions.push(Dropcursor.configure(this.options.dropcursor));\n\t\tif (this.options.gapcursor !== false) extensions.push(Gapcursor.configure(this.options.gapcursor));\n\t\tif (this.options.hardBreak !== false) extensions.push(HardBreak.configure(this.options.hardBreak));\n\t\tif (this.options.heading !== false) extensions.push(Heading.configure(this.options.heading));\n\t\tif (this.options.undoRedo !== false) extensions.push(UndoRedo.configure(this.options.undoRedo));\n\t\tif (this.options.horizontalRule !== false) extensions.push(HorizontalRule.configure(this.options.horizontalRule));\n\t\tif (this.options.italic !== false) extensions.push(Italic.configure(this.options.italic));\n\t\tif (this.options.listItem !== false) extensions.push(ListItem.configure(this.options.listItem));\n\t\tif (this.options.listKeymap !== false) {\n\t\t\tvar _this$options;\n\t\t\textensions.push(ListKeymap.configure((_this$options = this.options) === null || _this$options === void 0 ? void 0 : _this$options.listKeymap));\n\t\t}\n\t\tif (this.options.link !== false) {\n\t\t\tvar _this$options2;\n\t\t\textensions.push(Link.configure((_this$options2 = this.options) === null || _this$options2 === void 0 ? void 0 : _this$options2.link));\n\t\t}\n\t\tif (this.options.orderedList !== false) extensions.push(OrderedList.configure(this.options.orderedList));\n\t\tif (this.options.paragraph !== false) extensions.push(Paragraph.configure(this.options.paragraph));\n\t\tif (this.options.strike !== false) extensions.push(Strike.configure(this.options.strike));\n\t\tif (this.options.text !== false) extensions.push(Text.configure(this.options.text));\n\t\tif (this.options.underline !== false) {\n\t\t\tvar _this$options3;\n\t\t\textensions.push(Underline.configure((_this$options3 = this.options) === null || _this$options3 === void 0 ? void 0 : _this$options3.underline));\n\t\t}\n\t\tif (this.options.trailingNode !== false) {\n\t\t\tvar _this$options4;\n\t\t\textensions.push(TrailingNode.configure((_this$options4 = this.options) === null || _this$options4 === void 0 ? void 0 : _this$options4.trailingNode));\n\t\t}\n\t\treturn extensions;\n\t}\n});\n//#endregion\n//#region src/index.ts\nvar src_default = StarterKit;\n//#endregion\nexport { StarterKit, src_default as default };\n\n//# sourceMappingURL=index.js.map","import { ListKeymap } from \"@tiptap/extension-list\";\n\nimport { LIST_KEYMAP_LIST_TYPES } from \"./constants.js\";\n\n// Tiptap's ListKeymap backspace handler calls `$anchor.before()` to locate the\n// list to merge the cursor's block into. A gap cursor resolves at the top level\n// of the document, where `before()` raises\n// `RangeError: There is no position before the top-level node`. That merge is\n// only meaningful from inside a textblock, so decline the shortcut and let\n// ProseMirror's default backspace handle the gap cursor.\nconst guard = handler => props =>\n props.editor.state.selection.$anchor.depth === 0 ? false : handler(props);\n\n// Only wrap a shortcut the parent actually defines, so a future upstream that\n// drops one of these keys does not leave us registering `guard(undefined)`.\nconst guarded = (shortcuts, key) =>\n typeof shortcuts[key] === \"function\" ? { [key]: guard(shortcuts[key]) } : {};\n\n// Deliberately no `priority`: `.extend()` inherits ListKeymap's default (100),\n// which keeps the ordering this keymap already had against the other\n// Backspace handlers (e.g. Callout) now that StarterKit's copy is disabled.\nconst safeListKeymap = ListKeymap.extend({\n addOptions() {\n return { ...this.parent?.(), listTypes: LIST_KEYMAP_LIST_TYPES };\n },\n\n addKeyboardShortcuts() {\n const shortcuts = this.parent?.() ?? {};\n\n return {\n ...shortcuts,\n ...guarded(shortcuts, \"Backspace\"),\n ...guarded(shortcuts, \"Mod-Backspace\"),\n };\n },\n});\n\nexport default safeListKeymap;\n","import { defaultBlockAt, Extension, getSplittedAttributes } from \"@tiptap/core\";\nimport { EditorState, NodeSelection, TextSelection } from \"@tiptap/pm/state\";\nimport { canSplit } from \"@tiptap/pm/transform\";\n\nconst ensureMarks = (state, splittableMarks) => {\n const marks =\n state.storedMarks ||\n (state.selection.$to.parentOffset && state.selection.$from.marks());\n\n if (marks) {\n state.tr.ensureMarks(\n marks.filter(mark => splittableMarks?.includes(mark.type.name))\n );\n }\n};\n\n// Backport of https://github.com/ueberdosis/tiptap/pull/8285 until it ships.\nconst safeSplitBlock = Extension.create({\n name: \"safeSplitBlock\",\n priority: 90,\n\n addCommands() {\n return {\n splitBlock:\n ({ keepMarks = true } = {}) =>\n ({ tr, state, dispatch, editor }) => {\n const { selection, doc } = tr;\n const { $from, $to } = selection;\n const newAttributes = getSplittedAttributes(\n editor.extensionManager.attributes,\n $from.node().type.name,\n $from.node().attrs\n );\n\n if (selection instanceof NodeSelection && selection.node.isBlock) {\n if (!$from.parentOffset || !canSplit(doc, $from.pos)) return false;\n\n if (dispatch) {\n if (keepMarks) {\n ensureMarks(state, editor.extensionManager.splittableMarks);\n }\n\n tr.split($from.pos).scrollIntoView();\n }\n\n return true;\n }\n\n if (!$from.parent.isBlock) return false;\n\n const atEnd = $to.parentOffset === $to.parent.content.size;\n const deflt =\n $from.depth === 0\n ? undefined\n : defaultBlockAt(\n $from.node(-1).contentMatchAt($from.indexAfter(-1))\n );\n\n let types =\n atEnd && deflt\n ? [{ type: deflt, attrs: newAttributes }]\n : undefined;\n\n const willDeleteSelection =\n selection instanceof TextSelection && !selection.empty;\n\n // Check the document after deletion without changing the shared transaction.\n const deletedTr = willDeleteSelection\n ? EditorState.create({\n doc: tr.doc,\n selection,\n }).tr.deleteSelection()\n : null;\n const splitDoc = deletedTr ? deletedTr.doc : tr.doc;\n const splitPos = deletedTr\n ? deletedTr.mapping.map($from.pos)\n : $from.pos;\n\n let can = canSplit(splitDoc, splitPos, 1, types);\n\n if (\n !types &&\n !can &&\n canSplit(\n splitDoc,\n splitPos,\n 1,\n deflt ? [{ type: deflt }] : undefined\n )\n ) {\n can = true;\n types = deflt ? [{ type: deflt, attrs: newAttributes }] : undefined;\n }\n\n if (dispatch) {\n if (can) {\n // Positions in tr already include steps from earlier chained commands.\n const mapFrom = tr.steps.length;\n\n if (selection instanceof TextSelection) {\n tr.deleteSelection();\n }\n\n tr.split(tr.mapping.slice(mapFrom).map($from.pos), 1, types);\n\n if (\n deflt &&\n !atEnd &&\n !$from.parentOffset &&\n $from.parent.type !== deflt\n ) {\n const first = tr.mapping.slice(mapFrom).map($from.before());\n const $first = tr.doc.resolve(first);\n\n if (\n $from\n .node(-1)\n .canReplaceWith($first.index(), $first.index() + 1, deflt)\n ) {\n tr.setNodeMarkup(\n tr.mapping.slice(mapFrom).map($from.before()),\n deflt\n );\n }\n }\n }\n\n if (keepMarks) {\n ensureMarks(state, editor.extensionManager.splittableMarks);\n }\n\n tr.scrollIntoView();\n }\n\n return can;\n },\n };\n },\n});\n\nexport default safeSplitBlock;\n","import { CodeBlock } from \"@tiptap/extension-code-block\";\nimport { findChildren } from \"@tiptap/core\";\nimport { Plugin, PluginKey } from \"@tiptap/pm/state\";\nimport { Decoration, DecorationSet } from \"@tiptap/pm/view\";\nimport highlight from \"highlight.js/lib/core\";\n//#region src/lowlight-plugin.ts\nfunction parseNodes(nodes, className = []) {\n\treturn nodes.flatMap((node) => {\n\t\tconst classes = [...className, ...node.properties ? node.properties.className : []];\n\t\tif (node.children) return parseNodes(node.children, classes);\n\t\treturn {\n\t\t\ttext: node.value,\n\t\t\tclasses\n\t\t};\n\t});\n}\nfunction getHighlightNodes(result) {\n\treturn result.value || result.children || [];\n}\nfunction registered(aliasOrLanguage) {\n\treturn Boolean(highlight.getLanguage(aliasOrLanguage));\n}\nfunction getDecorations({ doc, name, lowlight, defaultLanguage }) {\n\tconst decorations = [];\n\tfindChildren(doc, (node) => node.type.name === name).forEach((block) => {\n\t\tvar _lowlight$registered;\n\t\tlet from = block.pos + 1;\n\t\tconst language = block.node.attrs.language || defaultLanguage;\n\t\tconst languages = lowlight.listLanguages();\n\t\tparseNodes(language && (languages.includes(language) || registered(language) || ((_lowlight$registered = lowlight.registered) === null || _lowlight$registered === void 0 ? void 0 : _lowlight$registered.call(lowlight, language))) ? getHighlightNodes(lowlight.highlight(language, block.node.textContent)) : getHighlightNodes(lowlight.highlightAuto(block.node.textContent))).forEach((node) => {\n\t\t\tconst to = from + node.text.length;\n\t\t\tif (node.classes.length) {\n\t\t\t\tconst decoration = Decoration.inline(from, to, { class: node.classes.join(\" \") });\n\t\t\t\tdecorations.push(decoration);\n\t\t\t}\n\t\t\tfrom = to;\n\t\t});\n\t});\n\treturn DecorationSet.create(doc, decorations);\n}\nfunction isFunction(param) {\n\treturn typeof param === \"function\";\n}\nfunction LowlightPlugin({ name, lowlight, defaultLanguage }) {\n\tif (![\n\t\t\"highlight\",\n\t\t\"highlightAuto\",\n\t\t\"listLanguages\"\n\t].every((api) => isFunction(lowlight[api]))) throw Error(\"You should provide an instance of lowlight to use the code-block-lowlight extension\");\n\tconst lowlightPlugin = new Plugin({\n\t\tkey: new PluginKey(\"lowlight\"),\n\t\tstate: {\n\t\t\tinit: (_, { doc }) => getDecorations({\n\t\t\t\tdoc,\n\t\t\t\tname,\n\t\t\t\tlowlight,\n\t\t\t\tdefaultLanguage\n\t\t\t}),\n\t\t\tapply: (transaction, decorationSet, oldState, newState) => {\n\t\t\t\tconst oldNodeName = oldState.selection.$head.parent.type.name;\n\t\t\t\tconst newNodeName = newState.selection.$head.parent.type.name;\n\t\t\t\tconst oldNodes = findChildren(oldState.doc, (node) => node.type.name === name);\n\t\t\t\tconst newNodes = findChildren(newState.doc, (node) => node.type.name === name);\n\t\t\t\tif (transaction.docChanged && ([oldNodeName, newNodeName].includes(name) || newNodes.length !== oldNodes.length || transaction.steps.some((step) => {\n\t\t\t\t\treturn step.from !== void 0 && step.to !== void 0 && oldNodes.some((node) => {\n\t\t\t\t\t\treturn node.pos >= step.from && node.pos + node.node.nodeSize <= step.to;\n\t\t\t\t\t});\n\t\t\t\t}))) return getDecorations({\n\t\t\t\t\tdoc: transaction.doc,\n\t\t\t\t\tname,\n\t\t\t\t\tlowlight,\n\t\t\t\t\tdefaultLanguage\n\t\t\t\t});\n\t\t\t\treturn decorationSet.map(transaction.mapping, transaction.doc);\n\t\t\t}\n\t\t},\n\t\tprops: { decorations(state) {\n\t\t\treturn lowlightPlugin.getState(state);\n\t\t} }\n\t});\n\treturn lowlightPlugin;\n}\n//#endregion\n//#region src/code-block-lowlight.ts\n/**\n* This extension allows you to highlight code blocks with lowlight.\n* @see https://tiptap.dev/api/nodes/code-block-lowlight\n*/\nconst CodeBlockLowlight = CodeBlock.extend({\n\taddOptions() {\n\t\tvar _this$parent;\n\t\treturn {\n\t\t\t...(_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.call(this),\n\t\t\tlowlight: {},\n\t\t\tlanguageClassPrefix: \"language-\",\n\t\t\texitOnTripleEnter: true,\n\t\t\texitOnArrowDown: true,\n\t\t\texitOnArrowUp: true,\n\t\t\tdefaultLanguage: null,\n\t\t\tenableTabIndentation: false,\n\t\t\ttabSize: 4,\n\t\t\tHTMLAttributes: {}\n\t\t};\n\t},\n\taddProseMirrorPlugins() {\n\t\tvar _this$parent2;\n\t\treturn [...((_this$parent2 = this.parent) === null || _this$parent2 === void 0 ? void 0 : _this$parent2.call(this)) || [], LowlightPlugin({\n\t\t\tname: this.name,\n\t\t\tlowlight: this.options.lowlight,\n\t\t\tdefaultLanguage: this.options.defaultLanguage\n\t\t})];\n\t}\n});\n//#endregion\n//#region src/index.ts\nvar src_default = CodeBlockLowlight;\n//#endregion\nexport { CodeBlockLowlight, src_default as default };\n\n//# sourceMappingURL=index.js.map","import { Plugin, PluginKey } from \"@tiptap/pm/state\";\nimport { escapeForRegEx } from \"@tiptap/core\";\nimport { Decoration, DecorationSet } from \"@tiptap/pm/view\";\nimport { autoUpdate, computePosition, flip, offset } from \"@floating-ui/dom\";\n//#region src/findSuggestionMatch.ts\nfunction findSuggestionMatch(config) {\n\tvar _$position$nodeBefore;\n\tconst { char, allowSpaces: allowSpacesOption, allowToIncludeChar, allowedPrefixes, startOfLine, $position } = config;\n\tconst allowSpaces = allowSpacesOption && !allowToIncludeChar;\n\tconst escapedChar = escapeForRegEx(char);\n\tconst suffix = new RegExp(`\\\\s${escapedChar}$`);\n\tconst prefix = startOfLine ? \"^\" : \"\";\n\tconst finalEscapedChar = allowToIncludeChar ? \"\" : escapedChar;\n\tconst regexp = allowSpaces ? new RegExp(`${prefix}${escapedChar}.*?(?=\\\\s${finalEscapedChar}|$)`, \"gm\") : new RegExp(`${prefix}(?:^)?${escapedChar}[^\\\\s${finalEscapedChar}]*`, \"gm\");\n\tconst text = ((_$position$nodeBefore = $position.nodeBefore) === null || _$position$nodeBefore === void 0 ? void 0 : _$position$nodeBefore.isText) && $position.nodeBefore.text;\n\tif (!text) return null;\n\tconst textFrom = $position.pos - text.length;\n\tconst match = Array.from(text.matchAll(regexp)).pop();\n\tif (!match || match.input === void 0 || match.index === void 0) return null;\n\tconst matchPrefix = match.input.slice(Math.max(0, match.index - 1), match.index);\n\tconst matchPrefixIsAllowed = new RegExp(`^[${allowedPrefixes === null || allowedPrefixes === void 0 ? void 0 : allowedPrefixes.join(\"\")}\\0]?$`).test(matchPrefix);\n\tif (allowedPrefixes !== null && !matchPrefixIsAllowed) return null;\n\tconst from = textFrom + match.index;\n\tlet to = from + match[0].length;\n\tif (allowSpaces && suffix.test(text.slice(to - 1, to + 1))) {\n\t\tmatch[0] += \" \";\n\t\tto += 1;\n\t}\n\tif (from < $position.pos && to >= $position.pos) return {\n\t\trange: {\n\t\t\tfrom,\n\t\t\tto\n\t\t},\n\t\tquery: match[0].slice(char.length),\n\t\ttext: match[0]\n\t};\n\treturn null;\n}\n//#endregion\n//#region src/helpers.ts\n/**\n* Returns true if the transaction inserted any whitespace or newline character.\n* Used to determine when a dismissed suggestion should become active again.\n*/\nfunction hasInsertedWhitespace(transaction) {\n\tif (!transaction.docChanged) return false;\n\treturn transaction.steps.some((step) => {\n\t\tconst slice = step.slice;\n\t\tif (!(slice === null || slice === void 0 ? void 0 : slice.content)) return false;\n\t\tconst inserted = slice.content.textBetween(0, slice.content.size, \"\\n\");\n\t\treturn /\\s/.test(inserted);\n\t});\n}\n/**\n* Gets the DOM rectangle corresponding to the current editor cursor anchor position.\n* Calculates screen coordinates based on Tiptap's cursor position and converts to a DOMRect object.\n*/\nfunction getAnchorClientRect(editor) {\n\treturn () => {\n\t\tconst pos = editor.state.selection.$anchor.pos;\n\t\tconst { top, right, bottom, left } = editor.view.coordsAtPos(pos);\n\t\ttry {\n\t\t\treturn new DOMRect(left, top, right - left, bottom - top);\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t};\n}\n/**\n* Creates a clientRect callback for a given decoration node.\n* Returns the anchor rect when no decoration node is present.\n* Uses the pluginKey's state to resolve the current decoration node on demand.\n*/\nfunction clientRectFor(editor, view, decorationNode, pluginKey) {\n\tif (!decorationNode) return getAnchorClientRect(editor);\n\treturn () => {\n\t\tconst state = pluginKey.getState(editor.state);\n\t\tconst decorationId = state === null || state === void 0 ? void 0 : state.decorationId;\n\t\tconst currentDecorationNode = view.dom.querySelector(`[data-decoration-id=\"${decorationId}\"]`);\n\t\treturn (currentDecorationNode === null || currentDecorationNode === void 0 ? void 0 : currentDecorationNode.getBoundingClientRect()) || null;\n\t};\n}\n/**\n* Determines whether a dismissed suggestion should stay dismissed.\n* Returns `true` (keep dismissed) or `false` (allow reactivation).\n*/\nfunction shouldKeepDismissed({ match, dismissedRange, state, transaction, editor, shouldResetDismissed, effectiveAllowSpaces }) {\n\tif (shouldResetDismissed === null || shouldResetDismissed === void 0 ? void 0 : shouldResetDismissed({\n\t\teditor,\n\t\tstate,\n\t\trange: dismissedRange,\n\t\tmatch,\n\t\ttransaction,\n\t\tallowSpaces: effectiveAllowSpaces\n\t})) return false;\n\tif (effectiveAllowSpaces) return match.range.from === dismissedRange.from;\n\treturn match.range.from === dismissedRange.from && !hasInsertedWhitespace(transaction);\n}\n/**\n* Dispatch an exit of the suggestion plugin by dispatching a metadata-only\n* transaction to clear the plugin state. The renderer's onExit hook is NOT\n* called here — it fires via the plugin view's stopped transition, which\n* builds SuggestionProps consistently with the normal lifecycle.\n*\n* This prevents a double onExit call (one from dispatchExit, one from the\n* view's update) and keeps exitSuggestion consistent with Escape-triggered\n* exits.\n*/\nfunction dispatchExit({ view, pluginKeyRef }) {\n\tconst tr = view.state.tr.setMeta(pluginKeyRef, { exit: true });\n\tview.dispatch(tr);\n}\n//#endregion\n//#region src/plugin/props.ts\n/**\n* Creates the `props` object for the suggestion ProseMirror plugin.\n* Contains `handleKeyDown` for keyboard handling and `decorations`\n* for rendering the suggestion highlight.\n*/\nfunction createSuggestionProps({ pluginKey, decorationTag, decorationClass, decorationContent, decorationEmptyClass, renderer, dispatchExit }) {\n\treturn {\n\t\t/**\n\t\t* Call the keydown hook if suggestion is active.\n\t\t*/\n\t\thandleKeyDown(view, event) {\n\t\t\tvar _renderer$onKeyDown2;\n\t\t\tconst state = pluginKey.getState(view.state);\n\t\t\tif (!state.active) return false;\n\t\t\tif (event.key === \"Escape\" || event.key === \"Esc\") {\n\t\t\t\tvar _renderer$onKeyDown;\n\t\t\t\trenderer === null || renderer === void 0 || (_renderer$onKeyDown = renderer.onKeyDown) === null || _renderer$onKeyDown === void 0 || _renderer$onKeyDown.call(renderer, {\n\t\t\t\t\tview,\n\t\t\t\t\tevent,\n\t\t\t\t\trange: state.range\n\t\t\t\t});\n\t\t\t\tdispatchExit(view);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn (renderer === null || renderer === void 0 || (_renderer$onKeyDown2 = renderer.onKeyDown) === null || _renderer$onKeyDown2 === void 0 ? void 0 : _renderer$onKeyDown2.call(renderer, {\n\t\t\t\tview,\n\t\t\t\tevent,\n\t\t\t\trange: state.range\n\t\t\t})) || false;\n\t\t},\n\t\t/**\n\t\t* Setup decorator on the currently active suggestion.\n\t\t*/\n\t\tdecorations(state) {\n\t\t\tconst { active, range, decorationId, query } = pluginKey.getState(state);\n\t\t\tif (!active) return null;\n\t\t\tconst isEmpty = !(query === null || query === void 0 ? void 0 : query.length);\n\t\t\tconst classNames = [decorationClass];\n\t\t\tif (isEmpty) classNames.push(decorationEmptyClass);\n\t\t\treturn DecorationSet.create(state.doc, [Decoration.inline(range.from, range.to, {\n\t\t\t\tnodeName: decorationTag,\n\t\t\t\tclass: classNames.join(\" \"),\n\t\t\t\t\"data-decoration-id\": decorationId || void 0,\n\t\t\t\t\"data-decoration-content\": decorationContent\n\t\t\t})]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/plugin/state.ts\n/**\n* Creates the `state` object for the suggestion ProseMirror plugin.\n* Contains `init()` and `apply()` for managing the plugin's internal state\n* across transactions.\n*/\nfunction createSuggestionState({ editor, char, effectiveAllowSpaces, allowToIncludeChar, allowedPrefixes, startOfLine, findSuggestionMatch, allow, shouldShow, shouldKeepDismissed, pluginKey }) {\n\treturn {\n\t\t/**\n\t\t* Initialize the plugin's internal state.\n\t\t*/\n\t\tinit() {\n\t\t\treturn {\n\t\t\t\tactive: false,\n\t\t\t\trange: {\n\t\t\t\t\tfrom: 0,\n\t\t\t\t\tto: 0\n\t\t\t\t},\n\t\t\t\tquery: null,\n\t\t\t\ttext: null,\n\t\t\t\tcomposing: false,\n\t\t\t\tdismissedRange: null\n\t\t\t};\n\t\t},\n\t\t/**\n\t\t* Apply changes to the plugin state from a view transaction.\n\t\t*/\n\t\tapply(transaction, prev, _oldState, state) {\n\t\t\tconst { isEditable } = editor;\n\t\t\tconst { composing } = editor.view;\n\t\t\tconst { selection } = transaction;\n\t\t\tconst { empty, from } = selection;\n\t\t\tconst next = { ...prev };\n\t\t\tconst meta = transaction.getMeta(pluginKey);\n\t\t\tif (meta && meta.exit) {\n\t\t\t\tnext.active = false;\n\t\t\t\tnext.decorationId = null;\n\t\t\t\tnext.range = {\n\t\t\t\t\tfrom: 0,\n\t\t\t\t\tto: 0\n\t\t\t\t};\n\t\t\t\tnext.query = null;\n\t\t\t\tnext.text = null;\n\t\t\t\tnext.dismissedRange = prev.active ? { ...prev.range } : prev.dismissedRange;\n\t\t\t\treturn next;\n\t\t\t}\n\t\t\tnext.composing = composing;\n\t\t\tif (transaction.docChanged && next.dismissedRange !== null) next.dismissedRange = {\n\t\t\t\tfrom: transaction.mapping.map(next.dismissedRange.from),\n\t\t\t\tto: transaction.mapping.map(next.dismissedRange.to)\n\t\t\t};\n\t\t\tif (isEditable && (empty || editor.view.composing)) {\n\t\t\t\tif ((from < prev.range.from || from > prev.range.to) && !composing && !prev.composing) next.active = false;\n\t\t\t\tconst match = findSuggestionMatch({\n\t\t\t\t\tchar,\n\t\t\t\t\tallowSpaces: effectiveAllowSpaces,\n\t\t\t\t\tallowToIncludeChar,\n\t\t\t\t\tallowedPrefixes,\n\t\t\t\t\tstartOfLine,\n\t\t\t\t\t$position: selection.$from\n\t\t\t\t});\n\t\t\t\tconst decorationId = `id_${Math.floor(Math.random() * 4294967295)}`;\n\t\t\t\tif (match && allow({\n\t\t\t\t\teditor,\n\t\t\t\t\tstate,\n\t\t\t\t\trange: match.range,\n\t\t\t\t\tisActive: prev.active\n\t\t\t\t}) && (!shouldShow || shouldShow({\n\t\t\t\t\teditor,\n\t\t\t\t\trange: match.range,\n\t\t\t\t\tquery: match.query,\n\t\t\t\t\ttext: match.text,\n\t\t\t\t\ttransaction\n\t\t\t\t}))) {\n\t\t\t\t\tif (next.dismissedRange !== null && !shouldKeepDismissed({\n\t\t\t\t\t\tmatch,\n\t\t\t\t\t\tdismissedRange: next.dismissedRange,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\ttransaction\n\t\t\t\t\t})) next.dismissedRange = null;\n\t\t\t\t\tif (next.dismissedRange === null) {\n\t\t\t\t\t\tnext.active = true;\n\t\t\t\t\t\tnext.decorationId = prev.decorationId || decorationId;\n\t\t\t\t\t\tnext.range = match.range;\n\t\t\t\t\t\tnext.query = match.query;\n\t\t\t\t\t\tnext.text = match.text;\n\t\t\t\t\t} else next.active = false;\n\t\t\t\t} else {\n\t\t\t\t\tif (!match) next.dismissedRange = null;\n\t\t\t\t\tnext.active = false;\n\t\t\t\t}\n\t\t\t} else next.active = false;\n\t\t\tif (!next.active) {\n\t\t\t\tnext.decorationId = null;\n\t\t\t\tnext.range = {\n\t\t\t\t\tfrom: 0,\n\t\t\t\t\tto: 0\n\t\t\t\t};\n\t\t\t\tnext.query = null;\n\t\t\t\tnext.text = null;\n\t\t\t}\n\t\t\treturn next;\n\t\t}\n\t};\n}\n//#endregion\n//#region src/plugin/async.ts\nfunction createSuggestionAsyncRequestManager({ editor, items }) {\n\tlet abortController = null;\n\tlet debounceTimer = null;\n\tlet debounceResolve = null;\n\tconst clearDebounceTimer = () => {\n\t\tif (debounceTimer !== null) {\n\t\t\tclearTimeout(debounceTimer);\n\t\t\tdebounceTimer = null;\n\t\t}\n\t\tdebounceResolve === null || debounceResolve === void 0 || debounceResolve();\n\t\tdebounceResolve = null;\n\t};\n\tconst waitForDebounce = (delay) => {\n\t\treturn new Promise((resolve) => {\n\t\t\tdebounceResolve = resolve;\n\t\t\tdebounceTimer = setTimeout(() => {\n\t\t\t\tdebounceTimer = null;\n\t\t\t\tconst pendingResolve = debounceResolve;\n\t\t\t\tdebounceResolve = null;\n\t\t\t\tpendingResolve === null || pendingResolve === void 0 || pendingResolve();\n\t\t\t}, delay);\n\t\t});\n\t};\n\tconst abort = () => {\n\t\tabortController === null || abortController === void 0 || abortController.abort();\n\t\tclearDebounceTimer();\n\t\tabortController = null;\n\t};\n\tconst fetch = async (query, debounce) => {\n\t\tabort();\n\t\tabortController = new AbortController();\n\t\tconst controller = abortController;\n\t\tif (debounce > 0) await waitForDebounce(debounce);\n\t\tif (abortController !== controller || controller.signal.aborted) return { status: \"aborted\" };\n\t\ttry {\n\t\t\tconst result = await items({\n\t\t\t\teditor,\n\t\t\t\tquery,\n\t\t\t\tsignal: controller.signal\n\t\t\t});\n\t\t\tif (abortController !== controller || controller.signal.aborted) return { status: \"aborted\" };\n\t\t\treturn {\n\t\t\t\tstatus: \"resolved\",\n\t\t\t\titems: result\n\t\t\t};\n\t\t} catch {\n\t\t\tif (abortController !== controller || controller.signal.aborted) return { status: \"aborted\" };\n\t\t\treturn { status: \"error\" };\n\t\t}\n\t};\n\treturn {\n\t\tabort,\n\t\tfetch\n\t};\n}\n//#endregion\n//#region src/plugin/floating-ui.ts\nfunction createSuggestionFloatingUiConfig({ placement, offset: offset$1, flip: flip$1, floatingUi }) {\n\tvar _offset$mainAxis, _offset$crossAxis, _floatingUi$middlewar, _floatingUi$strategy;\n\tconst middleware = [offset({\n\t\tmainAxis: (_offset$mainAxis = offset$1.mainAxis) !== null && _offset$mainAxis !== void 0 ? _offset$mainAxis : 4,\n\t\tcrossAxis: (_offset$crossAxis = offset$1.crossAxis) !== null && _offset$crossAxis !== void 0 ? _offset$crossAxis : 0\n\t})];\n\tif (flip$1) middleware.push(flip());\n\tif (floatingUi === null || floatingUi === void 0 || (_floatingUi$middlewar = floatingUi.middleware) === null || _floatingUi$middlewar === void 0 ? void 0 : _floatingUi$middlewar.length) middleware.push(...floatingUi.middleware);\n\treturn {\n\t\tplacement,\n\t\tstrategy: (_floatingUi$strategy = floatingUi === null || floatingUi === void 0 ? void 0 : floatingUi.strategy) !== null && _floatingUi$strategy !== void 0 ? _floatingUi$strategy : \"absolute\",\n\t\tmiddleware\n\t};\n}\n/**\n* Resolves a container option (selector or element) to a mount target,\n* falling back to `document.body` when it can't be resolved.\n*/\nfunction resolveContainer(container) {\n\tif (container instanceof HTMLElement) return container;\n\tif (typeof container === \"string\") try {\n\t\tconst found = document.querySelector(container);\n\t\tif (found) return found;\n\t} catch {\n\t\treturn document.body;\n\t}\n\treturn document.body;\n}\n/**\n* Builds the `mount` function handed to the renderer on `SuggestionProps`.\n*\n* Mounts the popup into the container, then wires Floating UI's `autoUpdate`\n* against a virtual reference that re-reads the live cursor rect, so the popup\n* stays anchored across scroll, resize, and layout shifts without the consumer\n* attaching any listeners. The returned `unmount` tears all of that down.\n*/\nfunction createMount({ getReferenceRect, contextElement, config, container, dismissOnOutsideClick, dismiss }) {\n\treturn (element, options = {}) => {\n\t\tconst reference = {\n\t\t\tgetBoundingClientRect: () => {\n\t\t\t\tvar _getReferenceRect;\n\t\t\t\treturn (_getReferenceRect = getReferenceRect()) !== null && _getReferenceRect !== void 0 ? _getReferenceRect : new DOMRect();\n\t\t\t},\n\t\t\tcontextElement\n\t\t};\n\t\tlet positioned = false;\n\t\tconst mountedByUs = !element.isConnected;\n\t\tif (mountedByUs) resolveContainer(container).appendChild(element);\n\t\tif (!options.onPosition) {\n\t\t\telement.style.visibility = \"hidden\";\n\t\t\telement.style.width = \"max-content\";\n\t\t}\n\t\tconst update = () => {\n\t\t\tcomputePosition(reference, element, {\n\t\t\t\tplacement: config.placement,\n\t\t\t\tstrategy: config.strategy,\n\t\t\t\tmiddleware: config.middleware\n\t\t\t}).then(({ x, y, placement, strategy }) => {\n\t\t\t\tif (options.onPosition) {\n\t\t\t\t\toptions.onPosition({\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty,\n\t\t\t\t\t\tplacement,\n\t\t\t\t\t\tstrategy\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tObject.assign(element.style, {\n\t\t\t\t\tposition: strategy,\n\t\t\t\t\tleft: `${x}px`,\n\t\t\t\t\ttop: `${y}px`\n\t\t\t\t});\n\t\t\t\tif (!positioned) {\n\t\t\t\t\tpositioned = true;\n\t\t\t\t\telement.style.visibility = \"\";\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t\tconst cleanupAutoUpdate = autoUpdate(reference, element, update, options.autoUpdate);\n\t\tlet onOutsidePointerDown;\n\t\tif (dismissOnOutsideClick) {\n\t\t\tonOutsidePointerDown = (event) => {\n\t\t\t\tconst target = event.target;\n\t\t\t\tif (!(target instanceof Node) || element.contains(target) || contextElement.contains(target)) return;\n\t\t\t\tdismiss();\n\t\t\t};\n\t\t\tdocument.addEventListener(\"pointerdown\", onOutsidePointerDown, true);\n\t\t}\n\t\treturn () => {\n\t\t\tcleanupAutoUpdate();\n\t\t\tif (onOutsidePointerDown) document.removeEventListener(\"pointerdown\", onOutsidePointerDown, true);\n\t\t\tif (mountedByUs) element.remove();\n\t\t};\n\t};\n}\n//#endregion\n//#region src/plugin/view.ts\n/**\n* Creates the `view` object for the suggestion ProseMirror plugin.\n*\n* Manages the async lifecycle: tracks state transitions, calls renderer hooks,\n* fetches items with debounce and AbortController support.\n*\n* 1. Tracks plugin state transitions (started, updated, stopped) to determine when to call renderer hooks.\n* 2. Calls `onBeforeStart`, `onBeforeUpdate`, `onStart` before fetching to allow the renderer to prepare for first render\n* 3. Manages async fetching of suggestion items with support for debouncing and aborting in-flight requests\n* 4. Calls `onUpdate` after fetching new items to update the renderer with the latest data\n* 5. At the end calls a final `onExit` or `onUpdate` to allow the renderer to clean up or finalize the state\n*/\nfunction createSuggestionView({ editor, pluginKey, items, renderer, minQueryLength, debounce, initialItems, placement, offset: offsetOption, container, flip, floatingUi, dismissOnOutsideClick, command, clientRectFor, dispatchExit }) {\n\tlet props;\n\tconst asyncRequest = createSuggestionAsyncRequestManager({\n\t\teditor,\n\t\titems\n\t});\n\tconst floatingUiConfig = createSuggestionFloatingUiConfig({\n\t\tplacement,\n\t\toffset: offsetOption,\n\t\tflip,\n\t\tfloatingUi\n\t});\n\tfunction dispatchStateUpdate(state, dispatchProps) {\n\t\tswitch (state) {\n\t\t\tcase \"started\":\n\t\t\t\tvar _renderer$onStart;\n\t\t\t\trenderer === null || renderer === void 0 || (_renderer$onStart = renderer.onStart) === null || _renderer$onStart === void 0 || _renderer$onStart.call(renderer, dispatchProps);\n\t\t\t\tbreak;\n\t\t\tcase \"updated\":\n\t\t\t\tvar _renderer$onUpdate;\n\t\t\t\trenderer === null || renderer === void 0 || (_renderer$onUpdate = renderer.onUpdate) === null || _renderer$onUpdate === void 0 || _renderer$onUpdate.call(renderer, dispatchProps);\n\t\t\t\tbreak;\n\t\t\tcase \"stopped\":\n\t\t\t\tvar _renderer$onExit;\n\t\t\t\trenderer === null || renderer === void 0 || (_renderer$onExit = renderer.onExit) === null || _renderer$onExit === void 0 || _renderer$onExit.call(renderer, dispatchProps);\n\t\t}\n\t}\n\treturn {\n\t\tupdate: async (view, prevState) => {\n\t\t\tvar _offsetOption$mainAxi, _offsetOption$crossAx;\n\t\t\tconst prev = pluginKey.getState(prevState);\n\t\t\tconst next = pluginKey.getState(view.state);\n\t\t\tif (!prev || !next) return;\n\t\t\tlet currentState = null;\n\t\t\tconst queryChanged = prev.query !== next.query;\n\t\t\tconst textChanged = prev.text !== next.text;\n\t\t\tconst rangeChanged = prev.range.from !== next.range.from || prev.range.to !== next.range.to;\n\t\t\tconst effectiveQueryChanged = queryChanged || textChanged || rangeChanged;\n\t\t\tif (!prev.active && next.active) currentState = \"started\";\n\t\t\telse if (prev.active && !next.active) currentState = \"stopped\";\n\t\t\telse if (next.active && effectiveQueryChanged) currentState = \"updated\";\n\t\t\telse return;\n\t\t\tconst state = currentState === \"stopped\" ? prev : next;\n\t\t\tconst decorationNode = view.dom.querySelector(`[data-decoration-id=\"${state.decorationId}\"]`);\n\t\t\tconst clientRect = clientRectFor(view, decorationNode);\n\t\t\tconst exceedsMinQueryLength = minQueryLength === 0 || (state.query ? state.query.length >= minQueryLength : false);\n\t\t\tconst willFetch = (currentState === \"started\" || currentState === \"updated\") && exceedsMinQueryLength;\n\t\t\tprops = {\n\t\t\t\teditor,\n\t\t\t\trange: state.range,\n\t\t\t\tquery: state.query || \"\",\n\t\t\t\ttext: state.text || \"\",\n\t\t\t\titems: initialItems !== null && initialItems !== void 0 ? initialItems : [],\n\t\t\t\tcommand: (commandProps) => {\n\t\t\t\t\treturn command({\n\t\t\t\t\t\teditor,\n\t\t\t\t\t\trange: state.range,\n\t\t\t\t\t\tprops: commandProps\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tdecorationNode,\n\t\t\t\tclientRect,\n\t\t\t\tloading: willFetch,\n\t\t\t\tplacement,\n\t\t\t\toffset: {\n\t\t\t\t\tmainAxis: (_offsetOption$mainAxi = offsetOption.mainAxis) !== null && _offsetOption$mainAxi !== void 0 ? _offsetOption$mainAxi : 4,\n\t\t\t\t\tcrossAxis: (_offsetOption$crossAx = offsetOption.crossAxis) !== null && _offsetOption$crossAx !== void 0 ? _offsetOption$crossAx : 0\n\t\t\t\t},\n\t\t\t\tcontainer,\n\t\t\t\tflip,\n\t\t\t\tfloatingUi: floatingUiConfig,\n\t\t\t\tmount: createMount({\n\t\t\t\t\tgetReferenceRect: clientRect,\n\t\t\t\t\tcontextElement: view.dom,\n\t\t\t\t\tconfig: floatingUiConfig,\n\t\t\t\t\tcontainer,\n\t\t\t\t\tdismissOnOutsideClick,\n\t\t\t\t\tdismiss: () => dispatchExit(editor.view)\n\t\t\t\t})\n\t\t\t};\n\t\t\tif (currentState === \"started\") {\n\t\t\t\tvar _renderer$onBeforeSta;\n\t\t\t\trenderer === null || renderer === void 0 || (_renderer$onBeforeSta = renderer.onBeforeStart) === null || _renderer$onBeforeSta === void 0 || _renderer$onBeforeSta.call(renderer, props);\n\t\t\t}\n\t\t\tif (currentState === \"updated\") {\n\t\t\t\tvar _renderer$onBeforeUpd;\n\t\t\t\trenderer === null || renderer === void 0 || (_renderer$onBeforeUpd = renderer.onBeforeUpdate) === null || _renderer$onBeforeUpd === void 0 || _renderer$onBeforeUpd.call(renderer, props);\n\t\t\t}\n\t\t\tif (currentState === \"started\") dispatchStateUpdate(currentState, props);\n\t\t\tif (currentState === \"started\" || currentState === \"updated\") {\n\t\t\t\tif (!willFetch) {\n\t\t\t\t\tasyncRequest.abort();\n\t\t\t\t\tprops = {\n\t\t\t\t\t\t...props,\n\t\t\t\t\t\titems: initialItems !== null && initialItems !== void 0 ? initialItems : [],\n\t\t\t\t\t\tloading: false\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tprops = {\n\t\t\t\t\t\t...props,\n\t\t\t\t\t\titems: initialItems !== null && initialItems !== void 0 ? initialItems : [],\n\t\t\t\t\t\tloading: true\n\t\t\t\t\t};\n\t\t\t\t\tcurrentState = \"updated\";\n\t\t\t\t\tdispatchStateUpdate(currentState, props);\n\t\t\t\t\tconst result = await asyncRequest.fetch(state.query || \"\", debounce);\n\t\t\t\t\tif (result.status === \"aborted\") return;\n\t\t\t\t\tconst currentPluginState = pluginKey.getState(view.state);\n\t\t\t\t\tif (!(currentPluginState === null || currentPluginState === void 0 ? void 0 : currentPluginState.active)) {\n\t\t\t\t\t\tasyncRequest.abort();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tprops = result.status === \"resolved\" ? {\n\t\t\t\t\t\t...props,\n\t\t\t\t\t\titems: result.items,\n\t\t\t\t\t\tloading: false\n\t\t\t\t\t} : {\n\t\t\t\t\t\t...props,\n\t\t\t\t\t\tloading: false\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (currentState === \"stopped\") {\n\t\t\t\tasyncRequest.abort();\n\t\t\t\tdispatchStateUpdate(currentState, props);\n\t\t\t\tprops = void 0;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (currentState === \"updated\") dispatchStateUpdate(currentState, props);\n\t\t},\n\t\tdestroy: () => {\n\t\t\tvar _renderer$onExit2;\n\t\t\tasyncRequest.abort();\n\t\t\tif (!props) return;\n\t\t\trenderer === null || renderer === void 0 || (_renderer$onExit2 = renderer.onExit) === null || _renderer$onExit2 === void 0 || _renderer$onExit2.call(renderer, props);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/suggestion.ts\nconst SuggestionPluginKey = new PluginKey(\"suggestion\");\n/**\n* This utility allows you to create suggestions.\n* @see https://tiptap.dev/api/utilities/suggestion\n*/\nfunction Suggestion({ pluginKey = SuggestionPluginKey, editor, char = \"@\", allowSpaces = false, allowToIncludeChar = false, allowedPrefixes = [\" \"], startOfLine = false, decorationTag = \"span\", decorationClass = \"suggestion\", decorationContent = \"\", decorationEmptyClass = \"is-empty\", command = () => null, items = () => [], minQueryLength = 0, debounce = 0, initialItems, placement = \"bottom-start\", offset: offsetOption = {}, container, flip = true, floatingUi, dismissOnOutsideClick = true, render = () => ({}), allow = () => true, findSuggestionMatch: findSuggestionMatch$1 = findSuggestionMatch, shouldShow, shouldResetDismissed }) {\n\tconst renderer = render === null || render === void 0 ? void 0 : render();\n\tconst effectiveAllowSpaces = allowSpaces && !allowToIncludeChar;\n\tconst clientRectFor$1 = (view, decorationNode) => clientRectFor(editor, view, decorationNode, pluginKey);\n\tfunction shouldKeepDismissed$1(props) {\n\t\treturn shouldKeepDismissed({\n\t\t\t...props,\n\t\t\teditor,\n\t\t\tshouldResetDismissed,\n\t\t\teffectiveAllowSpaces\n\t\t});\n\t}\n\tconst dispatchExit$1 = (view) => dispatchExit({\n\t\tview,\n\t\tpluginKeyRef: pluginKey\n\t});\n\treturn new Plugin({\n\t\tkey: pluginKey,\n\t\tview: () => createSuggestionView({\n\t\t\teditor,\n\t\t\tpluginKey,\n\t\t\titems,\n\t\t\trenderer,\n\t\t\tminQueryLength,\n\t\t\tdebounce,\n\t\t\tinitialItems,\n\t\t\tplacement,\n\t\t\toffset: offsetOption,\n\t\t\tcontainer,\n\t\t\tflip,\n\t\t\tfloatingUi,\n\t\t\tdismissOnOutsideClick,\n\t\t\tcommand,\n\t\t\tclientRectFor: clientRectFor$1,\n\t\t\tdispatchExit: dispatchExit$1\n\t\t}),\n\t\tstate: createSuggestionState({\n\t\t\teditor,\n\t\t\tchar,\n\t\t\teffectiveAllowSpaces,\n\t\t\tallowToIncludeChar,\n\t\t\tallowedPrefixes,\n\t\t\tstartOfLine,\n\t\t\tfindSuggestionMatch: findSuggestionMatch$1,\n\t\t\tallow,\n\t\t\tshouldShow,\n\t\t\tshouldKeepDismissed: shouldKeepDismissed$1,\n\t\t\tpluginKey\n\t\t}),\n\t\tprops: createSuggestionProps({\n\t\t\tpluginKey,\n\t\t\tdecorationTag,\n\t\t\tdecorationClass,\n\t\t\tdecorationContent,\n\t\t\tdecorationEmptyClass,\n\t\t\trenderer,\n\t\t\tdispatchExit: dispatchExit$1\n\t\t})\n\t});\n}\n/**\n* Programmatically exit a suggestion plugin by dispatching a metadata-only\n* transaction. This is the safe, recommended API to remove suggestion\n* decorations without touching the document or causing mapping errors.\n*/\nfunction exitSuggestion(view, pluginKeyRef = SuggestionPluginKey) {\n\tconst tr = view.state.tr.setMeta(pluginKeyRef, { exit: true });\n\tview.dispatch(tr);\n}\n//#endregion\n//#region src/index.ts\nvar src_default = Suggestion;\n//#endregion\nexport { Suggestion, SuggestionPluginKey, src_default as default, exitSuggestion, findSuggestionMatch };\n\n//# sourceMappingURL=index.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nvar rowSizeBase = {\n width: '100%',\n height: '10px',\n top: '0px',\n left: '0px',\n cursor: 'row-resize',\n};\nvar colSizeBase = {\n width: '10px',\n height: '100%',\n top: '0px',\n left: '0px',\n cursor: 'col-resize',\n};\nvar edgeBase = {\n width: '20px',\n height: '20px',\n position: 'absolute',\n};\nvar styles = {\n top: __assign(__assign({}, rowSizeBase), { top: '-5px' }),\n right: __assign(__assign({}, colSizeBase), { left: undefined, right: '-5px' }),\n bottom: __assign(__assign({}, rowSizeBase), { top: undefined, bottom: '-5px' }),\n left: __assign(__assign({}, colSizeBase), { left: '-5px' }),\n topRight: __assign(__assign({}, edgeBase), { right: '-10px', top: '-10px', cursor: 'ne-resize' }),\n bottomRight: __assign(__assign({}, edgeBase), { right: '-10px', bottom: '-10px', cursor: 'se-resize' }),\n bottomLeft: __assign(__assign({}, edgeBase), { left: '-10px', bottom: '-10px', cursor: 'sw-resize' }),\n topLeft: __assign(__assign({}, edgeBase), { left: '-10px', top: '-10px', cursor: 'nw-resize' }),\n};\nvar Resizer = /** @class */ (function (_super) {\n __extends(Resizer, _super);\n function Resizer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.onMouseDown = function (e) {\n _this.props.onResizeStart(e, _this.props.direction);\n };\n _this.onTouchStart = function (e) {\n _this.props.onResizeStart(e, _this.props.direction);\n };\n return _this;\n }\n Resizer.prototype.render = function () {\n return (React.createElement(\"div\", { className: this.props.className || '', style: __assign(__assign({ position: 'absolute', userSelect: 'none' }, styles[this.props.direction]), (this.props.replaceStyles || {})), onMouseDown: this.onMouseDown, onTouchStart: this.onTouchStart }, this.props.children));\n };\n return Resizer;\n}(React.PureComponent));\nexport { Resizer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { flushSync } from 'react-dom';\nimport { Resizer } from './resizer';\nvar DEFAULT_SIZE = {\n width: 'auto',\n height: 'auto',\n};\nvar clamp = function (n, min, max) { return Math.max(Math.min(n, max), min); };\nvar snap = function (n, size) { return Math.round(n / size) * size; };\nvar hasDirection = function (dir, target) {\n return new RegExp(dir, 'i').test(target);\n};\n// INFO: In case of window is a Proxy and does not porxy Events correctly, use isTouchEvent & isMouseEvent to distinguish event type instead of `instanceof`.\nvar isTouchEvent = function (event) {\n return Boolean(event.touches && event.touches.length);\n};\nvar isMouseEvent = function (event) {\n return Boolean((event.clientX || event.clientX === 0) &&\n (event.clientY || event.clientY === 0));\n};\nvar findClosestSnap = function (n, snapArray, snapGap) {\n if (snapGap === void 0) { snapGap = 0; }\n var closestGapIndex = snapArray.reduce(function (prev, curr, index) { return (Math.abs(curr - n) < Math.abs(snapArray[prev] - n) ? index : prev); }, 0);\n var gap = Math.abs(snapArray[closestGapIndex] - n);\n return snapGap === 0 || gap < snapGap ? snapArray[closestGapIndex] : n;\n};\nvar getStringSize = function (n) {\n n = n.toString();\n if (n === 'auto') {\n return n;\n }\n if (n.endsWith('px')) {\n return n;\n }\n if (n.endsWith('%')) {\n return n;\n }\n if (n.endsWith('vh')) {\n return n;\n }\n if (n.endsWith('vw')) {\n return n;\n }\n if (n.endsWith('vmax')) {\n return n;\n }\n if (n.endsWith('vmin')) {\n return n;\n }\n return n + \"px\";\n};\nvar getPixelSize = function (size, parentSize, innerWidth, innerHeight) {\n if (size && typeof size === 'string') {\n if (size.endsWith('px')) {\n return Number(size.replace('px', ''));\n }\n if (size.endsWith('%')) {\n var ratio = Number(size.replace('%', '')) / 100;\n return parentSize * ratio;\n }\n if (size.endsWith('vw')) {\n var ratio = Number(size.replace('vw', '')) / 100;\n return innerWidth * ratio;\n }\n if (size.endsWith('vh')) {\n var ratio = Number(size.replace('vh', '')) / 100;\n return innerHeight * ratio;\n }\n }\n return size;\n};\nvar calculateNewMax = function (parentSize, innerWidth, innerHeight, maxWidth, maxHeight, minWidth, minHeight) {\n maxWidth = getPixelSize(maxWidth, parentSize.width, innerWidth, innerHeight);\n maxHeight = getPixelSize(maxHeight, parentSize.height, innerWidth, innerHeight);\n minWidth = getPixelSize(minWidth, parentSize.width, innerWidth, innerHeight);\n minHeight = getPixelSize(minHeight, parentSize.height, innerWidth, innerHeight);\n return {\n maxWidth: typeof maxWidth === 'undefined' ? undefined : Number(maxWidth),\n maxHeight: typeof maxHeight === 'undefined' ? undefined : Number(maxHeight),\n minWidth: typeof minWidth === 'undefined' ? undefined : Number(minWidth),\n minHeight: typeof minHeight === 'undefined' ? undefined : Number(minHeight),\n };\n};\nvar definedProps = [\n 'as',\n 'style',\n 'className',\n 'grid',\n 'snap',\n 'bounds',\n 'boundsByDirection',\n 'size',\n 'defaultSize',\n 'minWidth',\n 'minHeight',\n 'maxWidth',\n 'maxHeight',\n 'lockAspectRatio',\n 'lockAspectRatioExtraWidth',\n 'lockAspectRatioExtraHeight',\n 'enable',\n 'handleStyles',\n 'handleClasses',\n 'handleWrapperStyle',\n 'handleWrapperClass',\n 'children',\n 'onResizeStart',\n 'onResize',\n 'onResizeStop',\n 'handleComponent',\n 'scale',\n 'resizeRatio',\n 'snapGap',\n];\n// HACK: This class is used to calculate % size.\nvar baseClassName = '__resizable_base__';\nvar Resizable = /** @class */ (function (_super) {\n __extends(Resizable, _super);\n function Resizable(props) {\n var _this = _super.call(this, props) || this;\n _this.ratio = 1;\n _this.resizable = null;\n // For parent boundary\n _this.parentLeft = 0;\n _this.parentTop = 0;\n // For boundary\n _this.resizableLeft = 0;\n _this.resizableRight = 0;\n _this.resizableTop = 0;\n _this.resizableBottom = 0;\n // For target boundary\n _this.targetLeft = 0;\n _this.targetTop = 0;\n _this.appendBase = function () {\n if (!_this.resizable || !_this.window) {\n return null;\n }\n var parent = _this.parentNode;\n if (!parent) {\n return null;\n }\n var element = _this.window.document.createElement('div');\n element.style.width = '100%';\n element.style.height = '100%';\n element.style.position = 'absolute';\n element.style.transform = 'scale(0, 0)';\n element.style.left = '0';\n element.style.flex = '0 0 100%';\n if (element.classList) {\n element.classList.add(baseClassName);\n }\n else {\n element.className += baseClassName;\n }\n parent.appendChild(element);\n return element;\n };\n _this.removeBase = function (base) {\n var parent = _this.parentNode;\n if (!parent) {\n return;\n }\n parent.removeChild(base);\n };\n _this.ref = function (c) {\n if (c) {\n _this.resizable = c;\n }\n };\n _this.state = {\n isResizing: false,\n width: typeof (_this.propsSize && _this.propsSize.width) === 'undefined'\n ? 'auto'\n : _this.propsSize && _this.propsSize.width,\n height: typeof (_this.propsSize && _this.propsSize.height) === 'undefined'\n ? 'auto'\n : _this.propsSize && _this.propsSize.height,\n direction: 'right',\n original: {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n },\n backgroundStyle: {\n height: '100%',\n width: '100%',\n backgroundColor: 'rgba(0,0,0,0)',\n cursor: 'auto',\n opacity: 0,\n position: 'fixed',\n zIndex: 9999,\n top: '0',\n left: '0',\n bottom: '0',\n right: '0',\n },\n flexBasis: undefined,\n };\n _this.onResizeStart = _this.onResizeStart.bind(_this);\n _this.onMouseMove = _this.onMouseMove.bind(_this);\n _this.onMouseUp = _this.onMouseUp.bind(_this);\n return _this;\n }\n Object.defineProperty(Resizable.prototype, \"parentNode\", {\n get: function () {\n if (!this.resizable) {\n return null;\n }\n return this.resizable.parentNode;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Resizable.prototype, \"window\", {\n get: function () {\n if (!this.resizable) {\n return null;\n }\n if (!this.resizable.ownerDocument) {\n return null;\n }\n return this.resizable.ownerDocument.defaultView;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Resizable.prototype, \"propsSize\", {\n get: function () {\n return this.props.size || this.props.defaultSize || DEFAULT_SIZE;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Resizable.prototype, \"size\", {\n get: function () {\n var width = 0;\n var height = 0;\n if (this.resizable && this.window) {\n var orgWidth = this.resizable.offsetWidth;\n var orgHeight = this.resizable.offsetHeight;\n // HACK: Set position `relative` to get parent size.\n // This is because when re-resizable set `absolute`, I can not get base width correctly.\n var orgPosition = this.resizable.style.position;\n if (orgPosition !== 'relative') {\n this.resizable.style.position = 'relative';\n }\n // INFO: Use original width or height if set auto.\n width = this.resizable.style.width !== 'auto' ? this.resizable.offsetWidth : orgWidth;\n height = this.resizable.style.height !== 'auto' ? this.resizable.offsetHeight : orgHeight;\n // Restore original position\n this.resizable.style.position = orgPosition;\n }\n return { width: width, height: height };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Resizable.prototype, \"sizeStyle\", {\n get: function () {\n var _this = this;\n var size = this.props.size;\n var getSize = function (key) {\n if (typeof _this.state[key] === 'undefined' || _this.state[key] === 'auto') {\n return 'auto';\n }\n if (_this.propsSize && _this.propsSize[key] && _this.propsSize[key].toString().endsWith('%')) {\n if (_this.state[key].toString().endsWith('%')) {\n return _this.state[key].toString();\n }\n var parentSize = _this.getParentSize();\n var value = Number(_this.state[key].toString().replace('px', ''));\n var percent = (value / parentSize[key]) * 100;\n return percent + \"%\";\n }\n return getStringSize(_this.state[key]);\n };\n var width = size && typeof size.width !== 'undefined' && !this.state.isResizing\n ? getStringSize(size.width)\n : getSize('width');\n var height = size && typeof size.height !== 'undefined' && !this.state.isResizing\n ? getStringSize(size.height)\n : getSize('height');\n return { width: width, height: height };\n },\n enumerable: false,\n configurable: true\n });\n Resizable.prototype.getParentSize = function () {\n if (!this.parentNode) {\n if (!this.window) {\n return { width: 0, height: 0 };\n }\n return { width: this.window.innerWidth, height: this.window.innerHeight };\n }\n var base = this.appendBase();\n if (!base) {\n return { width: 0, height: 0 };\n }\n // INFO: To calculate parent width with flex layout\n var wrapChanged = false;\n var wrap = this.parentNode.style.flexWrap;\n if (wrap !== 'wrap') {\n wrapChanged = true;\n this.parentNode.style.flexWrap = 'wrap';\n // HACK: Use relative to get parent padding size\n }\n base.style.position = 'relative';\n base.style.minWidth = '100%';\n base.style.minHeight = '100%';\n var size = {\n width: base.offsetWidth,\n height: base.offsetHeight,\n };\n if (wrapChanged) {\n this.parentNode.style.flexWrap = wrap;\n }\n this.removeBase(base);\n return size;\n };\n Resizable.prototype.bindEvents = function () {\n if (this.window) {\n this.window.addEventListener('mouseup', this.onMouseUp);\n this.window.addEventListener('mousemove', this.onMouseMove);\n this.window.addEventListener('mouseleave', this.onMouseUp);\n this.window.addEventListener('touchmove', this.onMouseMove, {\n capture: true,\n passive: false,\n });\n this.window.addEventListener('touchend', this.onMouseUp);\n }\n };\n Resizable.prototype.unbindEvents = function () {\n if (this.window) {\n this.window.removeEventListener('mouseup', this.onMouseUp);\n this.window.removeEventListener('mousemove', this.onMouseMove);\n this.window.removeEventListener('mouseleave', this.onMouseUp);\n this.window.removeEventListener('touchmove', this.onMouseMove, true);\n this.window.removeEventListener('touchend', this.onMouseUp);\n }\n };\n Resizable.prototype.componentDidMount = function () {\n if (!this.resizable || !this.window) {\n return;\n }\n var computedStyle = this.window.getComputedStyle(this.resizable);\n this.setState({\n width: this.state.width || this.size.width,\n height: this.state.height || this.size.height,\n flexBasis: computedStyle.flexBasis !== 'auto' ? computedStyle.flexBasis : undefined,\n });\n };\n Resizable.prototype.componentWillUnmount = function () {\n if (this.window) {\n this.unbindEvents();\n }\n };\n Resizable.prototype.createSizeForCssProperty = function (newSize, kind) {\n var propsSize = this.propsSize && this.propsSize[kind];\n return this.state[kind] === 'auto' &&\n this.state.original[kind] === newSize &&\n (typeof propsSize === 'undefined' || propsSize === 'auto')\n ? 'auto'\n : newSize;\n };\n Resizable.prototype.calculateNewMaxFromBoundary = function (maxWidth, maxHeight) {\n var boundsByDirection = this.props.boundsByDirection;\n var direction = this.state.direction;\n var widthByDirection = boundsByDirection && hasDirection('left', direction);\n var heightByDirection = boundsByDirection && hasDirection('top', direction);\n var boundWidth;\n var boundHeight;\n if (this.props.bounds === 'parent') {\n var parent_1 = this.parentNode;\n if (parent_1) {\n boundWidth = widthByDirection\n ? this.resizableRight - this.parentLeft\n : parent_1.offsetWidth + (this.parentLeft - this.resizableLeft);\n boundHeight = heightByDirection\n ? this.resizableBottom - this.parentTop\n : parent_1.offsetHeight + (this.parentTop - this.resizableTop);\n }\n }\n else if (this.props.bounds === 'window') {\n if (this.window) {\n boundWidth = widthByDirection ? this.resizableRight : this.window.innerWidth - this.resizableLeft;\n boundHeight = heightByDirection ? this.resizableBottom : this.window.innerHeight - this.resizableTop;\n }\n }\n else if (this.props.bounds) {\n boundWidth = widthByDirection\n ? this.resizableRight - this.targetLeft\n : this.props.bounds.offsetWidth + (this.targetLeft - this.resizableLeft);\n boundHeight = heightByDirection\n ? this.resizableBottom - this.targetTop\n : this.props.bounds.offsetHeight + (this.targetTop - this.resizableTop);\n }\n if (boundWidth && Number.isFinite(boundWidth)) {\n maxWidth = maxWidth && maxWidth < boundWidth ? maxWidth : boundWidth;\n }\n if (boundHeight && Number.isFinite(boundHeight)) {\n maxHeight = maxHeight && maxHeight < boundHeight ? maxHeight : boundHeight;\n }\n return { maxWidth: maxWidth, maxHeight: maxHeight };\n };\n Resizable.prototype.calculateNewSizeFromDirection = function (clientX, clientY) {\n var scale = this.props.scale || 1;\n var resizeRatio = this.props.resizeRatio || 1;\n var _a = this.state, direction = _a.direction, original = _a.original;\n var _b = this.props, lockAspectRatio = _b.lockAspectRatio, lockAspectRatioExtraHeight = _b.lockAspectRatioExtraHeight, lockAspectRatioExtraWidth = _b.lockAspectRatioExtraWidth;\n var newWidth = original.width;\n var newHeight = original.height;\n var extraHeight = lockAspectRatioExtraHeight || 0;\n var extraWidth = lockAspectRatioExtraWidth || 0;\n if (hasDirection('right', direction)) {\n newWidth = original.width + ((clientX - original.x) * resizeRatio) / scale;\n if (lockAspectRatio) {\n newHeight = (newWidth - extraWidth) / this.ratio + extraHeight;\n }\n }\n if (hasDirection('left', direction)) {\n newWidth = original.width - ((clientX - original.x) * resizeRatio) / scale;\n if (lockAspectRatio) {\n newHeight = (newWidth - extraWidth) / this.ratio + extraHeight;\n }\n }\n if (hasDirection('bottom', direction)) {\n newHeight = original.height + ((clientY - original.y) * resizeRatio) / scale;\n if (lockAspectRatio) {\n newWidth = (newHeight - extraHeight) * this.ratio + extraWidth;\n }\n }\n if (hasDirection('top', direction)) {\n newHeight = original.height - ((clientY - original.y) * resizeRatio) / scale;\n if (lockAspectRatio) {\n newWidth = (newHeight - extraHeight) * this.ratio + extraWidth;\n }\n }\n return { newWidth: newWidth, newHeight: newHeight };\n };\n Resizable.prototype.calculateNewSizeFromAspectRatio = function (newWidth, newHeight, max, min) {\n var _a = this.props, lockAspectRatio = _a.lockAspectRatio, lockAspectRatioExtraHeight = _a.lockAspectRatioExtraHeight, lockAspectRatioExtraWidth = _a.lockAspectRatioExtraWidth;\n var computedMinWidth = typeof min.width === 'undefined' ? 10 : min.width;\n var computedMaxWidth = typeof max.width === 'undefined' || max.width < 0 ? newWidth : max.width;\n var computedMinHeight = typeof min.height === 'undefined' ? 10 : min.height;\n var computedMaxHeight = typeof max.height === 'undefined' || max.height < 0 ? newHeight : max.height;\n var extraHeight = lockAspectRatioExtraHeight || 0;\n var extraWidth = lockAspectRatioExtraWidth || 0;\n if (lockAspectRatio) {\n var extraMinWidth = (computedMinHeight - extraHeight) * this.ratio + extraWidth;\n var extraMaxWidth = (computedMaxHeight - extraHeight) * this.ratio + extraWidth;\n var extraMinHeight = (computedMinWidth - extraWidth) / this.ratio + extraHeight;\n var extraMaxHeight = (computedMaxWidth - extraWidth) / this.ratio + extraHeight;\n var lockedMinWidth = Math.max(computedMinWidth, extraMinWidth);\n var lockedMaxWidth = Math.min(computedMaxWidth, extraMaxWidth);\n var lockedMinHeight = Math.max(computedMinHeight, extraMinHeight);\n var lockedMaxHeight = Math.min(computedMaxHeight, extraMaxHeight);\n newWidth = clamp(newWidth, lockedMinWidth, lockedMaxWidth);\n newHeight = clamp(newHeight, lockedMinHeight, lockedMaxHeight);\n }\n else {\n newWidth = clamp(newWidth, computedMinWidth, computedMaxWidth);\n newHeight = clamp(newHeight, computedMinHeight, computedMaxHeight);\n }\n return { newWidth: newWidth, newHeight: newHeight };\n };\n Resizable.prototype.setBoundingClientRect = function () {\n // For parent boundary\n if (this.props.bounds === 'parent') {\n var parent_2 = this.parentNode;\n if (parent_2) {\n var parentRect = parent_2.getBoundingClientRect();\n this.parentLeft = parentRect.left;\n this.parentTop = parentRect.top;\n }\n }\n // For target(html element) boundary\n if (this.props.bounds && typeof this.props.bounds !== 'string') {\n var targetRect = this.props.bounds.getBoundingClientRect();\n this.targetLeft = targetRect.left;\n this.targetTop = targetRect.top;\n }\n // For boundary\n if (this.resizable) {\n var _a = this.resizable.getBoundingClientRect(), left = _a.left, top_1 = _a.top, right = _a.right, bottom = _a.bottom;\n this.resizableLeft = left;\n this.resizableRight = right;\n this.resizableTop = top_1;\n this.resizableBottom = bottom;\n }\n };\n Resizable.prototype.onResizeStart = function (event, direction) {\n if (!this.resizable || !this.window) {\n return;\n }\n var clientX = 0;\n var clientY = 0;\n if (event.nativeEvent && isMouseEvent(event.nativeEvent)) {\n clientX = event.nativeEvent.clientX;\n clientY = event.nativeEvent.clientY;\n }\n else if (event.nativeEvent && isTouchEvent(event.nativeEvent)) {\n clientX = event.nativeEvent.touches[0].clientX;\n clientY = event.nativeEvent.touches[0].clientY;\n }\n if (this.props.onResizeStart) {\n if (this.resizable) {\n var startResize = this.props.onResizeStart(event, direction, this.resizable);\n if (startResize === false) {\n return;\n }\n }\n }\n // Fix #168\n if (this.props.size) {\n if (typeof this.props.size.height !== 'undefined' && this.props.size.height !== this.state.height) {\n this.setState({ height: this.props.size.height });\n }\n if (typeof this.props.size.width !== 'undefined' && this.props.size.width !== this.state.width) {\n this.setState({ width: this.props.size.width });\n }\n }\n // For lockAspectRatio case\n this.ratio =\n typeof this.props.lockAspectRatio === 'number' ? this.props.lockAspectRatio : this.size.width / this.size.height;\n var flexBasis;\n var computedStyle = this.window.getComputedStyle(this.resizable);\n if (computedStyle.flexBasis !== 'auto') {\n var parent_3 = this.parentNode;\n if (parent_3) {\n var dir = this.window.getComputedStyle(parent_3).flexDirection;\n this.flexDir = dir.startsWith('row') ? 'row' : 'column';\n flexBasis = computedStyle.flexBasis;\n }\n }\n // For boundary\n this.setBoundingClientRect();\n this.bindEvents();\n var state = {\n original: {\n x: clientX,\n y: clientY,\n width: this.size.width,\n height: this.size.height,\n },\n isResizing: true,\n backgroundStyle: __assign(__assign({}, this.state.backgroundStyle), { cursor: this.window.getComputedStyle(event.target).cursor || 'auto' }),\n direction: direction,\n flexBasis: flexBasis,\n };\n this.setState(state);\n };\n Resizable.prototype.onMouseMove = function (event) {\n var _this = this;\n if (!this.state.isResizing || !this.resizable || !this.window) {\n return;\n }\n if (this.window.TouchEvent && isTouchEvent(event)) {\n try {\n event.preventDefault();\n event.stopPropagation();\n }\n catch (e) {\n // Ignore on fail\n }\n }\n var _a = this.props, maxWidth = _a.maxWidth, maxHeight = _a.maxHeight, minWidth = _a.minWidth, minHeight = _a.minHeight;\n var clientX = isTouchEvent(event) ? event.touches[0].clientX : event.clientX;\n var clientY = isTouchEvent(event) ? event.touches[0].clientY : event.clientY;\n var _b = this.state, direction = _b.direction, original = _b.original, width = _b.width, height = _b.height;\n var parentSize = this.getParentSize();\n var max = calculateNewMax(parentSize, this.window.innerWidth, this.window.innerHeight, maxWidth, maxHeight, minWidth, minHeight);\n maxWidth = max.maxWidth;\n maxHeight = max.maxHeight;\n minWidth = max.minWidth;\n minHeight = max.minHeight;\n // Calculate new size\n var _c = this.calculateNewSizeFromDirection(clientX, clientY), newHeight = _c.newHeight, newWidth = _c.newWidth;\n // Calculate max size from boundary settings\n var boundaryMax = this.calculateNewMaxFromBoundary(maxWidth, maxHeight);\n if (this.props.snap && this.props.snap.x) {\n newWidth = findClosestSnap(newWidth, this.props.snap.x, this.props.snapGap);\n }\n if (this.props.snap && this.props.snap.y) {\n newHeight = findClosestSnap(newHeight, this.props.snap.y, this.props.snapGap);\n }\n // Calculate new size from aspect ratio\n var newSize = this.calculateNewSizeFromAspectRatio(newWidth, newHeight, { width: boundaryMax.maxWidth, height: boundaryMax.maxHeight }, { width: minWidth, height: minHeight });\n newWidth = newSize.newWidth;\n newHeight = newSize.newHeight;\n if (this.props.grid) {\n var newGridWidth = snap(newWidth, this.props.grid[0]);\n var newGridHeight = snap(newHeight, this.props.grid[1]);\n var gap = this.props.snapGap || 0;\n newWidth = gap === 0 || Math.abs(newGridWidth - newWidth) <= gap ? newGridWidth : newWidth;\n newHeight = gap === 0 || Math.abs(newGridHeight - newHeight) <= gap ? newGridHeight : newHeight;\n }\n var delta = {\n width: newWidth - original.width,\n height: newHeight - original.height,\n };\n if (width && typeof width === 'string') {\n if (width.endsWith('%')) {\n var percent = (newWidth / parentSize.width) * 100;\n newWidth = percent + \"%\";\n }\n else if (width.endsWith('vw')) {\n var vw = (newWidth / this.window.innerWidth) * 100;\n newWidth = vw + \"vw\";\n }\n else if (width.endsWith('vh')) {\n var vh = (newWidth / this.window.innerHeight) * 100;\n newWidth = vh + \"vh\";\n }\n }\n if (height && typeof height === 'string') {\n if (height.endsWith('%')) {\n var percent = (newHeight / parentSize.height) * 100;\n newHeight = percent + \"%\";\n }\n else if (height.endsWith('vw')) {\n var vw = (newHeight / this.window.innerWidth) * 100;\n newHeight = vw + \"vw\";\n }\n else if (height.endsWith('vh')) {\n var vh = (newHeight / this.window.innerHeight) * 100;\n newHeight = vh + \"vh\";\n }\n }\n var newState = {\n width: this.createSizeForCssProperty(newWidth, 'width'),\n height: this.createSizeForCssProperty(newHeight, 'height'),\n };\n if (this.flexDir === 'row') {\n newState.flexBasis = newState.width;\n }\n else if (this.flexDir === 'column') {\n newState.flexBasis = newState.height;\n }\n // For v18, update state sync\n flushSync(function () {\n _this.setState(newState);\n });\n if (this.props.onResize) {\n this.props.onResize(event, direction, this.resizable, delta);\n }\n };\n Resizable.prototype.onMouseUp = function (event) {\n var _a = this.state, isResizing = _a.isResizing, direction = _a.direction, original = _a.original;\n if (!isResizing || !this.resizable) {\n return;\n }\n var delta = {\n width: this.size.width - original.width,\n height: this.size.height - original.height,\n };\n if (this.props.onResizeStop) {\n this.props.onResizeStop(event, direction, this.resizable, delta);\n }\n if (this.props.size) {\n this.setState(this.props.size);\n }\n this.unbindEvents();\n this.setState({\n isResizing: false,\n backgroundStyle: __assign(__assign({}, this.state.backgroundStyle), { cursor: 'auto' }),\n });\n };\n Resizable.prototype.updateSize = function (size) {\n this.setState({ width: size.width, height: size.height });\n };\n Resizable.prototype.renderResizer = function () {\n var _this = this;\n var _a = this.props, enable = _a.enable, handleStyles = _a.handleStyles, handleClasses = _a.handleClasses, handleWrapperStyle = _a.handleWrapperStyle, handleWrapperClass = _a.handleWrapperClass, handleComponent = _a.handleComponent;\n if (!enable) {\n return null;\n }\n var resizers = Object.keys(enable).map(function (dir) {\n if (enable[dir] !== false) {\n return (React.createElement(Resizer, { key: dir, direction: dir, onResizeStart: _this.onResizeStart, replaceStyles: handleStyles && handleStyles[dir], className: handleClasses && handleClasses[dir] }, handleComponent && handleComponent[dir] ? handleComponent[dir] : null));\n }\n return null;\n });\n // #93 Wrap the resize box in span (will not break 100% width/height)\n return (React.createElement(\"div\", { className: handleWrapperClass, style: handleWrapperStyle }, resizers));\n };\n Resizable.prototype.render = function () {\n var _this = this;\n var extendsProps = Object.keys(this.props).reduce(function (acc, key) {\n if (definedProps.indexOf(key) !== -1) {\n return acc;\n }\n acc[key] = _this.props[key];\n return acc;\n }, {});\n var style = __assign(__assign(__assign({ position: 'relative', userSelect: this.state.isResizing ? 'none' : 'auto' }, this.props.style), this.sizeStyle), { maxWidth: this.props.maxWidth, maxHeight: this.props.maxHeight, minWidth: this.props.minWidth, minHeight: this.props.minHeight, boxSizing: 'border-box', flexShrink: 0 });\n if (this.state.flexBasis) {\n style.flexBasis = this.state.flexBasis;\n }\n var Wrapper = this.props.as || 'div';\n return (React.createElement(Wrapper, __assign({ ref: this.ref, style: style, className: this.props.className }, extendsProps),\n this.state.isResizing && React.createElement(\"div\", { style: this.state.backgroundStyle }),\n this.props.children,\n this.renderResizer()));\n };\n Resizable.defaultProps = {\n as: 'div',\n onResizeStart: function () { },\n onResize: function () { },\n onResizeStop: function () { },\n enable: {\n top: true,\n right: true,\n bottom: true,\n left: true,\n topRight: true,\n bottomRight: true,\n bottomLeft: true,\n topLeft: true,\n },\n style: {},\n grid: [1, 1],\n lockAspectRatio: false,\n lockAspectRatioExtraWidth: 0,\n lockAspectRatioExtraHeight: 0,\n scale: 1,\n resizeRatio: 1,\n snapGap: 0,\n };\n return Resizable;\n}(React.PureComponent));\nexport { Resizable };\n","import { Node, createInlineMarkdownSpec, mergeAttributes } from \"@tiptap/core\";\nimport { Node as Node$1 } from \"@tiptap/pm/model\";\nimport { Suggestion } from \"@tiptap/suggestion\";\nimport { PluginKey } from \"@tiptap/pm/state\";\n//#region src/utils/get-default-suggestion-attributes.ts\n/**\n* Returns the suggestion options for a trigger of the Mention extension. These\n* options are used to create a `Suggestion` ProseMirror plugin. Each plugin lets\n* you define a different trigger that opens the Mention menu. For example,\n* you can define a `@` trigger to mention users and a `#` trigger to mention\n* tags.\n*\n* @param param0 The configured options for the suggestion\n* @returns\n*/\nfunction getSuggestionOptions({ editor: tiptapEditor, overrideSuggestionOptions, extensionName, char = \"@\" }) {\n\treturn {\n\t\teditor: tiptapEditor,\n\t\tchar,\n\t\tpluginKey: new PluginKey(),\n\t\tcommand: ({ editor, range, props }) => {\n\t\t\tvar _nodeAfter$text, _editor$view$dom$owne;\n\t\t\tconst nodeAfter = editor.view.state.selection.$to.nodeAfter;\n\t\t\tif (nodeAfter === null || nodeAfter === void 0 || (_nodeAfter$text = nodeAfter.text) === null || _nodeAfter$text === void 0 ? void 0 : _nodeAfter$text.startsWith(\" \")) range.to += 1;\n\t\t\teditor.chain().focus().insertContentAt(range, [{\n\t\t\t\ttype: extensionName,\n\t\t\t\tattrs: {\n\t\t\t\t\t...props,\n\t\t\t\t\tmentionSuggestionChar: char\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: \" \"\n\t\t\t}]).run();\n\t\t\t(_editor$view$dom$owne = editor.view.dom.ownerDocument.defaultView) === null || _editor$view$dom$owne === void 0 || (_editor$view$dom$owne = _editor$view$dom$owne.getSelection()) === null || _editor$view$dom$owne === void 0 || _editor$view$dom$owne.collapseToEnd();\n\t\t},\n\t\tallow: ({ state, range }) => {\n\t\t\tconst $from = state.doc.resolve(range.from);\n\t\t\tconst type = state.schema.nodes[extensionName];\n\t\t\treturn !!$from.parent.type.contentMatch.matchType(type);\n\t\t},\n\t\t...overrideSuggestionOptions\n\t};\n}\n//#endregion\n//#region src/mention.ts\n/**\n* Returns the suggestions for the mention extension.\n*\n* @param options The extension options\n* @returns the suggestions\n*/\nfunction getSuggestions(options) {\n\treturn (options.options.suggestions.length ? options.options.suggestions : [options.options.suggestion]).map((suggestion) => getSuggestionOptions({\n\t\teditor: options.editor,\n\t\toverrideSuggestionOptions: suggestion,\n\t\textensionName: options.name,\n\t\tchar: suggestion.char\n\t}));\n}\n/**\n* Returns the suggestion options of the mention that has a given character trigger. If not\n* found, it returns the first suggestion.\n*\n* @param options The extension options\n* @param char The character that triggers the mention\n* @returns The suggestion options\n*/\nfunction getSuggestionFromChar(options, char) {\n\tconst suggestions = getSuggestions(options);\n\tconst suggestion = suggestions.find((s) => s.char === char);\n\tif (suggestion) return suggestion;\n\tif (suggestions.length) return suggestions[0];\n\treturn null;\n}\n/**\n* This extension allows you to insert mentions into the editor.\n* @see https://www.tiptap.dev/api/extensions/mention\n*/\nconst Mention = Node.create({\n\tname: \"mention\",\n\tpriority: 101,\n\taddOptions() {\n\t\treturn {\n\t\t\tHTMLAttributes: {},\n\t\t\trenderText({ node, suggestion }) {\n\t\t\t\tvar _suggestion$char, _node$attrs$label;\n\t\t\t\treturn `${(_suggestion$char = suggestion === null || suggestion === void 0 ? void 0 : suggestion.char) !== null && _suggestion$char !== void 0 ? _suggestion$char : \"@\"}${(_node$attrs$label = node.attrs.label) !== null && _node$attrs$label !== void 0 ? _node$attrs$label : node.attrs.id}`;\n\t\t\t},\n\t\t\tdeleteTriggerWithBackspace: false,\n\t\t\trenderHTML({ options, node, suggestion }) {\n\t\t\t\tvar _suggestion$char2, _node$attrs$label2;\n\t\t\t\treturn [\n\t\t\t\t\t\"span\",\n\t\t\t\t\tmergeAttributes(this.HTMLAttributes, options.HTMLAttributes),\n\t\t\t\t\t`${(_suggestion$char2 = suggestion === null || suggestion === void 0 ? void 0 : suggestion.char) !== null && _suggestion$char2 !== void 0 ? _suggestion$char2 : \"@\"}${(_node$attrs$label2 = node.attrs.label) !== null && _node$attrs$label2 !== void 0 ? _node$attrs$label2 : node.attrs.id}`\n\t\t\t\t];\n\t\t\t},\n\t\t\tsuggestions: [],\n\t\t\tsuggestion: {}\n\t\t};\n\t},\n\tgroup: \"inline\",\n\tinline: true,\n\tselectable: false,\n\tatom: true,\n\taddAttributes() {\n\t\treturn {\n\t\t\tid: {\n\t\t\t\tdefault: null,\n\t\t\t\tparseHTML: (element) => element.getAttribute(\"data-id\"),\n\t\t\t\trenderHTML: (attributes) => {\n\t\t\t\t\tif (!attributes.id) return {};\n\t\t\t\t\treturn { \"data-id\": attributes.id };\n\t\t\t\t}\n\t\t\t},\n\t\t\tlabel: {\n\t\t\t\tdefault: null,\n\t\t\t\tparseHTML: (element) => element.getAttribute(\"data-label\"),\n\t\t\t\trenderHTML: (attributes) => {\n\t\t\t\t\tif (!attributes.label) return {};\n\t\t\t\t\treturn { \"data-label\": attributes.label };\n\t\t\t\t}\n\t\t\t},\n\t\t\tmentionSuggestionChar: {\n\t\t\t\tdefault: \"@\",\n\t\t\t\tparseHTML: (element) => element.getAttribute(\"data-mention-suggestion-char\"),\n\t\t\t\trenderHTML: (attributes) => {\n\t\t\t\t\treturn { \"data-mention-suggestion-char\": attributes.mentionSuggestionChar };\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t},\n\tparseHTML() {\n\t\treturn [{ tag: `span[data-type=\"${this.name}\"]` }];\n\t},\n\trenderHTML({ node, HTMLAttributes }) {\n\t\tconst suggestion = getSuggestionFromChar(this, node.attrs.mentionSuggestionChar);\n\t\tif (this.options.renderLabel !== void 0) {\n\t\t\tconsole.warn(\"renderLabel is deprecated use renderText and renderHTML instead\");\n\t\t\treturn [\n\t\t\t\t\"span\",\n\t\t\t\tmergeAttributes({ \"data-type\": this.name }, this.options.HTMLAttributes, HTMLAttributes),\n\t\t\t\tthis.options.renderLabel({\n\t\t\t\t\toptions: this.options,\n\t\t\t\t\tnode,\n\t\t\t\t\tsuggestion\n\t\t\t\t})\n\t\t\t];\n\t\t}\n\t\tconst mergedOptions = { ...this.options };\n\t\tmergedOptions.HTMLAttributes = mergeAttributes({ \"data-type\": this.name }, this.options.HTMLAttributes, HTMLAttributes);\n\t\tconst html = this.options.renderHTML({\n\t\t\toptions: mergedOptions,\n\t\t\tnode,\n\t\t\tsuggestion\n\t\t});\n\t\tif (typeof html === \"string\") return [\n\t\t\t\"span\",\n\t\t\tmergeAttributes({ \"data-type\": this.name }, this.options.HTMLAttributes, HTMLAttributes),\n\t\t\thtml\n\t\t];\n\t\treturn html;\n\t},\n\t...createInlineMarkdownSpec({\n\t\tnodeName: \"mention\",\n\t\tname: \"@\",\n\t\tselfClosing: true,\n\t\tallowedAttributes: [\n\t\t\t\"id\",\n\t\t\t\"label\",\n\t\t\t{\n\t\t\t\tname: \"mentionSuggestionChar\",\n\t\t\t\tskipIfDefault: \"@\"\n\t\t\t}\n\t\t],\n\t\tparseAttributes: (attrString) => {\n\t\t\tconst attrs = {};\n\t\t\tconst regex = /(?:^|\\s)(\\w+)=(?:\"([^\"]*)\"|'([^']*)')/g;\n\t\t\tlet match = regex.exec(attrString);\n\t\t\twhile (match !== null) {\n\t\t\t\tconst [, key, doubleQuoted, singleQuoted] = match;\n\t\t\t\tattrs[key === \"char\" ? \"mentionSuggestionChar\" : key] = doubleQuoted !== null && doubleQuoted !== void 0 ? doubleQuoted : singleQuoted;\n\t\t\t\tmatch = regex.exec(attrString);\n\t\t\t}\n\t\t\treturn attrs;\n\t\t},\n\t\tserializeAttributes: (attrs) => {\n\t\t\treturn Object.entries(attrs).filter(([, value]) => value !== void 0 && value !== null).map(([key, value]) => {\n\t\t\t\treturn `${key === \"mentionSuggestionChar\" ? \"char\" : key}=\"${value}\"`;\n\t\t\t}).join(\" \");\n\t\t}\n\t}),\n\trenderText({ node }) {\n\t\tconst args = {\n\t\t\toptions: this.options,\n\t\t\tnode,\n\t\t\tsuggestion: getSuggestionFromChar(this, node.attrs.mentionSuggestionChar)\n\t\t};\n\t\tif (this.options.renderLabel !== void 0) {\n\t\t\tconsole.warn(\"renderLabel is deprecated use renderText and renderHTML instead\");\n\t\t\treturn this.options.renderLabel(args);\n\t\t}\n\t\treturn this.options.renderText(args);\n\t},\n\taddKeyboardShortcuts() {\n\t\treturn { Backspace: () => this.editor.commands.command(({ tr, state }) => {\n\t\t\tlet isMention = false;\n\t\t\tconst { selection } = state;\n\t\t\tconst { empty, anchor } = selection;\n\t\t\tif (!empty) return false;\n\t\t\tlet mentionNode = new Node$1();\n\t\t\tlet mentionPos = 0;\n\t\t\tstate.doc.nodesBetween(anchor - 1, anchor, (node, pos) => {\n\t\t\t\tif (node.type.name === this.name) {\n\t\t\t\t\tisMention = true;\n\t\t\t\t\tmentionNode = node;\n\t\t\t\t\tmentionPos = pos;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (isMention) tr.insertText(this.options.deleteTriggerWithBackspace ? \"\" : mentionNode.attrs.mentionSuggestionChar, mentionPos, mentionPos + mentionNode.nodeSize);\n\t\t\treturn isMention;\n\t\t}) };\n\t},\n\taddProseMirrorPlugins() {\n\t\treturn getSuggestions(this).map(Suggestion);\n\t}\n});\n//#endregion\n//#region src/index.ts\nvar src_default = Mention;\n//#endregion\nexport { Mention, src_default as default };\n\n//# sourceMappingURL=index.js.map","import { MARGIN_HEIGHT } from \"./constants\";\n\nexport const scrollHandler = ({ wrapperRef, index }) => {\n if (!wrapperRef.current || index >= wrapperRef.current.children.length) {\n return;\n }\n\n const parentItem = wrapperRef.current;\n const selectedItem = parentItem.children[index];\n const itemHeight = selectedItem.clientHeight + MARGIN_HEIGHT;\n\n let scrollPosition = parentItem.scrollTop;\n if (\n selectedItem.offsetTop + itemHeight >\n scrollPosition + parentItem.clientHeight\n ) {\n scrollPosition =\n selectedItem.offsetTop - parentItem.clientHeight + itemHeight;\n } else if (scrollPosition > selectedItem.offsetTop) {\n scrollPosition = selectedItem.offsetTop - MARGIN_HEIGHT;\n }\n\n wrapperRef.current.scrollTop = scrollPosition;\n};\n","import { isEmpty, isNil, pluck, prop } from \"ramda\";\n\nimport { DEFAULT_SEARCH_KEYS, FUZZY_SEARCH_DEFAULT_LIMIT } from \"./constants\";\n\nconst calculateScore = (input, target) => {\n const inputLower = input.toLowerCase();\n const targetLower = target.toLowerCase();\n\n const substringIndex = targetLower.indexOf(inputLower);\n if (substringIndex !== -1) {\n return 1.0 - (substringIndex / targetLower.length) * 0.1;\n }\n\n let inputIndex = 0;\n let targetIndex = 0;\n let firstMatchIndex = -1;\n let consecutiveMatches = 0;\n let maxConsecutive = 0;\n\n while (inputIndex < inputLower.length && targetIndex < targetLower.length) {\n if (inputLower[inputIndex] === targetLower[targetIndex]) {\n if (firstMatchIndex === -1) {\n firstMatchIndex = targetIndex;\n }\n consecutiveMatches++;\n inputIndex++;\n } else {\n maxConsecutive = Math.max(maxConsecutive, consecutiveMatches);\n consecutiveMatches = 0;\n }\n targetIndex++;\n }\n maxConsecutive = Math.max(maxConsecutive, consecutiveMatches);\n\n if (inputIndex < inputLower.length) {\n return 0;\n }\n\n const positionScore = 1.0 - firstMatchIndex / targetLower.length;\n const consecutiveBonus = maxConsecutive / inputLower.length;\n const lengthRatio = inputLower.length / targetLower.length;\n\n const score =\n positionScore * 0.6 + consecutiveBonus * 0.2 + lengthRatio * 0.2;\n\n return Math.min(score, 0.89);\n};\n\nexport const fuzzySearch = (\n items,\n query,\n options = { limit: FUZZY_SEARCH_DEFAULT_LIMIT }\n) => {\n const { limit = FUZZY_SEARCH_DEFAULT_LIMIT, keys = DEFAULT_SEARCH_KEYS } =\n options;\n\n if (!query || typeof query !== \"string\" || !items || isEmpty(items)) {\n return items ? items.slice(0, limit) : [];\n }\n\n const trimmedQuery = query.trim();\n if (!trimmedQuery) {\n return items ? items.slice(0, limit) : [];\n }\n\n const fieldAccessors = keys.map(key => ({\n getValue: typeof key === \"string\" ? prop(key) : prop(key.name),\n weight: typeof key === \"string\" ? 1 : key.weight || 1,\n }));\n\n const results = items.reduce((acc, item) => {\n const bestScore = fieldAccessors.reduce((maxScore, accessor) => {\n const fieldValue = accessor.getValue(item);\n if (isNil(fieldValue)) return maxScore;\n\n const fieldString = String(fieldValue);\n const score = calculateScore(trimmedQuery, fieldString);\n if (score <= 0) return maxScore;\n\n const weightedScore = score * accessor.weight;\n\n return weightedScore > maxScore ? weightedScore : maxScore;\n }, 0);\n\n if (bestScore > 0) {\n acc.push({ item, score: bestScore });\n }\n\n return acc;\n }, []);\n\n results.sort((a, b) => {\n if (Math.abs(a.score - b.score) < 0.001) {\n const aTitle = a.item.title || a.item.name || \"\";\n const bTitle = b.item.title || b.item.name || \"\";\n\n return aTitle.localeCompare(bTitle);\n }\n\n return b.score - a.score;\n });\n\n return pluck(\"item\", results.slice(0, limit));\n};\n"],"names":["NEETO_KB_ENDPOINT","globalProps","kbUrl","NEETO_KB_ARTICLES_URL","MODE","MODAL","SELECT","MODAL_BOTTOM_MARGIN","MODAL_LEFT_OFFSET","MODAL_TOP_OFFSET","MODAL_TRANSFORM_Y","MODAL_TRANSFORM_X","buildArticleFullUrl","slug","concat","createArticleOptions","articles","map","article","label","decodeHtmlEntities","title","value","id","data","_objectSpread","type","extractKbArticleIds","editor","articleIds","doc","state","descendants","node","marks","forEach","mark","name","attrs","push","_toConsumableArray","Set","QUERY_KEYS","KB_ARTICLES","apiConfig","baseURL","headers","_globalProps$organiza","organization","apiKey","transformResponseCase","transformRequestCase","fetchArticles","params","axios","get","neetoKbApi","useFetchKbArticles","_ref","arguments","length","undefined","_ref$searchTerm","searchTerm","_ref$reactQueryOption","reactQueryOptions","queryParams","search_term","useQuery","queryKey","queryFn","_queryFn","_asyncToGenerator","_regeneratorRuntime","_callee","_response$data","response","wrap","_callee$","_context","prev","next","sent","abrupt","stop","apply","useDeletedArticles","_useState","useState","_useState2","_slicedToArray","deletedArticleIds","setDeletedArticleIds","_useFetchKbArticles","enabled","_useFetchKbArticles$d","allArticles","isCheckingDeleted","isLoading","checkAllArticles","articleIdsInEditor","isEmpty","existingArticleIds","pluck","deletedIds","filter","has","useEffect","isArticleDeleted","bind","useEditorWarnings","initialValue","isProduction","process","env","RAILS_ENV","includes","isNotPresent","console","warn","src_default","isObject","every","create","equalityTrait.EqualityTraitSymbol","object.size","object.hasProperty","oneOf","math.floor","array.unfold","map.create","string.fromCamelCase","conditions.undefinedToNull","storage.varStorage","f.isOneOf","math.max","binary.BITS7","binary.BIT8","math.isNegativeZero","binary.BITS6","binary.BIT7","string.utf8TextEncoder","string.encodeUtf8","math.min","number.isInteger","math.abs","binary.BITS31","array.isArray","string.fromCharCode","env.isBrowser","encoding.encode","encoding.writeAny","string.repeat","equalityTraits.EqualityTraitSymbol","equalityTraits.equals","arr.isArray","arr.every","arr.some","obj.isObject","obj.every","fun.equalityDeep","error.methodUnimplemented","error.unexpectedCase","obj.hasProperty","env.production","error.create","prng.int53","number.MIN_SAFE_INTEGER","number.MAX_SAFE_INTEGER","prng.word","prng.bool","prng.oneOf","prng.int32","$.$custom","binary.BIT30","buf.toBase64","sha256.digest","buf.encodeAny","set.create","random.oneOf","eventloop.timeout","environment.isBrowser","dom.doc","PModel.Slice","PModel.Fragment","object.keys","object.every","map.setIfUndefined","undo","redo","Item","Text","Node","inputRegex","pasteRegex","handleBackspace","jsx","starInputRegex","starPasteRegex","underscoreInputRegex","underscorePasteRegex","guard","handler","props","selection","$anchor","depth","guarded","shortcuts","key","_defineProperty","safeListKeymap","ListKeymap","extend","addOptions","_this$parent","parent","call","listTypes","LIST_KEYMAP_LIST_TYPES","addKeyboardShortcuts","_this$parent2","_this$parent3","ensureMarks","splittableMarks","storedMarks","$to","parentOffset","$from","tr","safeSplitBlock","Extension","priority","addCommands","splitBlock","_ref$keepMarks","keepMarks","_ref2","dispatch","newAttributes","getSplittedAttributes","extensionManager","attributes","NodeSelection","isBlock","canSplit","pos","split","scrollIntoView","atEnd","content","size","deflt","defaultBlockAt","contentMatchAt","indexAfter","types","willDeleteSelection","TextSelection","empty","deletedTr","EditorState","deleteSelection","splitDoc","splitPos","mapping","can","mapFrom","steps","slice","first","before","$first","resolve","canReplaceWith","index","setNodeMarkup","highlight","__extends","this","__assign","Node$1","scrollHandler","wrapperRef","current","children","parentItem","selectedItem","itemHeight","clientHeight","MARGIN_HEIGHT","scrollPosition","scrollTop","offsetTop","calculateScore","input","target","inputLower","toLowerCase","targetLower","substringIndex","indexOf","inputIndex","targetIndex","firstMatchIndex","consecutiveMatches","maxConsecutive","Math","max","positionScore","consecutiveBonus","lengthRatio","score","min","fuzzySearch","items","query","options","limit","FUZZY_SEARCH_DEFAULT_LIMIT","_options$limit","_options$keys","keys","DEFAULT_SEARCH_KEYS","trimmedQuery","trim","fieldAccessors","getValue","prop","weight","results","reduce","acc","item","bestScore","maxScore","accessor","fieldValue","isNil","fieldString","String","weightedScore","sort","a","b","abs","aTitle","bTitle","localeCompare"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEO,IAAMA,iBAAiB,GAAGC,WAAW,aAAXA,WAAW,KAAA,MAAA,GAAA,MAAA,GAAXA,WAAW,CAAEC,KAAK;AAC5C,IAAMC,qBAAqB,GAAG,kBAAkB;AAGhD,IAAMC,IAAI,GAAG;AAAEC,EAAAA,KAAK,EAAE,OAAO;AAAEC,EAAAA,MAAM,EAAE;AAAS;AAEhD,IAAMC,mBAAmB,GAAG;AAC5B,IAAMC,iBAAiB,GAAG;AAC1B,IAAMC,gBAAgB,GAAG;AACzB,IAAMC,iBAAiB,GAAG;AAC1B,IAAMC,iBAAiB,GAAG;;;;ICRpBC,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAGC,IAAI,EAAA;EAAA,OACrCA,IAAI,GAAA,EAAA,CAAAC,MAAA,CAAMd,iBAAiB,gBAAAc,MAAA,CAAaD,IAAI,CAAA,GAAK,IAAI;AAAA;IAE1CE,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAGC,QAAQ,EAAA;AAAA,EAAA,OAC1CA,QAAQ,CAACC,GAAG,CAAC,UAAAC,OAAO,EAAA;IAAA,OAAK;AACvBC,MAAAA,KAAK,EAAEC,kBAAkB,CAACF,OAAO,CAACG,KAAK,CAAC;MACxCC,KAAK,EAAEJ,OAAO,CAACK,EAAE;AACjBC,MAAAA,IAAI,EAAAC,eAAA,CAAA;AAAIC,QAAAA,IAAI,EAAE;AAAS,OAAA,EAAKR,OAAO;KACpC;AAAA,EAAA,CAAC,CAAC;AAAA;AAEE,IAAMS,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAGC,MAAM,EAAI;AAC3C,EAAA,IAAI,CAACA,MAAM,EAAE,OAAO,EAAE;EAEtB,IAAMC,UAAU,GAAG,EAAE;AACrB,EAAA,IAAQC,GAAG,GAAKF,MAAM,CAACG,KAAK,CAApBD,GAAG;AAEXA,EAAAA,GAAG,CAACE,WAAW,CAAC,UAAAC,IAAI,EAAI;IACtB,IAAIA,IAAI,CAACC,KAAK,EAAE;AACdD,MAAAA,IAAI,CAACC,KAAK,CAACC,OAAO,CAAC,UAAAC,IAAI,EAAI;QACzB,IACEA,IAAI,CAACV,IAAI,CAACW,IAAI,KAAK,MAAM,IACzBD,IAAI,CAACE,KAAK,CAAC,uBAAuB,CAAC,KAAK,MAAM,IAC9CF,IAAI,CAACE,KAAK,CAAC,iBAAiB,CAAC,EAC7B;UACAT,UAAU,CAACU,IAAI,CAACH,IAAI,CAACE,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAChD,QAAA;AACF,MAAA,CAAC,CAAC;AACJ,IAAA;AACF,EAAA,CAAC,CAAC;AAEF,EAAA,OAAAE,kBAAA,CAAW,IAAIC,GAAG,CAACZ,UAAU,CAAC,CAAA;AAChC,CAAC;;ACnCM,IAAMa,UAAU,GAAG;AAAEC,EAAAA,WAAW,EAAE;AAAc,CAAC;;;;;ACQxD,IAAMC,SAAS,GAAG;AAChBC,EAAAA,OAAO,EAAE7C,iBAAiB;AAC1B8C,EAAAA,OAAO,EAAE;AAAE,IAAA,iBAAiB,EAAE7C,WAAW,KAAA,IAAA,IAAXA,WAAW,gBAAA8C,qBAAA,GAAX9C,WAAW,CAAE+C,YAAY,MAAA,IAAA,IAAAD,qBAAA,KAAA,MAAA,GAAA,MAAA,GAAzBA,qBAAA,CAA2BE;GAAQ;AACjEC,EAAAA,qBAAqB,EAAE,KAAK;AAC5BC,EAAAA,oBAAoB,EAAE;AACxB,CAAC;AAED,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,CAAGC,MAAM,EAAA;EAAA,OAC1BC,KAAK,CAACC,GAAG,CAACpD,qBAAqB,EAAAsB,eAAA,CAAAA,eAAA,CAAA,EAAA,EAAOmB,SAAS,CAAA,EAAA,EAAA,EAAA;AAAES,IAAAA,MAAM,EAANA;AAAM,GAAA,CAAE,CAAC;AAAA,CAAA;AAE5D,IAAMG,UAAU,GAAG;AAAEJ,EAAAA,aAAa,EAAbA;AAAc,CAAC;;;;ACbpC,IAAMK,kBAAkB,GAAG,SAArBA,kBAAkBA,GAGb;AAAA,EAAA,IAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAP,EAAE;IAAAG,eAAA,GAAAJ,IAAA,CAFJK,UAAU;AAAVA,IAAAA,UAAU,GAAAD,eAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,eAAA;IAAAE,qBAAA,GAAAN,IAAA,CACfO,iBAAiB;AAAjBA,IAAAA,iBAAiB,GAAAD,qBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,qBAAA;EAEtB,IAAME,WAAW,GAAGH,UAAU,GAAG;AAAEI,IAAAA,WAAW,EAAEJ;GAAY,GAAG,EAAE;EAEjE,OAAOK,QAAQ,CAAA3C,eAAA,CAAA;AACb4C,IAAAA,QAAQ,EAAE,CAAC3B,UAAU,CAACC,WAAW,EAAEuB,WAAW,CAAC;IAC/CI,OAAO,EAAA,YAAA;MAAA,IAAAC,QAAA,GAAAC,iBAAA,cAAAC,mBAAA,CAAArC,IAAA,CAAE,SAAAsC,OAAAA,GAAA;AAAA,QAAA,IAAAC,cAAA;AAAA,QAAA,IAAAC,QAAA;AAAA,QAAA,OAAAH,mBAAA,CAAAI,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,YAAA,KAAA,CAAA;AAAAF,cAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA;AAAA,cAAA,OACgBzB,UAAU,CAACJ,aAAa,CAACc,WAAW,CAAC;AAAA,YAAA,KAAA,CAAA;cAAtDU,QAAQ,GAAAG,QAAA,CAAAG,IAAA;cAAA,OAAAH,QAAA,CAAAI,MAAA,CAAA,QAAA,EAEPP,QAAQ,CAAC5D,QAAQ,MAAA2D,cAAA,GAAIC,QAAQ,CAACpD,IAAI,cAAAmD,cAAA,KAAA,MAAA,GAAA,MAAA,GAAbA,cAAA,CAAe3D,QAAQ,KAAI,EAAE,CAAA;AAAA,YAAA,KAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAA+D,QAAA,CAAAK,IAAA,EAAA;AAAA;AAAA,QAAA,CAAA,EAAAV,OAAA,CAAA;MAAA,CAC1D,CAAA,CAAA;AAAA,MAAA,SAAAJ,OAAAA,GAAA;AAAA,QAAA,OAAAC,QAAA,CAAAc,KAAA,CAAA,IAAA,EAAA1B,SAAA,CAAA;AAAA,MAAA;AAAA,MAAA,OAAAW,OAAA;AAAA,IAAA,CAAA;GAAA,EACEL,iBAAiB,CACrB,CAAC;AACJ;;ICZaqB,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAG1D,MAAM,EAAI;EAC1C,IAAA2D,SAAA,GAAkDC,QAAQ,CAAC,IAAI/C,GAAG,EAAE,CAAC;IAAAgD,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAA9DI,IAAAA,iBAAiB,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,oBAAoB,GAAAH,UAAA,CAAA,CAAA,CAAA;EAE9C,IAAAI,mBAAA,GACEpC,kBAAkB,CAAC;AACjBM,MAAAA,UAAU,EAAE,EAAE;AACdE,MAAAA,iBAAiB,EAAE;QAAE6B,OAAO,EAAE,CAAC,CAAClE;AAAO;AACzC,KAAC,CAAC;IAAAmE,qBAAA,GAAAF,mBAAA,CAJIrE,IAAI;AAAEwE,IAAAA,WAAW,GAAAD,qBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,qBAAA;IAAaE,iBAAiB,GAAAJ,mBAAA,CAA5BK,SAAS;AAMzC,EAAA,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgBA,GAAS;IAC7B,IAAI,CAACvE,MAAM,EAAE;AAEb,IAAA,IAAMwE,kBAAkB,GAAGzE,mBAAmB,CAACC,MAAM,CAAC;AACtD,IAAA,IAAIyE,OAAO,CAACD,kBAAkB,CAAC,EAAE;AAC/BR,MAAAA,oBAAoB,CAAC,IAAInD,GAAG,EAAE,CAAC;AAE/B,MAAA;AACF,IAAA;IAEA,IAAM6D,kBAAkB,GAAG,IAAI7D,GAAG,CAAC8D,KAAK,CAAC,IAAI,EAAEP,WAAW,CAAC,CAAC;IAE5D,IAAMQ,UAAU,GAAG,IAAI/D,GAAG,CACxB2D,kBAAkB,CAACK,MAAM,CAAC,UAAAlF,EAAE,EAAA;AAAA,MAAA,OAAI,CAAC+E,kBAAkB,CAACI,GAAG,CAACnF,EAAE,CAAC;AAAA,IAAA,CAAA,CAC7D,CAAC;IAEDqE,oBAAoB,CAACY,UAAU,CAAC;EAClC,CAAC;AAEDG,EAAAA,SAAS,CAAC,YAAM;AACd,IAAA,IAAI,CAAC/E,MAAM,IAAIyE,OAAO,CAACL,WAAW,CAAC,EAAE;AAErCG,IAAAA,gBAAgB,EAAE;AACpB,EAAA,CAAC,EAAE,CAACH,WAAW,EAAEpE,MAAM,CAAC,CAAC;EAEzB,OAAO;AACL+D,IAAAA,iBAAiB,EAAjBA,iBAAiB;AACjBM,IAAAA,iBAAiB,EAAjBA,iBAAiB;IACjBW,gBAAgB,EAAEjB,iBAAiB,CAACe,GAAG,CAACG,IAAI,CAAClB,iBAAiB,CAAC;AAC/DQ,IAAAA,gBAAgB,EAAhBA;GACD;AACH;;AC5CA,IAAMW,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAApD,IAAA,EAAyB;AAAA,EAAA,IAAnBqD,YAAY,GAAArD,IAAA,CAAZqD,YAAY;AACvCJ,EAAAA,SAAS,CAAC,YAAM;AACd,IAAA,IAAMK,YAAY,GAAG,CAACC,OAAO,CAACC,GAAG,CAACC,SAAS,EAAE,YAAoB,CAAC,CAACC,QAAQ,CACzE,YACF,CAAC;AACD,IAAA,IAAI,CAACJ,YAAY,IAAIK,YAAY,CAACN,YAAY,CAAC,EAAE;AAC/C;AACAO,MAAAA,OAAO,CAACC,IAAI,CAAA,6GAAA,CAAAzG,MAAA,CAC+FiG,YAAY,QACvH,CAAC;AACH,IAAA;AACF,EAAA,CAAC,EAAE,CAACA,YAAY,CAAC,CAAC;AACpB;;ACFA;AACA;AACA;AACA;AACA;AACA,MAAM,eAAe,GAAG,CAAC,IAAI,KAAK;AAClC,CAAC,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3C,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI;AACxB,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,OAAO,IAAI;AAClE,CAAC,OAAO;AACR,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK;AACpB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAChB,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AACtB,EAAE;AACF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,MAAM,eAAe,GAAG,CAAC,IAAI,KAAK;AAClC,CAAC,MAAM,KAAK,GAAG,iBAAiB;AAChC,CAAC,MAAM,OAAO,GAAG,EAAE;AACnB,CAAC,IAAI,KAAK;AACV,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE;AAC7C,EAAE,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;AACxD,EAAE,OAAO,CAAC,IAAI,CAAC;AACf,GAAG,KAAK,EAAE,KAAK,CAAC,KAAK;AACrB,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACjB,GAAG,WAAW,EAAE,KAAK,CAAC,CAAC;AACvB,GAAG,CAAC;AACJ,CAAC;AACD,CAAC,OAAO,OAAO;AACf,CAAC;AACD;AACA;AACA;AACA;AACA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;AACzB,CAAC,IAAI,EAAE,MAAM;AACb,CAAC,UAAU,GAAG;AACd,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE;AAC/B,CAAC,CAAC;AACF,CAAC,QAAQ,EAAE,GAAG;AACd,CAAC,IAAI,EAAE,IAAI;AACX,CAAC,QAAQ,EAAE,IAAI;AACf,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE;AAChC,EAAE,OAAO;AACT,GAAG,MAAM;AACT,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;AAC/D,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,iBAAiB,EAAE,UAAU;AAC9B,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;AACpC,EAAE,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;AACpC,GAAG,IAAI,EAAE,MAAM;AACf,GAAG,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI;AACvB,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AAC9B,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;AAC9B,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;AAChD,CAAC,CAAC;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO;AACT,GAAG,OAAO,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK;AACpC,IAAI,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACtC,GAAG,CAAC;AACJ,GAAG,UAAU,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK;AACvC,IAAI,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AACzC,GAAG,CAAC;AACJ,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK;AACtC,IAAI,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACxC,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,oBAAoB,GAAG;AACxB,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE;AAC7D,CAAC,CAAC;AACF,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO,CAAC,aAAa,CAAC;AACxB,GAAG,IAAI,EAAE,eAAe;AACxB,GAAG,IAAI,EAAE,IAAI,CAAC;AACd,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO,CAAC,aAAa,CAAC;AACxB,GAAG,IAAI,EAAE,eAAe;AACxB,GAAG,IAAI,EAAE,IAAI,CAAC;AACd,GAAG,CAAC,CAAC;AACL,CAAC;AACD,CAAC,CAAC;AACF;AACA;AACG,IAACS,aAAW,GAAG;;AChHlB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,WAAW,GAAG,MAAM;AACjC,EAAE,IAAI,KAAK,GAAG;AACd,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK;AACnB,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,KAAK,GAAG;AACd,MAAM,IAAI;AACV,QAAQ,CAAC;AACT,MAAM,CAAC,SAAS;AAChB,QAAQ,KAAK,GAAG;AAChB,MAAM;AACN,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,SAAS,EAAE;AAChC,MAAM,CAAC;AACP,IAAI;AACJ,EAAE;AACF;;AC1CA;AACA;AACA;AACA;AACA;;AAEO,MAAM,KAAK,GAAG,IAAI,CAAC;AAEnB,MAAM,GAAG,GAAG,IAAI,CAAC;;AAgBxB;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;;AAezC;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;;AC3DtD,MAAM,mBAAmB,GAAG,MAAM,CAAC,UAAU;;AAEpD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI;;ACZ9E;AACA;AACA;AACA;AACO,MAAMC,UAAQ,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK;;AAO1C;AACA;AACA;AACO,MAAM,IAAI,GAAG,MAAM,CAAC;;AA2C3B;AACA;AACA;AACA;AACO,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;;AA4BrC;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,OAAK,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK;AACjC,EAAE,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;AACzB,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE;AAC3B,MAAM,OAAO;AACb,IAAI;AACJ,EAAE;AACF,EAAE,OAAO;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG;;AC5HtF;AACA;AACA;AACA;AACA;;AAEO,MAAMC,QAAM,GAAG,MAAM,IAAI,GAAG;;ACNnC;AACA;AACA;AACA;AACA;;;AAiDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK;AACjC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE;AAC5B,MAAM,OAAO;AACb,IAAI;AACJ,EAAE;AACF,EAAE,OAAO;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK;AAChC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE;AAC3B,MAAM,OAAO;AACb,IAAI;AACJ,EAAE;AACF,EAAE,OAAO;AACT;;AAkBA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK;AAClC,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG;AAC7B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAChC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK;AACzB,EAAE;AACF,EAAE,OAAO;AACT;;AAWO,MAAM,OAAO,GAAG,KAAK,CAAC;;AClI7B;AACA;AACA;AACA;AACA;;;AA2DA;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AACtC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;AACf,IAAI,OAAO;AACX,EAAE;AACF,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,MAAM,OAAO,CAAC,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC,EAAE;AAC9H,IAAI,OAAO;AACX,EAAE;AACF,EAAE,IAAI,CAAC,CAACC,mBAAiC,CAAC,IAAI,IAAI,EAAE;AACpD,IAAI,OAAO,CAAC,CAACA,mBAAiC,CAAC,CAAC,CAAC;AACjD,EAAE;AACF,EAAE,QAAQ,CAAC,CAAC,WAAW;AACvB,IAAI,KAAK,WAAW;AACpB,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC;AAC1B,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC;AAC1B;AACA,IAAI,KAAK,UAAU,EAAE;AACrB,MAAM,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,EAAE;AACzC,QAAQ,OAAO;AACf,MAAM;AACN,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3B,UAAU,OAAO;AACjB,QAAQ;AACR,MAAM;AACN,MAAM;AACN,IAAI;AACJ,IAAI,KAAK,GAAG,EAAE;AACd,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE;AAC7B,QAAQ,OAAO;AACf,MAAM;AACN,MAAM,KAAK,MAAM,KAAK,IAAI,CAAC,EAAE;AAC7B,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC3B,UAAU,OAAO;AACjB,QAAQ;AACR,MAAM;AACN,MAAM;AACN,IAAI;AACJ,IAAI,KAAK,GAAG,EAAE;AACd,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE;AAC7B,QAAQ,OAAO;AACf,MAAM;AACN,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;AAClC,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AAClE,UAAU,OAAO;AACjB,QAAQ;AACR,MAAM;AACN,MAAM;AACN,IAAI;AACJ,IAAI,KAAK,SAAS;AAClB,IAAI,KAAK,MAAM;AACf,MAAM,IAAIC,IAAW,CAAC,CAAC,CAAC,KAAKA,IAAW,CAAC,CAAC,CAAC,EAAE;AAC7C,QAAQ,OAAO;AACf,MAAM;AACN,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC,EAAE;AAC3B,QAAQ,IAAI,CAACC,WAAkB,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AAC1E,UAAU,OAAO;AACjB,QAAQ;AACR,MAAM;AACN,MAAM;AACN,IAAI,KAAK,KAAK;AACd,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;AACjC,QAAQ,OAAO;AACf,MAAM;AACN,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,QAAQ,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACvC,UAAU,OAAO;AACjB,QAAQ;AACR,MAAM;AACN,MAAM;AACN,IAAI;AACJ,MAAM,OAAO;AACb;AACA,EAAE,OAAO;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,KAAK;;ACzJjE;AACA;AACA;AACA;AACA;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM,kBAAkB,GAAG;AAC3B,MAAM,iBAAiB,GAAG;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,gBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC1C,EAAE,IAAI,IAAI,GAAG,EAAC;AACd,EAAE,IAAI,KAAK,GAAG,EAAC;AACf,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE;AACpE,IAAI,IAAI;AACR,EAAE;AACF;AACA,EAAE,IAAI,IAAI,GAAG,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI;AAC5D,EAAE,OAAO,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,EAAE;AACpH,IAAI,KAAK;AACT,EAAE;AACF;AACA,EAAE,IAAI,KAAK,GAAG,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,EAAE,KAAK;AACrE,EAAE,OAAO;AACT,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,KAAK;AACnC,IAAI,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,KAAK;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACO,MAAM,UAAU,GAAG;;ACjE1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAMH,QAAM,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;;AAEtC;AACA;AACA;AACA;AACA;AACO,MAAM,mBAAmB,GAAG,MAAM;AACzC,EAAE,MAAMA,QAAM,CAAC,sBAAsB;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAM,cAAc,GAAG,MAAM;AACpC,EAAE,MAAMA,QAAM,CAAC,iBAAiB;AAChC;;AC7BA;;AAmBO,MAAM,IAAI,GAAG;AACb,MAAM,IAAI,GAAG;AAsBb,MAAM,KAAK,GAAG,CAAC,IAAI;AAenB,MAAM,KAAK,GAAG;AACd,MAAM,KAAK,GAAG;AAwBrB;AACA;AACA;AACO,MAAM,MAAM,GAAG;;ACrFtB;;AAG+B,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM;;ACHjE;AACA;AACA;AACA;AACA;AACA;AACA;;;AAMO,MAAM,IAAI,GAAG,IAAI,CAAC;;AASzB;AACA;AACA;AACA;AACA;AACO,MAAMI,OAAK,GAAG,GAAG,IAAI,GAAG,CAACC,KAAU,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;;AC1B/D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,MAAM,GAAG,MAAM,IAAI,GAAG;;AAgBnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,KAAK;AACrD,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG;AACvB,EAAE,IAAI,GAAG,KAAK,SAAS,EAAE;AACzB,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,EAAE;AAChC,EAAE;AACF,EAAE,OAAO;AACT;;ACxDA;AACA;AACA;AACA;AACA;;AAEO,MAAM,YAAY,GAAG,MAAM,CAAC;;AASnC;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW;;AAEtC,MAAM,aAAa,GAAG;;AAEtB;AACA;AACA;AACA;AACO,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE;;AAExD,MAAM,kBAAkB,GAAG;;AAE3B;AACA;AACA;AACA;AACA;AACO,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,KAAK,IAAI,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;AASnI;AACA;AACA;AACA;AACO,MAAM,mBAAmB,GAAG,GAAG,IAAI;AAC1C,EAAE,MAAM,aAAa,GAAG,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC;AACxD,EAAE,MAAM,GAAG,GAAG,aAAa,CAAC;AAC5B,EAAE,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG;AAChC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAChC,IAAI,GAAG,CAAC,CAAC,CAAC,0BAA0B,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;AAChE,EAAE;AACF,EAAE,OAAO;AACT;;AAEA;AACO,MAAM,eAAe,+BAA+B,OAAO,WAAW,KAAK,WAAW,GAAG,IAAI,WAAW,EAAE,GAAG,IAAI;;AAExH;AACA;AACA;AACA;AACO,MAAM,iBAAiB,GAAG,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG;;AAElE;AACA;AACA;AACA;AACA;AACO,MAAM,UAAU,GAAG,eAAe,GAAG,iBAAiB,GAAG;;AAqBhE;AACO,IAAI,eAAe,GAAG,OAAO,WAAW,KAAK,WAAW,GAAG,IAAI,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;;AAElI;AACA,IAAI,eAAe,IAAI,eAAe,CAAC,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,eAAe,GAAG;AACpB;;AAwBA;AACA;AACA;AACA;AACO,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,KAAKC,MAAY,CAAC,CAAC,EAAE,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE;;ACxI1E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,GAAG,IAAI,GAAG;;ACZ7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,kBAAkB,CAAC;AACzB,EAAE,WAAW,CAAC,GAAG;AACjB,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG;AACtB,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE;AAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ;AAC9B,EAAE;;AAEF;AACA;AACA;AACA,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE;AAChB,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;AAC3B,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,IAAI,aAAa,GAAG,IAAI,kBAAkB;AAC1C,IAAI,WAAW,GAAG;;AAElB;AACA,IAAI;AACJ;AACA,EAAE,IAAI,OAAO,YAAY,KAAK,WAAW,IAAI,YAAY,EAAE;AAC3D,IAAI,aAAa,GAAG;AACpB,IAAI,WAAW,GAAG;AAClB,EAAE;AACF,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE;AACd;;AAEA;AACA;AACA;AACA;AACO,MAAM,UAAU,GAAG;;ACrD1B;AACA;AACA;AACA;AACA;;;AAQA;AACA;AACO,MAAM,MAAM,GAAG,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK,WAAW,GAAG,OAAO,GAAG,CAAC,CAAC,KAAK;;AAExM;AACO,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,CAAC;;AAM9F;AACA;AACA;AACA,IAAI;;AAGJ;AACA,MAAM,aAAa,GAAG,MAAM;AAC5B,EAAE,IAAI,MAAM,KAAK,SAAS,EAAE;AAC5B,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,MAAM,GAAGC,MAAU;AACzB,MAAM,MAAM,KAAK,GAAG,OAAO,CAAC;AAC5B,MAAM,IAAI,aAAa,GAAG;AAC1B,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC;AAC5B,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC7B,UAAU,IAAI,aAAa,KAAK,IAAI,EAAE;AACtC,YAAY,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE;AACxC,UAAU;AACV,UAAU,aAAa,GAAG;AAC1B,QAAQ,CAAC,MAAM;AACf,UAAU,IAAI,aAAa,KAAK,IAAI,EAAE;AACtC,YAAY,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI;AAC1C,YAAY,aAAa,GAAG;AAC5B,UAAU;AAGV,QAAQ;AACR,MAAM;AACN,MAAM,IAAI,aAAa,KAAK,IAAI,EAAE;AAClC,QAAQ,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE;AACpC,MAAM;AACN;AACA,IAAI,CAAC,MAAM,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAC7C,MAAM,MAAM,GAAGA,MAAU,EAAE,CAAC;AAC5B,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK;AACnE,QAAQ,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7B,UAAU,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG;AAC3C,UAAU,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAEC,aAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK;AACjE,UAAU,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAEA,aAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK;AAChE,QAAQ;AACR,MAAM,CAAC;AACP,IAAI,CAAC,MAAM;AACX,MAAM,MAAM,GAAGD,MAAU;AACzB,IAAI;AACJ,EAAE;AACF,EAAE,OAAO;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAM,QAAQ,GAAG,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC,GAAG,CAAC,IAAI;;AAW1D;AACA;AACA;AACA;AACA;AACO,MAAM,WAAW,GAAG,CAAC,IAAI;AAChC,EAAE;AACF,MAAME,eAA0B,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACrF,MAAMA,eAA0B,CAACC,UAAkB,CAAC,OAAO,CAAC,IAAI,CAAC;;AAqBjE;AACA;AACA;AACA;AACA;AACO,MAAM,OAAO,GAAG,CAAC,IAAI;AAC5B,EAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK;;AAEjD;AACO,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY;;AAE9C;AACA,MAAM,UAAU,GAAG,MAAM;AACzB,EAAEC,OAAS,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC6B,UAAU;AACvC,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC1B,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;AACtB,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AACnC,IAAI,CAAC,MAAM;AACX,IAAI,QAAQ,CAAC,SAAS,CAAC;AACvB,IAAI,WAAW,CAAC,WAAW,CAAC,KAAK,IAAI;AACrC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,OAAO;AAChD;AACA;AACA;;ACvJA;AACA;AACA;AACA;AACA;;;AAKO,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAChC,MAAM,gBAAgB,GAAG,MAAM,CAAC;;AAMvC;AACO,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,KAAK,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAIN,KAAU,CAAC,GAAG,CAAC,KAAK,GAAG;;ACjBxH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAQA;AACA;AACA;AACO,MAAM,OAAO,CAAC;AACrB,EAAE,WAAW,CAAC,GAAG;AACjB,IAAI,IAAI,CAAC,IAAI,GAAG;AAChB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG;AAClC;AACA;AACA;AACA,IAAI,IAAI,CAAC,IAAI,GAAG;AAChB,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACO,MAAM,aAAa,GAAG,MAAM,IAAI,OAAO;;AAE9C;AACA;AACA;AACO,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK;AAC7B,EAAE,MAAM,OAAO,GAAG,aAAa;AAC/B,EAAE,CAAC,CAAC,OAAO;AACX,EAAE,OAAO,YAAY,CAAC,OAAO;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,MAAM,GAAG,OAAO,IAAI;AACjC,EAAE,IAAI,GAAG,GAAG,OAAO,CAAC;AACpB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,IAAI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,EAAE;AACF,EAAE,OAAO;AACT;;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,YAAY,GAAG,OAAO,IAAI;AACvC,EAAE,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;AACjD,EAAE,IAAI,MAAM,GAAG;AACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5B,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM;AAC1B,IAAI,MAAM,IAAI,CAAC,CAAC;AAChB,EAAE;AACF,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM;AAC3E,EAAE,OAAO;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK;AAC3C,EAAE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;AACjC,EAAE,IAAI,SAAS,GAAG,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE;AACtC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC;AAC1E,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,UAAU,CAACO,GAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC;AAC9D,IAAI,OAAO,CAAC,IAAI,GAAG;AACnB,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK;AACvC,EAAE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;AACjC,EAAE,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;AAClC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;AAClC,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,SAAS,GAAG,CAAC;AAC/C,IAAI,OAAO,CAAC,IAAI,GAAG;AACnB,EAAE;AACF,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG;AACjC;;AAmHA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK;AAC9C,EAAE,OAAO,GAAG,GAAGC,KAAY,EAAE;AAC7B,IAAI,KAAK,CAAC,OAAO,EAAEC,IAAW,IAAID,KAAY,GAAG,GAAG,CAAC;AACrD,IAAI,GAAG,GAAGR,KAAU,CAAC,GAAG,GAAG,GAAG,EAAC;AAC/B,EAAE;AACF,EAAE,KAAK,CAAC,OAAO,EAAEQ,KAAY,GAAG,GAAG;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK;AAC7C,EAAE,MAAM,UAAU,GAAGE,cAAmB,CAAC,GAAG;AAC5C,EAAE,IAAI,UAAU,EAAE;AAClB,IAAI,GAAG,GAAG,CAAC;AACX,EAAE;AACF;AACA,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,GAAGC,KAAY,GAAGF,IAAW,GAAG,CAAC,KAAK,UAAU,GAAGG,IAAW,GAAG,CAAC,CAAC,IAAID,KAAY,GAAG,GAAG,CAAC;AAC/G,EAAE,GAAG,GAAGX,KAAU,CAAC,GAAG,GAAG,EAAE,EAAC;AAC5B;AACA;AACA,EAAE,OAAO,GAAG,GAAG,CAAC,EAAE;AAClB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,GAAGQ,KAAY,GAAGC,IAAW,GAAG,CAAC,KAAKD,KAAY,GAAG,GAAG,CAAC;AAChF,IAAI,GAAG,GAAGR,KAAU,CAAC,GAAG,GAAG,GAAG,EAAC;AAC/B,EAAE;AACF;;AAEA;AACA;AACA;AACA,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK;AACvC,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,GAAG;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK;AACvD,EAAE,IAAI,GAAG,CAAC,MAAM,GAAG,YAAY,EAAE;AACjC;AACA;AACA,IAAI,MAAM,OAAO,GAAGa,eAAsB,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,OAAO,IAAI;AAClF,IAAI,YAAY,CAAC,OAAO,EAAE,OAAO;AACjC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;AACtC,MAAM,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;AAClC,IAAI;AACJ,EAAE,CAAC,MAAM;AACT,IAAI,kBAAkB,CAAC,OAAO,EAAEC,UAAiB,CAAC,GAAG,CAAC;AACtD,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,uBAAuB,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK;AACzD,EAAE,MAAM,aAAa,GAAG,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC;AACxD,EAAE,MAAM,GAAG,GAAG,aAAa,CAAC;AAC5B,EAAE,YAAY,CAAC,OAAO,EAAE,GAAG;AAC3B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAChC,IAAI,KAAK,CAAC,OAAO,yBAAyB,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;AACtE,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,cAAc,GAAG,CAACD,eAAsB,uBAAuB,CAACA,eAAsB,EAAE,UAAU,IAAI,qBAAqB,GAAG;;AAyD3I;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,UAAU,KAAK;AACxD,EAAE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;AACjC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC;AACvB,EAAE,MAAM,WAAW,GAAGE,GAAQ,CAAC,SAAS,GAAG,IAAI,EAAE,UAAU,CAAC,MAAM;AAClE,EAAE,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,GAAG;AAC3C,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,IAAI;AAC5D,EAAE,OAAO,CAAC,IAAI,IAAI;AAClB,EAAE,IAAI,YAAY,GAAG,CAAC,EAAE;AACxB;AACA;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;AAClC;AACA,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,UAAU,CAACR,GAAQ,CAAC,SAAS,GAAG,CAAC,EAAE,YAAY,CAAC;AACvE;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC;AACrD,IAAI,OAAO,CAAC,IAAI,GAAG;AACnB,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,UAAU,KAAK;AAC3D,EAAE,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU;AAC7C,EAAE,eAAe,CAAC,OAAO,EAAE,UAAU;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK;AACjD,EAAE,SAAS,CAAC,OAAO,EAAE,GAAG;AACxB,EAAE,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG;AACnE,EAAE,OAAO,CAAC,IAAI,IAAI;AAClB,EAAE,OAAO;AACT;;AAEA;AACA;AACA;AACA;AACO,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK;;AAElG;AACA;AACA;AACA;AACO,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK;;AAElG;AACA;AACA;AACA;AACO,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,GAAG,wBAAwB,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK;;AAQzH,MAAM,YAAY,GAAG,IAAI,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,SAAS,GAAG,GAAG,IAAI;AACzB,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG;AAChC,EAAE,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK;AACxC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK;AAC3C,EAAE,QAAQ,OAAO,IAAI;AACrB,IAAI,KAAK,QAAQ;AACjB;AACA,MAAM,KAAK,CAAC,OAAO,EAAE,GAAG;AACxB,MAAM,cAAc,CAAC,OAAO,EAAE,IAAI;AAClC,MAAM;AACN,IAAI,KAAK,QAAQ;AACjB,MAAM,IAAIS,SAAgB,CAAC,IAAI,CAAC,IAAIC,GAAQ,CAAC,IAAI,CAAC,IAAIC,MAAa,EAAE;AACrE;AACA,QAAQ,KAAK,CAAC,OAAO,EAAE,GAAG;AAC1B,QAAQ,WAAW,CAAC,OAAO,EAAE,IAAI;AACjC,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;AAClC;AACA,QAAQ,KAAK,CAAC,OAAO,EAAE,GAAG;AAC1B,QAAQ,YAAY,CAAC,OAAO,EAAE,IAAI;AAClC,MAAM,CAAC,MAAM;AACb;AACA,QAAQ,KAAK,CAAC,OAAO,EAAE,GAAG;AAC1B,QAAQ,YAAY,CAAC,OAAO,EAAE,IAAI;AAClC,MAAM;AACN,MAAM;AACN,IAAI,KAAK,QAAQ;AACjB;AACA,MAAM,KAAK,CAAC,OAAO,EAAE,GAAG;AACxB,MAAM,aAAa,CAAC,OAAO,EAAE,IAAI;AACjC,MAAM;AACN,IAAI,KAAK,QAAQ;AACjB,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE;AACzB;AACA,QAAQ,KAAK,CAAC,OAAO,EAAE,GAAG;AAC1B,MAAM,CAAC,MAAM,IAAIC,OAAa,CAAC,IAAI,CAAC,EAAE;AACtC;AACA,QAAQ,KAAK,CAAC,OAAO,EAAE,GAAG;AAC1B,QAAQ,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM;AACzC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,UAAU,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AACnC,QAAQ;AACR,MAAM,CAAC,MAAM,IAAI,IAAI,YAAY,UAAU,EAAE;AAC7C;AACA,QAAQ,KAAK,CAAC,OAAO,EAAE,GAAG;AAC1B,QAAQ,kBAAkB,CAAC,OAAO,EAAE,IAAI;AACxC,MAAM,CAAC,MAAM;AACb;AACA,QAAQ,KAAK,CAAC,OAAO,EAAE,GAAG;AAC1B,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI;AACrC,QAAQ,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM;AACzC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,UAAU,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC;AAC5B,UAAU,cAAc,CAAC,OAAO,EAAE,GAAG;AACrC,UAAU,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC;AACrC,QAAQ;AACR,MAAM;AACN,MAAM;AACN,IAAI,KAAK,SAAS;AAClB;AACA,MAAM,KAAK,CAAC,OAAO,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG;AACrC,MAAM;AACN,IAAI;AACJ;AACA,MAAM,KAAK,CAAC,OAAO,EAAE,GAAG;AACxB;AACA;;AC7lBA;AACA;AACA;AACA;AACA;;;AA8BA;AACA;AACA;AACA;AACA;AACA,MAAM,eAAe,GAAG,KAAK,IAAI;AACjC,EAAE,IAAI,CAAC,GAAG;AACV,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE;AAC7C,IAAI,CAAC,IAAIC,YAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;AACrC,EAAE;AACF;AACA,EAAE,OAAO,IAAI,CAAC,CAAC;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ;;AA0B7G;AACO,MAAM,QAAQ,GAAGC,SAAa,GAAG,eAAe,GAAG;;AAiD1D;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,SAAS,GAAG,IAAI;AAC7B,EAAEC,MAAe,CAAC,OAAO,IAAIC,QAAiB,CAAC,OAAO,EAAE,IAAI,CAAC;;ACzI7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAgCA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAKvB,KAAU,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG;;AAYrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAKA,KAAU,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG;;AAYrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;;AAoB3D;AACA;AACA;AACA;AACO,MAAM,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,EAAE,KAAK;AACtD,EAAE,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM;AACvC,EAAE,IAAI,GAAG,GAAG;AACZ,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAChC,IAAI,GAAG,IAAI,MAAM,CAAC,GAAG;AACrB,EAAE;AACF,EAAE,OAAO;AACT;;AA0BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AA6B1E;;ACvMA;AACA;AACA;AACA;AACA;;;AAYA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS;;AAE9B,MAAM,eAAe,CAAC;AAC7B,EAAE,WAAW,CAAC,GAAG;AACjB;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,MAAM,GAAG;AAClB,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,EAAE;AAC/C,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE;AACrD,EAAE;;AAEF,EAAE,QAAQ,CAAC,GAAG;AACd,IAAI,MAAM,CAAC,GAAG;AACd,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACrD,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B;AACA,MAAM,CAAC,CAAC,IAAI,CAACwB,MAAa,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AAC3J,IAAI;AACJ,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI;AACtB,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC/B,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO;AACtB,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,EAAE,OAAO;AACxE,EAAE,IAAI,CAAC,CAACC,mBAAkC,CAAC,EAAE,OAAOC,MAAqB,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/E,EAAE,IAAIC,OAAW,CAAC,CAAC,CAAC,EAAE;AACtB,IAAI,OAAOC,KAAS,CAAC,CAAC,EAAE,KAAK;AAC7B,MAAMC,IAAQ,CAAC,CAAC,EAAE,KAAK,IAAI,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC;AACrD;AACA,EAAE,CAAC,MAAM,IAAIC,UAAY,CAAC,CAAC,CAAC,EAAE;AAC9B,IAAI,OAAOC,OAAS,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI;AACpC,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;AACjC;AACA,EAAE;AACF;AACA,EAAE,OAAO;AACT;;AAEA;AACA;AACA;AACA;AACO,MAAM,MAAM,CAAC;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,QAAQ,GAAG;;AAEpB;AACA;AACA;AACA,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE;AAClB,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,mBAAmB,CAAC,IAAI,EAAE,KAAK,qBAAqB,CAAC,KAAK,EAAE,KAAK;AAClF,IAAI,sCAAsC,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AACrF,IAAI,OAAO,YAAY,CAAC,CAAC,EAAE,CAAC;AAC5B,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE;AACjB;AACA,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW,IAAIC,YAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK;AAC7F,EAAE;;AAEF,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,OAAO,IAAI,CAAC;;AAElC;AACA;AACA;AACA,EAAE,CAACP,mBAAkC,EAAE,CAAC,KAAK,EAAE;AAC/C,IAAI,OAAO,IAAI,CAAC,MAAM,qBAAqB,KAAK;AAChD,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE;AACf,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;AACvB,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE;AACnB,IAAIQ,mBAAyB;AAC7B,EAAE;AACF;;AAEA;AACA;AACA;AACA,EAAE,IAAI,QAAQ,CAAC,GAAG;AAClB;AACA,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK;AAC7B,EAAE;;AAEF;AACA;AACA;AACA,EAAE,IAAI,QAAQ,CAAC,GAAG;AAClB,IAAI,OAAO,IAAI,SAAS,2BAA2B,IAAI;AACvD,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE;AACX,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI;AAClB,IAAI,2BAA2B,CAAC;AAChC,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE;AACb,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI;AAClB,IAAI,OAAO;AACX,EAAE;AACF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACO,MAAM,cAAc,SAAS,MAAM,CAAC;AAC3C;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;AACzB,IAAI,KAAK;AACT,IAAI,IAAI,CAAC,KAAK,GAAG;AACjB,IAAI,IAAI,CAAC,EAAE,GAAG;AACd,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,SAAS,EAAE;AAC7B,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,WAAW,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7E;AACA,IAAI,CAAC,CAAC,IAAI,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,WAAW,KAAK,IAAI,CAAC,KAAK,GAAG,0BAA0B,GAAG,cAAc;AAC7I,IAAI,OAAO;AACX,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,cAAc,CAAC,CAAC,EAAE,KAAK;AAC/C,cAAc,CAAC,cAAc;;AAE5D;AACA;AACA;AACA;AACA;AACO,MAAM,OAAO,SAAS,MAAM,CAAC;AACpC;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,KAAK,EAAE;AACtB,IAAI,KAAK;AACT;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG;AACjB,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;AACjB,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B;AACA,IAAI,CAAC,CAAC,IAAI,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,WAAW,CAAC,IAAI,EAAE,6BAA6B;AAC7F,IAAI,OAAO;AACX,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACO,MAAM,OAAO,GAAG,CAAC,KAAK,KAAK,IAAI,OAAO,CAAC,KAAK;AAC3B,cAAc,CAAC,OAAO;;AAE9C;AACA;AACA;AACA;AACO,MAAM,QAAQ,SAAS,MAAM,CAAC;AACrC;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,QAAQ,EAAE;AACzB,IAAI,KAAK;AACT,IAAI,IAAI,CAAC,KAAK,GAAG;AACjB,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;AACjB,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1C;AACA,IAAI,CAAC,CAAC,IAAI,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;AAChE,IAAI,OAAO;AACX,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAM,QAAQ,GAAG,CAAC,GAAG,QAAQ,KAAK,IAAI,QAAQ,CAAC,QAAQ;AACvD,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ;;AAEhD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM,YAAY,sBAAsB,CAAC,MAAM,EAAE,MAAM,2CAA2C,GAAG;AACrG,EAAE,GAAG,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC;AAC7C;;AAEA;AACA;AACA;AACA;AACA,MAAM,4BAA4B,GAAG,CAAC,IAAI;AAC1C,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACxB,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AAC3B,EAAE;AACF,EAAE,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC1B,IAAI,2CAA2C,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;AACxE,EAAE;AACF,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACzB,IAAI,OAAO,CAAC,iBAAiB;AAC7B,EAAE;AACF,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACzB,IAAI,OAAO,CAAC,IAAI;AAChB,EAAE;AACF,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACxB,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3D,EAAE;AACF;AACA;AACA,EAAEC,cAAoB;AACtB;;AAEA;AACA;AACA;AACA;AACO,MAAM,eAAe,SAAS,MAAM,CAAC;AAC5C;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,KAAK,EAAE;AACtB,IAAI,KAAK;AACT,IAAI,IAAI,CAAC,KAAK,GAAG;AACjB,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG;AACxH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;AACjB,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;AACjC;AACA,IAAI,CAAC,CAAC,IAAI,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,wCAAwC;AACtG,IAAI,OAAO;AACX,EAAE;AACF;AAQgC,cAAc,CAAC,eAAe;;AAE9D,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU;AAC1C;AACA;AACA;AACA;AACA,MAAM,SAAS,SAAS,MAAM,CAAC;AAC/B;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,KAAK,EAAE;AACtB,IAAI,KAAK;AACT,IAAI,IAAI,CAAC,KAAK,GAAG;AACjB,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;AACjB,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACnD;AACA,IAAI,CAAC,CAAC,IAAI,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,sBAAsB,EAAE,IAAI;AACxD,IAAI,OAAO;AACX,EAAE;;AAEF,EAAE,KAAK,gBAAgB,EAAE,GAAG,EAAE,OAAO,IAAI,CAAC;AAC1C;AACO,MAAM,UAAU,GAAG,cAAc,CAAC,SAAS;;AAElD;AACA;AACA;AACA,MAAM,MAAM,SAAS,MAAM,CAAC;AAC5B;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE;AAClB;AACA,IAAI,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;AACxC,IAAI,OAAO;AACX,EAAE;AACF;AAMuB,cAAc,CAAC,MAAM;;AAE5C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACO,MAAM,OAAO,SAAS,MAAM,CAAC;AACpC;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE;AACvC,IAAI,KAAK;AACT;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG;AACjB,IAAI,IAAI,CAAC,UAAU,GAAG;AACtB,EAAE;;AAEF,EAAE,OAAO,QAAQ,GAAG;;AAEpB;AACA;AACA;AACA,EAAE,IAAI,OAAO,CAAC,GAAG;AACjB,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI;AACvC,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;AACjB,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE;AACnB;AACA,MAAM,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM;AACxC,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,OAAOH,OAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK;AAC7C,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,CAACI,WAAe,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG;AACnF,MAAM,CAAC,CAAC,IAAI,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,gCAAgC;AACpG,MAAM,OAAO;AACb,IAAI,CAAC;AACL,EAAE;AACF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,OAAO,GAAG,GAAG,wBAAwB,IAAI,OAAO,CAAC,GAAG,CAAC;AAC3D,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO;AAC9C;AACA;AACA;AACO,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC;;AAEvG;AACA;AACA;AACA;AACA;AACO,MAAM,OAAO,SAAS,MAAM,CAAC;AACpC;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE;AAC7B,IAAI,KAAK;AACT,IAAI,IAAI,CAAC,KAAK,GAAG;AACjB,MAAM,IAAI,EAAE;AACZ;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;AACjB,IAAI,OAAO,CAAC,IAAI,IAAI,IAAIJ,OAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK;AACjD,MAAM,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG;AAC9C;AACA,MAAM,CAAC,EAAE,IAAI,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,2BAA2B,GAAG,4BAA4B;AACrH,MAAM,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG;AAClD,IAAI,CAAC;AACL,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM;AAC1D,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO;;AAE9C;AACA;AACA;AACA;AACO,MAAM,MAAM,SAAS,MAAM,CAAC;AACnC;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,KAAK,EAAE;AACtB,IAAI,KAAK;AACT,IAAI,IAAI,CAAC,KAAK,GAAG;AACjB,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;AACjB,IAAI,OAAO,CAAC,IAAI,IAAI,IAAIA,OAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK;AAC1D,MAAM,MAAM,CAAC,8BAA8B,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG;AAChE;AACA,MAAM,CAAC,CAAC,IAAI,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;AACzD,MAAM,OAAO;AACb,IAAI,CAAC;AACL,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,KAAK,IAAI,MAAM,CAAC,GAAG;AACzB,cAAc,CAAC,MAAM;;AAE5C;AACA;AACA;AACA;AACO,MAAM,MAAM,SAAS,MAAM,CAAC;AACnC;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE;AAClB,IAAI,KAAK;AACT;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC;AACrD,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;AACjB,IAAI,MAAM,CAAC,GAAGJ,OAAW,CAAC,CAAC,CAAC,IAAIC,KAAS,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;AACvE;AACA,IAAI,CAAC,CAAC,IAAI,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;AACvC,IAAI,OAAO;AACX,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,KAAK,IAAI,MAAM,CAAC,GAAG;AACzC,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM;AAC5C;AACA;AACA;AACO,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,IAAID,OAAW,CAAC,CAAC,CAAC;;AAEpD;AACA;AACA;AACA;AACO,MAAM,WAAW,SAAS,MAAM,CAAC;AACxC;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE;AACnC,IAAI,KAAK;AACT,IAAI,IAAI,CAAC,KAAK,GAAG;AACjB,IAAI,IAAI,CAAC,EAAE,GAAG;AACd,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;AACjB,IAAI,MAAM,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACvE;AACA,IAAI,CAAC,CAAC,IAAI,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,WAAW,CAAC,IAAI;AAChE,IAAI,OAAO;AACX,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,WAAW,CAAC,CAAC,EAAE,KAAK;AAC5C,cAAc,CAAC,WAAW;;AAE/C,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM;;AAE1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACO,MAAM,OAAO,SAAS,MAAM,CAAC;AACpC;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE;AACrB,IAAI,KAAK;AACT,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG;AAC7B,IAAI,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AACxC,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG;AAC5B,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;AACjB,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;AAC7D;AACA,IAAI,CAAC,CAAC,IAAI,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC;AAChD,IAAI,OAAO;AACX,EAAE;AACF;AAQO,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO;;AAE9C;AACA;AACA;AACO,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,UAAU;;AAE7D;AACA;AACA;AACA;AACO,MAAM,aAAa,SAAS,MAAM,CAAC;AAC1C;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE;AAClB,IAAI,KAAK;AACT;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG;AACjB,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;AACjB;AACA,IAAI,MAAM,CAAC,GAAGC,KAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;AAChE;AACA,IAAI,CAAC,CAAC,IAAI,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC;AACrD,IAAI,OAAO;AACX,EAAE;AACF;AAQ2B,cAAc,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAC;;AAEjF;AACA;AACA;AACA;AACO,MAAM,MAAM,SAAS,MAAM,CAAC;AACnC,EAAE,OAAO,QAAQ,GAAG;;AAEpB;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE;AAClB,IAAI,KAAK;AACT,IAAI,IAAI,CAAC,KAAK,GAAG;AACjB,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;AACjB,IAAI,MAAM,CAAC,GAAGC,IAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;AAC3D,IAAI,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;AACvC,IAAI,OAAO;AACX,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI;AACpF,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7F,KAAK,OAAO,CAAC,MAAM,KAAK;AACxB,QAAQ,OAAO,CAAC,CAAC;AACjB,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC;AACpB,MAAM,OAAO,uCAAuC,cAAc,CAAC,MAAM,CAAC;;AAEjF,MAAM,EAAE,GAAG,MAAM;AACjB;AACA;AACA;AACO,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE;AACvB,MAAM,KAAK,uCAAuC,cAAc,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;;AAErG;AACA;AACA;AACO,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;AAClD,MAAM,QAAQ,0CAA0C,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC;;AAE1F;AACA;AACA;AACO,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;AACjC,uCAAuC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC;;AAE1F;AACA;AACA;AACO,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;AAClD,MAAM,QAAQ,0CAA0C,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC;;AAE1F;AACA;AACA;AACO,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;AAClD,MAAM,QAAQ,0CAA0C,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC;;AAE1F;AACA;AACA;AACO,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,SAAS;AACpD,MAAM,SAAS,2CAA2C,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC;;AAE7F;AACA;AACA;AACO,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS;AACjB,0CAA0C,cAAc,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;;AAEpJ;AACA;AACA;AACqB,QAAQ,CAAC,SAAS;;AAGhC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI;AAC3B,MAAM,MAAM,wCAAwC,cAAc,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;;AAE1G,cAAc,CAAC,UAAU;AACxB,2CAA2C,cAAc,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC;;AAElI;AACA;AACA;AACO,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO;;AAEhG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACqB,CAAC,MAAM;AAC5B,EAAE,MAAM,QAAQ,gCAAgC,MAAM,CAAC,IAAI,CAAC;AAC5D,EAAE,MAAM,WAAW,yCAAyC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;AAClF,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW;AAC/E,EAAE,QAAQ,CAAC,KAAK,GAAG;AACnB,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG;AAC7B,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAM,CAAC,GAAG,CAAC,IAAI;AACtB,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACzB,IAAI,2BAA2B,CAAC;AAChC,EAAE,CAAC,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAClC;AACA;AACA;AACA,IAAI,MAAM,EAAE,GAAG;AACf,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE;AACvB,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,IAAI;AACJ,IAAI,2BAA2B,OAAO,CAAC,EAAE,CAAC;AAC1C,EAAE,CAAC,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACjC,IAAI,2BAA2B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClD,EAAE,CAAC,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAClC,IAAI,2BAA2B,QAAQ,CAAC,CAAC,CAAC;AAC1C,EAAE,CAAC,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACjC,IAAI,2BAA2B,cAAc,qBAAqB,CAAC,EAAE;AACrE,EAAE;AACF;AACA,EAAEK,cAAoB;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,MAAM,GAAGE;AACtB,IAAI,MAAM,CAAC;AACX,IAAI,CAAC,CAAC,EAAE,MAAM,KAAK;AACnB,MAAM,MAAM,GAAG,GAAG,IAAI,eAAe;AACrC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AACjC,QAAQ,MAAMC,QAAY,CAAC,CAAC,6BAA6B,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxG,MAAM;AACN,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAM,cAAc,CAAC;AAC5B;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,MAAM,EAAE;AACvB;AACA;AACA;AACA,IAAI,IAAI,CAAC,QAAQ,GAAG;AACpB,IAAI,IAAI,CAAC,MAAM,GAAG;AAClB,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE;AACxB;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE;AACrD;AACA,IAAI,OAAO;AACX,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE;AACX,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;AAC1B,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,CAAC,GAAG;AACV;AACA,IAAI,0BAA0B,CAAC,CAAC,EAAE,CAAC,KAAK;AACxC,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrD,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC3B;AACA,UAAU,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACzB,QAAQ;AACR,MAAM;AACN,MAAM,MAAMA,QAAY,CAAC,mBAAmB;AAC5C,IAAI;AACJ,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAM,KAAK,GAAG,KAAK,IAAI,IAAI,cAAc,qBAAqB,KAAK;;AAE1E;AACA;AACA;AACA;AACA;AACA,MAAM,OAAO,uBAAuB,KAAK,mCAAmC,IAAI;AAChF,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,GAAG,KAAKC,KAAU,CAAC,GAAG,EAAEC,gBAAuB,EAAEC,gBAAuB,CAAC;AAC9F,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,GAAG,KAAKC,IAAS,CAAC,GAAG,CAAC;AAC3C,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,KAAKC,IAAS,CAAC,GAAG,CAAC;AAC5C,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,MAAM,CAACJ,KAAU,CAAC,GAAG,EAAEC,gBAAuB,EAAEC,gBAAuB,CAAC,CAAC;AACtG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,EAAEG,KAAU,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAChE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK;AAC5B;AACA;AACA;AACA,IAAI,MAAM,GAAG,GAAG;AAChB,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AAC7B,MAAM,IAAI,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AAC1B,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AAClC,QAAQ,IAAID,IAAS,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC;AACvC,QAAQ,IAAI,GAAG,IAAI,CAAC;AACpB,MAAM;AACN,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG;AAChC,IAAI;AACJ,IAAI,OAAO;AACX,EAAE,CAAC;AACH,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK;AAC3B,IAAI,MAAM,GAAG,GAAG;AAChB,IAAI,MAAM,CAAC,GAAGE,KAAU,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;AACnC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAChC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC;AACnC,IAAI;AACJ,IAAI,OAAO;AACX,EAAE,CAAC;AACH,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK;AAC7B,IAAI,OAAOD,KAAU,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK;AAClC,EAAE,CAAC;AACH,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK;AAC1B,IAAI,OAAO;AACX,EAAE,CAAC;AACH,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK;AAC5B,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG;AACjC,IAAI,OAAO,MAAM;AACjB,EAAE,CAAC;AACH,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,EAAEA,KAAU,CAAC,GAAG,EAAE;AACrD,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ;AAC1D,IAAI,MAAM,CAAC,OAAO,CAAC;AACnB,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,OAAO;AAC1C,GAAG,CAAC,CAAC;AACL,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK;AAC5B;AACA;AACA;AACA,IAAI,MAAM,GAAG,GAAG;AAChB,IAAI,MAAM,KAAK,GAAGL,KAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;AACtC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AACpC,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;AAC1C,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM;AAC5C,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG;AACjB,IAAI;AACJ,IAAI,OAAO;AACX,EAAE,CAAC;AACH,GAAG,IAAI,EAAE;;AAET;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,yBAAyB,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC;;AC/mClF;;;AAYA;AACA;AACA;AACA;AACO,MAAM,GAAG,4BAA4B,OAAO,QAAQ,KAAK,WAAW,GAAG,QAAQ,GAAG,EAAE;;AAa3F;AACA;AACA;AACyBO,OAAS,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,KAAK,sBAAsB;;AAQtD,0BAA0B,OAAO,SAAS,KAAK,WAAW,GAAG,IAAI,SAAS,EAAE,GAAG,IAAI;;AA4G5G;AACA;AACA;AACwBA,OAAS,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,KAAK,YAAY;;AAmBpE;AACA;AACA;AACqBA,OAAS,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,KAAK,SAAS;;AAgFvD,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,SAAS,GAAG,GAAG,CAAC;AAGtB,MAAM,aAAa,GAAG,GAAG,CAAC;AAE1B,MAAM,sBAAsB,GAAG,GAAG,CAAC;;AAE1C;AACA;AACA;AACqBA,OAAS,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,KAAK,aAAa;AAmBlE;;AC3RA;;;AAgCA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM,kBAAkB,GAAG,aAAa,IAAI,MAAM,EAAE,CAAC;AACrD;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,SAAS,EAAE;AAC1B,IAAI,IAAI,CAAC,CAAC,GAAG;AACb,EAAE;;AAEF,EAAE,OAAO,CAAC,GAAG;AACb,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;AACxB,EAAE;AACF;;AAEA,MAAM,OAAO,GAAG,kBAAkB,CAAC,YAAY;;AAE/C;AACA;AACA;AACA;AACA;AACO,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC;;AC5DvF;AACA;AACA;AACA;AACA;AACA;;;AAIA;AACA;AACA;AACA;AACA,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC;;AAE7D;AACA;AACA;AACA;AACA,MAAM,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE;;AAE5D;AACA;AACA;AACA;AACA,MAAM,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE;;AAE5D;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK;;AAE1D;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK;;AAE3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,CAAC,GAAG,IAAI,WAAW,CAAC;AAC1B,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChG,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChG,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChG,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChG,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChG,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChG,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChG,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE;AACtF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC;AAC9B,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE;AACtF,CAAC;;AAED;;AAEA,MAAM,MAAM,CAAC;AACb,EAAE,WAAW,CAAC,GAAG;AACjB,IAAI,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC3C;AACA,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;AACvC,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AACrB;AACA,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE;AACzC,EAAE;;AAEF,EAAE,WAAW,CAAC,GAAG;AACjB,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC;AACnB,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC;AACnB,IAAI,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAClC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE;AACjF,IAAI;AACJ,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACf,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACf,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACf,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACf,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACf,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACf,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACf,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACf,IAAI,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;AAC5C,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM;AACzE,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AAC9D,MAAM,CAAC,GAAG;AACV,MAAM,CAAC,GAAG;AACV,MAAM,CAAC,GAAG;AACV,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM;AACvB,MAAM,CAAC,GAAG;AACV,MAAM,CAAC,GAAG;AACV,MAAM,CAAC,GAAG;AACV,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM;AACxB,IAAI;AACJ,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;AACZ,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;AACZ,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;AACZ,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;AACZ,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;AACZ,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;AACZ,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;AACZ,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;AACZ,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE;AAChB,IAAI,IAAI,CAAC,GAAG;AACZ,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,GAAG;AACnC;AACA,MAAM,IAAI,CAAC,GAAG;AACd,MAAM,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjD,QAAQ,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE;AAClF,MAAM;AACN,MAAM,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;AACxB,QAAQ,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7B,QAAQ,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;AAChC,UAAU,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACrD,UAAU,CAAC;AACX,QAAQ;AACR,QAAQ,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAIpC,IAAW,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACvD,MAAM;AACN,MAAM,IAAI,CAAC,WAAW;AACtB,IAAI;AACJ;AACA,IAAI,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,KAAK;AACrC,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;AACzB,IAAI,IAAI,CAAC,GAAG;AACZ,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjC,MAAM,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACzD,QAAQ,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC;AAC1C,MAAM;AACN,IAAI;AACJ;AACA,IAAI,IAAI,CAAC,aAAa,EAAE;AACxB,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAIA,IAAW,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAC7E,IAAI;AACJ;AACA;AACA,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,GAAGqC,MAAY;AAChD,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG;AACpC,IAAI,IAAI,CAAC,WAAW;AACpB;AACA,IAAI,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,EAAE;AAChC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,MAAM,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE;AACrC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI;AACnD,MAAM;AACN,IAAI;AACJ,IAAI,OAAO;AACX,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI;;ACzJtD;AACA;AACA;AACA;AACA;AACA,MAAM,cAAc,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC;;AAE9C;AACA;AACA;AACA;AACA;AACA,MAAM,cAAc,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC;;AAE9C;AACA;AACA;AACA;AACA;AACA,MAAM,gBAAgB,GAAG,IAAI,SAAS,CAAC,YAAY,CAAC;;AAEpD;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,MAAM,IAAI;AAC7B,EAAE,MAAM,CAAC,GAAG,CAAC;AACb,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAC7C,EAAE;AACF,EAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;AAC1B,CAAC;;AAED;AACA;AACA;AACA,MAAM,UAAU,GAAG,CAAC,IAAI,KAAKC,QAAY,CAAC,UAAU,CAACC,MAAa,CAACC,SAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;AAoBzF;AACA;AACA;AACA;AACA,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,QAAQ;AACjC,EAAE,QAAQ,KAAK;AACf,MAAM,CAAC,IAAI,CAAC;AACZ,OAAO,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;AACtC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK;AACvD,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;;AAEzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,KAAK;AACrD;AACA,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC/B,IAAI,IAAI,YAAY,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE;AAC3C,MAAM,MAAM,UAAU,GAAGC,QAAU,EAAE;AACrC,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/D,IAAI;AACJ,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,EAAEC,OAAY,CAAC,MAAM,CAAC,CAAC;AAChD,EAAE;AACF,EAAE,gCAAgC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AACxD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,CAAC,YAAY,EAAE;AACnC,EAAE,MAAM,GAAG,aAAa;AACxB,EAAE,YAAY,GAAG,IAAI,GAAG,EAAE;AAC1B,EAAE,iBAAiB,GAAG,IAAI;AAC1B,EAAE,aAAa,GAAG,MAAM,CAAC,CAAC;AAC1B,EAAE;AACF,CAAC,GAAG,EAAE,KAAK;AACX,EAAE,IAAI,qBAAqB,GAAG,KAAK;AACnC,EAAE,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC,YAAY,EAAE,OAAO,CAAC;AAC/D,EAAE,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;AAC5B,IAAI,KAAK,EAAE;AACX,MAAM,QAAQ,EAAE,CAAC,KAAK,KAAK;AAC3B,QAAQ,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;AACxD,QAAQ,OAAO,SAAS,CAAC,QAAQ,IAAI,IAAI,IAAI,SAAS,CAAC,YAAY,IAAI;AACvE,MAAM;AACN,KAAK;AACL,IAAI,GAAG,EAAE,cAAc;AACvB,IAAI,KAAK,EAAE;AACX;AACA;AACA;AACA,MAAM,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK;AACnC,QAAQ,OAAO;AACf,UAAU,IAAI,EAAE,YAAY;AAC5B,UAAU,GAAG,EAAE,YAAY,CAAC,GAAG;AAC/B,UAAU,OAAO;AACjB,UAAU,QAAQ,EAAE,IAAI;AACxB,UAAU,YAAY,EAAE,IAAI;AAC5B,UAAU,cAAc,EAAE,KAAK;AAC/B,UAAU,mBAAmB,EAAE,KAAK;AACpC,UAAU,YAAY,EAAE,IAAI;AAC5B,UAAU,MAAM;AAChB,UAAU,YAAY;AACtB,UAAU;AACV;AACA,MAAM,CAAC;AACP,MAAM,KAAK,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK;AAClC,QAAQ,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC;AACjD,QAAQ,IAAI,MAAM,KAAK,SAAS,EAAE;AAClC,UAAU,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC;AACtD,UAAU,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AACpC,YAAY,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;AAC1C,UAAU;AACV,QAAQ;AACR,QAAQ,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,KAAK;AACvE;AACA,QAAQ,WAAW,CAAC,cAAc,GAAG,MAAM,KAAK,SAAS;AACzD,UAAU,CAAC,CAAC,MAAM,CAAC,cAAc;AACjC,QAAQ,WAAW,CAAC,mBAAmB,GAAG,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC,MAAM,CAAC,mBAAmB;AACzH,QAAQ,IAAI,OAAO,CAAC,eAAe,KAAK,IAAI,EAAE;AAC9C,UAAU;AACV,YAAY,MAAM,KAAK,SAAS;AAChC,aAAa,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI;AACnE,YAAY;AACZ;AACA,YAAYC,OAAiB,CAAC,CAAC,EAAE,MAAM;AACvC,cAAc,IAAI,OAAO,CAAC,eAAe,IAAI,IAAI,EAAE;AACnD,gBAAgB;AAChB,cAAc;AACd,cAAc,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,EAAE;AAC1C,gBAAgB,OAAO,CAAC,eAAe;AACvC,kBAAkB,MAAM,CAAC,QAAQ;AACjC,kBAAkB,MAAM,CAAC,YAAY;AACrC,kBAAkB;AAClB,iBAAiB;AACjB,cAAc,CAAC,MAAM;AACrB,gBAAgB,OAAO,CAAC,eAAe;AACvC,kBAAkB,MAAM,CAAC,QAAQ;AACjC,kBAAkB,MAAM,CAAC,QAAQ;AACjC,kBAAkB;AAClB,iBAAiB;AACjB;AACA,gBAAgB,OAAO,WAAW,CAAC,OAAO;AAC1C,gBAAgB,OAAO,WAAW,CAAC,QAAQ;AAC3C,gBAAgB,OAAO,WAAW,CAAC,YAAY;AAC/C,gBAAgB,OAAO,CAAC,GAAG,CAAC,MAAM;AAClC,kBAAkB,OAAO,CAAC,mBAAmB;AAC7C,oBAAoB,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC;AAClD,mBAAmB;AACnB,gBAAgB,CAAC,CAAC;AAClB,cAAc;AACd,YAAY,CAAC,CAAC;AACd,UAAU;AACV,QAAQ;AACR,QAAQ,OAAO;AACf,MAAM;AACN,KAAK;AACL,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK;AACpB,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC5B,MAAM,IAAI,OAAO,IAAI,IAAI,EAAE;AAC3B;AACA,QAAQ,OAAO,CAAC,cAAc,EAAE;AAChC,MAAM;AACN,MAAM,aAAa,EAAE;AACrB,MAAM,OAAO;AACb,QAAQ,MAAM,EAAE,MAAM;AACtB,UAAU,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACzD,UAAU;AACV,YAAY,WAAW,CAAC,QAAQ,IAAI,IAAI,IAAI,WAAW,CAAC,YAAY,IAAI;AACxE,YAAY;AACZ,YAAY;AACZ;AACA;AACA;AACA,cAAc,qBAAqB;AACnC,cAAc,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa;AAClD,gBAAgB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AACpD,eAAe,KAAK;AACpB,cAAc;AACd,cAAc,qBAAqB,GAAG,IAAI;AAC1C,cAAc;AACd,gBAAgB,WAAW,CAAC,YAAY,KAAK,KAAK;AAClD,gBAAgB,CAAC,WAAW,CAAC;AAC7B,gBAAgB;AAChB,gBAAgB,MAAM,gBAAgB,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5E;AACA;AACA;AACA,gBAAgB,MAAM,EAAE,GAAG,gBAAgB,IAAI,gBAAgB,CAAC,WAAW;AAC3E,gBAAgB,IAAI,EAAE,EAAE;AACxB,kBAAkB,EAAE,CAAC,aAAa,EAAE;AACpC,gBAAgB;AAChB,cAAc;AACd,cAAc,OAAO,CAAC,GAAG,CAAC,MAAM;AAChC,qCAAqC,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,KAAK;AACxE,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,YAAY,CAAC;AACvE,kBAAkB,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC7D,gBAAgB,CAAC,EAAE,cAAc,CAAC;AAClC,cAAc,CAAC,CAAC;AAChB,YAAY;AACZ,UAAU;AACV,QAAQ,CAAC;AACT,QAAQ,OAAO,EAAE,MAAM;AACvB,UAAU,OAAO,CAAC,OAAO,EAAE;AAC3B,QAAQ;AACR;AACA,IAAI;AACJ,GAAG,CAAC;AACJ,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,wBAAwB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,KAAK;AACvE,EAAE,IAAI,MAAM,IAAI,IAAI,EAAE;AACtB,IAAI,OAAO;AACX,EAAE;AACF,EAAE,MAAM,WAAW,GAAG,QAAQ,KAAK,IAAI;AACvC,KAAK,MAAM,GAAG,CAAC,IAAI,QAAQ,IAAI,CAAC,CAAC;AACjC,IAAI,kCAAkC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;AACxE,EAAE,IAAI,CAAC,WAAW,EAAE;AACpB,IAAI,OAAO;AACX,EAAE;AACF,EAAE,MAAM,SAAS,GAAG,yCAAyC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AACrF,EAAE,OAAO,SAAS,KAAK,IAAI,GAAG,SAAS,GAAG;AAC1C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,wBAAwB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK;AAClE,EAAE,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE;AACzE,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE;AAC/B,MAAM,EAAE,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAC/C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE;AACvC,MAAM,MAAM,MAAM,GAAG,kCAAkC;AACvD,QAAQ,OAAO,CAAC,GAAG;AACnB,QAAQ,OAAO,CAAC,IAAI;AACpB,QAAQ,MAAM,CAAC,MAAM;AACrB,QAAQ,OAAO,CAAC;AAChB,OAAO;AACP;AACA;AACA,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE;AAC3B,QAAQ,EAAE,CAAC,YAAY,CAAC,uBAAuB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5D,MAAM;AACN,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE;AAC5C,MAAM,MAAM,MAAM,GAAG,kCAAkC;AACvD,QAAQ,OAAO,CAAC,GAAG;AACnB,QAAQ,OAAO,CAAC,IAAI;AACpB,QAAQ,MAAM,CAAC,MAAM;AACrB,QAAQ,OAAO,CAAC;AAChB,OAAO;AACP,MAAM,MAAM,IAAI,GAAG,kCAAkC;AACrD,QAAQ,OAAO,CAAC,GAAG;AACnB,QAAQ,OAAO,CAAC,IAAI;AACpB,QAAQ,MAAM,CAAC,IAAI;AACnB,QAAQ,OAAO,CAAC;AAChB,OAAO;AACP,MAAM,MAAM,SAAS,GAAG,4BAA4B,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC;AACpF,MAAM,IAAI,SAAS,KAAK,IAAI,EAAE;AAC9B,QAAQ,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC;AAClC,MAAM;AACN,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,MAAM,GAAG,kCAAkC;AACrD,QAAQ,OAAO,CAAC,GAAG;AACnB,QAAQ,OAAO,CAAC,IAAI;AACpB,QAAQ,MAAM,CAAC,MAAM;AACrB,QAAQ,OAAO,CAAC;AAChB,OAAO;AACP,MAAM,IAAI,IAAI,GAAG,kCAAkC;AACnD,QAAQ,OAAO,CAAC,GAAG;AACnB,QAAQ,OAAO,CAAC,IAAI;AACpB,QAAQ,MAAM,CAAC,IAAI;AACnB,QAAQ,OAAO,CAAC;AAChB,OAAO;AACP,MAAM,IAAI,MAAM,IAAI,IAAI,EAAE;AAC1B,QAAQ,MAAM,GAAG,wBAAwB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC;AACnF,QAAQ,IAAI,GAAG,wBAAwB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;AAC7E,MAAM;AACN;AACA;AACA,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE;AAC3B,QAAQ,MAAM,GAAG,IAAI;AACrB,MAAM;AACN,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE;AACzB,QAAQ,IAAI,GAAG,MAAM;AACrB,MAAM;AACN,MAAM,IAAI,MAAM,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AAC5C,QAAQ,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5F,MAAM;AACN,IAAI;AACJ,EAAE;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,uBAAuB,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK;AAC7C,EAAE,MAAM,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;AAClC,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE;AACtB,IAAI,OAAO,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG;AAC3C,EAAE,CAAC,MAAM;AACT,IAAI,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI;AAClC,EAAE;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,4BAA4B,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,KAAK;AAClE,EAAE,IAAI,MAAM,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AACxC,IAAI,OAAO;AACX,EAAE;AACF,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;AAC1E,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;AACtE,EAAE,IAAI;AACN,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE;AACjD,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,MAAM,EAAE,aAAa;AAC3B,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM;AACN,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE;AAClC,MAAM,OAAO,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;AAC7D,IAAI;AACJ,IAAI,OAAO;AACX,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,OAAO,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;AAC3D,EAAE;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA,MAAM,oBAAoB,GAAG,CAAC,SAAS,EAAE,KAAK,KAAK;AACnD,EAAE,MAAM,IAAI,sBAAsB,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM;AAC1D,EAAE,OAAO;AACT,IAAI,IAAI;AACR;AACA,IAAI,KAAK,EAAE,IAAI,KAAK,WAAW,sBAAsB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,GAAG,SAAS;AACxF,IAAI,MAAM,EAAE,kCAAkC;AAC9C,MAAM,KAAK,CAAC,SAAS,CAAC,MAAM;AAC5B,MAAM,SAAS,CAAC,IAAI;AACpB,MAAM,SAAS,CAAC;AAChB,KAAK;AACL,IAAI,IAAI,EAAE,kCAAkC;AAC5C,MAAM,KAAK,CAAC,SAAS,CAAC,IAAI;AAC1B,MAAM,SAAS,CAAC,IAAI;AACpB,MAAM,SAAS,CAAC;AAChB,KAAK;AACL,IAAI,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM;AACrC,IAAI,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;AAC7B;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAM,kBAAkB,CAAC;AACzB;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI,GAAG,EAAE,EAAE;AAClD,IAAI,IAAI,CAAC,IAAI,GAAG,YAAY;AAC5B;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI;AAC/B,IAAI,IAAI,CAAC,GAAG,GAAG,WAAW,EAAE;AAC5B,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE;AAC5B,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AACxD;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG;AAC/B;AACA;AACA;AACA,IAAI,IAAI,CAAC,0BAA0B,GAAG,IAAI;AAC1C,IAAI,IAAI,CAAC,qBAAqB,GAAG,MAAM;AACvC,MAAM,IAAI,IAAI,CAAC,0BAA0B,KAAK,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;AACpF,QAAQ,IAAI,CAAC,0BAA0B,GAAG,oBAAoB;AAC9D,UAAU,IAAI;AACd,UAAU,IAAI,CAAC,eAAe,CAAC;AAC/B,SAAS;AACT,MAAM;AACN,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,oBAAoB,GAAG,MAAM;AACtC,MAAM,IAAI,CAAC,0BAA0B,GAAG,IAAI;AAC5C,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,mBAAmB,GAAG,IAAI;AACnC,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,GAAG,CAAC,GAAG;AACb,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK;AACtE,EAAE;;AAEF,EAAE,oBAAoB,CAAC,GAAG;AAC1B,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,OAAO;AACjD,IAAI,IAAIC,SAAqB,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,EAAE;AACpE;AACA,MAAMD,OAAiB,CAAC,CAAC,EAAE,MAAM;AACjC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI;AACvC,MAAM,CAAC,CAAC;AACR,MAAM,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,qBAAqB,EAAE;AAC7D,IAAI;AACJ,IAAI,OAAO,IAAI,CAAC;AAChB,EAAE;;AAEF,EAAE,qBAAqB,CAAC,GAAG;AAC3B,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,YAAY,EAAE;;AAE/D,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,UAAU,IAAI,IAAI,EAAE,OAAO;;AAElE,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE;AAC1D,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,YAAY,CAAC;AAChE,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC;;AAE5D;AACA;AACA;AACA,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE;AACxC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B;AACA,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,SAAS,EAAE;AACnD,QAAQ,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,cAAc,CAAC;AACtD,MAAM;AACN,IAAI;;AAEJ,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,qBAAqB,EAAE;AAClD,IAAI,MAAM,eAAe,GAAGE,GAAO,CAAC,eAAe;;AAEnD,IAAI,OAAO,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC;AACtD,MAAM,QAAQ,CAAC,IAAI;AACnB,SAAS,MAAM,CAAC,UAAU,IAAI,eAAe,CAAC,WAAW,IAAI,CAAC,CAAC;AAC/D,MAAM,QAAQ,CAAC,GAAG,KAAK,MAAM,CAAC,WAAW,IAAI,eAAe,CAAC,YAAY,IAAI,CAAC;AAC9E,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE,cAAc,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE;AAC1C,IAAI,IAAI,CAAC,YAAY,EAAE;AACvB,MAAM,YAAY,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC;AACrE,IAAI;AACJ,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ;AACjC,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE;AACjE,KAAK;AACL,EAAE;;AAEF,EAAE,gBAAgB,CAAC,GAAG;AACtB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACxB,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM;AACnB,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACxD,QAAQ,sBAAsB;AAC9B,uCAAuC,CAAC;AACxC,UAAU,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM;AAC3C,UAAU;AACV;AACA,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AACjC;AACA,MAAM,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO;AACjC,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI;AACnD,QAAQ,IAAIC,KAAY,CAACC,QAAe,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC;AACpE,OAAO;AACP,MAAM,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACxE,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;AACvC,IAAI,CAAC,CAAC;AACN,EAAE;;AAEF,EAAE,cAAc,CAAC,GAAG;AACpB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACxB,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM;AACnB;AACA;AACA;AACA,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,0BAA0B,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS;AACxG,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACxD,QAAQ,sBAAsB;AAC9B,uCAAuC,CAAC;AACxC,UAAU,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM;AAC3C,UAAU;AACV;AACA,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AACjC;AACA,MAAM,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO;AACjC,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI;AACnD,QAAQ,IAAID,KAAY,CAACC,QAAe,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC;AACpE,OAAO;AACP,MAAM,IAAI,GAAG,EAAE;AACf;AACA;AACA;AACA;AACA;AACA,QAAQ,MAAM,aAAa,GAAGzC,GAAQ,CAACR,GAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;AACpF,QAAQ,MAAM,WAAW,GAAGQ,GAAQ,CAACR,GAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;;AAEhF,QAAQ,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;AACjF,MAAM;AACN,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ;AACnC,QAAQ,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;AAC1E,OAAO;AACP,IAAI,CAAC,CAAC;AACN,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE,eAAe,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE;AACxD;AACA;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG;AAC7B,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI;AAC/B,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AACrC,IAAI;AACJ,IAAI,IAAI,QAAQ,YAAY,UAAU,IAAI,YAAY,YAAY,UAAU,EAAE;AAC9E,MAAM,IAAI,EAAE,QAAQ,YAAY,UAAU,CAAC,IAAI,EAAE,YAAY,YAAY,UAAU,CAAC,EAAE;AACtF;AACA,QAAQ2B,cAAoB,EAAE;AAC9B,MAAM;AACN,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AAC3C,MAAM,CAAC,CAAC,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC;AAC/C,MAAM,YAAY,GAAG,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;AAC3C,MAAM,CAAC,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC;AAC3C,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;AACvC,MAAM,IAAI,WAAW,CAAC,KAAK,KAAK,IAAI,EAAE;AACtC;AACA;AACA;AACA;AACA,QAAQ,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI;AAC9D,UAAU,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;AACpD,SAAS;AACT,QAAQ,WAAW,GAAG,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC;AACxD,MAAM,CAAC,MAAM;AACb;AACA;AACA;AACA,QAAQ,MAAM,cAAc;AAC5B,UAAU,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE;AACzE,QAAQ,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW;AACvC,UAAU,cAAc;AACxB,UAAU,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;AAC/B,SAAS;AACT,QAAQ,MAAM,IAAI,0BAA0B,cAAc,CAAC,SAAS,CAAC,CAAC;AACtE,QAAQ,MAAM,OAAO,iCAAiC,IAAI,CAAC,OAAO,CAAC;AACnE,QAAQ,WAAW,iCAAiC,OAAO,CAAC,IAAI,CAAC;AACjE,MAAM;AACN,IAAI;AACJ;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACxB,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM;AACnB,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC,WAAW,KAAK;AAC3C;AACA;AACA;AACA;AACA;AACA,QAAQ,MAAM,GAAG,GAAG,WAAW,CAAC,iBAAiB;AACjD,QAAQ,IAAI,GAAG,EAAE;AACjB,UAAU,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK;AAClC,YAAY,CAAC,CAAC,qBAAqB,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;AACnE,UAAU,CAAC,CAAC;AACZ,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK;AAC7C,UAAU,MAAM,IAAI,GAAG,IAAI,KAAK;AAChC,cAAc,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC,MAAM;AAC7C,cAAc,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC;AACxC,UAAU,OAAO;AACjB,YAAY,IAAI;AAChB,YAAY,IAAI;AAChB,YAAY,KAAK,EAAE,YAAY;AAC/B,cAAc,WAAW,CAAC,YAAY;AACtC,cAAc,WAAW,CAAC,MAAM;AAChC,cAAc;AACd;AACA;AACA,QAAQ,CAAC;AACT;AACA,QAAQ,MAAM,eAAe,GAAG,CAAC,CAAC,uBAAuB;AACzD,UAAU,WAAW;AACrB,UAAU,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE;AACrD,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AACrB,UAAU;AACV,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC5D,YAAY,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,YAAY;AAC3C,YAAY;AACZ,YAAY,OAAO,sBAAsB;AACzC,cAAc,CAAC;AACf,cAAc,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM;AAC/C,cAAc,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE;AACxD,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc;AACd;AACA,UAAU,CAAC,MAAM;AACjB;AACA;AACA,YAAY,OAAO;AACnB,UAAU;AACV,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AACpC;AACA,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO;AACnC,UAAU,CAAC;AACX,UAAU,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI;AACrD,UAAU,IAAIqB,KAAY,CAACC,QAAe,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC;AACtE,SAAS;AACT,QAAQ,IAAI,CAAC,eAAe,CAAC,QAAQ;AACrC,UAAU,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE;AAC7D,SAAS;AACT,MAAM,CAAC,EAAE,cAAc,CAAC;AACxB,IAAI,CAAC,CAAC;AACN,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE,YAAY,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE;AACrC,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;AACtC,IAAI,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AACzE,IAAI;AACJ,MAAM,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,IAAI,IAAI;AACvD,MAAM,SAAS,CAAC,YAAY,IAAI;AAChC,MAAM;AACN;AACA,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,YAAY,CAAC;AACrE,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM;AACnB;AACA;AACA;AACA;AACA,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;AAC5D,MAAM,CAAC,CAAC,qBAAqB;AAC7B,QAAQ,WAAW;AACnB,QAAQ,WAAW,CAAC,SAAS;AAC7B,QAAQ,CAAC,MAAM,KAAK;AACpB,UAAU,IAAI,MAAM,CAAC,WAAW,KAAK,CAAC,CAAC,IAAI,EAAE;AAC7C,YAAY,MAAM,IAAI,gCAAgC,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI;AACnG,YAAY,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;AAC7C,UAAU;AACV,QAAQ;AACR,OAAO;AACP,MAAM,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;AAC1C,MAAM,WAAW,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC;AACrD;AACA;AACA,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAC1B,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACxD,QAAQ,qBAAqB;AAC7B,mDAAmD,CAAC;AACpD,UAAU,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM;AAC3C,UAAU;AACV;AACA,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AACjC,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG;AACnD;AACA,MAAM,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO;AAC/B,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI;AACnD,QAAQ,IAAID,KAAY,CAACC,QAAe,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC;AACpE,OAAO;AACP,MAAM,wBAAwB,CAAC,EAAE,EAAE,IAAI,CAAC,0BAA0B,EAAE,IAAI,EAAE,MAAM,CAAC;AACjF,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,CAAC,MAAM,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;AACjI,MAAM;AACN,QAAQ,IAAI,CAAC,0BAA0B,KAAK,IAAI,IAAI,IAAI,CAAC,oBAAoB;AAC7E,QAAQ;AACR,QAAQ,EAAE,CAAC,cAAc,EAAE;AAC3B,MAAM;AACN,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;AACvC,IAAI,CAAC,CAAC;AACN,EAAE;;AAEF;AACA;AACA;AACA,EAAE,mBAAmB,CAAC,CAAC,GAAG,EAAE;AAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM;AAC5B,MAAM,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;AACrD,MAAM,IAAI,CAAC,0BAA0B,GAAG,oBAAoB;AAC5D,QAAQ,IAAI;AACZ,QAAQ,IAAI,CAAC,eAAe,CAAC;AAC7B,OAAO;AACP,IAAI,CAAC,EAAE,cAAc,CAAC;AACtB,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE,QAAQ,CAAC,CAAC,eAAe,EAAE;AAC7B,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;AACpD,IAAI,IAAI,CAAC,eAAe,GAAG,eAAe;AAC1C,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,uBAAuB,EAAE,IAAI,CAAC,qBAAqB,CAAC;AACpE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,sBAAsB,EAAE,IAAI,CAAC,oBAAoB,CAAC;AAClE,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAChD,EAAE;;AAEF,EAAE,OAAO,CAAC,GAAG;AACb,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;AACtC,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI;AAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAClD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,qBAAqB,CAAC;AACrE,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC,oBAAoB,CAAC;AACnE,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,qBAAqB,GAAG;AAC9B,EAAE,EAAE;AACJ,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,QAAQ;AACV,EAAE,YAAY;AACd,EAAE;AACF,KAAK;AACL,EAAE,MAAM,IAAI,+BAA+B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAChE,EAAE,IAAI,IAAI,KAAK,SAAS,EAAE;AAC1B,IAAI,IAAI,EAAE,YAAY,CAAC,CAAC,UAAU,EAAE;AACpC,MAAM,OAAO,sBAAsB;AACnC,QAAQ,EAAE;AACV,QAAQ,MAAM;AACd,QAAQ,IAAI;AACZ,QAAQ,QAAQ;AAChB,QAAQ,YAAY;AACpB,QAAQ;AACR;AACA,IAAI,CAAC,MAAM;AACX,MAAM,MAAMvB,mBAAyB,EAAE;AACvC,IAAI;AACJ,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,sBAAsB,GAAG;AAC/B,EAAE,EAAE;AACJ,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,QAAQ;AACV,EAAE,YAAY;AACd,EAAE;AACF,KAAK;AACL,EAAE,MAAM,QAAQ,GAAG,EAAE;AACrB;AACA;AACA;AACA,EAAE,MAAM,cAAc,GAAG,CAAC,IAAI,KAAK;AACnC,IAAI,IAAI,IAAI,YAAY,CAAC,CAAC,UAAU,EAAE;AACtC,MAAM,MAAM,CAAC,GAAG,qBAAqB;AACrC,QAAQ,IAAI;AACZ,QAAQ,MAAM;AACd,QAAQ,IAAI;AACZ,QAAQ,QAAQ;AAChB,QAAQ,YAAY;AACpB,QAAQ;AACR,OAAO;AACP,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;AACtB,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACxB,MAAM;AACN,IAAI,CAAC,MAAM;AACX;AACA;AACA;AACA,MAAM,MAAM,SAAS,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;AACtF,MAAM,IAAI,SAAS,YAAY,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE;AAC3H,QAAQ,IAAI,CAAC,UAAU,CAAC;AACxB,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACjC,UAAU,GAAG,SAAS,CAAC,OAAO;AAC9B,SAAS,CAAC;AACV,QAAQ,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI;AACrC,UAAU,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;AACpC,QAAQ,CAAC,CAAC;AACV,MAAM;AACN;AACA,MAAM,MAAM,EAAE,GAAG,wBAAwB;AACzC,QAAQ,IAAI;AACZ,QAAQ,MAAM;AACd,QAAQ,IAAI;AACZ,QAAQ,QAAQ;AAChB,QAAQ,YAAY;AACpB,QAAQ;AACR,OAAO;AACP,MAAM,IAAI,EAAE,KAAK,IAAI,EAAE;AACvB,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK;AAClC,UAAU,IAAI,SAAS,KAAK,IAAI,EAAE;AAClC,YAAY,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;AACpC,UAAU;AACV,QAAQ,CAAC,CAAC;AACV,MAAM;AACN,IAAI;AACJ,EAAE,CAAC;AACH,EAAE,IAAI,QAAQ,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE;AAC5D,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC;AACxC,EAAE,CAAC,MAAM;AACT,IAAI,CAAC,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC;AAC9E,OAAO,OAAO,CAAC,cAAc,CAAC;AAC9B,EAAE;AACF,EAAE,IAAI;AACN,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC5C,IAAI,IAAI,QAAQ,KAAK,SAAS,EAAE;AAChC,MAAM,IAAI,CAAC,SAAS,wBAAwB,EAAE,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE;AAClE,QAAQ,KAAK,CAAC,OAAO,GAAG;AACxB,YAAY,cAAc,CAAC,SAAS,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;AACzE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE;AAC/B,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,wBAAwB,EAAE,CAAC,KAAK,GAAG,YAAY,CAAC,EAAE;AAC7E,QAAQ,KAAK,CAAC,OAAO,GAAG;AACxB,YAAY,cAAc,CAAC,OAAO,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;AACvE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE;AAC7B,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC;AAC1D,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC;AAC9B,IAAI,OAAO;AACX,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;AACd;AACA,yBAAyB,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,WAAW,KAAK;AAC5D,4BAA4B,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC;AAC1D,IAAI,CAAC,EAAE,cAAc,CAAC;AACtB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;AAC3B,IAAI,OAAO;AACX,EAAE;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,wBAAwB,GAAG;AACjC,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,KAAK;AACP,EAAE,QAAQ;AACV,EAAE,YAAY;AACd,EAAE;AACF,KAAK;AACL,EAAE,MAAM,KAAK,GAAG,EAAE;AAClB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,cAAc,CAAC;AACrE,EAAE,IAAI;AACN,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;AAC7B,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AACxF,IAAI;AACJ,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;AACd;AACA,yBAAyB,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,WAAW,KAAK;AAC9D,4BAA4B,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC;AAC5D,IAAI,CAAC,EAAE,cAAc,CAAC;AACtB,IAAI,OAAO;AACX,EAAE;AACF;AACA,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK;AACjD,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE;AAC9B,EAAE,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AACrC;AACA,IAAI,MAAM,EAAE,IAAI,CAAC,IAAI;AACrB,IAAI,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI;AAClD,GAAG,CAAC,CAAC;AACL,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACxB,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;AAC/B,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,yBAAyB,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK;AAClD,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/C,EAAE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;AAChC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC/B,IAAI,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE;AAC3C,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC;AACjC,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,CAAC,MAAM;AACb,IAAI,CAAC;AACL,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,MAAM,+BAA+B,CAAC,CAAC,EAAE,IAAI;AAC7C;AACA,GAAG;AACH,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;AAC9B,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+BAA+B,GAAG,CAAC,IAAI,EAAE,IAAI;AACnD,EAAE,IAAI,YAAY;AAClB,MAAM,uBAAuB,CAAC,IAAI,EAAE,IAAI;AACxC,MAAM,yBAAyB,CAAC,IAAI,EAAE,IAAI,CAAC;;AAE3C;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;;AAEjE;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK;AACvC,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;AACxE,EAAE,IAAI,EAAE;AACR,IAAI,IAAI,CAAC,MAAM;AACf,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM;AACtE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;AAC9C,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AACvB,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;AACzB,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;AACzB,IAAI,EAAE,GAAG,GAAG,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC;AACrC,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtD,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM,qBAAqB,GAAG,CAAC,KAAK,KAAK;AACzC,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO;AACjC,EAAE,MAAM,GAAG,GAAG,EAAE;AAChB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClB,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE;AAClB,MAAM,MAAM,SAAS,GAAG,EAAE;AAC1B,MAAM,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAC3E,QAAQ,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,MAAM;AACN,MAAM,CAAC,EAAE;AACT,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;AACzB,IAAI,CAAC,MAAM;AACX,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,IAAI;AACJ,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA;AACA;AACA,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK;AAC3C,EAAE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE;AAC/B,EAAE,OAAO,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;AACvC,IAAI,KAAK,CAAC,KAAK,4CAA4C,CAAC,CAAC,EAAE,CAAC;AAChE,MAAM,CAAC,CAAC,MAAM,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI;AACtD,MAAMwB,IAAW,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;AACvE,MAAMC,OAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,IAAI,wBAAwB,SAAS,KAAK;AAC5E,QAAQ,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,CAAC;AAClD,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK;;AAEtC,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,0BAA0B,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC;;AAE/F;AACA;AACA,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,UAAU,OAAO;AACjB,QAAQ;;AAER,QAAQ,OAAO,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,0BAA0B,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,KAAK;AAChH,MAAM,CAAC;AACP;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK;AAC1C,EAAE;AACF,IAAI,KAAK,YAAY,CAAC,CAAC,UAAU,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC;AAC9D,IAAI,aAAa,CAAC,KAAK,EAAE,KAAK;AAC9B,IAAI;AACJ,IAAI,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,KAAK,CAAC;AAC1D,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,iBAAiB,CAAC,MAAM;AACrD,MAAM,UAAU,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC;AACpD,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;AACtC,QAAQ,eAAe,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;AACpD;AACA,EAAE;AACF,EAAE,OAAO,KAAK,YAAY,CAAC,CAAC,OAAO,IAAI,KAAK,YAAY,KAAK;AAC7D,IAAI,eAAe,CAAC,KAAK,EAAE,KAAK;AAChC,CAAC;;AAED;AACA;AACA;AACA;AACA,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,QAAQ;AACxC,EAAE,MAAM,KAAK,QAAQ;AACrB,GAAG,MAAM,YAAY,KAAK,IAAI,QAAQ,YAAY,KAAK;AACvD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3D,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK;AACpB,GAAG,CAAC;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,0BAA0B,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,KAAK;AAC3D,EAAE,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE;AACnC,EAAE,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;AAChD,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM;AACpC,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM;AACpC,EAAE,MAAM,MAAM,GAAG3C,GAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;AAC/C,EAAE,IAAI,IAAI,GAAG,CAAC;AACd,EAAE,IAAI,KAAK,GAAG,CAAC;AACf,EAAE,IAAI,gBAAgB,GAAG,KAAK;AAC9B,EAAE,OAAO,IAAI,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE;AAChC,IAAI,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC;AACjC,IAAI,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC;AACjC,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE;AACxD,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;AAC/C,MAAM;AACN,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,IAAI,GAAG,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE;AACzC,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACnD,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACnD,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE;AAC1D,MAAM,gBAAgB,GAAG,IAAI;AAC7B,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;AACjD,MAAM;AACN,IAAI;AACJ,EAAE;AACF,EAAE,OAAO;AACT,IAAI,cAAc,EAAE,IAAI,GAAG,KAAK;AAChC,IAAI;AACJ;AACA,CAAC;;AAED;AACA;AACA;AACA,MAAM,UAAU,GAAG,CAAC,KAAK,KAAK;AAC9B,EAAE,IAAI,GAAG,GAAG,EAAE;AACd;AACA;AACA;AACA,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM;AACtB,EAAE,MAAM,MAAM,GAAG,EAAE;AACnB,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;AACrB,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE;AACpB,MAAM,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,aAAa,EAAE;AAC/D,QAAQ,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG;AAC5B,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,aAAa,EAAE;AACvD,QAAQ,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI;AACpC,MAAM;AACN,IAAI;AACJ,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK;AACf,EAAE;AACF,EAAE,OAAO;AACT,IAAI,GAAG;AACP,IAAI;AACJ;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,KAAK;AAC7C,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC;AACjC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC;AAC3C,EAAE,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AACrC,IAAI,MAAM,qBAAqB,CAAC,CAAC,EAAE,IAAI;AACvC,IAAI,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC;AAC1E,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU;AAC9C,IAAI,GAAG;AACP,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE;AACxC,GAAG;AACH,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC;AAC7B,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC;AAC7B,EAAE,KAAK,CAAC,UAAU;AAClB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AAC9E,GAAG;AACH,CAAC;;AAED,MAAM,mBAAmB,GAAG,4BAA4B;AACxD;AACA;AACA;AACA,MAAM,cAAc,GAAG,QAAQ,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ;;AAEtF;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK;AAC7C;AACA;AACA;AACA,EAAE,MAAM,KAAK,GAAG,EAAE;AAClB,EAAE,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE;AAChC;AACA,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtE,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA;AACA;AACA,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK;AAC3C,EAAE,MAAM,MAAM,GAAG,EAAE;AACnB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC1B,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;AACtC,MAAM,MAAM,aAAa,GAAG4C,cAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7G,MAAM,MAAM,CAAC,aAAa,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK;AAC7G,IAAI;AACJ,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,eAAe,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,KAAK;AAC1D,EAAE;AACF,IAAI,YAAY,YAAY,CAAC,CAAC,UAAU;AACxC,IAAI,YAAY,CAAC,QAAQ,KAAK,KAAK,CAAC,IAAI,CAAC;AACzC,IAAI;AACJ,IAAI,MAAM,IAAI,KAAK,CAAC,qBAAqB;AACzC,EAAE;AACF,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC;AACvC;AACA,EAAE,IAAI,YAAY,YAAY,CAAC,CAAC,UAAU,EAAE;AAC5C,IAAI,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,EAAE;AAClD,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK;AAC9B,IAAI,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AAC9B,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;AAChC,QAAQ,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,SAAS,EAAE;AACjE,UAAU,YAAY,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AACrD,QAAQ;AACR,MAAM,CAAC,MAAM;AACb,QAAQ,YAAY,CAAC,eAAe,CAAC,GAAG,CAAC;AACzC,MAAM;AACN,IAAI;AACJ;AACA,IAAI,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;AACjC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;AACrC,QAAQ,YAAY,CAAC,eAAe,CAAC,GAAG,CAAC;AACzC,MAAM;AACN,IAAI;AACJ,EAAE;AACF;AACA,EAAE,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;AAChD,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM;AACpC,EAAE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,EAAE;AAC1C,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM;AACpC,EAAE,MAAM,MAAM,GAAG5C,GAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;AAC/C,EAAE,IAAI,IAAI,GAAG,CAAC;AACd,EAAE,IAAI,KAAK,GAAG,CAAC;AACf;AACA,EAAE,OAAO,IAAI,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE;AAChC,IAAI,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC;AACjC,IAAI,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC;AACjC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE;AACzD,MAAM,IAAI,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;AACzC;AACA,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;AACtC,MAAM,CAAC,MAAM;AACb,QAAQ;AACR,MAAM;AACN,IAAI;AACJ,EAAE;AACF;AACA,EAAE,OAAO,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE;AAC7C,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACnD,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE;AAC3D,MAAM,IAAI,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;AAC3C;AACA,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;AACxC,MAAM,CAAC,MAAM;AACb,QAAQ;AACR,MAAM;AACN,IAAI;AACJ,EAAE;AACF,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM;AACnB;AACA,IAAI,OAAO,SAAS,GAAG,IAAI,GAAG,KAAK,GAAG,CAAC,IAAI,SAAS,GAAG,IAAI,GAAG,KAAK,GAAG,CAAC,EAAE;AACzE,MAAM,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC;AACnC,MAAM,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC;AACnC,MAAM,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACrD,MAAM,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACrD,MAAM,IAAI,KAAK,YAAY,CAAC,CAAC,OAAO,IAAI,KAAK,YAAY,KAAK,EAAE;AAChE,QAAQ,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;AAC5C,UAAU,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;AACzC,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC;AACjB,MAAM,CAAC,MAAM;AACb,QAAQ,IAAI,UAAU,GAAG,KAAK,YAAY,CAAC,CAAC,UAAU;AACtD,UAAU,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC;AACrC,QAAQ,IAAI,WAAW,GAAG,MAAM,YAAY,CAAC,CAAC,UAAU;AACxD,UAAU,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC;AACvC,QAAQ,IAAI,UAAU,IAAI,WAAW,EAAE;AACvC;AACA,UAAU,MAAM,YAAY,GAAG,0BAA0B;AACzD,yCAAyC,KAAK;AAC9C,wCAAwC,KAAK;AAC7C,YAAY;AACZ,WAAW;AACX,UAAU,MAAM,aAAa,GAAG,0BAA0B;AAC1D,yCAAyC,MAAM;AAC/C,wCAAwC,MAAM;AAC9C,YAAY;AACZ,WAAW;AACX,UAAU;AACV,YAAY,YAAY,CAAC,gBAAgB,IAAI,CAAC,aAAa,CAAC;AAC5D,YAAY;AACZ,YAAY,WAAW,GAAG,KAAK;AAC/B,UAAU,CAAC,MAAM;AACjB,YAAY,CAAC,YAAY,CAAC,gBAAgB,IAAI,aAAa,CAAC;AAC5D,YAAY;AACZ,YAAY,UAAU,GAAG,KAAK;AAC9B,UAAU,CAAC,MAAM;AACjB,YAAY,YAAY,CAAC,cAAc,GAAG,aAAa,CAAC;AACxD,YAAY;AACZ,YAAY,UAAU,GAAG,KAAK;AAC9B,UAAU,CAAC,MAAM;AACjB,YAAY,WAAW,GAAG,KAAK;AAC/B,UAAU;AACV,QAAQ;AACR,QAAQ,IAAI,UAAU,EAAE;AACxB,UAAU,eAAe;AACzB,YAAY,CAAC;AACb,0CAA0C,KAAK;AAC/C,wCAAwC,KAAK;AAC7C,YAAY;AACZ,WAAW;AACX,UAAU,IAAI,IAAI,CAAC;AACnB,QAAQ,CAAC,MAAM,IAAI,WAAW,EAAE;AAChC,UAAU,eAAe;AACzB,YAAY,CAAC;AACb,0CAA0C,MAAM;AAChD,wCAAwC,MAAM;AAC9C,YAAY;AACZ,WAAW;AACX,UAAU,KAAK,IAAI,CAAC;AACpB,QAAQ,CAAC,MAAM;AACf,UAAU,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrD,UAAU,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AACtC,UAAU,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE;AACpC,YAAY,+BAA+B,CAAC,KAAK,EAAE,IAAI;AACvD,WAAW,CAAC;AACZ,UAAU,IAAI,IAAI,CAAC;AACnB,QAAQ;AACR,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK;AAC5C,IAAI;AACJ,MAAM,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;AACtE,MAAM;AACN,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACvC;AACA;AACA,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACjD,IAAI,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC,EAAE;AAC5B,MAAM,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzF,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;AACxC,IAAI;AACJ,IAAI,IAAI,IAAI,GAAG,KAAK,GAAG,SAAS,EAAE;AAClC,MAAM,MAAM,GAAG,GAAG,EAAE;AACpB,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,SAAS,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AACrD,QAAQ,GAAG,CAAC,IAAI,CAAC,+BAA+B,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACrE,MAAM;AACN,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC;AACpC,IAAI;AACJ,EAAE,CAAC,EAAE,cAAc,CAAC;AACpB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,KAAK;AACtC,EAAE,EAAE,KAAK,YAAY,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI;;AAEpE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,GAAG,IAAI;;AAExB,MAAM,SAAS,CAAC;AAChB;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE;AACjC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI;AACpB,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG;AAClB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK;AACtB,EAAE;;AAEF,EAAE,KAAK,CAAC,GAAG;AACX,IAAI,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9D,IAAI,IAAI,SAAS,IAAI,SAAS,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE;AAC1E,MAAM,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACnC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC;AACtC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC5B,IAAI;AACJ,EAAE;AACF;;AAEA,MAAM,gBAAgB,CAAC;AACvB;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,OAAO,GAAG,EAAE,EAAE;AAC7B,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,EAAE;;AAEF;AACA;AACA;AACA,EAAE,QAAQ,CAAC,GAAG;AACd,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;AACzB,EAAE;;AAEF;AACA;AACA;AACA,EAAE,YAAY,CAAC,GAAG;AAClB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK;AAC7B,EAAE;;AAEF;AACA;AACA;AACA,EAAE,OAAO,CAAC,GAAG;AACb,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK;AACnC,EAAE;;AAEF,EAAE,OAAO,iBAAiB,CAAC,GAAG;AAC9B,IAAI,MAAM,GAAG,kDAAkD,aAAa,CAAC;AAC7E,IAAI,aAAa,GAAG,IAAI;AACxB,IAAI,MAAM,OAAO,GAAG,EAAE;AACtB,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK;AACjC,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK;AACpC,QAAQ,OAAO,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACrD,MAAM,CAAC,CAAC;AACR,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,IAAI,gBAAgB,CAAC,OAAO;AACvC,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,CAAC,WAAW,GAAG,gBAAgB,CAAC,iBAAiB,EAAE,EAAE,OAAO,GAAG,KAAK,KAAK;AAC7F,EAAE,IAAI,OAAO,GAAG,IAAI;AACpB,EAAE,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE;AACjC,IAAI,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,EAAE;AAC5C,IAAI,IAAI;AACR,MAAM,SAAS,CAAC,KAAK,EAAE;AACvB,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB;AACA;AACA;AACA,MAAM,IAAI,GAAG,YAAY,UAAU,EAAE;AACrC,QAAQ,IAAI,OAAO,IAAI,OAAO,EAAE;AAChC;AACA,UAAU,WAAW,CAAC,YAAY,EAAE;AACpC,QAAQ;AACR,QAAQ,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE;AACpC,UAAUqC,OAAiB,CAAC,CAAC,EAAE,MAAM,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AACpE,QAAQ;AACR,QAAQ;AACR,MAAM;AACN,MAAM,MAAM;AACZ,IAAI;AACJ,IAAI,OAAO,GAAG,KAAK;AACnB,IAAI,WAAW,CAAC,YAAY,EAAE;AAC9B,EAAE;AACF,CAAC;;AAED,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,KAAK;AACtC,EAAE,IAAI,CAAC,aAAa,EAAE;AACtB,IAAI,aAAa,GAAG,IAAI,GAAG,EAAE;AAC7B;AACA,IAAIA,OAAiB,CAAC,CAAC,EAAE,WAAW,CAAC;AACrC,EAAE;AACF,EAAEO,cAAkB,CAAC,aAAa,EAAE,IAAI,EAAEzD,MAAU,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AACrE,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,kCAAkC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,KAAK;AACnE,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE;AACjB,IAAI,OAAO,CAAC,CAAC,mCAAmC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;AAC5D,EAAE;AACF;AACA;AACA;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,GAAG,IAAI,gCAAgC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI;AAC/F,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,EAAE;AACnC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;AAChC,MAAM,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,EAAE;AAC5B,QAAQ,OAAO,CAAC,CAAC,mCAAmC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;AAC/D,MAAM,CAAC,MAAM;AACb,QAAQ,GAAG,IAAI,CAAC,CAAC,OAAO;AACxB,MAAM;AACN,MAAM,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;AACrD,QAAQ,CAAC,gCAAgC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI;AACpE,MAAM,CAAC,MAAM;AACb,QAAQ,GAAG;AACX,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM;AACtD,UAAU,GAAG,EAAE;AACf,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI;AACtF,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;AACtC;AACA,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,GAAG,IAAI,gCAAgC,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI;AACtH,QAAQ;AACR,MAAM;AACN,IAAI,CAAC,MAAM;AACX,MAAM,MAAM,SAAS,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,QAAQ;AACvF,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,IAAI,GAAG,GAAG,SAAS,EAAE;AAChD,QAAQ,CAAC,gCAAgC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI;AAChE,QAAQ,GAAG,EAAE;AACb,MAAM,CAAC,MAAM;AACb,QAAQ,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE;AAC3D;AACA,UAAU,OAAO,IAAI,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI;AAClI,QAAQ;AACR,QAAQ,GAAG,IAAI,SAAS;AACxB,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;AACvD,UAAU,CAAC,gCAAgC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI;AACtE,QAAQ,CAAC,MAAM;AACf,UAAU,IAAI,GAAG,KAAK,CAAC,EAAE;AACzB;AACA,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM;AACrD,YAAY,OAAO,IAAI,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI;AACpI,UAAU;AACV,UAAU,GAAG;AACb,YAAY,CAAC,yBAAyB,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM;AACtD,YAAY,GAAG,EAAE;AACjB,UAAU,CAAC,QAAQ,CAAC,KAAK,IAAI,0BAA0B,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI;AAC9E;AACA,UAAU,IAAI,CAAC,KAAK,IAAI,EAAE;AAC1B;AACA,YAAY,CAAC,gCAAgC,uBAAuB,uBAAuB,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI;AACxH,UAAU;AACV,QAAQ;AACR,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;AACpB,MAAM,MAAMgC,cAAoB;AAChC,IAAI;AACJ,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE;AAChE,MAAM,OAAO,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK;AAC3D,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,CAAC,CAAC,mCAAmC,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE;AACrE,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,yBAAyB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,KAAK;AACzD,EAAE,IAAI,MAAM,KAAK,IAAI,EAAE;AACvB,IAAI,OAAO;AACX,EAAE;AACF,EAAE,MAAM,OAAO,GAAG,CAAC,CAAC,0CAA0C,CAAC,MAAM,EAAE,CAAC,CAAC;AACzE,EAAE,OAAO,OAAO,KAAK,IAAI;AACzB,IAAI,OAAO,CAAC,IAAI,YAAY,CAAC,CAAC,OAAO;AACrC,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI;AACxB,IAAI,MAAM,IAAI;AACd,CAAC;;AAED,MAAM,sBAAsB,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK;AAC/C,EAAE,IAAI,MAAM,GAAG,IAAI;AACnB,EAAE,IAAI,KAAK,GAAG,IAAI;AAClB,EAAE,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;AAC3B,IAAI,KAAK,GAAG,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC;AACnC,EAAE,CAAC,MAAM;AACT,IAAI,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC;AAClE,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;AACtD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,kCAAkC,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,KAAK;AACjF,EAAE,MAAM,UAAU,GAAG,CAAC,CAAC,0CAA0C,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5E,EAAE,IAAI,UAAU,KAAK,IAAI,KAAK,UAAU,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AACvH,IAAI,OAAO;AACX,EAAE;AACF,EAAE,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI;AAC5B,EAAE,IAAI,GAAG,GAAG,CAAC;AACb,EAAE,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,EAAE;AACtC,IAAI,GAAG,GAAG,UAAU,CAAC,KAAK;AAC1B,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACzD,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM;AACvB,IAAI,IAAI,CAAC,GAAG,CAAC;AACb,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,EAAE;AACnE,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE;AACtB,QAAQ,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI;AAC/D,QAAQ,CAAC,EAAE;AACX,QAAQ,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;AACpC,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO;AAC1B,QAAQ,CAAC,MAAM;AACf,UAAU,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,UAAU,IAAI,MAAM,IAAI,IAAI,EAAE;AAC9B,YAAY,OAAO;AACnB,UAAU;AACV,UAAU,GAAG,uBAAuB,CAAC,MAAM,EAAE,QAAQ;AACrD,QAAQ;AACR,MAAM;AACN,MAAM,CAAC,0BAA0B,CAAC,CAAC,KAAK,CAAC;AACzC,IAAI;AACJ,IAAI,GAAG,IAAI,CAAC,CAAC;AACb,EAAE;AACF,EAAE,OAAO,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;AACvD;AACA,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;AACpC;AACA,IAAI,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;AACxD,MAAM,GAAG,IAAI,CAAC,CAAC;AACf,MAAM,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,MAAM;AAC3D;AACA,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;AACzB,QAAQ,MAAM,WAAW,gCAAgC,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI;AACzE,QAAQ,IAAI,WAAW,KAAK,IAAI,EAAE;AAClC,UAAU;AACV,QAAQ;AACR,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE;AACxB,UAAU,IAAI,WAAW,YAAY,CAAC,CAAC,OAAO,EAAE;AAChD,YAAY,GAAG,IAAI,WAAW,CAAC,OAAO;AACtC,UAAU,CAAC,MAAM;AACjB,YAAY,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;AACnD,YAAY,IAAI,MAAM,IAAI,IAAI,EAAE;AAChC,cAAc,OAAO;AACrB,YAAY;AACZ,YAAY,GAAG,uBAAuB,CAAC,MAAM,EAAE,QAAQ;AACvD,UAAU;AACV,QAAQ;AACR,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK;AACnB,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,kCAAkC,MAAM,CAAC;AACjD,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC;AACzB,EAAE,IAAI,yBAAyB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;AACpD,IAAI,OAAO;AACX,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC7B,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;AACf,IAAI,OAAO;AACX,EAAE;AACF,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9B,EAAE,OAAO,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,mBAAmB,GAAG,CAAC,IAAI,KAAK;AACtC,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;AAC9C,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK;AAC/C,IAAI,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC;AAC/B,IAAI,OAAO,IAAI,IAAI,IAAI;AACvB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;AAC5D,MAAM,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG;AACrC,EAAE,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,KAAK;AAC7D,EAAE,IAAI,GAAG,GAAG,aAAa,GAAG,CAAC;AAC7B,EAAE,IAAI,IAAI,GAAG,QAAQ;AACrB,EAAE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;AACtD,IAAI,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACpC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE;AAChC,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAClC,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ;AACnC,IAAI;AACJ,IAAI,GAAG,IAAI,CAAC;AACZ,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1B,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;AACpD,MAAM,OAAO;AACb,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACzB,IAAI,OAAO;AACX,EAAE;AACF,EAAE,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;AAC/D,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,yCAAyC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK;AAC9E,EAAE,IAAI,GAAG,GAAG,CAAC;AACb,EAAE,IAAI,SAAS,GAAG,CAAC;AACnB,EAAE,OAAO,SAAS,GAAG,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE;AACrD,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;AACzC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,QAAQ,GAAG,MAAM,EAAE;AACvC,MAAM;AACN,IAAI;AACJ,IAAI,GAAG,IAAI,KAAK,CAAC,QAAQ;AACzB,EAAE;AACF,EAAE,IAAI,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE;AACtC,IAAI,OAAO;AACX,EAAE;AACF,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;AAC7C,EAAE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;;AAExC;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,KAAK,GAAG,CAAC,aAAa,EAAE,QAAQ,KAAK;AAC7C;AACA;AACA,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,EAAE;AAC7B,MAAM,MAAM,QAAQ,GAAG,aAAa,IAAI,MAAM,GAAG,GAAG,CAAC;AACrD,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,CAAC;AAC5C,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,QAAQ,CAAC,QAAQ,GAAG,CAAC;AAC9D,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC;AAClE,IAAI;AACJ,IAAI,OAAO,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ;AAC1D,EAAE,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,aAAa,GAAG,KAAK,KAAK;AAC3D,IAAI,IAAI,UAAU,GAAG,CAAC;AACtB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE;AACzC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACjC,QAAQ,UAAU,EAAE;AACpB,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,UAAU,GAAG,CAAC;AACtB,IAAI,IAAI,UAAU,GAAG,EAAE;AACvB,IAAI,IAAI,UAAU,GAAG,IAAI;AACzB,IAAI,IAAI,MAAM,GAAG,CAAC;AAClB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE;AAChD,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACvB,QAAQ,UAAU,EAAE;AACpB,QAAQ,IAAI,UAAU,KAAK,UAAU,EAAE;AACvC,UAAU,UAAU,GAAG,MAAM;AAC7B,UAAU,UAAU,GAAG,KAAK;AAC5B,QAAQ;AACR,MAAM;AACN,MAAM,MAAM,IAAI,KAAK,CAAC,QAAQ;AAC9B,IAAI;AACJ,IAAI,IAAI,UAAU,KAAK,IAAI,KAAK,aAAa,KAAK,UAAU,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,CAAC,CAAC,EAAE;AAC1F,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,OAAO,KAAK,CAAC,UAAU,EAAE,UAAU;AACvC,EAAE,CAAC;;AAEH;AACA;AACA;AACA;AACA,EAAE,MAAM,gBAAgB,GAAG,CAAC,KAAK;AACjC,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC;AACjF,EAAE,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW;;AAEzC,EAAE,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,KAAK,KAAK,gBAAgB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,CAAC;AACpG,EAAE,IAAI,KAAK,KAAK,IAAI,EAAE;AACtB,IAAI,OAAO;AACX,EAAE;;AAEF;AACA;AACA,EAAE,MAAM,MAAM,GAAG,eAAe;AAChC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,IAAI,KAAK,CAAC,WAAW,KAAK;AACxE,GAAG;AACH,EAAE,IAAI,MAAM,KAAK,IAAI,EAAE;AACvB,IAAI,OAAO;AACX,EAAE;;AAEF;AACA;AACA,EAAE,IAAI,mBAAmB,CAAC,WAAW,CAAC,EAAE;AACxC,IAAI,MAAM,OAAO,GAAG,eAAe,CAAC,gBAAgB,EAAE,IAAI,CAAC;AAC3D,IAAI,IAAI,OAAO,KAAK,IAAI,EAAE;AAC1B,MAAM,OAAO;AACb,IAAI;AACJ,EAAE;;AAEF;AACA;AACA,EAAE,OAAO,eAAe;AACxB,IAAI,CAAC,KAAK,KAAK,gBAAgB,CAAC,KAAK,CAAC;AACtC,MAAM,OAAO,KAAK,EAAE,IAAI,KAAK,CAAC,WAAW,KAAK,EAAE;AAChD,OAAO,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACtF,IAAI;AACJ;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,uBAAuB,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK;AAChD,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE;AACtB,IAAI,OAAO;AACX,EAAE;AACF,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,EAAE;AAC/C,IAAI,OAAO;AACX,EAAE;AACF,EAAE,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE;AAC/B,IAAI,IAAI,IAAI,YAAY,WAAW,EAAE;AACrC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;AAC9D,QAAQ,OAAO;AACf,MAAM;AACN,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE;AACvC,QAAQ,IAAI,QAAQ,GAAG,KAAK;AAC5B,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC7C,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE;AAC5B,YAAY,QAAQ,GAAG,IAAI;AAC3B,UAAU;AACV,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,QAAQ,EAAE;AACtB,UAAU,OAAO;AACjB,QAAQ;AACR,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;AACtC,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/C,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;AAC3C,QAAQ,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,KAAK,EAAE,EAAE;AACnF,UAAU,OAAO;AACjB,QAAQ;AACR,MAAM;AACN,IAAI;AACJ,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,kCAAkC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK;AACpF,EAAE,IAAI,WAAW,KAAK,IAAI,EAAE;AAC5B,IAAI,OAAO;AACX,EAAE;AACF,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AACrC,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;AAC1C,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AAChC,IAAI,OAAO;AACX,EAAE;AACF;AACA;AACA,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AAChC,IAAI,OAAO;AACX,EAAE;AACF,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AAC3D,IAAI,OAAO;AACX,EAAE;AACF,EAAE,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,EAAE;AAC1D,IAAI,OAAO;AACX,EAAE;AACF,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC;AACxE;AACA;AACA,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY;AAC5D,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI;AACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACrD,EAAE,IAAI,WAAW,IAAI,UAAU,EAAE;AACjC,IAAI,MAAM,QAAQ,GAAG,yCAAyC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AACtF,IAAI,OAAO,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK;AAC7C,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAyPD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,2BAA2B,GAAG;AACpC,EAAE,eAAe;AACjB,EAAE,YAAY;AACd,EAAE;AACF,KAAK,eAAe,KAAK,YAAY;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,oBAAoB,GAAG,CAAC,IAAI,KAAK;AACvC,EAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC/C,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC;AAChD,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7D,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC/C,EAAE,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAClE,EAAE,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;AAChE,EAAE,MAAM,iBAAiB,GAAG,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC7D,EAAE,MAAM,iBAAiB,GAAG,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC7D,EAAE,MAAM,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC;AAC9C,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC;AACpC,EAAE,MAAM,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC;AAC9C,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,uBAAuB,GAAG,CAAC,IAAI,KAAK;AAC1C,EAAE,OAAO;AACT,IAAI,KAAK,EAAE,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AAC9C,IAAI,KAAK,EAAE;AACX;AACA,CAAC;;AAED,MAAM,YAAY,GAAG,mBAAmB;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,iBAAiB,GAAG;AAC1B,EAAE,KAAK;AACP,EAAE,SAAS;AACX,EAAE,eAAe;AACjB,EAAE,YAAY;AACd,EAAE;AACF,KAAK;AACL,EAAE,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC/C,EAAE,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,EAAE;AACtE,IAAI,OAAO,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE;AAC7C,EAAE;AACF,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG;AACtB,EAAE,MAAM,WAAW,GAAG,EAAE;AACxB,EAAE;AACF,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI;AAC3B,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI;AAC/B,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK;AACpC,IAAI;AACJ;AACA,IAAI,OAAO,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE;AAC7C,EAAE;AACF,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,QAAQ,KAAK;AAClD,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE;AACpD,MAAM;AACN,IAAI;;AAEJ;AACA;AACA,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,IAAI,IAAI,EAAE;AACjC,MAAM,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE;AAChC,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AAC9B,QAAQ,IAAI,CAAC,KAAK,GAAG,SAAS;AAC9B,MAAM,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACjD;AACA,QAAQ,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAE,IAAI,CAAC;AACrE,MAAM;AACN,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;AAC7B,QAAQ,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACvC,MAAM;AACN,MAAM,IAAI,MAAM,GAAG,kCAAkC;AACrD,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,IAAI;AACnB,QAAQ,CAAC,CAAC,8BAA8B,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;AAC1D,QAAQ,MAAM,CAAC,OAAO,CAAC;AACvB,OAAO;AACP,MAAM,IAAI,IAAI,GAAG,kCAAkC;AACnD,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,IAAI;AACnB,QAAQ,CAAC,CAAC,8BAA8B,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;AACxD,QAAQ,MAAM,CAAC,OAAO,CAAC;AACvB,OAAO;AACP,MAAM,IAAI,MAAM,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AAC5C,QAAQ,MAAM,OAAO,GAAG3B,GAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;AAC/D,QAAQ,MAAM,GAAGQ,GAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;AAC1C,QAAQ,IAAI,GAAGA,GAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;AACtC,QAAQ,WAAW,CAAC,IAAI;AACxB,UAAU,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE;AACtE,YAAY,GAAG,EAAE,QAAQ,GAAG,EAAE;AAC9B,YAAY,IAAI,EAAE;AAClB,WAAW;AACX,SAAS;AACT,QAAQ,MAAM,IAAI,GAAGA,GAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;AAC3C,QAAQ,MAAM,EAAE,GAAGR,GAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;AACzC,QAAQ,WAAW,CAAC,IAAI;AACxB,UAAU,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE;AACvE,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,cAAc,EAAE;AAC5B,WAAW;AACX,SAAS;AACT,MAAM;AACN,IAAI;AACJ,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,WAAW;AACpD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG;AACtB,EAAE,SAAS;AACX,EAAE;AACF,IAAI,oBAAoB,GAAG,2BAA2B;AACtD,IAAI,aAAa,GAAG,oBAAoB;AACxC,IAAI,gBAAgB,GAAG,uBAAuB;AAC9C,IAAI,YAAY,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC;AACpC,GAAG,GAAG,EAAE;AACR,EAAE,gBAAgB,GAAG;AACrB;AACA,EAAE,IAAI,MAAM,CAAC;AACb,IAAI,GAAG,EAAE,gBAAgB;AACzB,IAAI,KAAK,EAAE;AACX,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;AACtB,QAAQ,OAAO,iBAAiB;AAChC,UAAU,KAAK;AACf,UAAU,SAAS;AACnB,UAAU,oBAAoB;AAC9B,UAAU,aAAa;AACvB,UAAU;AACV;AACA,MAAM,CAAC;AACP,MAAM,KAAK,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAChD,QAAQ,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACxD,QAAQ,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACzD,QAAQ,MAAM,cAAc,GAAG,MAAM,IAAI,MAAM,CAAC,cAAc;AAC9D,QAAQ;AACR,UAAU,EAAE,CAAC,UAAU;AACvB,UAAU,CAAC,cAAc;AACzB,UAAU,uBAAuB,CAAC,EAAE,EAAE,QAAQ,CAAC,GAAG;AAClD,UAAU;AACV;AACA;AACA,UAAU,OAAO,aAAa,CAAC;AAC/B,QAAQ;AACR,QAAQ;AACR,UAAU,cAAc;AACxB,WAAW,YAAY,IAAI,YAAY,CAAC,gBAAgB;AACxD,UAAU;AACV,UAAU,OAAO,iBAAiB;AAClC,YAAY,QAAQ;AACpB,YAAY,SAAS;AACrB,YAAY,oBAAoB;AAChC,YAAY,aAAa;AACzB,YAAY;AACZ;AACA,QAAQ;AACR,QAAQ,IAAI,EAAE,CAAC,UAAU,EAAE;AAC3B,UAAU,OAAO,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG;AACjD,QAAQ;AACR,QAAQ,OAAO;AACf,MAAM;AACN,KAAK;AACL,IAAI,KAAK,EAAE;AACX,MAAM,WAAW,EAAE,CAAC,KAAK,KAAK;AAC9B,QAAQ,OAAO,gBAAgB,CAAC,QAAQ,CAAC,KAAK;AAC9C,MAAM;AACN,KAAK;AACL,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK;AACpB,MAAM,MAAM,iBAAiB,GAAG,MAAM;AACtC;AACA,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AAC1B,UAAU,OAAO,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC;AACrE,QAAQ;AACR,MAAM,CAAC;AACP;AACA;AACA;AACA;AACA,MAAM,MAAM,gBAAgB,GAAG,CAAC,UAAU,EAAE,IAAI,GAAG,EAAE,KAAK;AAC1D,QAAQ,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;AAChE;AACA;AACA,QAAQ,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACxC;AACA,QAAQ,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE;AACvD,QAAQ,IAAI,UAAU,CAAC,QAAQ,EAAE,EAAE;AACnC,UAAU,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC;AAC1D;AACA;AACA;AACA,UAAU,MAAM,MAAM,GAAG,kCAAkC;AAC3D,YAAY,SAAS,CAAC,MAAM;AAC5B,YAAY,MAAM,CAAC,IAAI;AACvB,YAAY,MAAM,CAAC,OAAO,CAAC;AAC3B,WAAW;AACX;AACA;AACA;AACA,UAAU,MAAM,IAAI,GAAG,kCAAkC;AACzD,YAAY,SAAS,CAAC,IAAI;AAC1B,YAAY,MAAM,CAAC,IAAI;AACvB,YAAY,MAAM,CAAC,OAAO,CAAC;AAC3B,WAAW;AACX,UAAU;AACV,YAAY,IAAI,CAAC,KAAK;AACtB,YAAY,OAAO,CAAC,MAAM,IAAI,IAAI;AAClC,YAAY,CAAC,CAAC,CAAC,wBAAwB;AACvC,cAAc,CAAC,CAAC,8BAA8B,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AACrE,cAAc;AACd,aAAa;AACb,YAAY,CAAC,CAAC,CAAC,wBAAwB;AACvC,cAAc,CAAC,CAAC,8BAA8B,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;AACnE,cAAc;AACd;AACA,YAAY;AACZ,YAAY,SAAS,CAAC,kBAAkB,CAAC,gBAAgB,EAAE;AAC3D,cAAc,MAAM;AACpB,cAAc;AACd,aAAa,CAAC;AACd,UAAU;AACV,QAAQ,CAAC,MAAM;AACf,UAAU,OAAO,CAAC,MAAM,IAAI,IAAI;AAChC,UAAU,kCAAkC;AAC5C,YAAY,MAAM,CAAC,GAAG;AACtB,YAAY,MAAM,CAAC,IAAI;AACvB,YAAY,CAAC,CAAC,8BAA8B,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AACnE,YAAY,MAAM,CAAC,OAAO,CAAC;AAC3B,WAAW,KAAK;AAChB,UAAU;AACV;AACA,UAAU,SAAS,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,IAAI,CAAC;AAC9D,QAAQ;AACR,MAAM,CAAC;AACP,MAAM,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AAC/C,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC;AACzD,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,UAAU,EAAE,aAAa,CAAC;AAC1D,MAAM,OAAO;AACb,QAAQ,MAAM,EAAE,CAAC,UAAU,EAAE,SAAS,KAAK;AAC3C,UAAU,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;AAClE,UAAU,MAAM,oBAAoB,GAAG,CAAC;AACxC,YAAY,MAAM,EAAE,cAAc;AAClC,YAAY,SAAS,EAAE,GAAG;AAC1B,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG;AAClD,WAAW;AACX,UAAU,gBAAgB,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;AACvE,QAAQ,CAAC;AACT,QAAQ,OAAO,EAAE,MAAM;AACvB,UAAU,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC;AAChE,UAAU,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,UAAU,EAAE,aAAa,CAAC;AACjE,UAAU,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACpD,UAAU,SAAS,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,IAAI,CAAC;AAC9D,QAAQ;AACR;AACA,IAAI;AACJ,GAAG,CAAC;;AAEJ,MAAMqD,MAAI,GAAG,KAAK,IAAI;AACtB,EAAE,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW;AAChE,EAAE,IAAI,WAAW,IAAI,IAAI,EAAE;AAC3B,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,IAAI,OAAO;AACX,EAAE;AACF,CAAC;;AAED,MAAMC,MAAI,GAAG,KAAK,IAAI;AACtB,EAAE,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW;AAChE,EAAE,IAAI,WAAW,IAAI,IAAI,EAAE;AAC3B,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,IAAI,OAAO;AACX,EAAE;AACF,CAAC;;AAED,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;;AAEpD,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,cAAc,KAAK,EAAE,IAAI,YAAYC,MAAI,CAAC;AAC7E,EAAE,IAAI,CAAC,OAAO,YAAY,WAAW,CAAC;AACtC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,YAAYC,MAAI;AACnC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,YAAY,UAAU,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9F,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC;;AAE/B,MAAM,WAAW,GAAG,CAAC,EAAE,cAAc,GAAG,qBAAqB,EAAE,cAAc,GAAG,EAAE,EAAE,WAAW,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,MAAM,CAAC;AAC7H,EAAE,GAAG,EAAE,cAAc;AACrB,EAAE,KAAK,EAAE;AACT,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAK;AAC/B;AACA,MAAM,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;AACnD,MAAM,IAAI,YAAY,GAAG,WAAW;AACpC,MAAM,IAAI,CAAC,YAAY,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG;AAC9B,QAAQ,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;AACxF,QAAQ,YAAY,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE;AACpD,UAAU,cAAc,EAAE,IAAI,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAC1E,UAAU,YAAY,EAAE,CAAC,IAAI,KAAK,mBAAmB,CAAC,IAAI,EAAE,cAAc,CAAC;AAC3E,UAAU,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK;AACpE,SAAS,CAAC;AACV,QAAQ,MAAM,qBAAqB,GAAG,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,EAAE;AACrF,QAAQ,YAAY,CAAC,2BAA2B,GAAG,KAAK,CAAC,IAAI,CAAC,qBAAqB,IAAI,EAAE;AACzF,WAAW,MAAM,CAAC,QAAQ,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACpE,MAAM;AACN,MAAM,OAAO;AACb,QAAQ,WAAW,EAAE,YAAY;AACjC,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,UAAU,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;AACrD,QAAQ,UAAU,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM,GAAG;AACpD;AACA,IAAI,CAAC;AACL;AACA;AACA;AACA,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,KAAK;AACzC,MAAM,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO;AAC5D,MAAM,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW;AACzC,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;AACzD,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;AACzD,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,OAAO;AACf,UAAU,WAAW;AACrB,UAAU,OAAO,EAAE,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC1D,UAAU,UAAU;AACpB,UAAU;AACV;AACA,MAAM,CAAC,MAAM;AACb,QAAQ,IAAI,UAAU,KAAK,GAAG,CAAC,UAAU,IAAI,UAAU,KAAK,GAAG,CAAC,UAAU,EAAE;AAC5E,UAAU,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE;AACxC,YAAY,UAAU,EAAE,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;AACxD,YAAY,UAAU,EAAE,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG;AACvD,WAAW;AACX,QAAQ,CAAC,MAAM;AACf,UAAU,OAAO;AACjB,QAAQ;AACR,MAAM;AACN,IAAI;AACJ,GAAG;AACH,EAAE,IAAI,EAAE,IAAI,IAAI;AAChB,IAAI,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACtD,IAAI,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW;AACvE,IAAI,WAAW,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK;AAC1D,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;AACpC,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AAChF,MAAM;AACN,IAAI,CAAC,CAAC;AACN,IAAI,WAAW,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK;AAC3D,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;AACpC,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,0BAA0B;AAC9G,MAAM;AACN,IAAI,CAAC,CAAC;AACN,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,MAAM;AACrB,QAAQ,WAAW,CAAC,OAAO,EAAE;AAC7B;AACA;AACA,QAAQ,MAAM,sBAAsB,GAAG,WAAW,CAAC,2BAA2B;AAC9E,QAAQ,IAAI,sBAAsB,IAAI,WAAW,CAAC,GAAG,EAAE;AACvD,UAAU,sBAAsB,CAAC,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC9F,UAAU,WAAW,CAAC,2BAA2B,GAAG,IAAI;AACxD,QAAQ;AACR,MAAM;AACN;AACA,EAAE;AACF,CAAC,CAAC;;ACjpFF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,WAAW,EAAE;AACrC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE;AAClD,CAAC,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC9C,CAAC,OAAO,kCAAkC,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;AAC7G;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE;AAClD,CAAC,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC9C,CAAC,OAAO,kCAAkC,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,6BAA6B,GAAG,MAAM,6BAA6B,SAAS,gBAAgB,CAAC;AACjG,CAAC,WAAW,CAAC,QAAQ,EAAE,iBAAiB,EAAE;AAC1C,EAAE,KAAK,CAAC,QAAQ,CAAC;AACjB,EAAE,IAAI,CAAC,iBAAiB,GAAG,iBAAiB;AAC5C,CAAC;AACD;AACA;AACA;AACA,CAAC,OAAO,QAAQ,CAAC,IAAI,EAAE;AACvB,EAAE,OAAO,IAAI,6BAA6B,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC;AACjF,CAAC;AACD;AACA;AACA;AACA,CAAC,MAAM,GAAG;AACV,EAAE,OAAO;AACT,GAAG,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC1B,GAAG,iBAAiB,EAAE,IAAI,CAAC;AAC3B,GAAG;AACH,CAAC;AACD,CAAC;AACD;AACA;AACA;AACA;AACA,SAAS,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE;AACjD,CAAC,OAAO,IAAI,6BAA6B,CAAC,QAAQ,EAAE,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC1F;AACA;AACA;AACA;AACA;AACA,SAAS,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE;AAC1D,CAAC,MAAM,iBAAiB,GAAG,QAAQ,YAAY,6BAA6B,GAAG,QAAQ,CAAC,iBAAiB,GAAG,IAAI;AAChH,CAAC,IAAI,cAAc,CAAC,WAAW,CAAC,IAAI,iBAAiB,EAAE,OAAO;AAC9D,EAAE,QAAQ,EAAE,IAAI,6BAA6B,CAAC,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;AAChH,EAAE,SAAS,EAAE;AACb,EAAE;AACF,CAAC,MAAM,MAAM,GAAG,oBAAoB,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3D,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ;AAClD,CAAC,OAAO;AACR,EAAE,QAAQ,EAAE,IAAI,6BAA6B,CAAC,gBAAgB,EAAE,iBAAiB,KAAK,IAAI,IAAI,iBAAiB,KAAK,MAAM,GAAG,iBAAiB,GAAG,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAC/L,EAAE,SAAS,EAAE,MAAM,CAAC;AACpB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC;AACvC,CAAC,IAAI,EAAE,eAAe;AACtB,CAAC,QAAQ,EAAE,GAAG;AACd,CAAC,UAAU,GAAG;AACd,EAAE,OAAO;AACT,GAAG,QAAQ,EAAE,IAAI;AACjB,GAAG,KAAK,EAAE,SAAS;AACnB,GAAG,QAAQ,EAAE,IAAI;AACjB,GAAG,QAAQ,EAAE;AACb,GAAG;AACH,CAAC,CAAC;AACF,CAAC,UAAU,GAAG;AACd,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE;AAC9B,CAAC,CAAC;AACF,CAAC,QAAQ,GAAG;AACZ,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,mJAAmJ,CAAC;AACnQ,CAAC,CAAC;AACF,CAAC,cAAc,GAAG;AAClB,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,QAAQ,EAAE,WAAW,KAAK,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAChI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAC,QAAQ,KAAK,sBAAsB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAC9G,CAAC,CAAC;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO;AACT,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;AAC5C,IAAI,EAAE,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC;AACvC,IAAI,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,KAAK;AACvF,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI;AAC9B,IAAI,OAAOH,MAAI,CAAC,KAAK,CAAC;AACtB,GAAG,CAAC;AACJ,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;AAC5C,IAAI,EAAE,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC;AACvC,IAAI,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,KAAK;AACvF,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI;AAC9B,IAAI,OAAOC,MAAI,CAAC,KAAK,CAAC;AACtB,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,oBAAoB,GAAG;AACxB,EAAE,OAAO;AACT,GAAG,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC7C,GAAG,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC7C,GAAG,aAAa,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI;AACjD,GAAG;AACH,CAAC,CAAC;AACF,CAAC,qBAAqB,GAAG;AACzB,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC3H,EAAE,MAAM,mBAAmB,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;AACpE,EAAE,MAAM,sBAAsB,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI;AAC9D,EAAE,mBAAmB,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK;AAC5C,GAAG,MAAM,EAAE,WAAW,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9D,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE;AAC5B,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,IAAI,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;AAClC,GAAG;AACH,GAAG,MAAM,OAAO,GAAG,sBAAsB,GAAG,sBAAsB,CAAC,IAAI,CAAC,GAAG,MAAM;AACjF,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM;AAC3B,IAAI,MAAM,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC;AACtE,IAAI,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU;AAC5C,IAAI,WAAW,CAAC,OAAO,GAAG,MAAM;AAChC,KAAK,IAAI,cAAc,EAAE,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC;AACpE,KAAK,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,kBAAkB,EAAE,WAAW,CAAC,uBAAuB,CAAC;AAChF,KAAK,WAAW,CAAC,UAAU,GAAG,SAAS;AACvC,IAAI,CAAC;AACL,IAAI,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE;AAC5F,GAAG,CAAC,EAAE;AACN,EAAE,CAAC;AACH,EAAE,MAAM,kBAAkB,GAAG;AAC7B,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY;AAC/B,GAAG,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC;AAC/B,GAAG;AACH,EAAE,OAAO;AACT,GAAG,WAAW,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAC5C,GAAG,mBAAmB;AACtB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,IAAI,IAAI,MAAM,CAAC;AACxD,IAAI,GAAG,EAAE,IAAI,SAAS,CAAC,sBAAsB,CAAC;AAC9C,IAAI,iBAAiB,EAAE,CAAC,WAAW,KAAK;AACxC,KAAK,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,IAAI;AAClD,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,KAAK;AAC9C,KAAK,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,IAAI;AAC7C,KAAK,IAAI;AACT,MAAM,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE;AAC7B,MAAM,OAAO,IAAI;AACjB,KAAK,CAAC,CAAC,OAAO,KAAK,EAAE;AACrB,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI;AACpC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE;AACvC,OAAO,KAAK;AACZ,OAAO,MAAM,EAAE,IAAI,CAAC,MAAM;AAC1B,OAAO,oBAAoB,EAAE,MAAM;AACnC,QAAQ,IAAI,aAAa;AACzB,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC,GAAG,MAAM,IAAI,IAAI,aAAa,KAAK,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE;AACtG,OAAO;AACP,OAAO,CAAC;AACR,MAAM,OAAO,IAAI;AACjB,KAAK;AACL,IAAI;AACJ,IAAI;AACJ,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;AACnB,CAAC;AACD,CAAC,CAAC;AACF;AACA;AACG,IAACrE,aAAW,GAAG;;AC1LlB;AACA,SAAS,YAAY,CAAC,KAAK,EAAE;AAC7B,CAAC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;AACpE;AACA;AACA;AACA,MAAM,sBAAsB,GAAG,CAAC,MAAM,KAAK;AAC3C,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AAC3D,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,OAAO;AAClC,GAAG,QAAQ,EAAE,GAAG;AAChB,GAAG,GAAG,KAAK,CAAC;AACZ,GAAG;AACH,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE;AAC1B,CAAC,CAAC,CAAC;AACH,CAAC;AACD,MAAM,eAAe,GAAG,MAAM,IAAI;AAClC,MAAM,iBAAiB,GAAG,CAAC,IAAI,MAAM;AACrC,CAAC,GAAG,IAAI;AACR,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG;AAChD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA,MAAM,kBAAkB,GAAG,SAAS,CAAC,MAAM,CAAC;AAC5C,CAAC,IAAI,EAAE,oBAAoB;AAC3B,CAAC,QAAQ,EAAE,GAAG;AACd,CAAC,UAAU,GAAG;AACd,EAAE,OAAO;AACT,GAAG,QAAQ,EAAE,IAAI;AACjB,GAAG,IAAI,EAAE;AACT,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,KAAK,EAAE;AACX,IAAI;AACJ,GAAG,MAAM,EAAE,CAAC,IAAI,KAAK;AACrB,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AACjD,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC;AAC7C,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,6BAA6B,CAAC;AACvD,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK;AACpC,IAAI,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC/C,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,6BAA6B,CAAC;AACtD,IAAI,KAAK,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK;AACvC,IAAI,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;AAChE,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC;AACpC,IAAI,OAAO,MAAM;AACjB,GAAG,CAAC;AACJ,GAAG,eAAe,EAAE,CAAC,IAAI,KAAK;AAC9B,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE;AAC5C,IAAI,OAAO,uBAAuB,CAAC,IAAI,CAAC;AACxC,GAAG,CAAC;AACJ,GAAG,QAAQ,EAAE;AACb,GAAG;AACH,CAAC,CAAC;AACF,CAAC,QAAQ,GAAG;AACZ,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,kMAAkM,CAAC;AACjQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC;AACzH,CAAC,CAAC;AACF,CAAC,UAAU,GAAG;AACd,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;AACtB,CAAC,CAAC;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO;AACT,GAAG,UAAU,EAAE,CAAC,UAAU,KAAK,MAAM;AACrC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC;AAC1E,IAAI,OAAO,IAAI;AACf,GAAG,CAAC;AACJ,GAAG,IAAI,EAAE,CAAC,UAAU,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK;AACzC,IAAI,OAAO,CAAC,IAAI,CAAC,oKAAoK,CAAC;AACtL,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC;AACjD,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,qBAAqB,GAAG;AACzB,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO;AACnC,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;AAC9B,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI;AAChC,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC;AACrB,GAAG,GAAG,EAAE,IAAI,SAAS,CAAC,qCAAqC,CAAC;AAC5D,GAAG,IAAI,EAAE,MAAM;AACf,IAAI,MAAM,iBAAiB,GAAG,MAAM;AACpC,KAAK,OAAO,CAAC,KAAK,GAAG,sBAAsB,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;AACtE,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC;AACvD,IAAI,OAAO,CAAC,KAAK,GAAG,sBAAsB,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;AACrE,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACtD,IAAI,OAAO,EAAE,OAAO,EAAE,MAAM;AAC5B,KAAK,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACxD,KAAK,OAAO,CAAC,KAAK,GAAG,EAAE;AACvB,IAAI,CAAC,EAAE;AACP,GAAG;AACH,GAAG,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,SAAS,EAAE;AACxC,GAAG,aAAa,EAAE,CAAC,WAAW,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;AACtF,GAAG,gBAAgB,EAAE,CAAC,WAAW,KAAK,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,iBAAiB,CAAC,WAAW,CAAC;AACjG,GAAG,CAAC,CAAC;AACL,CAAC;AACD,CAAC,CAAC;AACF;AACA;AACG,IAACA,aAAW,GAAG;;ACpGlB;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAGwE,MAAI,CAAC,MAAM,CAAC;AAC7B,CAAC,IAAI,EAAE,KAAK;AACZ,CAAC,OAAO,EAAE,IAAI;AACd,CAAC,OAAO,EAAE,QAAQ;AAClB,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AAC9B,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;AAC9B,EAAE,OAAO,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;AAC/C,CAAC;AACD,CAAC,CAAC;AACF;AACA;AACG,IAACxE,aAAW,GAAG;;AChBlB;AACA;AACA;AACA;AACA,MAAMyE,YAAU,GAAG,8CAA8C;AACjE;AACA;AACA;AACA,MAAMC,YAAU,GAAG,8CAA8C;AACjE;AACA;AACA;AACA;AACA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;AAC9B,CAAC,IAAI,EAAE,WAAW;AAClB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO;AACT,GAAG,UAAU,EAAE,KAAK;AACpB,GAAG,cAAc,EAAE;AACnB,GAAG;AACH,CAAC,CAAC;AACF,CAAC,aAAa,GAAG;AACjB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE;AACzC,EAAE,OAAO,EAAE,KAAK,EAAE;AAClB,GAAG,OAAO,EAAE,IAAI;AAChB,GAAG,SAAS,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,eAAe;AAC/I,GAAG,UAAU,EAAE,CAAC,UAAU,KAAK;AAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;AACpC,IAAI,OAAO;AACX,KAAK,YAAY,EAAE,UAAU,CAAC,KAAK;AACnC,KAAK,KAAK,EAAE,CAAC,kBAAkB,EAAE,UAAU,CAAC,KAAK,CAAC,gBAAgB;AAClE,KAAK;AACL,GAAG;AACH,GAAG,EAAE;AACL,CAAC,CAAC;AACF,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE;AAChC,EAAE,OAAO;AACT,GAAG,MAAM;AACT,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;AAC/D,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AAC9B,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AACxC,CAAC,CAAC;AACF,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK;AAC9B,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;AACpE,CAAC,CAAC;AACF,CAAC,iBAAiB,EAAE;AACpB,EAAE,IAAI,EAAE,WAAW;AACnB,EAAE,KAAK,EAAE,QAAQ;AACjB,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;AACnC,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AACtB,GAAG,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7C,GAAG,IAAI,KAAK,EAAE;AACd,IAAI,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACxC,IAAI,MAAM,QAAQ,GAAG,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC;AACjD,IAAI,OAAO;AACX,KAAK,IAAI,EAAE,WAAW;AACtB,KAAK,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAClB,KAAK,IAAI,EAAE,YAAY;AACvB,KAAK,MAAM,EAAE;AACb,KAAK;AACL,GAAG;AACH,EAAE;AACF,EAAE;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO;AACT,GAAG,YAAY,EAAE,CAAC,UAAU,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK;AACnD,IAAI,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;AAClD,GAAG,CAAC;AACJ,GAAG,eAAe,EAAE,CAAC,UAAU,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK;AACtD,IAAI,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;AACrD,GAAG,CAAC;AACJ,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK;AAC3C,IAAI,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACxC,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,oBAAoB,GAAG;AACxB,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE;AACxE,CAAC,CAAC;AACF,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO,CAAC,aAAa,CAAC;AACxB,GAAG,IAAI,EAAED,YAAU;AACnB,GAAG,IAAI,EAAE,IAAI,CAAC;AACd,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO,CAAC,aAAa,CAAC;AACxB,GAAG,IAAI,EAAEC,YAAU;AACnB,GAAG,IAAI,EAAE,IAAI,CAAC;AACd,GAAG,CAAC,CAAC;AACL,CAAC;AACD,CAAC,CAAC;AACF;AACA;AACG,IAAC1E,aAAW,GAAG;;ACjGlB;AACA,MAAM,cAAc,GAAG,UAAU;AACjC,MAAM,eAAe,GAAG,WAAW;AACnC;AACA;AACA;AACA,MAAM,oBAAoB,GAAG,gBAAgB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACK,MAAC,UAAU,GAAGwE,MAAI,CAAC,MAAM,CAAC;AAC/B,CAAC,IAAI,EAAE,YAAY;AACnB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO;AACT,GAAG,YAAY,EAAE,UAAU;AAC3B,GAAG,cAAc,EAAE,EAAE;AACrB,GAAG,SAAS,EAAE,KAAK;AACnB,GAAG,cAAc,EAAE;AACnB,GAAG;AACH,CAAC,CAAC;AACF,CAAC,KAAK,EAAE,YAAY;AACpB,CAAC,OAAO,GAAG;AACX,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC;AACF,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE;AAChC,EAAE,OAAO;AACT,GAAG,IAAI;AACP,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;AAC/D,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,iBAAiB,EAAE,MAAM;AAC1B,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;AACpC,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE;AACvD,EAAE,OAAO;AACT,GAAG,IAAI,EAAE,YAAY;AACrB,GAAG,OAAO,EAAE,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG;AAC/D,GAAG;AACH,CAAC,CAAC;AACF,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AAC9B,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;AAC9B,EAAE,OAAO,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;AAC7C,CAAC,CAAC;AACF,CAAC,eAAe,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE;AAC1C,CAAC,WAAW,GAAG;AACf,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK;AAC5D,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,KAAK,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,EAAE;AAC9M,GAAG,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AAC3F,EAAE,CAAC,EAAE;AACL,CAAC,CAAC;AACF,CAAC,oBAAoB,GAAG;AACxB,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE;AACzE,CAAC,CAAC;AACF,CAAC,aAAa,GAAG;AACjB,EAAE,IAAI,SAAS,GAAG,iBAAiB,CAAC;AACpC,GAAG,IAAI,EAAE,oBAAoB;AAC7B,GAAG,IAAI,EAAE,IAAI,CAAC;AACd,GAAG,CAAC;AACJ,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,GAAG,iBAAiB,CAAC;AAC3F,GAAG,IAAI,EAAE,oBAAoB;AAC7B,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI;AAClB,GAAG,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;AACpC,GAAG,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;AAC9C,GAAG,aAAa,EAAE,MAAM;AACxB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC;AACrD,GAAG,CAAC;AACJ,GAAG,MAAM,EAAE,IAAI,CAAC;AAChB,GAAG,CAAC;AACJ,EAAE,OAAO,CAAC,SAAS,CAAC;AACpB,CAAC;AACD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,8BAA8B,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,KAAK;AAC1E,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK;AAC5B,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI;AAClC,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS;AAC5B,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,IAAI;AAC3C,CAAC,IAAI,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI;AAClE,CAAC,IAAI,aAAa,GAAG,EAAE;AACvB,CAAC,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;AACpG,EAAE,aAAa,GAAG,KAAK;AACvB,EAAE;AACF,CAAC;AACD,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE,OAAO,IAAI;AACnC,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;AAC3C,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC;AACnD,CAAC,IAAI,eAAe,GAAG,CAAC,IAAI,QAAQ,CAAC,UAAU,EAAE,OAAO,IAAI;AAC5D,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC;AACtD,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI;AAC7D,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC9C,CAAC,IAAI,YAAY,GAAG,KAAK;AACzB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC9B,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,YAAY,GAAG,IAAI;AAC1E,CAAC,CAAC,CAAC;AACH,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,IAAI;AAC/B,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS;AAC7D,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI;AAC3E,CAAC,MAAM,KAAK,GAAG,EAAE;AACjB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC9B,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACnB,CAAC,CAAC,CAAC;AACH,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;AACpC,CAAC,OAAO;AACR,EAAE,aAAa;AACf,EAAE,UAAU,EAAE,SAAS;AACvB,EAAE,aAAa,EAAE,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC;AACvC,EAAE;AACF,EAAE;AACF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,KAAK;AAC9E,CAAC,MAAM,OAAO,GAAG,8BAA8B,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC;AAC9E,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,KAAK;AAC3B,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK;AAC5B,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,OAAO;AAChE,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE;AACpB,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC;AAC9D,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;AAClD,CAAC,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjD,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;AACnD,CAAC,IAAI,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;AAC3B,CAAC,OAAO,IAAI;AACZ,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+BAA+B,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,KAAK;AAC5E,CAAC,OAAO,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC;AAC5F,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+BAA+B,GAAG,CAAC,QAAQ,EAAE,YAAY,KAAK;AACpE,CAAC,OAAO,SAAS,CAAC,MAAM,CAAC;AACzB,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,qBAAqB,CAAC;AAC1C,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,oBAAoB,GAAG;AACzB,GAAG,MAAM,YAAY,GAAG,MAAM,+BAA+B,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC;AAClG,GAAG,OAAO;AACV,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,YAAY,EAAE;AAClB,IAAI;AACJ,EAAE;AACF,EAAE,CAAC;AACH,CAAC;AACD;AACA;AACA,MAAM,cAAc,GAAG;AACvB,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC;AACX,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC;AACZ,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC;AACX,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC;AACZ,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC;AACX,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC;AACX,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC;AACV,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC;AACX,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC;AACV,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;AACV,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;AACT,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;AACV,CAAC,CAAC,CAAC,EAAE,GAAG;AACR,CAAC;AACD,MAAM,cAAc,GAAG,4BAA4B;AACnD;AACA;AACA;AACA;AACA,MAAM,2BAA2B,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,eAAe,CAAC,CAAC;AACxF;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO,CAAC,GAAG,EAAE;AACtB,CAAC,IAAI,SAAS,GAAG,GAAG;AACpB,CAAC,IAAI,MAAM,GAAG,EAAE;AAChB,CAAC,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,cAAc,EAAE,OAAO,SAAS,IAAI,KAAK,EAAE;AAC3E,EAAE,MAAM,IAAI,OAAO;AACnB,EAAE,SAAS,IAAI,KAAK;AACpB,CAAC;AACD,CAAC,OAAO,MAAM;AACd;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,GAAG,EAAE;AAC3B,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;AAClC;AACA,SAAS,SAAS,CAAC,KAAK,EAAE;AAC1B,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE;AAClC,CAAC,IAAI,KAAK,GAAG,CAAC;AACd,CAAC,IAAI,MAAM,GAAG,CAAC;AACf,CAAC,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE;AAC9B,EAAE,IAAI,OAAO,GAAG,KAAK;AACrB,EAAE,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,cAAc,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;AACvF,GAAG,MAAM,IAAI,KAAK;AAClB,GAAG,KAAK,IAAI,OAAO,CAAC,MAAM;AAC1B,GAAG,OAAO,GAAG,IAAI;AACjB,GAAG;AACH,EAAE;AACF,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;AACxB,CAAC;AACD,CAAC,OAAO,MAAM;AACd;AACA,SAAS,YAAY,CAAC,MAAM,EAAE;AAC9B,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK;AACtD,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;AAChC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,OAAO,KAAK;AAC7B,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,MAAM;AAC3F;AACA,SAAS,SAAS,CAAC,MAAM,EAAE;AAC3B,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE;AACnC,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3E,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACzB,EAAE,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AACvD,EAAE,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AACxD,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC;AACtC,CAAC;AACD,CAAC,OAAO,CAAC;AACT;AACA,SAAS,YAAY,CAAC,GAAG,EAAE;AAC3B,CAAC,IAAI,GAAG,IAAI,EAAE,EAAE,OAAO,cAAc,CAAC,GAAG,GAAG,CAAC,CAAC;AAC9C,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC;AAC7C,CAAC,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE;AAC9B,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,OAAO,cAAc,CAAC,MAAM,CAAC;AAC7C,CAAC,OAAO,cAAc,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,gBAAgB,CAAC,MAAM,EAAE;AAClC,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACtC,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,MAAM,KAAK,MAAM,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,GAAG;AAC7E,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG;AAC5C,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,MAAM,EAAE;AAC/B,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;AACtD,CAAC,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC;AACtC,CAAC,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,OAAO,SAAS,CAAC,MAAM,CAAC;AAC3D,CAAC,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE;AACnC,EAAE,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;AACjC,EAAE,OAAO,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;AAC9B,CAAC;AACD,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;AACpC,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM;AACzC;AACA,SAAS,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE;AACpC,CAAC,IAAI,IAAI,KAAK,SAAS,EAAE,OAAO,MAAM,CAAC,KAAK,CAAC;AAC7C,CAAC,QAAQ,IAAI;AACb,EAAE,KAAK,GAAG,EAAE,OAAO,YAAY,CAAC,KAAK,CAAC;AACtC,EAAE,KAAK,GAAG,EAAE,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;AACpD,EAAE,KAAK,GAAG,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC;AACjC,EAAE,KAAK,GAAG,EAAE,OAAO,YAAY,CAAC,KAAK,CAAC;AACtC,EAAE,SAAS,OAAO,MAAM,CAAC,KAAK,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,+BAA+B,CAAC,OAAO,EAAE;AAClD,CAAC,IAAI,iBAAiB;AACtB,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,KAAK;AACvC,CAAC,MAAM,SAAS,GAAG,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,iBAAiB,KAAK,MAAM,GAAG,iBAAiB,GAAG,SAAS;AAC9I,CAAC,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,OAAO,KAAK;AACjC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,EAAE,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,EAAE,UAAU,GAAG,CAAC,CAAC;AAC3D,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,OAAO,KAAK;AAC3C,CAAC;AACD,CAAC,OAAO,IAAI;AACZ;AACA;AACA;AACA;AACA,SAAS,eAAe,CAAC,MAAM,EAAE;AACjC,CAAC,OAAO;AACR,EAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC;AAChC,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM;AAC7B,EAAE;AACF;AACA;AACA;AACA;AACA,SAAS,+BAA+B,CAAC,MAAM,EAAE;AACjD,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC;AAChD,CAAC,MAAM,KAAK,GAAG,EAAE;AACjB,CAAC,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,IAAI;AAC5B,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK;AACrC,CAAC,OAAO,KAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,EAAE;AACtD,CAAC,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC;AAC3B,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;AAC5D,CAAC,QAAQ,IAAI;AACb,EAAE,KAAK,GAAG,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAC1D,EAAE,KAAK,GAAG,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;AACxE,EAAE,KAAK,GAAG,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACrD,EAAE,KAAK,GAAG,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAC1D,EAAE,SAAS,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;AAC3C;AACA;AACA;AACA;AACA,SAAS,0BAA0B,CAAC,KAAK,EAAE;AAC3C,CAAC,IAAI,aAAa,EAAE,cAAc;AAClC,CAAC,MAAM,WAAW,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,MAAM,MAAM,IAAI,IAAI,aAAa,KAAK,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC;AACpH,CAAC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,cAAc,GAAG,KAAK,CAAC,MAAM,MAAM,IAAI,IAAI,cAAc,KAAK,MAAM,GAAG,MAAM,GAAG,cAAc,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,IAAI,MAAM,MAAM,IAAI,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,GAAG,KAAK,KAAK,CAAC,IAAI,CAAC;AACjS;AACA,SAAS,4BAA4B,CAAC,IAAI,EAAE,OAAO,EAAE;AACrD,CAAC,IAAI,OAAO,CAAC,cAAc,EAAE,OAAO,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACrF,CAAC,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC;AAC7B,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,GAAG,EAAE,IAAI;AACX,EAAE;AACF,EAAE,CAAC,CAAC;AACJ;AACA;AACA;AACA;AACA;AACK,MAAC,QAAQ,GAAGA,MAAI,CAAC,MAAM,CAAC;AAC7B,CAAC,IAAI,EAAE,UAAU;AACjB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO;AACT,GAAG,cAAc,EAAE,EAAE;AACrB,GAAG,kBAAkB,EAAE,YAAY;AACnC,GAAG,mBAAmB,EAAE;AACxB,GAAG;AACH,CAAC,CAAC;AACF,CAAC,OAAO,EAAE,kBAAkB;AAC5B,CAAC,QAAQ,EAAE,IAAI;AACf,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE;AAChC,EAAE,OAAO;AACT,GAAG,IAAI;AACP,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;AAC/D,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,iBAAiB,EAAE,WAAW;AAC/B,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;AACpC,EAAE,IAAI,qBAAqB;AAC3B,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,OAAO,EAAE;AAC3C,EAAE,MAAM,kBAAkB,GAAG,CAAC,qBAAqB,GAAG,OAAO,CAAC,kBAAkB,MAAM,IAAI,IAAI,qBAAqB,KAAK,MAAM,GAAG,qBAAqB,GAAG,OAAO,CAAC,aAAa;AAC9K,EAAE,IAAI,OAAO,GAAG,EAAE;AAClB,EAAE,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/C,GAAG,IAAI,0BAA0B,CAAC,KAAK,CAAC,EAAE,OAAO;AACjD,IAAI,IAAI,EAAE,UAAU;AACpB,IAAI,OAAO,EAAE,CAAC;AACd,KAAK,IAAI,EAAE,WAAW;AACtB,KAAK,OAAO,EAAE,4BAA4B,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,OAAO;AACpE,KAAK;AACL,IAAI;AACJ,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC;AACnG,QAAQ;AACR,IAAI,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACtC,IAAI,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,IAAI,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACvG,KAAK,OAAO,GAAG,CAAC;AAChB,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM;AACpD,MAAM,CAAC;AACP,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAClC,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC;AACxC,KAAK;AACL,IAAI,CAAC,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC;AACrD,GAAG;AACH,EAAE;AACF,EAAE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,GAAG,CAAC;AACvC,GAAG,IAAI,EAAE,WAAW;AACpB,GAAG,OAAO,EAAE;AACZ,GAAG,CAAC;AACJ,EAAE,OAAO;AACT,GAAG,IAAI,EAAE,UAAU;AACnB,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,KAAK;AACnC,EAAE,OAAO,2BAA2B,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,OAAO,KAAK;AAC3D,GAAG,IAAI,OAAO,CAAC,UAAU,KAAK,YAAY,EAAE,OAAO,IAAI;AACvD,GAAG,IAAI,OAAO,CAAC,UAAU,KAAK,aAAa,EAAE;AAC7C,IAAI,IAAI,aAAa,EAAE,cAAc;AACrC,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,aAAa,GAAG,OAAO,CAAC,IAAI,MAAM,IAAI,IAAI,aAAa,KAAK,MAAM,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,WAAW,MAAM,IAAI,IAAI,aAAa,KAAK,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,KAAK,KAAK,CAAC;AAC/M,IAAI,OAAO,aAAa,CAAC,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,MAAM,IAAI,IAAI,cAAc,KAAK,MAAM,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,WAAW,MAAM,IAAI,IAAI,cAAc,KAAK,MAAM,GAAG,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAC7P,GAAG;AACH,GAAG,OAAO,IAAI;AACd,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,mBAAmB,EAAE,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,UAAU,MAAM,aAAa,EAAE,CAAC;AAChH,CAAC,CAAC;AACF,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO,CAAC,+BAA+B,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAC1H,CAAC,CAAC;AACF,CAAC,oBAAoB,GAAG;AACxB,EAAE,OAAO;AACT,GAAG,KAAK,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7D,GAAG,GAAG,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1D,GAAG,WAAW,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI;AACjE,GAAG;AACH,CAAC;AACD,CAAC;AACD;AACA;AACA,MAAM,eAAe,GAAG,CAAC,UAAU,EAAE,KAAK,KAAK;AAC/C,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,SAAS;AAClC,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC;AACvD,CAAC,IAAI,WAAW,GAAG,IAAI;AACvB,CAAC,IAAI,YAAY,GAAG,KAAK,CAAC,KAAK;AAC/B,CAAC,IAAI,UAAU,GAAG,KAAK,CAAC,GAAG;AAC3B,CAAC,IAAI,WAAW,GAAG,IAAI;AACvB,CAAC,OAAO,YAAY,GAAG,CAAC,IAAI,WAAW,KAAK,IAAI,EAAE;AAClD,EAAE,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;AACxC,EAAE,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE,WAAW,GAAG,YAAY;AAC/D,OAAO;AACP,GAAG,YAAY,IAAI,CAAC;AACpB,GAAG,UAAU,IAAI,CAAC;AAClB,EAAE;AACF,CAAC;AACD,CAAC,IAAI,WAAW,KAAK,IAAI,EAAE,OAAO,IAAI;AACtC,CAAC,OAAO;AACR,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AACrC,EAAE,KAAK,EAAE;AACT,EAAE;AACF,CAAC;AACD;AACA;AACA,MAAM,gBAAgB,GAAG,CAAC,UAAU,EAAE,KAAK,KAAK;AAChD,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC;AACvD,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,KAAK;AAC/B,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACjF,CAAC,OAAO,KAAK;AACb,CAAC;AACD;AACA;AACA,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,eAAe,KAAK;AAC9D,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,SAAS;AAC1C,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;AACrD,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE;AACrE,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK;AACrF,CAAC,OAAO,IAAI;AACZ,CAAC;AACD;AACA;AACA,MAAMG,iBAAe,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,KAAK;AAC3D,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,OAAO,IAAI;AACjD,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,KAAK;AAC5E,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,eAAe,CAAC,EAAE;AAC9F,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS;AAC5C,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACjE,EAAE,MAAM,eAAe,GAAG,EAAE;AAC5B,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK;AAC7C,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC;AACrD,IAAI,IAAI;AACR,IAAI;AACJ,IAAI,CAAC;AACL,EAAE,CAAC,CAAC;AACJ,EAAE,MAAM,QAAQ,GAAG,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC;AACzC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,KAAK;AAC7B,EAAE,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC;AACpF,EAAE,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC;AAC5B,GAAG,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AAC5B,GAAG,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG;AACvB,GAAG,EAAE,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE;AAC5C,CAAC;AACD,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK;AACpD,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK;AACjD,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS;AACzC,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC;AAClC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK;AAC3G,CAAC,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE;AAC/C,CAAC;AACD;AACA;AACA,MAAM,gBAAgB,GAAG,CAAC,UAAU,EAAE,KAAK,KAAK;AAChD,CAAC,MAAM,SAAS,GAAG,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC;AACtD,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC;AACvD,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,EAAE,OAAO,KAAK;AAC7C,CAAC,IAAI,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,OAAO,IAAI;AAC/C,CAAC,OAAO,KAAK;AACb,CAAC;AACD;AACA;AACA,MAAM,gBAAgB,GAAG,CAAC,UAAU,EAAE,KAAK,KAAK;AAChD,CAAC,MAAM,SAAS,GAAG,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC;AACtD,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC;AACvD,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,EAAE,OAAO,KAAK;AAC7C,CAAC,IAAI,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,OAAO,IAAI;AAC/C,CAAC,OAAO,KAAK;AACb,CAAC;AACD;AACA;AACA,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK;AACvC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK;AACpD,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK;AACrD,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAK;AACnC,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,SAAS;AACjC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK;AAC5D,CAAC,IAAI,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE;AACvI,CAAC,IAAI,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE;AACnG,CAAC,OAAO,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE;AACzC,CAAC;AACD;AACA;AACA,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,KAAK;AACrD,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM;AACzB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK;AAC5B,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,KAAK;AACnC,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS;AAC5B,CAAC,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,EAAE,OAAO,KAAK;AAC3C,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,KAAK;AAC5C,CAAC,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK;AAC5C,CAAC,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC;AAChD,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK;AAC7E,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS;AACpC,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,OAAO,KAAK;AAC3D,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM;AAC3B,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,KAAK;AACvG,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE;AAClC,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE;AAC/B,CAAC,MAAM,iBAAiB,GAAG,UAAU,GAAG,CAAC;AACzC,CAAC,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK;AACtD,EAAE,IAAI,QAAQ,EAAE;AAChB,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClF,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,iBAAiB,GAAG,CAAC,CAAC,CAAC;AACvE,GAAG,EAAE,CAAC,cAAc,EAAE;AACtB,EAAE;AACF,EAAE,OAAO,IAAI;AACb,CAAC,CAAC,CAAC;AACH,CAAC;AA+CD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;AACpC,CAAC,IAAI,EAAE,YAAY;AACnB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AACvB,GAAG,QAAQ,EAAE,UAAU;AACvB,GAAG,YAAY,EAAE,CAAC,YAAY,EAAE,aAAa;AAC7C,GAAG,EAAE;AACL,GAAG,QAAQ,EAAE,UAAU;AACvB,GAAG,YAAY,EAAE,CAAC,UAAU;AAC5B,GAAG,CAAC,EAAE;AACN,CAAC,CAAC;AACF,CAAC,oBAAoB,GAAG;AACxB,EAAE,OAAO;AACT,GAAG,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK;AAC3B,IAAI,IAAI,OAAO,GAAG,KAAK;AACvB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK;AACrD,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,MAAM,EAAE;AACzD,KAAK,IAAI,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI;AACvD,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,OAAO;AAClB,GAAG,CAAC;AACJ,GAAG,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK;AACjC,IAAI,IAAI,OAAO,GAAG,KAAK;AACvB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK;AACrD,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,MAAM,EAAE;AACzD,KAAK,IAAI,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI;AACvD,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,OAAO;AAClB,GAAG,CAAC;AACJ,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK;AAC9B,IAAI,IAAI,OAAO,GAAG,KAAK;AACvB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK;AACnE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,MAAM,EAAE;AACzD,KAAK,IAAIA,iBAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI;AACxE,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,OAAO;AAClB,GAAG,CAAC;AACJ,GAAG,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK;AACpC,IAAI,IAAI,OAAO,GAAG,KAAK;AACvB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK;AACnE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,MAAM,EAAE;AACzD,KAAK,IAAIA,iBAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI;AACxE,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,OAAO;AAClB,GAAG,CAAC;AACJ,GAAG,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK;AACxB,IAAI,KAAK,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AACrE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,MAAM,EAAE;AACzD,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,OAAO,IAAI;AAC/D,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB,GAAG;AACH,GAAG;AACH,CAAC;AACD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,uBAAuB,GAAG,IAAI,MAAM,CAAC,CAAC,QAAQ,EAAE,2BAA2B,CAAC,gBAAgB,CAAC,CAAC;AACpG;AACA;AACA;AACA;AACA,MAAM,mBAAmB,GAAG,KAAK;AACjC;AACA;AACA;AACA;AACA,MAAM,sBAAsB,GAAG;AAC/B,CAAC,OAAO,EAAE,iBAAiB;AAC3B,CAAC,UAAU,EAAE,WAAW;AACxB,CAAC,SAAS,EAAE,cAAc;AAC1B,CAAC,SAAS,EAAE,OAAO;AACnB,CAAC,aAAa,EAAE;AAChB,CAAC;AACD,SAAS,uBAAuB,CAAC,IAAI,EAAE;AACvC,CAAC,OAAO,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;AACtD;AACA,SAAS,kBAAkB,CAAC,IAAI,EAAE;AAClC,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE;AACrC,CAAC,OAAO,sBAAsB,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,uBAAuB,CAAC,WAAW,CAAC,IAAI,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,sBAAsB,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;AAC1X;AACA,SAAS,0BAA0B,CAAC,IAAI,EAAE;AAC1C,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnF;AACA,SAAS,gBAAgB,CAAC,YAAY,EAAE;AACxC,CAAC,MAAM,cAAc,GAAG,EAAE;AAC1B,CAAC,MAAM,UAAU,GAAG,EAAE;AACtB,CAAC,IAAI,oBAAoB,GAAG,KAAK;AACjC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAChC,EAAE,IAAI,oBAAoB,EAAE;AAC5B,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,GAAG;AACH,EAAE;AACF,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AAC1B,GAAG,oBAAoB,GAAG,IAAI;AAC9B,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,GAAG;AACH,EAAE;AACF,EAAE,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE;AAC7D,GAAG,oBAAoB,GAAG,IAAI;AAC9B,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,GAAG;AACH,EAAE;AACF,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,CAAC,CAAC,CAAC;AACH,CAAC,OAAO;AACR,EAAE,cAAc;AAChB,EAAE;AACF,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,uBAAuB,CAAC,KAAK,EAAE;AACxC,CAAC,MAAM,SAAS,GAAG,EAAE;AACrB,CAAC,IAAI,gBAAgB,GAAG,CAAC;AACzB,CAAC,IAAI,QAAQ,GAAG,CAAC;AACjB,CAAC,OAAO,gBAAgB,GAAG,KAAK,CAAC,MAAM,EAAE;AACzC,EAAE,MAAM,IAAI,GAAG,KAAK,CAAC,gBAAgB,CAAC;AACtC,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC;AACnD,EAAE,IAAI,CAAC,KAAK,EAAE;AACd,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,KAAK;AACvD,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM;AACnC,EAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;AACrC,EAAE,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,GAAG,MAAM;AACtE,EAAE,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM;AACnE,EAAE,MAAM,gBAAgB,GAAG,CAAC,OAAO,CAAC;AACpC,EAAE,IAAI,aAAa,GAAG,gBAAgB,GAAG,CAAC;AAC1C,EAAE,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC;AAC1B,EAAE,IAAI,YAAY,GAAG,KAAK;AAC1B,EAAE,OAAO,aAAa,GAAG,KAAK,CAAC,MAAM,EAAE;AACvC,GAAG,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC;AACxC,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE;AAChD,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AAC/B,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5B,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7B,IAAI,YAAY,GAAG,IAAI;AACvB,IAAI,aAAa,IAAI,CAAC;AACtB,GAAG,CAAC,MAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE;AACnD,IAAI,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM;AAC3E,IAAI,MAAM,aAAa,GAAG,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;AACzD,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5B,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC,CAAC;AACrF,IAAI,aAAa,IAAI,CAAC;AACtB,GAAG,CAAC,MAAM;AACV,IAAI,IAAI,YAAY,IAAI,0BAA0B,CAAC,QAAQ,CAAC,EAAE;AAC9D,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5B,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnC,IAAI,aAAa,IAAI,CAAC;AACtB,GAAG;AACH,EAAE;AACF,EAAE,SAAS,CAAC,IAAI,CAAC;AACjB,GAAG,MAAM,EAAE,WAAW;AACtB,GAAG,MAAM,EAAE,UAAU;AACrB,GAAG,IAAI,EAAE,UAAU;AACnB,GAAG,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AAC9C,GAAG,YAAY,EAAE,gBAAgB;AACjC,GAAG,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI;AAC3B,GAAG,CAAC;AACJ,EAAE,QAAQ,GAAG,aAAa;AAC1B,EAAE,gBAAgB,GAAG,aAAa;AAClC,CAAC;AACD,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC;AAC7B;AACA,MAAM,kCAAkC,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,EAAE,2BAA2B,CAAC,gBAAgB,CAAC,CAAC;AACzG;AACA;AACA;AACA,SAAS,8BAA8B,CAAC,IAAI,EAAE;AAC9C,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAClE,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;AACpC,CAAC,MAAM,WAAW,GAAG,EAAE;AACvB,CAAC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAC3B,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,kCAAkC,CAAC;AACrE,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI;AACzB,EAAE,WAAW,CAAC,IAAI,CAAC;AACnB,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACnB,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC;AACnB,GAAG,CAAC;AACJ,CAAC;AACD,CAAC,IAAI,CAAC,+BAA+B,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,IAAI;AAC1F,CAAC,OAAO;AACR,EAAE,IAAI,EAAE,aAAa;AACrB,EAAE,KAAK,EAAE,+BAA+B,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC/D,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AACtC,GAAG,IAAI,EAAE,UAAU;AACnB,GAAG,OAAO,EAAE,CAAC;AACb,IAAI,IAAI,EAAE,WAAW;AACrB,IAAI,OAAO,EAAE,CAAC;AACd,KAAK,IAAI,EAAE,MAAM;AACjB,KAAK,IAAI,EAAE,IAAI,CAAC;AAChB,KAAK;AACL,IAAI;AACJ,GAAG,CAAC;AACJ,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE;AACxD,CAAC,MAAM,MAAM,GAAG,EAAE;AAClB,CAAC,IAAI,YAAY,GAAG,CAAC;AACrB,CAAC,OAAO,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE;AACrC,EAAE,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC;AAClC,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;AAClC,GAAG,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC;AAC7E,GAAG,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AACpD,GAAG,MAAM,MAAM,GAAG,EAAE;AACpB,GAAG,IAAI,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC;AAC7B,IAAI,IAAI,EAAE,WAAW;AACrB,IAAI,GAAG,EAAE,QAAQ;AACjB,IAAI,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,QAAQ;AACvC,IAAI,CAAC;AACL,GAAG,MAAM,iBAAiB,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AACzD,GAAG,IAAI,iBAAiB,EAAE;AAC1B,IAAI,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC;AAC5D,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;AAC/B,GAAG;AACH,GAAG,IAAI,cAAc,GAAG,YAAY,GAAG,CAAC;AACxC,GAAG,MAAM,WAAW,GAAG,EAAE;AACzB,GAAG,OAAO,cAAc,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,UAAU,EAAE;AACtF,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AAC3C,IAAI,cAAc,IAAI,CAAC;AACvB,GAAG;AACH,GAAG,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,IAAI,MAAM,eAAe,GAAG,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC;AACrI,IAAI,MAAM,CAAC,IAAI,CAAC;AAChB,KAAK,IAAI,EAAE,MAAM;AACjB,KAAK,OAAO,EAAE,IAAI;AAClB,KAAK,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM;AACjC,KAAK,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;AACpC,KAAK,KAAK,EAAE,eAAe;AAC3B,KAAK,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI;AACnE,KAAK,CAAC;AACN,GAAG;AACH,GAAG,MAAM,CAAC,IAAI,CAAC;AACf,IAAI,IAAI,EAAE,WAAW;AACrB,IAAI,GAAG,EAAE,IAAI,CAAC,GAAG;AACjB,IAAI;AACJ,IAAI,CAAC;AACL,GAAG,YAAY,GAAG,cAAc;AAChC,EAAE,CAAC,MAAM,YAAY,IAAI,CAAC;AAC1B,CAAC;AACD,CAAC,OAAO,MAAM;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE;AACxC,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AAC5B,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,EAAE,MAAM,OAAO,GAAG,EAAE;AACpB,EAAE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK;AAChF,GAAG,IAAI,SAAS,CAAC,IAAI,KAAK,WAAW,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACvL,QAAQ,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,IAAI,SAAS,CAAC,MAAM,EAAE;AAC3D,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC;AAC5D,IAAI,OAAO,CAAC,IAAI,CAAC;AACjB,KAAK,IAAI,EAAE,WAAW;AACtB,KAAK,OAAO,EAAE;AACd,KAAK,CAAC;AACN,GAAG,CAAC,MAAM;AACV,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC;AACrD,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAClD,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO;AACT,GAAG,IAAI,EAAE,UAAU;AACnB,GAAG;AACH,GAAG;AACH,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA,MAAM,YAAY,GAAG,UAAU;AAC/B,MAAM,aAAa,GAAG,WAAW;AACjC;AACA;AACA;AACA,MAAM,qBAAqB,GAAG,aAAa;AAC3C;AACA;AACA;AACA;AACA,SAAS,0BAA0B,CAAC,KAAK,EAAE;AAC3C,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC;AAC5D,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI;AACxB,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AACtC,EAAE,KAAK,aAAa,EAAE,OAAO,GAAG;AAChC,EAAE,KAAK,aAAa,EAAE,OAAO,GAAG;AAChC,EAAE,KAAK,aAAa;AACpB,EAAE,KAAK,aAAa,EAAE,OAAO,GAAG;AAChC,EAAE,KAAK,aAAa;AACpB,EAAE,KAAK,aAAa,EAAE,OAAO,GAAG;AAChC,EAAE,SAAS,OAAO,IAAI;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACK,MAAC,WAAW,GAAGH,MAAI,CAAC,MAAM,CAAC;AAChC,CAAC,IAAI,EAAE,aAAa;AACpB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO;AACT,GAAG,YAAY,EAAE,UAAU;AAC3B,GAAG,cAAc,EAAE,EAAE;AACrB,GAAG,SAAS,EAAE,KAAK;AACnB,GAAG,cAAc,EAAE;AACnB,GAAG;AACH,CAAC,CAAC;AACF,CAAC,KAAK,EAAE,YAAY;AACpB,CAAC,OAAO,GAAG;AACX,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC;AACF,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO;AACT,GAAG,KAAK,EAAE;AACV,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,SAAS,EAAE,CAAC,OAAO,KAAK;AAC5B,KAAK,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC;AACjG,IAAI;AACJ,IAAI;AACJ,GAAG,IAAI,EAAE;AACT,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,SAAS,EAAE,CAAC,OAAO,KAAK;AAC5B,KAAK,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC;AAClD,KAAK,IAAI,QAAQ,EAAE,OAAO,QAAQ;AAClC,KAAK,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;AAChD,KAAK,IAAI,KAAK,EAAE;AAChB,MAAM,MAAM,YAAY,GAAG,0BAA0B,CAAC,KAAK,CAAC;AAC5D,MAAM,IAAI,YAAY,EAAE,OAAO,YAAY;AAC3C,KAAK;AACL,KAAK,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC;AAChD,KAAK,IAAI,OAAO,EAAE;AAClB,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;AACnD,MAAM,IAAI,OAAO,EAAE;AACnB,OAAO,MAAM,YAAY,GAAG,0BAA0B,CAAC,OAAO,CAAC;AAC/D,OAAO,IAAI,YAAY,EAAE,OAAO,YAAY;AAC5C,MAAM;AACN,KAAK;AACL,KAAK,OAAO,IAAI;AAChB,IAAI;AACJ;AACA,GAAG;AACH,CAAC,CAAC;AACF,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE;AAChC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,qBAAqB,EAAE,GAAG,cAAc;AAClE,EAAE,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,qBAAqB,CAAC;AACnF,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK;AACtC,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,KAAK,CAAC,IAAI,GAAG,IAAI;AAC7C,EAAE,OAAO;AACT,GAAG,IAAI;AACP,GAAG,KAAK;AACR,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,iBAAiB,EAAE,MAAM;AAC1B,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;AACpC,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE;AACxD,EAAE,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC;AACrC,EAAE,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU;AACpC,EAAE,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE;AACzE,EAAE,MAAM,KAAK,GAAG,EAAE;AAClB,EAAE,IAAI,UAAU,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,UAAU;AAChD,EAAE,IAAI,SAAS,EAAE,KAAK,CAAC,IAAI,GAAG,SAAS;AACvC,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO;AAC5C,GAAG,IAAI,EAAE,aAAa;AACtB,GAAG,KAAK;AACR,GAAG;AACH,GAAG;AACH,EAAE,OAAO;AACT,GAAG,IAAI,EAAE,aAAa;AACtB,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AAC9B,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;AAC9B,EAAE,OAAO,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;AAC7C,CAAC,CAAC;AACF,CAAC,iBAAiB,EAAE;AACpB,EAAE,IAAI,EAAE,aAAa;AACrB,EAAE,KAAK,EAAE,OAAO;AAChB,EAAE,KAAK,EAAE,MAAM,EAAE;AACjB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,KAAK;AACrC,GAAG,IAAI,WAAW,EAAE,YAAY;AAChC,GAAG,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AAChC,GAAG,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC;AAC/D,GAAG,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/B,GAAG,MAAM,KAAK,GAAG,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC;AAC5E,GAAG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,GAAG,OAAO;AACV,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,KAAK,EAAE,CAAC,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,WAAW,KAAK,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,MAAM,KAAK,CAAC;AAC/G,IAAI,UAAU,EAAE,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,YAAY,KAAK,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC,IAAI;AAC9G,IAAI,KAAK;AACT,IAAI,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI;AAC3C,IAAI;AACJ,EAAE;AACF,EAAE;AACF,CAAC,eAAe,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE;AAC1C,CAAC,WAAW,GAAG;AACf,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK;AAC7D,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,KAAK,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE;AAC1M,GAAG,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AAC3F,EAAE,CAAC,EAAE;AACL,CAAC,CAAC;AACF,CAAC,oBAAoB,GAAG;AACxB,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EAAE;AAC1E,CAAC,CAAC;AACF,CAAC,qBAAqB,GAAG;AACzB,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;AAC9D,GAAG,IAAI,oBAAoB,EAAE,qBAAqB;AAClD,GAAG,MAAM,IAAI,GAAG,CAAC,oBAAoB,GAAG,KAAK,CAAC,aAAa,MAAM,IAAI,IAAI,oBAAoB,KAAK,MAAM,GAAG,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,WAAW,CAAC;AAC7J,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,KAAK;AAC5E,GAAG,MAAM,IAAI,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,aAAa,MAAM,IAAI,IAAI,qBAAqB,KAAK,MAAM,GAAG,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,YAAY,CAAC;AACjK,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK;AAC1B,GAAG,MAAM,kBAAkB,GAAG,8BAA8B,CAAC,IAAI,CAAC;AAClE,GAAG,IAAI,CAAC,kBAAkB,EAAE,OAAO,KAAK;AACxC,GAAG,IAAI;AACP,IAAI,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,kBAAkB,CAAC;AAC9E,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAAC,eAAe,CAAC;AAClE,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AACrB,IAAI,OAAO,IAAI;AACf,GAAG,CAAC,CAAC,MAAM;AACX,IAAI,OAAO,KAAK;AAChB,GAAG;AACH,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC,CAAC;AACF,CAAC,aAAa,GAAG;AACjB,EAAE,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK;AACzC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,KAAK,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3G,EAAE,CAAC;AACH,EAAE,IAAI,SAAS,GAAG,iBAAiB,CAAC;AACpC,GAAG,IAAI,EAAE,qBAAqB;AAC9B,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI;AAClB,GAAG,aAAa,EAAE,CAAC,KAAK,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACnD,GAAG;AACH,GAAG,CAAC;AACJ,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,GAAG,iBAAiB,CAAC;AAC3F,GAAG,IAAI,EAAE,qBAAqB;AAC9B,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI;AAClB,GAAG,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;AACpC,GAAG,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;AAC9C,GAAG,aAAa,EAAE,CAAC,KAAK,MAAM;AAC9B,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACpB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa;AAC9C,IAAI,CAAC;AACL,GAAG,aAAa;AAChB,GAAG,MAAM,EAAE,IAAI,CAAC;AAChB,GAAG,CAAC;AACJ,EAAE,OAAO,CAAC,SAAS,CAAC;AACpB,CAAC;AACD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,MAAMC,YAAU,GAAG,wBAAwB;AAC3C;AACA;AACA;AACA,MAAM,mBAAmB,GAAG,6HAA6H;AACzJ,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,KAAK;AAClD,CAAC,IAAI,mBAAmB;AACxB,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,MAAM,IAAI,IAAI,mBAAmB,KAAK,MAAM,GAAG,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,IAAI,CAAC,WAAW,IAAI,iBAAiB,CAAC,CAAC;AACjQ,CAAC;AACD;AACA;AACA;AACA;AACK,MAAC,QAAQ,GAAGD,MAAI,CAAC,MAAM,CAAC;AAC7B,CAAC,IAAI,EAAE,UAAU;AACjB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO;AACT,GAAG,MAAM,EAAE,KAAK;AAChB,GAAG,cAAc,EAAE,EAAE;AACrB,GAAG,gBAAgB,EAAE,UAAU;AAC/B,GAAG,IAAI,EAAE;AACT,GAAG;AACH,CAAC,CAAC;AACF,CAAC,OAAO,GAAG;AACX,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,kBAAkB,GAAG,YAAY;AAChE,CAAC,CAAC;AACF,CAAC,QAAQ,EAAE,IAAI;AACf,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO,EAAE,OAAO,EAAE;AACpB,GAAG,OAAO,EAAE,KAAK;AACjB,GAAG,WAAW,EAAE,KAAK;AACrB,GAAG,SAAS,EAAE,CAAC,OAAO,KAAK;AAC3B,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC;AAC5D,IAAI,OAAO,WAAW,KAAK,EAAE,IAAI,WAAW,KAAK,MAAM;AACvD,GAAG,CAAC;AACJ,GAAG,UAAU,EAAE,CAAC,UAAU,MAAM,EAAE,cAAc,EAAE,UAAU,CAAC,OAAO,EAAE;AACtE,GAAG,EAAE;AACL,CAAC,CAAC;AACF,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,CAAC;AACV,GAAG,GAAG,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACtC,GAAG,QAAQ,EAAE,EAAE;AACf,GAAG,cAAc,EAAE,CAAC,OAAO,KAAK;AAChC,IAAI,IAAI,qBAAqB;AAC7B,IAAI,OAAO,CAAC,qBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,qBAAqB,KAAK,MAAM,GAAG,qBAAqB,GAAG,OAAO;AAChJ,GAAG;AACH,GAAG,CAAC;AACJ,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE;AACtC,EAAE,OAAO;AACT,GAAG,IAAI;AACP,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3F,GAAG;AACH,IAAI,OAAO;AACX,IAAI,CAAC,OAAO,EAAE;AACd,KAAK,IAAI,EAAE,UAAU;AACrB,KAAK,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,GAAG;AAC/C,KAAK,CAAC;AACN,IAAI,CAAC,MAAM;AACX,IAAI;AACJ,GAAG,CAAC,KAAK,EAAE,CAAC;AACZ,GAAG;AACH,CAAC,CAAC;AACF,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK;AAC9B,EAAE,MAAM,OAAO,GAAG,EAAE;AACpB,EAAE,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACvH,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAChH,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACtD,EAAE,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3D,GAAG,MAAM,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC;AAC5D,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC;AACjC,EAAE;AACF,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK,EAAE,EAAE,OAAO,CAAC;AAC/E,CAAC,CAAC;AACF,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AAC9B,EAAE,IAAI,WAAW;AACjB,EAAE,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,IAAI,WAAW,KAAK,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,OAAO,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC;AACrI,EAAE,OAAO,2BAA2B,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC;AACrD,CAAC,CAAC;AACF,CAAC,aAAa,GAAG;AACjB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;AACrC,EAAE,OAAO,CAAC,+BAA+B,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACtF,CAAC,CAAC;AACF,CAAC,oBAAoB,GAAG;AACxB,EAAE,MAAM,SAAS,GAAG;AACpB,GAAG,KAAK,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7D,GAAG,WAAW,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI;AACjE,GAAG;AACH,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,SAAS;AAC5C,EAAE,OAAO;AACT,GAAG,GAAG,SAAS;AACf,GAAG,GAAG,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI;AACzD,GAAG;AACH,CAAC,CAAC;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AACvD,GAAG,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;AAChD,GAAG,MAAM,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC1D,GAAG,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AACxD,GAAG,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AACnD,GAAG,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAChD,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,GAAG,mBAAmB;AACrD,GAAG,MAAM,UAAU,GAAG,CAAC,WAAW,KAAK;AACvC,IAAI,MAAM,KAAK,GAAG,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAC7F,IAAI,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC;AAC9C,IAAI,cAAc,CAAC,WAAW,GAAG,KAAK;AACtC,GAAG,CAAC;AACJ,GAAG,UAAU,CAAC,IAAI,CAAC;AACnB,GAAG,eAAe,CAAC,eAAe,GAAG,OAAO;AAC5C,GAAG,QAAQ,CAAC,IAAI,GAAG,UAAU;AAC7B,GAAG,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,cAAc,EAAE,CAAC;AAC5E,GAAG,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,KAAK;AAClD,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;AAC/D,KAAK,QAAQ,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC,OAAO;AACzC,KAAK;AACL,IAAI;AACJ,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM;AACpC,IAAI,IAAI,MAAM,CAAC,UAAU,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK;AACvI,KAAK,MAAM,QAAQ,GAAG,MAAM,EAAE;AAC9B,KAAK,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,OAAO,KAAK;AACnD,KAAK,MAAM,WAAW,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;AAChD,KAAK,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE;AACxC,MAAM,GAAG,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,KAAK;AACpF,MAAM;AACN,MAAM,CAAC;AACP,KAAK,OAAO,IAAI;AAChB,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE;AACZ,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;AAC9D,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC,OAAO;AAC7F,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AACzE,IAAI,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC;AACrC,GAAG,CAAC,CAAC;AACL,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO;AAChD,GAAG,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO;AACxC,GAAG,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC;AACnD,GAAG,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC;AAC5C,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AAC5D,IAAI,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC;AACrC,GAAG,CAAC,CAAC;AACL,GAAG,IAAI,yBAAyB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACvE,GAAG,OAAO;AACV,IAAI,GAAG,EAAE,QAAQ;AACjB,IAAI,UAAU,EAAE,OAAO;AACvB,IAAI,MAAM,EAAE,CAAC,WAAW,KAAK;AAC7B,KAAK,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK;AACrD,KAAK,QAAQ,CAAC,OAAO,CAAC,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO;AACzD,KAAK,QAAQ,CAAC,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO;AACjD,KAAK,UAAU,CAAC,WAAW,CAAC;AAC5B,KAAK,MAAM,mBAAmB,GAAG,MAAM,CAAC,gBAAgB,CAAC,UAAU;AACnE,KAAK,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,WAAW,EAAE,mBAAmB,CAAC;AACtF,KAAK,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC5D,KAAK,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc;AACpD,KAAK,yBAAyB,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAChD,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC7B,OAAO,IAAI,GAAG,IAAI,WAAW,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;AAC3E,YAAY,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC;AACzC,MAAM;AACN,KAAK,CAAC,CAAC;AACP,KAAK,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AACjE,MAAM,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,EAAE;AAC9C,OAAO,IAAI,GAAG,IAAI,WAAW,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;AAC3E,YAAY,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC;AACzC,MAAM,CAAC,MAAM,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC;AAC9C,KAAK,CAAC,CAAC;AACP,KAAK,yBAAyB,GAAG,OAAO;AACxC,KAAK,OAAO,IAAI;AAChB,IAAI;AACJ,IAAI;AACJ,EAAE,CAAC;AACH,CAAC,CAAC;AACF,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO,CAAC,iBAAiB,CAAC;AAC5B,GAAG,IAAI,EAAEC,YAAU;AACnB,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI;AAClB,GAAG,aAAa,EAAE,CAAC,KAAK,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;AAC1E,GAAG,CAAC,CAAC;AACL,CAAC;AACD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACK,MAAC,QAAQ,GAAGD,MAAI,CAAC,MAAM,CAAC;AAC7B,CAAC,IAAI,EAAE,UAAU;AACjB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO;AACT,GAAG,YAAY,EAAE,UAAU;AAC3B,GAAG,cAAc,EAAE;AACnB,GAAG;AACH,CAAC,CAAC;AACF,CAAC,KAAK,EAAE,YAAY;AACpB,CAAC,OAAO,GAAG;AACX,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC;AACF,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,CAAC;AACV,GAAG,GAAG,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACtC,GAAG,QAAQ,EAAE;AACb,GAAG,CAAC;AACJ,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE;AAChC,EAAE,OAAO;AACT,GAAG,IAAI;AACP,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3F,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK;AAC9B,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;AACzE,CAAC,CAAC;AACF,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AAC9B,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;AAC9B,EAAE,OAAO,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;AAC7C,CAAC,CAAC;AACF,CAAC,iBAAiB,EAAE;AACpB,EAAE,IAAI,EAAE,UAAU;AAClB,EAAE,KAAK,EAAE,OAAO;AAChB,EAAE,KAAK,CAAC,GAAG,EAAE;AACb,GAAG,IAAI,UAAU;AACjB,GAAG,MAAM,KAAK,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,4BAA4B,CAAC,MAAM,IAAI,IAAI,UAAU,KAAK,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,KAAK;AACrI,GAAG,OAAO,KAAK,KAAK,MAAM,GAAG,KAAK,GAAG,EAAE;AACvC,EAAE,CAAC;AACH,EAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE;AAC/B,GAAG,MAAM,oBAAoB,GAAG,CAAC,OAAO,KAAK;AAC7C,IAAI,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,EAAE;AACtD,KAAK,WAAW,EAAE,qCAAqC;AACvD,KAAK,eAAe,EAAE,CAAC,KAAK,MAAM;AAClC,MAAM,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;AAClC,MAAM,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3B,MAAM,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK;AAC1C,MAAM,CAAC;AACP,KAAK,WAAW,EAAE,CAAC,IAAI,EAAE,YAAY,MAAM;AAC3C,MAAM,IAAI,EAAE,UAAU;AACtB,MAAM,GAAG,EAAE,EAAE;AACb,MAAM,WAAW,EAAE,IAAI,CAAC,WAAW;AACnC,MAAM,WAAW,EAAE,IAAI,CAAC,WAAW;AACnC,MAAM,OAAO,EAAE,IAAI,CAAC,OAAO;AAC3B,MAAM,IAAI,EAAE,IAAI,CAAC,WAAW;AAC5B,MAAM,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAClD,MAAM;AACN,MAAM,CAAC;AACP,KAAK,kBAAkB,EAAE;AACzB,KAAK,EAAE,KAAK,CAAC;AACb,IAAI,IAAI,YAAY,EAAE;AACtB,KAAK,MAAM,aAAa,GAAG;AAC3B,MAAM,IAAI,EAAE,UAAU;AACtB,MAAM,GAAG,EAAE,YAAY,CAAC,GAAG;AAC3B,MAAM,KAAK,EAAE,YAAY,CAAC;AAC1B,MAAM;AACN,KAAK,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;AAC7D,KAAK,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,aAAa,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAClF,KAAK,OAAO,CAAC,aAAa,CAAC;AAC3B,IAAI;AACJ,IAAI,OAAO,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AACrC,GAAG,CAAC;AACJ,GAAG,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,EAAE;AAC3C,IAAI,WAAW,EAAE,qCAAqC;AACtD,IAAI,eAAe,EAAE,CAAC,KAAK,MAAM;AACjC,KAAK,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;AACjC,KAAK,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;AAC1B,KAAK,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK;AACzC,KAAK,CAAC;AACN,IAAI,WAAW,EAAE,CAAC,IAAI,EAAE,YAAY,MAAM;AAC1C,KAAK,IAAI,EAAE,UAAU;AACrB,KAAK,GAAG,EAAE,EAAE;AACZ,KAAK,WAAW,EAAE,IAAI,CAAC,WAAW;AAClC,KAAK,WAAW,EAAE,IAAI,CAAC,WAAW;AAClC,KAAK,OAAO,EAAE,IAAI,CAAC,OAAO;AAC1B,KAAK,IAAI,EAAE,IAAI,CAAC,WAAW;AAC3B,KAAK,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AACjD,KAAK;AACL,KAAK,CAAC;AACN,IAAI,kBAAkB,EAAE;AACxB,IAAI,EAAE,KAAK,CAAC;AACZ,GAAG,IAAI,CAAC,MAAM,EAAE;AAChB,GAAG,OAAO;AACV,IAAI,IAAI,EAAE,UAAU;AACpB,IAAI,GAAG,EAAE,MAAM,CAAC,GAAG;AACnB,IAAI,KAAK,EAAE,MAAM,CAAC;AAClB,IAAI;AACJ,EAAE;AACF,EAAE;AACF,CAAC,eAAe,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE;AAC1C,CAAC,WAAW,GAAG;AACf,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK;AACnD,GAAG,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;AACnE,EAAE,CAAC,EAAE;AACL,CAAC,CAAC;AACF,CAAC,oBAAoB,GAAG;AACxB,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE;AACvE,CAAC;AACD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACgB,SAAS,CAAC,MAAM,CAAC;AACjC,CAAC,IAAI,EAAE,SAAS;AAChB,CAAC,aAAa,GAAG;AACjB,EAAE,MAAM,UAAU,GAAG,EAAE;AACvB,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACvG,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjG,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACvG,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC1G,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjG,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjG,EAAE,OAAO,UAAU;AACnB,CAAC;AACD,CAAC;;ACt8CD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,uBAAuB,CAAC,KAAK,EAAE;AACxC,CAAC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,QAAQ,EAAE,OAAO,KAAK;AAC9E,CAAC,OAAO,IAAI;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,OAAO,EAAE;AAC7B,CAAC,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE;AACxE,CAAC,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE;AAC7E,CAAC,OAAO,uBAAuB,CAAC,UAAU,IAAI,SAAS,CAAC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qCAAqC,CAAC,UAAU,EAAE;AAC3D,CAAC,OAAO,uBAAuB,CAAC,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;AACzG;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,GAAG;AAChC,CAAC,OAAO;AACR,EAAE,OAAO,EAAE,IAAI;AACf,EAAE,SAAS,EAAE,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,CAAC;AAC7C,EAAE,UAAU,EAAE,CAAC,UAAU,KAAK;AAC9B,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;AACnC,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;AACtD,EAAE;AACF,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,kBAAkB,CAAC,OAAO,EAAE;AACrC,CAAC,IAAI,qBAAqB;AAC1B,CAAC,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa;AAClC,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;AACvC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI;AAChC,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AAC5D,CAAC,MAAM,KAAK,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,qBAAqB,KAAK,MAAM,GAAG,MAAM,GAAG,qBAAqB,CAAC,YAAY,CAAC,OAAO,CAAC;AAChM,CAAC,OAAO,KAAK,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,OAAO,EAAE;AAChC,CAAC,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC;AAClD,CAAC,IAAI,QAAQ,EAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC7E,CAAC,OAAO,kBAAkB,CAAC,OAAO,CAAC;AACnC;AACA;AACA;AACA,MAAM,sBAAsB,GAAG,eAAe;AAC9C;AACA,SAAS,kBAAkB,CAAC,OAAO,EAAE;AACrC,CAAC,IAAI,oBAAoB;AACzB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,KAAK;AAC9C,CAAC,OAAO,CAAC,CAAC,oBAAoB,GAAG,OAAO,CAAC,WAAW,MAAM,IAAI,IAAI,oBAAoB,KAAK,MAAM,GAAG,oBAAoB,GAAG,EAAE,EAAE,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,KAAK,EAAE;AACzK;AACA;AACA,SAAS,oBAAoB,CAAC,QAAQ,EAAE;AACxC,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,EAAE;AACxC,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,iBAAiB,EAAE,QAAQ,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;AACvG,CAAC,OAAO,MAAM,CAAC,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACK,MAAC,SAAS,GAAGA,MAAI,CAAC,MAAM,CAAC;AAC9B,CAAC,IAAI,EAAE,WAAW;AAClB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE;AAC/B,CAAC,CAAC;AACF,CAAC,OAAO,EAAE,QAAQ;AAClB,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO;AACT,GAAG,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;AAC1B,GAAG,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;AAC1B,GAAG,QAAQ,EAAE;AACb,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,SAAS,EAAE;AACf,IAAI;AACJ,GAAG,KAAK,EAAE,oBAAoB;AAC9B,GAAG;AACH,CAAC,CAAC;AACF,CAAC,SAAS,EAAE,MAAM;AAClB,CAAC,SAAS,EAAE,IAAI;AAChB,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,CAAC;AACV,GAAG,GAAG,EAAE,IAAI;AACZ,GAAG,QAAQ,EAAE,CAAC,IAAI,KAAK,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;AAC5D,GAAG,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9E,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACnB,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE;AAChC,EAAE,OAAO;AACT,GAAG,IAAI;AACP,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;AAC/D,GAAG;AACH,GAAG;AACH,CAAC;AACD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACK,MAAC,WAAW,GAAGA,MAAI,CAAC,MAAM,CAAC;AAChC,CAAC,IAAI,EAAE,aAAa;AACpB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE;AAC/B,CAAC,CAAC;AACF,CAAC,OAAO,EAAE,QAAQ;AAClB,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO;AACT,GAAG,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;AAC1B,GAAG,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;AAC1B,GAAG,QAAQ,EAAE;AACb,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,SAAS,EAAE;AACf,IAAI;AACJ,GAAG,KAAK,EAAE,oBAAoB;AAC9B,GAAG;AACH,CAAC,CAAC;AACF,CAAC,SAAS,EAAE,aAAa;AACzB,CAAC,SAAS,EAAE,IAAI;AAChB,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,CAAC;AACV,GAAG,GAAG,EAAE,IAAI;AACZ,GAAG,QAAQ,EAAE,CAAC,IAAI,KAAK,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;AAC5D,GAAG,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9E,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACnB,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE;AAChC,EAAE,OAAO;AACT,GAAG,IAAI;AACP,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;AAC/D,GAAG;AACH,GAAG;AACH,CAAC;AACD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACK,MAAC,QAAQ,GAAGA,MAAI,CAAC,MAAM,CAAC;AAC7B,CAAC,IAAI,EAAE,UAAU;AACjB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE;AAC/B,CAAC,CAAC;AACF,CAAC,OAAO,EAAE,4BAA4B;AACtC,CAAC,SAAS,EAAE,KAAK;AACjB,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE;AAChC,EAAE,OAAO;AACT,GAAG,IAAI;AACP,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;AAC/D,GAAG;AACH,GAAG;AACH,CAAC;AACD,CAAC;AACD;AACA;AACA,SAAS,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE;AACjD,CAAC,IAAI,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9D,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AACtC;AACA;AACA;AACA,SAAS,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE;AACxF,CAAC,IAAI,UAAU,GAAG,CAAC;AACnB,CAAC,IAAI,UAAU,GAAG,IAAI;AACtB,CAAC,IAAI,OAAO,GAAG,QAAQ,CAAC,UAAU;AAClC,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU;AAC5B,CAAC,IAAI,GAAG,KAAK,IAAI,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE;AACxE,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK;AAClD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;AACjD,GAAG,MAAM,QAAQ,GAAG,WAAW,KAAK,GAAG,GAAG,aAAa,GAAG,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC;AACjF,GAAG,MAAM,QAAQ,GAAG,QAAQ,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE;AACnD,GAAG,UAAU,IAAI,QAAQ,IAAI,YAAY;AACzC,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,GAAG,KAAK;AACpC,GAAG,IAAI,CAAC,OAAO,EAAE;AACjB,IAAI,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACpD,IAAI,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,GAAG,sBAAsB,CAAC,YAAY,EAAE,QAAQ,CAAC;AACvF,IAAI,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,aAAa,CAAC;AAC5D,IAAI,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC;AACpC,GAAG,CAAC,MAAM;AACV,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE;AAC1C,KAAK,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,GAAG,sBAAsB,CAAC,YAAY,EAAE,QAAQ,CAAC;AACxF,KAAK,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,aAAa,CAAC;AAC1D,IAAI;AACJ,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW;AACjC,GAAG;AACH,EAAE;AACF,CAAC;AACD,CAAC,OAAO,OAAO,EAAE;AACjB,EAAE,IAAI,mBAAmB;AACzB,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW;AACnC,EAAE,CAAC,mBAAmB,GAAG,OAAO,CAAC,UAAU,MAAM,IAAI,IAAI,mBAAmB,KAAK,MAAM,IAAI,mBAAmB,CAAC,WAAW,CAAC,OAAO,CAAC;AACnI,EAAE,OAAO,GAAG,KAAK;AACjB,CAAC;AACD,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACvH,CAAC,IAAI,UAAU,IAAI,CAAC,YAAY,EAAE;AAClC,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC;AACvC,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE;AAC3B,CAAC,CAAC,MAAM;AACR,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;AACxB,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC;AAC1C,CAAC;AACD;AACA,IAAI,SAAS,GAAG,MAAM;AACtB,CAAC,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,GAAG,EAAE,EAAE;AAC7D,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI;AAClB,EAAE,IAAI,CAAC,YAAY,GAAG,YAAY;AAClC,EAAE,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC1C,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,cAAc;AACrC,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACpE,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,EAAE;AACrG,GAAG,IAAI,GAAG,KAAK,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AAChE,QAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACnD,EAAE;AACF,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;AACnE,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAC5E,EAAE,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC;AAC9D,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC3E,CAAC;AACD,CAAC,MAAM,CAAC,IAAI,EAAE;AACd,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK;AAChD,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI;AAClB,EAAE,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC;AACnE,EAAE,OAAO,IAAI;AACb,CAAC;AACD,CAAC,cAAc,CAAC,QAAQ,EAAE;AAC1B,EAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM;AAChC,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;AACnD,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC1D,EAAE,IAAI,eAAe,IAAI,CAAC,eAAe,EAAE;AAC3C,GAAG,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,IAAI,QAAQ,CAAC,IAAI,KAAK,eAAe,EAAE,OAAO,IAAI;AACxH,EAAE;AACF,EAAE,OAAO,KAAK;AACd,CAAC;AACD,CAAC;AACD;AACA;AACA,SAAS,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE;AACxE,CAAC,IAAI,UAAU,GAAG,CAAC;AACnB,CAAC,IAAI,UAAU,GAAG,IAAI;AACtB,CAAC,MAAM,IAAI,GAAG,EAAE;AAChB,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU;AAC5B,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE;AACpB,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE;AACtD,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK;AAClD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;AACjD,GAAG,MAAM,QAAQ,GAAG,WAAW,KAAK,GAAG,GAAG,aAAa,GAAG,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC;AACjF,GAAG,UAAU,IAAI,QAAQ,IAAI,YAAY;AACzC,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,GAAG,KAAK;AACpC,GAAG,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,sBAAsB,CAAC,YAAY,EAAE,QAAQ,CAAC;AAC3E,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACzD,EAAE;AACF,CAAC;AACD,CAAC,MAAM,UAAU,GAAG,UAAU,GAAG,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE;AACvD,CAAC,MAAM,aAAa,GAAG,UAAU,GAAG,EAAE,GAAG,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC;AAC1D,CAAC,OAAO;AACR,EAAE,QAAQ,EAAE;AACZ,GAAG,UAAU;AACb,GAAG,EAAE;AACL,GAAG,GAAG;AACN,GAAG;AACH,EAAE,UAAU;AACZ,EAAE;AACF,EAAE;AACF;AACA;AACA;AACA,SAAS,UAAU,CAAC,QAAQ,EAAE,WAAW,EAAE;AAE3C,CAAC,OAAO,QAAQ,CAAC,aAAa,EAAE;AAChC;AACA;AACA;AACA,SAAS,iBAAiB,CAAC,MAAM,EAAE;AACnC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc;AACtE,CAAC,MAAM,KAAK,GAAG,EAAE;AACjB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC7C,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AACrC,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,QAAQ;AACxE,CAAC,CAAC,CAAC;AACH,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,GAAG,KAAK;AACrC,CAAC,OAAO,KAAK;AACb;AACA;AACA;AACA,SAAS,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE;AAC/E,CAAC,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC;AACxC,CAAC,MAAM,WAAW,GAAG,EAAE;AACvB,CAAC,MAAM,KAAK,GAAG,EAAE;AACjB,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,IAAI,CAAC,EAAE;AACpD,EAAE,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,IAAiB,CAAC;AAClD,EAAE,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5B,EAAE,IAAI,aAAa,EAAE;AACrB,GAAG,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,WAAwB,CAAC;AAChE,GAAG,IAAI,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;AAC/C,EAAE;AACF,CAAC;AACD,CAAC,MAAM,IAAI,GAAG,EAAE;AAChB,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,IAAI,KAAK,KAAK,CAAC,GAAG,WAAW,GAAG,KAAK,CAAC,CAAC;AAChJ,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC;AAC7C;AACA;AACA;AACA,SAAS,eAAe,CAAC,KAAK,EAAE;AAChC,CAAC,OAAO,KAAK,YAAY,aAAa;AACtC;AACA;AACA;AACA,MAAM,+BAA+B,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK;AACxD,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAK;AACnC,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK;AAC9C,CAAC,IAAI,SAAS,GAAG,CAAC;AAClB,CAAC,MAAM,KAAK,GAAG,0BAA0B,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK;AAC/E,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO;AACnC,CAAC,CAAC,CAAC;AACH,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,KAAK;AACxE,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,OAAO,KAAK;AAC9C,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,IAAI,CAAC;AAC3E,CAAC,CAAC,CAAC;AACH,CAAC,IAAI,EAAE,SAAS,KAAK,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK;AAC3D,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE;AAC9B,CAAC,OAAO,IAAI;AACZ,CAAC;AACD;AACA;AACA,SAAS,iBAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE;AACzC,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAChD,CAAC,MAAM,YAAY,GAAG,0BAA0B,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;AAC1G,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC,GAAG,MAAM,cAAc,EAAE;AACxG,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC;AAChD,CAAC,IAAI,CAAC,SAAS,EAAE;AACjB,CAAC,MAAM,UAAU,GAAG,cAAc,GAAG,SAAS,CAAC,QAAQ,GAAG,CAAC;AAC3D,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;AACpE;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CAAC,IAAI,EAAE;AACpC,CAAC,IAAI,MAAM,GAAG,EAAE;AAChB,CAAC,IAAI,CAAC,GAAG,CAAC;AACV,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;AACzB,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;AAC/C,GAAG,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAClC,GAAG,CAAC,IAAI,CAAC;AACT,GAAG;AACH,EAAE;AACF,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACvB,GAAG,MAAM,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC;AACtB,GAAG;AACH,EAAE;AACF,EAAE,IAAI,MAAM,GAAG,CAAC;AAChB,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,EAAE,MAAM,IAAI,CAAC;AAC1E,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM;AACpB,EAAE,IAAI,KAAK,GAAG,KAAK;AACnB,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;AAC1B,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACxB,IAAI,CAAC,IAAI,CAAC;AACV,IAAI;AACJ,GAAG;AACH,GAAG,IAAI,QAAQ,GAAG,CAAC;AACnB,GAAG,OAAO,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,EAAE,QAAQ,IAAI,CAAC;AACjF,GAAG,IAAI,QAAQ,KAAK,MAAM,EAAE;AAC5B,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC;AACjD,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;AAC/I,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM;AAClB,IAAI,KAAK,GAAG,IAAI;AAChB,IAAI;AACJ,GAAG;AACH,GAAG,CAAC,IAAI,QAAQ;AAChB,EAAE;AACF,EAAE,IAAI,CAAC,KAAK,EAAE;AACd,GAAG,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;AACtC,GAAG,CAAC,IAAI,MAAM;AACd,EAAE;AACF,CAAC;AACD,CAAC,OAAO,MAAM;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CAAC,GAAG,EAAE;AACnC,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AACtC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI;AAC7D,EAAE,OAAO,oBAAoB,CAAC,IAAI,CAAC;AACnC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACd;AACA,SAAS,kBAAkB,CAAC,CAAC,EAAE;AAC/B,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE;AAC7C;AACA,SAAS,qBAAqB,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,GAAG,EAAE,EAAE;AACtD,CAAC,IAAI,qBAAqB;AAC1B,CAAC,MAAM,OAAO,GAAG,CAAC,qBAAqB,GAAG,OAAO,CAAC,iBAAiB,MAAM,IAAI,IAAI,qBAAqB,KAAK,MAAM,GAAG,qBAAqB,GAAG,GAAG;AAC/I,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE;AACnE,CAAC,MAAM,IAAI,GAAG,EAAE;AAChB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK;AACnC,EAAE,MAAM,KAAK,GAAG,EAAE;AAClB,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK;AAC7D,GAAG,IAAI,GAAG,GAAG,EAAE;AACf,GAAG,IAAI,QAAQ,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;AACvK,QAAQ,GAAG,GAAG,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE;AACxE,GAAG,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;AACvG,GAAG,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,KAAK,aAAa;AACnD,GAAG,MAAM,KAAK,GAAG,qCAAqC,CAAC,QAAQ,CAAC,KAAK,CAAC;AACtE,GAAG,KAAK,CAAC,IAAI,CAAC;AACd,IAAI,IAAI;AACR,IAAI,QAAQ;AACZ,IAAI;AACJ,IAAI,CAAC;AACL,EAAE,CAAC,CAAC;AACJ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAClB,CAAC,CAAC,CAAC;AACH,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACxE,CAAC,IAAI,WAAW,KAAK,CAAC,EAAE,OAAO,EAAE;AACjC,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;AACrB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE;AAC3C,GAAG,IAAI,IAAI;AACX,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,EAAE,EAAE,MAAM;AAC9F,GAAG,IAAI,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG;AAC7C,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AACzC,EAAE;AACF,CAAC,CAAC,CAAC;AACH,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;AACxE,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC;AAC1B,CAAC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;AACpD,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACrE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;AACrB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE;AAC3C,GAAG,IAAI,KAAK;AACZ,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;AAC/H,EAAE;AACF,CAAC,CAAC,CAAC;AACH,CAAC,IAAI,GAAG,GAAG,IAAI;AACf,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC;AAChI,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAC9E,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK;AACzC,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAClC,EAAE,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC;AACxC,EAAE,IAAI,SAAS,KAAK,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9D,EAAE,IAAI,SAAS,KAAK,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC/D,EAAE,IAAI,SAAS,KAAK,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACjE,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;AAC9B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AACrB,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK;AACnD,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AACrI,CAAC,CAAC,CAAC;AACH,CAAC,OAAO,GAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACK,MAAC,KAAK,GAAGA,MAAI,CAAC,MAAM,CAAC;AAC1B,CAAC,IAAI,EAAE,OAAO;AACd,CAAC,UAAU,GAAG;AACd,EAAE,OAAO;AACT,GAAG,cAAc,EAAE,EAAE;AACrB,GAAG,SAAS,EAAE,KAAK;AACnB,GAAG,aAAa,EAAE,KAAK;AACvB,GAAG,WAAW,EAAE,CAAC;AACjB,GAAG,YAAY,EAAE,EAAE;AACnB,GAAG,IAAI,EAAE,SAAS;AAClB,GAAG,mBAAmB,EAAE,IAAI;AAC5B,GAAG,uBAAuB,EAAE;AAC5B,GAAG;AACH,CAAC,CAAC;AACF,CAAC,OAAO,EAAE,WAAW;AACrB,CAAC,SAAS,EAAE,OAAO;AACnB,CAAC,SAAS,EAAE,IAAI;AAChB,CAAC,KAAK,EAAE,OAAO;AACf,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE;AACtC,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;AACjG,EAAE,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK;AACzC,EAAE,SAAS,aAAa,GAAG;AAC3B,GAAG,IAAI,UAAU,EAAE,OAAO,UAAU;AACpC,GAAG,OAAO,UAAU,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAC7E,EAAE;AACF,EAAE,MAAM,KAAK,GAAG;AAChB,GAAG,OAAO;AACV,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,CAAC;AAC3F,GAAG,QAAQ;AACX,GAAG,CAAC,OAAO,EAAE,CAAC;AACd,GAAG;AACH,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG;AACtC,GAAG,KAAK;AACR,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE;AAC5B,GAAG;AACH,GAAG,GAAG,KAAK;AACX,CAAC,CAAC;AACF,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK;AAC9B,EAAE,MAAM,IAAI,GAAG,EAAE;AACjB,EAAE,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,EAAE;AAClE,EAAE,IAAI,KAAK,CAAC,MAAM,EAAE;AACpB,GAAG,MAAM,WAAW,GAAG,EAAE;AACzB,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;AACzC,IAAI,IAAI,iBAAiB;AACzB,IAAI,MAAM,KAAK,GAAG,uBAAuB,CAAC,CAAC,iBAAiB,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,iBAAiB,KAAK,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC;AAC5J,IAAI,MAAM,KAAK,GAAG,KAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;AACxC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC;AACzD,KAAK,IAAI,EAAE,WAAW;AACtB,KAAK,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM;AACvC,KAAK,CAAC,CAAC,CAAC;AACR,GAAG,CAAC,CAAC;AACL,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;AACvD,EAAE;AACF,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC9C,GAAG,MAAM,SAAS,GAAG,EAAE;AACvB,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;AAChC,IAAI,IAAI,kBAAkB;AAC1B,IAAI,MAAM,KAAK,GAAG,uBAAuB,CAAC,CAAC,kBAAkB,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,kBAAkB,KAAK,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC;AAC/J,IAAI,MAAM,KAAK,GAAG,KAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;AACxC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;AACrD,KAAK,IAAI,EAAE,WAAW;AACtB,KAAK,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM;AACvC,KAAK,CAAC,CAAC,CAAC;AACR,GAAG,CAAC,CAAC;AACL,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;AACrD,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC;AAC5C,CAAC,CAAC;AACF,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AAC9B,EAAE,OAAO,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC;AACvC,CAAC,CAAC;AACF,CAAC,iBAAiB,EAAE;AACpB,EAAE,IAAI,EAAE,OAAO;AACf,EAAE,KAAK,EAAE,OAAO;AAChB,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK;AAClB,GAAG,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AAChC,GAAG,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE;AAClC,GAAG,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;AACvB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE;AACzE,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE;AACzC,EAAE,CAAC;AACH,EAAE,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;AACjC,GAAG,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7C,GAAG,MAAM,SAAS,GAAG,cAAc,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,GAAG;AAC7E,GAAG,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;AAC/C,GAAG,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,MAAM;AAC/C,GAAG,MAAM,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC;AAChC,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,MAAM;AAC7E,GAAG,MAAM,YAAY,GAAG,oBAAoB,CAAC,SAAS,CAAC;AACvD,GAAG,IAAI,YAAY,KAAK,SAAS,EAAE,OAAO,MAAM;AAChD,GAAG,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACzD,GAAG,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,IAAI,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,MAAM;AAC9H,GAAG,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM;AACtD,GAAG,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7D,GAAG,OAAO;AACV,IAAI,GAAG,UAAU;AACjB,IAAI;AACJ,IAAI;AACJ,EAAE;AACF,EAAE;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO;AACT,GAAG,WAAW,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,aAAa,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK;AACrG,IAAI,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC;AACtE,IAAI,IAAI,QAAQ,EAAE;AAClB,KAAK,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC;AACzC,KAAK,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5G,IAAI;AACJ,IAAI,OAAO,IAAI;AACf,GAAG,CAAC;AACJ,GAAG,eAAe,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;AACnD,IAAI,OAAO,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC3C,GAAG,CAAC;AACJ,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;AAClD,IAAI,OAAO,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC1C,GAAG,CAAC;AACJ,GAAG,YAAY,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;AAChD,IAAI,MAAM,KAAK,GAAG,0BAA0B,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;AACzG,IAAI,OAAO,YAAY,CAAC,KAAK,EAAE,QAAQ,KAAK,CAAC,EAAE,KAAK;AACpD,KAAK,IAAI,KAAK,EAAE,iBAAiB,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC;AAChD,KAAK,QAAQ,CAAC,EAAE,CAAC;AACjB,IAAI,CAAC,CAAC,CAAC;AACP,GAAG,CAAC;AACJ,GAAG,YAAY,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;AAChD,IAAI,OAAO,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC;AACxC,GAAG,CAAC;AACJ,GAAG,WAAW,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;AAC/C,IAAI,OAAO,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC;AACvC,GAAG,CAAC;AACJ,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;AAC7C,IAAI,MAAM,KAAK,GAAG,0BAA0B,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;AACzG,IAAI,OAAO,SAAS,CAAC,KAAK,EAAE,QAAQ,KAAK,CAAC,EAAE,KAAK;AACjD,KAAK,IAAI,KAAK,EAAE,iBAAiB,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC;AAChD,KAAK,QAAQ,CAAC,EAAE,CAAC;AACjB,IAAI,CAAC,CAAC,CAAC;AACP,GAAG,CAAC;AACJ,GAAG,WAAW,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;AAC/C,IAAI,OAAO,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC;AACvC,GAAG,CAAC;AACJ,GAAG,UAAU,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;AAC9C,IAAI,OAAO,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC;AACtC,GAAG,CAAC;AACJ,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;AAC7C,IAAI,OAAO,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC;AACrC,GAAG,CAAC;AACJ,GAAG,kBAAkB,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;AACtD,IAAI,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC;AAClD,GAAG,CAAC;AACJ,GAAG,eAAe,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;AACnD,IAAI,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC/C,GAAG,CAAC;AACJ,GAAG,gBAAgB,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;AACpD,IAAI,OAAO,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC5C,GAAG,CAAC;AACJ,GAAG,YAAY,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;AAChD,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,OAAO,IAAI;AAChD,IAAI,OAAO,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC;AACrC,GAAG,CAAC;AACJ,GAAG,gBAAgB,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;AAC/D,IAAI,OAAO,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC;AACpD,GAAG,CAAC;AACJ,GAAG,YAAY,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;AAChD,IAAI,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC3C,GAAG,CAAC;AACJ,GAAG,gBAAgB,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;AACpD,IAAI,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC5C,GAAG,CAAC;AACJ,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;AAC7C,IAAI,IAAI,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC;AAClC,IAAI,OAAO,IAAI;AACf,GAAG,CAAC;AACJ,GAAG,gBAAgB,EAAE,CAAC,QAAQ,KAAK,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK;AACzD,IAAI,IAAI,QAAQ,EAAE;AAClB,KAAK,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC;AAC3F,KAAK,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC;AAC/B,IAAI;AACJ,IAAI,OAAO,IAAI;AACf,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,oBAAoB,GAAG;AACxB,EAAE,OAAO;AACT,GAAG,GAAG,EAAE,MAAM;AACd,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,OAAO,IAAI;AACxD,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE,OAAO,KAAK;AACtD,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE;AACjE,GAAG,CAAC;AACJ,GAAG,WAAW,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE;AAC7D,GAAG,SAAS,EAAE,+BAA+B;AAC7C,GAAG,eAAe,EAAE,+BAA+B;AACnD,GAAG,MAAM,EAAE,+BAA+B;AAC1C,GAAG,YAAY,EAAE;AACjB,GAAG;AACH,CAAC,CAAC;AACF,CAAC,qBAAqB,GAAG;AACzB,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,cAAc,CAAC;AAChF,GAAG,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;AACxC,GAAG,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;AAC1C,GAAG,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;AACjD,GAAG,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;AAC1B,GAAG,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC;AACrC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,EAAE,uBAAuB,EAAE,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAAC;AAC5F,CAAC,CAAC;AACF,CAAC,WAAW,GAAG;AACf,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU;AACtE,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI;AAChC,EAAE,IAAI,WAAW,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI;AACvC,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK;AAC7C,GAAG,MAAM,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;AACxF,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,gBAAgB,CAAC;AAC3E,EAAE,CAAC;AACH,CAAC,CAAC;AACF,CAAC,gBAAgB,CAAC,SAAS,EAAE;AAC7B,EAAE,MAAM,OAAO,GAAG;AAClB,GAAG,IAAI,EAAE,SAAS,CAAC,IAAI;AACvB,GAAG,OAAO,EAAE,SAAS,CAAC,OAAO;AAC7B,GAAG,OAAO,EAAE,SAAS,CAAC;AACtB,GAAG;AACH,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,iBAAiB,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,EAAE;AACxF,CAAC;AACD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACiB,SAAS,CAAC,MAAM,CAAC;AAClC,CAAC,IAAI,EAAE,UAAU;AACjB,CAAC,aAAa,GAAG;AACjB,EAAE,MAAM,UAAU,GAAG,EAAE;AACvB,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACxF,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACpG,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC1G,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjG,EAAE,OAAO,UAAU;AACnB,CAAC;AACD,CAAC;;ACjvBD;AACA,MAAM,yBAAyB,GAAG,EAAE;AACpC;AACA;AACA;AACA;AACA,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,KAAK;AAC/C,CAAC,MAAM,UAAU,GAAG,EAAE;AACtB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,GAAG,yBAAyB,EAAE,OAAO,UAAU;AACrF,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACjD,EAAE,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AACtD,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AACtF,CAAC,CAAC,CAAC;AACH,CAAC,OAAO,UAAU;AAClB,CAAC;AACD,MAAM,qBAAqB,GAAG,CAAC,OAAO,KAAK;AAC3C,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC/B,CAAC,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC;AAC3C,CAAC,IAAI,CAAC,UAAU,EAAE;AAClB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK;AACnC,EAAE,IAAI,qBAAqB;AAC3B,EAAE,MAAM,UAAU,GAAG,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC;AACpD,EAAE,MAAM,6BAA6B,GAAG,CAAC,qBAAqB,GAAG,SAAS,CAAC,aAAa,MAAM,IAAI,IAAI,qBAAqB,KAAK,MAAM,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,qBAAqB,KAAK,MAAM,GAAG,MAAM,GAAG,qBAAqB,CAAC,YAAY,CAAC,OAAO,CAAC;AAC7S,EAAE,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,EAAE,6BAA6B,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;AACnF,CAAC,CAAC,CAAC;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACK,MAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;AAC9B,CAAC,IAAI,EAAE,WAAW;AAClB,CAAC,QAAQ,EAAE,GAAG;AACd,CAAC,UAAU,GAAG;AACd,EAAE,OAAO;AACT,GAAG,cAAc,EAAE,EAAE;AACrB,GAAG,qBAAqB,EAAE;AAC1B,GAAG;AACH,CAAC,CAAC;AACF,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,CAAC;AACV,GAAG,GAAG,EAAE,MAAM;AACd,GAAG,SAAS,EAAE,KAAK;AACnB,GAAG,QAAQ,EAAE,CAAC,OAAO,KAAK;AAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK;AACpD,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,OAAO,CAAC;AAC1E,IAAI,OAAO,EAAE;AACb,GAAG;AACH,GAAG,CAAC;AACJ,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE;AAChC,EAAE,OAAO;AACT,GAAG,MAAM;AACT,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;AAC/D,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO;AACT,GAAG,eAAe,EAAE,CAAC,UAAU,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK;AACtD,IAAI,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;AACrD,GAAG,CAAC;AACJ,GAAG,oBAAoB,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK;AAC3C,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE;AAC5B,IAAI,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK;AACrE,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI;AACpC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC;AACrL,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,IAAI;AACf,GAAG;AACH,GAAG;AACH,CAAC;AACD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC;AACzC,CAAC,IAAI,EAAE,iBAAiB;AACxB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE;AACjC,CAAC,CAAC;AACF,CAAC,mBAAmB,GAAG;AACvB,EAAE,OAAO,CAAC;AACV,GAAG,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AAC5B,GAAG,UAAU,EAAE,EAAE,eAAe,EAAE;AAClC,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,SAAS,EAAE,CAAC,OAAO,KAAK;AAC5B,KAAK,IAAI,iBAAiB;AAC1B,KAAK,MAAM,KAAK,GAAG,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,CAAC,MAAM,IAAI,IAAI,iBAAiB,KAAK,MAAM,GAAG,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe;AACnL,KAAK,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;AACrF,IAAI,CAAC;AACL,IAAI,UAAU,EAAE,CAAC,UAAU,KAAK;AAChC,KAAK,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,OAAO,EAAE;AAC/C,KAAK,OAAO,EAAE,KAAK,EAAE,CAAC,kBAAkB,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC,EAAE;AACxE,IAAI;AACJ,IAAI;AACJ,GAAG,CAAC;AACJ,CAAC,CAAC;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO;AACT,GAAG,kBAAkB,EAAE,CAAC,eAAe,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK;AAC3D,IAAI,OAAO,KAAK,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC,GAAG,EAAE;AAClE,GAAG,CAAC;AACJ,GAAG,oBAAoB,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK;AAC9C,IAAI,OAAO,KAAK,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE;AAC/F,GAAG;AACH,GAAG;AACH,CAAC;AACD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACK,MAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;AAC/B,CAAC,IAAI,EAAE,OAAO;AACd,CAAC,UAAU,GAAG;AACd,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE;AACjC,CAAC,CAAC;AACF,CAAC,mBAAmB,GAAG;AACvB,EAAE,OAAO,CAAC;AACV,GAAG,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AAC5B,GAAG,UAAU,EAAE,EAAE,KAAK,EAAE;AACxB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,SAAS,EAAE,CAAC,OAAO,KAAK;AAC5B,KAAK,IAAI,iBAAiB;AAC1B,KAAK,MAAM,KAAK,GAAG,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI,iBAAiB,KAAK,MAAM,GAAG,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK;AAC9J,KAAK,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;AACrF,IAAI,CAAC;AACL,IAAI,UAAU,EAAE,CAAC,UAAU,KAAK;AAChC,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;AACrC,KAAK,OAAO,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;AACnD,IAAI;AACJ,IAAI;AACJ,GAAG,CAAC;AACJ,CAAC,CAAC;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO;AACT,GAAG,QAAQ,EAAE,CAAC,KAAK,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK;AACvC,IAAI,OAAO,KAAK,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE;AACxD,GAAG,CAAC;AACJ,GAAG,UAAU,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK;AACpC,IAAI,OAAO,KAAK,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE;AACrF,GAAG;AACH,GAAG;AACH,CAAC;AACD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;AACpC,CAAC,IAAI,EAAE,YAAY;AACnB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE;AACjC,CAAC,CAAC;AACF,CAAC,mBAAmB,GAAG;AACvB,EAAE,OAAO,CAAC;AACV,GAAG,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AAC5B,GAAG,UAAU,EAAE,EAAE,UAAU,EAAE;AAC7B,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,SAAS,EAAE,CAAC,OAAO,KAAK;AAC5B,KAAK,IAAI,iBAAiB;AAC1B,KAAK,OAAO,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,IAAI,IAAI,iBAAiB,KAAK,MAAM,GAAG,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU;AAClK,IAAI,CAAC;AACL,IAAI,UAAU,EAAE,CAAC,UAAU,KAAK;AAChC,KAAK,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE;AAC1C,KAAK,OAAO,EAAE,KAAK,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE;AAC9D,IAAI;AACJ,IAAI;AACJ,GAAG,CAAC;AACJ,CAAC,CAAC;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO;AACT,GAAG,aAAa,EAAE,CAAC,UAAU,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK;AACjD,IAAI,OAAO,KAAK,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE;AAC7D,GAAG,CAAC;AACJ,GAAG,eAAe,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK;AACzC,IAAI,OAAO,KAAK,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE;AAC1F,GAAG;AACH,GAAG;AACH,CAAC;AACD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC;AAClC,CAAC,IAAI,EAAE,UAAU;AACjB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE;AACjC,CAAC,CAAC;AACF,CAAC,mBAAmB,GAAG;AACvB,EAAE,OAAO,CAAC;AACV,GAAG,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AAC5B,GAAG,UAAU,EAAE,EAAE,QAAQ,EAAE;AAC3B,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,SAAS,EAAE,CAAC,OAAO,KAAK;AAC5B,KAAK,IAAI,iBAAiB;AAC1B,KAAK,OAAO,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,IAAI,IAAI,iBAAiB,KAAK,MAAM,GAAG,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ;AAC9J,IAAI,CAAC;AACL,IAAI,UAAU,EAAE,CAAC,UAAU,KAAK;AAChC,KAAK,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE;AACxC,KAAK,OAAO,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC1D,IAAI;AACJ,IAAI;AACJ,GAAG,CAAC;AACJ,CAAC,CAAC;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO;AACT,GAAG,WAAW,EAAE,CAAC,QAAQ,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK;AAC7C,IAAI,OAAO,KAAK,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE;AAC3D,GAAG,CAAC;AACJ,GAAG,aAAa,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK;AACvC,IAAI,OAAO,KAAK,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE;AACxF,GAAG;AACH,GAAG;AACH,CAAC;AACD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;AACpC,CAAC,IAAI,EAAE,YAAY;AACnB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE;AACjC,CAAC,CAAC;AACF,CAAC,mBAAmB,GAAG;AACvB,EAAE,OAAO,CAAC;AACV,GAAG,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AAC5B,GAAG,UAAU,EAAE,EAAE,UAAU,EAAE;AAC7B,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,SAAS,EAAE,CAAC,OAAO,KAAK;AAC5B,KAAK,IAAI,iBAAiB;AAC1B,KAAK,OAAO,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,IAAI,IAAI,iBAAiB,KAAK,MAAM,GAAG,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU;AAClK,IAAI,CAAC;AACL,IAAI,UAAU,EAAE,CAAC,UAAU,KAAK;AAChC,KAAK,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE;AAC1C,KAAK,OAAO,EAAE,KAAK,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE;AAC9D,IAAI;AACJ,IAAI;AACJ,GAAG,CAAC;AACJ,CAAC,CAAC;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO;AACT,GAAG,aAAa,EAAE,CAAC,UAAU,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK;AACjD,IAAI,OAAO,KAAK,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE;AAC7D,GAAG,CAAC;AACJ,GAAG,eAAe,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK;AACzC,IAAI,OAAO,KAAK,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE;AAC1F,GAAG;AACH,GAAG;AACH,CAAC;AACD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACqB,SAAS,CAAC,MAAM,CAAC;AACtC,CAAC,IAAI,EAAE,cAAc;AACrB,CAAC,aAAa,GAAG;AACjB,EAAE,MAAM,UAAU,GAAG,EAAE;AACvB,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AACtH,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACxF,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACvG,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjG,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACvG,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACpG,EAAE,OAAO,UAAU;AACnB,CAAC;AACD,CAAC;;AC7RD;AACA;AACA;AACA;AACA;AACA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;AAC9B,CAAC,IAAI,EAAE,WAAW;AAClB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE;AAC/B,CAAC,CAAC;AACF,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;AACxB,GAAG,KAAK,EAAE,iBAAiB;AAC3B,GAAG,SAAS,EAAE,KAAK;AACnB,GAAG,QAAQ,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG;AAC3D,GAAG,CAAC;AACJ,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE;AAChC,EAAE,OAAO;AACT,GAAG,GAAG;AACN,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;AAC/D,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE;AAC/B,EAAE,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;AAC7F,CAAC,CAAC;AACF,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;AAC/B,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AAC9C,CAAC,CAAC;AACF,CAAC,iBAAiB,EAAE;AACpB,EAAE,IAAI,EAAE,WAAW;AACnB,EAAE,KAAK,EAAE,QAAQ;AACjB,EAAE,KAAK,CAAC,GAAG,EAAE;AACb,GAAG,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;AAC3B,EAAE,CAAC;AACH,EAAE,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;AAChC,GAAG,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC;AACpD,GAAG,IAAI,CAAC,KAAK,EAAE;AACf,GAAG,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACvC,GAAG,OAAO;AACV,IAAI,IAAI,EAAE,WAAW;AACrB,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AACjB,IAAI,IAAI,EAAE,YAAY;AACtB,IAAI,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,YAAY;AAC3C,IAAI;AACJ,EAAE;AACF,EAAE;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO;AACT,GAAG,YAAY,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK;AACzC,IAAI,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACtC,GAAG,CAAC;AACJ,GAAG,eAAe,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK;AAC5C,IAAI,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AACzC,GAAG,CAAC;AACJ,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK;AAC3C,IAAI,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACxC,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,oBAAoB,GAAG;AACxB,EAAE,OAAO;AACT,GAAG,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE;AACxD,GAAG,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe;AACtD,GAAG;AACH,CAAC;AACD,CAAC,CAAC;AACF;AACA;AACG,IAACxE,aAAW,GAAG;;ACpElB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,OAAO,GAAG,EAAE,EAAE;AAClC,IAAI,OAAO,IAAI,MAAM,CAAC;AACtB,QAAQ,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,IAAI,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3E,KAAK,CAAC;AACN;AACA,MAAM,cAAc,CAAC;AACrB,IAAI,WAAW,CAAC,UAAU,EAAE,OAAO,EAAE;AACrC,QAAQ,IAAI,EAAE;AACd,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU;AACpC,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI;AAC7B,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI;AAC3B,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI;AACjC,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC;AAC5E,QAAQ,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,KAAK,GAAG,SAAS,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC;AACrF,QAAQ,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;AAClC,QAAQ,IAAI,CAAC,QAAQ,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI;AACjF,YAAY,IAAI,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,YAAY,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC;AAC1D,YAAY,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;AACpC,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5G,IAAI;AACJ,IAAI,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE;AAClC,QAAQ,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE;AAC7E;AACA;AACA,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE;AACpC,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;AACnE,gBAAgB,IAAI,MAAM,IAAI,IAAI,CAAC,SAAS;AAC5C,oBAAoB,IAAI,CAAC,aAAa,EAAE;AACxC;AACA,oBAAoB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAC1C,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,aAAa,EAAE;AACpC,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,CAAC,GAAG,EAAE;AACnB,QAAQ,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS;AACjC,YAAY;AACZ,QAAQ,IAAI,CAAC,SAAS,GAAG,GAAG;AAC5B,QAAQ,IAAI,GAAG,IAAI,IAAI,EAAE;AACzB,YAAY,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7D,YAAY,IAAI,CAAC,OAAO,GAAG,IAAI;AAC/B,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,CAAC,aAAa,EAAE;AAChC,QAAQ;AACR,IAAI;AACJ,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;AACpE,QAAQ,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI;AACtD,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,SAAS,CAAC,qBAAqB,EAAE;AAC3F,QAAQ,IAAI,MAAM,GAAG,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,YAAY;AAClH,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,IAAI,CAAC,SAAS;AAChE,YAAY,IAAI,MAAM,IAAI,KAAK,EAAE;AACjC,gBAAgB,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,GAAG,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AACnG,gBAAgB,IAAI,IAAI,EAAE;AAC1B,oBAAoB,IAAI,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE;AAC/D,oBAAoB,IAAI,GAAG,GAAG,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG;AACrE,oBAAoB,IAAI,MAAM,IAAI,KAAK;AACvC,wBAAwB,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,qBAAqB,EAAE,CAAC,GAAG,IAAI,CAAC;AAC7G,oBAAoB,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM;AAC7D,oBAAoB,IAAI,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,GAAG,SAAS,EAAE,MAAM,EAAE,GAAG,GAAG,SAAS,EAAE;AACxH,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;AACpE,YAAY,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM;AACrD,YAAY,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;AAC5H,QAAQ;AACR,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY;AACrD,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC3B,YAAY,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC5E,YAAY,IAAI,IAAI,CAAC,KAAK;AAC1B,gBAAgB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK;AACnD,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,wDAAwD;AACjG,YAAY,IAAI,IAAI,CAAC,KAAK,EAAE;AAC5B,gBAAgB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK;AAC/D,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,8BAA8B,EAAE,OAAO,CAAC;AAC9E,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,+BAA+B,EAAE,CAAC,OAAO,CAAC;AAChF,QAAQ,IAAI,UAAU,EAAE,SAAS;AACjC,QAAQ,IAAI,CAAC,MAAM,IAAI,MAAM,IAAI,QAAQ,CAAC,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,QAAQ,IAAI,QAAQ,EAAE;AACjG,YAAY,UAAU,GAAG,CAAC,WAAW;AACrC,YAAY,SAAS,GAAG,CAAC,WAAW;AACpC,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE;AACrD,YAAY,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,YAAY;AAChH,YAAY,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,GAAG,YAAY;AACrE,YAAY,SAAS,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,SAAS,GAAG,YAAY;AAClE,QAAQ;AACR,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,UAAU,IAAI,MAAM,GAAG,IAAI;AAC1E,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,SAAS,IAAI,MAAM,GAAG,IAAI;AACvE,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,GAAG,IAAI;AAC3E,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,MAAM,GAAG,IAAI;AAC5E,IAAI;AACJ,IAAI,eAAe,CAAC,OAAO,EAAE;AAC7B,QAAQ,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;AAClC,QAAQ,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;AACtE,IAAI;AACJ,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;AAC1F,QAAQ,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AACzF,QAAQ,IAAI,iBAAiB,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB;AACxE,QAAQ,IAAI,QAAQ,GAAG,OAAO,iBAAiB,IAAI;AACnD,cAAc,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK;AAC3D,cAAc,iBAAiB;AAC/B,QAAQ,IAAI,CAAC,GAAG,IAAI,QAAQ;AAC5B,YAAY,OAAO,IAAI;AACvB,QAAQ,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG;AAC5B,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE;AACxE,YAAY,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpG,YAAY,IAAI,KAAK,IAAI,IAAI;AAC7B,gBAAgB,MAAM,GAAG,KAAK;AAC9B,QAAQ;AACR,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,QAAQ,CAAC,KAAK,EAAE;AACpB,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ;AACrC,YAAY;AACZ,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK;AAClC,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AAC9C,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;AAC5B,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAClC,YAAY,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACtC,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;AAChC,IAAI;AACJ,IAAI,IAAI,GAAG;AACX,QAAQ,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;AAChC,IAAI;AACJ,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC;AAC9D,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAChC,IAAI;AACJ;;AC1JA;AACA;AACA;AACA;AACA,MAAM,SAAS,SAAS,SAAS,CAAC;AAClC;AACA;AACA;AACA,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;AACzB,IAAI;AACJ,IAAI,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE;AACtB,QAAQ,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtD,QAAQ,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACjF,IAAI;AACJ,IAAI,OAAO,GAAG,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;AACpC,IAAI,EAAE,CAAC,KAAK,EAAE;AACd,QAAQ,OAAO,KAAK,YAAY,SAAS,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;AACpE,IAAI;AACJ,IAAI,MAAM,GAAG;AACb,QAAQ,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE;AACpD,IAAI;AACJ;AACA;AACA;AACA,IAAI,OAAO,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE;AAC/B,QAAQ,IAAI,OAAO,IAAI,CAAC,GAAG,IAAI,QAAQ;AACvC,YAAY,MAAM,IAAI,UAAU,CAAC,sCAAsC,CAAC;AACxE,QAAQ,OAAO,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnD,IAAI;AACJ;AACA;AACA;AACA,IAAI,WAAW,GAAG,EAAE,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD;AACA;AACA;AACA,IAAI,OAAO,KAAK,CAAC,IAAI,EAAE;AACvB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM;AAChC,QAAQ,IAAI,MAAM,CAAC,aAAa,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAC7E,YAAY,OAAO,KAAK;AACxB,QAAQ,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc;AACtD,QAAQ,IAAI,QAAQ,IAAI,IAAI;AAC5B,YAAY,OAAO,QAAQ;AAC3B,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,WAAW;AACnE,QAAQ,OAAO,KAAK,IAAI,KAAK,CAAC,WAAW;AACzC,IAAI;AACJ;AACA;AACA;AACA,IAAI,OAAO,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,GAAG,KAAK,EAAE;AAC1D,QAAQ,MAAM,EAAE,SAAS;AACzB,YAAY,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;AAClD,gBAAgB,OAAO,IAAI;AAC3B,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI;AAC3C;AACA,YAAY,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE;AAC3C,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzC,gBAAgB,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAC1F,oBAAoB,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACzF,oBAAoB;AACpB,gBAAgB;AAChB,qBAAqB,IAAI,CAAC,IAAI,CAAC,EAAE;AACjC,oBAAoB,OAAO,IAAI;AAC/B,gBAAgB;AAChB,gBAAgB,GAAG,IAAI,GAAG;AAC1B,gBAAgB,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;AAChD,gBAAgB,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;AACzC,oBAAoB,OAAO,IAAI;AAC/B,YAAY;AACZ;AACA,YAAY,SAAS;AACrB,gBAAgB,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS;AACvE,gBAAgB,IAAI,CAAC,MAAM,EAAE;AAC7B,oBAAoB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AAC1F,wBAAwB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;AAC1E,wBAAwB,QAAQ,GAAG,KAAK;AACxC,wBAAwB,SAAS,MAAM;AACvC,oBAAoB;AACpB,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,IAAI,GAAG,MAAM;AAC7B,gBAAgB,GAAG,IAAI,GAAG;AAC1B,gBAAgB,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;AAChD,gBAAgB,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;AACzC,oBAAoB,OAAO,IAAI;AAC/B,YAAY;AACZ,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,IAAI;AACJ;AACA,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK;AACnC,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,iBAAiB;AAChD,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC;AACxC,MAAM,WAAW,CAAC;AAClB,IAAI,WAAW,CAAC,GAAG,EAAE;AACrB,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG;AACtB,IAAI;AACJ,IAAI,GAAG,CAAC,OAAO,EAAE;AACjB,QAAQ,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrD,IAAI;AACJ,IAAI,OAAO,CAAC,GAAG,EAAE;AACjB,QAAQ,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACxC,QAAQ,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACjF,IAAI;AACJ;AACA,SAAS,QAAQ,CAAC,IAAI,EAAE;AACxB,IAAI,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe;AAC1E;AACA,SAAS,YAAY,CAAC,IAAI,EAAE;AAC5B,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1C,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD;AACA,QAAQ,IAAI,KAAK,IAAI,CAAC,EAAE;AACxB,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS;AAC1C,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,KAAK,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AAC/E,YAAY,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;AAC1F,gBAAgB,OAAO,IAAI;AAC3B,YAAY,IAAI,MAAM,CAAC,aAAa;AACpC,gBAAgB,OAAO,KAAK;AAC5B,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,OAAO,IAAI;AACf;AACA,SAAS,WAAW,CAAC,IAAI,EAAE;AAC3B,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1C,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7D,QAAQ,IAAI,KAAK,IAAI,MAAM,CAAC,UAAU,EAAE;AACxC,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS;AAC1C,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ,QAAQ;AACR,QAAQ,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE;AACzE,YAAY,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;AACvF,gBAAgB,OAAO,IAAI;AAC3B,YAAY,IAAI,KAAK,CAAC,aAAa;AACnC,gBAAgB,OAAO,KAAK;AAC5B,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,IAAI;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,GAAG;AACrB,IAAI,OAAO,IAAI,MAAM,CAAC;AACtB,QAAQ,KAAK,EAAE;AACf,YAAY,WAAW,EAAE,aAAa;AACtC,YAAY,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;AAC1D,gBAAgB,OAAO,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI;AACvG,YAAY,CAAC;AACb,YAAY,WAAW;AACvB,YAAY,aAAa;AACzB,YAAY,eAAe,EAAE,EAAE,WAAW,EAAE,WAAW;AACvD;AACA,KAAK,CAAC;AACN;AACA,MAAM,aAAa,GAAG,cAAc,CAAC;AACrC,IAAI,WAAW,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;AACnC,IAAI,YAAY,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AACnC,IAAI,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;AAChC,IAAI,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AAChC,CAAC,CAAC;AACF,SAAS,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE;AAC1B,IAAI,MAAM,MAAM,GAAG,IAAI,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,OAAO,GAAG,MAAM,CAAC;AAC5F,IAAI,OAAO,UAAU,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;AAC5C,QAAQ,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS;AACjC,QAAQ,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,GAAG,CAAC,KAAK;AACxE,QAAQ,IAAI,GAAG,YAAY,aAAa,EAAE;AAC1C,YAAY,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC;AACjE,gBAAgB,OAAO,KAAK;AAC5B,YAAY,QAAQ,GAAG,KAAK;AAC5B,YAAY,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;AAClF,QAAQ;AACR,QAAQ,IAAI,MAAM,GAAG,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC;AACvE,QAAQ,IAAI,CAAC,MAAM;AACnB,YAAY,OAAO,KAAK;AACxB,QAAQ,IAAI,QAAQ;AACpB,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAClE,QAAQ,OAAO,IAAI;AACnB,IAAI,CAAC;AACL;AACA,SAAS,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE;AACvC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ;AAC/B,QAAQ,OAAO,KAAK;AACpB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;AAC1C,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;AAC9B,QAAQ,OAAO,KAAK;AACpB,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;AAChF,IAAI,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE,IAAI,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC9G,QAAQ,OAAO,KAAK;AACpB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,IAAI,OAAO,IAAI;AACf;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;AAClC,IAAI,IAAI,KAAK,CAAC,SAAS,IAAI,uBAAuB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,YAAY,SAAS,CAAC;AAClG,QAAQ,OAAO,KAAK;AACpB,IAAI,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS;AACxC,IAAI,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AACtG,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ,OAAO,KAAK;AACpB,IAAI,IAAI,IAAI,GAAG,QAAQ,CAAC,KAAK;AAC7B,IAAI,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AAC/C,QAAQ,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACjE,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/E,IAAI,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACtE,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AACrB,IAAI,OAAO,KAAK;AAChB;AACA,SAAS,aAAa,CAAC,KAAK,EAAE;AAC9B,IAAI,IAAI,EAAE,KAAK,CAAC,SAAS,YAAY,SAAS,CAAC;AAC/C,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC5C,IAAI,IAAI,CAAC,SAAS,GAAG,uBAAuB;AAC5C,IAAI,OAAO,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;AACjH;;AC5OA,IAAI,cAAc,GAAG,GAAG;;AAExB;AACA;AACA;AACA,IAAI,YAAY,GAAG,SAAS,YAAY,IAAI,CAAC,CAAC;;AAE9C,YAAY,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,KAAK,EAAE;AACxD,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,CAAC;AACnC,EAAE,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;;AAElC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK;AAC/B,KAAK,KAAK,CAAC,MAAM,GAAG,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC7D,KAAK,IAAI,CAAC,MAAM,GAAG,cAAc,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7D,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK;AAC1B,CAAC;;AAED;AACA;AACA,YAAY,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,KAAK,EAAE;AAC1D,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,CAAC;AACnC,EAAE,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI;AAC7C,CAAC;;AAED,YAAY,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,KAAK,EAAE;AAClE,EAAE,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK;AAC/B,CAAC;;AAED;AACA;AACA,YAAY,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;AACzD,IAAI,KAAK,IAAI,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC;AACnC,IAAI,KAAK,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM;;AAEzC,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,OAAO,YAAY,CAAC,KAAK,CAAC;AAC9C,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;AACrE,CAAC;;AAED;AACA;AACA,YAAY,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE;AAC9C,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,SAAS,CAAC;AACpD,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,YAAY,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;AAChE,IAAI,KAAK,IAAI,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC;AACnC,IAAI,KAAK,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM;;AAEzC,EAAE,IAAI,IAAI,IAAI,EAAE;AAChB,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC;AACA,IAAI,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC;;AAED;AACA;AACA;AACA,YAAY,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;AACxD,IAAI,KAAK,IAAI,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC;AACnC,IAAI,KAAK,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM;;AAEzC,EAAE,IAAI,MAAM,GAAG,EAAE;AACjB,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE,CAAC,EAAE,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;AAC9E,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA;AACA,YAAY,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,MAAM,EAAE;AAC3C,EAAE,IAAI,MAAM,YAAY,YAAY,EAAE,EAAE,OAAO,MAAM,CAAC;AACtD,EAAE,OAAO,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC;AACnE,CAAC;;AAED,IAAI,IAAI,iBAAiB,UAAU,YAAY,EAAE;AACjD,EAAE,SAAS,IAAI,CAAC,MAAM,EAAE;AACxB,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM;AACxB,EAAE;;AAEF,EAAE,KAAK,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,YAAY;AACnD,EAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,IAAI,YAAY,CAAC,SAAS,EAAE;AAC1E,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI;;AAEnC,EAAE,IAAI,kBAAkB,GAAG,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE;;AAE3F,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;AAC/C,IAAI,OAAO,IAAI,CAAC;AAChB,EAAE,CAAC;;AAEH,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE;AAC7D,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,CAAC;AACtD,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;AAC/C,EAAE,CAAC;;AAEH,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,CAAC,EAAE;AAClD,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AACxB,EAAE,CAAC;;AAEH,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE;AAC3E,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;AAClC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,KAAK,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC;AACrE,EAAE,CAAC;;AAEH,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAoB,GAAG,SAAS,oBAAoB,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE;AAC3F,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE;AACvC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,KAAK,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC;AACrE,EAAE,CAAC;;AAEH,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,KAAK,EAAE;AAC1D,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,cAAc;AACpD,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC7D,EAAE,CAAC;;AAEH,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,KAAK,EAAE;AAC5D,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,cAAc;AACpD,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7D,EAAE,CAAC;;AAEH,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAAG,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;;AAE3E,EAAE,kBAAkB,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;;AAEzD,EAAE,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,EAAE,kBAAkB,EAAE;;AAE/D,EAAE,OAAO,IAAI;AACb,CAAC,CAAC,YAAY,CAAC,CAAC;;AAEhB;AACA;AACA,YAAY,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC;;AAEjC,IAAI,MAAM,iBAAiB,UAAU,YAAY,EAAE;AACnD,EAAE,SAAS,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;AAC/B,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI;AACpB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK;AACtB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;AAC5C,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACtD,EAAE;;AAEF,EAAE,KAAK,YAAY,GAAG,MAAM,CAAC,SAAS,GAAG,YAAY;AACrD,EAAE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,IAAI,YAAY,CAAC,SAAS,EAAE;AAC5E,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,MAAM;;AAEvC,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;AACjD,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AAC1D,EAAE,CAAC;;AAEH,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,CAAC,EAAE;AACpD,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;AACxF,EAAE,CAAC;;AAEH,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE;AAC7E,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;AAClC,IAAI,IAAI,IAAI,GAAG,OAAO;AACtB,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,KAAK,KAAK;AAC/E,MAAM,EAAE,OAAO,KAAK,CAAC;AACrB,IAAI,IAAI,EAAE,GAAG,OAAO;AACpB,QAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK;AAC/H,MAAM,EAAE,OAAO,KAAK,CAAC;AACrB,EAAE,CAAC;;AAEH,EAAE,MAAM,CAAC,SAAS,CAAC,oBAAoB,GAAG,SAAS,oBAAoB,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE;AAC7F,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;AAClC,IAAI,IAAI,IAAI,GAAG,OAAO;AACtB,QAAQ,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK;AACtH,MAAM,EAAE,OAAO,KAAK,CAAC;AACrB,IAAI,IAAI,EAAE,GAAG,OAAO;AACpB,QAAQ,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,KAAK;AACvF,MAAM,EAAE,OAAO,KAAK,CAAC;AACrB,EAAE,CAAC;;AAEH,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE;AAC/D,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,CAAC;AACtD,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;AAClC,IAAI,IAAI,EAAE,IAAI,OAAO,EAAE,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC1D,IAAI,IAAI,IAAI,IAAI,OAAO,EAAE,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC;AACjF,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC;AAClF,EAAE,CAAC;;AAEH,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,KAAK,EAAE;AAC5D,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;AAC5C,IAAI,IAAI,KAAK,EAAE,EAAE,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACrD,EAAE,CAAC;;AAEH,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,KAAK,EAAE;AAC9D,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC5C,IAAI,IAAI,KAAK,EAAE,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACtD,EAAE,CAAC;;AAEH,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,KAAK,EAAE;AAC9D,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACtE,MAAM,EAAE,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACpE,IAAI,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK;AACjC,EAAE,CAAC;;AAEH,EAAE,OAAO,MAAM;AACf,CAAC,CAAC,YAAY,CAAC,CAAC;;ACxMhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,eAAe,GAAG,GAAG;AAC3B,MAAM,MAAM,CAAC;AACb,IAAI,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE;AACnC,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU;AACpC,IAAI;AACJ;AACA;AACA,IAAI,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE;AACnC,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC;AAChC,YAAY,OAAO,IAAI;AACvB,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;AACnC,QAAQ,QAAQ,GAAG,EAAE,EAAE;AACvB,YAAY,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAC9C,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE;AAChC,gBAAgB,EAAE,GAAG;AACrB,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,KAAK,EAAE,OAAO;AAC1B,QAAQ,IAAI,aAAa,EAAE;AAC3B,YAAY,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1D,YAAY,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM;AACvC,QAAQ;AACR,QAAQ,IAAI,SAAS,GAAG,KAAK,CAAC,EAAE;AAChC,QAAQ,IAAI,SAAS,EAAE,SAAS;AAChC,QAAQ,IAAI,QAAQ,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE;AACzC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;AACxC,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AAC5B,gBAAgB,IAAI,CAAC,KAAK,EAAE;AAC5B,oBAAoB,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AACtD,oBAAoB,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM;AAC/C,gBAAgB;AAChB,gBAAgB,OAAO,EAAE;AACzB,gBAAgB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACpC,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,gBAAgB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG;AACnE,gBAAgB,IAAI,IAAI,IAAI,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE;AAC3D,oBAAoB,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACnF,oBAAoB,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;AAC1G,gBAAgB;AAChB,gBAAgB,OAAO,EAAE;AACzB,gBAAgB,IAAI,GAAG;AACvB,oBAAoB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC;AACjD,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9C,YAAY;AACZ,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE;AAChC,gBAAgB,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS;AAC7F,gBAAgB,SAAS,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AAClI,gBAAgB,OAAO,KAAK;AAC5B,YAAY;AACZ,QAAQ,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAChC,QAAQ,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE;AACxE,IAAI;AACJ;AACA,IAAI,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE;AACnE,QAAQ,IAAI,QAAQ,GAAG,EAAE,EAAE,UAAU,GAAG,IAAI,CAAC,UAAU;AACvD,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,aAAa,IAAI,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI;AAC1H,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzD,YAAY,IAAI,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnE,YAAY,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM;AACnF,YAAY,IAAI,MAAM,GAAG,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AAC3D,gBAAgB,IAAI,GAAG,MAAM;AAC7B,gBAAgB,IAAI,CAAC;AACrB,oBAAoB,QAAQ,CAAC,GAAG,EAAE;AAClC;AACA,oBAAoB,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AACrE,YAAY;AACZ,YAAY,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,YAAY,IAAI,SAAS,EAAE;AAC3B,gBAAgB,UAAU,EAAE;AAC5B,gBAAgB,SAAS,GAAG,SAAS;AACrC,YAAY;AACZ,YAAY,IAAI,CAAC,aAAa;AAC9B,gBAAgB,QAAQ,GAAG,IAAI;AAC/B,QAAQ;AACR,QAAQ,IAAI,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC,KAAK;AACrD,QAAQ,IAAI,QAAQ,GAAG,cAAc,EAAE;AACvC,YAAY,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACvD,YAAY,UAAU,IAAI,QAAQ;AAClC,QAAQ;AACR,QAAQ,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC;AAChE,IAAI;AACJ,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE;AACxB,QAAQ,IAAI,IAAI,GAAG,IAAI,OAAO;AAC9B,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;AACxC,YAAY,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,IAAI;AAClF,kBAAkB,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,GAAG,SAAS;AAClE,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC;AAC/C,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;AACpB,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,OAAO,CAAC,KAAK,EAAE;AACnB,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC;AAChC,YAAY,OAAO,IAAI;AACvB,QAAQ,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;AAC9F,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,gBAAgB,EAAE,YAAY,EAAE;AAC5C,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU;AAC5B,YAAY,OAAO,IAAI;AACvB,QAAQ,IAAI,YAAY,GAAG,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC;AACpF,QAAQ,IAAI,OAAO,GAAG,gBAAgB,CAAC,OAAO;AAC9C,QAAQ,IAAI,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM;AACpD,QAAQ,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU;AACxC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS;AACvD,YAAY,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AACnC,QAAQ,IAAI,QAAQ,GAAG,YAAY;AACnC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI;AACnC,YAAY,IAAI,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC;AACnD,YAAY,IAAI,GAAG,IAAI,IAAI;AAC3B,gBAAgB;AAChB,YAAY,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC;AAC9C,YAAY,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACvC,YAAY,IAAI,IAAI,CAAC,IAAI,EAAE;AAC3B,gBAAgB,IAAI,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzF,gBAAgB,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACtG,gBAAgB,IAAI,SAAS;AAC7B,oBAAoB,UAAU,EAAE;AAChC,gBAAgB,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AACjE,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,YAAY;AACZ,QAAQ,CAAC,EAAE,KAAK,CAAC;AACjB,QAAQ,IAAI,OAAO,GAAG,EAAE;AACxB,QAAQ,KAAK,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE;AACpD,YAAY,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AACnF,QAAQ,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC;AAClD,QAAQ,IAAI,MAAM,CAAC,cAAc,EAAE,GAAG,eAAe;AACrD,YAAY,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;AAC7E,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,cAAc,GAAG;AACrB,QAAQ,IAAI,KAAK,GAAG,CAAC;AACrB,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;AACnD,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACvB,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACvC,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM;AACxE,QAAQ,IAAI,KAAK,GAAG,EAAE,EAAE,MAAM,GAAG,CAAC;AAClC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;AACxC,YAAY,IAAI,CAAC,IAAI,IAAI,EAAE;AAC3B,gBAAgB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,gBAAgB,IAAI,IAAI,CAAC,SAAS;AAClC,oBAAoB,MAAM,EAAE;AAC5B,YAAY;AACZ,iBAAiB,IAAI,IAAI,CAAC,IAAI,EAAE;AAChC,gBAAgB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AAC3F,gBAAgB,OAAO,EAAE;AACzB,gBAAgB,IAAI,GAAG;AACvB,oBAAoB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC;AACjD,gBAAgB,IAAI,IAAI,EAAE;AAC1B,oBAAoB,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC9F,oBAAoB,IAAI,SAAS;AACjC,wBAAwB,MAAM,EAAE;AAChC,oBAAoB,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;AAC1G,oBAAoB,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;AAC3E,wBAAwB,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM;AAC5C;AACA,wBAAwB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3C,gBAAgB;AAChB,YAAY;AACZ,iBAAiB,IAAI,IAAI,CAAC,GAAG,EAAE;AAC/B,gBAAgB,OAAO,EAAE;AACzB,YAAY;AACZ,QAAQ,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAChC,QAAQ,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC;AACrE,IAAI;AACJ;AACA,MAAM,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;AAChD,SAAS,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE;AAChC,IAAI,IAAI,QAAQ;AAChB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;AAC/B,QAAQ,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE;AAC1C,YAAY,QAAQ,GAAG,CAAC;AACxB,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;AAChC;AACA,MAAM,IAAI,CAAC;AACX,IAAI,WAAW;AACf;AACA,IAAI,GAAG;AACP;AACA,IAAI,IAAI;AACR;AACA;AACA;AACA,IAAI,SAAS;AACb;AACA;AACA,IAAI,YAAY,EAAE;AAClB,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG;AACtB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS;AAClC,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY;AACxC,IAAI;AACJ,IAAI,KAAK,CAAC,KAAK,EAAE;AACjB,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACzD,YAAY,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAClD,YAAY,IAAI,IAAI;AACpB,gBAAgB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;AAC7E,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA,MAAM,YAAY,CAAC;AACnB,IAAI,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE;AACrE,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM;AAC5B,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU;AACpC,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC,QAAQ,IAAI,CAAC,eAAe,GAAG,eAAe;AAC9C,IAAI;AACJ;AACA,MAAM,cAAc,GAAG,EAAE;AACzB;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE;AACvD,IAAI,IAAI,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO;AACnD,IAAI,IAAI,SAAS;AACjB,QAAQ,OAAO,SAAS,CAAC,YAAY;AACrC,IAAI,IAAI,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC;AACnC,QAAQ,OAAO,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;AAC7E,IAAI,IAAI,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC;AACpD,IAAI,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;AAC9B,QAAQ,OAAO,OAAO;AACtB,IAAI;AACJ,SAAS,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AACvD,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI;AAC7C,YAAY,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC;AACvM;AACA,YAAY,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC;AACjL,IAAI;AACJ,SAAS,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,KAAK,IAAI,EAAE,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,KAAK,CAAC,EAAE;AAChH;AACA,QAAQ,IAAI,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC;AACnD,QAAQ,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC;AAC5C,aAAa,CAAC,QAAQ,IAAI,OAAO,CAAC,eAAe,IAAI,WAAW;AAChE,iBAAiB,OAAO,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,OAAO,CAAC,aAAa,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AACrH,QAAQ,IAAI,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;AAC1G,QAAQ,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,IAAI,EAAE,WAAW,IAAI,IAAI,GAAG,OAAO,CAAC,eAAe,GAAG,WAAW,CAAC;AACvP,IAAI;AACJ,SAAS,IAAI,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AAC9C;AACA;AACA,QAAQ,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC;AAC7L,IAAI;AACJ,SAAS;AACT,QAAQ,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC;AACrM,IAAI;AACJ;AACA,SAAS,YAAY,CAAC,SAAS,EAAE,UAAU,EAAE;AAC7C,IAAI,IAAI,CAAC,UAAU;AACnB,QAAQ,OAAO,KAAK;AACpB,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU;AAC7B,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,QAAQ,GAAG,KAAK;AACxB,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK;AACtD,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AACrD,YAAY,IAAI,KAAK,IAAI,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC;AAClE,gBAAgB,QAAQ,GAAG,IAAI;AAC/B,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,QAAQ;AACnB;AACA,SAAS,SAAS,CAAC,IAAI,EAAE;AACzB,IAAI,IAAI,MAAM,GAAG,EAAE;AACnB,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;AACnE,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACxE,IAAI,OAAO,MAAM;AACjB;AACA,SAAS,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE;AACpC,IAAI,IAAI,CAAC,MAAM;AACf,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,MAAM,GAAG,EAAE;AACnB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC/C,QAAQ,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AACjF,QAAQ,IAAI,IAAI,IAAI,EAAE;AACtB,YAAY,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;AACjC,IAAI;AACJ,IAAI,OAAO,MAAM;AACjB;AACA;AACA;AACA,SAAS,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;AAC/C,IAAI,IAAI,aAAa,GAAG,iBAAiB,CAAC,KAAK,CAAC;AAChD,IAAI,IAAI,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM;AACvD,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;AACnF,IAAI,IAAI,CAAC,GAAG;AACZ,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC;AAC5D,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC;AAC7I,IAAI,IAAI,OAAO,GAAG,IAAI,YAAY,CAAC,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,GAAG,CAAC,SAAS,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;AAC3G,IAAI,OAAO,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AACrG;AACA,IAAI,mBAAmB,GAAG,KAAK,EAAE,0BAA0B,GAAG,IAAI;AAClE;AACA;AACA;AACA;AACA,SAAS,iBAAiB,CAAC,KAAK,EAAE;AAClC,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO;AAC/B,IAAI,IAAI,0BAA0B,IAAI,OAAO,EAAE;AAC/C,QAAQ,mBAAmB,GAAG,KAAK;AACnC,QAAQ,0BAA0B,GAAG,OAAO;AAC5C,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;AAC/C,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE;AACtD,gBAAgB,mBAAmB,GAAG,IAAI;AAC1C,gBAAgB;AAChB,YAAY;AACZ,IAAI;AACJ,IAAI,OAAO,mBAAmB;AAC9B;AASA,MAAM,UAAU,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC;AAC3C,MAAM,eAAe,GAAG,IAAI,SAAS,CAAC,cAAc,CAAC;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE;AAC9B,IAAI,MAAM,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG;AACzC,QAAQ,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,GAAG,EAAE;AACpD,IAAI,OAAO,IAAI,MAAM,CAAC;AACtB,QAAQ,GAAG,EAAE,UAAU;AACvB,QAAQ,KAAK,EAAE;AACf,YAAY,IAAI,GAAG;AACnB,gBAAgB,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;AAChF,YAAY,CAAC;AACb,YAAY,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AACnC,gBAAgB,OAAO,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC;AAChE,YAAY;AACZ,SAAS;AACT,QAAQ,MAAM;AACd,QAAQ,KAAK,EAAE;AACf,YAAY,eAAe,EAAE;AAC7B,gBAAgB,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE;AACrC,oBAAoB,IAAI,SAAS,GAAG,CAAC,CAAC,SAAS;AAC/C,oBAAoB,IAAI,OAAO,GAAG,SAAS,IAAI,aAAa,GAAG,IAAI,GAAG,SAAS,IAAI,aAAa,GAAG,IAAI,GAAG,IAAI;AAC9G,oBAAoB,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ;AAClD,wBAAwB,OAAO,KAAK;AACpC,oBAAoB,CAAC,CAAC,cAAc,EAAE;AACtC,oBAAoB,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;AAC7D,gBAAgB;AAChB;AACA;AACA,KAAK,CAAC;AACN;AACA,SAAS,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE;AACpC,IAAI,OAAO,CAAC,KAAK,EAAE,QAAQ,KAAK;AAChC,QAAQ,IAAI,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC7C,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,IAAI,CAAC;AACrE,YAAY,OAAO,KAAK;AACxB,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,IAAI,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;AACvD,YAAY,IAAI,EAAE;AAClB,gBAAgB,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC;AAC3D,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI,CAAC;AACL;AACA;AACA;AACA;AACA,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC;AACtC;AACA;AACA;AACA,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC;;AC7ZrC;AACA;AACA;AACA;AACA;AACK,MAAC,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC;AACxC,CAAC,IAAI,EAAE,gBAAgB;AACvB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO;AACT,GAAG,KAAK,EAAE,IAAI;AACd,GAAG,QAAQ,EAAE,IAAI;AACjB,GAAG,IAAI,EAAE,UAAU;AACnB,GAAG,WAAW,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM;AACrC,GAAG,WAAW,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;AACxE,GAAG;AACH,CAAC,CAAC;AACF,CAAC,UAAU,GAAG;AACd,EAAE,OAAO;AACT,GAAG,UAAU,EAAE,MAAM,CAAC;AACtB,GAAG,KAAK,EAAE,MAAM;AAChB,GAAG;AACH,CAAC,CAAC;AACF,CAAC,cAAc,GAAG;AAClB,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,OAAO,KAAK;AACzC,GAAG,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG;AACzG,GAAG,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,UAAU,EAAE;AAC/G,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC;AACpE,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;AACzC,GAAG;AACH,GAAG,OAAO,IAAI,CAAC,QAAQ;AACvB,EAAE,CAAC;AACH,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,OAAO,KAAK;AACpC,GAAG,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG;AACzG,GAAG,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;AAChE,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;AACxC,EAAE,CAAC;AACH,CAAC,CAAC;AACF,CAAC,qBAAqB,GAAG;AACzB,EAAE,IAAI,qBAAqB,GAAG,KAAK;AACnC,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC;AACrB,GAAG,GAAG,EAAE,IAAI,SAAS,CAAC,gBAAgB,CAAC;AACvC,GAAG,iBAAiB,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAC5D,IAAI,IAAI,qBAAqB,EAAE;AAC/B,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;AACpC,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC1C,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,CAAC,IAAI,QAAQ,KAAK,KAAK,EAAE;AACjF,KAAK,qBAAqB,GAAG,IAAI;AACjC,KAAK;AACL,IAAI;AACJ,IAAI,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC;AAC9E,IAAI,IAAI,kBAAkB,GAAG,KAAK,EAAE;AACpC,KAAK,MAAM,IAAI,GAAG,kBAAkB,GAAG,KAAK;AAC5C,KAAK,MAAM,IAAI,GAAG,CAAC;AACnB,KAAK,MAAM,EAAE,GAAG,IAAI;AACpB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,mDAAmD,EAAE,KAAK,CAAC,+CAA+C,CAAC,CAAC;AAC/H,KAAK,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;AACjD,KAAK,qBAAqB,GAAG,IAAI;AACjC,KAAK,OAAO,EAAE;AACd,IAAI;AACJ,IAAI,qBAAqB,GAAG,IAAI;AAChC,GAAG,CAAC;AACJ,GAAG,iBAAiB,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK;AAC9C,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;AACpC,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,EAAE,OAAO,IAAI;AACjG,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;AAChE,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC;AACtE,IAAI,IAAI,OAAO,IAAI,KAAK,EAAE,OAAO,IAAI;AACrC,IAAI,IAAI,OAAO,GAAG,KAAK,IAAI,OAAO,GAAG,KAAK,IAAI,OAAO,IAAI,OAAO,EAAE,OAAO,IAAI;AAC7E,IAAI,IAAI,OAAO,GAAG,KAAK,IAAI,OAAO,GAAG,KAAK,IAAI,OAAO,GAAG,OAAO,EAAE,OAAO,KAAK;AAC7E,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK;AACnD,IAAI,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG;AAC/C,IAAI,MAAM,IAAI,GAAG,GAAG,IAAI,OAAO,GAAG,KAAK,CAAC;AACxC,IAAI,MAAM,EAAE,GAAG,GAAG;AAClB,IAAI,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;AACrC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,EAAE,OAAO,KAAK;AAChF,IAAI,OAAO,IAAI;AACf,GAAG;AACH,GAAG,CAAC,CAAC;AACL,CAAC;AACD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;AACpC,CAAC,IAAI,EAAE,YAAY;AACnB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO;AACT,GAAG,KAAK,EAAE,cAAc;AACxB,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,KAAK,EAAE;AACV,GAAG;AACH,CAAC,CAAC;AACF,CAAC,qBAAqB,GAAG;AACzB,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AACD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACK,MAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;AAC/B,CAAC,IAAI,EAAE,OAAO;AACd,CAAC,UAAU,GAAG;AACd,EAAE,OAAO;AACT,GAAG,SAAS,EAAE,WAAW;AACzB,GAAG,IAAI,EAAE;AACT,GAAG;AACH,CAAC,CAAC;AACF,CAAC,qBAAqB,GAAG;AACzB,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC;AACrB,GAAG,GAAG,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC;AAC9B,GAAG,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK;AACjD,IAAI,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,MAAM;AACjD,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS;AAChC,IAAI,MAAM,WAAW,GAAG,EAAE;AAC1B,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,EAAE,OAAO,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;AACvE,IAAI,IAAI,SAAS,GAAG,CAAC;AACrB,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK;AACxE,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;AACtB,KAAK,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,OAAO,KAAK;AAC5E,KAAK,SAAS,IAAI,CAAC;AACnB,IAAI,CAAC,CAAC;AACN,IAAI,IAAI,YAAY,GAAG,CAAC;AACxB,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK;AACnC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,KAAK;AAClC,KAAK,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,OAAO,KAAK;AAC5E,KAAK,YAAY,IAAI,CAAC;AACtB,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,SAAS,GAAG,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,YAAY,IAAI,YAAY,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS;AAC1K,KAAK,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;AACnG,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC;AACjD,GAAG,CAAC;AACJ,GAAG,CAAC,CAAC;AACL,CAAC;AACD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;AACnC,CAAC,IAAI,EAAE,WAAW;AAClB,CAAC,qBAAqB,GAAG;AACzB,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;AACtB,CAAC,CAAC;AACF,CAAC,gBAAgB,CAAC,SAAS,EAAE;AAC7B,EAAE,IAAI,aAAa;AACnB,EAAE,MAAM,OAAO,GAAG;AAClB,GAAG,IAAI,EAAE,SAAS,CAAC,IAAI;AACvB,GAAG,OAAO,EAAE,SAAS,CAAC,OAAO;AAC7B,GAAG,OAAO,EAAE,SAAS,CAAC;AACtB,GAAG;AACH,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,aAAa,GAAG,YAAY,CAAC,iBAAiB,CAAC,SAAS,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC,MAAM,IAAI,IAAI,aAAa,KAAK,MAAM,GAAG,aAAa,GAAG,IAAI,EAAE;AAChL,CAAC;AACD,CAAC,CAAC;AACF;AACA;AACA;AACA,MAAM,sBAAsB,GAAG,aAAa;AAC5C;AACA,MAAM,UAAU,GAAG,IAAI,SAAS,CAAC,qBAAqB,CAAC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,2BAA2B,CAAC,OAAO,EAAE;AAC9C,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,GAAG,OAAO;AAC9H,CAAC,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC;AAC5B,CAAC,IAAI,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;AAC1C,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAClD,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,EAAE,CAAC,aAAa,GAAG,OAAO,WAAW,KAAK,UAAU,GAAG,WAAW,CAAC;AACnE,GAAG,MAAM;AACT,GAAG,IAAI;AACP,GAAG,GAAG;AACN,GAAG;AACH,GAAG,CAAC,GAAG;AACP,EAAE,CAAC;AACH;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,cAAc,EAAE,KAAK,EAAE;AACtD,CAAC,OAAO,OAAO,cAAc,KAAK,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,cAAc;AACrF;AACA;AACA;AACA;AACA;AACA,SAAS,uBAAuB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;AAC/F,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS;AAC7B,CAAC,MAAM,WAAW,GAAG,EAAE;AACvB,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO;AAClC,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK;AAC3C,EAAE,MAAM,SAAS,GAAG,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ;AAClE,EAAE,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC;AACnD,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,OAAO,CAAC,eAAe;AAC5D,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,eAAe,KAAK,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,2BAA2B,CAAC;AACvG,GAAG,MAAM;AACT,GAAG,UAAU;AACb,GAAG,aAAa;AAChB,GAAG,SAAS;AACZ,GAAG,WAAW,EAAE,OAAO,CAAC,WAAW;AACnC,GAAG,OAAO,EAAE;AACZ,IAAI,WAAW,EAAE,OAAO,CAAC,gBAAgB;AACzC,IAAI,SAAS,EAAE,qBAAqB,CAAC,OAAO,CAAC,cAAc,EAAE;AAC7D,KAAK,MAAM;AACX,KAAK,IAAI;AACT,KAAK,GAAG;AACR,KAAK;AACL,KAAK;AACL,IAAI;AACJ,GAAG,IAAI;AACP,GAAG;AACH,GAAG,CAAC,CAAC;AACL,EAAE,OAAO,OAAO,CAAC,eAAe;AAChC,CAAC,CAAC,CAAC;AACH,CAAC,OAAO,WAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,2BAA2B,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;AACzF,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,OAAO,IAAI;AACvE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS;AAC7B,CAAC,MAAM,WAAW,GAAG,EAAE;AACvB,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO;AAClC,CAAC,IAAI,OAAO,CAAC,eAAe,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;AAC1D,EAAE,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;AACtC,EAAE,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,SAAS;AACzE,EAAE,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM;AACpE,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;AAC1D,GAAG,MAAM,SAAS,GAAG,MAAM,IAAI,SAAS,IAAI,MAAM,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ;AAC/E,GAAG,WAAW,CAAC,IAAI,CAAC,2BAA2B,CAAC;AAChD,IAAI,MAAM;AACV,IAAI,UAAU;AACd,IAAI,aAAa;AACjB,IAAI,SAAS;AACb,IAAI,WAAW,EAAE,OAAO,CAAC,WAAW;AACpC,IAAI,OAAO,EAAE;AACb,KAAK,WAAW,EAAE,OAAO,CAAC,gBAAgB;AAC1C,KAAK,SAAS,EAAE,qBAAqB,CAAC,OAAO,CAAC,cAAc,EAAE;AAC9D,MAAM,MAAM;AACZ,MAAM,IAAI;AACV,MAAM,GAAG,EAAE,SAAS;AACpB,MAAM;AACN,MAAM;AACN,KAAK;AACL,IAAI,IAAI;AACR,IAAI,GAAG,EAAE;AACT,IAAI,CAAC,CAAC;AACN,EAAE;AACF,CAAC,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC;AACpD,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,aAAa;AACf,EAAE,GAAG;AACL,EAAE,SAAS;AACX,EAAE,IAAI,EAAE,CAAC;AACT,EAAE,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC;AAClB,EAAE,CAAC,CAAC;AACJ,CAAC,OAAO,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE;AACxC,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;AAClC,CAAC,IAAI,QAAQ,CAAC,KAAK,KAAK,CAAC,EAAE;AAC3B,EAAE,IAAI,mBAAmB;AACzB,EAAE,MAAM,IAAI,GAAG,CAAC,mBAAmB,GAAG,QAAQ,CAAC,SAAS,MAAM,IAAI,IAAI,mBAAmB,KAAK,MAAM,GAAG,mBAAmB,GAAG,QAAQ,CAAC,UAAU;AAChJ,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO;AACpB,GAAG,IAAI,EAAE,GAAG;AACZ,GAAG,EAAE,EAAE;AACP,GAAG;AACH,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ;AAChE,EAAE,OAAO;AACT,GAAG,IAAI,EAAE,OAAO;AAChB,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC;AACtB,GAAG;AACH,CAAC;AACD,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACvC,CAAC,OAAO;AACR,EAAE,IAAI,EAAE,WAAW;AACnB,EAAE,EAAE,EAAE,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACrC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,SAAS,sBAAsB,CAAC,GAAG,EAAE,KAAK,EAAE;AAC5C,CAAC,OAAO;AACR,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;AACnC,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC;AAC7C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,wBAAwB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;AACjD,CAAC,MAAM,MAAM,GAAG,EAAE;AAClB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK;AAC/B,EAAE,MAAM,SAAS,GAAG,MAAM;AAC1B,EAAE,MAAM,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,QAAQ;AAC3C,EAAE,MAAM,YAAY,GAAG,SAAS,GAAG,CAAC;AACpC,EAAE,MAAM,UAAU,GAAG,OAAO,GAAG,CAAC;AAChC,EAAE,IAAI,YAAY,GAAG,EAAE,IAAI,UAAU,GAAG,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;AAC1D,GAAG,IAAI,EAAE,SAAS;AAClB,GAAG,EAAE,EAAE;AACP,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,CAAC,OAAO,MAAM;AACd;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,MAAM,EAAE;AAC7B,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE;AACnC,CAAC,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;AAC3D,CAAC,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AAClC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC5C,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AACxC,EAAE,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;AAC3B,EAAE,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;AACtE,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;AAClC,CAAC;AACD,CAAC,OAAO,MAAM;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE;AAC7C,CAAC,MAAM,MAAM,GAAG,wBAAwB,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;AACrE,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACjF,CAAC,IAAI,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChJ,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9J,CAAC,OAAO,MAAM;AACd;AACA;AACA;AACA;AACA;AACA,SAAS,mBAAmB,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACrD,CAAC,MAAM,MAAM,GAAG,EAAE;AAClB,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;AACpB,EAAE,MAAM,OAAO,GAAG,gBAAgB,CAAC,EAAE,CAAC;AACtC,EAAE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;AACrG,CAAC;AACD,CAAC,IAAI,EAAE,CAAC,YAAY,EAAE;AACtB,EAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,GAAG,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClI,EAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,GAAG,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAClH,CAAC;AACD,CAAC,OAAO,WAAW,CAAC,MAAM,CAAC;AAC3B;AACA;AACA,SAAS,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE;AACnC,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClE,CAAC,OAAO;AACR,EAAE,IAAI,EAAE,WAAW;AACnB,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;AAC1D,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,yBAAyB,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;AAC5G,CAAC,IAAI,IAAI,GAAG,WAAW;AACvB,CAAC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC7B,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC;AAC5D,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,IAAI,IAAI,IAAI,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC;AAC7G,EAAE,IAAI,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AACnD,EAAE,MAAM,QAAQ,GAAG,uBAAuB,CAAC;AAC3C,GAAG,MAAM;AACT,GAAG,OAAO;AACV,GAAG,aAAa;AAChB,GAAG,GAAG;AACN,GAAG,SAAS;AACZ,GAAG,IAAI;AACP,GAAG;AACH,GAAG,CAAC;AACJ,EAAE,IAAI,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC;AACrD,CAAC;AACD,CAAC,OAAO,IAAI;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,2BAA2B,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE;AACzE,CAAC,OAAO;AACR,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;AACvB,GAAG,MAAM,WAAW,GAAG,2BAA2B,CAAC;AACnD,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,aAAa;AACjB,IAAI,GAAG,EAAE,KAAK,CAAC,GAAG;AAClB,IAAI,SAAS,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC;AACL,GAAG,OAAO,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,MAAM,GAAG,WAAW,GAAG,aAAa,CAAC,KAAK;AAC5F,EAAE,CAAC;AACH,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACtC,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,IAAI;AACtD,GAAG,OAAO,yBAAyB,CAAC;AACpC,IAAI,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC;AAC7C,IAAI,MAAM,EAAE,mBAAmB,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACvD,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,aAAa;AACjB,IAAI,GAAG,EAAE,QAAQ,CAAC,GAAG;AACrB,IAAI,SAAS,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC;AACL,EAAE;AACF,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,2BAA2B,CAAC,IAAI,EAAE;AAC3C,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;AACxH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,uBAAuB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;AACtD,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,CAAC,KAAK,EAAE,2BAA2B,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;AAC9I,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,CAAC,OAAO,CAAC,eAAe;AAC5E,CAAC,OAAO,IAAI,MAAM,CAAC;AACnB,EAAE,GAAG,EAAE,UAAU;AACjB,EAAE,GAAG,eAAe,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,2BAA2B,CAAC;AACjE,GAAG,MAAM;AACT,GAAG,OAAO;AACV,GAAG;AACH,GAAG,CAAC,EAAE;AACN,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,eAAe,GAAG,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,2BAA2B,CAAC;AAC9F,GAAG,MAAM;AACT,GAAG,OAAO;AACV,GAAG,aAAa;AAChB,GAAG,GAAG;AACN,GAAG;AACH,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK;AAClB,GAAG,IAAI,oBAAoB;AAC3B,GAAG,IAAI,OAAO,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,aAAa,CAAC,KAAK;AACrF,GAAG,OAAO,CAAC,oBAAoB,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,oBAAoB,KAAK,MAAM,GAAG,oBAAoB,GAAG,aAAa,CAAC,KAAK;AACtJ,EAAE,CAAC;AACH,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACoB,SAAS,CAAC,MAAM,CAAC;AACrC,CAAC,IAAI,EAAE,aAAa;AACpB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO;AACT,GAAG,gBAAgB,EAAE,iBAAiB;AACtC,GAAG,cAAc,EAAE,UAAU;AAC7B,GAAG,aAAa,EAAE,sBAAsB;AACxC,GAAG,WAAW,EAAE,mBAAmB;AACnC,GAAG,oBAAoB,EAAE,IAAI;AAC7B,GAAG,eAAe,EAAE,IAAI;AACxB,GAAG,eAAe,EAAE;AACpB,GAAG;AACH,CAAC,CAAC;AACF,CAAC,qBAAqB,GAAG;AACzB,EAAE,OAAO,CAAC,uBAAuB,CAAC;AAClC,GAAG,MAAM,EAAE,IAAI,CAAC,MAAM;AACtB,GAAG,OAAO,EAAE,IAAI,CAAC;AACjB,GAAG,CAAC,CAAC;AACL,CAAC;AACD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE;AAC/C,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,UAAU;AACxF;AACA;AACA;AACA;AACA;AACA,SAAS,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE;AAChD,CAAC,OAAO,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ;AAC3F;AACA,SAAS,iBAAiB,GAAG;AAC7B,CAAC,IAAI,oBAAoB;AACzB,CAAC,CAAC,oBAAoB,GAAG,MAAM,CAAC,YAAY,EAAE,MAAM,IAAI,IAAI,oBAAoB,KAAK,MAAM,IAAI,oBAAoB,CAAC,eAAe,EAAE;AACrI;AACA;AACA;AACA;AACA;AACA,SAAS,mBAAmB,CAAC,IAAI,EAAE;AACnC,CAAC,IAAI,CAAC,KAAK,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACkB,SAAS,CAAC,MAAM,CAAC;AACnC,CAAC,IAAI,EAAE,WAAW;AAClB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE;AACnC,CAAC,CAAC;AACF,CAAC,qBAAqB,GAAG;AACzB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;AAClC,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC;AACrB,GAAG,GAAG,EAAE,IAAI,SAAS,CAAC,WAAW,CAAC;AAClC,GAAG,KAAK,EAAE;AACV,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,KAAK,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,OAAO,IAAI;AAC7D,KAAK,OAAO,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AACxI,IAAI,CAAC;AACL,IAAI,eAAe,EAAE;AACrB,KAAK,IAAI,CAAC,IAAI,EAAE;AAChB,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK;AACnE,MAAM,iBAAiB,EAAE;AACzB,MAAM,OAAO,KAAK;AAClB,KAAK,CAAC;AACN,KAAK,KAAK,CAAC,IAAI,EAAE;AACjB,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK;AACnE,MAAM,qBAAqB,CAAC,MAAM;AAClC,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,mBAAmB,CAAC,IAAI,CAAC;AAC5E,MAAM,CAAC,CAAC;AACR,MAAM,OAAO,KAAK;AAClB,KAAK;AACL;AACA;AACA,GAAG,CAAC,CAAC;AACL,CAAC;AACD,CAAC;AAID,SAAS,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;AACzC,CAAC,OAAO,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,MAAM,KAAK;AACtI;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC;AACtC,CAAC,IAAI,EAAE,cAAc;AACrB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO;AACT,GAAG,IAAI,EAAE,MAAM;AACf,GAAG,QAAQ,EAAE;AACb,GAAG;AACH,CAAC,CAAC;AACF,CAAC,qBAAqB,GAAG;AACzB,EAAE,IAAI,qBAAqB;AAC3B,EAAE,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACzC,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,WAAW,MAAM,IAAI,IAAI,qBAAqB,KAAK,MAAM,GAAG,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,WAAW;AAChO,EAAE,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClL,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC;AACrB,GAAG,GAAG,EAAE,MAAM;AACd,GAAG,iBAAiB,EAAE,CAAC,YAAY,EAAE,EAAE,EAAE,KAAK,KAAK;AACnD,IAAI,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,KAAK;AACrC,IAAI,MAAM,qBAAqB,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AACxD,IAAI,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI;AACxC,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;AAC1C,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAAE;AACrF,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAChC,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAChD,GAAG,CAAC;AACJ,GAAG,KAAK,EAAE;AACV,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK;AACxB,KAAK,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS;AAC5C,KAAK,OAAO,CAAC,cAAc,CAAC;AAC5B,MAAM,IAAI,EAAE,QAAQ;AACpB,MAAM,KAAK,EAAE;AACb,MAAM,CAAC;AACP,IAAI,CAAC;AACL,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,KAAK;AAC1B,KAAK,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK;AACrC,KAAK,IAAI,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,OAAO,KAAK;AAC1D,KAAK,MAAM,QAAQ,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS;AACtC,KAAK,OAAO,CAAC,cAAc,CAAC;AAC5B,MAAM,IAAI,EAAE,QAAQ;AACpB,MAAM,KAAK,EAAE;AACb,MAAM,CAAC;AACP,IAAI;AACJ;AACA,GAAG,CAAC,CAAC;AACL,CAAC;AACD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC;AAClC,CAAC,IAAI,EAAE,UAAU;AACjB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO;AACT,GAAG,KAAK,EAAE,GAAG;AACb,GAAG,aAAa,EAAE;AAClB,GAAG;AACH,CAAC,CAAC;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO;AACT,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;AACxC,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;AAChC,GAAG,CAAC;AACJ,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;AACxC,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;AAChC,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,qBAAqB,GAAG;AACzB,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC,CAAC;AACF,CAAC,oBAAoB,GAAG;AACxB,EAAE,OAAO;AACT,GAAG,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC7C,GAAG,aAAa,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;AACnD,GAAG,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC7C,GAAG,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC7C,GAAG,aAAa,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI;AACjD,GAAG;AACH,CAAC;AACD,CAAC,CAAC;;ACtrBF;AACA,MAAM,WAAW,mBAAmB,IAAI,OAAO,EAAE;AACjD,MAAM,YAAY,mBAAmB,IAAI,OAAO,EAAE;AAClD;AACA,SAAS,gBAAgB,CAAC,IAAI,EAAE;AAChC,CAAC,MAAM,OAAO,GAAG,IAAI;AACrB,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC;AACzB,CAAC,OAAO,OAAO;AACf;AACA;AACA,SAAS,YAAY,CAAC,KAAK,EAAE;AAC7B,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AACtD;AACA,SAAS,uBAAuB,CAAC,QAAQ,EAAE;AAC3C,CAAC,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACpC,EAAE,IAAI,KAAK,IAAI,IAAI,EAAE,OAAO,EAAE;AAC9B,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,OAAO,uBAAuB,CAAC,KAAK,CAAC;AACpH,EAAE,OAAO,CAAC,KAAK,CAAC;AAChB,CAAC,CAAC,CAAC;AACH;AAKA,SAAS,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE;AACjC,CAAC,IAAI,GAAG,KAAK,MAAM,EAAE,OAAO,CAAC;AAC7B,CAAC,IAAI,GAAG,YAAY,QAAQ,EAAE;AAC9B,EAAE,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC;AAChC,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,OAAO,gBAAgB,CAAC,MAAM,CAAC;AAClH,EAAE,OAAO,MAAM;AACf,CAAC;AACD,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,MAAM,GAAG,UAAU,GAAG,EAAE;AAC7F,CAAC,IAAI,GAAG,KAAK,KAAK,EAAE,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC;AACrH,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC9B,EAAE,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,OAAO,gBAAgB,CAAC;AACtD,GAAG,GAAG;AACN,GAAG,IAAI;AACP,GAAG;AACH,GAAG,CAAC;AACJ,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,gBAAgB,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACjE,EAAE,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,QAAQ,CAAC;AAC7D,EAAE,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,gBAAgB,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC1E,EAAE,OAAO,gBAAgB,CAAC;AAC1B,GAAG,GAAG;AACN,GAAG,IAAI;AACP,GAAG,GAAG;AACN,GAAG,CAAC;AACJ,CAAC;AACD,CAAC,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,IAAI,EAAE,OAAO,gBAAgB,CAAC;AACvE,EAAE,GAAG;AACL,EAAE,IAAI;AACN,EAAE;AACF,EAAE,CAAC;AACH,CAAC,OAAO,gBAAgB,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACrC;AACA,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC;;ACnDtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK;AAC1C,CAAC,IAAI,mBAAmB;AACxB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM;AACzB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK;AAC5B,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,KAAK;AACnC,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS;AAC5B,CAAC,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,EAAE,OAAO,KAAK;AAC3C,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC;AACpC,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,OAAO,KAAK;AAClC,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;AACvC,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;AACvC,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,OAAO,KAAK;AAC9B,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjE,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AACzC,CAAC,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC,mBAAmB,GAAG,QAAQ,CAAC,SAAS,MAAM,IAAI,IAAI,mBAAmB,KAAK,MAAM,GAAG,MAAM,GAAG,mBAAmB,CAAC,WAAW,CAAC,EAAE,OAAO,KAAK;AAChL,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC;AACzC,CAAC,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK;AACtD,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI;AAC5B,EAAE,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO;AACtC,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACxC,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC;AAC7C,EAAE,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACzE,EAAE,EAAE,CAAC,cAAc,EAAE;AACrB,EAAE,QAAQ,CAAC,EAAE,CAAC;AACd,EAAE,OAAO,IAAI;AACb,CAAC,CAAC,CAAC;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,MAAMyE,YAAU,GAAG,UAAU;AAC7B;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAGD,MAAI,CAAC,MAAM,CAAC;AAC/B,CAAC,IAAI,EAAE,YAAY;AACnB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE;AAC/B,CAAC,CAAC;AACF,CAAC,OAAO,EAAE,QAAQ;AAClB,CAAC,KAAK,EAAE,OAAO;AACf,CAAC,QAAQ,EAAE,IAAI;AACf,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC;AAChC,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE;AAChC,EAAE,uBAAuBI,CAAG,CAAC,YAAY,EAAE;AAC3C,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;AAClE,GAAG,QAAQ,kBAAkBA,CAAG,CAAC,MAAM,EAAE,EAAE;AAC3C,GAAG,CAAC;AACJ,CAAC,CAAC;AACF,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;AACpC,EAAE,IAAI,qBAAqB;AAC3B,EAAE,MAAM,kBAAkB,GAAG,CAAC,qBAAqB,GAAG,OAAO,CAAC,kBAAkB,MAAM,IAAI,IAAI,qBAAqB,KAAK,MAAM,GAAG,qBAAqB,GAAG,OAAO,CAAC,aAAa;AAC9K,EAAE,OAAO,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,kBAAkB,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;AACzF,CAAC,CAAC;AACF,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AAC9B,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;AAC9B,EAAE,MAAM,MAAM,GAAG,GAAG;AACpB,EAAE,MAAM,MAAM,GAAG,EAAE;AACnB,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK;AACzC,GAAG,IAAI,cAAc,EAAE,eAAe;AACtC,GAAG,MAAM,eAAe,GAAG,CAAC,CAAC,cAAc,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC,WAAW,MAAM,IAAI,IAAI,eAAe,KAAK,MAAM,GAAG,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,cAAc,KAAK,MAAM,GAAG,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AACvR,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,MAAM;AACzC,IAAI,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9B,GAAG,CAAC,CAAC;AACL,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AACrC,CAAC,CAAC;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO;AACT,GAAG,aAAa,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK;AAC1C,IAAI,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,GAAG,CAAC;AACJ,GAAG,gBAAgB,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK;AAC7C,IAAI,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AACzC,GAAG,CAAC;AACJ,GAAG,eAAe,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK;AAC5C,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACnC,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,oBAAoB,GAAG;AACxB,EAAE,OAAO;AACT,GAAG,aAAa,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE;AAC/D,GAAG,SAAS,EAAE,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI;AAC1D,GAAG;AACH,CAAC,CAAC;AACF,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO,CAAC,iBAAiB,CAAC;AAC5B,GAAG,IAAI,EAAEH,YAAU;AACnB,GAAG,IAAI,EAAE,IAAI,CAAC;AACd,GAAG,CAAC,CAAC;AACL,CAAC;AACD,CAAC,CAAC;;ACpHF;AACA;AACA;AACA;AACA;AACA,MAAMI,gBAAc,GAAG,sDAAsD;AAC7E;AACA;AACA;AACA,MAAMC,gBAAc,GAAG,sDAAsD;AAC7E;AACA;AACA;AACA,MAAMC,sBAAoB,GAAG,8CAA8C;AAC3E;AACA;AACA;AACA,MAAMC,sBAAoB,GAAG,8CAA8C;AAC3E;AACA;AACA;AACA;AACA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;AACzB,CAAC,IAAI,EAAE,MAAM;AACb,CAAC,UAAU,GAAG;AACd,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE;AAC/B,CAAC,CAAC;AACF,CAAC,SAAS,GAAG;AACb,EAAE,OAAO;AACT,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;AACpB,GAAG;AACH,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,QAAQ,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI;AAC9D,IAAI;AACJ,GAAG;AACH,IAAI,KAAK,EAAE,iBAAiB;AAC5B,IAAI,SAAS,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;AACjD,IAAI;AACJ,GAAG;AACH,IAAI,KAAK,EAAE,aAAa;AACxB,IAAI,QAAQ,EAAE,CAAC,KAAK,KAAK,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;AACpE;AACA,GAAG;AACH,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE;AAChC,EAAE,uBAAuBJ,CAAG,CAAC,QAAQ,EAAE;AACvC,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;AAClE,GAAG,QAAQ,kBAAkBA,CAAG,CAAC,MAAM,EAAE,EAAE;AAC3C,GAAG,CAAC;AACJ,CAAC,CAAC;AACF,CAAC,iBAAiB,EAAE,QAAQ;AAC5B,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;AACpC,EAAE,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;AAC3E,CAAC,CAAC;AACF,CAAC,eAAe,EAAE,EAAE,UAAU,EAAE;AAChC,EAAE,IAAI,EAAE,UAAU;AAClB,EAAE,KAAK,EAAE;AACT,EAAE,EAAE;AACJ,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AAC9B,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AACxC,CAAC,CAAC;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO;AACT,GAAG,OAAO,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK;AACpC,IAAI,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACtC,GAAG,CAAC;AACJ,GAAG,UAAU,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK;AACvC,IAAI,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AACzC,GAAG,CAAC;AACJ,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK;AACtC,IAAI,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACxC,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,oBAAoB,GAAG;AACxB,EAAE,OAAO;AACT,GAAG,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE;AACnD,GAAG,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU;AACjD,GAAG;AACH,CAAC,CAAC;AACF,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO,CAAC,aAAa,CAAC;AACxB,GAAG,IAAI,EAAEC,gBAAc;AACvB,GAAG,IAAI,EAAE,IAAI,CAAC;AACd,GAAG,CAAC,EAAE,aAAa,CAAC;AACpB,GAAG,IAAI,EAAEE,sBAAoB;AAC7B,GAAG,IAAI,EAAE,IAAI,CAAC;AACd,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO,CAAC,aAAa,CAAC;AACxB,GAAG,IAAI,EAAED,gBAAc;AACvB,GAAG,IAAI,EAAE,IAAI,CAAC;AACd,GAAG,CAAC,EAAE,aAAa,CAAC;AACpB,GAAG,IAAI,EAAEE,sBAAoB;AAC7B,GAAG,IAAI,EAAE,IAAI,CAAC;AACd,GAAG,CAAC,CAAC;AACL,CAAC;AACD,CAAC,CAAC;;AClGF;AACA,MAAM,gBAAgB,GAAG,CAAC;AAC1B;AACA;AACA;AACA,MAAM,kBAAkB,GAAG,sBAAsB;AACjD;AACA;AACA;AACA,MAAM,eAAe,GAAG,sBAAsB;AAC9C;AACA;AACA;AACA;AACA,MAAM,SAAS,GAAGR,MAAI,CAAC,MAAM,CAAC;AAC9B,CAAC,IAAI,EAAE,WAAW;AAClB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO;AACT,GAAG,mBAAmB,EAAE,WAAW;AACnC,GAAG,iBAAiB,EAAE,IAAI;AAC1B,GAAG,eAAe,EAAE,IAAI;AACxB,GAAG,aAAa,EAAE,IAAI;AACtB,GAAG,eAAe,EAAE,IAAI;AACxB,GAAG,oBAAoB,EAAE,KAAK;AAC9B,GAAG,OAAO,EAAE,gBAAgB;AAC5B,GAAG,cAAc,EAAE;AACnB,GAAG;AACH,CAAC,CAAC;AACF,CAAC,OAAO,EAAE,OAAO;AACjB,CAAC,KAAK,EAAE,EAAE;AACV,CAAC,KAAK,EAAE,OAAO;AACf,CAAC,IAAI,EAAE,IAAI;AACX,CAAC,QAAQ,EAAE,IAAI;AACf,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO,EAAE,QAAQ,EAAE;AACrB,GAAG,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe;AACxC,GAAG,SAAS,EAAE,CAAC,OAAO,KAAK;AAC3B,IAAI,IAAI,qBAAqB;AAC7B,IAAI,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC,OAAO;AAChD,IAAI,IAAI,CAAC,mBAAmB,EAAE,OAAO,IAAI;AACzC,IAAI,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,qBAAqB,GAAG,OAAO,CAAC,iBAAiB,MAAM,IAAI,IAAI,qBAAqB,KAAK,MAAM,GAAG,MAAM,GAAG,qBAAqB,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAChT,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI;AAC9B,IAAI,OAAO,QAAQ;AACnB,GAAG,CAAC;AACJ,GAAG,QAAQ,EAAE;AACb,GAAG,EAAE;AACL,CAAC,CAAC;AACF,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,CAAC;AACV,GAAG,GAAG,EAAE,KAAK;AACb,GAAG,kBAAkB,EAAE;AACvB,GAAG,CAAC;AACJ,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE;AACtC,EAAE,OAAO;AACT,GAAG,KAAK;AACR,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;AAC/D,GAAG;AACH,IAAI,MAAM;AACV,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,EAAE;AAClG,IAAI;AACJ;AACA,GAAG;AACH,CAAC,CAAC;AACF,CAAC,iBAAiB,EAAE,MAAM;AAC1B,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;AACpC,EAAE,IAAI,UAAU,EAAE,WAAW;AAC7B,EAAE,IAAI,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC,GAAG,MAAM,IAAI,IAAI,UAAU,KAAK,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,MAAM,IAAI,IAAI,WAAW,KAAK,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,KAAK,CAAC,cAAc,KAAK,UAAU,EAAE,OAAO,EAAE;AAC3R,EAAE,OAAO,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;AAClI,CAAC,CAAC;AACF,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AAC9B,EAAE,IAAI,WAAW;AACjB,EAAE,IAAI,MAAM,GAAG,EAAE;AACjB,EAAE,MAAM,QAAQ,GAAG,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,IAAI,WAAW,KAAK,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,QAAQ,KAAK,EAAE;AACxH,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC;AAC3D,OAAO,MAAM,GAAG;AAChB,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACtB,GAAG,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACjC,GAAG;AACH,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AACd,EAAE,OAAO,MAAM;AACf,CAAC,CAAC;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO;AACT,GAAG,YAAY,EAAE,CAAC,UAAU,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK;AACnD,IAAI,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;AAClD,GAAG,CAAC;AACJ,GAAG,eAAe,EAAE,CAAC,UAAU,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK;AACtD,IAAI,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC;AAClE,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,oBAAoB,GAAG;AACxB,EAAE,OAAO;AACT,GAAG,WAAW,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE;AAC5D,GAAG,SAAS,EAAE,MAAM;AACpB,IAAI,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS;AAC1D,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC;AACvC,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK;AACtE,IAAI,IAAI,SAAS,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE;AACjG,IAAI,OAAO,KAAK;AAChB,GAAG,CAAC;AACJ,GAAG,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK;AACxB,IAAI,IAAI,qBAAqB;AAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,KAAK;AACxD,IAAI,MAAM,OAAO,GAAG,CAAC,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,MAAM,IAAI,IAAI,qBAAqB,KAAK,MAAM,GAAG,qBAAqB,GAAG,gBAAgB;AAC1J,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM;AAC5B,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK;AAC/B,IAAI,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS;AACtC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK;AACrD,IAAI,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;AACtC,IAAI,IAAI,KAAK,EAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC3D,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK;AAC/C,KAAK,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,SAAS;AACnC,KAAK,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACzH,KAAK,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9D,KAAK,OAAO,IAAI;AAChB,IAAI,CAAC,CAAC;AACN,GAAG,CAAC;AACJ,GAAG,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK;AAChC,IAAI,IAAI,sBAAsB;AAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,KAAK;AACxD,IAAI,MAAM,OAAO,GAAG,CAAC,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,MAAM,IAAI,IAAI,sBAAsB,KAAK,MAAM,GAAG,sBAAsB,GAAG,gBAAgB;AAC7J,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM;AAC5B,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK;AAC/B,IAAI,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS;AACtC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK;AACrD,IAAI,IAAI,KAAK,EAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK;AAC1D,KAAK,IAAI,kBAAkB;AAC3B,KAAK,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK;AAC1B,KAAK,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,EAAE;AACzC,KAAK,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,EAAE;AACrC,KAAK,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;AAC9F,KAAK,IAAI,gBAAgB,GAAG,CAAC;AAC7B,KAAK,IAAI,SAAS,GAAG,CAAC;AACtB,KAAK,MAAM,iBAAiB,GAAG,GAAG,GAAG,cAAc;AACnD,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC/C,MAAM,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,iBAAiB,EAAE;AAC5D,OAAO,gBAAgB,GAAG,CAAC;AAC3B,OAAO;AACP,MAAM;AACN,MAAM,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;AACtC,KAAK;AACL,KAAK,MAAM,aAAa,GAAG,CAAC,CAAC,kBAAkB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,kBAAkB,KAAK,MAAM,GAAG,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,KAAK,EAAE;AACzK,KAAK,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;AACnE,KAAK,IAAI,cAAc,KAAK,CAAC,EAAE,OAAO,IAAI;AAC1C,KAAK,IAAI,YAAY,GAAG,cAAc;AACtC,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;AACtF,KAAK,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,GAAG,cAAc,CAAC;AAC3D,KAAK,IAAI,GAAG,GAAG,YAAY,IAAI,cAAc,EAAE,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;AAC1G,KAAK,OAAO,IAAI;AAChB,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK;AAC/C,KAAK,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,SAAS;AACnC,KAAK,MAAM,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AACrG,MAAM,IAAI,WAAW;AACrB,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,WAAW,KAAK,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE;AAClI,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;AACpE,MAAM,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;AACvC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAClB,KAAK,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACnE,KAAK,OAAO,IAAI;AAChB,IAAI,CAAC,CAAC;AACN,GAAG,CAAC;AACJ,GAAG,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK;AAC1B,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,KAAK;AACrD,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM;AAC5B,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK;AAC/B,IAAI,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS;AACtC,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK;AAC/D,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC;AACpE,IAAI,MAAM,qBAAqB,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC3E,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,qBAAqB,EAAE,OAAO,KAAK;AACxD,IAAI,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK;AAC9C,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC;AACxC,KAAK,OAAO,IAAI;AAChB,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE;AACvB,GAAG,CAAC;AACJ,GAAG,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK;AAC5B,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,KAAK;AACjD,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM;AAC5B,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK;AAC/B,IAAI,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS;AACtC,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK;AAC/D,IAAI,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,EAAE,OAAO,KAAK;AAC9C,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE;AACjC,IAAI,IAAI,MAAM,GAAG,CAAC,EAAE,OAAO,KAAK;AAChC,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AAC9D,GAAG,CAAC;AACJ,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK;AAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,KAAK;AACnD,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM;AAC5B,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK;AACpC,IAAI,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS;AACtC,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK;AAC/D,IAAI,IAAI,EAAE,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,OAAO,KAAK;AACzE,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE;AAC/B,IAAI,IAAI,KAAK,KAAK,MAAM,EAAE,OAAO,KAAK;AACtC,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK;AACtE,KAAK,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,KAAK,OAAO,IAAI;AAChB,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACrC,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO,CAAC,sBAAsB,CAAC;AACjC,GAAG,IAAI,EAAE,kBAAkB;AAC3B,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI;AAClB,GAAG,aAAa,EAAE,CAAC,KAAK,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;AACpD,GAAG,CAAC,EAAE,sBAAsB,CAAC;AAC7B,GAAG,IAAI,EAAE,eAAe;AACxB,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI;AAClB,GAAG,aAAa,EAAE,CAAC,KAAK,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;AACpD,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF,CAAC,qBAAqB,GAAG;AACzB,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC;AACrB,GAAG,GAAG,EAAE,IAAI,SAAS,CAAC,wBAAwB,CAAC;AAC/C,GAAG,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;AAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,KAAK;AAC1C,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK;AAC1D,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC;AAC1D,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,oBAAoB,CAAC;AACpE,IAAI,MAAM,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM;AAC3D,IAAI,MAAM,QAAQ,GAAG,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,IAAI;AAC5F,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO,KAAK;AACxC,IAAI,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK;AACrC,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC9D,IAAI,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;AACrE,IAAI,IAAI,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7I,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;AAC7B,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AACrB,IAAI,OAAO,IAAI;AACf,GAAG,CAAC;AACJ,GAAG,CAAC,CAAC;AACL,CAAC;AACD,CAAC,CAAC;;AC/OF;AACA;AACA;AACA;AACA;AACA,MAAM,SAAS,GAAGA,MAAI,CAAC,MAAM,CAAC;AAC9B,CAAC,IAAI,EAAE,WAAW;AAClB,CAAC,iBAAiB,EAAE,IAAI;AACxB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO;AACT,GAAG,SAAS,EAAE,IAAI;AAClB,GAAG,cAAc,EAAE;AACnB,GAAG;AACH,CAAC,CAAC;AACF,CAAC,MAAM,EAAE,IAAI;AACb,CAAC,KAAK,EAAE,QAAQ;AAChB,CAAC,UAAU,EAAE,KAAK;AAClB,CAAC,oBAAoB,EAAE,IAAI;AAC3B,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE;AAChC,EAAE,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;AAC7E,CAAC,CAAC;AACF,CAAC,UAAU,GAAG;AACd,EAAE,OAAO,IAAI;AACb,CAAC,CAAC;AACF,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC;AAC7B,CAAC,aAAa,EAAE,MAAM;AACtB,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE;AAC9B,CAAC,CAAC;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK;AACvE,GAAG,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,EAAE,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM;AAClF,IAAI,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,KAAK;AAC5C,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,KAAK;AAChE,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,OAAO;AACtC,IAAI,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC,gBAAgB;AACvD,IAAI,MAAM,KAAK,GAAG,WAAW,IAAI,SAAS,CAAC,GAAG,CAAC,YAAY,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE;AACtF,IAAI,OAAO,KAAK,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK;AACpF,KAAK,IAAI,QAAQ,IAAI,KAAK,IAAI,SAAS,EAAE;AACzC,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5F,MAAM,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC;AACnC,KAAK;AACL,KAAK,OAAO,IAAI;AAChB,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE;AAC7B,GAAG,CAAC,CAAC,CAAC,CAAC;AACP,EAAE,CAAC,EAAE;AACL,CAAC,CAAC;AACF,CAAC,oBAAoB,GAAG;AACxB,EAAE,OAAO;AACT,GAAG,WAAW,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE;AACzD,GAAG,aAAa,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY;AACzD,GAAG;AACH,CAAC;AACD,CAAC,CAAC;;ACvDF;AACA;AACA;AACA;AACA;AACA,MAAM,OAAO,GAAGA,MAAI,CAAC,MAAM,CAAC;AAC5B,CAAC,IAAI,EAAE,SAAS;AAChB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO;AACT,GAAG,MAAM,EAAE;AACX,IAAI,CAAC;AACL,IAAI,CAAC;AACL,IAAI,CAAC;AACL,IAAI,CAAC;AACL,IAAI,CAAC;AACL,IAAI;AACJ,IAAI;AACJ,GAAG,cAAc,EAAE;AACnB,GAAG;AACH,CAAC,CAAC;AACF,CAAC,OAAO,EAAE,SAAS;AACnB,CAAC,KAAK,EAAE,OAAO;AACf,CAAC,QAAQ,EAAE,IAAI;AACf,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO,EAAE,KAAK,EAAE;AAClB,GAAG,OAAO,EAAE,CAAC;AACb,GAAG,QAAQ,EAAE;AACb,GAAG,EAAE;AACL,CAAC,CAAC;AACF,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;AAC7C,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACnB,GAAG,KAAK,EAAE,EAAE,KAAK;AACjB,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE;AACtC,EAAE,OAAO;AACT,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACnG,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;AAC/D,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;AACpC,EAAE,OAAO,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;AAC5G,CAAC,CAAC;AACF,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AAC9B,EAAE,IAAI,WAAW;AACjB,EAAE,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,IAAI,WAAW,KAAK,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC;AACjJ,EAAE,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AACxC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;AAC9B,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5D,CAAC,CAAC;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO;AACT,GAAG,UAAU,EAAE,CAAC,UAAU,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK;AACjD,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK;AACrE,IAAI,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;AAClD,GAAG,CAAC;AACJ,GAAG,aAAa,EAAE,CAAC,UAAU,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK;AACpD,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK;AACrE,IAAI,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC;AAClE,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,oBAAoB,GAAG;AACxB,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,MAAM;AACvD,GAAG,GAAG,KAAK;AACX,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE;AAC3E,GAAG,CAAC,EAAE,EAAE,CAAC;AACT,CAAC,CAAC;AACF,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK;AAC5C,GAAG,OAAO,sBAAsB,CAAC;AACjC,IAAI,IAAI,EAAE,IAAI,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AAC9E,IAAI,IAAI,EAAE,IAAI,CAAC,IAAI;AACnB,IAAI,aAAa,EAAE,EAAE,KAAK;AAC1B,IAAI,CAAC;AACL,EAAE,CAAC,CAAC;AACJ,CAAC;AACD,CAAC,CAAC;;AC9EF;AACA;AACA;AACA;AACA;AACA,MAAM,cAAc,GAAGA,MAAI,CAAC,MAAM,CAAC;AACnC,CAAC,IAAI,EAAE,gBAAgB;AACvB,CAAC,UAAU,GAAG;AACd,EAAE,OAAO;AACT,GAAG,cAAc,EAAE,EAAE;AACrB,GAAG,YAAY,EAAE;AACjB,GAAG;AACH,CAAC,CAAC;AACF,CAAC,KAAK,EAAE,OAAO;AACf,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE;AAChC,EAAE,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;AAC7E,CAAC,CAAC;AACF,CAAC,iBAAiB,EAAE,IAAI;AACxB,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;AACpC,EAAE,OAAO,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC;AAC7C,CAAC,CAAC;AACF,CAAC,cAAc,EAAE,MAAM;AACvB,EAAE,OAAO,KAAK;AACd,CAAC,CAAC;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;AAC1D,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,KAAK;AACzE,GAAG,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK;AAC9B,GAAG,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,SAAS;AACvC,GAAG,MAAM,YAAY,GAAG,KAAK,EAAE;AAC/B,GAAG,IAAI,eAAe,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AACnG,QAAQ,YAAY,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AACvD,GAAG,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK;AACxE,IAAI,IAAI,QAAQ,EAAE;AAClB,KAAK,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS;AACjC,KAAK,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,EAAE;AAC/B,KAAK,IAAI,GAAG,CAAC,SAAS,EAAE;AACxB,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAC/F,WAAW,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5F,WAAW,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACjE,KAAK,CAAC,MAAM;AACZ,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW;AACrH,MAAM,MAAM,IAAI,GAAG,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE;AACxF,MAAM,IAAI,IAAI,EAAE;AAChB,OAAO,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC;AAChC,OAAO,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;AAClE,MAAM;AACN,KAAK;AACL,KAAK,EAAE,CAAC,cAAc,EAAE;AACxB,IAAI;AACJ,IAAI,OAAO,IAAI;AACf,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE;AACX,EAAE,CAAC,EAAE;AACL,CAAC,CAAC;AACF,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO,CAAC,aAAa,CAAC;AACxB,GAAG,IAAI,EAAE,6BAA6B;AACtC,GAAG,IAAI,EAAE,IAAI,CAAC;AACd,GAAG,CAAC,CAAC;AACL,CAAC;AACD,CAAC,CAAC;;AChEF;AACA;AACA;AACA;AACA,MAAM,cAAc,GAAG,8CAA8C;AACrE;AACA;AACA;AACA,MAAM,cAAc,GAAG,8CAA8C;AACrE;AACA;AACA;AACA,MAAM,oBAAoB,GAAG,0CAA0C;AACvE;AACA;AACA;AACA,MAAM,oBAAoB,GAAG,0CAA0C;AACvE;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,CAAC,IAAI,EAAE,QAAQ;AACf,CAAC,UAAU,GAAG;AACd,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE;AAC/B,CAAC,CAAC;AACF,CAAC,SAAS,GAAG;AACb,EAAE,OAAO;AACT,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE;AAChB,GAAG;AACH,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,QAAQ,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI;AAC7D,IAAI;AACJ,GAAG;AACH,IAAI,KAAK,EAAE,mBAAmB;AAC9B,IAAI,SAAS,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;AACjD,IAAI;AACJ,GAAG,EAAE,KAAK,EAAE,mBAAmB;AAC/B,GAAG;AACH,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE;AAChC,EAAE,OAAO;AACT,GAAG,IAAI;AACP,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;AAC/D,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO;AACT,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK;AACtC,IAAI,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACtC,GAAG,CAAC;AACJ,GAAG,YAAY,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK;AACzC,IAAI,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AACzC,GAAG,CAAC;AACJ,GAAG,WAAW,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK;AACxC,IAAI,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACxC,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,iBAAiB,EAAE,IAAI;AACxB,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;AACpC,EAAE,OAAO,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;AAC7E,CAAC,CAAC;AACF,CAAC,eAAe,EAAE,EAAE,UAAU,EAAE;AAChC,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,KAAK,EAAE;AACT,EAAE,EAAE;AACJ,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AAC9B,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC,CAAC;AACF,CAAC,oBAAoB,GAAG;AACxB,EAAE,OAAO;AACT,GAAG,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE;AACrD,GAAG,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY;AACnD,GAAG;AACH,CAAC,CAAC;AACF,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO,CAAC,aAAa,CAAC;AACxB,GAAG,IAAI,EAAE,cAAc;AACvB,GAAG,IAAI,EAAE,IAAI,CAAC;AACd,GAAG,CAAC,EAAE,aAAa,CAAC;AACpB,GAAG,IAAI,EAAE,oBAAoB;AAC7B,GAAG,IAAI,EAAE,IAAI,CAAC;AACd,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO,CAAC,aAAa,CAAC;AACxB,GAAG,IAAI,EAAE,cAAc;AACvB,GAAG,IAAI,EAAE,IAAI,CAAC;AACd,GAAG,CAAC,EAAE,aAAa,CAAC;AACpB,GAAG,IAAI,EAAE,oBAAoB;AAC7B,GAAG,IAAI,EAAE,IAAI,CAAC;AACd,GAAG,CAAC,CAAC;AACL,CAAC;AACD,CAAC,CAAC;AACF;AACA;AACG,IAACxE,aAAW,GAAG;;ACnGlB;AACA;AACA;AACA,MAAM,WAAW,GAAG,4vJAA4vJ;AAChxJ;AACA,MAAM,YAAY,GAAG,mmBAAmmB;;AAExnB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAM,OAAO,GAAG,SAAS;AACzB,MAAM,KAAK,GAAG,OAAO;AACrB,MAAM,KAAK,GAAG,OAAO;AACrB,MAAM,YAAY,GAAG,cAAc;AACnC,MAAM,YAAY,GAAG,cAAc;AACnC,MAAM,MAAM,GAAG,QAAQ;AACvB,MAAM,KAAK,GAAG,OAAO;AACrB,MAAM,MAAM,GAAG,QAAQ;AACvB,MAAM,WAAW,GAAG,aAAa;AACjC,MAAM,UAAU,GAAG,YAAY;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE;AACrC,EAAE,IAAI,EAAE,IAAI,IAAI,MAAM,CAAC,EAAE;AACzB,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;AACrB,EAAE;AACF,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;AACvC,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE;AACtB,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI;AAC9B,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI;AAC9B,EAAE;AACF,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AACpB,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI;AAC9B,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI;AACvB,EAAE;AACF,EAAE,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE;AAC3B,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI;AAC9B,EAAE;AACF,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AACpB,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI;AAC9B,EAAE;AACF,EAAE,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE;AAC3B,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI;AACxB,EAAE;AACF,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AACpB,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI;AACxB,EAAE;AACF,EAAE,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AACzB,IAAI,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC;AAC1C,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAC9B,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACnB,IAAI;AACJ,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE;AAClC,EAAE,MAAM,MAAM,GAAG,EAAE;AACnB,EAAE,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;AAC1B,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACnC,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI;AACtB,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,MAAM;AACf;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,CAAC,KAAK,GAAG,IAAI,EAAE;AAC7B;AACA;AACA,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;AACd;AACA;AACA,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE;AACd;AACA,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI;AAChB;AACA,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK;AAChB;;AAEA;AACA;AACA;AACA;AACA,KAAK,CAAC,MAAM,GAAG,EAAE;AACjB,KAAK,CAAC,SAAS,GAAG;AAClB,EAAE,OAAO,GAAG;AACZ,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AACnB,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,EAAE,CAAC,KAAK,EAAE;AACZ,IAAI,MAAM,KAAK,GAAG,IAAI;AACtB,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACpC,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,OAAO,SAAS;AACtB,IAAI;AACJ,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,MAAM,IAAI,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC1C,QAAQ,OAAO,SAAS;AACxB,MAAM;AACN,IAAI;AACJ;AACA,IAAI,OAAO,KAAK,CAAC,EAAE;AACnB,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,EAAE;AAChC,IAAI,OAAO,SAAS,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACzD,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;AAClC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC;AAC7C,IAAI;AACJ,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;AAClC,IAAI,MAAM,GAAG,MAAM,IAAI,KAAK,CAAC,MAAM;AACnC,IAAI,IAAI,SAAS;AACjB,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,EAAE;AACxB,MAAM,SAAS,GAAG,IAAI;AACtB,IAAI,CAAC,MAAM;AACX;AACA,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC;AACjC,MAAM,IAAI,KAAK,IAAI,MAAM,EAAE;AAC3B,QAAQ,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC;AACxC,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACrC,IAAI,OAAO,SAAS;AACpB,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;AACjC,IAAI,IAAI,KAAK,GAAG,IAAI;AACpB,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM;AAC5B,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,MAAM,OAAO,KAAK;AAClB,IAAI;AACJ,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACtC,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChC,IAAI;AACJ,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC;AACxD,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;AACjC,IAAI,MAAM,GAAG,MAAM,IAAI,KAAK,CAAC,MAAM;AACnC,IAAI,MAAM,KAAK,GAAG,IAAI;;AAEtB;AACA,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,EAAE;AACxB,MAAM,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI;AAC3B,MAAM,OAAO,IAAI;AACjB,IAAI;AACJ,IAAI,MAAM,CAAC,GAAG,IAAI;;AAElB;AACA;AACA,IAAI,IAAI,SAAS;AACjB,MAAM,aAAa,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC;AACrC,IAAI,IAAI,aAAa,EAAE;AACvB,MAAM,SAAS,GAAG,IAAI,KAAK,EAAE;AAC7B,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;AACjD,MAAM,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,CAAC;AAC7D,MAAM,SAAS,CAAC,EAAE,GAAG,aAAa,CAAC,EAAE;AACrC,MAAM,SAAS,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC;AACnC,IAAI,CAAC,MAAM;AACX,MAAM,SAAS,GAAG,IAAI,KAAK,EAAE;AAC7B,IAAI;AACJ,IAAI,IAAI,CAAC,EAAE;AACX;AACA,MAAM,IAAI,MAAM,EAAE;AAClB,QAAQ,IAAI,SAAS,CAAC,CAAC,IAAI,OAAO,SAAS,CAAC,CAAC,KAAK,QAAQ,EAAE;AAC5D,UAAU,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC;AACnF,UAAU,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC;AAC1C,QAAQ,CAAC,MAAM,IAAI,KAAK,EAAE;AAC1B,UAAU,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC;AACvC,QAAQ;AACR,MAAM;AACN,MAAM,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI;AACJ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,SAAS;AAC9B,IAAI,OAAO,SAAS;AACpB,EAAE;AACF,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC;;AAEtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC;;AAExF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC;;AAEtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC;;AAEtF;AACA;AACA;AACA;;AAEA;AACA,MAAM,IAAI,GAAG,MAAM,CAAC;AACpB,MAAM,KAAK,GAAG,OAAO,CAAC;AACtB,MAAM,cAAc,GAAG,gBAAgB,CAAC;AACxC,MAAM,cAAc,GAAG,gBAAgB,CAAC;;AAExC;AACA,MAAM,SAAS,GAAG,WAAW;;AAE7B;AACA,MAAM,GAAG,GAAG,KAAK;;AAEjB;AACA,MAAM,IAAI,GAAG,MAAM;;AAEnB;AACA;AACA;AACA,MAAM,MAAM,GAAG,QAAQ;;AAEvB;AACA;AACA;AACA,MAAM,YAAY,GAAG,cAAc;;AAEnC;AACA,MAAM,GAAG,GAAG,KAAK;;AAEjB;AACA,MAAM,EAAE,GAAG,IAAI;;AAEf;AACA,MAAM,EAAE,GAAG,IAAI,CAAC;;AAEhB;AACA;AACA;AACA,MAAM,SAAS,GAAG,WAAW,CAAC;AAC9B,MAAM,UAAU,GAAG,YAAY,CAAC;AAChC,MAAM,WAAW,GAAG,aAAa,CAAC;AAClC,MAAM,YAAY,GAAG,cAAc,CAAC;AACpC,MAAM,SAAS,GAAG,WAAW,CAAC;AAC9B,MAAM,UAAU,GAAG,YAAY,CAAC;AAChC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAC5C,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAC9C,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAChD,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAClD,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAC9C,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAChD,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AACxD,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAC1D,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAC9C,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;;AAEpD;AACA,MAAM,SAAS,GAAG,WAAW,CAAC;AAC9B,MAAM,UAAU,GAAG,YAAY,CAAC;AAChC,MAAM,QAAQ,GAAG,UAAU,CAAC;AAC5B,MAAM,EAAE,GAAG,IAAI,CAAC;AAChB,MAAM,SAAS,GAAG,WAAW,CAAC;AAC9B,MAAM,QAAQ,GAAG,UAAU,CAAC;AAC5B,MAAM,KAAK,GAAG,OAAO,CAAC;AACtB,MAAM,KAAK,GAAG,OAAO,CAAC;AACtB,MAAM,KAAK,GAAG,OAAO,CAAC;AACtB,MAAM,MAAM,GAAG,QAAQ,CAAC;AACxB,MAAM,GAAG,GAAG,KAAK,CAAC;AAClB,MAAM,MAAM,GAAG,QAAQ,CAAC;AACxB,MAAM,WAAW,GAAG,aAAa,CAAC;AAClC,MAAM,MAAM,GAAG,QAAQ,CAAC;AACxB,MAAM,OAAO,GAAG,SAAS,CAAC;AAC1B,MAAM,IAAI,GAAG,MAAM,CAAC;AACpB,MAAM,IAAI,GAAG,MAAM,CAAC;AACpB,MAAM,KAAK,GAAG,OAAO,CAAC;AACtB,MAAM,KAAK,GAAG,OAAO,CAAC;AACtB,MAAM,KAAK,GAAG,OAAO,CAAC;AACtB,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;;AAEhD,MAAM,IAAI,GAAG,MAAM,CAAC;AACpB,MAAM,KAAK,GAAG,OAAO,CAAC;AACtB,MAAM,KAAK,GAAG,OAAO,CAAC;AACtB,MAAM,UAAU,GAAG,YAAY,CAAC;;AAEhC;AACA,MAAM,OAAO,GAAG,OAAO;;AAEvB;AACA,MAAM,GAAG,GAAG,KAAK;;AAEjB,IAAI,EAAE,gBAAgB,MAAM,CAAC,MAAM,CAAC;AACpC,CAAC,SAAS,EAAE,IAAI;AAChB,CAAC,cAAc,EAAE,cAAc;AAC/B,CAAC,SAAS,EAAE,SAAS;AACrB,CAAC,UAAU,EAAE,UAAU;AACvB,CAAC,cAAc,EAAE,cAAc;AAC/B,CAAC,QAAQ,EAAE,QAAQ;AACnB,CAAC,EAAE,EAAE,EAAE;AACP,CAAC,SAAS,EAAE,SAAS;AACrB,CAAC,QAAQ,EAAE,QAAQ;AACnB,CAAC,KAAK,EAAE,KAAK;AACb,CAAC,iBAAiB,EAAE,iBAAiB;AACrC,CAAC,UAAU,EAAE,UAAU;AACvB,CAAC,YAAY,EAAE,YAAY;AAC3B,CAAC,UAAU,EAAE,UAAU;AACvB,CAAC,KAAK,EAAE,KAAK;AACb,CAAC,KAAK,EAAE,KAAK;AACb,CAAC,MAAM,EAAE,MAAM;AACf,CAAC,GAAG,EAAE,GAAG;AACT,CAAC,KAAK,EAAE,OAAO;AACf,CAAC,MAAM,EAAE,MAAM;AACf,CAAC,WAAW,EAAE,WAAW;AACzB,CAAC,oBAAoB,EAAE,oBAAoB;AAC3C,CAAC,kBAAkB,EAAE,kBAAkB;AACvC,CAAC,iBAAiB,EAAE,iBAAiB;AACrC,CAAC,kBAAkB,EAAE,kBAAkB;AACvC,CAAC,mBAAmB,EAAE,mBAAmB;AACzC,CAAC,MAAM,EAAE,MAAM;AACf,CAAC,iBAAiB,EAAE,iBAAiB;AACrC,CAAC,sBAAsB,EAAE,sBAAsB;AAC/C,CAAC,SAAS,EAAE,SAAS;AACrB,CAAC,EAAE,EAAE,EAAE;AACP,CAAC,GAAG,EAAE,GAAG;AACT,CAAC,gBAAgB,EAAE,gBAAgB;AACnC,CAAC,SAAS,EAAE,SAAS;AACrB,CAAC,WAAW,EAAE,WAAW;AACzB,CAAC,SAAS,EAAE,SAAS;AACrB,CAAC,OAAO,EAAE,OAAO;AACjB,CAAC,IAAI,EAAE,IAAI;AACX,CAAC,IAAI,EAAE,IAAI;AACX,CAAC,KAAK,EAAE,KAAK;AACb,CAAC,KAAK,EAAE,KAAK;AACb,CAAC,KAAK,EAAE,KAAK;AACb,CAAC,kBAAkB,EAAE,kBAAkB;AACvC,CAAC,uBAAuB,EAAE,uBAAuB;AACjD,CAAC,MAAM,EAAE,MAAM;AACf,CAAC,IAAI,EAAE,IAAI;AACX,CAAC,KAAK,EAAE,KAAK;AACb,CAAC,YAAY,EAAE,YAAY;AAC3B,CAAC,GAAG,EAAE,GAAG;AACT,CAAC,KAAK,EAAE,KAAK;AACb,CAAC,GAAG,EAAE,GAAG;AACT,CAAC,UAAU,EAAE,UAAU;AACvB,CAAC,IAAI,EAAE,IAAI;AACX,CAAC,KAAK,EAAE,KAAK;AACb,CAAC,IAAI,EAAE,IAAI;AACX,CAAC,EAAE,EAAE;AACL,CAAC,CAAC;;AAEF;AACA,MAAM,YAAY,GAAG,OAAO;AAC5B,MAAM,MAAM,GAAG,QAAQ,CAAC;AACxB,MAAM,KAAK,GAAG,YAAY,CAAC;AAE3B,MAAM,KAAK,GAAG,IAAI;AAClB,MAAM,KAAK,GAAG,IAAI;;AAYlB;AACA;AACA;AACA;;AAEA,MAAM,EAAE,GAAG,IAAI,CAAC;AAChB,MAAM,EAAE,GAAG,IAAI,CAAC;AAChB,MAAM,eAAe,GAAG,QAAQ,CAAC;AACjC,MAAM,YAAY,GAAG,QAAQ,CAAC;AAC9B,MAAM,kBAAkB,GAAG,QAAQ,CAAC;;AAEpC,IAAI,IAAI,GAAG,IAAI;AACf,EAAE,KAAK,GAAG,IAAI,CAAC;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,MAAM,CAAC,aAAa,GAAG,EAAE,EAAE;AACpC;AACA;AACA,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM;AACvB;AACA,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE;AAC3B,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE;AACpB,IAAI,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC;AAClC,EAAE;AACF,EAAE,IAAI,KAAK,IAAI,IAAI,EAAE;AACrB,IAAI,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC;AACpC,EAAE;;AAEF;AACA,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC;AAC5B,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC;AAC3B,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC;AAC5B,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC;AAC7B,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,CAAC;AAC9B,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC;AAC3B,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC;AAC5B,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,gBAAgB,CAAC;AAClC,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,iBAAiB,CAAC;AACnC,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,kBAAkB,CAAC;AACpC,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,mBAAmB,CAAC;AACrC,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,iBAAiB,CAAC;AACnC,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,kBAAkB,CAAC;AACpC,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,sBAAsB,CAAC;AACxC,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,uBAAuB,CAAC;AACzC,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,iBAAiB,CAAC;AACnC,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,oBAAoB,CAAC;AACtC,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC;AAC3B,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC;AAC1B,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;AACpB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC;AAC1B,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC;AACvB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC;AACvB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC;AACvB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC;AACxB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC;AACrB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC;AACxB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC;AAC7B,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC;AACxB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC;AACzB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC;AACtB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC;AACtB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC;AACvB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC;AACvB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC;AACvB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC;AACvB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC;AACtB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC;AACvB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC;AAC5B,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC;AAC5B,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,kBAAkB,CAAC;AACpC,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;AACpC,IAAI,CAAC,OAAO,GAAG;AACf,GAAG,CAAC;AACJ,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC;AACrB,EAAE,MAAM,YAAY,GAAG,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,cAAc,EAAE;AAC7D,IAAI,CAAC,YAAY,GAAG;AACpB,GAAG,CAAC;AACJ,EAAE,MAAM,YAAY,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE;AACvD,IAAI,CAAC,YAAY,GAAG;AACpB,GAAG,CAAC;;AAEJ;AACA,EAAE,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE;AAC7C,IAAI,CAAC,KAAK,GAAG;AACb,GAAG,CAAC;AACJ,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC;AAC/B,EAAE,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC;AAC9B,EAAE,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,YAAY,CAAC;AACvC,EAAE,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC;;AAE9C;AACA,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;AACzC,IAAI,CAAC,KAAK,GAAG;AACb,GAAG,CAAC;AACJ,EAAE,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AAC1B,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC;AAChC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;AAC1B,EAAE,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,YAAY,CAAC;AACvC,EAAE,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AACjC,EAAE,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;;AAEzC;AACA;AACA;AACA,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE;AAC/B,IAAI,CAAC,UAAU,GAAG;AAClB,GAAG,CAAC;AACJ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE;AAC/B,IAAI,CAAC,UAAU,GAAG;AAClB,GAAG,CAAC;AACJ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;AAClC,IAAI,CAAC,UAAU,GAAG;AAClB,GAAG,CAAC;AACJ,EAAE,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,EAAE,CAAC;AACnC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACjB,EAAE,EAAE,CAAC,EAAE,EAAE,kBAAkB,EAAE,EAAE,CAAC;AAChC,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC;AACnB,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACb,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACb,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC;AACnB,EAAE,EAAE,CAAC,EAAE,EAAE,kBAAkB,EAAE,EAAE,CAAC;;AAEhC;AACA;AACA,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;AAC1C,IAAI,CAAC,KAAK,GAAG;AACb,GAAG,CAAC;AACJ,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACjB,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AACzB,EAAE,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,CAAC;AACnC;;AAEA,EAAE,MAAM,WAAW,GAAG,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC;AAC7C,EAAE,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC;AACtB,EAAE,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC;AAC/B;;AAEA;AACA;AACA,EAAE,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AAC9D,EAAE,MAAM,OAAO,GAAG,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AAChF,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC;AAC7C,EAAE;AACF,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;AACjD,EAAE;AACF,EAAE,WAAW,CAAC,GAAG,EAAE;AACnB,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,KAAK,EAAE;AACX,GAAG,EAAE,MAAM,CAAC;AACZ,EAAE,WAAW,CAAC,IAAI,EAAE;AACpB,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,KAAK,EAAE;AACX,GAAG,EAAE,MAAM,CAAC;;AAEZ;AACA;AACA;AACA,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;AAC7C,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;AAC/C,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC;AACnD,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC;AACpD,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC;AAClD,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC;AACnD,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,KAAK,EAAE;AACX,GAAG,EAAE,MAAM,CAAC;AACZ,EAAE,WAAW,CAAC,YAAY,EAAE;AAC5B,IAAI,WAAW,EAAE,IAAI;AACrB,IAAI,KAAK,EAAE;AACX,GAAG,EAAE,MAAM,CAAC;;AAEZ;AACA,EAAE,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACpE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjD,IAAI,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,MAAM,kBAAkB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,IAAI,MAAM,KAAK,GAAG,kBAAkB,GAAG;AACvC,MAAM,CAAC,MAAM,GAAG;AAChB,KAAK,GAAG;AACR,MAAM,CAAC,WAAW,GAAG;AACrB,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC/B,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI;AAC1B,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACxC,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;AAC5B,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAChC,MAAM,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI;AAChC,IAAI,CAAC,MAAM;AACX,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI;AACzB,IAAI;AACJ,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;AAC9B,EAAE;;AAEF;AACA,EAAE,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE;AACpC,IAAI,KAAK,EAAE;AACX,GAAG,CAAC;;AAEJ;AACA,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC;AAC3B,EAAE,OAAO;AACT,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;AAC1B,MAAM;AACN,KAAK,EAAE,EAAE;AACT,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE;AAC3B;AACA;AACA;AACA;AACA,EAAE,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7E,EAAE,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC;AACpC,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;;AAEpB;AACA;AACA,EAAE,IAAI,MAAM,GAAG,CAAC;;AAEhB;AACA,EAAE,IAAI,UAAU,GAAG,CAAC;;AAEpB;AACA,EAAE,OAAO,UAAU,GAAG,SAAS,EAAE;AACjC,IAAI,IAAI,KAAK,GAAG,KAAK;AACrB,IAAI,IAAI,SAAS,GAAG,IAAI;AACxB,IAAI,IAAI,WAAW,GAAG,CAAC;AACvB,IAAI,IAAI,eAAe,GAAG,IAAI;AAC9B,IAAI,IAAI,YAAY,GAAG,EAAE;AACzB,IAAI,IAAI,iBAAiB,GAAG,EAAE;AAC9B,IAAI,OAAO,UAAU,GAAG,SAAS,KAAK,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;AACnF,MAAM,KAAK,GAAG,SAAS;;AAEvB;AACA,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE;AAC3B,QAAQ,YAAY,GAAG,CAAC;AACxB,QAAQ,iBAAiB,GAAG,CAAC;AAC7B,QAAQ,eAAe,GAAG,KAAK;AAC/B,MAAM,CAAC,MAAM,IAAI,YAAY,IAAI,CAAC,EAAE;AACpC,QAAQ,YAAY,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM;AACnD,QAAQ,iBAAiB,EAAE;AAC3B,MAAM;AACN,MAAM,WAAW,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM;AAChD,MAAM,MAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM;AAC3C,MAAM,UAAU,EAAE;AAClB,IAAI;;AAEJ;AACA,IAAI,MAAM,IAAI,YAAY;AAC1B,IAAI,UAAU,IAAI,iBAAiB;AACnC,IAAI,WAAW,IAAI,YAAY;;AAE/B;AACA,IAAI,MAAM,CAAC,IAAI,CAAC;AAChB,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC;AAC1B;AACA,MAAM,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,EAAE,MAAM,CAAC;AAChD;AACA,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW;AAC7B;AACA,MAAM,CAAC,EAAE,MAAM;AACf,KAAK,CAAC;AACN,EAAE;AACF,EAAE,OAAO,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,GAAG,EAAE;AAC5B,EAAE,MAAM,MAAM,GAAG,EAAE;AACnB,EAAE,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM;AACxB,EAAE,IAAI,KAAK,GAAG,CAAC;AACf,EAAE,OAAO,KAAK,GAAG,GAAG,EAAE;AACtB,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;AACrC,IAAI,IAAI,MAAM;AACd,IAAI,IAAI,IAAI,GAAG,KAAK,GAAG,MAAM,IAAI,KAAK,GAAG,MAAM,IAAI,KAAK,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC;AACrJ,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAClC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACrB,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM;AACxB,EAAE;AACF,EAAE,OAAO,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;AAC/C,EAAE,IAAI,IAAI;AACV,EAAE,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM;AAC1B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACpC,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AACzB,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACvB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1B,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC;AAChC,MAAM,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE;AAC1B,MAAM,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;AAC1B,IAAI;AACJ,IAAI,KAAK,GAAG,IAAI;AAChB,EAAE;AACF,EAAE,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE;AACtB,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI;AAChC,EAAE,OAAO,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,OAAO,EAAE;AAC7B,EAAE,MAAM,KAAK,GAAG,EAAE;AAClB,EAAE,MAAM,KAAK,GAAG,EAAE;AAClB,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,EAAE,IAAI,MAAM,GAAG,YAAY;AAC3B,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE;AAC7B,IAAI,IAAI,aAAa,GAAG,CAAC;AACzB,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE;AAC5D,MAAM,aAAa,EAAE,CAAC;AACtB,IAAI;AACJ,IAAI,IAAI,aAAa,GAAG,CAAC,EAAE;AAC3B,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,MAAM,KAAK,IAAI,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE;AAC3G,QAAQ,KAAK,CAAC,GAAG,EAAE;AACnB,MAAM;AACN,MAAM,CAAC,IAAI,aAAa;AACxB,IAAI,CAAC,MAAM;AACX,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,MAAM,CAAC,EAAE;AACT,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM,QAAQ,GAAG;AACjB,EAAE,eAAe,EAAE,MAAM;AACzB,EAAE,MAAM,EAAE,IAAI;AACd,EAAE,MAAM,EAAE,IAAI;AACd,EAAE,UAAU,EAAE,IAAI;AAClB,EAAE,KAAK,EAAE,KAAK;AACd,EAAE,OAAO,EAAE,GAAG;AACd,EAAE,MAAM,EAAE,IAAI;AACd,EAAE,GAAG,EAAE,IAAI;AACX,EAAE,QAAQ,EAAE,IAAI;AAChB,EAAE,QAAQ,EAAE,QAAQ;AACpB,EAAE,SAAS,EAAE,IAAI;AACjB,EAAE,UAAU,EAAE,IAAI;AAClB,EAAE,UAAU,EAAE,EAAE;AAChB,EAAE,MAAM,EAAE;AACV,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,EAAE;AAC7C,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC;AACrC,EAAE,IAAI,IAAI,EAAE;AACZ,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,YAAY,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;AACjE,EAAE;;AAEF;AACA,EAAE,MAAM,WAAW,GAAG,CAAC,CAAC,UAAU;AAClC,EAAE,MAAM,oBAAoB,GAAG,EAAE;AACjC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,IAAI,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC3D,EAAE;AACF;AACA,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;AACZ,EAAE,IAAI,aAAa,EAAE;AACrB,IAAI,IAAI,CAAC,aAAa,GAAG,aAAa;AACtC,EAAE;AACF,EAAE,IAAI,CAAC,UAAU,GAAG,oBAAoB;AACxC;AACA,OAAO,CAAC,SAAS,GAAG;AACpB,EAAE,CAAC,EAAE,QAAQ;AACb;AACA;AACA;AACA,EAAE,UAAU,EAAE,EAAE;AAChB;AACA;AACA;AACA;AACA,EAAE,aAAa,CAAC,EAAE,EAAE;AACpB,IAAI,OAAO,EAAE;AACb,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,KAAK,EAAE;AACf,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC;AACxD,EAAE,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC5B,IAAI,MAAM,UAAU,GAAG,QAAQ,IAAI,IAAI;AACvC,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;AAC5B,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,MAAM,OAAO,MAAM;AACnB,IAAI;AACJ,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACpC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC;AAClE,MAAM,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,UAAU,EAAE;AACtD,QAAQ,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC;AACxC,MAAM;AACN,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,UAAU,EAAE;AAC3D,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;AAC/C,IAAI;AACJ,IAAI,OAAO,MAAM;AACjB,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC/B,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;AACzB,IAAI,IAAI,OAAO,GAAG,KAAK,UAAU,IAAI,QAAQ,IAAI,IAAI,EAAE;AACvD,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;AACzC,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,CAAC,KAAK,EAAE;AAChB,IAAI,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClC,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa;AAC1E,IAAI,OAAO,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;AACvC,EAAE;AACF,CAAC;AACD,SAAS,IAAI,CAAC,GAAG,EAAE;AACnB,EAAE,OAAO,GAAG;AACZ;;AAQA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE;AACnC,EAAE,IAAI,CAAC,CAAC,GAAG,OAAO;AAClB,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK;AAChB,EAAE,IAAI,CAAC,EAAE,GAAG,MAAM;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,CAAC,SAAS,GAAG;AACvB,EAAE,MAAM,EAAE,KAAK;AACf;AACA;AACA;AACA;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,OAAO,IAAI,CAAC,CAAC;AACjB,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,CAAC,MAAM,EAAE;AACjB,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE;AAC1B,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA,EAAE,iBAAiB,CAAC,OAAO,EAAE;AAC7B,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC;AACvD,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC;AACtD,IAAI,OAAO,QAAQ,IAAI,SAAS,CAAC,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,GAAG,GAAG,SAAS;AACvG,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,eAAe,CAAC,OAAO,EAAE;AAC3B,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC;AACvF,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA,EAAE,UAAU,GAAG;AACf,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACxC,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,eAAe,EAAE;AAChD,IAAI,OAAO;AACX,MAAM,IAAI,EAAE,IAAI,CAAC,CAAC;AAClB,MAAM,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC5B,MAAM,MAAM,EAAE,IAAI,CAAC,MAAM;AACzB,MAAM,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AACjC,MAAM,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE;AAC9B,MAAM,GAAG,EAAE,IAAI,CAAC,QAAQ;AACxB,KAAK;AACL,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA,EAAE,iBAAiB,CAAC,OAAO,EAAE;AAC7B,IAAI,OAAO;AACX,MAAM,IAAI,EAAE,IAAI,CAAC,CAAC;AAClB,MAAM,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;AAC5C,MAAM,MAAM,EAAE,IAAI,CAAC,MAAM;AACzB,MAAM,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;AACzC,MAAM,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE;AAC9B,MAAM,GAAG,EAAE,IAAI,CAAC,QAAQ;AACxB,KAAK;AACL,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,CAAC,OAAO,EAAE;AACpB,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC;AACzD,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA,EAAE,MAAM,CAAC,OAAO,EAAE;AAClB,IAAI,MAAM,KAAK,GAAG,IAAI;AACtB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAC5D,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC;AAC/D,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC;AACvD,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;AACnD,IAAI,MAAM,UAAU,GAAG,EAAE;AACzB,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC;AAC3D,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC;AACrD,IAAI,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;AAC/C,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC;AAC3D,IAAI,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC;AAChE,IAAI,UAAU,CAAC,IAAI,GAAG,aAAa;AACnC,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,UAAU,CAAC,KAAK,GAAG,SAAS;AAClC,IAAI;AACJ,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,UAAU,CAAC,MAAM,GAAG,MAAM;AAChC,IAAI;AACJ,IAAI,IAAI,GAAG,EAAE;AACb,MAAM,UAAU,CAAC,GAAG,GAAG,GAAG;AAC1B,IAAI;AACJ,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC;AACtC,IAAI;AACJ,IAAI,OAAO;AACX,MAAM,OAAO;AACb,MAAM,UAAU;AAChB,MAAM,OAAO;AACb,MAAM;AACN,KAAK;AACL,EAAE;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE;AACvC,EAAE,MAAM,KAAK,SAAS,UAAU,CAAC;AACjC,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE;AAC/B,MAAM,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC;AAC1B,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI;AACnB,IAAI;AACJ;AACA,EAAE,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AACzB,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AACjC,EAAE;AACF,EAAE,KAAK,CAAC,CAAC,GAAG,IAAI;AAChB,EAAE,OAAO,KAAK;AACd;;AAEA;AACA;AACA;AACA,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,EAAE;AACxC,EAAE,MAAM,EAAE,IAAI;AACd,EAAE,MAAM,GAAG;AACX,IAAI,OAAO,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;AACtC,EAAE;AACF,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAMuE,MAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC;;AAErC;AACA;AACA;AACA;AACA,MAAM,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC;;AAEjC;AACA;AACA;AACA;AACA,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,EAAE;AACpC,EAAE,MAAM,EAAE,IAAI;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,eAAe,EAAE;AAC5C;AACA,IAAI,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAChE,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA,EAAE,WAAW,GAAG;AAChB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;AAC1B,IAAI,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK;AACnF,EAAE;AACF,CAAC,CAAC;;AAaF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,MAAM,SAAS,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC;;AAEvC;AACA;AACA;AACA;AACA,SAAS,MAAM,CAAC;AAChB,EAAE;AACF,CAAC,EAAE;AACH;AACA,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;;AAEzL;AACA;AACA;AACA,EAAE,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,oBAAoB,CAAC;;AAE1X;AACA;AACA,EAAE,MAAM,kBAAkB,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC;;AAE3M;AACA;AACA;AACA;AACA,EAAE,MAAM,KAAK,GAAG,SAAS,EAAE;AAC3B,EAAE,MAAM,SAAS,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACrC,EAAE,EAAE,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,CAAC;AAC9C,EAAE,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;AACzC,EAAE,MAAM,MAAM,GAAG,SAAS,EAAE;AAC5B,IAAI,MAAM,GAAG,SAAS,EAAE;AACxB,IAAI,WAAW,GAAG,SAAS,EAAE;AAC7B,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACnC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACnC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;;AAE7C,EAAE,EAAE,CAAC,MAAM,EAAE,kBAAkB,EAAE,SAAS,CAAC;AAC3C,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;AACnC,EAAE,MAAM,WAAW,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;;AAErC,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;;AAEjC;AACA,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,WAAW,CAAC;AAC7B,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,WAAW,CAAC;AAClC,EAAE,MAAM,YAAY,GAAG,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC1C,EAAE,EAAE,CAAC,YAAY,EAAE,kBAAkB,EAAE,SAAS,CAAC;AACjD,EAAE,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;AAC5C,EAAE,MAAM,WAAW,GAAG,SAAS,EAAE;AACjC,EAAE,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAC9C,EAAE,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;AAC7C,EAAE,MAAM,cAAc,GAAG,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAC9C,EAAE,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;AAChD,EAAE,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;AACnC,EAAE,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC;AACzC,EAAE,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;AAC1C,EAAE,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC;;AAErC;AACA,EAAE,MAAM,iBAAiB,GAAG,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACpD,EAAE,EAAE,CAAC,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,CAAC;AAClD,EAAE,EAAE,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;AACnD,EAAE,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;AACzC,EAAE,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,cAAc,CAAC;AAClC,EAAE,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,CAAC;;AAExC;AACA;AACA,EAAE,MAAM,YAAY,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC1C,EAAE,MAAM,SAAS,GAAG,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACpC,EAAE,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC;AACxC,EAAE,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;AACzC,EAAE,EAAE,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,CAAC;AAC9C,EAAE,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;AACtC,EAAE,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AACtC,EAAE,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC;AACzC,EAAE,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC;AAC1C,EAAE,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;AACzC,EAAE,EAAE,CAAC,YAAY,EAAE,kBAAkB,EAAE,SAAS,CAAC;AACjD,EAAE,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,SAAS,CAAC;AAClC,EAAE,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC;AACxC,EAAE,EAAE,CAAC,YAAY,EAAE,EAAE,EAAE,WAAW,CAAC;AACnC,EAAE,MAAM,iBAAiB,GAAG,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACpD,EAAE,MAAM,qBAAqB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAC/C,EAAE,EAAE,CAAC,iBAAiB,EAAE,MAAM,CAAC,OAAO,EAAE,qBAAqB,CAAC;;AAE9D;AACA,EAAE,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC;;AAE9B;AACA,EAAE,MAAM,YAAY,GAAG,SAAS,EAAE,CAAC;;AAEnC;AACA,EAAE,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC;AAC/B,EAAE,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,YAAY,CAAC;AACzC,EAAE,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,KAAK,CAAC;AACtC,EAAE,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,YAAY,CAAC;;AAEhD;AACA;AACA,EAAE,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC;AAChC,EAAE,EAAE,CAAC,qBAAqB,EAAE,KAAK,EAAE,KAAK,CAAC;;AAEzC;AACA,EAAE,MAAM,WAAW,GAAG,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACxC,EAAE,MAAM,gBAAgB,GAAG,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAClD,EAAE,MAAM,qBAAqB,GAAG,EAAE,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;;AAE5D,EAAE,MAAM,SAAS,GAAG,EAAE,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;;AAErD;AACA,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;AACnC,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC;AAC5B,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC;AAClC,EAAE,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;AACxC,EAAE,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,SAAS,CAAC;AACjC,EAAE,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC;;AAEvC;AACA,EAAE,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;AACvC,EAAE,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC;AAC/B,EAAE,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC;AAC/B,EAAE,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;AACrC,EAAE,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC;AACnC,EAAE,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC;AAC7B,EAAE,MAAM,YAAY,GAAG,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC;AAC/C;AACA,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;AAC7B;AACA,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;AACzB;AACA,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;AACvC;AACA,EAAE,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;AAC3C;AACA,EAAE,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;AACzC;AACA,EAAE,CAAC,sBAAsB,EAAE,uBAAuB,CAAC;AACnD;AACA,EAAE,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;AAC3C,GAAG;AACH,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;AACzC,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;;AAEpC;AACA,IAAI,EAAE,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC;;AAEnC;AACA;AACA;AACA,IAAI,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC;AACnC,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC;AACtC,IAAI,MAAM,WAAW,GAAG,SAAS,EAAE,CAAC;AACpC,IAAI,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,CAAC;;AAE5C;AACA;AACA;AACA,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC;;AAE7B;AACA,IAAI,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC;AACvC,IAAI,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,CAAC;AAC7C,IAAI,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC;AAC1C,IAAI,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,WAAW,CAAC;;AAEhD;AACA,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC;AAC9B,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC;AACjC,EAAE;AACF,EAAE,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AACrC,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;;AAEpB,EAAE,OAAO;AACT,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,MAAM,EAAE;AACZ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;AACnC,EAAE,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM;AACzB,EAAE,IAAI,MAAM,GAAG,CAAC;AAChB,EAAE,IAAI,MAAM,GAAG,EAAE;AACjB,EAAE,IAAI,UAAU,GAAG,EAAE;AACrB,EAAE,OAAO,MAAM,GAAG,GAAG,EAAE;AACvB,IAAI,IAAI,KAAK,GAAG,KAAK;AACrB,IAAI,IAAI,WAAW,GAAG,IAAI;AAC1B,IAAI,IAAI,SAAS,GAAG,IAAI;AACxB,IAAI,IAAI,WAAW,GAAG,CAAC;AACvB,IAAI,IAAI,eAAe,GAAG,IAAI;AAC9B,IAAI,IAAI,YAAY,GAAG,EAAE;AACzB,IAAI,OAAO,MAAM,GAAG,GAAG,IAAI,EAAE,WAAW,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACxE;AACA;AACA,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,IAAI;AACJ,IAAI,OAAO,MAAM,GAAG,GAAG,KAAK,SAAS,GAAG,WAAW,IAAI,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACpF;AACA,MAAM,WAAW,GAAG,IAAI;AACxB,MAAM,KAAK,GAAG,SAAS;;AAEvB;AACA,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE;AAC3B,QAAQ,YAAY,GAAG,CAAC;AACxB,QAAQ,eAAe,GAAG,KAAK;AAC/B,MAAM,CAAC,MAAM,IAAI,YAAY,IAAI,CAAC,EAAE;AACpC,QAAQ,YAAY,EAAE;AACtB,MAAM;AACN,MAAM,MAAM,EAAE;AACd,MAAM,WAAW,EAAE;AACnB,IAAI;AACJ,IAAI,IAAI,YAAY,GAAG,CAAC,EAAE;AAC1B;AACA;AACA;AACA,MAAM,MAAM,IAAI,WAAW;AAC3B,MAAM,IAAI,MAAM,GAAG,GAAG,EAAE;AACxB,QAAQ,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACvC,QAAQ,MAAM,EAAE;AAChB,MAAM;AACN,IAAI,CAAC,MAAM;AACX;AACA;AACA,MAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,QAAQ,MAAM,CAAC,IAAI,CAAC,cAAc,CAACA,MAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;AAC5D,QAAQ,UAAU,GAAG,EAAE;AACvB,MAAM;;AAEN;AACA,MAAM,MAAM,IAAI,YAAY;AAC5B,MAAM,WAAW,IAAI,YAAY;;AAEjC;AACA,MAAM,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC;AACrC,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,EAAE,MAAM,CAAC;AAClE,MAAM,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AAC1D,IAAI;AACJ,EAAE;;AAEF;AACA,EAAE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAACA,MAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;AACxD,EAAE;AACF,EAAE,OAAO,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;AAC9C,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5C,EAAE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC;AAC7C,EAAE,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC;AACjC;;AAEA,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;AACpF,MAAM,UAAU,GAAG,+GAA+G;;AAElI;AACA,MAAM,IAAI,GAAG;AACb,EAAE,OAAO,EAAE,IAAI;AACf,EAAE,MAAM,EAAE,IAAI;AACd,EAAE,UAAU,EAAE,EAAE;AAChB,EAAE,WAAW,EAAE,EAAE;AACjB,EAAE,aAAa,EAAE,EAAE;AACnB,EAAE,WAAW,EAAE;AACf,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,GAAG;AACjB,EAAE,KAAK,CAAC,MAAM,GAAG,EAAE;AACnB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI;AACrB,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI;AACpB,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE;AACtB,EAAE,IAAI,CAAC,WAAW,GAAG,EAAE;AACvB,EAAE,IAAI,CAAC,aAAa,GAAG,EAAE;AACzB,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK;AAC1B,EAAE,OAAO,IAAI;AACb;;AAkDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,GAAG,KAAK,EAAE;AACpE,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE;AACxB,IAAI,IAAI,CAAC,CAAC,kEAAkE,EAAE,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;AACtG,EAAE;AACF,EAAE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAChD,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC;AACrB;AACA;AACA,oBAAoB,CAAC,CAAC;AACtB,EAAE;AACF,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AACvD;;AAEA;AACA;AACA;AACA;AACA,SAAS,IAAI,GAAG;AAChB;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;AAC3C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnD,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,MAAM,OAAO,EAAE,IAAI,CAAC;AACpB,KAAK,CAAC;AACN,EAAE;;AAEF;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAC3C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpD,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,MAAM,OAAO,EAAE,IAAI,CAAC,OAAO;AAC3B,MAAM,MAAM,EAAE,IAAI,CAAC;AACnB,KAAK,CAAC;AACN,EAAE;AACF,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI;AACzB,EAAE,OAAO,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,GAAG,EAAE;AACvB,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACzB,IAAI,IAAI,EAAE;AACV,EAAE;AACF,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACpE;AACA,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE;AAC7C,EAAE,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACxC,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,MAAM,KAAK,CAAC,CAAC,6BAA6B,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC3E,IAAI;AACJ,IAAI,IAAI,GAAG,IAAI;AACf,IAAI,IAAI,GAAG,IAAI;AACf,EAAE;AACF,EAAE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;AACnC,EAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC;AAC9B,EAAE,MAAM,QAAQ,GAAG,EAAE;AACrB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;AAC3B,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AAC7E,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACrD,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,QAAQ;AACjB;;ACjxDA;AACA,MAAM,0BAA0B,GAAG,wBAAwB;AAC3D,MAAM,wBAAwB,GAAG,IAAI,MAAM,CAAC,0BAA0B,CAAC;AACvE,MAAM,4BAA4B,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC;AACjF,MAAM,+BAA+B,GAAG,IAAI,MAAM,CAAC,0BAA0B,EAAE,GAAG,CAAC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CAAC,MAAM,EAAE;AACtC,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;AACjD,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7G,CAAC,OAAO,KAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,OAAO,EAAE;AAC3B,CAAC,OAAO,IAAI,MAAM,CAAC;AACnB,EAAE,GAAG,EAAE,IAAI,SAAS,CAAC,UAAU,CAAC;AAChC,EAAE,iBAAiB,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAC3D;AACA;AACA;AACA,GAAG,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;AAClH;AACA;AACA;AACA,GAAG,MAAM,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;AACrG;AACA;AACA;AACA;AACA,GAAG,IAAI,CAAC,UAAU,IAAI,eAAe,EAAE;AACvC,GAAG,MAAM,EAAE,EAAE,EAAE,GAAG,QAAQ;AAC1B,GAAG,MAAM,SAAS,GAAG,uBAAuB,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC;AAC7E,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK;AACzD,IAAI,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC;AACxG,IAAI,IAAI,SAAS;AACjB,IAAI,IAAI,oBAAoB;AAC5B,IAAI,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC,KAAK,SAAS,GAAG,oBAAoB,CAAC,CAAC,CAAC;AACxC,KAAK,oBAAoB,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC;AACzH,IAAI,CAAC,MAAM,IAAI,oBAAoB,CAAC,MAAM,EAAE;AAC5C,KAAK,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;AACnF,KAAK,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACtD,KAAK,SAAS,GAAG,oBAAoB,CAAC,CAAC,CAAC;AACxC,KAAK,oBAAoB,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC;AAC7F,IAAI;AACJ,IAAI,IAAI,SAAS,IAAI,oBAAoB,EAAE;AAC3C,KAAK,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AACvG,KAAK,IAAI,qBAAqB,CAAC,MAAM,IAAI,CAAC,EAAE,OAAO,KAAK;AACxD,KAAK,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;AACxF,KAAK,MAAM,sBAAsB,GAAG,SAAS,CAAC,GAAG,GAAG,oBAAoB,CAAC,WAAW,CAAC,mBAAmB,CAAC;AACzG,KAAK,IAAI,CAAC,mBAAmB,EAAE,OAAO,KAAK;AAC3C,KAAK,MAAM,gBAAgB,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AAC3G,KAAK,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,EAAE,OAAO,KAAK;AAC9D,KAAK,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AACnE,MAAM,GAAG,IAAI;AACb,MAAM,IAAI,EAAE,sBAAsB,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC;AACnD,MAAM,EAAE,EAAE,sBAAsB,GAAG,IAAI,CAAC,GAAG,GAAG;AAC9C,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK;AAC1B,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,IAAI;AAClD,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AACvF,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC9H,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE;AAC7G,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9E,KAAK,CAAC,CAAC;AACP,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE;AACzB,GAAG,OAAO,EAAE;AACZ,EAAE;AACF,EAAE,CAAC;AACH;AACA;AACA;AACA,SAAS,YAAY,CAAC,OAAO,EAAE;AAC/B,CAAC,OAAO,IAAI,MAAM,CAAC;AACnB,EAAE,GAAG,EAAE,IAAI,SAAS,CAAC,iBAAiB,CAAC;AACvC,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,KAAK;AAC9C,GAAG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,KAAK;AACvC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,KAAK;AACnC,GAAG,IAAI,IAAI,GAAG,IAAI;AAClB,GAAG,IAAI,KAAK,CAAC,MAAM,YAAY,iBAAiB,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM;AACrE,QAAQ;AACR,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AAC/B,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,KAAK;AAC7B,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;AACxC,IAAI,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;AAC9B,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI;AACjD,GAAG;AACH,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK;AAC1B,GAAG,IAAI,OAAO,GAAG,KAAK;AACtB,GAAG,IAAI,OAAO,CAAC,oBAAoB,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACzG,GAAG,IAAI,OAAO,CAAC,WAAW,EAAE;AAC5B,IAAI,IAAI,UAAU,EAAE,YAAY;AAChC,IAAI,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9D,IAAI,MAAM,IAAI,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,IAAI,UAAU,KAAK,MAAM,GAAG,UAAU,GAAG,KAAK,CAAC,IAAI;AACrG,IAAI,MAAM,MAAM,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,MAAM,IAAI,IAAI,YAAY,KAAK,MAAM,GAAG,YAAY,GAAG,KAAK,CAAC,MAAM;AACjH,IAAI,IAAI,IAAI,EAAE;AACd,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;AAC9B,KAAK,OAAO,GAAG,IAAI;AACnB,IAAI;AACJ,GAAG;AACH,GAAG,OAAO,OAAO;AACjB,EAAE,CAAC;AACH,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,yBAAyB,GAAG,wFAAwF;AAC1H;AACA;AACA;AACA,MAAM,yBAAyB,GAAG,wFAAwF;AAC1H,SAAS,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;AAChC,CAAC,IAAI,WAAW,GAAG,CAAC;AACpB,CAAC,KAAK,IAAI,QAAQ,GAAG,KAAK,GAAG,CAAC,EAAE,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,QAAQ,IAAI,CAAC,EAAE,WAAW,IAAI,CAAC;AACzG,CAAC,OAAO,WAAW,GAAG,CAAC,KAAK,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA,SAAS,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE;AAC5C,CAAC,IAAI,aAAa,GAAG,CAAC;AACtB,CAAC,IAAI,KAAK,GAAG,CAAC;AACd,CAAC,OAAO,KAAK,GAAG,UAAU,EAAE;AAC5B,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;AAC3B,GAAG,KAAK,IAAI,CAAC;AACb,GAAG;AACH,EAAE;AACF,EAAE,IAAI,aAAa,KAAK,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AACrD,GAAG,KAAK,IAAI,CAAC;AACb,GAAG;AACH,EAAE;AACF,EAAE,IAAI,SAAS,GAAG,CAAC;AACnB,EAAE,OAAO,KAAK,GAAG,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;AACpD,GAAG,SAAS,IAAI,CAAC;AACjB,GAAG,KAAK,IAAI,CAAC;AACb,EAAE;AACF,EAAE,IAAI,aAAa,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS;AACpD,OAAO,IAAI,SAAS,KAAK,aAAa,EAAE,aAAa,GAAG,CAAC;AACzD,CAAC;AACD,CAAC,OAAO,aAAa,GAAG,CAAC;AACzB;AACA,SAAS,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE;AACvD,CAAC,IAAI,YAAY,EAAE,aAAa;AAChC,CAAC,MAAM,GAAG,QAAQ,EAAE,IAAI,CAAC,GAAG,KAAK;AACjC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,YAAY,GAAG,KAAK,CAAC,KAAK,MAAM,IAAI,IAAI,YAAY,KAAK,MAAM,GAAG,YAAY,GAAG,CAAC,CAAC,EAAE,OAAO,KAAK;AACjL,CAAC,IAAI,gBAAgB,CAAC,IAAI,EAAE,CAAC,aAAa,GAAG,KAAK,CAAC,KAAK,MAAM,IAAI,IAAI,aAAa,KAAK,MAAM,GAAG,aAAa,GAAG,CAAC,CAAC,EAAE,OAAO,KAAK;AACjI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,aAAa,CAAC,IAAI,CAAC;AAChD;AACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,CAAC,IAAI,IAAI,EAAE,aAAa;AACxB,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,IAAI,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,KAAK;AACtG,CAAC,MAAM,KAAK,GAAG,CAAC,IAAI,GAAG,mBAAmB,KAAK,IAAI,IAAI,mBAAmB,KAAK,MAAM,GAAG,mBAAmB,GAAG,gBAAgB,MAAM,IAAI,IAAI,IAAI,KAAK,MAAM,GAAG,IAAI,GAAG,gBAAgB;AACrL,CAAC,OAAO;AACR,EAAE,KAAK,EAAE,CAAC,aAAa,GAAG,KAAK,CAAC,KAAK,MAAM,IAAI,IAAI,aAAa,KAAK,MAAM,GAAG,aAAa,GAAG,CAAC;AAC/F,EAAE,IAAI,EAAE,UAAU;AAClB,EAAE,WAAW,EAAE,QAAQ;AACvB,EAAE,IAAI,EAAE;AACR,GAAG,IAAI;AACP,GAAG,KAAK,EAAE,KAAK,IAAI,IAAI;AACvB,GAAG,QAAQ,EAAE;AACb;AACA,EAAE;AACF;AACA,SAAS,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE;AAC9B,CAAC,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM;AAC9E;AACA,SAAS,yBAAyB,CAAC,KAAK,EAAE;AAC1C,CAAC,IAAI,WAAW,EAAE,iBAAiB,EAAE,YAAY;AACjD,CAAC,OAAO;AACR,EAAE,IAAI,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,MAAM,IAAI,IAAI,WAAW,KAAK,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,IAAI;AACjG,EAAE,KAAK,EAAE,CAAC,iBAAiB,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,MAAM,IAAI,IAAI,YAAY,KAAK,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC,KAAK,MAAM,IAAI,IAAI,iBAAiB,KAAK,MAAM,GAAG,iBAAiB,GAAG;AAC5L,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,MAAM,EAAE;AACvC,CAAC,MAAM,IAAI,GAAG,aAAa,CAAC;AAC5B,EAAE,IAAI,EAAE,CAAC,IAAI,KAAK;AAClB,GAAG,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;AACrD,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE,OAAO,IAAI;AACnF,GAAG,OAAO,WAAW,CAAC,KAAK,CAAC;AAC5B,EAAE,CAAC;AACH,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI;AACnB,EAAE,aAAa,EAAE;AACjB,EAAE,CAAC;AACH,CAAC,OAAO,IAAI,SAAS,CAAC;AACtB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI;AACjB,EAAE,OAAO,EAAE,CAAC,KAAK,KAAK;AACtB,GAAG,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACrC,GAAG,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC;AACtG,GAAG,OAAO,MAAM;AAChB,EAAE;AACF,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,MAAM,EAAE;AACvC,CAAC,MAAM,IAAI,GAAG,aAAa,CAAC;AAC5B,EAAE,IAAI,EAAE,CAAC,IAAI,KAAK;AAClB,GAAG,IAAI,qBAAqB,EAAE,sBAAsB;AACpD,GAAG,MAAM,eAAe,GAAG,EAAE;AAC7B,GAAG,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,IAAI,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACnK,GAAG,MAAM,eAAe,GAAG,CAAC,CAAC,qBAAqB,GAAG,CAAC,sBAAsB,GAAG,MAAM,CAAC,aAAa,MAAM,IAAI,IAAI,sBAAsB,KAAK,MAAM,GAAG,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,qBAAqB,KAAK,MAAM,GAAG,qBAAqB,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,aAAa,KAAK,cAAc,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC3X,GAAG,OAAO,CAAC,GAAG,eAAe,EAAE,GAAG,eAAe,CAAC;AAClD,EAAE,CAAC;AACH,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI;AACnB,EAAE,aAAa,EAAE;AACjB,EAAE,CAAC;AACH,CAAC,OAAO,IAAI,SAAS,CAAC;AACtB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI;AACjB,EAAE,OAAO,EAAE,CAAC,KAAK,KAAK;AACtB,GAAG,IAAI,iBAAiB;AACxB,GAAG,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACrC,GAAG,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,IAAI,IAAI,iBAAiB,KAAK,MAAM,GAAG,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC;AACjO,GAAG,OAAO,MAAM;AAChB,EAAE;AACF,EAAE,CAAC;AACH;AACA;AACA;AACA,SAAS,YAAY,CAAC,OAAO,EAAE;AAC/B,CAAC,OAAO,IAAI,MAAM,CAAC;AACnB,EAAE,GAAG,EAAE,IAAI,SAAS,CAAC,iBAAiB,CAAC;AACvC,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,KAAK;AACjD,GAAG,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO;AACrC,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;AACzB,GAAG,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK;AAC9B,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS;AAC9B,GAAG,IAAI,KAAK,EAAE,OAAO,KAAK;AAC1B,GAAG,IAAI,WAAW,GAAG,EAAE;AACvB,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACnC,IAAI,WAAW,IAAI,IAAI,CAAC,WAAW;AACnC,GAAG,CAAC,CAAC;AACL,GAAG,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC;AACzI,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,IAAI,cAAc,KAAK,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK;AACtG,GAAG,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAC5E,EAAE,CAAC;AACH,EAAE,CAAC;AACH;AAIA,SAAS,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE;AACtC,CAAC,MAAM,gBAAgB,GAAG;AAC1B,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,KAAK;AACP,EAAE,MAAM;AACR,EAAE,QAAQ;AACV,EAAE,KAAK;AACP,EAAE,QAAQ;AACV,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE;AACF,EAAE;AACF,CAAC,IAAI,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK;AAChD,EAAE,MAAM,YAAY,GAAG,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC,MAAM;AAChF,EAAE,IAAI,YAAY,EAAE,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC;AACvD,CAAC,CAAC,CAAC;AACH,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,2CAA2C,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/O;AACA;AACA;AACA;AACA;AACK,MAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;AACzB,CAAC,IAAI,EAAE,MAAM;AACb,CAAC,QAAQ,EAAE,GAAG;AACd,CAAC,WAAW,EAAE,KAAK;AACnB,CAAC,QAAQ,EAAE,IAAI;AACf,CAAC,QAAQ,GAAG;AACZ,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;AAC7D,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ;AACtD,GAAG,OAAO,CAAC,IAAI,CAAC,qFAAqF,CAAC;AACtG,EAAE;AACF,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK;AAC/C,GAAG,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AACrC,IAAI,sBAAsB,CAAC,QAAQ,CAAC;AACpC,IAAI;AACJ,GAAG;AACH,GAAG,sBAAsB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC;AACpE,EAAE,CAAC,CAAC;AACJ,CAAC,CAAC;AACF,CAAC,SAAS,GAAG;AACb,EAAE,KAAK,EAAE;AACT,CAAC,CAAC;AACF,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC9B,CAAC,CAAC;AACF,CAAC,UAAU,GAAG;AACd,EAAE,OAAO;AACT,GAAG,WAAW,EAAE,IAAI;AACpB,GAAG,oBAAoB,EAAE,KAAK;AAC9B,GAAG,WAAW,EAAE,IAAI;AACpB,GAAG,aAAa,EAAE,KAAK;AACvB,GAAG,QAAQ,EAAE,IAAI;AACjB,GAAG,SAAS,EAAE,EAAE;AAChB,GAAG,eAAe,EAAE,MAAM;AAC1B,GAAG,cAAc,EAAE;AACnB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,GAAG,EAAE,8BAA8B;AACvC,IAAI,KAAK,EAAE;AACX,IAAI;AACJ,GAAG,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC;AACjE,GAAG,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG;AAC3B,GAAG,cAAc,EAAE,CAAC,GAAG,KAAK;AAC5B,IAAI,MAAM,WAAW,GAAG,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5D,IAAI,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7D,IAAI,IAAI,WAAW,IAAI,gBAAgB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI;AAC1E,IAAI,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxF,IAAI,IAAI,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,KAAK;AAC9D,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,KAAK;AAC1C,IAAI,OAAO,IAAI;AACf,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,aAAa,GAAG;AACjB,EAAE,IAAI,qBAAqB,EAAE,sBAAsB,EAAE,sBAAsB;AAC3E,EAAE,OAAO;AACT,GAAG,IAAI,EAAE;AACT,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,SAAS,CAAC,OAAO,EAAE;AACvB,KAAK,OAAO,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC;AACxC,IAAI;AACJ,IAAI;AACJ,GAAG,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,MAAM,IAAI,IAAI,qBAAqB,KAAK,MAAM,GAAG,qBAAqB,GAAG,IAAI,EAAE;AAChK,GAAG,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,MAAM,IAAI,IAAI,sBAAsB,KAAK,MAAM,GAAG,sBAAsB,GAAG,IAAI,EAAE;AAC7J,GAAG,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,MAAM,IAAI,IAAI,sBAAsB,KAAK,MAAM,GAAG,sBAAsB,GAAG,IAAI,EAAE;AACjK,GAAG,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI;AACzB,GAAG;AACH,CAAC,CAAC;AACF,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,CAAC;AACV,GAAG,GAAG,EAAE,SAAS;AACjB,GAAG,QAAQ,EAAE,CAAC,GAAG,KAAK;AACtB,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC;AACzC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE;AAClD,KAAK,eAAe,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AAC1E,KAAK,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;AACtC,KAAK,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC;AACnC,KAAK,CAAC,EAAE,OAAO,KAAK;AACpB,IAAI,OAAO,IAAI;AACf,GAAG;AACH,GAAG,CAAC;AACJ,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE;AAChC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,EAAE;AACtD,GAAG,eAAe,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AAC1E,GAAG,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;AACpC,GAAG,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC;AACjC,GAAG,CAAC,EAAE,OAAO;AACb,GAAG,GAAG;AACN,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;AAChD,IAAI,GAAG,cAAc;AACrB,IAAI,IAAI,EAAE;AACV,IAAI,CAAC;AACL,GAAG;AACH,GAAG;AACH,EAAE,OAAO;AACT,GAAG,GAAG;AACN,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;AAC/D,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,iBAAiB,EAAE,MAAM;AAC1B,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;AACpC,EAAE,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE;AAC5E,GAAG,IAAI,EAAE,KAAK,CAAC,IAAI;AACnB,GAAG,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI;AACzB,GAAG,CAAC;AACJ,CAAC,CAAC;AACF,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AAC9B,EAAE,IAAI,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY;AACpE,EAAE,MAAM,IAAI,GAAG,CAAC,gBAAgB,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,IAAI,WAAW,KAAK,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,IAAI,MAAM,IAAI,IAAI,gBAAgB,KAAK,MAAM,GAAG,gBAAgB,GAAG,EAAE;AAC7L,EAAE,MAAM,KAAK,GAAG,CAAC,iBAAiB,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,IAAI,YAAY,KAAK,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC,KAAK,MAAM,IAAI,IAAI,iBAAiB,KAAK,MAAM,GAAG,iBAAiB,GAAG,EAAE;AACrM,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC;AACrC,EAAE,OAAO,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO;AACT,GAAG,OAAO,EAAE,CAAC,UAAU,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK;AAC3C,IAAI,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU;AAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE;AACzC,KAAK,eAAe,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AAC1E,KAAK,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;AACtC,KAAK,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC;AACnC,KAAK,CAAC,EAAE,OAAO,KAAK;AACpB,IAAI,OAAO,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE;AACxF,GAAG,CAAC;AACJ,GAAG,UAAU,EAAE,CAAC,UAAU,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK;AAC9C,IAAI,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,IAAI,EAAE;AACrC,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE;AACjD,KAAK,eAAe,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AAC1E,KAAK,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;AACtC,KAAK,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC;AACnC,KAAK,CAAC,EAAE,OAAO,KAAK;AACpB,IAAI,OAAO,KAAK,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE;AAC3H,GAAG,CAAC;AACJ,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK;AACnC,IAAI,OAAO,KAAK,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE;AAC9G,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,aAAa,GAAG;AACjB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE;AAC5C,EAAE,OAAO,CAAC,qBAAqB,CAAC;AAChC,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI;AAClB,GAAG,aAAa,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE;AAC5D,IAAI,eAAe,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AACzE,IAAI,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;AACrC,IAAI,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC;AAClC,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF,CAAC,aAAa,GAAG;AACjB,EAAE,MAAM,aAAa,GAAG,CAAC,IAAI,KAAK;AAClC,GAAG,MAAM,UAAU,GAAG,EAAE;AACxB,GAAG,IAAI,IAAI,EAAE;AACb,IAAI,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,OAAO;AACvD,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE;AACrF,KAAK,eAAe,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC;AAC/D,KAAK,SAAS;AACd,KAAK;AACL,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC1B,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACnD,KAAK,UAAU,CAAC,IAAI,CAAC;AACrB,MAAM,IAAI,EAAE,IAAI,CAAC,KAAK;AACtB,MAAM,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAC/B,MAAM,KAAK,EAAE,IAAI,CAAC;AAClB,MAAM,CAAC;AACP,IAAI,CAAC,CAAC;AACN,GAAG;AACH,GAAG,OAAO,UAAU;AACpB,EAAE,CAAC;AACH,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,qBAAqB,CAAC;AAChE,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI;AAClB,GAAG,aAAa,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE;AAC5D,IAAI,eAAe,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AACzE,IAAI,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;AACrC,IAAI,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC;AAClC,IAAI,CAAC;AACL,GAAG;AACH,GAAG,CAAC,CAAC;AACL,EAAE,OAAO,CAAC,aAAa,CAAC;AACxB,GAAG,IAAI,EAAE,aAAa;AACtB,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI;AAClB,GAAG,aAAa,EAAE,CAAC,KAAK,KAAK;AAC7B,IAAI,IAAI,WAAW;AACnB,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,MAAM,IAAI,IAAI,WAAW,KAAK,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE;AAC9G,GAAG;AACH,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF,CAAC,qBAAqB,GAAG;AACzB,EAAE,MAAM,OAAO,GAAG,EAAE;AACpB,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,OAAO;AACrD,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnD,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI;AAClB,GAAG,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe;AAChD,GAAG,QAAQ,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE;AACrD,IAAI,eAAe,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC;AAC9D,IAAI,SAAS;AACb,IAAI;AACJ,IAAI,CAAC;AACL,GAAG,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC;AAChC,GAAG,CAAC,CAAC;AACL,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AAC5B,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI;AAClB,GAAG,MAAM,EAAE,IAAI,CAAC,MAAM;AACtB,GAAG,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW;AAChG,GAAG,oBAAoB,EAAE,IAAI,CAAC,OAAO,CAAC;AACtC,GAAG,CAAC,CAAC;AACL,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AAC1D,GAAG,MAAM,EAAE,IAAI,CAAC,MAAM;AACtB,GAAG,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe;AAChD,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI;AAClB,GAAG,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC;AAChC,GAAG,CAAC,CAAC;AACL,EAAE,OAAO,OAAO;AAChB,CAAC;AACD,CAAC;;AC5fD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,wBAAwB,GAAG,QAAQ;AACzC;AACA;AACA;AACA;AACA,MAAM,SAAS,GAAG,MAAM;AACxB;AACA;AACA;AACA;AACA,MAAM,SAAS,GAAGC,MAAI,CAAC,MAAM,CAAC;AAC9B,CAAC,IAAI,EAAE,WAAW;AAClB,CAAC,QAAQ,EAAE,GAAG;AACd,CAAC,UAAU,GAAG;AACd,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE;AAC/B,CAAC,CAAC;AACF,CAAC,KAAK,EAAE,OAAO;AACf,CAAC,OAAO,EAAE,SAAS;AACnB,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACvB,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE;AAChC,EAAE,OAAO;AACT,GAAG,GAAG;AACN,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;AAC/D,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;AACpC,EAAE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE;AACnC,EAAE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAClG,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC;AAC7C,EAAE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,wBAAwB,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,wBAAwB,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,wBAAwB,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,OAAO,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC;AACjZ,EAAE,OAAO,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC;AACzD,CAAC,CAAC;AACF,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,KAAK;AACnC,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE;AACtB,EAAE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,EAAE;AACjE,EAAE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,GAAG,IAAI,iBAAiB,EAAE,kBAAkB;AAC5C,GAAG,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,YAAY,MAAM,IAAI,IAAI,iBAAiB,KAAK,MAAM,GAAG,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,OAAO,GAAG,EAAE;AAChO,GAAG,OAAO,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC,YAAY,MAAM,IAAI,IAAI,kBAAkB,KAAK,MAAM,GAAG,MAAM,GAAG,kBAAkB,CAAC,IAAI,MAAM,WAAW,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,GAAG,wBAAwB,GAAG,EAAE;AAClP,EAAE;AACF,EAAE,OAAO,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC;AAClC,CAAC,CAAC;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK;AACjD,GAAG,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,EAAE,CAAC,EAAE;AACL,CAAC,CAAC;AACF,CAAC,oBAAoB,GAAG;AACxB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE;AACnE,CAAC;AACD,CAAC,CAAC;;AC3DF;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,8CAA8C;AACjE;AACA;AACA;AACA,MAAM,UAAU,GAAG,8CAA8C;AACjE;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,CAAC,IAAI,EAAE,QAAQ;AACf,CAAC,UAAU,GAAG;AACd,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE;AAC/B,CAAC,CAAC;AACF,CAAC,SAAS,GAAG;AACb,EAAE,OAAO;AACT,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AACf,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;AACjB,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;AACpB,GAAG;AACH,IAAI,KAAK,EAAE,iBAAiB;AAC5B,IAAI,SAAS,EAAE,KAAK;AACpB,IAAI,QAAQ,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG;AAC/D;AACA,GAAG;AACH,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE;AAChC,EAAE,OAAO;AACT,GAAG,GAAG;AACN,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;AAC/D,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,iBAAiB,EAAE,KAAK;AACzB,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;AACpC,EAAE,OAAO,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;AAC7E,CAAC,CAAC;AACF,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AAC9B,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AACxC,CAAC,CAAC;AACF,CAAC,WAAW,GAAG;AACf,EAAE,OAAO;AACT,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK;AACtC,IAAI,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACtC,GAAG,CAAC;AACJ,GAAG,YAAY,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK;AACzC,IAAI,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AACzC,GAAG,CAAC;AACJ,GAAG,WAAW,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK;AACxC,IAAI,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACxC,GAAG;AACH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,oBAAoB,GAAG;AACxB,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE;AACrE,CAAC,CAAC;AACF,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO,CAAC,aAAa,CAAC;AACxB,GAAG,IAAI,EAAE,UAAU;AACnB,GAAG,IAAI,EAAE,IAAI,CAAC;AACd,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO,CAAC,aAAa,CAAC;AACxB,GAAG,IAAI,EAAE,UAAU;AACnB,GAAG,IAAI,EAAE,IAAI,CAAC;AACd,GAAG,CAAC,CAAC;AACL,CAAC;AACD,CAAC,CAAC;;ACxEF;AACA;AACA;AACA;AACA;AACA,MAAM,IAAI,GAAGA,MAAI,CAAC,MAAM,CAAC;AACzB,CAAC,IAAI,EAAE,MAAM;AACb,CAAC,KAAK,EAAE,QAAQ;AAChB,CAAC,aAAa,EAAE,CAAC,KAAK,KAAK;AAC3B,EAAE,OAAO;AACT,GAAG,IAAI,EAAE,MAAM;AACf,GAAG,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI;AACvB,GAAG;AACH,CAAC,CAAC;AACF,CAAC,cAAc,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI;AACxC,CAAC,CAAC;;ACCF;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;AACpC,CAAC,IAAI,EAAE,YAAY;AACnB,CAAC,aAAa,GAAG;AACjB,EAAE,MAAM,UAAU,GAAG,EAAE;AACvB,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACrF,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACvG,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACvG,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACrF,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACpG,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjG,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACvG,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACpG,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACpG,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC9F,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjG,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACnH,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3F,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjG,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,EAAE;AACzC,GAAG,IAAI,aAAa;AACpB,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,MAAM,IAAI,IAAI,aAAa,KAAK,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;AACjJ,EAAE;AACF,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE;AACnC,GAAG,IAAI,cAAc;AACrB,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,MAAM,IAAI,IAAI,cAAc,KAAK,MAAM,GAAG,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;AACxI,EAAE;AACF,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC1G,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACpG,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3F,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACrF,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE;AACxC,GAAG,IAAI,cAAc;AACrB,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,MAAM,IAAI,IAAI,cAAc,KAAK,MAAM,GAAG,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;AAClJ,EAAE;AACF,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,KAAK,EAAE;AAC3C,GAAG,IAAI,cAAc;AACrB,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,MAAM,IAAI,IAAI,cAAc,KAAK,MAAM,GAAG,MAAM,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;AACxJ,EAAE;AACF,EAAE,OAAO,UAAU;AACnB,CAAC;AACD,CAAC,CAAC;AACF;AACA;AACG,IAACxE,aAAW,GAAG;;;;;AC9DlB;AACA;AACA;AACA;AACA;AACA;AACA,IAAMiF,KAAK,GAAG,SAARA,KAAKA,CAAGC,OAAO,EAAA;AAAA,EAAA,OAAI,UAAAC,KAAK,EAAA;AAAA,IAAA,OAC5BA,KAAK,CAAC/K,MAAM,CAACG,KAAK,CAAC6K,SAAS,CAACC,OAAO,CAACC,KAAK,KAAK,CAAC,GAAG,KAAK,GAAGJ,OAAO,CAACC,KAAK,CAAC;AAAA,EAAA,CAAA;AAAA,CAAA;;AAE3E;AACA;AACA,IAAMI,OAAO,GAAG,SAAVA,OAAOA,CAAIC,SAAS,EAAEC,GAAG,EAAA;EAAA,OAC7B,OAAOD,SAAS,CAACC,GAAG,CAAC,KAAK,UAAU,GAAAC,eAAA,CAAA,EAAA,EAAMD,GAAG,EAAGR,KAAK,CAACO,SAAS,CAACC,GAAG,CAAC,CAAC,CAAA,GAAK,EAAE;AAAA,CAAA;;AAE9E;AACA;AACA;AACA,IAAME,cAAc,GAAGC,UAAU,CAACC,MAAM,CAAC;EACvCC,UAAU,EAAA,SAAAA,aAAG;AAAA,IAAA,IAAAC,YAAA;AACX,IAAA,OAAA9L,aAAA,CAAAA,aAAA,CAAA,EAAA,EAAA,CAAA8L,YAAA,GAAY,IAAI,CAACC,MAAM,MAAA,IAAA,IAAAD,YAAA,KAAA,MAAA,GAAA,MAAA,GAAXA,YAAA,CAAAE,IAAA,KAAc,CAAC,CAAA,EAAA,EAAA,EAAA;AAAEC,MAAAA,SAAS,EAAEC;AAAsB,KAAA,CAAA;EAChE,CAAC;EAEDC,oBAAoB,EAAA,SAAAA,uBAAG;IAAA,IAAAC,aAAA,EAAAC,aAAA;IACrB,IAAMd,SAAS,IAAAa,aAAA,GAAA,CAAAC,aAAA,GAAG,IAAI,CAACN,MAAM,MAAA,IAAA,IAAAM,aAAA,uBAAXA,aAAA,CAAAL,IAAA,CAAA,IAAc,CAAC,MAAA,IAAA,IAAAI,aAAA,KAAA,MAAA,GAAAA,aAAA,GAAI,EAAE;IAEvC,OAAApM,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAA,EAAA,EACKuL,SAAS,GACTD,OAAO,CAACC,SAAS,EAAE,WAAW,CAAC,CAAA,EAC/BD,OAAO,CAACC,SAAS,EAAE,eAAe,CAAC,CAAA;AAE1C,EAAA;AACF,CAAC;;AC/BD,IAAMe,WAAW,GAAG,SAAdA,WAAWA,CAAIhM,KAAK,EAAEiM,eAAe,EAAK;EAC9C,IAAM9L,KAAK,GACTH,KAAK,CAACkM,WAAW,IAChBlM,KAAK,CAAC6K,SAAS,CAACsB,GAAG,CAACC,YAAY,IAAIpM,KAAK,CAAC6K,SAAS,CAACwB,KAAK,CAAClM,KAAK,EAAG;AAErE,EAAA,IAAIA,KAAK,EAAE;IACTH,KAAK,CAACsM,EAAE,CAACN,WAAW,CAClB7L,KAAK,CAACuE,MAAM,CAAC,UAAArE,IAAI,EAAA;AAAA,MAAA,OAAI4L,eAAe,KAAA,IAAA,IAAfA,eAAe,KAAA,MAAA,GAAA,MAAA,GAAfA,eAAe,CAAE5G,QAAQ,CAAChF,IAAI,CAACV,IAAI,CAACW,IAAI,CAAC;AAAA,IAAA,CAAA,CAChE,CAAC;AACH,EAAA;AACF,CAAC;;AAED;AACA,IAAMiM,cAAc,GAAGC,SAAS,CAAC5G,MAAM,CAAC;AACtCtF,EAAAA,IAAI,EAAE,gBAAgB;AACtBmM,EAAAA,QAAQ,EAAE,EAAE;EAEZC,WAAW,EAAA,SAAAA,cAAG;IACZ,OAAO;MACLC,UAAU,EACR,SAAAA,UAAAA,GAAA;AAAA,QAAA,IAAAhL,IAAA,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAwB,EAAE;UAAAgL,cAAA,GAAAjL,IAAA,CAAvBkL,SAAS;AAATA,UAAAA,SAAS,GAAAD,cAAA,KAAA,MAAA,GAAG,IAAI,GAAAA,cAAA;QAAA,OACnB,UAAAE,KAAA,EAAqC;AAAA,UAAA,IAAlCR,EAAE,GAAAQ,KAAA,CAAFR,EAAE;YAAEtM,KAAK,GAAA8M,KAAA,CAAL9M,KAAK;YAAE+M,QAAQ,GAAAD,KAAA,CAARC,QAAQ;YAAElN,MAAM,GAAAiN,KAAA,CAANjN,MAAM;AAC5B,UAAA,IAAQgL,SAAS,GAAUyB,EAAE,CAArBzB,SAAS;YAAE9K,GAAG,GAAKuM,EAAE,CAAVvM,GAAG;AACtB,UAAA,IAAQsM,KAAK,GAAUxB,SAAS,CAAxBwB,KAAK;YAAEF,GAAG,GAAKtB,SAAS,CAAjBsB,GAAG;UAClB,IAAMa,aAAa,GAAGC,qBAAqB,CACzCpN,MAAM,CAACqN,gBAAgB,CAACC,UAAU,EAClCd,KAAK,CAACnM,IAAI,EAAE,CAACP,IAAI,CAACW,IAAI,EACtB+L,KAAK,CAACnM,IAAI,EAAE,CAACK,KACf,CAAC;UAED,IAAIsK,SAAS,YAAYuC,aAAa,IAAIvC,SAAS,CAAC3K,IAAI,CAACmN,OAAO,EAAE;AAChE,YAAA,IAAI,CAAChB,KAAK,CAACD,YAAY,IAAI,CAACkB,QAAQ,CAACvN,GAAG,EAAEsM,KAAK,CAACkB,GAAG,CAAC,EAAE,OAAO,KAAK;AAElE,YAAA,IAAIR,QAAQ,EAAE;AACZ,cAAA,IAAIF,SAAS,EAAE;gBACbb,WAAW,CAAChM,KAAK,EAAEH,MAAM,CAACqN,gBAAgB,CAACjB,eAAe,CAAC;AAC7D,cAAA;cAEAK,EAAE,CAACkB,KAAK,CAACnB,KAAK,CAACkB,GAAG,CAAC,CAACE,cAAc,EAAE;AACtC,YAAA;AAEA,YAAA,OAAO,IAAI;AACb,UAAA;UAEA,IAAI,CAACpB,KAAK,CAACZ,MAAM,CAAC4B,OAAO,EAAE,OAAO,KAAK;AAEvC,UAAA,IAAMK,KAAK,GAAGvB,GAAG,CAACC,YAAY,KAAKD,GAAG,CAACV,MAAM,CAACkC,OAAO,CAACC,IAAI;AAC1D,UAAA,IAAMC,KAAK,GACTxB,KAAK,CAACtB,KAAK,KAAK,CAAC,GACbjJ,SAAS,GACTgM,cAAc,CACZzB,KAAK,CAACnM,IAAI,CAAC,EAAE,CAAC,CAAC6N,cAAc,CAAC1B,KAAK,CAAC2B,UAAU,CAAC,EAAE,CAAC,CACpD,CAAC;AAEP,UAAA,IAAIC,KAAK,GACPP,KAAK,IAAIG,KAAK,GACV,CAAC;AAAElO,YAAAA,IAAI,EAAEkO,KAAK;AAAEtN,YAAAA,KAAK,EAAEyM;WAAe,CAAC,GACvClL,SAAS;UAEf,IAAMoM,mBAAmB,GACvBrD,SAAS,YAAYsD,aAAa,IAAI,CAACtD,SAAS,CAACuD,KAAK;;AAExD;AACA,UAAA,IAAMC,SAAS,GAAGH,mBAAmB,GACjCI,WAAW,CAAC1I,MAAM,CAAC;YACjB7F,GAAG,EAAEuM,EAAE,CAACvM,GAAG;AACX8K,YAAAA,SAAS,EAATA;WACD,CAAC,CAACyB,EAAE,CAACiC,eAAe,EAAE,GACvB,IAAI;UACR,IAAMC,QAAQ,GAAGH,SAAS,GAAGA,SAAS,CAACtO,GAAG,GAAGuM,EAAE,CAACvM,GAAG;AACnD,UAAA,IAAM0O,QAAQ,GAAGJ,SAAS,GACtBA,SAAS,CAACK,OAAO,CAACxP,GAAG,CAACmN,KAAK,CAACkB,GAAG,CAAC,GAChClB,KAAK,CAACkB,GAAG;UAEb,IAAIoB,GAAG,GAAGrB,QAAQ,CAACkB,QAAQ,EAAEC,QAAQ,EAAE,CAAC,EAAER,KAAK,CAAC;AAEhD,UAAA,IACE,CAACA,KAAK,IACN,CAACU,GAAG,IACJrB,QAAQ,CACNkB,QAAQ,EACRC,QAAQ,EACR,CAAC,EACDZ,KAAK,GAAG,CAAC;AAAElO,YAAAA,IAAI,EAAEkO;AAAM,WAAC,CAAC,GAAG/L,SAC9B,CAAC,EACD;AACA6M,YAAAA,GAAG,GAAG,IAAI;YACVV,KAAK,GAAGJ,KAAK,GAAG,CAAC;AAAElO,cAAAA,IAAI,EAAEkO,KAAK;AAAEtN,cAAAA,KAAK,EAAEyM;aAAe,CAAC,GAAGlL,SAAS;AACrE,UAAA;AAEA,UAAA,IAAIiL,QAAQ,EAAE;AACZ,YAAA,IAAI4B,GAAG,EAAE;AACP;AACA,cAAA,IAAMC,OAAO,GAAGtC,EAAE,CAACuC,KAAK,CAAChN,MAAM;cAE/B,IAAIgJ,SAAS,YAAYsD,aAAa,EAAE;gBACtC7B,EAAE,CAACiC,eAAe,EAAE;AACtB,cAAA;cAEAjC,EAAE,CAACkB,KAAK,CAAClB,EAAE,CAACoC,OAAO,CAACI,KAAK,CAACF,OAAO,CAAC,CAAC1P,GAAG,CAACmN,KAAK,CAACkB,GAAG,CAAC,EAAE,CAAC,EAAEU,KAAK,CAAC;AAE5D,cAAA,IACEJ,KAAK,IACL,CAACH,KAAK,IACN,CAACrB,KAAK,CAACD,YAAY,IACnBC,KAAK,CAACZ,MAAM,CAAC9L,IAAI,KAAKkO,KAAK,EAC3B;AACA,gBAAA,IAAMkB,KAAK,GAAGzC,EAAE,CAACoC,OAAO,CAACI,KAAK,CAACF,OAAO,CAAC,CAAC1P,GAAG,CAACmN,KAAK,CAAC2C,MAAM,EAAE,CAAC;gBAC3D,IAAMC,MAAM,GAAG3C,EAAE,CAACvM,GAAG,CAACmP,OAAO,CAACH,KAAK,CAAC;gBAEpC,IACE1C,KAAK,CACFnM,IAAI,CAAC,EAAE,CAAC,CACRiP,cAAc,CAACF,MAAM,CAACG,KAAK,EAAE,EAAEH,MAAM,CAACG,KAAK,EAAE,GAAG,CAAC,EAAEvB,KAAK,CAAC,EAC5D;kBACAvB,EAAE,CAAC+C,aAAa,CACd/C,EAAE,CAACoC,OAAO,CAACI,KAAK,CAACF,OAAO,CAAC,CAAC1P,GAAG,CAACmN,KAAK,CAAC2C,MAAM,EAAE,CAAC,EAC7CnB,KACF,CAAC;AACH,gBAAA;AACF,cAAA;AACF,YAAA;AAEA,YAAA,IAAIhB,SAAS,EAAE;cACbb,WAAW,CAAChM,KAAK,EAAEH,MAAM,CAACqN,gBAAgB,CAACjB,eAAe,CAAC;AAC7D,YAAA;YAEAK,EAAE,CAACmB,cAAc,EAAE;AACrB,UAAA;AAEA,UAAA,OAAOkB,GAAG;QACZ,CAAC;AAAA,MAAA;KACJ;AACH,EAAA;AACF,CAAC;;ACrID;AACA,SAAS,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,EAAE,EAAE;AAC3C,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAChC,EAAE,MAAM,OAAO,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,EAAE,CAAC;AACrF,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AAC9D,EAAE,OAAO;AACT,GAAG,IAAI,EAAE,IAAI,CAAC,KAAK;AACnB,GAAG;AACH,GAAG;AACH,CAAC,CAAC,CAAC;AACH;AACA,SAAS,iBAAiB,CAAC,MAAM,EAAE;AACnC,CAAC,OAAO,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE;AAC7C;AACA,SAAS,UAAU,CAAC,eAAe,EAAE;AACrC,CAAC,OAAO,OAAO,CAACW,WAAS,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;AACvD;AACA,SAAS,cAAc,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE;AAClE,CAAC,MAAM,WAAW,GAAG,EAAE;AACvB,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACzE,EAAE,IAAI,oBAAoB;AAC1B,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;AAC1B,EAAE,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,eAAe;AAC/D,EAAE,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,EAAE;AAC5C,EAAE,UAAU,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,GAAG,QAAQ,CAAC,UAAU,MAAM,IAAI,IAAI,oBAAoB,KAAK,MAAM,GAAG,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,iBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACxY,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;AACrC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAC5B,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AACrF,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;AAChC,GAAG;AACH,GAAG,IAAI,GAAG,EAAE;AACZ,EAAE,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,CAAC,OAAO,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC;AAC9C;AACA,SAAS,UAAU,CAAC,KAAK,EAAE;AAC3B,CAAC,OAAO,OAAO,KAAK,KAAK,UAAU;AACnC;AACA,SAAS,cAAc,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE;AAC7D,CAAC,IAAI,CAAC;AACN,EAAE,WAAW;AACb,EAAE,eAAe;AACjB,EAAE;AACF,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,qFAAqF,CAAC;AAChJ,CAAC,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC;AACnC,EAAE,GAAG,EAAE,IAAI,SAAS,CAAC,UAAU,CAAC;AAChC,EAAE,KAAK,EAAE;AACT,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,cAAc,CAAC;AACxC,IAAI,GAAG;AACP,IAAI,IAAI;AACR,IAAI,QAAQ;AACZ,IAAI;AACJ,IAAI,CAAC;AACL,GAAG,KAAK,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAC9D,IAAI,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;AACjE,IAAI,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;AACjE,IAAI,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;AAClF,IAAI,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;AAClF,IAAI,IAAI,WAAW,CAAC,UAAU,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK;AACxJ,KAAK,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK;AAClF,MAAM,OAAO,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,EAAE;AAC9E,KAAK,CAAC,CAAC;AACP,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,cAAc,CAAC;AAC/B,KAAK,GAAG,EAAE,WAAW,CAAC,GAAG;AACzB,KAAK,IAAI;AACT,KAAK,QAAQ;AACb,KAAK;AACL,KAAK,CAAC;AACN,IAAI,OAAO,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC;AAClE,GAAG;AACH,GAAG;AACH,EAAE,KAAK,EAAE,EAAE,WAAW,CAAC,KAAK,EAAE;AAC9B,GAAG,OAAO,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;AACxC,EAAE,CAAC;AACH,EAAE,CAAC;AACH,CAAC,OAAO,cAAc;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,iBAAiB,GAAG,SAAS,CAAC,MAAM,CAAC;AAC3C,CAAC,UAAU,GAAG;AACd,EAAE,IAAI,YAAY;AAClB,EAAE,OAAO;AACT,GAAG,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,MAAM,IAAI,IAAI,YAAY,KAAK,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AACzG,GAAG,QAAQ,EAAE,EAAE;AACf,GAAG,mBAAmB,EAAE,WAAW;AACnC,GAAG,iBAAiB,EAAE,IAAI;AAC1B,GAAG,eAAe,EAAE,IAAI;AACxB,GAAG,aAAa,EAAE,IAAI;AACtB,GAAG,eAAe,EAAE,IAAI;AACxB,GAAG,oBAAoB,EAAE,KAAK;AAC9B,GAAG,OAAO,EAAE,CAAC;AACb,GAAG,cAAc,EAAE;AACnB,GAAG;AACH,CAAC,CAAC;AACF,CAAC,qBAAqB,GAAG;AACzB,EAAE,IAAI,aAAa;AACnB,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,MAAM,IAAI,IAAI,aAAa,KAAK,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,cAAc,CAAC;AAC5I,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI;AAClB,GAAG,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;AAClC,GAAG,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC;AACjC,GAAG,CAAC,CAAC;AACL,CAAC;AACD,CAAC,CAAC;AACF;AACA;AACG,IAAC7J,aAAW,GAAG;;AC/GlB;AACA,SAAS,mBAAmB,CAAC,MAAM,EAAE;AACrC,CAAC,IAAI,qBAAqB;AAC1B,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,MAAM;AACrH,CAAC,MAAM,WAAW,GAAG,iBAAiB,IAAI,CAAC,kBAAkB;AAC7D,CAAC,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC;AACzC,CAAC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC,MAAM,MAAM,GAAG,WAAW,GAAG,GAAG,GAAG,EAAE;AACtC,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,EAAE,GAAG,WAAW;AAC/D,CAAC,MAAM,MAAM,GAAG,WAAW,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;AACtL,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,qBAAqB,GAAG,SAAS,CAAC,UAAU,MAAM,IAAI,IAAI,qBAAqB,KAAK,MAAM,GAAG,MAAM,GAAG,qBAAqB,CAAC,MAAM,KAAK,SAAS,CAAC,UAAU,CAAC,IAAI;AAChL,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI;AACvB,CAAC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM;AAC7C,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE;AACtD,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE,OAAO,IAAI;AAC5E,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC;AACjF,CAAC,MAAM,oBAAoB,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,EAAE,eAAe,KAAK,IAAI,IAAI,eAAe,KAAK,MAAM,GAAG,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;AAClK,CAAC,IAAI,eAAe,KAAK,IAAI,IAAI,CAAC,oBAAoB,EAAE,OAAO,IAAI;AACnE,CAAC,MAAM,IAAI,GAAG,QAAQ,GAAG,KAAK,CAAC,KAAK;AACpC,CAAC,IAAI,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;AAChC,CAAC,IAAI,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;AAC7D,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG;AACjB,EAAE,EAAE,IAAI,CAAC;AACT,CAAC;AACD,CAAC,IAAI,IAAI,GAAG,SAAS,CAAC,GAAG,IAAI,EAAE,IAAI,SAAS,CAAC,GAAG,EAAE,OAAO;AACzD,EAAE,KAAK,EAAE;AACT,GAAG,IAAI;AACP,GAAG;AACH,GAAG;AACH,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AACpC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACf,EAAE;AACF,CAAC,OAAO,IAAI;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,WAAW,EAAE;AAC5C,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,KAAK;AAC1C,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK;AACzC,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AAC1B,EAAE,IAAI,EAAE,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK;AAClF,EAAE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;AACzE,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5B,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA;AACA;AACA,SAAS,mBAAmB,CAAC,MAAM,EAAE;AACrC,CAAC,OAAO,MAAM;AACd,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG;AAChD,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AACnE,EAAE,IAAI;AACN,GAAG,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC;AAC5D,EAAE,CAAC,CAAC,MAAM;AACV,GAAG,OAAO,IAAI;AACd,EAAE;AACF,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE;AAChE,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,mBAAmB,CAAC,MAAM,CAAC;AACxD,CAAC,OAAO,MAAM;AACd,EAAE,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;AAChD,EAAE,MAAM,YAAY,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,YAAY;AACvF,EAAE,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,qBAAqB,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;AAChG,EAAE,OAAO,CAAC,qBAAqB,KAAK,IAAI,IAAI,qBAAqB,KAAK,MAAM,GAAG,MAAM,GAAG,qBAAqB,CAAC,qBAAqB,EAAE,KAAK,IAAI;AAC9I,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA,SAAS,mBAAmB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,EAAE;AAChI,CAAC,IAAI,oBAAoB,KAAK,IAAI,IAAI,oBAAoB,KAAK,MAAM,GAAG,MAAM,GAAG,oBAAoB,CAAC;AACtG,EAAE,MAAM;AACR,EAAE,KAAK;AACP,EAAE,KAAK,EAAE,cAAc;AACvB,EAAE,KAAK;AACP,EAAE,WAAW;AACb,EAAE,WAAW,EAAE;AACf,EAAE,CAAC,EAAE,OAAO,KAAK;AACjB,CAAC,IAAI,oBAAoB,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI;AAC1E,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE;AAC9C,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC/D,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE;AAC/I,CAAC,OAAO;AACR;AACA;AACA;AACA,EAAE,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE;AAC7B,GAAG,IAAI,oBAAoB;AAC3B,GAAG,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/C,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,KAAK;AAClC,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;AACtD,IAAI,IAAI,mBAAmB;AAC3B,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,MAAM,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,SAAS,MAAM,IAAI,IAAI,mBAAmB,KAAK,MAAM,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5K,KAAK,IAAI;AACT,KAAK,KAAK;AACV,KAAK,KAAK,EAAE,KAAK,CAAC;AAClB,KAAK,CAAC;AACN,IAAI,YAAY,CAAC,IAAI,CAAC;AACtB,IAAI,OAAO,IAAI;AACf,GAAG;AACH,GAAG,OAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,MAAM,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,SAAS,MAAM,IAAI,IAAI,oBAAoB,KAAK,MAAM,GAAG,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC9L,IAAI,IAAI;AACR,IAAI,KAAK;AACT,IAAI,KAAK,EAAE,KAAK,CAAC;AACjB,IAAI,CAAC,KAAK,KAAK;AACf,EAAE,CAAC;AACH;AACA;AACA;AACA,EAAE,WAAW,CAAC,KAAK,EAAE;AACrB,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC3E,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI;AAC3B,GAAG,MAAM,OAAO,GAAG,EAAE,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAChF,GAAG,MAAM,UAAU,GAAG,CAAC,eAAe,CAAC;AACvC,GAAG,IAAI,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC;AACrD,GAAG,OAAO,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;AACnF,IAAI,QAAQ,EAAE,aAAa;AAC3B,IAAI,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;AAC/B,IAAI,oBAAoB,EAAE,YAAY,IAAI,MAAM;AAChD,IAAI,yBAAyB,EAAE;AAC/B,IAAI,CAAC,CAAC,CAAC;AACP,EAAE;AACF,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAE,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,SAAS,EAAE,EAAE;AACjM,CAAC,OAAO;AACR;AACA;AACA;AACA,EAAE,IAAI,GAAG;AACT,GAAG,OAAO;AACV,IAAI,MAAM,EAAE,KAAK;AACjB,IAAI,KAAK,EAAE;AACX,KAAK,IAAI,EAAE,CAAC;AACZ,KAAK,EAAE,EAAE;AACT,KAAK;AACL,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,SAAS,EAAE,KAAK;AACpB,IAAI,cAAc,EAAE;AACpB,IAAI;AACJ,EAAE,CAAC;AACH;AACA;AACA;AACA,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE;AAC7C,GAAG,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM;AAChC,GAAG,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,IAAI;AACpC,GAAG,MAAM,EAAE,SAAS,EAAE,GAAG,WAAW;AACpC,GAAG,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,SAAS;AACpC,GAAG,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE;AAC3B,GAAG,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;AAC9C,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK;AACvB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI;AAC5B,IAAI,IAAI,CAAC,KAAK,GAAG;AACjB,KAAK,IAAI,EAAE,CAAC;AACZ,KAAK,EAAE,EAAE;AACT,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI;AACrB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI;AACpB,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,cAAc;AAC/E,IAAI,OAAO,IAAI;AACf,GAAG;AACH,GAAG,IAAI,CAAC,SAAS,GAAG,SAAS;AAC7B,GAAG,IAAI,WAAW,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE,IAAI,CAAC,cAAc,GAAG;AACrF,IAAI,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AAC3D,IAAI,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;AACtD,IAAI;AACJ,GAAG,IAAI,UAAU,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACvD,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK;AAC9G,IAAI,MAAM,KAAK,GAAG,mBAAmB,CAAC;AACtC,KAAK,IAAI;AACT,KAAK,WAAW,EAAE,oBAAoB;AACtC,KAAK,kBAAkB;AACvB,KAAK,eAAe;AACpB,KAAK,WAAW;AAChB,KAAK,SAAS,EAAE,SAAS,CAAC;AAC1B,KAAK,CAAC;AACN,IAAI,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;AACvE,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC;AACvB,KAAK,MAAM;AACX,KAAK,KAAK;AACV,KAAK,KAAK,EAAE,KAAK,CAAC,KAAK;AACvB,KAAK,QAAQ,EAAE,IAAI,CAAC;AACpB,KAAK,CAAC,KAAK,CAAC,UAAU,IAAI,UAAU,CAAC;AACrC,KAAK,MAAM;AACX,KAAK,KAAK,EAAE,KAAK,CAAC,KAAK;AACvB,KAAK,KAAK,EAAE,KAAK,CAAC,KAAK;AACvB,KAAK,IAAI,EAAE,KAAK,CAAC,IAAI;AACrB,KAAK;AACL,KAAK,CAAC,CAAC,EAAE;AACT,KAAK,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,IAAI,CAAC,mBAAmB,CAAC;AAC9D,MAAM,KAAK;AACX,MAAM,cAAc,EAAE,IAAI,CAAC,cAAc;AACzC,MAAM,KAAK;AACX,MAAM;AACN,MAAM,CAAC,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI;AACnC,KAAK,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE;AACvC,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI;AACxB,MAAM,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,YAAY;AAC3D,MAAM,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;AAC9B,MAAM,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;AAC9B,MAAM,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;AAC5B,KAAK,CAAC,MAAM,IAAI,CAAC,MAAM,GAAG,KAAK;AAC/B,IAAI,CAAC,MAAM;AACX,KAAK,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI;AAC3C,KAAK,IAAI,CAAC,MAAM,GAAG,KAAK;AACxB,IAAI;AACJ,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,GAAG,KAAK;AAC7B,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACrB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI;AAC5B,IAAI,IAAI,CAAC,KAAK,GAAG;AACjB,KAAK,IAAI,EAAE,CAAC;AACZ,KAAK,EAAE,EAAE;AACT,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI;AACrB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI;AACpB,GAAG;AACH,GAAG,OAAO,IAAI;AACd,EAAE;AACF,EAAE;AACF;AACA;AACA;AACA,SAAS,mCAAmC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;AAChE,CAAC,IAAI,eAAe,GAAG,IAAI;AAC3B,CAAC,IAAI,aAAa,GAAG,IAAI;AACzB,CAAC,IAAI,eAAe,GAAG,IAAI;AAC3B,CAAC,MAAM,kBAAkB,GAAG,MAAM;AAClC,EAAE,IAAI,aAAa,KAAK,IAAI,EAAE;AAC9B,GAAG,YAAY,CAAC,aAAa,CAAC;AAC9B,GAAG,aAAa,GAAG,IAAI;AACvB,EAAE;AACF,EAAE,eAAe,KAAK,IAAI,IAAI,eAAe,KAAK,MAAM,IAAI,eAAe,EAAE;AAC7E,EAAE,eAAe,GAAG,IAAI;AACxB,CAAC,CAAC;AACF,CAAC,MAAM,eAAe,GAAG,CAAC,KAAK,KAAK;AACpC,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AAClC,GAAG,eAAe,GAAG,OAAO;AAC5B,GAAG,aAAa,GAAG,UAAU,CAAC,MAAM;AACpC,IAAI,aAAa,GAAG,IAAI;AACxB,IAAI,MAAM,cAAc,GAAG,eAAe;AAC1C,IAAI,eAAe,GAAG,IAAI;AAC1B,IAAI,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,MAAM,IAAI,cAAc,EAAE;AAC5E,GAAG,CAAC,EAAE,KAAK,CAAC;AACZ,EAAE,CAAC,CAAC;AACJ,CAAC,CAAC;AACF,CAAC,MAAM,KAAK,GAAG,MAAM;AACrB,EAAE,eAAe,KAAK,IAAI,IAAI,eAAe,KAAK,MAAM,IAAI,eAAe,CAAC,KAAK,EAAE;AACnF,EAAE,kBAAkB,EAAE;AACtB,EAAE,eAAe,GAAG,IAAI;AACxB,CAAC,CAAC;AACF,CAAC,MAAM,KAAK,GAAG,OAAO,KAAK,EAAE,QAAQ,KAAK;AAC1C,EAAE,KAAK,EAAE;AACT,EAAE,eAAe,GAAG,IAAI,eAAe,EAAE;AACzC,EAAE,MAAM,UAAU,GAAG,eAAe;AACpC,EAAE,IAAI,QAAQ,GAAG,CAAC,EAAE,MAAM,eAAe,CAAC,QAAQ,CAAC;AACnD,EAAE,IAAI,eAAe,KAAK,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE;AAC/F,EAAE,IAAI;AACN,GAAG,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC;AAC9B,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,MAAM,EAAE,UAAU,CAAC;AACvB,IAAI,CAAC;AACL,GAAG,IAAI,eAAe,KAAK,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE;AAChG,GAAG,OAAO;AACV,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,KAAK,EAAE;AACX,IAAI;AACJ,EAAE,CAAC,CAAC,MAAM;AACV,GAAG,IAAI,eAAe,KAAK,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE;AAChG,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AAC7B,EAAE;AACF,CAAC,CAAC;AACF,CAAC,OAAO;AACR,EAAE,KAAK;AACP,EAAE;AACF,EAAE;AACF;AACA;AACA;AACA,SAAS,gCAAgC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;AACrG,CAAC,IAAI,gBAAgB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,oBAAoB;AACrF,CAAC,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC;AAC5B,EAAE,QAAQ,EAAE,CAAC,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,MAAM,IAAI,IAAI,gBAAgB,KAAK,MAAM,GAAG,gBAAgB,GAAG,CAAC;AACjH,EAAE,SAAS,EAAE,CAAC,iBAAiB,GAAG,QAAQ,CAAC,SAAS,MAAM,IAAI,IAAI,iBAAiB,KAAK,MAAM,GAAG,iBAAiB,GAAG;AACrH,EAAE,CAAC,CAAC;AACJ,CAAC,IAAI,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACpC,CAAC,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,MAAM,IAAI,CAAC,qBAAqB,GAAG,UAAU,CAAC,UAAU,MAAM,IAAI,IAAI,qBAAqB,KAAK,MAAM,GAAG,MAAM,GAAG,qBAAqB,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC;AACpO,CAAC,OAAO;AACR,EAAE,SAAS;AACX,EAAE,QAAQ,EAAE,CAAC,oBAAoB,GAAG,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,QAAQ,MAAM,IAAI,IAAI,oBAAoB,KAAK,MAAM,GAAG,oBAAoB,GAAG,UAAU;AAChM,EAAE;AACF,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,SAAS,gBAAgB,CAAC,SAAS,EAAE;AACrC,CAAC,IAAI,SAAS,YAAY,WAAW,EAAE,OAAO,SAAS;AACvD,CAAC,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,IAAI;AACxC,EAAE,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;AACjD,EAAE,IAAI,KAAK,EAAE,OAAO,KAAK;AACzB,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,QAAQ,CAAC,IAAI;AACtB,CAAC;AACD,CAAC,OAAO,QAAQ,CAAC,IAAI;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,qBAAqB,EAAE,OAAO,EAAE,EAAE;AAC9G,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE,KAAK;AACnC,EAAE,MAAM,SAAS,GAAG;AACpB,GAAG,qBAAqB,EAAE,MAAM;AAChC,IAAI,IAAI,iBAAiB;AACzB,IAAI,OAAO,CAAC,iBAAiB,GAAG,gBAAgB,EAAE,MAAM,IAAI,IAAI,iBAAiB,KAAK,MAAM,GAAG,iBAAiB,GAAG,IAAI,OAAO,EAAE;AAChI,GAAG,CAAC;AACJ,GAAG;AACH,GAAG;AACH,EAAE,IAAI,UAAU,GAAG,KAAK;AACxB,EAAE,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,WAAW;AAC1C,EAAE,IAAI,WAAW,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC;AACnE,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AAC3B,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AACtC,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,aAAa;AACtC,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,MAAM;AACvB,GAAG,eAAe,CAAC,SAAS,EAAE,OAAO,EAAE;AACvC,IAAI,SAAS,EAAE,MAAM,CAAC,SAAS;AAC/B,IAAI,QAAQ,EAAE,MAAM,CAAC,QAAQ;AAC7B,IAAI,UAAU,EAAE,MAAM,CAAC;AACvB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK;AAC9C,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE;AAC5B,KAAK,OAAO,CAAC,UAAU,CAAC;AACxB,MAAM,CAAC;AACP,MAAM,CAAC;AACP,MAAM,SAAS;AACf,MAAM;AACN,MAAM,CAAC;AACP,KAAK;AACL,IAAI;AACJ,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;AACjC,KAAK,QAAQ,EAAE,QAAQ;AACvB,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACnB,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACjB,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,KAAK,UAAU,GAAG,IAAI;AACtB,KAAK,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE;AAClC,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE,CAAC;AACH,EAAE,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC;AACtF,EAAE,IAAI,oBAAoB;AAC1B,EAAE,IAAI,qBAAqB,EAAE;AAC7B,GAAG,oBAAoB,GAAG,CAAC,KAAK,KAAK;AACrC,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AAC/B,IAAI,IAAI,EAAE,MAAM,YAAY,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAClG,IAAI,OAAO,EAAE;AACb,GAAG,CAAC;AACJ,GAAG,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,oBAAoB,EAAE,IAAI,CAAC;AACvE,EAAE;AACF,EAAE,OAAO,MAAM;AACf,GAAG,iBAAiB,EAAE;AACtB,GAAG,IAAI,oBAAoB,EAAE,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,oBAAoB,EAAE,IAAI,CAAC;AACpG,GAAG,IAAI,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE;AACpC,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,qBAAqB,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,EAAE;AACzO,CAAC,IAAI,KAAK;AACV,CAAC,MAAM,YAAY,GAAG,mCAAmC,CAAC;AAC1D,EAAE,MAAM;AACR,EAAE;AACF,EAAE,CAAC;AACH,CAAC,MAAM,gBAAgB,GAAG,gCAAgC,CAAC;AAC3D,EAAE,SAAS;AACX,EAAE,MAAM,EAAE,YAAY;AACtB,EAAE,IAAI;AACN,EAAE;AACF,EAAE,CAAC;AACH,CAAC,SAAS,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE;AACpD,EAAE,QAAQ,KAAK;AACf,GAAG,KAAK,SAAS;AACjB,IAAI,IAAI,iBAAiB;AACzB,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,MAAM,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,OAAO,MAAM,IAAI,IAAI,iBAAiB,KAAK,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAClL,IAAI;AACJ,GAAG,KAAK,SAAS;AACjB,IAAI,IAAI,kBAAkB;AAC1B,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,MAAM,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,QAAQ,MAAM,IAAI,IAAI,kBAAkB,KAAK,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AACtL,IAAI;AACJ,GAAG,KAAK,SAAS;AACjB,IAAI,IAAI,gBAAgB;AACxB,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,MAAM,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,MAAM,MAAM,IAAI,IAAI,gBAAgB,KAAK,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC9K;AACA,CAAC;AACD,CAAC,OAAO;AACR,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE,SAAS,KAAK;AACrC,GAAG,IAAI,qBAAqB,EAAE,qBAAqB;AACnD,GAAG,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC7C,GAAG,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9C,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;AACvB,GAAG,IAAI,YAAY,GAAG,IAAI;AAC1B,GAAG,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK;AACjD,GAAG,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;AAC9C,GAAG,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE;AAC9F,GAAG,MAAM,qBAAqB,GAAG,YAAY,IAAI,WAAW,IAAI,YAAY;AAC5E,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS;AAC5D,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS;AACjE,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,qBAAqB,EAAE,YAAY,GAAG,SAAS;AAC1E,QAAQ;AACR,GAAG,MAAM,KAAK,GAAG,YAAY,KAAK,SAAS,GAAG,IAAI,GAAG,IAAI;AACzD,GAAG,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,qBAAqB,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAChG,GAAG,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC;AACzD,GAAG,MAAM,qBAAqB,GAAG,cAAc,KAAK,CAAC,KAAK,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,cAAc,GAAG,KAAK,CAAC;AACrH,GAAG,MAAM,SAAS,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,KAAK,qBAAqB;AACxG,GAAG,KAAK,GAAG;AACX,IAAI,MAAM;AACV,IAAI,KAAK,EAAE,KAAK,CAAC,KAAK;AACtB,IAAI,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;AAC5B,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;AAC1B,IAAI,KAAK,EAAE,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,MAAM,GAAG,YAAY,GAAG,EAAE;AAC/E,IAAI,OAAO,EAAE,CAAC,YAAY,KAAK;AAC/B,KAAK,OAAO,OAAO,CAAC;AACpB,MAAM,MAAM;AACZ,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK;AACxB,MAAM,KAAK,EAAE;AACb,MAAM,CAAC;AACP,IAAI,CAAC;AACL,IAAI,cAAc;AAClB,IAAI,UAAU;AACd,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,SAAS;AACb,IAAI,MAAM,EAAE;AACZ,KAAK,QAAQ,EAAE,CAAC,qBAAqB,GAAG,YAAY,CAAC,QAAQ,MAAM,IAAI,IAAI,qBAAqB,KAAK,MAAM,GAAG,qBAAqB,GAAG,CAAC;AACvI,KAAK,SAAS,EAAE,CAAC,qBAAqB,GAAG,YAAY,CAAC,SAAS,MAAM,IAAI,IAAI,qBAAqB,KAAK,MAAM,GAAG,qBAAqB,GAAG;AACxI,KAAK;AACL,IAAI,SAAS;AACb,IAAI,IAAI;AACR,IAAI,UAAU,EAAE,gBAAgB;AAChC,IAAI,KAAK,EAAE,WAAW,CAAC;AACvB,KAAK,gBAAgB,EAAE,UAAU;AACjC,KAAK,cAAc,EAAE,IAAI,CAAC,GAAG;AAC7B,KAAK,MAAM,EAAE,gBAAgB;AAC7B,KAAK,SAAS;AACd,KAAK,qBAAqB;AAC1B,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI;AAC5C,KAAK;AACL,IAAI;AACJ,GAAG,IAAI,YAAY,KAAK,SAAS,EAAE;AACnC,IAAI,IAAI,qBAAqB;AAC7B,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,MAAM,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,aAAa,MAAM,IAAI,IAAI,qBAAqB,KAAK,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC5L,GAAG;AACH,GAAG,IAAI,YAAY,KAAK,SAAS,EAAE;AACnC,IAAI,IAAI,qBAAqB;AAC7B,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,MAAM,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,cAAc,MAAM,IAAI,IAAI,qBAAqB,KAAK,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC7L,GAAG;AACH,GAAG,IAAI,YAAY,KAAK,SAAS,EAAE,mBAAmB,CAAC,YAAY,EAAE,KAAK,CAAC;AAC3E,GAAG,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE;AACjE,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,KAAK,YAAY,CAAC,KAAK,EAAE;AACzB,KAAK,KAAK,GAAG;AACb,MAAM,GAAG,KAAK;AACd,MAAM,KAAK,EAAE,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,MAAM,GAAG,YAAY,GAAG,EAAE;AACjF,MAAM,OAAO,EAAE;AACf,MAAM;AACN,IAAI,CAAC,MAAM;AACX,KAAK,KAAK,GAAG;AACb,MAAM,GAAG,KAAK;AACd,MAAM,KAAK,EAAE,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,MAAM,GAAG,YAAY,GAAG,EAAE;AACjF,MAAM,OAAO,EAAE;AACf,MAAM;AACN,KAAK,YAAY,GAAG,SAAS;AAC7B,KAAK,mBAAmB,CAAC,YAAY,EAAE,KAAK,CAAC;AAC7C,KAAK,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,QAAQ,CAAC;AACzE,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;AACtC,KAAK,MAAM,kBAAkB,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9D,KAAK,IAAI,EAAE,kBAAkB,KAAK,IAAI,IAAI,kBAAkB,KAAK,MAAM,GAAG,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE;AAC/G,MAAM,YAAY,CAAC,KAAK,EAAE;AAC1B,MAAM;AACN,KAAK;AACL,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,UAAU,GAAG;AAC5C,MAAM,GAAG,KAAK;AACd,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK;AACzB,MAAM,OAAO,EAAE;AACf,MAAM,GAAG;AACT,MAAM,GAAG,KAAK;AACd,MAAM,OAAO,EAAE;AACf,MAAM;AACN,IAAI;AACJ,GAAG;AACH,GAAG,IAAI,YAAY,KAAK,SAAS,EAAE;AACnC,IAAI,YAAY,CAAC,KAAK,EAAE;AACxB,IAAI,mBAAmB,CAAC,YAAY,EAAE,KAAK,CAAC;AAC5C,IAAI,KAAK,GAAG,MAAM;AAClB,IAAI;AACJ,GAAG;AACH,GAAG,IAAI,YAAY,KAAK,SAAS,EAAE,mBAAmB,CAAC,YAAY,EAAE,KAAK,CAAC;AAC3E,EAAE,CAAC;AACH,EAAE,OAAO,EAAE,MAAM;AACjB,GAAG,IAAI,iBAAiB;AACxB,GAAG,YAAY,CAAC,KAAK,EAAE;AACvB,GAAG,IAAI,CAAC,KAAK,EAAE;AACf,GAAG,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,MAAM,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,MAAM,MAAM,IAAI,IAAI,iBAAiB,KAAK,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACxK,EAAE;AACF,EAAE;AACF;AACA;AACA;AACA,MAAM,mBAAmB,GAAG,IAAI,SAAS,CAAC,YAAY,CAAC;AACvD;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,EAAE,SAAS,GAAG,mBAAmB,EAAE,MAAM,EAAE,IAAI,GAAG,GAAG,EAAE,WAAW,GAAG,KAAK,EAAE,kBAAkB,GAAG,KAAK,EAAE,eAAe,GAAG,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE,aAAa,GAAG,MAAM,EAAE,eAAe,GAAG,YAAY,EAAE,iBAAiB,GAAG,EAAE,EAAE,oBAAoB,GAAG,UAAU,EAAE,OAAO,GAAG,MAAM,IAAI,EAAE,KAAK,GAAG,MAAM,EAAE,EAAE,cAAc,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,YAAY,EAAE,SAAS,GAAG,cAAc,EAAE,MAAM,EAAE,YAAY,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,UAAU,EAAE,qBAAqB,GAAG,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,IAAI,EAAE,mBAAmB,EAAE,qBAAqB,GAAG,mBAAmB,EAAE,UAAU,EAAE,oBAAoB,EAAE,EAAE;AAC7nB,CAAC,MAAM,QAAQ,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE;AAC1E,CAAC,MAAM,oBAAoB,GAAG,WAAW,IAAI,CAAC,kBAAkB;AAChE,CAAC,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,cAAc,KAAK,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,CAAC;AACzG,CAAC,SAAS,qBAAqB,CAAC,KAAK,EAAE;AACvC,EAAE,OAAO,mBAAmB,CAAC;AAC7B,GAAG,GAAG,KAAK;AACX,GAAG,MAAM;AACT,GAAG,oBAAoB;AACvB,GAAG;AACH,GAAG,CAAC;AACJ,CAAC;AACD,CAAC,MAAM,cAAc,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC;AAC/C,EAAE,IAAI;AACN,EAAE,YAAY,EAAE;AAChB,EAAE,CAAC;AACH,CAAC,OAAO,IAAI,MAAM,CAAC;AACnB,EAAE,GAAG,EAAE,SAAS;AAChB,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACnC,GAAG,MAAM;AACT,GAAG,SAAS;AACZ,GAAG,KAAK;AACR,GAAG,QAAQ;AACX,GAAG,cAAc;AACjB,GAAG,QAAQ;AACX,GAAG,YAAY;AACf,GAAG,SAAS;AACZ,GAAG,MAAM,EAAE,YAAY;AACvB,GAAG,SAAS;AACZ,GAAG,IAAI;AACP,GAAG,UAAU;AACb,GAAG,qBAAqB;AACxB,GAAG,OAAO;AACV,GAAG,aAAa,EAAE,eAAe;AACjC,GAAG,YAAY,EAAE;AACjB,GAAG,CAAC;AACJ,EAAE,KAAK,EAAE,qBAAqB,CAAC;AAC/B,GAAG,MAAM;AACT,GAAG,IAAI;AACP,GAAG,oBAAoB;AACvB,GAAG,kBAAkB;AACrB,GAAG,eAAe;AAClB,GAAG,WAAW;AACd,GAAG,mBAAmB,EAAE,qBAAqB;AAC7C,GAAG,KAAK;AACR,GAAG,UAAU;AACb,GAAG,mBAAmB,EAAE,qBAAqB;AAC7C,GAAG;AACH,GAAG,CAAC;AACJ,EAAE,KAAK,EAAE,qBAAqB,CAAC;AAC/B,GAAG,SAAS;AACZ,GAAG,aAAa;AAChB,GAAG,eAAe;AAClB,GAAG,iBAAiB;AACpB,GAAG,oBAAoB;AACvB,GAAG,QAAQ;AACX,GAAG,YAAY,EAAE;AACjB,GAAG;AACH,EAAE,CAAC;AACH;AAUA;AACA;AACG,IAACA,aAAW,GAAG;;AC5oBlB,IAAI8J,WAAS,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,CAAC,YAAY;AACzD,IAAI,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AACxC,QAAQ,aAAa,GAAG,MAAM,CAAC,cAAc;AAC7C,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxF,YAAY,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7G,QAAQ,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;AAClC,IAAI,CAAC;AACL,IAAI,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;AAC3B,QAAQ,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,QAAQ,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;AAC9C,QAAQ,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;AAC5F,IAAI,CAAC;AACL,CAAC,GAAG;AACJ,IAAIC,UAAQ,GAAG,CAACD,SAAI,IAAIA,SAAI,CAAC,QAAQ,KAAK,YAAY;AACtD,IAAIC,UAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE;AAC5C,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7D,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AAC5B,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3E,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3B,QAAQ;AACR,QAAQ,OAAO,CAAC;AAChB,IAAI,CAAC;AACL,IAAI,OAAOA,UAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC;AAC1C,CAAC;AAED,IAAI,WAAW,GAAG;AAClB,IAAI,KAAK,EAAE,MAAM;AACjB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,IAAI,EAAE,KAAK;AACf,IAAI,MAAM,EAAE,YAAY;AACxB,CAAC;AACD,IAAI,WAAW,GAAG;AAClB,IAAI,KAAK,EAAE,MAAM;AACjB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,IAAI,EAAE,KAAK;AACf,IAAI,MAAM,EAAE,YAAY;AACxB,CAAC;AACD,IAAI,QAAQ,GAAG;AACf,IAAI,KAAK,EAAE,MAAM;AACjB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,QAAQ,EAAE,UAAU;AACxB,CAAC;AACD,IAAI,MAAM,GAAG;AACb,IAAI,GAAG,EAAEA,UAAQ,CAACA,UAAQ,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AAC7D,IAAI,KAAK,EAAEA,UAAQ,CAACA,UAAQ,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAClF,IAAI,MAAM,EAAEA,UAAQ,CAACA,UAAQ,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACnF,IAAI,IAAI,EAAEA,UAAQ,CAACA,UAAQ,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC/D,IAAI,QAAQ,EAAEA,UAAQ,CAACA,UAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AACrG,IAAI,WAAW,EAAEA,UAAQ,CAACA,UAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AAC3G,IAAI,UAAU,EAAEA,UAAQ,CAACA,UAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AACzG,IAAI,OAAO,EAAEA,UAAQ,CAACA,UAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AACnG,CAAC;AACD,IAAI,OAAO,kBAAkB,UAAU,MAAM,EAAE;AAC/C,IAAIF,WAAS,CAAC,OAAO,EAAE,MAAM,CAAC;AAC9B,IAAI,SAAS,OAAO,GAAG;AACvB,QAAQ,IAAI,KAAK,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI;AAC5E,QAAQ,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC,EAAE;AACzC,YAAY,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;AAC/D,QAAQ,CAAC;AACT,QAAQ,KAAK,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE;AAC1C,YAAY,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;AAC/D,QAAQ,CAAC;AACT,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AAC3C,QAAQ,QAAQ,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE,KAAK,EAAEE,UAAQ,CAACA,UAAQ,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AACnT,IAAI,CAAC;AACL,IAAI,OAAO,OAAO;AAClB,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;;ACtEvB,IAAI,SAAS,GAAG,CAACD,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,CAAC,YAAY;AACzD,IAAI,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AACxC,QAAQ,aAAa,GAAG,MAAM,CAAC,cAAc;AAC7C,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxF,YAAY,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7G,QAAQ,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;AAClC,IAAI,CAAC;AACL,IAAI,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE;AAC3B,QAAQ,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,QAAQ,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;AAC9C,QAAQ,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;AAC5F,IAAI,CAAC;AACL,CAAC,GAAG;AACJ,IAAI,QAAQ,GAAG,CAACA,SAAI,IAAIA,SAAI,CAAC,QAAQ,KAAK,YAAY;AACtD,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE;AAC5C,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7D,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AAC5B,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3E,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3B,QAAQ;AACR,QAAQ,OAAO,CAAC;AAChB,IAAI,CAAC;AACL,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC;AAC1C,CAAC;AAID,IAAI,YAAY,GAAG;AACnB,IAAI,KAAK,EAAE,MAAM;AACjB,IAAI,MAAM,EAAE,MAAM;AAClB,CAAC;AACD,IAAI,KAAK,GAAG,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9E,IAAI,IAAI,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACrE,IAAI,YAAY,GAAG,UAAU,GAAG,EAAE,MAAM,EAAE;AAC1C,IAAI,OAAO,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5C,CAAC;AACD;AACA,IAAI,YAAY,GAAG,UAAU,KAAK,EAAE;AACpC,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;AACzD,CAAC;AACD,IAAI,YAAY,GAAG,UAAU,KAAK,EAAE;AACpC,IAAI,OAAO,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC;AACxD,SAAS,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC;AACD,IAAI,eAAe,GAAG,UAAU,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE;AACvD,IAAI,IAAI,OAAO,KAAK,MAAM,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;AAC3C,IAAI,IAAI,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3J,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AACtD,IAAI,OAAO,OAAO,KAAK,CAAC,IAAI,GAAG,GAAG,OAAO,GAAG,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC;AAC1E,CAAC;AACD,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE;AACjC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;AACpB,IAAI,IAAI,CAAC,KAAK,MAAM,EAAE;AACtB,QAAQ,OAAO,CAAC;AAChB,IAAI;AACJ,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC1B,QAAQ,OAAO,CAAC;AAChB,IAAI;AACJ,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACzB,QAAQ,OAAO,CAAC;AAChB,IAAI;AACJ,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC1B,QAAQ,OAAO,CAAC;AAChB,IAAI;AACJ,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC1B,QAAQ,OAAO,CAAC;AAChB,IAAI;AACJ,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC5B,QAAQ,OAAO,CAAC;AAChB,IAAI;AACJ,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC5B,QAAQ,OAAO,CAAC;AAChB,IAAI;AACJ,IAAI,OAAO,CAAC,GAAG,IAAI;AACnB,CAAC;AACD,IAAI,YAAY,GAAG,UAAU,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE;AACxE,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC1C,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACjC,YAAY,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACjD,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAChC,YAAY,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG;AAC3D,YAAY,OAAO,UAAU,GAAG,KAAK;AACrC,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACjC,YAAY,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG;AAC5D,YAAY,OAAO,UAAU,GAAG,KAAK;AACrC,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACjC,YAAY,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG;AAC5D,YAAY,OAAO,WAAW,GAAG,KAAK;AACtC,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,IAAI;AACf,CAAC;AACD,IAAI,eAAe,GAAG,UAAU,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE;AAC/G,IAAI,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC;AAChF,IAAI,SAAS,GAAG,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC;AACnF,IAAI,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC;AAChF,IAAI,SAAS,GAAG,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC;AACnF,IAAI,OAAO;AACX,QAAQ,QAAQ,EAAE,OAAO,QAAQ,KAAK,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAChF,QAAQ,SAAS,EAAE,OAAO,SAAS,KAAK,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACnF,QAAQ,QAAQ,EAAE,OAAO,QAAQ,KAAK,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAChF,QAAQ,SAAS,EAAE,OAAO,SAAS,KAAK,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACnF,KAAK;AACL,CAAC;AACD,IAAI,YAAY,GAAG;AACnB,IAAI,IAAI;AACR,IAAI,OAAO;AACX,IAAI,WAAW;AACf,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,mBAAmB;AACvB,IAAI,MAAM;AACV,IAAI,aAAa;AACjB,IAAI,UAAU;AACd,IAAI,WAAW;AACf,IAAI,UAAU;AACd,IAAI,WAAW;AACf,IAAI,iBAAiB;AACrB,IAAI,2BAA2B;AAC/B,IAAI,4BAA4B;AAChC,IAAI,QAAQ;AACZ,IAAI,cAAc;AAClB,IAAI,eAAe;AACnB,IAAI,oBAAoB;AACxB,IAAI,oBAAoB;AACxB,IAAI,UAAU;AACd,IAAI,eAAe;AACnB,IAAI,UAAU;AACd,IAAI,cAAc;AAClB,IAAI,iBAAiB;AACrB,IAAI,OAAO;AACX,IAAI,aAAa;AACjB,IAAI,SAAS;AACb,CAAC;AACD;AACA,IAAI,aAAa,GAAG,oBAAoB;AACrC,IAAC,SAAS,kBAAkB,UAAU,MAAM,EAAE;AACjD,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;AAChC,IAAI,SAAS,SAAS,CAAC,KAAK,EAAE;AAC9B,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI;AACpD,QAAQ,KAAK,CAAC,KAAK,GAAG,CAAC;AACvB,QAAQ,KAAK,CAAC,SAAS,GAAG,IAAI;AAC9B;AACA,QAAQ,KAAK,CAAC,UAAU,GAAG,CAAC;AAC5B,QAAQ,KAAK,CAAC,SAAS,GAAG,CAAC;AAC3B;AACA,QAAQ,KAAK,CAAC,aAAa,GAAG,CAAC;AAC/B,QAAQ,KAAK,CAAC,cAAc,GAAG,CAAC;AAChC,QAAQ,KAAK,CAAC,YAAY,GAAG,CAAC;AAC9B,QAAQ,KAAK,CAAC,eAAe,GAAG,CAAC;AACjC;AACA,QAAQ,KAAK,CAAC,UAAU,GAAG,CAAC;AAC5B,QAAQ,KAAK,CAAC,SAAS,GAAG,CAAC;AAC3B,QAAQ,KAAK,CAAC,UAAU,GAAG,YAAY;AACvC,YAAY,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACnD,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ,YAAY,IAAI,MAAM,GAAG,KAAK,CAAC,UAAU;AACzC,YAAY,IAAI,CAAC,MAAM,EAAE;AACzB,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ,YAAY,IAAI,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACpE,YAAY,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM;AACxC,YAAY,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;AACzC,YAAY,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;AAC/C,YAAY,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,aAAa;AACnD,YAAY,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG;AACpC,YAAY,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU;AAC3C,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE;AACnC,gBAAgB,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC;AACpD,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,OAAO,CAAC,SAAS,IAAI,aAAa;AAClD,YAAY;AACZ,YAAY,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;AACvC,YAAY,OAAO,OAAO;AAC1B,QAAQ,CAAC;AACT,QAAQ,KAAK,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAI,MAAM,GAAG,KAAK,CAAC,UAAU;AACzC,YAAY,IAAI,CAAC,MAAM,EAAE;AACzB,gBAAgB;AAChB,YAAY;AACZ,YAAY,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;AACpC,QAAQ,CAAC;AACT,QAAQ,KAAK,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE;AACjC,YAAY,IAAI,CAAC,EAAE;AACnB,gBAAgB,KAAK,CAAC,SAAS,GAAG,CAAC;AACnC,YAAY;AACZ,QAAQ,CAAC;AACT,QAAQ,KAAK,CAAC,KAAK,GAAG;AACtB,YAAY,UAAU,EAAE,KAAK;AAC7B,YAAY,KAAK,EAAE,QAAQ,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK;AACzE,kBAAkB;AAClB,kBAAkB,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK;AAC1D,YAAY,MAAM,EAAE,QAAQ,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK;AAC3E,kBAAkB;AAClB,kBAAkB,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM;AAC3D,YAAY,SAAS,EAAE,OAAO;AAC9B,YAAY,QAAQ,EAAE;AACtB,gBAAgB,CAAC,EAAE,CAAC;AACpB,gBAAgB,CAAC,EAAE,CAAC;AACpB,gBAAgB,KAAK,EAAE,CAAC;AACxB,gBAAgB,MAAM,EAAE,CAAC;AACzB,aAAa;AACb,YAAY,eAAe,EAAE;AAC7B,gBAAgB,MAAM,EAAE,MAAM;AAC9B,gBAAgB,KAAK,EAAE,MAAM;AAC7B,gBAAgB,eAAe,EAAE,eAAe;AAChD,gBAAgB,MAAM,EAAE,MAAM;AAC9B,gBAAgB,OAAO,EAAE,CAAC;AAC1B,gBAAgB,QAAQ,EAAE,OAAO;AACjC,gBAAgB,MAAM,EAAE,IAAI;AAC5B,gBAAgB,GAAG,EAAE,GAAG;AACxB,gBAAgB,IAAI,EAAE,GAAG;AACzB,gBAAgB,MAAM,EAAE,GAAG;AAC3B,gBAAgB,KAAK,EAAE,GAAG;AAC1B,aAAa;AACb,YAAY,SAAS,EAAE,SAAS;AAChC,SAAS;AACT,QAAQ,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7D,QAAQ,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AACzD,QAAQ,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AACrD,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,YAAY,EAAE;AAC7D,QAAQ,GAAG,EAAE,YAAY;AACzB,YAAY,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACjC,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ,YAAY,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU;AAC5C,QAAQ,CAAC;AACT,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,YAAY,EAAE;AACtB,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE;AACzD,QAAQ,GAAG,EAAE,YAAY;AACzB,YAAY,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACjC,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ,YAAY,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;AAC/C,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ,YAAY,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,WAAW;AAC3D,QAAQ,CAAC;AACT,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,YAAY,EAAE;AACtB,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW,EAAE;AAC5D,QAAQ,GAAG,EAAE,YAAY;AACzB,YAAY,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,YAAY;AAC5E,QAAQ,CAAC;AACT,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,YAAY,EAAE;AACtB,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE;AACvD,QAAQ,GAAG,EAAE,YAAY;AACzB,YAAY,IAAI,KAAK,GAAG,CAAC;AACzB,YAAY,IAAI,MAAM,GAAG,CAAC;AAC1B,YAAY,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE;AAC/C,gBAAgB,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW;AACzD,gBAAgB,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY;AAC3D;AACA;AACA,gBAAgB,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ;AAC/D,gBAAgB,IAAI,WAAW,KAAK,UAAU,EAAE;AAChD,oBAAoB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;AAC9D,gBAAgB;AAChB;AACA,gBAAgB,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,QAAQ;AACrG,gBAAgB,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS;AACzG;AACA,gBAAgB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,WAAW;AAC3D,YAAY;AACZ,YAAY,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;AACnD,QAAQ,CAAC;AACT,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,YAAY,EAAE;AACtB,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW,EAAE;AAC5D,QAAQ,GAAG,EAAE,YAAY;AACzB,YAAY,IAAI,KAAK,GAAG,IAAI;AAC5B,YAAY,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI;AACtC,YAAY,IAAI,OAAO,GAAG,UAAU,GAAG,EAAE;AACzC,gBAAgB,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE;AAC5F,oBAAoB,OAAO,MAAM;AACjC,gBAAgB;AAChB,gBAAgB,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC9G,oBAAoB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACnE,wBAAwB,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;AAC1D,oBAAoB;AACpB,oBAAoB,IAAI,UAAU,GAAG,KAAK,CAAC,aAAa,EAAE;AAC1D,oBAAoB,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACrF,oBAAoB,IAAI,OAAO,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG;AACjE,oBAAoB,OAAO,OAAO,GAAG,GAAG;AACxC,gBAAgB;AAChB,gBAAgB,OAAO,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtD,YAAY,CAAC;AACb,YAAY,IAAI,KAAK,GAAG,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACjF,kBAAkB,aAAa,CAAC,IAAI,CAAC,KAAK;AAC1C,kBAAkB,OAAO,CAAC,OAAO,CAAC;AAClC,YAAY,IAAI,MAAM,GAAG,IAAI,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACnF,kBAAkB,aAAa,CAAC,IAAI,CAAC,MAAM;AAC3C,kBAAkB,OAAO,CAAC,QAAQ,CAAC;AACnC,YAAY,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;AACnD,QAAQ,CAAC;AACT,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,YAAY,EAAE;AACtB,KAAK,CAAC;AACN,IAAI,SAAS,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;AACpD,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC9B,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC9B,gBAAgB,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;AAC9C,YAAY;AACZ,YAAY,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AACrF,QAAQ;AACR,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;AACpC,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;AAC1C,QAAQ;AACR;AACA,QAAQ,IAAI,WAAW,GAAG,KAAK;AAC/B,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ;AACjD,QAAQ,IAAI,IAAI,KAAK,MAAM,EAAE;AAC7B,YAAY,WAAW,GAAG,IAAI;AAC9B,YAAY,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM;AACnD;AACA,QAAQ;AACR,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;AACxC,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM;AACpC,QAAQ,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM;AACrC,QAAQ,IAAI,IAAI,GAAG;AACnB,YAAY,KAAK,EAAE,IAAI,CAAC,WAAW;AACnC,YAAY,MAAM,EAAE,IAAI,CAAC,YAAY;AACrC,SAAS;AACT,QAAQ,IAAI,WAAW,EAAE;AACzB,YAAY,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI;AACjD,QAAQ;AACR,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAC7B,QAAQ,OAAO,IAAI;AACnB,IAAI,CAAC;AACL,IAAI,SAAS,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY;AACjD,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,YAAY,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC;AACnE,YAAY,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;AACvE,YAAY,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC;AACtE,YAAY,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AACxE,gBAAgB,OAAO,EAAE,IAAI;AAC7B,gBAAgB,OAAO,EAAE,KAAK;AAC9B,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC;AACpE,QAAQ;AACR,IAAI,CAAC;AACL,IAAI,SAAS,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;AACnD,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,YAAY,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC;AACtE,YAAY,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;AAC1E,YAAY,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC;AACzE,YAAY,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;AAChF,YAAY,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC;AACvE,QAAQ;AACR,IAAI,CAAC;AACL,IAAI,SAAS,CAAC,SAAS,CAAC,iBAAiB,GAAG,YAAY;AACxD,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC7C,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;AACxE,QAAQ,IAAI,CAAC,QAAQ,CAAC;AACtB,YAAY,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK;AACtD,YAAY,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM;AACzD,YAAY,SAAS,EAAE,aAAa,CAAC,SAAS,KAAK,MAAM,GAAG,aAAa,CAAC,SAAS,GAAG,SAAS;AAC/F,SAAS,CAAC;AACV,IAAI,CAAC;AACL,IAAI,SAAS,CAAC,SAAS,CAAC,oBAAoB,GAAG,YAAY;AAC3D,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,YAAY,IAAI,CAAC,YAAY,EAAE;AAC/B,QAAQ;AACR,IAAI,CAAC;AACL,IAAI,SAAS,CAAC,SAAS,CAAC,wBAAwB,GAAG,UAAU,OAAO,EAAE,IAAI,EAAE;AAC5E,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC9D,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM;AAC1C,YAAY,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,OAAO;AACjD,aAAa,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,MAAM;AACrE,cAAc;AACd,cAAc,OAAO;AACrB,IAAI,CAAC;AACL,IAAI,SAAS,CAAC,SAAS,CAAC,2BAA2B,GAAG,UAAU,QAAQ,EAAE,SAAS,EAAE;AACrF,QAAQ,IAAI,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB;AAC5D,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS;AAC5C,QAAQ,IAAI,gBAAgB,GAAG,iBAAiB,IAAI,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC;AACnF,QAAQ,IAAI,iBAAiB,GAAG,iBAAiB,IAAI,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;AACnF,QAAQ,IAAI,UAAU;AACtB,QAAQ,IAAI,WAAW;AACvB,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC5C,YAAY,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU;AAC1C,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,UAAU,GAAG;AAC7B,sBAAsB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACjD,sBAAsB,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;AACnF,gBAAgB,WAAW,GAAG;AAC9B,sBAAsB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAClD,sBAAsB,QAAQ,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;AAClF,YAAY;AACZ,QAAQ;AACR,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE;AACjD,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE;AAC7B,gBAAgB,UAAU,GAAG,gBAAgB,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa;AACjH,gBAAgB,WAAW,GAAG,iBAAiB,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY;AACpH,YAAY;AACZ,QAAQ;AACR,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACpC,YAAY,UAAU,GAAG;AACzB,kBAAkB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC7C,kBAAkB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;AACxF,YAAY,WAAW,GAAG;AAC1B,kBAAkB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC9C,kBAAkB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;AACvF,QAAQ;AACR,QAAQ,IAAI,UAAU,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACvD,YAAY,QAAQ,GAAG,QAAQ,IAAI,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU;AAChF,QAAQ;AACR,QAAQ,IAAI,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AACzD,YAAY,SAAS,GAAG,SAAS,IAAI,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW;AACtF,QAAQ;AACR,QAAQ,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE;AAC3D,IAAI,CAAC;AACL,IAAI,SAAS,CAAC,SAAS,CAAC,6BAA6B,GAAG,UAAU,OAAO,EAAE,OAAO,EAAE;AACpF,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AACzC,QAAQ,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC;AACrD,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,SAAS,EAAE,QAAQ,GAAG,EAAE,CAAC,QAAQ;AAC7E,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,EAAE,CAAC,eAAe,EAAE,0BAA0B,GAAG,EAAE,CAAC,0BAA0B,EAAE,yBAAyB,GAAG,EAAE,CAAC,yBAAyB;AACvL,QAAQ,IAAI,QAAQ,GAAG,QAAQ,CAAC,KAAK;AACrC,QAAQ,IAAI,SAAS,GAAG,QAAQ,CAAC,MAAM;AACvC,QAAQ,IAAI,WAAW,GAAG,0BAA0B,IAAI,CAAC;AACzD,QAAQ,IAAI,UAAU,GAAG,yBAAyB,IAAI,CAAC;AACvD,QAAQ,IAAI,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE;AAC9C,YAAY,QAAQ,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC,IAAI,WAAW,IAAI,KAAK;AACtF,YAAY,IAAI,eAAe,EAAE;AACjC,gBAAgB,SAAS,GAAG,CAAC,QAAQ,GAAG,UAAU,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW;AAC9E,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;AAC7C,YAAY,QAAQ,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC,IAAI,WAAW,IAAI,KAAK;AACtF,YAAY,IAAI,eAAe,EAAE;AACjC,gBAAgB,SAAS,GAAG,CAAC,QAAQ,GAAG,UAAU,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW;AAC9E,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE;AAC/C,YAAY,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC,IAAI,WAAW,IAAI,KAAK;AACxF,YAAY,IAAI,eAAe,EAAE;AACjC,gBAAgB,QAAQ,GAAG,CAAC,SAAS,GAAG,WAAW,IAAI,IAAI,CAAC,KAAK,GAAG,UAAU;AAC9E,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE;AAC5C,YAAY,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC,IAAI,WAAW,IAAI,KAAK;AACxF,YAAY,IAAI,eAAe,EAAE;AACjC,gBAAgB,QAAQ,GAAG,CAAC,SAAS,GAAG,WAAW,IAAI,IAAI,CAAC,KAAK,GAAG,UAAU;AAC9E,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE;AAC3D,IAAI,CAAC;AACL,IAAI,SAAS,CAAC,SAAS,CAAC,+BAA+B,GAAG,UAAU,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE;AACnG,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,EAAE,CAAC,eAAe,EAAE,0BAA0B,GAAG,EAAE,CAAC,0BAA0B,EAAE,yBAAyB,GAAG,EAAE,CAAC,yBAAyB;AACvL,QAAQ,IAAI,gBAAgB,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,WAAW,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK;AAChF,QAAQ,IAAI,gBAAgB,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,WAAW,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,QAAQ,GAAG,GAAG,CAAC,KAAK;AACvG,QAAQ,IAAI,iBAAiB,GAAG,OAAO,GAAG,CAAC,MAAM,KAAK,WAAW,GAAG,EAAE,GAAG,GAAG,CAAC,MAAM;AACnF,QAAQ,IAAI,iBAAiB,GAAG,OAAO,GAAG,CAAC,MAAM,KAAK,WAAW,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,GAAG,GAAG,CAAC,MAAM;AAC5G,QAAQ,IAAI,WAAW,GAAG,0BAA0B,IAAI,CAAC;AACzD,QAAQ,IAAI,UAAU,GAAG,yBAAyB,IAAI,CAAC;AACvD,QAAQ,IAAI,eAAe,EAAE;AAC7B,YAAY,IAAI,aAAa,GAAG,CAAC,iBAAiB,GAAG,WAAW,IAAI,IAAI,CAAC,KAAK,GAAG,UAAU;AAC3F,YAAY,IAAI,aAAa,GAAG,CAAC,iBAAiB,GAAG,WAAW,IAAI,IAAI,CAAC,KAAK,GAAG,UAAU;AAC3F,YAAY,IAAI,cAAc,GAAG,CAAC,gBAAgB,GAAG,UAAU,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW;AAC3F,YAAY,IAAI,cAAc,GAAG,CAAC,gBAAgB,GAAG,UAAU,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW;AAC3F,YAAY,IAAI,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,aAAa,CAAC;AAC1E,YAAY,IAAI,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,aAAa,CAAC;AAC1E,YAAY,IAAI,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,cAAc,CAAC;AAC7E,YAAY,IAAI,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,cAAc,CAAC;AAC7E,YAAY,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,cAAc,CAAC;AACtE,YAAY,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE,eAAe,EAAE,eAAe,CAAC;AAC1E,QAAQ;AACR,aAAa;AACb,YAAY,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;AAC1E,YAAY,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE,iBAAiB,EAAE,iBAAiB,CAAC;AAC9E,QAAQ;AACR,QAAQ,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE;AAC3D,IAAI,CAAC;AACL,IAAI,SAAS,CAAC,SAAS,CAAC,qBAAqB,GAAG,YAAY;AAC5D;AACA,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC5C,YAAY,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU;AAC1C,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,IAAI,UAAU,GAAG,QAAQ,CAAC,qBAAqB,EAAE;AACjE,gBAAgB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI;AACjD,gBAAgB,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG;AAC/C,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE;AACxE,YAAY,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,EAAE;AACtE,YAAY,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI;AAC7C,YAAY,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG;AAC3C,QAAQ;AACR;AACA,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;AAC5B,YAAY,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC,MAAM;AACjI,YAAY,IAAI,CAAC,aAAa,GAAG,IAAI;AACrC,YAAY,IAAI,CAAC,cAAc,GAAG,KAAK;AACvC,YAAY,IAAI,CAAC,YAAY,GAAG,KAAK;AACrC,YAAY,IAAI,CAAC,eAAe,GAAG,MAAM;AACzC,QAAQ;AACR,IAAI,CAAC;AACL,IAAI,SAAS,CAAC,SAAS,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE,SAAS,EAAE;AACpE,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC7C,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,OAAO,GAAG,CAAC;AACvB,QAAQ,IAAI,OAAO,GAAG,CAAC;AACvB,QAAQ,IAAI,KAAK,CAAC,WAAW,IAAI,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;AAClE,YAAY,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO;AAC/C,YAAY,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO;AAC/C,QAAQ;AACR,aAAa,IAAI,KAAK,CAAC,WAAW,IAAI,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;AACvE,YAAY,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;AAC1D,YAAY,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;AAC1D,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;AACtC,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE;AAChC,gBAAgB,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC;AAC5F,gBAAgB,IAAI,WAAW,KAAK,KAAK,EAAE;AAC3C,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AAC7B,YAAY,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC/G,gBAAgB,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACjE,YAAY;AACZ,YAAY,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AAC5G,gBAAgB,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAC/D,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,CAAC,KAAK;AAClB,YAAY,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;AAC5H,QAAQ,IAAI,SAAS;AACrB,QAAQ,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;AACxE,QAAQ,IAAI,aAAa,CAAC,SAAS,KAAK,MAAM,EAAE;AAChD,YAAY,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU;AAC1C,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,aAAa;AAC9E,gBAAgB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,QAAQ;AACvE,gBAAgB,SAAS,GAAG,aAAa,CAAC,SAAS;AACnD,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,CAAC,qBAAqB,EAAE;AACpC,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,QAAQ,IAAI,KAAK,GAAG;AACpB,YAAY,QAAQ,EAAE;AACtB,gBAAgB,CAAC,EAAE,OAAO;AAC1B,gBAAgB,CAAC,EAAE,OAAO;AAC1B,gBAAgB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;AACtC,gBAAgB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;AACxC,aAAa;AACb,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,eAAe,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;AACxJ,YAAY,SAAS,EAAE,SAAS;AAChC,YAAY,SAAS,EAAE,SAAS;AAChC,SAAS;AACT,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC5B,IAAI,CAAC;AACL,IAAI,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,KAAK,EAAE;AACvD,QAAQ,IAAI,KAAK,GAAG,IAAI;AACxB,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACvE,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;AAC3D,YAAY,IAAI;AAChB,gBAAgB,KAAK,CAAC,cAAc,EAAE;AACtC,gBAAgB,KAAK,CAAC,eAAe,EAAE;AACvC,YAAY;AACZ,YAAY,OAAO,CAAC,EAAE;AACtB;AACA,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,SAAS,GAAG,EAAE,CAAC,SAAS,EAAE,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,SAAS,GAAG,EAAE,CAAC,SAAS;AAC/H,QAAQ,IAAI,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AACpF,QAAQ,IAAI,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AACpF,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,SAAS,EAAE,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC,MAAM;AACnH,QAAQ,IAAI,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AAC7C,QAAQ,IAAI,GAAG,GAAG,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;AACxI,QAAQ,QAAQ,GAAG,GAAG,CAAC,QAAQ;AAC/B,QAAQ,SAAS,GAAG,GAAG,CAAC,SAAS;AACjC,QAAQ,QAAQ,GAAG,GAAG,CAAC,QAAQ;AAC/B,QAAQ,SAAS,GAAG,GAAG,CAAC,SAAS;AACjC;AACA,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,6BAA6B,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,SAAS,GAAG,EAAE,CAAC,SAAS,EAAE,QAAQ,GAAG,EAAE,CAAC,QAAQ;AACvH;AACA,QAAQ,IAAI,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,SAAS,CAAC;AAC/E,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;AAClD,YAAY,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AACvF,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;AAClD,YAAY,SAAS,GAAG,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AACzF,QAAQ;AACR;AACA,QAAQ,IAAI,OAAO,GAAG,IAAI,CAAC,+BAA+B,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACvL,QAAQ,QAAQ,GAAG,OAAO,CAAC,QAAQ;AACnC,QAAQ,SAAS,GAAG,OAAO,CAAC,SAAS;AACrC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AAC7B,YAAY,IAAI,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjE,YAAY,IAAI,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnE,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC;AAC7C,YAAY,QAAQ,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC,IAAI,GAAG,GAAG,YAAY,GAAG,QAAQ;AACtG,YAAY,SAAS,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,SAAS,CAAC,IAAI,GAAG,GAAG,aAAa,GAAG,SAAS;AAC3G,QAAQ;AACR,QAAQ,IAAI,KAAK,GAAG;AACpB,YAAY,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC,KAAK;AAC5C,YAAY,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC,MAAM;AAC/C,SAAS;AACT,QAAQ,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAChD,YAAY,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACrC,gBAAgB,IAAI,OAAO,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC,KAAK,IAAI,GAAG;AACjE,gBAAgB,QAAQ,GAAG,OAAO,GAAG,GAAG;AACxC,YAAY;AACZ,iBAAiB,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC3C,gBAAgB,IAAI,EAAE,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG;AAClE,gBAAgB,QAAQ,GAAG,EAAE,GAAG,IAAI;AACpC,YAAY;AACZ,iBAAiB,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC3C,gBAAgB,IAAI,EAAE,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,GAAG;AACnE,gBAAgB,QAAQ,GAAG,EAAE,GAAG,IAAI;AACpC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAClD,YAAY,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACtC,gBAAgB,IAAI,OAAO,GAAG,CAAC,SAAS,GAAG,UAAU,CAAC,MAAM,IAAI,GAAG;AACnE,gBAAgB,SAAS,GAAG,OAAO,GAAG,GAAG;AACzC,YAAY;AACZ,iBAAiB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC5C,gBAAgB,IAAI,EAAE,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG;AACnE,gBAAgB,SAAS,GAAG,EAAE,GAAG,IAAI;AACrC,YAAY;AACZ,iBAAiB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC5C,gBAAgB,IAAI,EAAE,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,GAAG;AACpE,gBAAgB,SAAS,GAAG,EAAE,GAAG,IAAI;AACrC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,QAAQ,GAAG;AACvB,YAAY,KAAK,EAAE,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC;AACnE,YAAY,MAAM,EAAE,IAAI,CAAC,wBAAwB,CAAC,SAAS,EAAE,QAAQ,CAAC;AACtE,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;AACpC,YAAY,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK;AAC/C,QAAQ;AACR,aAAa,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE;AAC5C,YAAY,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM;AAChD,QAAQ;AACR;AACA,QAAQ,SAAS,CAAC,YAAY;AAC9B,YAAY,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACpC,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACjC,YAAY,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;AACxE,QAAQ;AACR,IAAI,CAAC;AACL,IAAI,SAAS,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE;AACrD,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,EAAE,CAAC,UAAU,EAAE,SAAS,GAAG,EAAE,CAAC,SAAS,EAAE,QAAQ,GAAG,EAAE,CAAC,QAAQ;AACzG,QAAQ,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAC5C,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,KAAK,GAAG;AACpB,YAAY,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK;AACnD,YAAY,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM;AACtD,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;AACrC,YAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;AAC5E,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AAC7B,YAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAC1C,QAAQ;AACR,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B,QAAQ,IAAI,CAAC,QAAQ,CAAC;AACtB,YAAY,UAAU,EAAE,KAAK;AAC7B,YAAY,eAAe,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACnG,SAAS,CAAC;AACV,IAAI,CAAC;AACL,IAAI,SAAS,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE;AACrD,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AACjE,IAAI,CAAC;AACL,IAAI,SAAS,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;AACpD,QAAQ,IAAI,KAAK,GAAG,IAAI;AACxB,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC,MAAM,EAAE,YAAY,GAAG,EAAE,CAAC,YAAY,EAAE,aAAa,GAAG,EAAE,CAAC,aAAa,EAAE,kBAAkB,GAAG,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,EAAE,CAAC,kBAAkB,EAAE,eAAe,GAAG,EAAE,CAAC,eAAe;AAC/O,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE;AAC9D,YAAY,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE;AACvC,gBAAgB,QAAQ,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,aAAa,EAAE,YAAY,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,eAAe,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AAC/R,YAAY;AACZ,YAAY,OAAO,IAAI;AACvB,QAAQ,CAAC,CAAC;AACV;AACA,QAAQ,QAAQ,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,QAAQ,CAAC;AAClH,IAAI,CAAC;AACL,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AAC7C,QAAQ,IAAI,KAAK,GAAG,IAAI;AACxB,QAAQ,IAAI,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,GAAG,EAAE;AAC9E,YAAY,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE;AAClD,gBAAgB,OAAO,GAAG;AAC1B,YAAY;AACZ,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACvC,YAAY,OAAO,GAAG;AACtB,QAAQ,CAAC,EAAE,EAAE,CAAC;AACd,QAAQ,IAAI,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,GAAG,MAAM,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;AAC7U,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AAClC,YAAY,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS;AAClD,QAAQ;AACR,QAAQ,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK;AAC5C,QAAQ,QAAQ,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,YAAY,CAAC;AACrI,YAAY,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;AACtG,YAAY,IAAI,CAAC,KAAK,CAAC,QAAQ;AAC/B,YAAY,IAAI,CAAC,aAAa,EAAE,CAAC;AACjC,IAAI,CAAC;AACL,IAAI,SAAS,CAAC,YAAY,GAAG;AAC7B,QAAQ,EAAE,EAAE,KAAK;AACjB,QAAQ,aAAa,EAAE,YAAY,EAAE,CAAC;AACtC,QAAQ,QAAQ,EAAE,YAAY,EAAE,CAAC;AACjC,QAAQ,YAAY,EAAE,YAAY,EAAE,CAAC;AACrC,QAAQ,MAAM,EAAE;AAChB,YAAY,GAAG,EAAE,IAAI;AACrB,YAAY,KAAK,EAAE,IAAI;AACvB,YAAY,MAAM,EAAE,IAAI;AACxB,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,WAAW,EAAE,IAAI;AAC7B,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,OAAO,EAAE,IAAI;AACzB,SAAS;AACT,QAAQ,KAAK,EAAE,EAAE;AACjB,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACpB,QAAQ,eAAe,EAAE,KAAK;AAC9B,QAAQ,yBAAyB,EAAE,CAAC;AACpC,QAAQ,0BAA0B,EAAE,CAAC;AACrC,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,WAAW,EAAE,CAAC;AACtB,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL,IAAI,OAAO,SAAS;AACpB,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;;AC9uBtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,yBAAyB,EAAE,aAAa,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE;AAC9G,CAAC,OAAO;AACR,EAAE,MAAM,EAAE,YAAY;AACtB,EAAE,IAAI;AACN,EAAE,SAAS,EAAE,IAAI,SAAS,EAAE;AAC5B,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;AACzC,GAAG,IAAI,eAAe,EAAE,qBAAqB;AAC7C,GAAG,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS;AAC9D,GAAG,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,MAAM,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,IAAI,MAAM,IAAI,IAAI,eAAe,KAAK,MAAM,GAAG,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC;AACxL,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;AAClD,IAAI,IAAI,EAAE,aAAa;AACvB,IAAI,KAAK,EAAE;AACX,KAAK,GAAG,KAAK;AACb,KAAK,qBAAqB,EAAE;AAC5B;AACA,IAAI,EAAE;AACN,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,IAAI,EAAE;AACV,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE;AACZ,GAAG,CAAC,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,WAAW,MAAM,IAAI,IAAI,qBAAqB,KAAK,MAAM,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC,YAAY,EAAE,MAAM,IAAI,IAAI,qBAAqB,KAAK,MAAM,IAAI,qBAAqB,CAAC,aAAa,EAAE;AAC3Q,EAAE,CAAC;AACH,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;AAC/B,GAAG,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;AAC9C,GAAG,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC;AACjD,GAAG,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1D,EAAE,CAAC;AACH,EAAE,GAAG;AACL,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,OAAO,EAAE;AACjC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,UAAU,KAAK,oBAAoB,CAAC;AACnJ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM;AACxB,EAAE,yBAAyB,EAAE,UAAU;AACvC,EAAE,aAAa,EAAE,OAAO,CAAC,IAAI;AAC7B,EAAE,IAAI,EAAE,UAAU,CAAC;AACnB,EAAE,CAAC,CAAC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,OAAO,EAAE,IAAI,EAAE;AAC9C,CAAC,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC;AAC5C,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;AAC5D,CAAC,IAAI,UAAU,EAAE,OAAO,UAAU;AAClC,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,WAAW,CAAC,CAAC,CAAC;AAC9C,CAAC,OAAO,IAAI;AACZ;AACA;AACA;AACA;AACA;AACA,MAAM,OAAO,GAAGvF,MAAI,CAAC,MAAM,CAAC;AAC5B,CAAC,IAAI,EAAE,SAAS;AAChB,CAAC,QAAQ,EAAE,GAAG;AACd,CAAC,UAAU,GAAG;AACd,EAAE,OAAO;AACT,GAAG,cAAc,EAAE,EAAE;AACrB,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;AACpC,IAAI,IAAI,gBAAgB,EAAE,iBAAiB;AAC3C,IAAI,OAAO,CAAC,EAAE,CAAC,gBAAgB,GAAG,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,IAAI,MAAM,IAAI,IAAI,gBAAgB,KAAK,MAAM,GAAG,gBAAgB,GAAG,GAAG,CAAC,EAAE,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,MAAM,IAAI,IAAI,iBAAiB,KAAK,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACnS,GAAG,CAAC;AACJ,GAAG,0BAA0B,EAAE,KAAK;AACpC,GAAG,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;AAC7C,IAAI,IAAI,iBAAiB,EAAE,kBAAkB;AAC7C,IAAI,OAAO;AACX,KAAK,MAAM;AACX,KAAK,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC;AACjE,KAAK,CAAC,EAAE,CAAC,iBAAiB,GAAG,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,IAAI,MAAM,IAAI,IAAI,iBAAiB,KAAK,MAAM,GAAG,iBAAiB,GAAG,GAAG,CAAC,EAAE,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,MAAM,IAAI,IAAI,kBAAkB,KAAK,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AAClS,KAAK;AACL,GAAG,CAAC;AACJ,GAAG,WAAW,EAAE,EAAE;AAClB,GAAG,UAAU,EAAE;AACf,GAAG;AACH,CAAC,CAAC;AACF,CAAC,KAAK,EAAE,QAAQ;AAChB,CAAC,MAAM,EAAE,IAAI;AACb,CAAC,UAAU,EAAE,KAAK;AAClB,CAAC,IAAI,EAAE,IAAI;AACX,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO;AACT,GAAG,EAAE,EAAE;AACP,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,SAAS,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC;AAC3D,IAAI,UAAU,EAAE,CAAC,UAAU,KAAK;AAChC,KAAK,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE;AAClC,KAAK,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE;AACxC,IAAI;AACJ,IAAI;AACJ,GAAG,KAAK,EAAE;AACV,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,SAAS,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC;AAC9D,IAAI,UAAU,EAAE,CAAC,UAAU,KAAK;AAChC,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;AACrC,KAAK,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,KAAK,EAAE;AAC9C,IAAI;AACJ,IAAI;AACJ,GAAG,qBAAqB,EAAE;AAC1B,IAAI,OAAO,EAAE,GAAG;AAChB,IAAI,SAAS,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,8BAA8B,CAAC;AAChF,IAAI,UAAU,EAAE,CAAC,UAAU,KAAK;AAChC,KAAK,OAAO,EAAE,8BAA8B,EAAE,UAAU,CAAC,qBAAqB,EAAE;AAChF,IAAI;AACJ;AACA,GAAG;AACH,CAAC,CAAC;AACF,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AACpD,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE;AACtC,EAAE,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC;AAClF,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,MAAM,EAAE;AAC3C,GAAG,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC;AAClF,GAAG,OAAO;AACV,IAAI,MAAM;AACV,IAAI,eAAe,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;AAC5F,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AAC7B,KAAK,OAAO,EAAE,IAAI,CAAC,OAAO;AAC1B,KAAK,IAAI;AACT,KAAK;AACL,KAAK;AACL,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;AAC3C,EAAE,aAAa,CAAC,cAAc,GAAG,eAAe,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;AACzH,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;AACvC,GAAG,OAAO,EAAE,aAAa;AACzB,GAAG,IAAI;AACP,GAAG;AACH,GAAG,CAAC;AACJ,EAAE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,OAAO;AACvC,GAAG,MAAM;AACT,GAAG,eAAe,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;AAC3F,GAAG;AACH,GAAG;AACH,EAAE,OAAO,IAAI;AACb,CAAC,CAAC;AACF,CAAC,GAAG,wBAAwB,CAAC;AAC7B,EAAE,QAAQ,EAAE,SAAS;AACrB,EAAE,IAAI,EAAE,GAAG;AACX,EAAE,WAAW,EAAE,IAAI;AACnB,EAAE,iBAAiB,EAAE;AACrB,GAAG,IAAI;AACP,GAAG,OAAO;AACV,GAAG;AACH,IAAI,IAAI,EAAE,uBAAuB;AACjC,IAAI,aAAa,EAAE;AACnB;AACA,GAAG;AACH,EAAE,eAAe,EAAE,CAAC,UAAU,KAAK;AACnC,GAAG,MAAM,KAAK,GAAG,EAAE;AACnB,GAAG,MAAM,KAAK,GAAG,wCAAwC;AACzD,GAAG,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;AACrC,GAAG,OAAO,KAAK,KAAK,IAAI,EAAE;AAC1B,IAAI,MAAM,GAAG,GAAG,EAAE,YAAY,EAAE,YAAY,CAAC,GAAG,KAAK;AACrD,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,GAAG,uBAAuB,GAAG,GAAG,CAAC,GAAG,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,MAAM,GAAG,YAAY,GAAG,YAAY;AAC1I,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;AAClC,GAAG;AACH,GAAG,OAAO,KAAK;AACf,EAAE,CAAC;AACH,EAAE,mBAAmB,EAAE,CAAC,KAAK,KAAK;AAClC,GAAG,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AAChH,IAAI,OAAO,CAAC,EAAE,GAAG,KAAK,uBAAuB,GAAG,MAAM,GAAG,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;AACzE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACf,EAAE;AACF,EAAE,CAAC;AACH,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE;AACtB,EAAE,MAAM,IAAI,GAAG;AACf,GAAG,OAAO,EAAE,IAAI,CAAC,OAAO;AACxB,GAAG,IAAI;AACP,GAAG,UAAU,EAAE,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB;AAC3E,GAAG;AACH,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,MAAM,EAAE;AAC3C,GAAG,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC;AAClF,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;AACxC,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;AACtC,CAAC,CAAC;AACF,CAAC,oBAAoB,GAAG;AACxB,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK;AAC5E,GAAG,IAAI,SAAS,GAAG,KAAK;AACxB,GAAG,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK;AAC9B,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS;AACtC,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,KAAK;AAC3B,GAAG,IAAI,WAAW,GAAG,IAAIyF,MAAM,EAAE;AACjC,GAAG,IAAI,UAAU,GAAG,CAAC;AACrB,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK;AAC7D,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;AACtC,KAAK,SAAS,GAAG,IAAI;AACrB,KAAK,WAAW,GAAG,IAAI;AACvB,KAAK,UAAU,GAAG,GAAG;AACrB,KAAK,OAAO,KAAK;AACjB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,GAAG,IAAI,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,0BAA0B,GAAG,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,qBAAqB,EAAE,UAAU,EAAE,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC;AACtK,GAAG,OAAO,SAAS;AACnB,EAAE,CAAC,CAAC,EAAE;AACN,CAAC,CAAC;AACF,CAAC,qBAAqB,GAAG;AACzB,EAAE,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;AAC7C,CAAC;AACD,CAAC,CAAC;AACF;AACA;AACG,IAAC,WAAW,GAAG;;ICrOLC,aAAa,GAAG,SAAhBA,aAAaA,CAAAhO,IAAA,EAA8B;AAAA,EAAA,IAAxBiO,UAAU,GAAAjO,IAAA,CAAViO,UAAU;IAAER,KAAK,GAAAzN,IAAA,CAALyN,KAAK;AAC/C,EAAA,IAAI,CAACQ,UAAU,CAACC,OAAO,IAAIT,KAAK,IAAIQ,UAAU,CAACC,OAAO,CAACC,QAAQ,CAACjO,MAAM,EAAE;AACtE,IAAA;AACF,EAAA;AAEA,EAAA,IAAMkO,UAAU,GAAGH,UAAU,CAACC,OAAO;AACrC,EAAA,IAAMG,YAAY,GAAGD,UAAU,CAACD,QAAQ,CAACV,KAAK,CAAC;AAC/C,EAAA,IAAMa,UAAU,GAAGD,YAAY,CAACE,YAAY,GAAGC,aAAa;AAE5D,EAAA,IAAIC,cAAc,GAAGL,UAAU,CAACM,SAAS;EACzC,IACEL,YAAY,CAACM,SAAS,GAAGL,UAAU,GACnCG,cAAc,GAAGL,UAAU,CAACG,YAAY,EACxC;IACAE,cAAc,GACZJ,YAAY,CAACM,SAAS,GAAGP,UAAU,CAACG,YAAY,GAAGD,UAAU;AACjE,EAAA,CAAC,MAAM,IAAIG,cAAc,GAAGJ,YAAY,CAACM,SAAS,EAAE;AAClDF,IAAAA,cAAc,GAAGJ,YAAY,CAACM,SAAS,GAAGH,aAAa;AACzD,EAAA;AAEAP,EAAAA,UAAU,CAACC,OAAO,CAACQ,SAAS,GAAGD,cAAc;AAC/C;;ACnBA,IAAMG,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,KAAK,EAAEC,MAAM,EAAK;AACxC,EAAA,IAAMC,UAAU,GAAGF,KAAK,CAACG,WAAW,EAAE;AACtC,EAAA,IAAMC,WAAW,GAAGH,MAAM,CAACE,WAAW,EAAE;AAExC,EAAA,IAAME,cAAc,GAAGD,WAAW,CAACE,OAAO,CAACJ,UAAU,CAAC;AACtD,EAAA,IAAIG,cAAc,KAAK,EAAE,EAAE;IACzB,OAAO,GAAG,GAAIA,cAAc,GAAGD,WAAW,CAAC/O,MAAM,GAAI,GAAG;AAC1D,EAAA;EAEA,IAAIkP,UAAU,GAAG,CAAC;EAClB,IAAIC,WAAW,GAAG,CAAC;EACnB,IAAIC,eAAe,GAAG,EAAE;EACxB,IAAIC,kBAAkB,GAAG,CAAC;EAC1B,IAAIC,cAAc,GAAG,CAAC;EAEtB,OAAOJ,UAAU,GAAGL,UAAU,CAAC7O,MAAM,IAAImP,WAAW,GAAGJ,WAAW,CAAC/O,MAAM,EAAE;IACzE,IAAI6O,UAAU,CAACK,UAAU,CAAC,KAAKH,WAAW,CAACI,WAAW,CAAC,EAAE;AACvD,MAAA,IAAIC,eAAe,KAAK,EAAE,EAAE;AAC1BA,QAAAA,eAAe,GAAGD,WAAW;AAC/B,MAAA;AACAE,MAAAA,kBAAkB,EAAE;AACpBH,MAAAA,UAAU,EAAE;AACd,IAAA,CAAC,MAAM;MACLI,cAAc,GAAGC,IAAI,CAACC,GAAG,CAACF,cAAc,EAAED,kBAAkB,CAAC;AAC7DA,MAAAA,kBAAkB,GAAG,CAAC;AACxB,IAAA;AACAF,IAAAA,WAAW,EAAE;AACf,EAAA;EACAG,cAAc,GAAGC,IAAI,CAACC,GAAG,CAACF,cAAc,EAAED,kBAAkB,CAAC;AAE7D,EAAA,IAAIH,UAAU,GAAGL,UAAU,CAAC7O,MAAM,EAAE;AAClC,IAAA,OAAO,CAAC;AACV,EAAA;EAEA,IAAMyP,aAAa,GAAG,GAAG,GAAGL,eAAe,GAAGL,WAAW,CAAC/O,MAAM;AAChE,EAAA,IAAM0P,gBAAgB,GAAGJ,cAAc,GAAGT,UAAU,CAAC7O,MAAM;EAC3D,IAAM2P,WAAW,GAAGd,UAAU,CAAC7O,MAAM,GAAG+O,WAAW,CAAC/O,MAAM;AAE1D,EAAA,IAAM4P,KAAK,GACTH,aAAa,GAAG,GAAG,GAAGC,gBAAgB,GAAG,GAAG,GAAGC,WAAW,GAAG,GAAG;AAElE,EAAA,OAAOJ,IAAI,CAACM,GAAG,CAACD,KAAK,EAAE,IAAI,CAAC;AAC9B,CAAC;AAEM,IAAME,WAAW,GAAG,SAAdA,WAAWA,CACtBC,KAAK,EACLC,KAAK,EAEF;EAAA,IADHC,OAAO,GAAAlQ,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG;AAAEmQ,IAAAA,KAAK,EAAEC;GAA4B;AAE/C,EAAA,IAAAC,cAAA,GACEH,OAAO,CADDC,KAAK;AAALA,IAAAA,KAAK,GAAAE,cAAA,KAAA,MAAA,GAAGD,0BAA0B,GAAAC,cAAA;IAAAC,aAAA,GACxCJ,OAAO,CADmCK,IAAI;AAAJA,IAAAA,IAAI,GAAAD,aAAA,KAAA,MAAA,GAAGE,mBAAmB,GAAAF,aAAA;AAGtE,EAAA,IAAI,CAACL,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAI,CAACD,KAAK,IAAItN,OAAO,CAACsN,KAAK,CAAC,EAAE;IACnE,OAAOA,KAAK,GAAGA,KAAK,CAAC9C,KAAK,CAAC,CAAC,EAAEiD,KAAK,CAAC,GAAG,EAAE;AAC3C,EAAA;AAEA,EAAA,IAAMM,YAAY,GAAGR,KAAK,CAACS,IAAI,EAAE;EACjC,IAAI,CAACD,YAAY,EAAE;IACjB,OAAOT,KAAK,GAAGA,KAAK,CAAC9C,KAAK,CAAC,CAAC,EAAEiD,KAAK,CAAC,GAAG,EAAE;AAC3C,EAAA;AAEA,EAAA,IAAMQ,cAAc,GAAGJ,IAAI,CAACjT,GAAG,CAAC,UAAAgM,GAAG,EAAA;IAAA,OAAK;AACtCsH,MAAAA,QAAQ,EAAE,OAAOtH,GAAG,KAAK,QAAQ,GAAGuH,IAAI,CAACvH,GAAG,CAAC,GAAGuH,IAAI,CAACvH,GAAG,CAAC5K,IAAI,CAAC;MAC9DoS,MAAM,EAAE,OAAOxH,GAAG,KAAK,QAAQ,GAAG,CAAC,GAAGA,GAAG,CAACwH,MAAM,IAAI;KACrD;AAAA,EAAA,CAAC,CAAC;EAEH,IAAMC,OAAO,GAAGf,KAAK,CAACgB,MAAM,CAAC,UAACC,GAAG,EAAEC,IAAI,EAAK;IAC1C,IAAMC,SAAS,GAAGR,cAAc,CAACK,MAAM,CAAC,UAACI,QAAQ,EAAEC,QAAQ,EAAK;AAC9D,MAAA,IAAMC,UAAU,GAAGD,QAAQ,CAACT,QAAQ,CAACM,IAAI,CAAC;AAC1C,MAAA,IAAIK,KAAK,CAACD,UAAU,CAAC,EAAE,OAAOF,QAAQ;AAEtC,MAAA,IAAMI,WAAW,GAAGC,MAAM,CAACH,UAAU,CAAC;AACtC,MAAA,IAAMzB,KAAK,GAAGlB,cAAc,CAAC8B,YAAY,EAAEe,WAAW,CAAC;AACvD,MAAA,IAAI3B,KAAK,IAAI,CAAC,EAAE,OAAOuB,QAAQ;AAE/B,MAAA,IAAMM,aAAa,GAAG7B,KAAK,GAAGwB,QAAQ,CAACP,MAAM;AAE7C,MAAA,OAAOY,aAAa,GAAGN,QAAQ,GAAGM,aAAa,GAAGN,QAAQ;IAC5D,CAAC,EAAE,CAAC,CAAC;IAEL,IAAID,SAAS,GAAG,CAAC,EAAE;MACjBF,GAAG,CAACrS,IAAI,CAAC;AAAEsS,QAAAA,IAAI,EAAJA,IAAI;AAAErB,QAAAA,KAAK,EAAEsB;AAAU,OAAC,CAAC;AACtC,IAAA;AAEA,IAAA,OAAOF,GAAG;EACZ,CAAC,EAAE,EAAE,CAAC;AAENF,EAAAA,OAAO,CAACY,IAAI,CAAC,UAACC,CAAC,EAAEC,CAAC,EAAK;AACrB,IAAA,IAAIrC,IAAI,CAACsC,GAAG,CAACF,CAAC,CAAC/B,KAAK,GAAGgC,CAAC,CAAChC,KAAK,CAAC,GAAG,KAAK,EAAE;AACvC,MAAA,IAAMkC,MAAM,GAAGH,CAAC,CAACV,IAAI,CAACxT,KAAK,IAAIkU,CAAC,CAACV,IAAI,CAACxS,IAAI,IAAI,EAAE;AAChD,MAAA,IAAMsT,MAAM,GAAGH,CAAC,CAACX,IAAI,CAACxT,KAAK,IAAImU,CAAC,CAACX,IAAI,CAACxS,IAAI,IAAI,EAAE;AAEhD,MAAA,OAAOqT,MAAM,CAACE,aAAa,CAACD,MAAM,CAAC;AACrC,IAAA;AAEA,IAAA,OAAOH,CAAC,CAAChC,KAAK,GAAG+B,CAAC,CAAC/B,KAAK;AAC1B,EAAA,CAAC,CAAC;AAEF,EAAA,OAAOjN,KAAK,CAAC,MAAM,EAAEmO,OAAO,CAAC7D,KAAK,CAAC,CAAC,EAAEiD,KAAK,CAAC,CAAC;AAC/C;;;;","x_google_ignoreList":[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,63,64,65,66,67]}