{"version":3,"file":"dom-helpers.c211272c.js","sources":["../../../../../../node_modules/svelte/src/runtime/internal/spread.js","../../../../../../node_modules/@lukeed/uuid/dist/index.mjs","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/x.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/youtube.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/threads.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/search.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/playOffset.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/play.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/pause.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/menu.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/linkedIn.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/instagram.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/filter.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/facebook.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/close.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/check.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/caretUp.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/caretDown.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/arrowUpRight.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/arrowRight.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/arrowLeft.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/assets/icons/alert.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/utilities/logs.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/Icon.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/DynamicHeadingContext.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/DynamicHeading.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/utilities/themes.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/LoadingIndicator.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/Button.svelte","../../../../../../node_modules/svelte/src/runtime/easing/index.js","../../../../../../node_modules/svelte/src/runtime/transition/index.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/utilities/aspectRatios.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/utilities/accessibility.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/utilities/breakpoints.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/Image.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/Link.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/Grid.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/GridContainer.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/Rule.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/node_modules/marked/lib/marked.esm.js","../../../../../../node_modules/dompurify/dist/purify.cjs.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/node_modules/isomorphic-dompurify/browser.js","../../../../../../node_modules/@sveltejs/kit/src/runtime/app/stores.js","../../../../../../node_modules/tua-body-scroll-lock/dist/tua-bsl.mjs","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/Tags.svelte","../../../../../../node_modules/textfit/textFit.js","../../../../../../src/lib/utilities/constants.js","../../../../../../src/lib/utilities/url-helpers.js","../../../../../../src/lib/utilities/image.js","../../../../../../src/lib/utilities/components/image-helpers.js","../../../../../../src/lib/stores.js","../../../../../../src/lib/utilities/filters.js","../../../../../../node_modules/linkedom/esm/shared/symbols.js","../../../../../../node_modules/entities/lib/esm/generated/decode-data-html.js","../../../../../../node_modules/entities/lib/esm/generated/decode-data-xml.js","../../../../../../node_modules/entities/lib/esm/decode_codepoint.js","../../../../../../node_modules/entities/lib/esm/decode.js","../../../../../../node_modules/htmlparser2/lib/esm/Tokenizer.js","../../../../../../node_modules/htmlparser2/lib/esm/Parser.js","../../../../../../node_modules/domelementtype/lib/esm/index.js","../../../../../../node_modules/domhandler/lib/esm/node.js","../../../../../../node_modules/domhandler/lib/esm/index.js","../../../../../../node_modules/entities/lib/esm/escape.js","../../../../../../node_modules/dom-serializer/lib/esm/foreignNames.js","../../../../../../node_modules/dom-serializer/lib/esm/index.js","../../../../../../node_modules/domutils/lib/esm/stringify.js","../../../../../../node_modules/domutils/lib/esm/traversal.js","../../../../../../node_modules/domutils/lib/esm/manipulation.js","../../../../../../node_modules/domutils/lib/esm/querying.js","../../../../../../node_modules/domutils/lib/esm/legacy.js","../../../../../../node_modules/domutils/lib/esm/helpers.js","../../../../../../node_modules/domutils/lib/esm/feeds.js","../../../../../../node_modules/htmlparser2/lib/esm/index.js","../../../../../../node_modules/linkedom/esm/shared/constants.js","../../../../../../node_modules/linkedom/esm/shared/object.js","../../../../../../node_modules/linkedom/esm/shared/utils.js","../../../../../../node_modules/linkedom/esm/shared/shadow-roots.js","../../../../../../node_modules/linkedom/esm/interface/custom-element-registry.js","../../../../../../node_modules/linkedom/esm/shared/parse-from-string.js","../../../../../../node_modules/linkedom/esm/shared/register-html-class.js","../../../../../../__vite-browser-external","../../../../../../node_modules/linkedom/commonjs/perf_hooks.cjs","../../../../../../node_modules/linkedom/esm/shared/jsdon.js","../../../../../../node_modules/linkedom/esm/interface/mutation-observer.js","../../../../../../node_modules/linkedom/esm/shared/attributes.js","../../../../../../node_modules/linkedom/esm/interface/event-target.js","../../../../../../node_modules/linkedom/esm/interface/node-list.js","../../../../../../node_modules/linkedom/esm/interface/node.js","../../../../../../node_modules/linkedom/esm/shared/text-escaper.js","../../../../../../node_modules/linkedom/esm/interface/attr.js","../../../../../../node_modules/linkedom/esm/shared/node.js","../../../../../../node_modules/linkedom/esm/mixin/non-document-type-child-node.js","../../../../../../node_modules/linkedom/esm/mixin/child-node.js","../../../../../../node_modules/linkedom/esm/interface/character-data.js","../../../../../../node_modules/linkedom/esm/interface/cdata-section.js","../../../../../../node_modules/linkedom/esm/interface/comment.js","../../../../../../node_modules/boolbase/index.js","../../../../../../node_modules/css-what/lib/es/types.js","../../../../../../node_modules/css-what/lib/es/parse.js","../../../../../../node_modules/css-select/lib/esm/sort.js","../../../../../../node_modules/css-select/lib/esm/attributes.js","../../../../../../node_modules/nth-check/lib/esm/parse.js","../../../../../../node_modules/nth-check/lib/esm/compile.js","../../../../../../node_modules/nth-check/lib/esm/index.js","../../../../../../node_modules/css-select/lib/esm/pseudo-selectors/filters.js","../../../../../../node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js","../../../../../../node_modules/css-select/lib/esm/pseudo-selectors/aliases.js","../../../../../../node_modules/css-select/lib/esm/pseudo-selectors/subselects.js","../../../../../../node_modules/css-select/lib/esm/pseudo-selectors/index.js","../../../../../../node_modules/css-select/lib/esm/general.js","../../../../../../node_modules/css-select/lib/esm/compile.js","../../../../../../node_modules/css-select/lib/esm/index.js","../../../../../../node_modules/linkedom/esm/shared/matches.js","../../../../../../node_modules/linkedom/esm/interface/text.js","../../../../../../node_modules/linkedom/esm/mixin/parent-node.js","../../../../../../node_modules/linkedom/esm/mixin/non-element-parent-node.js","../../../../../../node_modules/linkedom/esm/interface/document-fragment.js","../../../../../../node_modules/linkedom/esm/interface/document-type.js","../../../../../../node_modules/linkedom/esm/mixin/inner-html.js","../../../../../../node_modules/uhyphen/esm/index.js","../../../../../../node_modules/linkedom/esm/dom/string-map.js","../../../../../../node_modules/linkedom/esm/dom/token-list.js","../../../../../../node_modules/linkedom/esm/interface/css-style-declaration.js","../../../../../../node_modules/linkedom/esm/interface/event.js","../../../../../../node_modules/linkedom/esm/interface/named-node-map.js","../../../../../../node_modules/linkedom/esm/interface/shadow-root.js","../../../../../../node_modules/linkedom/esm/interface/element.js","../../../../../../node_modules/linkedom/esm/svg/element.js","../../../../../../node_modules/linkedom/esm/shared/facades.js","../../../../../../node_modules/linkedom/esm/html/element.js","../../../../../../node_modules/linkedom/esm/html/template-element.js","../../../../../../node_modules/linkedom/esm/html/html-element.js","../../../../../../node_modules/linkedom/esm/html/text-element.js","../../../../../../node_modules/linkedom/esm/html/script-element.js","../../../../../../node_modules/linkedom/esm/html/frame-element.js","../../../../../../node_modules/linkedom/esm/html/i-frame-element.js","../../../../../../node_modules/linkedom/esm/html/object-element.js","../../../../../../node_modules/linkedom/esm/html/head-element.js","../../../../../../node_modules/linkedom/esm/html/body-element.js","../../../../../../node_modules/cssom/lib/StyleSheet.js","../../../../../../node_modules/cssom/lib/CSSRule.js","../../../../../../node_modules/cssom/lib/CSSStyleRule.js","../../../../../../node_modules/cssom/lib/CSSStyleSheet.js","../../../../../../node_modules/cssom/lib/MediaList.js","../../../../../../node_modules/cssom/lib/CSSImportRule.js","../../../../../../node_modules/cssom/lib/CSSGroupingRule.js","../../../../../../node_modules/cssom/lib/CSSConditionRule.js","../../../../../../node_modules/cssom/lib/CSSMediaRule.js","../../../../../../node_modules/cssom/lib/CSSSupportsRule.js","../../../../../../node_modules/cssom/lib/CSSFontFaceRule.js","../../../../../../node_modules/cssom/lib/CSSHostRule.js","../../../../../../node_modules/cssom/lib/CSSKeyframeRule.js","../../../../../../node_modules/cssom/lib/CSSKeyframesRule.js","../../../../../../node_modules/cssom/lib/CSSValue.js","../../../../../../node_modules/cssom/lib/CSSValueExpression.js","../../../../../../node_modules/cssom/lib/MatcherList.js","../../../../../../node_modules/cssom/lib/CSSDocumentRule.js","../../../../../../node_modules/cssom/lib/parse.js","../../../../../../node_modules/cssom/lib/CSSStyleDeclaration.js","../../../../../../node_modules/cssom/lib/clone.js","../../../../../../node_modules/cssom/lib/index.js","../../../../../../node_modules/linkedom/esm/html/style-element.js","../../../../../../node_modules/linkedom/esm/html/time-element.js","../../../../../../node_modules/linkedom/esm/html/field-set-element.js","../../../../../../node_modules/linkedom/esm/html/embed-element.js","../../../../../../node_modules/linkedom/esm/html/hr-element.js","../../../../../../node_modules/linkedom/esm/html/progress-element.js","../../../../../../node_modules/linkedom/esm/html/paragraph-element.js","../../../../../../node_modules/linkedom/esm/html/table-element.js","../../../../../../node_modules/linkedom/esm/html/frame-set-element.js","../../../../../../node_modules/linkedom/esm/html/li-element.js","../../../../../../node_modules/linkedom/esm/html/base-element.js","../../../../../../node_modules/linkedom/esm/html/data-list-element.js","../../../../../../node_modules/linkedom/esm/html/input-element.js","../../../../../../node_modules/linkedom/esm/html/param-element.js","../../../../../../node_modules/linkedom/esm/html/media-element.js","../../../../../../node_modules/linkedom/esm/html/audio-element.js","../../../../../../node_modules/linkedom/esm/html/heading-element.js","../../../../../../node_modules/linkedom/esm/html/directory-element.js","../../../../../../node_modules/linkedom/esm/html/quote-element.js","../../../../../../node_modules/linkedom/commonjs/canvas-shim.cjs","../../../../../../node_modules/linkedom/commonjs/canvas.cjs","../../../../../../node_modules/linkedom/esm/html/canvas-element.js","../../../../../../node_modules/linkedom/esm/html/legend-element.js","../../../../../../node_modules/linkedom/esm/html/option-element.js","../../../../../../node_modules/linkedom/esm/html/span-element.js","../../../../../../node_modules/linkedom/esm/html/meter-element.js","../../../../../../node_modules/linkedom/esm/html/video-element.js","../../../../../../node_modules/linkedom/esm/html/table-cell-element.js","../../../../../../node_modules/linkedom/esm/html/title-element.js","../../../../../../node_modules/linkedom/esm/html/output-element.js","../../../../../../node_modules/linkedom/esm/html/table-row-element.js","../../../../../../node_modules/linkedom/esm/html/data-element.js","../../../../../../node_modules/linkedom/esm/html/menu-element.js","../../../../../../node_modules/linkedom/esm/html/select-element.js","../../../../../../node_modules/linkedom/esm/html/br-element.js","../../../../../../node_modules/linkedom/esm/html/button-element.js","../../../../../../node_modules/linkedom/esm/html/map-element.js","../../../../../../node_modules/linkedom/esm/html/opt-group-element.js","../../../../../../node_modules/linkedom/esm/html/d-list-element.js","../../../../../../node_modules/linkedom/esm/html/text-area-element.js","../../../../../../node_modules/linkedom/esm/html/font-element.js","../../../../../../node_modules/linkedom/esm/html/div-element.js","../../../../../../node_modules/linkedom/esm/html/link-element.js","../../../../../../node_modules/linkedom/esm/html/slot-element.js","../../../../../../node_modules/linkedom/esm/html/form-element.js","../../../../../../node_modules/linkedom/esm/html/image-element.js","../../../../../../node_modules/linkedom/esm/html/pre-element.js","../../../../../../node_modules/linkedom/esm/html/u-list-element.js","../../../../../../node_modules/linkedom/esm/html/meta-element.js","../../../../../../node_modules/linkedom/esm/html/picture-element.js","../../../../../../node_modules/linkedom/esm/html/area-element.js","../../../../../../node_modules/linkedom/esm/html/o-list-element.js","../../../../../../node_modules/linkedom/esm/html/table-caption-element.js","../../../../../../node_modules/linkedom/esm/html/anchor-element.js","../../../../../../node_modules/linkedom/esm/html/label-element.js","../../../../../../node_modules/linkedom/esm/html/unknown-element.js","../../../../../../node_modules/linkedom/esm/html/mod-element.js","../../../../../../node_modules/linkedom/esm/html/details-element.js","../../../../../../node_modules/linkedom/esm/html/source-element.js","../../../../../../node_modules/linkedom/esm/html/track-element.js","../../../../../../node_modules/linkedom/esm/html/marquee-element.js","../../../../../../node_modules/linkedom/esm/shared/html-classes.js","../../../../../../node_modules/linkedom/esm/shared/mime.js","../../../../../../node_modules/linkedom/esm/interface/custom-event.js","../../../../../../node_modules/linkedom/esm/interface/input-event.js","../../../../../../node_modules/linkedom/esm/interface/image.js","../../../../../../node_modules/linkedom/esm/interface/range.js","../../../../../../node_modules/linkedom/esm/interface/tree-walker.js","../../../../../../node_modules/linkedom/esm/interface/document.js","../../../../../../node_modules/linkedom/esm/index.js","../../../../../../src/lib/utilities/dom-helpers.js"],"sourcesContent":["/** @returns {{}} */\nexport function get_spread_update(levels, updates) {\n\tconst update = {};\n\tconst to_null_out = {};\n\tconst accounted_for = { $$scope: 1 };\n\tlet i = levels.length;\n\twhile (i--) {\n\t\tconst o = levels[i];\n\t\tconst n = updates[i];\n\t\tif (n) {\n\t\t\tfor (const key in o) {\n\t\t\t\tif (!(key in n)) to_null_out[key] = 1;\n\t\t\t}\n\t\t\tfor (const key in n) {\n\t\t\t\tif (!accounted_for[key]) {\n\t\t\t\t\tupdate[key] = n[key];\n\t\t\t\t\taccounted_for[key] = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tlevels[i] = n;\n\t\t} else {\n\t\t\tfor (const key in o) {\n\t\t\t\taccounted_for[key] = 1;\n\t\t\t}\n\t\t}\n\t}\n\tfor (const key in to_null_out) {\n\t\tif (!(key in update)) update[key] = undefined;\n\t}\n\treturn update;\n}\n\nexport function get_spread_object(spread_props) {\n\treturn typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n","var IDX=256, HEX=[], BUFFER;\nwhile (IDX--) HEX[IDX] = (IDX + 256).toString(16).substring(1);\n\nexport function v4() {\n\tvar i=0, num, out='';\n\n\tif (!BUFFER || ((IDX + 16) > 256)) {\n\t\tBUFFER = Array(i=256);\n\t\twhile (i--) BUFFER[i] = 256 * Math.random() | 0;\n\t\ti = IDX = 0;\n\t}\n\n\tfor (; i < 16; i++) {\n\t\tnum = BUFFER[IDX + i];\n\t\tif (i==6) out += HEX[num & 15 | 64];\n\t\telse if (i==8) out += HEX[num & 63 | 128];\n\t\telse out += HEX[num];\n\n\t\tif (i & 1 && i > 1 && i < 11) out += '-';\n\t}\n\n\tIDX++;\n\treturn out;\n}\n","\n \n\n","\n \n\n","\n \n \n \n \n \n \n \n \n\n","\n \n \n \n \n \n \n \n \n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n \n \n\n","\n \n \n \n \n \n \n \n \n\n","\n \n\n","\n \n \n\n","\n \n \n \n \n \n \n \n \n\n","\n \n \n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n \n\n","/**\n * Validates a prop value against a list of valid values.\n *\n * @param {Object} params - The parameters for the function.\n * @param {string} params.componentName - The name of the component.\n * @param {string} params.propName - The name of the prop.\n * @param {string} params.propValue - The value of the prop.\n * @param {Array.} params.validPropValues - The list of valid prop values.\n */\nfunction validatePropValue({ componentName, propName, propValue, validPropValues }) {\n if (!validPropValues.includes(propValue)) {\n /* eslint-disable no-console */\n console.error(\n `[${componentName} ERROR] \"${propValue}\" is not a supported ${propName} value. Must be one of: ${validPropValues.join(\n \" \"\n )}`\n );\n }\n}\n\n/** Validates an object prop value with a schema.\n * @param {Object} params - The parameters for the function.\n * @param {string} params.componentName - The name of the component.\n * @param {string} params.propName - The name of the prop.\n * @param {Object} params.propValue - The value of the prop.\n * @param {Object} params.schema - The schema for the prop validation.\n */\n\nfunction validatePropObjectWithSchema({ componentName, propName, propValue, schema }) {\n Object.keys(schema).forEach((key) => {\n if (schema[key] === \"array\" && !Array.isArray(propValue[key])) {\n /* eslint-disable no-console */\n console.error(\n `[${componentName} ERROR] \"${propValue[key]}\" is not a supported ${propName} value for ${key} property. Must be an array`\n );\n } else if (schema[key] !== \"array\" && propValue[key] && typeof propValue[key] !== schema[key]) {\n /* eslint-disable no-console */\n console.error(\n `[${componentName} ERROR] \"${propValue[key]}\" is not a supported ${propName} value for ${key} property. Must be a(n) ${schema[key]}`\n );\n }\n });\n}\n\nexport { validatePropValue, validatePropObjectWithSchema };\n","\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n\n \n\n","import COLORS from \"../design-tokens/colors\";\n\n/**\n * @typedef {Object} Theme An object of CSS classes to be applied for the theme\n * @property {string} backgroundColor\n * @property {string} hoverBackgroundColor\n * @property {string} textColor\n * @property {string} hoverTextColor\n * @property {string} translucentTextColor\n * @property {string} borderColor\n * @property {string} ruleColor\n * @property {string} componentColorTheme\n * @property {string} [focusTextColor]\n * @property {string} [focusOutlineColor]\n * @property {string} [textGradientValue]\n */\n\n/**\n * @typedef {keyof typeof STANDARD_THEMES} StandardThemeName\n\n * @typedef {keyof typeof PATTERN_THEMES} PatternThemeName\n\n * @typedef {keyof typeof DEM_FORUM_THEMES} DemForumThemeName\n\n* @typedef {StandardThemeName | PatternThemeName | DemForumThemeName} ThemeName\n */\n\n/**\n * @typedef {Object.} ThemeTable1\n * @description An object that maps theme names to their corresponding theme configurations.\n */\nexport const STANDARD_THEMES = {\n transparent: {\n backgroundColor: \"bg-transparent\",\n hoverBackgroundColor: \"hover:bg-transparent\",\n textColor: \"text-transparent\",\n translucentTextColor: \"text-transparent\",\n hoverTextColor: \"hover:text-transparent\",\n borderColor: \"border-transparent\",\n ruleColor: \"bg-transparent\",\n focusOutlineColor: \"focus-visible:outline-transparent\",\n componentColorTheme: \"black\",\n backgroundColorValue: COLORS.transparent,\n textColorValue: COLORS.transparent\n },\n black: {\n backgroundColor: \"bg-black\",\n hoverBackgroundColor: \"hover:bg-white\",\n textColor: \"text-white\",\n translucentTextColor: \"text-white-60\",\n hoverTextColor: \"hover:text-cobalt-blue\",\n borderColor: \"border-black\",\n ruleColor: \"bg-white\",\n focusOutlineColor: \"focus-visible:outline-white\",\n componentColorTheme: \"black\",\n backgroundColorValue: COLORS.black,\n textColorValue: COLORS.white,\n textGradientValue: \"bg-blue-green-animated-text\"\n },\n white: {\n backgroundColor: \"bg-white\",\n hoverBackgroundColor: \"hover:bg-black\",\n borderColor: \"border-white\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"hover:text-cobalt-blue\",\n ruleColor: \"bg-black\",\n focusTextColor: \"focus-visible:text-cobalt-blue\",\n focusOutlineColor: \"focus-visible:outline-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.white,\n textColorValue: COLORS.black,\n textGradientValue: \"bg-dark-blue-animated-text\"\n },\n darkBlue: {\n backgroundColor: \"bg-dark-blue\",\n hoverBackgroundColor: \"\",\n textColor: \"text-white\",\n translucentTextColor: \"text-white-60\",\n hoverTextColor: \"\",\n borderColor: \"border-dark-blue\",\n ruleColor: \"bg-white\",\n componentColorTheme: \"black\",\n backgroundColorValue: COLORS.darkBlue,\n textColorValue: COLORS.white,\n textGradientValue: \"bg-blue-green-animated-text\"\n },\n cobaltBlue: {\n backgroundColor: \"bg-cobalt-blue\",\n hoverBackgroundColor: \"\",\n textColor: \"text-white\",\n translucentTextColor: \"text-white\",\n hoverTextColor: \"hover:text-white\",\n focusOutlineColor: \"focus-visible:outline-white\",\n borderColor: \"border-cobalt-blue\",\n ruleColor: \"bg-white\",\n componentColorTheme: \"black\",\n backgroundColorValue: COLORS.cobaltBlue,\n textColorValue: COLORS.white,\n textGradientValue: \"bg-blue-green-animated-text\"\n },\n skyBlue: {\n backgroundColor: \"bg-sky-blue\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-sky-blue\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.skyBlue,\n textColorValue: COLORS.black,\n textGradientValue: \"bg-dark-blue-animated-text\"\n },\n lightBlue: {\n backgroundColor: \"bg-light-blue\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-light-blue\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.lightBlue,\n textColorValue: COLORS.black,\n textGradientValue: \"bg-dark-blue-animated-text\"\n },\n lightGrey: {\n backgroundColor: \"bg-light-grey\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"hover:text-cobalt-blue\",\n borderColor: \"border-light-grey\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n focusTextColor: \"focus-visible:text-cobalt-blue\",\n focusOutlineColor: \"focus-visible:outline-black\",\n backgroundColorValue: COLORS.lightGrey,\n textColorValue: COLORS.black,\n textGradientValue: \"bg-dark-blue-animated-text\"\n },\n red: {\n backgroundColor: \"bg-red\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-75\",\n hoverTextColor: \"\",\n borderColor: \"border-red\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.red,\n textColorValue: COLORS.black,\n textGradientValue: \"bg-dark-blue-animated-text\"\n },\n orange: {\n backgroundColor: \"bg-orange\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-75\",\n hoverTextColor: \"\",\n borderColor: \"border-orange\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.orange,\n textColorValue: COLORS.black,\n textGradientValue: \"bg-dark-blue-animated-text\"\n },\n yellow: {\n backgroundColor: \"bg-yellow\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-yellow\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.yellow,\n textColorValue: COLORS.black,\n textGradientValue: \"bg-dark-blue-animated-text\"\n },\n green: {\n backgroundColor: \"bg-green\",\n hoverBackgroundColor: \"\",\n textColor: \"text-white\",\n translucentTextColor: \"text-white-80\",\n hoverTextColor: \"\",\n borderColor: \"border-green\",\n ruleColor: \"bg-white\",\n componentColorTheme: \"black\",\n backgroundColorValue: COLORS.green,\n textColorValue: COLORS.white,\n textGradientValue: \"bg-blue-green-animated-text\"\n },\n pink: {\n backgroundColor: \"bg-pink\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-pink\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.pink,\n textColorValue: COLORS.black,\n textGradientValue: \"bg-dark-blue-animated-text\"\n },\n lightOrange: {\n backgroundColor: \"bg-light-orange\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-light-orange\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.lightOrange,\n textColorValue: COLORS.black,\n textGradientValue: \"bg-dark-blue-animated-text\"\n },\n lightYellow: {\n backgroundColor: \"bg-light-yellow\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-light-yellow\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.lightYellow,\n textColorValue: COLORS.black,\n textGradientValue: \"bg-dark-blue-animated-text\"\n },\n lightGreen: {\n backgroundColor: \"bg-light-green\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-light-green\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.lightGreen,\n textColorValue: COLORS.black,\n textGradientValue: \"bg-dark-blue-animated-text\"\n },\n goaPurple: {\n backgroundColor: \"bg-goa-purple\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black\",\n hoverTextColor: \"\",\n borderColor: \"border-goa-purple\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.goaPurple,\n textColorValue: COLORS.black,\n textGradientValue: \"bg-dark-blue-animated-text\"\n },\n goaPink: {\n backgroundColor: \"bg-goa-pink\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-80\",\n hoverTextColor: \"\",\n borderColor: \"border-goa-pink\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.goaPink,\n textColorValue: COLORS.black,\n textGradientValue: \"bg-dark-blue-animated-text\"\n },\n teal: {\n backgroundColor: \"bg-goa-teal\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-goa-teal\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.goaTeal,\n textColorValue: COLORS.black,\n textGradientValue: \"bg-dark-blue-animated-text\"\n },\n darkTeal: {\n backgroundColor: \"bg-goa-dark-teal\",\n hoverBackgroundColor: \"\",\n textColor: \"text-white\",\n translucentTextColor: \"text-white\",\n hoverTextColor: \"\",\n borderColor: \"border-goa-dark-teal\",\n ruleColor: \"bg-white\",\n componentColorTheme: \"black\",\n backgroundColorValue: COLORS.goaDarkTeal,\n textColorValue: COLORS.white,\n textGradientValue: \"bg-blue-green-animated-text\"\n },\n futurePink: {\n backgroundColor: \"bg-future-pink\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-future-pink\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.futurePink,\n textColorValue: COLORS.black,\n textGradientValue: \"bg-dark-blue-animated-text\"\n },\n futureGreen: {\n backgroundColor: \"bg-future-green\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black\",\n hoverTextColor: \"\",\n borderColor: \"border-future-green\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.futureGreen,\n textColorValue: COLORS.black,\n textGradientValue: \"bg-dark-blue-animated-text\"\n },\n scholarsMaroon: {\n backgroundColor: \"bg-scholars-maroon\",\n hoverBackgroundColor: \"\",\n textColor: \"text-white\",\n translucentTextColor: \"text-white-80\",\n hoverTextColor: \"\",\n borderColor: \"border-scholars-maroon\",\n ruleColor: \"bg-white\",\n componentColorTheme: \"black\",\n backgroundColorValue: COLORS.scholarsMaroon,\n textColorValue: COLORS.white,\n textGradientValue: \"bg-blue-green-animated-text\"\n },\n sand: {\n backgroundColor: \"bg-scholars-sand\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-scholars-sand\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.scholarsSand,\n textColorValue: COLORS.black,\n textGradientValue: \"bg-dark-blue-animated-text\"\n }\n};\n\n/**\n * @typedef {Object.} ThemeTable2\n * @description An object that maps theme names to their corresponding theme configurations.\n */\nexport const PATTERN_THEMES = {\n skyBlueSpark: {\n ...STANDARD_THEMES.skyBlue,\n pattern: \"spark\"\n },\n darkBlueRadiate: {\n ...STANDARD_THEMES.darkBlue,\n pattern: \"radiate\"\n },\n yellowAmplify: {\n ...STANDARD_THEMES.yellow,\n pattern: \"amplify\"\n }\n};\n\n/**\n * @typedef {Object.} ThemeTable3\n * hard-coded one-off themes\n */\nexport const DEM_FORUM_THEMES = {\n \"Dem Forum Light Green Sky Blue\": {\n backgroundColor: \"bg-gradient-radial from-light-green from-49% to-sky-blue to-94%\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-black\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.skyBlue,\n textColorValue: COLORS.black,\n textGradientValue: \"bg-dark-blue-animated-text\"\n },\n \"Dem Forum Orange Cobalt Blue\": {\n backgroundColor: \"bg-gradient-radial from-orange from-49% to-cobalt-blue to-94%\",\n hoverBackgroundColor: \"\",\n textColor: \"text-white\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-black\",\n ruleColor: \"bg-white\",\n componentColorTheme: \"black\",\n backgroundColorValue: COLORS.cobaltBlue,\n textColorValue: COLORS.black,\n textGradientValue: \"bg-blue-green-animated-text\"\n },\n \"Dem Forum Orange Sky Blue\": {\n backgroundColor: \"bg-gradient-radial from-orange from-49% to-sky-blue to-94%\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-black\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.skyBlue,\n textColorValue: COLORS.black,\n textGradientValue: \"bg-dark-blue-animated-text\"\n },\n \"Dem Forum Yellow Cobalt Blue\": {\n backgroundColor: \"bg-gradient-radial from-yellow from-49% to-cobalt-blue to-94%\",\n hoverBackgroundColor: \"\",\n textColor: \"text-white\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-black\",\n ruleColor: \"bg-white\",\n componentColorTheme: \"black\",\n backgroundColorValue: COLORS.cobaltBlue,\n textColorValue: COLORS.black,\n textGradientValue: \"bg-blue-green-animated-text\"\n },\n \"Dem Forum Yellow Orange\": {\n backgroundColor: \"bg-gradient-radial from-yellow from-49% to-orange to-94%\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-black\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.orange,\n textColorValue: COLORS.black,\n textGradientValue: \"bg-dark-blue-animated-text\"\n },\n \"Dem Forum Yellow Sky Blue\": {\n backgroundColor: \"bg-gradient-radial from-yellow from-49% to-sky-blue to-94%\",\n hoverBackgroundColor: \"\",\n textColor: \"text-black\",\n translucentTextColor: \"text-black-60\",\n hoverTextColor: \"\",\n borderColor: \"border-black\",\n ruleColor: \"bg-black\",\n componentColorTheme: \"white\",\n backgroundColorValue: COLORS.skyBlue,\n textColorValue: COLORS.black,\n textGradientValue: \"bg-dark-blue-animated-text\"\n }\n};\n\n/**\n * @typedef {Object.} ThemeTable\n * @description An object that maps theme names to their corresponding theme configurations.\n */\nexport const THEMES = {\n ...STANDARD_THEMES,\n ...PATTERN_THEMES,\n ...DEM_FORUM_THEMES\n};\n\n/**\n * @type {StandardThemeName[]}\n */\nexport const STANDARD_THEME_NAMES = Object.keys(STANDARD_THEMES);\n\n/**\n * @type {PatternThemeName[]}\n */\nexport const PATTERN_THEME_NAMES = Object.keys(PATTERN_THEMES);\n\n/**\n * @type {DemForumThemeName[]}\n */\nexport const DEM_FORUM_THEME_NAMES = Object.keys(DEM_FORUM_THEMES);\n\n/**\n * @type {ThemeName[]}\n */\nexport const THEME_NAMES = Object.keys(THEMES);\n\n/**\n *\n * @param {ThemeName} themeName\n * @returns {Theme | undefined}\n */\nexport const getTheme = (themeName) => {\n if (!themeName) {\n return;\n }\n\n if (!THEME_NAMES.includes(themeName)) {\n // eslint-disable-next-line no-console\n console.error(\n `[ERROR] \"${themeName}\" is not a supported theme value. Must be one of: ${THEME_NAMES.join(\n \" \"\n )}`\n );\n }\n\n return THEMES[themeName];\n};\n","\n\n\n \n {accessibilityLabel}\n\n\n\n","\n\n\n\n\n {#if isLoading}\n \n {/if}\n {#if $$slots.icon || Object.keys(ICON_NAMES).some((name) => name === iconName)}\n \n \n \n \n \n {/if}\n {#if hasValidLabel}\n {label}\n {/if}\n \n\n","/*\nAdapted from https://github.com/mattdesl\nDistributed under MIT License https://github.com/mattdesl/eases/blob/master/LICENSE.md\n*/\nexport { identity as linear } from '../internal/index.js';\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function backInOut(t) {\n\tconst s = 1.70158 * 1.525;\n\tif ((t *= 2) < 1) return 0.5 * (t * t * ((s + 1) * t - s));\n\treturn 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function backIn(t) {\n\tconst s = 1.70158;\n\treturn t * t * ((s + 1) * t - s);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function backOut(t) {\n\tconst s = 1.70158;\n\treturn --t * t * ((s + 1) * t + s) + 1;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function bounceOut(t) {\n\tconst a = 4.0 / 11.0;\n\tconst b = 8.0 / 11.0;\n\tconst c = 9.0 / 10.0;\n\tconst ca = 4356.0 / 361.0;\n\tconst cb = 35442.0 / 1805.0;\n\tconst cc = 16061.0 / 1805.0;\n\tconst t2 = t * t;\n\treturn t < a\n\t\t? 7.5625 * t2\n\t\t: t < b\n\t\t? 9.075 * t2 - 9.9 * t + 3.4\n\t\t: t < c\n\t\t? ca * t2 - cb * t + cc\n\t\t: 10.8 * t * t - 20.52 * t + 10.72;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function bounceInOut(t) {\n\treturn t < 0.5 ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0)) : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function bounceIn(t) {\n\treturn 1.0 - bounceOut(1.0 - t);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function circInOut(t) {\n\tif ((t *= 2) < 1) return -0.5 * (Math.sqrt(1 - t * t) - 1);\n\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function circIn(t) {\n\treturn 1.0 - Math.sqrt(1.0 - t * t);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function circOut(t) {\n\treturn Math.sqrt(1 - --t * t);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function cubicInOut(t) {\n\treturn t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function cubicIn(t) {\n\treturn t * t * t;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function cubicOut(t) {\n\tconst f = t - 1.0;\n\treturn f * f * f + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function elasticInOut(t) {\n\treturn t < 0.5\n\t\t? 0.5 * Math.sin(((+13.0 * Math.PI) / 2) * 2.0 * t) * Math.pow(2.0, 10.0 * (2.0 * t - 1.0))\n\t\t: 0.5 *\n\t\t\t\tMath.sin(((-13.0 * Math.PI) / 2) * (2.0 * t - 1.0 + 1.0)) *\n\t\t\t\tMath.pow(2.0, -10.0 * (2.0 * t - 1.0)) +\n\t\t\t\t1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function elasticIn(t) {\n\treturn Math.sin((13.0 * t * Math.PI) / 2) * Math.pow(2.0, 10.0 * (t - 1.0));\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function elasticOut(t) {\n\treturn Math.sin((-13.0 * (t + 1.0) * Math.PI) / 2) * Math.pow(2.0, -10.0 * t) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function expoInOut(t) {\n\treturn t === 0.0 || t === 1.0\n\t\t? t\n\t\t: t < 0.5\n\t\t? +0.5 * Math.pow(2.0, 20.0 * t - 10.0)\n\t\t: -0.5 * Math.pow(2.0, 10.0 - t * 20.0) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function expoIn(t) {\n\treturn t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0));\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function expoOut(t) {\n\treturn t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quadInOut(t) {\n\tt /= 0.5;\n\tif (t < 1) return 0.5 * t * t;\n\tt--;\n\treturn -0.5 * (t * (t - 2) - 1);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quadIn(t) {\n\treturn t * t;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quadOut(t) {\n\treturn -t * (t - 2.0);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quartInOut(t) {\n\treturn t < 0.5 ? +8.0 * Math.pow(t, 4.0) : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quartIn(t) {\n\treturn Math.pow(t, 4.0);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quartOut(t) {\n\treturn Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quintInOut(t) {\n\tif ((t *= 2) < 1) return 0.5 * t * t * t * t * t;\n\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quintIn(t) {\n\treturn t * t * t * t * t;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function quintOut(t) {\n\treturn --t * t * t * t * t + 1;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function sineInOut(t) {\n\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function sineIn(t) {\n\tconst v = Math.cos(t * Math.PI * 0.5);\n\tif (Math.abs(v) < 1e-14) return 1;\n\telse return 1 - v;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nexport function sineOut(t) {\n\treturn Math.sin((t * Math.PI) / 2);\n}\n","import { cubicOut, cubicInOut, linear } from '../easing/index.js';\nimport { assign, split_css_unit, is_function } from '../internal/index.js';\n\n/**\n * Animates a `blur` filter alongside an element's opacity.\n *\n * https://svelte.dev/docs/svelte-transition#blur\n * @param {Element} node\n * @param {import('./public').BlurParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function blur(\n\tnode,\n\t{ delay = 0, duration = 400, easing = cubicInOut, amount = 5, opacity = 0 } = {}\n) {\n\tconst style = getComputedStyle(node);\n\tconst target_opacity = +style.opacity;\n\tconst f = style.filter === 'none' ? '' : style.filter;\n\tconst od = target_opacity * (1 - opacity);\n\tconst [value, unit] = split_css_unit(amount);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (_t, u) => `opacity: ${target_opacity - od * u}; filter: ${f} blur(${u * value}${unit});`\n\t};\n}\n\n/**\n * Animates the opacity of an element from 0 to the current opacity for `in` transitions and from the current opacity to 0 for `out` transitions.\n *\n * https://svelte.dev/docs/svelte-transition#fade\n * @param {Element} node\n * @param {import('./public').FadeParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function fade(node, { delay = 0, duration = 400, easing = linear } = {}) {\n\tconst o = +getComputedStyle(node).opacity;\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (t) => `opacity: ${t * o}`\n\t};\n}\n\n/**\n * Animates the x and y positions and the opacity of an element. `in` transitions animate from the provided values, passed as parameters to the element's default values. `out` transitions animate from the element's default values to the provided values.\n *\n * https://svelte.dev/docs/svelte-transition#fly\n * @param {Element} node\n * @param {import('./public').FlyParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function fly(\n\tnode,\n\t{ delay = 0, duration = 400, easing = cubicOut, x = 0, y = 0, opacity = 0 } = {}\n) {\n\tconst style = getComputedStyle(node);\n\tconst target_opacity = +style.opacity;\n\tconst transform = style.transform === 'none' ? '' : style.transform;\n\tconst od = target_opacity * (1 - opacity);\n\tconst [xValue, xUnit] = split_css_unit(x);\n\tconst [yValue, yUnit] = split_css_unit(y);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (t, u) => `\n\t\t\ttransform: ${transform} translate(${(1 - t) * xValue}${xUnit}, ${(1 - t) * yValue}${yUnit});\n\t\t\topacity: ${target_opacity - od * u}`\n\t};\n}\n\n/**\n * Slides an element in and out.\n *\n * https://svelte.dev/docs/svelte-transition#slide\n * @param {Element} node\n * @param {import('./public').SlideParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function slide(node, { delay = 0, duration = 400, easing = cubicOut, axis = 'y' } = {}) {\n\tconst style = getComputedStyle(node);\n\tconst opacity = +style.opacity;\n\tconst primary_property = axis === 'y' ? 'height' : 'width';\n\tconst primary_property_value = parseFloat(style[primary_property]);\n\tconst secondary_properties = axis === 'y' ? ['top', 'bottom'] : ['left', 'right'];\n\tconst capitalized_secondary_properties = secondary_properties.map(\n\t\t(e) => `${e[0].toUpperCase()}${e.slice(1)}`\n\t);\n\tconst padding_start_value = parseFloat(style[`padding${capitalized_secondary_properties[0]}`]);\n\tconst padding_end_value = parseFloat(style[`padding${capitalized_secondary_properties[1]}`]);\n\tconst margin_start_value = parseFloat(style[`margin${capitalized_secondary_properties[0]}`]);\n\tconst margin_end_value = parseFloat(style[`margin${capitalized_secondary_properties[1]}`]);\n\tconst border_width_start_value = parseFloat(\n\t\tstyle[`border${capitalized_secondary_properties[0]}Width`]\n\t);\n\tconst border_width_end_value = parseFloat(\n\t\tstyle[`border${capitalized_secondary_properties[1]}Width`]\n\t);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (t) =>\n\t\t\t'overflow: hidden;' +\n\t\t\t`opacity: ${Math.min(t * 20, 1) * opacity};` +\n\t\t\t`${primary_property}: ${t * primary_property_value}px;` +\n\t\t\t`padding-${secondary_properties[0]}: ${t * padding_start_value}px;` +\n\t\t\t`padding-${secondary_properties[1]}: ${t * padding_end_value}px;` +\n\t\t\t`margin-${secondary_properties[0]}: ${t * margin_start_value}px;` +\n\t\t\t`margin-${secondary_properties[1]}: ${t * margin_end_value}px;` +\n\t\t\t`border-${secondary_properties[0]}-width: ${t * border_width_start_value}px;` +\n\t\t\t`border-${secondary_properties[1]}-width: ${t * border_width_end_value}px;`\n\t};\n}\n\n/**\n * Animates the opacity and scale of an element. `in` transitions animate from an element's current (default) values to the provided values, passed as parameters. `out` transitions animate from the provided values to an element's default values.\n *\n * https://svelte.dev/docs/svelte-transition#scale\n * @param {Element} node\n * @param {import('./public').ScaleParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function scale(\n\tnode,\n\t{ delay = 0, duration = 400, easing = cubicOut, start = 0, opacity = 0 } = {}\n) {\n\tconst style = getComputedStyle(node);\n\tconst target_opacity = +style.opacity;\n\tconst transform = style.transform === 'none' ? '' : style.transform;\n\tconst sd = 1 - start;\n\tconst od = target_opacity * (1 - opacity);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (_t, u) => `\n\t\t\ttransform: ${transform} scale(${1 - sd * u});\n\t\t\topacity: ${target_opacity - od * u}\n\t\t`\n\t};\n}\n\n/**\n * Animates the stroke of an SVG element, like a snake in a tube. `in` transitions begin with the path invisible and draw the path to the screen over time. `out` transitions start in a visible state and gradually erase the path. `draw` only works with elements that have a `getTotalLength` method, like `` and ``.\n *\n * https://svelte.dev/docs/svelte-transition#draw\n * @param {SVGElement & { getTotalLength(): number }} node\n * @param {import('./public').DrawParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nexport function draw(node, { delay = 0, speed, duration, easing = cubicInOut } = {}) {\n\tlet len = node.getTotalLength();\n\tconst style = getComputedStyle(node);\n\tif (style.strokeLinecap !== 'butt') {\n\t\tlen += parseInt(style.strokeWidth);\n\t}\n\tif (duration === undefined) {\n\t\tif (speed === undefined) {\n\t\t\tduration = 800;\n\t\t} else {\n\t\t\tduration = len / speed;\n\t\t}\n\t} else if (typeof duration === 'function') {\n\t\tduration = duration(len);\n\t}\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (_, u) => `\n\t\t\tstroke-dasharray: ${len};\n\t\t\tstroke-dashoffset: ${u * len};\n\t\t`\n\t};\n}\n\n/**\n * The `crossfade` function creates a pair of [transitions](https://svelte.dev/docs#template-syntax-element-directives-transition-fn) called `send` and `receive`. When an element is 'sent', it looks for a corresponding element being 'received', and generates a transition that transforms the element to its counterpart's position and fades it out. When an element is 'received', the reverse happens. If there is no counterpart, the `fallback` transition is used.\n *\n * https://svelte.dev/docs/svelte-transition#crossfade\n * @param {import('./public').CrossfadeParams & {\n * \tfallback?: (node: Element, params: import('./public').CrossfadeParams, intro: boolean) => import('./public').TransitionConfig;\n * }} params\n * @returns {[(node: any, params: import('./public').CrossfadeParams & { key: any; }) => () => import('./public').TransitionConfig, (node: any, params: import('./public').CrossfadeParams & { key: any; }) => () => import('./public').TransitionConfig]}\n */\nexport function crossfade({ fallback, ...defaults }) {\n\t/** @type {Map} */\n\tconst to_receive = new Map();\n\t/** @type {Map} */\n\tconst to_send = new Map();\n\t/**\n\t * @param {Element} from_node\n\t * @param {Element} node\n\t * @param {import('./public').CrossfadeParams} params\n\t * @returns {import('./public').TransitionConfig}\n\t */\n\tfunction crossfade(from_node, node, params) {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = (d) => Math.sqrt(d) * 30,\n\t\t\teasing = cubicOut\n\t\t} = assign(assign({}, defaults), params);\n\t\tconst from = from_node.getBoundingClientRect();\n\t\tconst to = node.getBoundingClientRect();\n\t\tconst dx = from.left - to.left;\n\t\tconst dy = from.top - to.top;\n\t\tconst dw = from.width / to.width;\n\t\tconst dh = from.height / to.height;\n\t\tconst d = Math.sqrt(dx * dx + dy * dy);\n\t\tconst style = getComputedStyle(node);\n\t\tconst transform = style.transform === 'none' ? '' : style.transform;\n\t\tconst opacity = +style.opacity;\n\t\treturn {\n\t\t\tdelay,\n\t\t\tduration: is_function(duration) ? duration(d) : duration,\n\t\t\teasing,\n\t\t\tcss: (t, u) => `\n\t\t\t\topacity: ${t * opacity};\n\t\t\t\ttransform-origin: top left;\n\t\t\t\ttransform: ${transform} translate(${u * dx}px,${u * dy}px) scale(${t + (1 - t) * dw}, ${\n\t\t\t\tt + (1 - t) * dh\n\t\t\t});\n\t\t\t`\n\t\t};\n\t}\n\n\t/**\n\t * @param {Map} items\n\t * @param {Map} counterparts\n\t * @param {boolean} intro\n\t * @returns {(node: any, params: import('./public').CrossfadeParams & { key: any; }) => () => import('./public').TransitionConfig}\n\t */\n\tfunction transition(items, counterparts, intro) {\n\t\treturn (node, params) => {\n\t\t\titems.set(params.key, node);\n\t\t\treturn () => {\n\t\t\t\tif (counterparts.has(params.key)) {\n\t\t\t\t\tconst other_node = counterparts.get(params.key);\n\t\t\t\t\tcounterparts.delete(params.key);\n\t\t\t\t\treturn crossfade(other_node, node, params);\n\t\t\t\t}\n\t\t\t\t// if the node is disappearing altogether\n\t\t\t\t// (i.e. wasn't claimed by the other list)\n\t\t\t\t// then we need to supply an outro\n\t\t\t\titems.delete(params.key);\n\t\t\t\treturn fallback && fallback(node, params, intro);\n\t\t\t};\n\t\t};\n\t}\n\treturn [transition(to_send, to_receive, false), transition(to_receive, to_send, true)];\n}\n","/**\n * Aspect ratios for images.\n * @typedef {Object} ImageAspectRatios\n * @property {string} RATIO_16_9 - Aspect ratio of 16:9.\n * @property {string} RATIO_1_1 - Aspect ratio of 1:1.\n * @property {string} RATIO_4_3 - Aspect ratio of 4:3.\n * @property {string} RATIO_3_2 - Aspect ratio of 3:2.\n * @property {string} RATIO_3_4 - Aspect ratio of 3:4.\n * @property {string} RATIO_NONE - Aspect ratio of none.\n */\n\n/**\n * Image aspect ratios.\n * @type {ImageAspectRatios}\n */\nexport const IMAGE_ASPECT_RATIOS = {\n RATIO_16_9: \"16/9\",\n RATIO_1_1: \"1/1\",\n RATIO_4_3: \"4/3\",\n RATIO_3_2: \"3/2\",\n RATIO_3_4: \"3/4\",\n RATIO_NONE: \"none\"\n};\n\n/**\n * @typedef {Object} AspectRatioClasses\n * @property {string} aspect-1/1 - Class for aspect ratio 1:1.\n * @property {string} aspect-16/9 - Class for aspect ratio 16:9.\n * @property {string} aspect-4/3 - Class for aspect ratio 4:3.\n * @property {string} aspect-3/2 - Class for aspect ratio 3:2.\n * @property {string} aspect-3/4 - Class for aspect ratio 3:4.\n * @property {string} aspect-none - Class for aspect ratio none.\n */\nexport const ASPECT_RATIO_CLASSES = {\n [IMAGE_ASPECT_RATIOS.RATIO_1_1]: \"aspect-1/1\",\n [IMAGE_ASPECT_RATIOS.RATIO_16_9]: \"aspect-16/9\",\n [IMAGE_ASPECT_RATIOS.RATIO_4_3]: \"aspect-4/3\",\n [IMAGE_ASPECT_RATIOS.RATIO_3_2]: \"aspect-3/2\",\n [IMAGE_ASPECT_RATIOS.RATIO_3_4]: \"aspect-3/4\",\n [IMAGE_ASPECT_RATIOS.RATIO_NONE]: \"aspect-none\"\n};\n\n/**\n * Validates aspect ratio classes.\n *\n * @param {string} aspectRatioClasses - A string of space-separated aspect ratio Tailwind classes.\n */\nexport function validateAspectRatioClasses(aspectRatioClasses) {\n const listOfClasses = aspectRatioClasses.split(\" \");\n const validClasses = Object.values(ASPECT_RATIO_CLASSES);\n const isValid = listOfClasses.every((aspectRatioClass) => {\n return validClasses.some((validClass) => aspectRatioClass.includes(validClass));\n });\n\n if (!isValid) {\n console.warn(\"Invalid aspect ratio class detected\");\n }\n}\n","// @ts-check\n/** @typedef {Object} FocusTrapOptions\n * @property {string | undefined} triggerElementQuery\n * @property {boolean} shouldTrapFocus\n */\n\n/** @type {import('svelte/action').Action} */\nexport const trapFocus = (node, options) => {\n /** @type {AbortController | undefined} */\n let abortController;\n let currentOptions = options;\n if (typeof window === \"undefined\") {\n return;\n }\n\n /** @type {HTMLElement} */\n let firstElement;\n /** @type {HTMLElement} */\n let secondElement;\n /** @type {HTMLElement} */\n let lastElement;\n\n const focusableElements =\n \"a:not([tabindex='-1']), area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]):not([tabindex='-1']), iframe, object, embed, *[contenteditable]\";\n\n /** @type {(e: KeyboardEvent) => void} */\n const onFirstElementKeydown = (e) => {\n if (!e.shiftKey && e.code === \"Tab\") {\n e.preventDefault();\n secondElement.focus();\n }\n if (e.shiftKey && e.code === \"Tab\") {\n e.preventDefault();\n lastElement.focus();\n }\n };\n\n /** @type {(e: KeyboardEvent) => void} */\n const onSecondElementKeydown = (e) => {\n if (e.shiftKey && e.code === \"Tab\") {\n e.preventDefault();\n firstElement.focus();\n }\n };\n\n /** @type {(e: KeyboardEvent) => void} */\n const onLastElementKeydown = (e) => {\n if (!e.shiftKey && e.code === \"Tab\") {\n e.preventDefault();\n firstElement.focus();\n }\n };\n\n const manageFocus = () => {\n if (currentOptions?.shouldTrapFocus !== true) {\n return;\n }\n\n abortController = new AbortController();\n const signal = abortController.signal;\n\n const focusableListList = node.querySelectorAll(focusableElements);\n\n const focusableList = Array.from(focusableListList);\n\n let triggerElement;\n if (currentOptions?.triggerElementQuery) {\n triggerElement = document.querySelector(options.triggerElementQuery);\n }\n\n if (triggerElement) {\n focusableList.unshift(triggerElement);\n }\n\n if (focusableList.length < 2) {\n return;\n }\n\n firstElement = /** @type {HTMLElement} */ (focusableList[0]);\n\n // For external trigger support\n secondElement = /** @type {HTMLElement} */ (focusableList[1]);\n\n lastElement = /** @type {HTMLElement} */ (focusableList[focusableList.length - 1]);\n\n firstElement?.addEventListener(\"keydown\", onFirstElementKeydown, { signal });\n secondElement?.addEventListener(\"keydown\", onSecondElementKeydown, { signal });\n lastElement?.addEventListener(\"keydown\", onLastElementKeydown, { signal });\n };\n\n const cleanUp = () => {\n abortController?.abort();\n };\n\n const observationChange = () => {\n cleanUp();\n manageFocus();\n };\n\n const observer = new MutationObserver(observationChange);\n observer.observe(node, { childList: true, subtree: true });\n\n manageFocus();\n return {\n update(newOptions) {\n currentOptions = newOptions;\n },\n destroy() {\n observer.disconnect();\n cleanUp();\n }\n };\n};\n","import mediaQueries from \"../design-tokens/mediaQueries\";\n// @ts-check\n\nexport const Breakpoints = /** @type {const} */ ({\n sm: \"sm\",\n md: \"md\",\n lg: \"lg\",\n xl: \"xl\"\n});\n\nexport const breakpointValues = /** @type {const} */ ({\n [Breakpoints.sm]: 0, // No need to use media queries for small screens\n [Breakpoints.md]: parseInt(mediaQueries[\"medium-min\"]),\n [Breakpoints.lg]: parseInt(mediaQueries[\"large-min\"]),\n [Breakpoints.xl]: parseInt(mediaQueries[\"xlarge-min\"])\n});\n\n/** @param {number} width */\nexport const getBreakpoint = (width) => {\n if (width >= breakpointValues.xl) {\n return Breakpoints.xl;\n }\n if (width >= breakpointValues.lg) {\n return Breakpoints.lg;\n }\n if (width >= breakpointValues.md) {\n return Breakpoints.md;\n }\n\n return Breakpoints.sm;\n};\n\nexport const breakpointWeights = /** @type {const} */ ({\n [Breakpoints.sm]: 0,\n [Breakpoints.md]: 1,\n [Breakpoints.lg]: 2,\n [Breakpoints.xl]: 3\n});\n\nexport const maxFontSizeMapForFullWidthText = /** @type {const} */ {\n [Breakpoints.sm]: 195,\n [Breakpoints.md]: 220,\n [Breakpoints.lg]: 410,\n [Breakpoints.xl]: 560\n};\n\nexport const isSmallOrMediumBreakpoint = (screenWidth) => {\n const currentBreakpoint = getBreakpoint(screenWidth);\n return breakpointWeights[currentBreakpoint] < breakpointWeights.lg;\n};\n","\n\n\n\n\n \n\n","\n\n\n\n\n{#if shouldShowArrow || isExternal}\n \n \n \n \n \n {label}\n \n {#if shouldShowArrow}\n \n \n \n \n \n {/if}\n \n \n {#if isExternal}\n (Opens in a new tab)\n {/if}\n \n{:else}\n \n \n \n \n \n {label}\n \n \n \n \n{/if}\n\n\n","\n\n\n\n\n \n\n\n\n","\n\n\n \n \n \n\n","\n\n{#if type === \"thick\"}\n \n{:else if type === \"thin\"}\n \n{/if}\n","/**\n * marked v14.1.4 - a markdown parser\n * Copyright (c) 2011-2024, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n/**\n * Gets the original marked default options.\n */\nfunction _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null,\n };\n}\nlet _defaults = _getDefaults();\nfunction changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape$1(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n let source = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n },\n };\n return obj;\n}\nfunction cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch {\n return null;\n }\n return href;\n}\nconst noopTest = { exec: () => null };\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape$1(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text),\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape$1(text),\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nclass _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0],\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^(?: {1,4}| {0,3}\\t)/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text,\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text,\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: rtrim(cap[0], '\\n'),\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n let lines = rtrim(cap[0], '\\n').split('\\n');\n let raw = '';\n let text = '';\n const tokens = [];\n while (lines.length > 0) {\n let inBlockquote = false;\n const currentLines = [];\n let i;\n for (i = 0; i < lines.length; i++) {\n // get lines up to a continuation\n if (/^ {0,3}>/.test(lines[i])) {\n currentLines.push(lines[i]);\n inBlockquote = true;\n }\n else if (!inBlockquote) {\n currentLines.push(lines[i]);\n }\n else {\n break;\n }\n }\n lines = lines.slice(i);\n const currentRaw = currentLines.join('\\n');\n const currentText = currentRaw\n // precede setext continuation with 4 spaces so it isn't a setext\n .replace(/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g, '\\n $1')\n .replace(/^ {0,3}>[ \\t]?/gm, '');\n raw = raw ? `${raw}\\n${currentRaw}` : currentRaw;\n text = text ? `${text}\\n${currentText}` : currentText;\n // parse blockquote lines as top level tokens\n // merge paragraphs if this is a continuation\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n this.lexer.blockTokens(currentText, tokens, true);\n this.lexer.state.top = top;\n // if there is no continuation then we are done\n if (lines.length === 0) {\n break;\n }\n const lastToken = tokens[tokens.length - 1];\n if (lastToken?.type === 'code') {\n // blockquote continuation cannot be preceded by a code block\n break;\n }\n else if (lastToken?.type === 'blockquote') {\n // include continuation in nested blockquote\n const oldToken = lastToken;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.blockquote(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.text.length) + newToken.text;\n break;\n }\n else if (lastToken?.type === 'list') {\n // include continuation in nested list\n const oldToken = lastToken;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.list(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;\n lines = newText.substring(tokens[tokens.length - 1].raw.length).split('\\n');\n continue;\n }\n }\n return {\n type: 'blockquote',\n raw,\n tokens,\n text,\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [],\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n let raw = '';\n let itemContents = '';\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let blankLine = !line.trim();\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else if (blankLine) {\n indent = cap[1].length + 1;\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n if (blankLine && /^[ \\t]*$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n const htmlBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}<(?:[a-z].*>|!--)`, 'i');\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n let nextLineWithoutTabs;\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n nextLineWithoutTabs = nextLine;\n }\n else {\n nextLineWithoutTabs = nextLine.replace(/\\t/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of html block\n if (htmlBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(nextLine)) {\n break;\n }\n if (nextLineWithoutTabs.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLineWithoutTabs.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.replace(/\\t/g, ' ').search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLineWithoutTabs.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n[ \\t]*\\n[ \\t]*$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: [],\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = list.items[list.items.length - 1].raw.trimEnd();\n list.items[list.items.length - 1].text = list.items[list.items.length - 1].text.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0],\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title,\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: [],\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (/^ *-+: *$/.test(align)) {\n item.align.push('right');\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align.push('center');\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align.push('left');\n }\n else {\n item.align.push(null);\n }\n }\n for (let i = 0; i < headers.length; i++) {\n item.header.push({\n text: headers[i],\n tokens: this.lexer.inline(headers[i]),\n header: true,\n align: item.align[i],\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map((cell, i) => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell),\n header: false,\n align: item.align[i],\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1]),\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0]),\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape$1(cap[1]),\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0],\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title,\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text,\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape$1(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text,\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0],\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2]),\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape$1(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape$1(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape$1(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = escape$1(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape$1(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text,\n };\n }\n }\n}\n\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?:[ \\t]*(?:\\n|$))+/;\nconst blockCode = /^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n + '|tr|track|ul';\nconst _comment = /|$))/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) closing tag\n + ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText,\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', '(?: {4}| {0,3}\\t)[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nconst blockGfm = {\n ...blockNormal,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex(),\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex(),\n};\n/**\n * Inline-Level Grammar\n */\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\\nconst blockSkip = /\\[[^[\\]]*?\\]\\((?:\\\\.|[^\\\\\\(\\)]|\\((?:\\\\.|[^\\\\\\(\\)])*\\))*\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelim = edit(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n + '|[^*]+(?=[^*])' // Consume to delim\n + '|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter\n + '|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])' // (3) #***a, ***a can only be Left Delimiter\n + '|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])' // (4) ***# can only be Left Delimiter\n + '|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n + '|[^_]+(?=[^_])' // Consume to delim\n + '|(?!_)[punct](_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n + '|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter\n + '|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])' // (3) #___a, ___a can only be Left Delimiter\n + '|[\\\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter\n + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst anyPunctuation = edit(/\\\\([punct])/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest,\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex(),\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n ...inlineNormal,\n escape: edit(escape).replace('])', '~|])').getRegex(),\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])((?:\\\\.|[^\\\\])*?(?:\\\\.|[^\\s~\\\\]))\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title,\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken?.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass _Renderer {\n options;\n parser; // set by the parser\n constructor(options) {\n this.options = options || _defaults;\n }\n space(token) {\n return '';\n }\n code({ text, lang, escaped }) {\n const langString = (lang || '').match(/^\\S*/)?.[0];\n const code = text.replace(/\\n$/, '') + '\\n';\n if (!langString) {\n return '
'\n                + (escaped ? code : escape$1(code, true))\n                + '
\\n';\n }\n return '
'\n            + (escaped ? code : escape$1(code, true))\n            + '
\\n';\n }\n blockquote({ tokens }) {\n const body = this.parser.parse(tokens);\n return `
\\n${body}
\\n`;\n }\n html({ text }) {\n return text;\n }\n heading({ tokens, depth }) {\n return `${this.parser.parseInline(tokens)}\\n`;\n }\n hr(token) {\n return '
\\n';\n }\n list(token) {\n const ordered = token.ordered;\n const start = token.start;\n let body = '';\n for (let j = 0; j < token.items.length; j++) {\n const item = token.items[j];\n body += this.listitem(item);\n }\n const type = ordered ? 'ol' : 'ul';\n const startAttr = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startAttr + '>\\n' + body + '\\n';\n }\n listitem(item) {\n let itemBody = '';\n if (item.task) {\n const checkbox = this.checkbox({ checked: !!item.checked });\n if (item.loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n raw: checkbox + ' ',\n text: checkbox + ' ',\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parser.parse(item.tokens, !!item.loose);\n return `
  • ${itemBody}
  • \\n`;\n }\n checkbox({ checked }) {\n return '';\n }\n paragraph({ tokens }) {\n return `

    ${this.parser.parseInline(tokens)}

    \\n`;\n }\n table(token) {\n let header = '';\n // header\n let cell = '';\n for (let j = 0; j < token.header.length; j++) {\n cell += this.tablecell(token.header[j]);\n }\n header += this.tablerow({ text: cell });\n let body = '';\n for (let j = 0; j < token.rows.length; j++) {\n const row = token.rows[j];\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.tablecell(row[k]);\n }\n body += this.tablerow({ text: cell });\n }\n if (body)\n body = `${body}`;\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n tablerow({ text }) {\n return `\\n${text}\\n`;\n }\n tablecell(token) {\n const content = this.parser.parseInline(token.tokens);\n const type = token.header ? 'th' : 'td';\n const tag = token.align\n ? `<${type} align=\"${token.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n /**\n * span level renderer\n */\n strong({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n em({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n codespan({ text }) {\n return `${text}`;\n }\n br(token) {\n return '
    ';\n }\n del({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n link({ href, title, tokens }) {\n const text = this.parser.parseInline(tokens);\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '
    ';\n return out;\n }\n image({ href, title, text }) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `\"${text}\"`;\n {\n const tokens = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens, callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (['options', 'parser'].includes(prop)) {\n // ignore options property\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (['options', 'block'].includes(prop)) {\n // ignore options and block properties\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n parseMarkdown(blockType) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const parse = (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.onError(!!opt.silent, !!opt.async);\n // throw error if an extension set async to true but parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n return throwError(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.'));\n }\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n opt.hooks.block = blockType;\n }\n const lexer = opt.hooks ? opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline);\n const parser = opt.hooks ? opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline);\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n return parse;\n }\n onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '

    An error occurred:

    '\n                    + escape$1(e.message + '', true)\n                    + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n\nconst markedInstance = new Marked();\nfunction marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = _Parser.parse;\nconst lexer = _Lexer.lex;\n\nexport { _Hooks as Hooks, _Lexer as Lexer, Marked, _Parser as Parser, _Renderer as Renderer, _TextRenderer as TextRenderer, _Tokenizer as Tokenizer, _defaults as defaults, _getDefaults as getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };\n//# sourceMappingURL=marked.esm.js.map\n","/*! @license DOMPurify 3.2.4 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.4/LICENSE */\n\n'use strict';\n\nconst {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor\n} = Object;\nlet {\n freeze,\n seal,\n create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n apply,\n construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\nif (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\nif (!construct) {\n construct = function construct(Func, args) {\n return new Func(...args);\n };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return apply(func, thisArg, args);\n };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return construct(func, args);\n };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n const newObject = create(null);\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (value && typeof value === 'object' && value.constructor === Object) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue() {\n return null;\n }\n return fallbackValue;\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ARIA_ATTR: ARIA_ATTR,\n ATTR_WHITESPACE: ATTR_WHITESPACE,\n CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n DATA_ATTR: DATA_ATTR,\n DOCTYPE_NAME: DOCTYPE_NAME,\n ERB_EXPR: ERB_EXPR,\n IS_ALLOWED_URI: IS_ALLOWED_URI,\n IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n MUSTACHE_EXPR: MUSTACHE_EXPR,\n TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5,\n // Deprecated\n entityNode: 6,\n // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\nconst _createHooksMap = function _createHooksMap() {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: []\n };\n};\nfunction createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n const DOMPurify = root => createDOMPurify(root);\n DOMPurify.version = '3.2.4';\n DOMPurify.removed = [];\n if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n let {\n document\n } = window;\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes\n } = window;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n let trustedTypesPolicy;\n let emptyHTML = '';\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName\n } = document;\n const {\n importNode\n } = originalDocument;\n let hooks = _createHooksMap();\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT\n } = EXPRESSIONS;\n let {\n IS_ALLOWED_URI: IS_ALLOWED_URI$1\n } = EXPRESSIONS;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n /* Decide if document with ... should be returned */\n let WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n const formElement = document.createElement('form');\n const isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function _parseConfig() {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, text);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n }\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n }\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n }\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function _checkValidNamespace(element) {\n let parent = getParentNode(element);\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n // The only way to switch from SVG to MathML is via\n // and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n // For XHTML and XML documents that support custom namespaces\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n }\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function _removeAttribute(name, element) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element\n });\n }\n element.removeAttribute(name);\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '' + dirty + '';\n }\n const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n const body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function _createNodeIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n };\n /**\n * _isClobbered\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function _isClobbered(element) {\n return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n };\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param value object to check whether it's a DOM node\n * @return true is object is a DOM node\n */\n const _isNode = function _isNode(value) {\n return typeof Node === 'function' && value instanceof Node;\n };\n function _executeHooks(hooks, currentNode, data) {\n arrayForEach(hooks, hook => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function _sanitizeElements(currentNode) {\n let content = null;\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any kind of possibly harmful comments */\n if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove element if anything forbids its presence */\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n return false;\n }\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n return false;\n }\n }\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n }\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n content = stringReplace(content, expr, ' ');\n });\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n return false;\n } else ;\n return true;\n };\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n const {\n attributes\n } = currentNode;\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined\n };\n let l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const {\n name,\n namespaceURI,\n value: attrValue\n } = attr;\n const lcName = transformCaseFunc(name);\n let value = name === 'value' ? attrValue : stringTrim(attrValue);\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Work around a security issue with comments inside attributes */\n if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title)/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Remove attribute */\n _removeAttribute(name, currentNode);\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n value = stringReplace(value, expr, ' ');\n });\n }\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n /* Handle attributes that require Trusted Types */\n if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n case 'TrustedScriptURL':\n {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {}\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty) {\n let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '';\n }\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n DOMPurify.setConfig = function () {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n arrayPush(hooks[entryPoint], hookFunction);\n };\n DOMPurify.removeHook = function (entryPoint, hookFunction) {\n if (hookFunction !== undefined) {\n const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n }\n return arrayPop(hooks[entryPoint]);\n };\n DOMPurify.removeHooks = function (entryPoint) {\n hooks[entryPoint] = [];\n };\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nmodule.exports = purify;\n//# sourceMappingURL=purify.cjs.js.map\n","module.exports = window.DOMPurify || (window.DOMPurify = require('dompurify').default || require('dompurify'));\n","import { getContext } from 'svelte';\nimport { browser } from './environment.js';\nimport { stores as browser_stores } from '../client/singletons.js';\n\n/**\n * A function that returns all of the contextual stores. On the server, this must be called during component initialization.\n * Only use this if you need to defer store subscription until after the component has mounted, for some reason.\n */\nexport const getStores = () => {\n\tconst stores = browser ? browser_stores : getContext('__svelte__');\n\n\treturn {\n\t\t/** @type {typeof page} */\n\t\tpage: {\n\t\t\tsubscribe: stores.page.subscribe\n\t\t},\n\t\t/** @type {typeof navigating} */\n\t\tnavigating: {\n\t\t\tsubscribe: stores.navigating.subscribe\n\t\t},\n\t\t/** @type {typeof updated} */\n\t\tupdated: stores.updated\n\t};\n};\n\n/**\n * A readable store whose value contains page data.\n *\n * On the server, this store can only be subscribed to during component initialization. In the browser, it can be subscribed to at any time.\n *\n * @type {import('svelte/store').Readable}\n */\nexport const page = {\n\tsubscribe(fn) {\n\t\tconst store = __SVELTEKIT_DEV__ ? get_store('page') : getStores().page;\n\t\treturn store.subscribe(fn);\n\t}\n};\n\n/**\n * A readable store.\n * When navigating starts, its value is a `Navigation` object with `from`, `to`, `type` and (if `type === 'popstate'`) `delta` properties.\n * When navigating finishes, its value reverts to `null`.\n *\n * On the server, this store can only be subscribed to during component initialization. In the browser, it can be subscribed to at any time.\n * @type {import('svelte/store').Readable}\n */\nexport const navigating = {\n\tsubscribe(fn) {\n\t\tconst store = __SVELTEKIT_DEV__ ? get_store('navigating') : getStores().navigating;\n\t\treturn store.subscribe(fn);\n\t}\n};\n\n/**\n * A readable store whose initial value is `false`. If [`version.pollInterval`](https://kit.svelte.dev/docs/configuration#version) is a non-zero value, SvelteKit will poll for new versions of the app and update the store value to `true` when it detects one. `updated.check()` will force an immediate check, regardless of polling.\n *\n * On the server, this store can only be subscribed to during component initialization. In the browser, it can be subscribed to at any time.\n * @type {import('svelte/store').Readable & { check(): Promise }}\n */\nexport const updated = {\n\tsubscribe(fn) {\n\t\tconst store = __SVELTEKIT_DEV__ ? get_store('updated') : getStores().updated;\n\n\t\tif (browser) {\n\t\t\tupdated.check = store.check;\n\t\t}\n\n\t\treturn store.subscribe(fn);\n\t},\n\tcheck: () => {\n\t\tthrow new Error(\n\t\t\tbrowser\n\t\t\t\t? 'Cannot check updated store before subscribing'\n\t\t\t\t: 'Can only check updated store in browser'\n\t\t);\n\t}\n};\n\n/**\n * @template {keyof ReturnType} Name\n * @param {Name} name\n * @returns {ReturnType[Name]}\n */\nfunction get_store(name) {\n\ttry {\n\t\treturn getStores()[name];\n\t} catch (e) {\n\t\tthrow new Error(\n\t\t\t`Cannot subscribe to '${name}' store on the server outside of a Svelte component, as it is bound to the current request via component context. This prevents state from leaking between users.` +\n\t\t\t\t'For more information, see https://kit.svelte.dev/docs/state-management#avoid-shared-state-on-the-server'\n\t\t);\n\t}\n}\n","/**\n * tua-body-scroll-lock v1.5.3\n * (c) 2024 Evinma, BuptStEve\n * @license MIT\n */\n\nvar isServer = function isServer() {\n return typeof window === 'undefined';\n};\nvar detectOS = function detectOS(ua) {\n ua = ua || navigator.userAgent;\n var ipad = /(iPad).*OS\\s([\\d_]+)/.test(ua);\n var iphone = !ipad && /(iPhone\\sOS)\\s([\\d_]+)/.test(ua);\n var android = /(Android);?[\\s/]+([\\d.]+)?/.test(ua);\n var ios = iphone || ipad;\n return {\n ios: ios,\n android: android\n };\n};\nfunction getEventListenerOptions(options) {\n /* istanbul ignore if */\n if (isServer()) return false;\n if (!options) {\n throw new Error('options must be provided');\n }\n var isSupportOptions = false;\n var listenerOptions = {\n get passive() {\n isSupportOptions = true;\n return undefined;\n }\n };\n /* istanbul ignore next */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n var noop = function noop() {};\n var testEvent = '__TUA_BSL_TEST_PASSIVE__';\n window.addEventListener(testEvent, noop, listenerOptions);\n window.removeEventListener(testEvent, noop, listenerOptions);\n var capture = options.capture;\n /* istanbul ignore next */\n return isSupportOptions ? options : typeof capture !== 'undefined' ? capture : false;\n}\nfunction noticeRequiredTargetElement(targetElement) {\n if (targetElement) return false;\n if (targetElement === null) return false;\n /* istanbul ignore if */\n if (process.env.NODE_ENV === 'production') return false;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'test') {\n console.warn('If scrolling is also required in the floating layer, ' + 'the target element must be provided.');\n }\n return true;\n}\n/**\n * Get global function that calls preventDefault\n */\nfunction getPreventEventDefault() {\n if ('__BSL_PREVENT_DEFAULT__' in window) {\n return window.__BSL_PREVENT_DEFAULT__;\n }\n window.__BSL_PREVENT_DEFAULT__ = function (event) {\n if (!event.cancelable) return;\n event.preventDefault();\n };\n return window.__BSL_PREVENT_DEFAULT__;\n}\nfunction toArray(x) {\n if (!x) return [];\n return Array.isArray(x) ? x : [x];\n}\n\nvar initialLockState = {\n lockedNum: 0,\n lockedElements: [],\n unLockCallback: null,\n documentListenerAdded: false,\n initialClientPos: {\n clientX: 0,\n clientY: 0\n }\n};\n/**\n * get current lockState\n * @param options\n * @returns lockState\n */\nfunction getLockState(options) {\n if (isServer()) return initialLockState;\n /** use local lockState */\n if (!(options === null || options === void 0 ? void 0 : options.useGlobalLockState)) return getLockState.lockState;\n /** use global lockState */\n var lockState = '__BSL_LOCK_STATE__' in window ? Object.assign(Object.assign({}, initialLockState), window.__BSL_LOCK_STATE__) : initialLockState;\n /** assign to global */\n window.__BSL_LOCK_STATE__ = lockState;\n return lockState;\n}\ngetLockState.lockState = initialLockState;\n\nfunction handleScroll(event, targetElement, initialClientPos) {\n if (targetElement) {\n var scrollTop = targetElement.scrollTop,\n scrollLeft = targetElement.scrollLeft,\n scrollWidth = targetElement.scrollWidth,\n scrollHeight = targetElement.scrollHeight,\n clientWidth = targetElement.clientWidth,\n clientHeight = targetElement.clientHeight;\n var clientX = event.targetTouches[0].clientX - initialClientPos.clientX;\n var clientY = event.targetTouches[0].clientY - initialClientPos.clientY;\n var isVertical = Math.abs(clientY) > Math.abs(clientX);\n var isOnTop = clientY > 0 && scrollTop === 0;\n var isOnLeft = clientX > 0 && scrollLeft === 0;\n var isOnRight = clientX < 0 && scrollLeft + clientWidth + 1 >= scrollWidth;\n var isOnBottom = clientY < 0 && scrollTop + clientHeight + 1 >= scrollHeight;\n if (isVertical && (isOnTop || isOnBottom) || !isVertical && (isOnLeft || isOnRight)) {\n return getPreventEventDefault()(event);\n }\n }\n event.stopPropagation();\n return true;\n}\n\nfunction setOverflowHiddenPc() {\n var $html = document.documentElement;\n var htmlStyle = Object.assign({}, $html.style);\n var scrollBarWidth = window.innerWidth - $html.clientWidth;\n var previousPaddingRight = parseInt(window.getComputedStyle($html).paddingRight, 10);\n $html.style.overflow = 'hidden';\n $html.style.boxSizing = 'border-box';\n $html.style.paddingRight = \"\".concat(scrollBarWidth + previousPaddingRight, \"px\");\n return function () {\n ['overflow', 'boxSizing', 'paddingRight'].forEach(function (x) {\n $html.style[x] = htmlStyle[x] || '';\n });\n };\n}\nfunction setOverflowHiddenMobile(options) {\n var $html = document.documentElement;\n var $body = document.body;\n var scrollTop = $html.scrollTop || $body.scrollTop;\n var htmlStyle = Object.assign({}, $html.style);\n var bodyStyle = Object.assign({}, $body.style);\n $html.style.height = '100%';\n $html.style.overflow = 'hidden';\n $body.style.top = \"-\".concat(scrollTop, \"px\");\n $body.style.width = '100%';\n $body.style.height = 'auto';\n $body.style.position = 'fixed';\n $body.style.overflow = (options === null || options === void 0 ? void 0 : options.overflowType) || 'hidden';\n return function () {\n $html.style.height = htmlStyle.height || '';\n $html.style.overflow = htmlStyle.overflow || '';\n ['top', 'width', 'height', 'overflow', 'position'].forEach(function (x) {\n $body.style[x] = bodyStyle[x] || '';\n });\n var supportsNativeSmoothScroll = ('scrollBehavior' in document.documentElement.style);\n if (supportsNativeSmoothScroll) {\n window.scrollTo({\n top: scrollTop,\n behavior: 'instant'\n });\n } else {\n window.scrollTo(0, scrollTop);\n }\n };\n}\n\n/**\n * lock body scroll\n * @param targetElement the element(s) still needs scrolling(iOS only)\n * @param options\n */\nfunction lock(targetElement, options) {\n if (isServer()) return;\n noticeRequiredTargetElement(targetElement);\n var detectRes = detectOS();\n var lockState = getLockState(options);\n if (detectRes.ios) {\n toArray(targetElement).filter(function (e) {\n return e && lockState.lockedElements.indexOf(e) === -1;\n }).forEach(function (element) {\n element.ontouchstart = function (event) {\n var _event$targetTouches$ = event.targetTouches[0],\n clientX = _event$targetTouches$.clientX,\n clientY = _event$targetTouches$.clientY;\n lockState.initialClientPos = {\n clientX: clientX,\n clientY: clientY\n };\n };\n element.ontouchmove = function (event) {\n handleScroll(event, element, lockState.initialClientPos);\n };\n lockState.lockedElements.push(element);\n });\n addTouchMoveListener(lockState);\n } else if (lockState.lockedNum <= 0) {\n lockState.unLockCallback = detectRes.android ? setOverflowHiddenMobile(options) : setOverflowHiddenPc();\n }\n lockState.lockedNum += 1;\n}\n/**\n * unlock body scroll\n * @param targetElement the element(s) still needs scrolling(iOS only)\n * @param options\n */\nfunction unlock(targetElement, options) {\n if (isServer()) return;\n noticeRequiredTargetElement(targetElement);\n var lockState = getLockState(options);\n lockState.lockedNum -= 1;\n if (lockState.lockedNum > 0) return;\n if (unlockByCallback(lockState)) return;\n toArray(targetElement).forEach(function (element) {\n var index = lockState.lockedElements.indexOf(element);\n if (element && index !== -1) {\n element.ontouchmove = null;\n element.ontouchstart = null;\n lockState.lockedElements.splice(index, 1);\n }\n });\n removeTouchMoveListener(lockState);\n}\n/**\n * clear all body locks\n * @param options\n */\nfunction clearBodyLocks(options) {\n if (isServer()) return;\n var lockState = getLockState(options);\n lockState.lockedNum = 0;\n if (unlockByCallback(lockState)) return;\n if (lockState.lockedElements.length) {\n var element = lockState.lockedElements.pop();\n while (element) {\n element.ontouchmove = null;\n element.ontouchstart = null;\n element = lockState.lockedElements.pop();\n }\n }\n removeTouchMoveListener(lockState);\n}\nfunction unlockByCallback(lockState) {\n if (detectOS().ios) return false;\n if (typeof lockState.unLockCallback !== 'function') return false;\n lockState.unLockCallback();\n return true;\n}\nfunction addTouchMoveListener(lockState) {\n if (!detectOS().ios) return;\n if (lockState.documentListenerAdded) return;\n document.addEventListener('touchmove', getPreventEventDefault(), getEventListenerOptions({\n passive: false\n }));\n lockState.documentListenerAdded = true;\n}\nfunction removeTouchMoveListener(lockState) {\n if (!lockState.documentListenerAdded) return;\n document.removeEventListener('touchmove', getPreventEventDefault(), getEventListenerOptions({\n passive: false\n }));\n lockState.documentListenerAdded = false;\n}\n\nexport { clearBodyLocks, getLockState, lock, unlock };\n","\n\n\n\n{#if tags.length > 0}\n
    \n{/if}\n","/**\n * textFit v2.3.1\n * Previously known as jQuery.textFit\n * 11/2014 by STRML (strml.github.com)\n * MIT License\n *\n * To use: textFit(document.getElementById('target-div'), options);\n *\n * Will make the *text* content inside a container scale to fit the container\n * The container is required to have a set width and height\n * Uses binary search to fit text with minimal layout calls.\n * Version 2.0 does not use jQuery.\n */\n/*global define:true, document:true, window:true, HTMLElement:true*/\n\n(function(root, factory) {\n \"use strict\";\n\n // UMD shim\n if (typeof define === \"function\" && define.amd) {\n // AMD\n define([], factory);\n } else if (typeof exports === \"object\") {\n // Node/CommonJS\n module.exports = factory();\n } else {\n // Browser\n root.textFit = factory();\n }\n\n}(typeof global === \"object\" ? global : this, function () {\n \"use strict\";\n\n var defaultSettings = {\n alignVert: false, // if true, textFit will align vertically using css tables\n alignHoriz: false, // if true, textFit will set text-align: center\n multiLine: false, // if true, textFit will not set white-space: no-wrap\n detectMultiLine: true, // disable to turn off automatic multi-line sensing\n minFontSize: 6,\n maxFontSize: 80,\n reProcess: true, // if true, textFit will re-process already-fit nodes. Set to 'false' for better performance\n widthOnly: false, // if true, textFit will fit text to element width, regardless of text height\n alignVertWithFlexbox: false, // if true, textFit will use flexbox for vertical alignment\n };\n\n return function textFit(els, options) {\n\n if (!options) options = {};\n\n // Extend options.\n var settings = {};\n for(var key in defaultSettings){\n if(options.hasOwnProperty(key)){\n settings[key] = options[key];\n } else {\n settings[key] = defaultSettings[key];\n }\n }\n\n // Convert jQuery objects into arrays\n if (typeof els.toArray === \"function\") {\n els = els.toArray();\n }\n\n // Support passing a single el\n var elType = Object.prototype.toString.call(els);\n if (elType !== '[object Array]' && elType !== '[object NodeList]' &&\n elType !== '[object HTMLCollection]'){\n els = [els];\n }\n\n // Process each el we've passed.\n for(var i = 0; i < els.length; i++){\n processItem(els[i], settings);\n }\n };\n\n /**\n * The meat. Given an el, make the text inside it fit its parent.\n * @param {DOMElement} el Child el.\n * @param {Object} settings Options for fit.\n */\n function processItem(el, settings){\n if (!isElement(el) || (!settings.reProcess && el.getAttribute('textFitted'))) {\n return false;\n }\n\n // Set textFitted attribute so we know this was processed.\n if(!settings.reProcess){\n el.setAttribute('textFitted', 1);\n }\n\n var innerSpan, originalHeight, originalHTML, originalWidth;\n var low, mid, high;\n\n // Get element data.\n originalHTML = el.innerHTML;\n originalWidth = innerWidth(el);\n originalHeight = innerHeight(el);\n\n // Don't process if we can't find box dimensions\n if (!originalWidth || (!settings.widthOnly && !originalHeight)) {\n if(!settings.widthOnly)\n throw new Error('Set a static height and width on the target element ' + el.outerHTML +\n ' before using textFit!');\n else\n throw new Error('Set a static width on the target element ' + el.outerHTML +\n ' before using textFit!');\n }\n\n // Add textFitted span inside this container.\n if (originalHTML.indexOf('textFitted') === -1) {\n innerSpan = document.createElement('span');\n innerSpan.className = 'textFitted';\n // Inline block ensure it takes on the size of its contents, even if they are enclosed\n // in other tags like

    \n innerSpan.style['display'] = 'inline-block';\n innerSpan.innerHTML = originalHTML;\n el.innerHTML = '';\n el.appendChild(innerSpan);\n } else {\n // Reprocessing.\n innerSpan = el.querySelector('span.textFitted');\n // Remove vertical align if we're reprocessing.\n if (hasClass(innerSpan, 'textFitAlignVert')){\n innerSpan.className = innerSpan.className.replace('textFitAlignVert', '');\n innerSpan.style['height'] = '';\n el.className.replace('textFitAlignVertFlex', '');\n }\n }\n\n // Prepare & set alignment\n if (settings.alignHoriz) {\n el.style['text-align'] = 'center';\n innerSpan.style['text-align'] = 'center';\n }\n\n // Check if this string is multiple lines\n // Not guaranteed to always work if you use wonky line-heights\n var multiLine = settings.multiLine;\n if (settings.detectMultiLine && !multiLine &&\n innerSpan.scrollHeight >= parseInt(window.getComputedStyle(innerSpan)['font-size'], 10) * 2){\n multiLine = true;\n }\n\n // If we're not treating this as a multiline string, don't let it wrap.\n if (!multiLine) {\n el.style['white-space'] = 'nowrap';\n }\n\n low = settings.minFontSize;\n high = settings.maxFontSize;\n\n // Binary search for highest best fit\n var size = low;\n while (low <= high) {\n mid = (high + low) >> 1;\n innerSpan.style.fontSize = mid + 'px';\n if(innerSpan.scrollWidth <= originalWidth && (settings.widthOnly || innerSpan.scrollHeight <= originalHeight)){\n size = mid;\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n // await injection point\n }\n // found, updating font if differs:\n if( innerSpan.style.fontSize != size + 'px' ) innerSpan.style.fontSize = size + 'px';\n\n // Our height is finalized. If we are aligning vertically, set that up.\n if (settings.alignVert) {\n addStyleSheet();\n var height = innerSpan.scrollHeight;\n if (window.getComputedStyle(el)['position'] === \"static\"){\n el.style['position'] = 'relative';\n }\n if (!hasClass(innerSpan, \"textFitAlignVert\")){\n innerSpan.className = innerSpan.className + \" textFitAlignVert\";\n }\n innerSpan.style['height'] = height + \"px\";\n if (settings.alignVertWithFlexbox && !hasClass(el, \"textFitAlignVertFlex\")) {\n el.className = el.className + \" textFitAlignVertFlex\";\n }\n }\n }\n\n // Calculate height without padding.\n function innerHeight(el){\n var style = window.getComputedStyle(el, null);\n return el.clientHeight -\n parseInt(style.getPropertyValue('padding-top'), 10) -\n parseInt(style.getPropertyValue('padding-bottom'), 10);\n }\n\n // Calculate width without padding.\n function innerWidth(el){\n var style = window.getComputedStyle(el, null);\n return el.clientWidth -\n parseInt(style.getPropertyValue('padding-left'), 10) -\n parseInt(style.getPropertyValue('padding-right'), 10);\n }\n\n //Returns true if it is a DOM element\n function isElement(o){\n return (\n typeof HTMLElement === \"object\" ? o instanceof HTMLElement : //DOM2\n o && typeof o === \"object\" && o !== null && o.nodeType === 1 && typeof o.nodeName===\"string\"\n );\n }\n\n function hasClass(element, cls) {\n return (' ' + element.className + ' ').indexOf(' ' + cls + ' ') > -1;\n }\n\n // Better than a stylesheet dependency\n function addStyleSheet() {\n if (document.getElementById(\"textFitStyleSheet\")) return;\n var style = [\n \".textFitAlignVert{\",\n \"position: absolute;\",\n \"top: 0; right: 0; bottom: 0; left: 0;\",\n \"margin: auto;\",\n \"display: flex;\",\n \"justify-content: center;\",\n \"flex-direction: column;\",\n \"}\",\n \".textFitAlignVertFlex{\",\n \"display: flex;\",\n \"}\",\n \".textFitAlignVertFlex .textFitAlignVert{\",\n \"position: static;\",\n \"}\",].join(\"\");\n\n var css = document.createElement(\"style\");\n css.type = \"text/css\";\n css.id = \"textFitStyleSheet\";\n css.innerHTML = style;\n document.body.appendChild(css);\n }\n}));\n","export const VALID_CACHE_KEY_MAP = {\n CONTRIBUTORS: \"contributors\",\n GLOBAL_NAV: \"globalNav\",\n JOBS: \"jobs\",\n PAGE_DATA_MAP: \"pageDataMap\",\n SITEMAP: \"sitemap\"\n};\n\nexport const VALID_CACHE_KEYS = Object.values(VALID_CACHE_KEY_MAP);\n\nexport const CACHE_DIRECTORY = \"tmp\";\nexport const BUILD_DIRECTORY = \"build\";\n\nexport const ITEM_PREVIEW_LIST_FORMS = {\n Story2: \"Story 2\",\n Story3: \"Story 3\",\n Story3FeatureImageLeft: \"Story 3 featured: full-width left\",\n Story3FeatureImageRight: \"Story 3 featured: full-width right\",\n Story3FeatureTwoThirds: \"Story 3 featured: two-thirds\",\n Story3FeatureHalf: \"Story 3 featured: half\",\n Link2: \"Link 2\",\n Link2Feature: \"Link 2 featured\",\n Link3: \"Link 3\",\n Link4: \"Link 4\",\n Link4TitleOnly: \"Link 4 title only\",\n Avatar4: \"Avatar 4\",\n Avatar6: \"Avatar 6\",\n\n // special purpose\n Headline: \"Headline\"\n};\n\nexport const FEATURED_IMAGES_POSITIONS = {\n Top: \"top\",\n Left: \"left\",\n Right: \"right\"\n};\n\nexport const PRIVACY_MANDATE_REGIONS = [\n \"AT\",\n \"BE\",\n \"BG\",\n \"HR\",\n \"CY\",\n \"CZ\",\n \"DK\",\n \"EE\",\n \"FI\",\n \"FR\",\n \"DE\",\n \"EL\",\n \"GG\",\n \"HU\",\n \"IE\",\n \"IS\",\n \"IT\",\n \"LI\",\n \"LV\",\n \"LT\",\n \"LU\",\n \"MT\",\n \"NL\",\n \"NO\",\n \"PL\",\n \"PT\",\n \"RO\",\n \"SK\",\n \"SI\",\n \"ES\",\n \"SE\",\n \"UK\",\n \"US-CA\",\n \"US-CO\",\n \"US-DE\",\n \"US-OR\"\n];\n\nexport const BANNER_COOKIE_NAME = \"of_banner\";\n\nexport const REQUIRED_COOKIES = [\n \"_of\", //TODO: Remove this once we retire in-house cookie banner\n \"OptanonConsent\", //Accepted or rejected cookies\n \"OptanonAlertBoxClosed\", //Tracks when and if the Optanon alert box has been dismissed\n BANNER_COOKIE_NAME, // whether banner has been dismissed\n \"__stripe_mid\", //new fundraise up cookie 9/23\n \"fundraiseup_session\", // Fundraise Up required\n \"fundraiseup_cid\", // Fundrasise Up required\n \"ASLBSA\", // Azure Front door\n \"ASLBSACORS\" // Azure Front door\n];\n\nexport const BREAK_POINTS = {\n sm: 320,\n md: 680,\n lg: 1200\n};\n\nexport const SALESFORCE_CONSTANTS = {\n customHandlerEndpoint: \"https://cloud.email.obama.org/signup-autocompleteV2\",\n webToCaseEndPoint:\n \"https://webto.salesforce.com/servlet/servlet.WebToCase?encoding=UTF-8&orgid=00D36000001GZTv\",\n fieldNames: {\n orgId: \"00N1R00000TOZ8p\",\n campaignId: \"00N1R00000TOZ8p\",\n contactSourceUrl: \"00N3600000RtkFX\",\n subject: \"subject\",\n firstName: \"00N3600000Rdh4s\",\n lastName: \"00N3600000Rdh4x\",\n email: \"email\",\n phone: \"phone\",\n description: \"description\",\n redirectUrl: \"retURL\"\n }\n};\n","export function getUrlObject(url) {\n if (!url || url.startsWith(\"/\") || url.startsWith(\"?\")) {\n return null;\n }\n\n try {\n const urlObj = new URL(url);\n return urlObj;\n } catch (e) {\n console.warn(`can't convert \"${url}\" to URL object`);\n return null;\n }\n}\n\nconst INTERNAL_ORIGINS = [\"https://www.obama.org\", \"http://www.obama.org\", \"https://obama.org\"];\n\nexport function isExternalUrl(url, currentOrigin) {\n if (!url || url.startsWith(\"/\") || url.startsWith(\"?\")) {\n return false;\n }\n\n const urlObj = getUrlObject(url);\n if (urlObj) {\n const targetOrigin = urlObj.origin;\n if (INTERNAL_ORIGINS.includes(targetOrigin)) {\n return false;\n }\n return targetOrigin !== currentOrigin;\n }\n // Default to the link being external if we can't figure out the origin\n return true;\n}\n\n/*\n correctedUrl \n a) makes internal full links relative (So www.obama.org/about becomes /about, so sveltekit will render page on static build)\n b) adds trailing slash if not \n*/\nexport function correctedUrl(url) {\n let isExternal = isExternalUrl(url);\n if (!isExternal) {\n const urlObj = getUrlObject(url);\n if (urlObj) {\n url = urlObj.pathname;\n }\n }\n return isMissingTrailingSlash(url) ? `${url}/` : url;\n}\n\n/**\n * naïve helper to add the origin to url if internal\n *\n * @param {*} url\n * @param {*} currentOrigin\n * @returns\n */\nexport function getFullUrl(url, currentOrigin) {\n if (!url) {\n return \"\";\n }\n\n if (url.startsWith(\"/\") || url.startsWith(\"?\")) {\n return `${currentOrigin}${url?.startsWith(\"/\") ? \"\" : \"/\"}${url}`;\n }\n\n return url;\n}\n\nexport function isNotStaticFile(url) {\n const types = [\".pdf\", \".mp4\", \".html\", \".jpg\", \".jpeg\", \".png\", \".csv\", \".zip\"];\n return !types.some((type) => url.includes(type));\n}\n\nexport function isRootRelative(url) {\n return url.startsWith(\"/\");\n}\n\nexport function hasNoTrailingSlash(url) {\n return !url.endsWith(\"/\") && !url.match(/(\\/)?#.*$/) && !url.match(/(\\/)?\\?.*$/);\n}\n\nexport function isMissingTrailingSlash(url) {\n return !!url && isNotStaticFile(url) && isRootRelative(url) && hasNoTrailingSlash(url);\n}\n","export const IMAGE_VARIANT_MAP = {\n \"1:1\": \"square\",\n \"3:2\": \"landscape\",\n \"3:4\": \"portrait\"\n};\nexport const ASPECT_RATIO_CLASSES = {\n RATIO_1_1: \"aspect-1/1\",\n RATIO_4_3: \"aspect-4/3\",\n RATIO_3_2: \"aspect-3/2\",\n RATIO_3_4: \"aspect-3/4\",\n RATIO_AUTO: \"aspect-[auto]\"\n};\n\nexport const STORY_CARD_ASPECT_RATIO_CLASSES = {\n RATIO_1_1: \"aspect-1/1\",\n RATIO_3_2: \"aspect-3/2\",\n RATIO_3_4: \"aspect-3/4\"\n};\n\n// A sensible array of widths for srcset.\nexport const SRCSET_WIDTHS = [180, 360, 420, 720, 850, 1250, 1670, 3200];\n","import { IMAGE_VARIANT_MAP, ASPECT_RATIO_CLASSES } from \"../image\";\n\n/**\n * by default, large image assets (greater than 20MB and other asset files greater than 10MB) are served from this url.\n * for reference: https://www.contentful.com/developers/docs/references/content-delivery-api/#/reference/assets\n */\nconst CONTENTFUL_LARGE_ASSET_URL_PREFIX = \"//downloads.ctfassets.net\";\n\nconst CONTENTFUL_IMAGE_CDN_PREFIX = \"//images.ctfassets.net\";\n\n/**\n * only images served from contentful image cdn support resizing params.\n * use this helper to enable resizing for large images.\n *\n * @param {string} url\n * @returns\n */\nfunction swapAssetUrl(url = \"\") {\n return url.replace(CONTENTFUL_LARGE_ASSET_URL_PREFIX, CONTENTFUL_IMAGE_CDN_PREFIX);\n}\n\nconst CONTENTFUL_API_DEFAULTS = {\n q: 75,\n w: 1014\n};\n\nexport function contentfulImageUrlFor(url = \"\", paramOverrides = {}) {\n if (!url) {\n throw new Error(\"Asset is missing a url\");\n }\n\n // default to `webp` except for pngs and svgs\n const fm = url.endsWith(\".png\") || url.endsWith(\".svg\") ? \"\" : \"webp\";\n\n const apiParams = { ...CONTENTFUL_API_DEFAULTS, fm, ...paramOverrides };\n\n const params = new URLSearchParams();\n\n url = swapAssetUrl(url);\n\n if (url?.startsWith(CONTENTFUL_IMAGE_CDN_PREFIX)) {\n for (const key of Object.keys(apiParams)) {\n params.set(key, apiParams[key]);\n }\n }\n\n // this is an unfortunate necessity. For some reason the `size` property\n // is not available on the params object, so we spread it and check the length.\n if ([...params].length) {\n return `${url}?${params.toString()}`;\n } else {\n return url;\n }\n}\n\nexport function buildSrc(asset, resizeParams, ignoreContentfulImgResize) {\n let url = asset?.fields?.file?.url;\n if (!url) {\n return null;\n }\n\n url = swapAssetUrl(url);\n\n if (ignoreContentfulImgResize || !url?.startsWith(CONTENTFUL_IMAGE_CDN_PREFIX)) {\n return url;\n }\n\n return contentfulImageUrlFor(url, resizeParams);\n}\n\n// This function is used to generate the srcset attribute for an image\n// It takes an array integers representing the widths of each image in (real) pixels\n// and generates a srcset for each.\nexport function srcSetFromWidths(url, widths = [], paramOverrides = {}) {\n if (widths.length === 0 || !url) {\n return;\n }\n\n return widths\n .map((width) => `${contentfulImageUrlFor(url, { ...paramOverrides, w: width })} ${width}w`)\n .join(\",\\n\");\n}\n\n// These values are pulled from the design tokens used in the\n// tailwind config for @ObamaFoundation/of-design-system\nconst SCREENS = {\n sm: \"320px\",\n md: \"680px\",\n lg: \"1200px\",\n xl: \"1920px\"\n};\n\nfunction sizeForMinWidth(minWidth, size) {\n return `(min-width: ${minWidth}) ${size}`;\n}\n\n/**\n *\n * @param {Partial>} sizes\n * @param {typeof SCREENS} breakpoints\n * @returns\n */\nexport function sizesForBreakpoints(sizes, breakpoints = SCREENS) {\n // If there are no sizes, or all sizes are 100vw, we don't need to specify\n if (!sizes) {\n return;\n }\n\n if (Object.keys(sizes).length === 0) {\n return;\n }\n if (Object.values(sizes).every((size) => !size || size === \"100vw\")) {\n return;\n }\n\n // We want to control the order here because the sizes are cascading\n // and we want to make sure the smallest size is last.\n const sizeAttr = [\"xl\", \"lg\", \"md\", \"sm\"].flatMap((/** @type {keyof typeof SCREENS} */ size) => {\n const minWidth = breakpoints[size];\n const sizeForWidth = sizes[size];\n\n // Ignore missing values so we can respect the cascade\n // without needing to specify all sizes\n if (!minWidth || !sizeForWidth) {\n return [];\n }\n\n return sizeForMinWidth(minWidth, sizeForWidth);\n });\n\n // Add the default size (all screen sizes < sm)\n sizeAttr.push(\"100vw\");\n\n return sizeAttr.join(\", \");\n}\n\nexport function altTextToDisplay(altText) {\n const placeholderAltValues = [\n \"placeholder\",\n \"none\",\n \"alt text missing\",\n \"gray placeholder image for qa\",\n \"missing\"\n ];\n if (altText && !placeholderAltValues.includes(altText.toLowerCase())) {\n return altText;\n } else {\n return \"\";\n }\n}\n\nexport function getImageOrientation(asset) {\n const { height, width } = asset?.fields?.file?.details?.image || {};\n\n if (!height || !width) {\n return;\n }\n\n // if the difference between height and width is within 5%, treat as square\n return height > width\n ? (height - width) / width > 0.05\n ? \"portrait\"\n : \"square\"\n : (width - height) / height > 0.05\n ? \"landscape\"\n : \"square\";\n}\n\nexport const getImageAspectRatio = (asset, aspectRatio) => {\n const imageDetails = asset?.fields?.file?.details?.image || {};\n const { width, height } = imageDetails;\n\n let mappedVariant = IMAGE_VARIANT_MAP[aspectRatio];\n let calculatedVariant = IMAGE_VARIANT_MAP[\"1:1\"];\n if (width > height) {\n calculatedVariant = IMAGE_VARIANT_MAP[\"3:2\"];\n } else if (width < height) {\n calculatedVariant = IMAGE_VARIANT_MAP[\"3:4\"];\n }\n\n return mappedVariant || calculatedVariant;\n};\n\nexport const getClosestAspectRatioClass = (\n width,\n height,\n validAspectRatios = ASPECT_RATIO_CLASSES\n) => {\n const aspectRatio = width / height;\n\n /* store the closest aspect ratio found in ASPECT_RATIO_CLASSES. */\n let closestAspectRatio = null;\n\n /* store the smallest difference between the calculated aspect ratio and the aspect ratios in ASPECT_RATIO_CLASSES. */\n let minDifference = Infinity;\n\n for (const ratio in validAspectRatios) {\n if (Object.hasOwn(validAspectRatios, ratio)) {\n const ratioValueString = validAspectRatios[ratio];\n if (ratioValueString === \"aspect-[auto]\") {\n continue; // Skip the \"auto\" aspect ratio\n }\n const calcRatios = ratioValueString.split(\"/\");\n const ratioWidth = Number(calcRatios[0].split(\"-\")[1]);\n const ratioHeight = Number(calcRatios[1]);\n const ratioValue = ratioWidth / ratioHeight;\n\n /* calculates the absolute difference between the calculated aspect ratio and the aspect ratio of the given width and height. */\n const difference = Math.abs(aspectRatio - ratioValue);\n\n /* calculates the new smallest difference and the current aspect ratio, respectively. */\n if (difference < minDifference) {\n minDifference = difference;\n closestAspectRatio = validAspectRatios[ratio];\n }\n }\n }\n return closestAspectRatio;\n};\n","import { writable } from \"svelte/store\";\n\n// Used to set the theme of the Global Navigation\nexport const heroThemeStore = writable(\"transparent\");\n\n// Used to store applied filter items\nexport const filterItemsStore = writable([]);\n","export const getTotalNumberOfSelectedFilters = (activeFilters = []) => {\n return activeFilters.reduce((accumulator, currentFilterGroup) => {\n currentFilterGroup.bodyProps.options.forEach((option) => {\n if (option.isChecked === true) {\n accumulator++;\n }\n });\n return accumulator;\n }, 0);\n};\n\nexport const filterOutInactiveFilterGroups = (filterGroups) => {\n return filterGroups.filter((filterGroup) => {\n return filterGroup.bodyProps.options.some((option) => {\n return option.isChecked;\n });\n });\n};\n\n/**\n * transform applied filter groups to active filters\n *\n * @param {*} selectedFilterGroups\n * @returns\n */\nexport const flattenAppliedFilterGroups = (selectedFilterGroups) =>\n selectedFilterGroups.reduce((selectedOptions, currentFilterGroup) => {\n currentFilterGroup.bodyProps.options.forEach((option) => {\n if (option.isChecked) {\n selectedOptions.push(option);\n }\n });\n return selectedOptions;\n }, []);\n","// used in Attr to signal changes\nexport const CHANGED = Symbol('changed');\n\n// used in Element to setup once classList\nexport const CLASS_LIST = Symbol('classList');\n\n// used in Document to attach once customElements\nexport const CUSTOM_ELEMENTS = Symbol('CustomElements');\n\n// used in HTMLTemplateElement\nexport const CONTENT = Symbol('content');\n\n// used in Element for data attributes\nexport const DATASET = Symbol('dataset');\n\n// used in Document to attach the DocType\nexport const DOCTYPE = Symbol('doctype');\n\n// used in parser and Document to attach once a DOMParser\nexport const DOM_PARSER = Symbol('DOMParser');\n\n// used to reference an end node\nexport const END = Symbol('end');\n\n// used in Document to make the globalThis an event target\nexport const EVENT_TARGET = Symbol('EventTarget');\n\n// used to augment a created document defaultView\nexport const GLOBALS = Symbol('globals');\n\n// used in both Canvas and Document to provide images\nexport const IMAGE = Symbol('image');\n\n// used to define Document mime type\nexport const MIME = Symbol('mime');\n\n// used in Document to attach once MutationObserver\nexport const MUTATION_OBSERVER = Symbol('MutationObserver');\n\n// used to define next node reference\nexport const NEXT = Symbol('next');\n\n// used to define Attr owner elements\nexport const OWNER_ELEMENT = Symbol('ownerElement');\n\n// used to define previous node reference\nexport const PREV = Symbol('prev');\n\n// used to define various \"private\" properties\nexport const PRIVATE = Symbol('private');\n\n// used to define the CSSStyleSheet.sheet\nexport const SHEET = Symbol('sheet');\n\n// used to define start node reference\nexport const START = Symbol('start');\n\n// used to define special CSS style attribute\nexport const STYLE = Symbol('style');\n\n// used to upgrade Custom Elements\nexport const UPGRADE = Symbol('upgrade');\n\n// used to define generic values\nexport const VALUE = Symbol('value');\n","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-xml.js.map","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return 0xfffd;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport default function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode_codepoint.js.map","import htmlDecodeTree from \"./generated/decode-data-html.js\";\nimport xmlDecodeTree from \"./generated/decode-data-xml.js\";\nimport decodeCodePoint, { replaceCodePoint, fromCodePoint, } from \"./decode_codepoint.js\";\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree, xmlDecodeTree, decodeCodePoint };\nexport { replaceCodePoint, fromCodePoint } from \"./decode_codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 0b100000;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(str, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (str.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(str, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(str, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(str, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(str, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericStart(str, offset) {\n if (offset >= str.length) {\n return -1;\n }\n if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n }\n addToNumericResult(str, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(str, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < str.length; offset++, this.excess++) {\n const char = str.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end() {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n let ret = \"\";\n const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));\n return function decodeWithTrie(str, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const len = decoder.write(str, \n // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIdx, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIdx;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midVal = decodeTree[mid];\n if (midVal < char) {\n lo = mid + 1;\n }\n else if (midVal > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = getDecoder(htmlDecodeTree);\nconst xmlDecoder = getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(str, mode = DecodingMode.Legacy) {\n return htmlDecoder(str, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\n//# sourceMappingURL=decode.js.map","import { EntityDecoder, DecodingMode, htmlDecodeTree, xmlDecodeTree, } from \"entities/lib/decode.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"Tab\"] = 9] = \"Tab\";\n CharCodes[CharCodes[\"NewLine\"] = 10] = \"NewLine\";\n CharCodes[CharCodes[\"FormFeed\"] = 12] = \"FormFeed\";\n CharCodes[CharCodes[\"CarriageReturn\"] = 13] = \"CarriageReturn\";\n CharCodes[CharCodes[\"Space\"] = 32] = \"Space\";\n CharCodes[CharCodes[\"ExclamationMark\"] = 33] = \"ExclamationMark\";\n CharCodes[CharCodes[\"Number\"] = 35] = \"Number\";\n CharCodes[CharCodes[\"Amp\"] = 38] = \"Amp\";\n CharCodes[CharCodes[\"SingleQuote\"] = 39] = \"SingleQuote\";\n CharCodes[CharCodes[\"DoubleQuote\"] = 34] = \"DoubleQuote\";\n CharCodes[CharCodes[\"Dash\"] = 45] = \"Dash\";\n CharCodes[CharCodes[\"Slash\"] = 47] = \"Slash\";\n CharCodes[CharCodes[\"Zero\"] = 48] = \"Zero\";\n CharCodes[CharCodes[\"Nine\"] = 57] = \"Nine\";\n CharCodes[CharCodes[\"Semi\"] = 59] = \"Semi\";\n CharCodes[CharCodes[\"Lt\"] = 60] = \"Lt\";\n CharCodes[CharCodes[\"Eq\"] = 61] = \"Eq\";\n CharCodes[CharCodes[\"Gt\"] = 62] = \"Gt\";\n CharCodes[CharCodes[\"Questionmark\"] = 63] = \"Questionmark\";\n CharCodes[CharCodes[\"UpperA\"] = 65] = \"UpperA\";\n CharCodes[CharCodes[\"LowerA\"] = 97] = \"LowerA\";\n CharCodes[CharCodes[\"UpperF\"] = 70] = \"UpperF\";\n CharCodes[CharCodes[\"LowerF\"] = 102] = \"LowerF\";\n CharCodes[CharCodes[\"UpperZ\"] = 90] = \"UpperZ\";\n CharCodes[CharCodes[\"LowerZ\"] = 122] = \"LowerZ\";\n CharCodes[CharCodes[\"LowerX\"] = 120] = \"LowerX\";\n CharCodes[CharCodes[\"OpeningSquareBracket\"] = 91] = \"OpeningSquareBracket\";\n})(CharCodes || (CharCodes = {}));\n/** All the states the tokenizer can be in. */\nvar State;\n(function (State) {\n State[State[\"Text\"] = 1] = \"Text\";\n State[State[\"BeforeTagName\"] = 2] = \"BeforeTagName\";\n State[State[\"InTagName\"] = 3] = \"InTagName\";\n State[State[\"InSelfClosingTag\"] = 4] = \"InSelfClosingTag\";\n State[State[\"BeforeClosingTagName\"] = 5] = \"BeforeClosingTagName\";\n State[State[\"InClosingTagName\"] = 6] = \"InClosingTagName\";\n State[State[\"AfterClosingTagName\"] = 7] = \"AfterClosingTagName\";\n // Attributes\n State[State[\"BeforeAttributeName\"] = 8] = \"BeforeAttributeName\";\n State[State[\"InAttributeName\"] = 9] = \"InAttributeName\";\n State[State[\"AfterAttributeName\"] = 10] = \"AfterAttributeName\";\n State[State[\"BeforeAttributeValue\"] = 11] = \"BeforeAttributeValue\";\n State[State[\"InAttributeValueDq\"] = 12] = \"InAttributeValueDq\";\n State[State[\"InAttributeValueSq\"] = 13] = \"InAttributeValueSq\";\n State[State[\"InAttributeValueNq\"] = 14] = \"InAttributeValueNq\";\n // Declarations\n State[State[\"BeforeDeclaration\"] = 15] = \"BeforeDeclaration\";\n State[State[\"InDeclaration\"] = 16] = \"InDeclaration\";\n // Processing instructions\n State[State[\"InProcessingInstruction\"] = 17] = \"InProcessingInstruction\";\n // Comments & CDATA\n State[State[\"BeforeComment\"] = 18] = \"BeforeComment\";\n State[State[\"CDATASequence\"] = 19] = \"CDATASequence\";\n State[State[\"InSpecialComment\"] = 20] = \"InSpecialComment\";\n State[State[\"InCommentLike\"] = 21] = \"InCommentLike\";\n // Special tags\n State[State[\"BeforeSpecialS\"] = 22] = \"BeforeSpecialS\";\n State[State[\"BeforeSpecialT\"] = 23] = \"BeforeSpecialT\";\n State[State[\"SpecialStartSequence\"] = 24] = \"SpecialStartSequence\";\n State[State[\"InSpecialTag\"] = 25] = \"InSpecialTag\";\n State[State[\"InEntity\"] = 26] = \"InEntity\";\n})(State || (State = {}));\nfunction isWhitespace(c) {\n return (c === CharCodes.Space ||\n c === CharCodes.NewLine ||\n c === CharCodes.Tab ||\n c === CharCodes.FormFeed ||\n c === CharCodes.CarriageReturn);\n}\nfunction isEndOfTagSection(c) {\n return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c);\n}\nfunction isASCIIAlpha(c) {\n return ((c >= CharCodes.LowerA && c <= CharCodes.LowerZ) ||\n (c >= CharCodes.UpperA && c <= CharCodes.UpperZ));\n}\nexport var QuoteType;\n(function (QuoteType) {\n QuoteType[QuoteType[\"NoValue\"] = 0] = \"NoValue\";\n QuoteType[QuoteType[\"Unquoted\"] = 1] = \"Unquoted\";\n QuoteType[QuoteType[\"Single\"] = 2] = \"Single\";\n QuoteType[QuoteType[\"Double\"] = 3] = \"Double\";\n})(QuoteType || (QuoteType = {}));\n/**\n * Sequences used to match longer strings.\n *\n * We don't have `Script`, `Style`, or `Title` here. Instead, we re-use the *End\n * sequences with an increased offset.\n */\nconst Sequences = {\n Cdata: new Uint8Array([0x43, 0x44, 0x41, 0x54, 0x41, 0x5b]), // CDATA[\n CdataEnd: new Uint8Array([0x5d, 0x5d, 0x3e]), // ]]>\n CommentEnd: new Uint8Array([0x2d, 0x2d, 0x3e]), // `-->`\n ScriptEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74]), // ` this.emitCodePoint(cp, consumed));\n }\n reset() {\n this.state = State.Text;\n this.buffer = \"\";\n this.sectionStart = 0;\n this.index = 0;\n this.baseState = State.Text;\n this.currentSequence = undefined;\n this.running = true;\n this.offset = 0;\n }\n write(chunk) {\n this.offset += this.buffer.length;\n this.buffer = chunk;\n this.parse();\n }\n end() {\n if (this.running)\n this.finish();\n }\n pause() {\n this.running = false;\n }\n resume() {\n this.running = true;\n if (this.index < this.buffer.length + this.offset) {\n this.parse();\n }\n }\n stateText(c) {\n if (c === CharCodes.Lt ||\n (!this.decodeEntities && this.fastForwardTo(CharCodes.Lt))) {\n if (this.index > this.sectionStart) {\n this.cbs.ontext(this.sectionStart, this.index);\n }\n this.state = State.BeforeTagName;\n this.sectionStart = this.index;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateSpecialStartSequence(c) {\n const isEnd = this.sequenceIndex === this.currentSequence.length;\n const isMatch = isEnd\n ? // If we are at the end of the sequence, make sure the tag name has ended\n isEndOfTagSection(c)\n : // Otherwise, do a case-insensitive comparison\n (c | 0x20) === this.currentSequence[this.sequenceIndex];\n if (!isMatch) {\n this.isSpecial = false;\n }\n else if (!isEnd) {\n this.sequenceIndex++;\n return;\n }\n this.sequenceIndex = 0;\n this.state = State.InTagName;\n this.stateInTagName(c);\n }\n /** Look for an end tag. For tags, also decode entities. */\n stateInSpecialTag(c) {\n if (this.sequenceIndex === this.currentSequence.length) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n const endOfText = this.index - this.currentSequence.length;\n if (this.sectionStart < endOfText) {\n // Spoof the index so that reported locations match up.\n const actualIndex = this.index;\n this.index = endOfText;\n this.cbs.ontext(this.sectionStart, endOfText);\n this.index = actualIndex;\n }\n this.isSpecial = false;\n this.sectionStart = endOfText + 2; // Skip over the `</`\n this.stateInClosingTagName(c);\n return; // We are done; skip the rest of the function.\n }\n this.sequenceIndex = 0;\n }\n if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) {\n this.sequenceIndex += 1;\n }\n else if (this.sequenceIndex === 0) {\n if (this.currentSequence === Sequences.TitleEnd) {\n // We have to parse entities in <title> tags.\n if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n else if (this.fastForwardTo(CharCodes.Lt)) {\n // Outside of <title> tags, we can fast-forward.\n this.sequenceIndex = 1;\n }\n }\n else {\n // If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`.\n this.sequenceIndex = Number(c === CharCodes.Lt);\n }\n }\n stateCDATASequence(c) {\n if (c === Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === Sequences.Cdata.length) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n }\n else {\n this.sequenceIndex = 0;\n this.state = State.InDeclaration;\n this.stateInDeclaration(c); // Reconsume the character\n }\n }\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */\n fastForwardTo(c) {\n while (++this.index < this.buffer.length + this.offset) {\n if (this.buffer.charCodeAt(this.index - this.offset) === c) {\n return true;\n }\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */\n this.index = this.buffer.length + this.offset - 1;\n return false;\n }\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */\n stateInCommentLike(c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, this.index, 2);\n }\n else {\n this.cbs.oncomment(this.sectionStart, this.index, 2);\n }\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n this.state = State.Text;\n }\n }\n else if (this.sequenceIndex === 0) {\n // Fast-forward to the first character of the sequence\n if (this.fastForwardTo(this.currentSequence[0])) {\n this.sequenceIndex = 1;\n }\n }\n else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n }\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */\n isTagStartChar(c) {\n return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n }\n startSpecial(sequence, offset) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this.state = State.SpecialStartSequence;\n }\n stateBeforeTagName(c) {\n if (c === CharCodes.ExclamationMark) {\n this.state = State.BeforeDeclaration;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Questionmark) {\n this.state = State.InProcessingInstruction;\n this.sectionStart = this.index + 1;\n }\n else if (this.isTagStartChar(c)) {\n const lower = c | 0x20;\n this.sectionStart = this.index;\n if (this.xmlMode) {\n this.state = State.InTagName;\n }\n else if (lower === Sequences.ScriptEnd[2]) {\n this.state = State.BeforeSpecialS;\n }\n else if (lower === Sequences.TitleEnd[2]) {\n this.state = State.BeforeSpecialT;\n }\n else {\n this.state = State.InTagName;\n }\n }\n else if (c === CharCodes.Slash) {\n this.state = State.BeforeClosingTagName;\n }\n else {\n this.state = State.Text;\n this.stateText(c);\n }\n }\n stateInTagName(c) {\n if (isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateBeforeClosingTagName(c) {\n if (isWhitespace(c)) {\n // Ignore\n }\n else if (c === CharCodes.Gt) {\n this.state = State.Text;\n }\n else {\n this.state = this.isTagStartChar(c)\n ? State.InClosingTagName\n : State.InSpecialComment;\n this.sectionStart = this.index;\n }\n }\n stateInClosingTagName(c) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n this.cbs.onclosetag(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterClosingTagName;\n this.stateAfterClosingTagName(c);\n }\n }\n stateAfterClosingTagName(c) {\n // Skip everything until \">\"\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeAttributeName(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onopentagend(this.index);\n if (this.isSpecial) {\n this.state = State.InSpecialTag;\n this.sequenceIndex = 0;\n }\n else {\n this.state = State.Text;\n }\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Slash) {\n this.state = State.InSelfClosingTag;\n }\n else if (!isWhitespace(c)) {\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateInSelfClosingTag(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onselfclosingtag(this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n }\n else if (!isWhitespace(c)) {\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateInAttributeName(c) {\n if (c === CharCodes.Eq || isEndOfTagSection(c)) {\n this.cbs.onattribname(this.sectionStart, this.index);\n this.sectionStart = this.index;\n this.state = State.AfterAttributeName;\n this.stateAfterAttributeName(c);\n }\n }\n stateAfterAttributeName(c) {\n if (c === CharCodes.Eq) {\n this.state = State.BeforeAttributeValue;\n }\n else if (c === CharCodes.Slash || c === CharCodes.Gt) {\n this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (!isWhitespace(c)) {\n this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateBeforeAttributeValue(c) {\n if (c === CharCodes.DoubleQuote) {\n this.state = State.InAttributeValueDq;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.SingleQuote) {\n this.state = State.InAttributeValueSq;\n this.sectionStart = this.index + 1;\n }\n else if (!isWhitespace(c)) {\n this.sectionStart = this.index;\n this.state = State.InAttributeValueNq;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n }\n handleInAttributeValue(c, quote) {\n if (c === quote ||\n (!this.decodeEntities && this.fastForwardTo(quote))) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(quote === CharCodes.DoubleQuote\n ? QuoteType.Double\n : QuoteType.Single, this.index + 1);\n this.state = State.BeforeAttributeName;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateInAttributeValueDoubleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.DoubleQuote);\n }\n stateInAttributeValueSingleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.SingleQuote);\n }\n stateInAttributeValueNoQuotes(c) {\n if (isWhitespace(c) || c === CharCodes.Gt) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(QuoteType.Unquoted, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateBeforeDeclaration(c) {\n if (c === CharCodes.OpeningSquareBracket) {\n this.state = State.CDATASequence;\n this.sequenceIndex = 0;\n }\n else {\n this.state =\n c === CharCodes.Dash\n ? State.BeforeComment\n : State.InDeclaration;\n }\n }\n stateInDeclaration(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.ondeclaration(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateInProcessingInstruction(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.onprocessinginstruction(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeComment(c) {\n if (c === CharCodes.Dash) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CommentEnd;\n // Allow short comments (eg. <!-->)\n this.sequenceIndex = 2;\n this.sectionStart = this.index + 1;\n }\n else {\n this.state = State.InDeclaration;\n }\n }\n stateInSpecialComment(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeSpecialS(c) {\n const lower = c | 0x20;\n if (lower === Sequences.ScriptEnd[3]) {\n this.startSpecial(Sequences.ScriptEnd, 4);\n }\n else if (lower === Sequences.StyleEnd[3]) {\n this.startSpecial(Sequences.StyleEnd, 4);\n }\n else {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n stateBeforeSpecialT(c) {\n const lower = c | 0x20;\n if (lower === Sequences.TitleEnd[3]) {\n this.startSpecial(Sequences.TitleEnd, 4);\n }\n else if (lower === Sequences.TextareaEnd[3]) {\n this.startSpecial(Sequences.TextareaEnd, 4);\n }\n else {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n startEntity() {\n this.baseState = this.state;\n this.state = State.InEntity;\n this.entityStart = this.index;\n this.entityDecoder.startEntity(this.xmlMode\n ? DecodingMode.Strict\n : this.baseState === State.Text ||\n this.baseState === State.InSpecialTag\n ? DecodingMode.Legacy\n : DecodingMode.Attribute);\n }\n stateInEntity() {\n const length = this.entityDecoder.write(this.buffer, this.index - this.offset);\n // If `length` is positive, we are done with the entity.\n if (length >= 0) {\n this.state = this.baseState;\n if (length === 0) {\n this.index = this.entityStart;\n }\n }\n else {\n // Mark buffer as consumed.\n this.index = this.offset + this.buffer.length - 1;\n }\n }\n /**\n * Remove data that has already been consumed from the buffer.\n */\n cleanup() {\n // If we are inside of text or attributes, emit what we already have.\n if (this.running && this.sectionStart !== this.index) {\n if (this.state === State.Text ||\n (this.state === State.InSpecialTag && this.sequenceIndex === 0)) {\n this.cbs.ontext(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n else if (this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueNq) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n }\n }\n shouldContinue() {\n return this.index < this.buffer.length + this.offset && this.running;\n }\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n parse() {\n while (this.shouldContinue()) {\n const c = this.buffer.charCodeAt(this.index - this.offset);\n switch (this.state) {\n case State.Text: {\n this.stateText(c);\n break;\n }\n case State.SpecialStartSequence: {\n this.stateSpecialStartSequence(c);\n break;\n }\n case State.InSpecialTag: {\n this.stateInSpecialTag(c);\n break;\n }\n case State.CDATASequence: {\n this.stateCDATASequence(c);\n break;\n }\n case State.InAttributeValueDq: {\n this.stateInAttributeValueDoubleQuotes(c);\n break;\n }\n case State.InAttributeName: {\n this.stateInAttributeName(c);\n break;\n }\n case State.InCommentLike: {\n this.stateInCommentLike(c);\n break;\n }\n case State.InSpecialComment: {\n this.stateInSpecialComment(c);\n break;\n }\n case State.BeforeAttributeName: {\n this.stateBeforeAttributeName(c);\n break;\n }\n case State.InTagName: {\n this.stateInTagName(c);\n break;\n }\n case State.InClosingTagName: {\n this.stateInClosingTagName(c);\n break;\n }\n case State.BeforeTagName: {\n this.stateBeforeTagName(c);\n break;\n }\n case State.AfterAttributeName: {\n this.stateAfterAttributeName(c);\n break;\n }\n case State.InAttributeValueSq: {\n this.stateInAttributeValueSingleQuotes(c);\n break;\n }\n case State.BeforeAttributeValue: {\n this.stateBeforeAttributeValue(c);\n break;\n }\n case State.BeforeClosingTagName: {\n this.stateBeforeClosingTagName(c);\n break;\n }\n case State.AfterClosingTagName: {\n this.stateAfterClosingTagName(c);\n break;\n }\n case State.BeforeSpecialS: {\n this.stateBeforeSpecialS(c);\n break;\n }\n case State.BeforeSpecialT: {\n this.stateBeforeSpecialT(c);\n break;\n }\n case State.InAttributeValueNq: {\n this.stateInAttributeValueNoQuotes(c);\n break;\n }\n case State.InSelfClosingTag: {\n this.stateInSelfClosingTag(c);\n break;\n }\n case State.InDeclaration: {\n this.stateInDeclaration(c);\n break;\n }\n case State.BeforeDeclaration: {\n this.stateBeforeDeclaration(c);\n break;\n }\n case State.BeforeComment: {\n this.stateBeforeComment(c);\n break;\n }\n case State.InProcessingInstruction: {\n this.stateInProcessingInstruction(c);\n break;\n }\n case State.InEntity: {\n this.stateInEntity();\n break;\n }\n }\n this.index++;\n }\n this.cleanup();\n }\n finish() {\n if (this.state === State.InEntity) {\n this.entityDecoder.end();\n this.state = this.baseState;\n }\n this.handleTrailingData();\n this.cbs.onend();\n }\n /** Handle any trailing data. */\n handleTrailingData() {\n const endIndex = this.buffer.length + this.offset;\n // If there is no remaining data, we are done.\n if (this.sectionStart >= endIndex) {\n return;\n }\n if (this.state === State.InCommentLike) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, endIndex, 0);\n }\n else {\n this.cbs.oncomment(this.sectionStart, endIndex, 0);\n }\n }\n else if (this.state === State.InTagName ||\n this.state === State.BeforeAttributeName ||\n this.state === State.BeforeAttributeValue ||\n this.state === State.AfterAttributeName ||\n this.state === State.InAttributeName ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueNq ||\n this.state === State.InClosingTagName) {\n /*\n * If we are currently in an opening or closing tag, us not calling the\n * respective callback signals that the tag should be ignored.\n */\n }\n else {\n this.cbs.ontext(this.sectionStart, endIndex);\n }\n }\n emitCodePoint(cp, consumed) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n if (this.sectionStart < this.entityStart) {\n this.cbs.onattribdata(this.sectionStart, this.entityStart);\n }\n this.sectionStart = this.entityStart + consumed;\n this.index = this.sectionStart - 1;\n this.cbs.onattribentity(cp);\n }\n else {\n if (this.sectionStart < this.entityStart) {\n this.cbs.ontext(this.sectionStart, this.entityStart);\n }\n this.sectionStart = this.entityStart + consumed;\n this.index = this.sectionStart - 1;\n this.cbs.ontextentity(cp, this.sectionStart);\n }\n }\n}\n//# sourceMappingURL=Tokenizer.js.map","import Tokenizer, { QuoteType } from \"./Tokenizer.js\";\nimport { fromCodePoint } from \"entities/lib/decode.js\";\nconst formTags = new Set([\n \"input\",\n \"option\",\n \"optgroup\",\n \"select\",\n \"button\",\n \"datalist\",\n \"textarea\",\n]);\nconst pTag = new Set([\"p\"]);\nconst tableSectionTags = new Set([\"thead\", \"tbody\"]);\nconst ddtTags = new Set([\"dd\", \"dt\"]);\nconst rtpTags = new Set([\"rt\", \"rp\"]);\nconst openImpliesClose = new Map([\n [\"tr\", new Set([\"tr\", \"th\", \"td\"])],\n [\"th\", new Set([\"th\"])],\n [\"td\", new Set([\"thead\", \"th\", \"td\"])],\n [\"body\", new Set([\"head\", \"link\", \"script\"])],\n [\"li\", new Set([\"li\"])],\n [\"p\", pTag],\n [\"h1\", pTag],\n [\"h2\", pTag],\n [\"h3\", pTag],\n [\"h4\", pTag],\n [\"h5\", pTag],\n [\"h6\", pTag],\n [\"select\", formTags],\n [\"input\", formTags],\n [\"output\", formTags],\n [\"button\", formTags],\n [\"datalist\", formTags],\n [\"textarea\", formTags],\n [\"option\", new Set([\"option\"])],\n [\"optgroup\", new Set([\"optgroup\", \"option\"])],\n [\"dd\", ddtTags],\n [\"dt\", ddtTags],\n [\"address\", pTag],\n [\"article\", pTag],\n [\"aside\", pTag],\n [\"blockquote\", pTag],\n [\"details\", pTag],\n [\"div\", pTag],\n [\"dl\", pTag],\n [\"fieldset\", pTag],\n [\"figcaption\", pTag],\n [\"figure\", pTag],\n [\"footer\", pTag],\n [\"form\", pTag],\n [\"header\", pTag],\n [\"hr\", pTag],\n [\"main\", pTag],\n [\"nav\", pTag],\n [\"ol\", pTag],\n [\"pre\", pTag],\n [\"section\", pTag],\n [\"table\", pTag],\n [\"ul\", pTag],\n [\"rt\", rtpTags],\n [\"rp\", rtpTags],\n [\"tbody\", tableSectionTags],\n [\"tfoot\", tableSectionTags],\n]);\nconst voidElements = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\nconst foreignContextElements = new Set([\"math\", \"svg\"]);\nconst htmlIntegrationElements = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignobject\",\n \"desc\",\n \"title\",\n]);\nconst reNameEnd = /\\s|\\//;\nexport class Parser {\n constructor(cbs, options = {}) {\n var _a, _b, _c, _d, _e, _f;\n this.options = options;\n /** The start index of the last event. */\n this.startIndex = 0;\n /** The end index of the last event. */\n this.endIndex = 0;\n /**\n * Store the start index of the current open tag,\n * so we can update the start index for attributes.\n */\n this.openTagStart = 0;\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribvalue = \"\";\n this.attribs = null;\n this.stack = [];\n this.buffers = [];\n this.bufferOffset = 0;\n /** The index of the last written buffer. Used when resuming after a `pause()`. */\n this.writeIndex = 0;\n /** Indicates whether the parser has finished running / `.end` has been called. */\n this.ended = false;\n this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};\n this.htmlMode = !this.options.xmlMode;\n this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : this.htmlMode;\n this.lowerCaseAttributeNames =\n (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : this.htmlMode;\n this.recognizeSelfClosing =\n (_c = options.recognizeSelfClosing) !== null && _c !== void 0 ? _c : !this.htmlMode;\n this.tokenizer = new ((_d = options.Tokenizer) !== null && _d !== void 0 ? _d : Tokenizer)(this.options, this);\n this.foreignContext = [!this.htmlMode];\n (_f = (_e = this.cbs).onparserinit) === null || _f === void 0 ? void 0 : _f.call(_e, this);\n }\n // Tokenizer event handlers\n /** @internal */\n ontext(start, endIndex) {\n var _a, _b;\n const data = this.getSlice(start, endIndex);\n this.endIndex = endIndex - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);\n this.startIndex = endIndex;\n }\n /** @internal */\n ontextentity(cp, endIndex) {\n var _a, _b;\n this.endIndex = endIndex - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, fromCodePoint(cp));\n this.startIndex = endIndex;\n }\n /**\n * Checks if the current tag is a void element. Override this if you want\n * to specify your own additional void elements.\n */\n isVoidElement(name) {\n return this.htmlMode && voidElements.has(name);\n }\n /** @internal */\n onopentagname(start, endIndex) {\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n this.emitOpenTag(name);\n }\n emitOpenTag(name) {\n var _a, _b, _c, _d;\n this.openTagStart = this.startIndex;\n this.tagname = name;\n const impliesClose = this.htmlMode && openImpliesClose.get(name);\n if (impliesClose) {\n while (this.stack.length > 0 && impliesClose.has(this.stack[0])) {\n const element = this.stack.shift();\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, true);\n }\n }\n if (!this.isVoidElement(name)) {\n this.stack.unshift(name);\n if (this.htmlMode) {\n if (foreignContextElements.has(name)) {\n this.foreignContext.unshift(true);\n }\n else if (htmlIntegrationElements.has(name)) {\n this.foreignContext.unshift(false);\n }\n }\n }\n (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name);\n if (this.cbs.onopentag)\n this.attribs = {};\n }\n endOpenTag(isImplied) {\n var _a, _b;\n this.startIndex = this.openTagStart;\n if (this.attribs) {\n (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs, isImplied);\n this.attribs = null;\n }\n if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {\n this.cbs.onclosetag(this.tagname, true);\n }\n this.tagname = \"\";\n }\n /** @internal */\n onopentagend(endIndex) {\n this.endIndex = endIndex;\n this.endOpenTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onclosetag(start, endIndex) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n if (this.htmlMode &&\n (foreignContextElements.has(name) ||\n htmlIntegrationElements.has(name))) {\n this.foreignContext.shift();\n }\n if (!this.isVoidElement(name)) {\n const pos = this.stack.indexOf(name);\n if (pos !== -1) {\n for (let index = 0; index <= pos; index++) {\n const element = this.stack.shift();\n // We know the stack has sufficient elements.\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, index !== pos);\n }\n }\n else if (this.htmlMode && name === \"p\") {\n // Implicit open before close\n this.emitOpenTag(\"p\");\n this.closeCurrentTag(true);\n }\n }\n else if (this.htmlMode && name === \"br\") {\n // We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed.\n (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, \"br\");\n (_f = (_e = this.cbs).onopentag) === null || _f === void 0 ? void 0 : _f.call(_e, \"br\", {}, true);\n (_h = (_g = this.cbs).onclosetag) === null || _h === void 0 ? void 0 : _h.call(_g, \"br\", false);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onselfclosingtag(endIndex) {\n this.endIndex = endIndex;\n if (this.recognizeSelfClosing || this.foreignContext[0]) {\n this.closeCurrentTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n else {\n // Ignore the fact that the tag is self-closing.\n this.onopentagend(endIndex);\n }\n }\n closeCurrentTag(isOpenImplied) {\n var _a, _b;\n const name = this.tagname;\n this.endOpenTag(isOpenImplied);\n // Self-closing tags will be on the top of the stack\n if (this.stack[0] === name) {\n // If the opening tag isn't implied, the closing tag has to be implied.\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name, !isOpenImplied);\n this.stack.shift();\n }\n }\n /** @internal */\n onattribname(start, endIndex) {\n this.startIndex = start;\n const name = this.getSlice(start, endIndex);\n this.attribname = this.lowerCaseAttributeNames\n ? name.toLowerCase()\n : name;\n }\n /** @internal */\n onattribdata(start, endIndex) {\n this.attribvalue += this.getSlice(start, endIndex);\n }\n /** @internal */\n onattribentity(cp) {\n this.attribvalue += fromCodePoint(cp);\n }\n /** @internal */\n onattribend(quote, endIndex) {\n var _a, _b;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote === QuoteType.Double\n ? '\"'\n : quote === QuoteType.Single\n ? \"'\"\n : quote === QuoteType.NoValue\n ? undefined\n : null);\n if (this.attribs &&\n !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {\n this.attribs[this.attribname] = this.attribvalue;\n }\n this.attribvalue = \"\";\n }\n getInstructionName(value) {\n const index = value.search(reNameEnd);\n let name = index < 0 ? value : value.substr(0, index);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n return name;\n }\n /** @internal */\n ondeclaration(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`!${name}`, `!${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onprocessinginstruction(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`?${name}`, `?${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n oncomment(start, endIndex, offset) {\n var _a, _b, _c, _d;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, this.getSlice(start, endIndex - offset));\n (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n oncdata(start, endIndex, offset) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex - offset);\n if (!this.htmlMode || this.options.recognizeCDATA) {\n (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);\n (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);\n }\n else {\n (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, `[CDATA[${value}]]`);\n (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onend() {\n var _a, _b;\n if (this.cbs.onclosetag) {\n // Set the end index for all remaining tags\n this.endIndex = this.startIndex;\n for (let index = 0; index < this.stack.length; index++) {\n this.cbs.onclosetag(this.stack[index], true);\n }\n }\n (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n /**\n * Resets the parser to a blank state, ready to parse a new HTML document\n */\n reset() {\n var _a, _b, _c, _d;\n (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.tokenizer.reset();\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribs = null;\n this.stack.length = 0;\n this.startIndex = 0;\n this.endIndex = 0;\n (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);\n this.buffers.length = 0;\n this.foreignContext.length = 0;\n this.foreignContext.unshift(!this.htmlMode);\n this.bufferOffset = 0;\n this.writeIndex = 0;\n this.ended = false;\n }\n /**\n * Resets the parser, then parses a complete document and\n * pushes it to the handler.\n *\n * @param data Document to parse.\n */\n parseComplete(data) {\n this.reset();\n this.end(data);\n }\n getSlice(start, end) {\n while (start - this.bufferOffset >= this.buffers[0].length) {\n this.shiftBuffer();\n }\n let slice = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset);\n while (end - this.bufferOffset > this.buffers[0].length) {\n this.shiftBuffer();\n slice += this.buffers[0].slice(0, end - this.bufferOffset);\n }\n return slice;\n }\n shiftBuffer() {\n this.bufferOffset += this.buffers[0].length;\n this.writeIndex--;\n this.buffers.shift();\n }\n /**\n * Parses a chunk of data and calls the corresponding callbacks.\n *\n * @param chunk Chunk to parse.\n */\n write(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".write() after done!\"));\n return;\n }\n this.buffers.push(chunk);\n if (this.tokenizer.running) {\n this.tokenizer.write(chunk);\n this.writeIndex++;\n }\n }\n /**\n * Parses the end of the buffer and clears the stack, calls onend.\n *\n * @param chunk Optional final chunk to parse.\n */\n end(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".end() after done!\"));\n return;\n }\n if (chunk)\n this.write(chunk);\n this.ended = true;\n this.tokenizer.end();\n }\n /**\n * Pauses parsing. The parser won't emit events until `resume` is called.\n */\n pause() {\n this.tokenizer.pause();\n }\n /**\n * Resumes parsing after `pause` was called.\n */\n resume() {\n this.tokenizer.resume();\n while (this.tokenizer.running &&\n this.writeIndex < this.buffers.length) {\n this.tokenizer.write(this.buffers[this.writeIndex++]);\n }\n if (this.ended)\n this.tokenizer.end();\n }\n /**\n * Alias of `write`, for backwards compatibility.\n *\n * @param chunk Chunk to parse.\n * @deprecated\n */\n parseChunk(chunk) {\n this.write(chunk);\n }\n /**\n * Alias of `end`, for backwards compatibility.\n *\n * @param chunk Optional final chunk to parse.\n * @deprecated\n */\n done(chunk) {\n this.end(chunk);\n }\n}\n//# sourceMappingURL=Parser.js.map","/** Types of elements found in htmlparser2's DOM */\nexport var ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for <? ... ?> */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for <!-- ... --> */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for <script> tags */\n ElementType[\"Script\"] = \"script\";\n /** Type for <style> tags */\n ElementType[\"Style\"] = \"style\";\n /** Type for Any tag */\n ElementType[\"Tag\"] = \"tag\";\n /** Type for <![CDATA[ ... ]]> */\n ElementType[\"CDATA\"] = \"cdata\";\n /** Type for <!doctype ...> */\n ElementType[\"Doctype\"] = \"doctype\";\n})(ElementType || (ElementType = {}));\n/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */\nexport function isTag(elem) {\n return (elem.type === ElementType.Tag ||\n elem.type === ElementType.Script ||\n elem.type === ElementType.Style);\n}\n// Exports for backwards compatibility\n/** Type for the root element of a document */\nexport const Root = ElementType.Root;\n/** Type for Text */\nexport const Text = ElementType.Text;\n/** Type for <? ... ?> */\nexport const Directive = ElementType.Directive;\n/** Type for <!-- ... --> */\nexport const Comment = ElementType.Comment;\n/** Type for <script> tags */\nexport const Script = ElementType.Script;\n/** Type for <style> tags */\nexport const Style = ElementType.Style;\n/** Type for Any tag */\nexport const Tag = ElementType.Tag;\n/** Type for <![CDATA[ ... ]]> */\nexport const CDATA = ElementType.CDATA;\n/** Type for <!doctype ...> */\nexport const Doctype = ElementType.Doctype;\n","import { ElementType, isTag as isTagRaw } from \"domelementtype\";\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nexport class Node {\n constructor() {\n /** Parent of the node */\n this.parent = null;\n /** Previous sibling */\n this.prev = null;\n /** Next sibling */\n this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n this.endIndex = null;\n }\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get parentNode() {\n return this.parent;\n }\n set parentNode(parent) {\n this.parent = parent;\n }\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get previousSibling() {\n return this.prev;\n }\n set previousSibling(prev) {\n this.prev = prev;\n }\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nextSibling() {\n return this.next;\n }\n set nextSibling(next) {\n this.next = next;\n }\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\n cloneNode(recursive = false) {\n return cloneNode(this, recursive);\n }\n}\n/**\n * A node that contains some data.\n */\nexport class DataNode extends Node {\n /**\n * @param data The content of the data node\n */\n constructor(data) {\n super();\n this.data = data;\n }\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nodeValue() {\n return this.data;\n }\n set nodeValue(data) {\n this.data = data;\n }\n}\n/**\n * Text within the document.\n */\nexport class Text extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Text;\n }\n get nodeType() {\n return 3;\n }\n}\n/**\n * Comments within the document.\n */\nexport class Comment extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Comment;\n }\n get nodeType() {\n return 8;\n }\n}\n/**\n * Processing instructions, including doc types.\n */\nexport class ProcessingInstruction extends DataNode {\n constructor(name, data) {\n super(data);\n this.name = name;\n this.type = ElementType.Directive;\n }\n get nodeType() {\n return 1;\n }\n}\n/**\n * A `Node` that can have children.\n */\nexport class NodeWithChildren extends Node {\n /**\n * @param children Children of the node. Only certain node types can have children.\n */\n constructor(children) {\n super();\n this.children = children;\n }\n // Aliases\n /** First child of the node. */\n get firstChild() {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n }\n /** Last child of the node. */\n get lastChild() {\n return this.children.length > 0\n ? this.children[this.children.length - 1]\n : null;\n }\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get childNodes() {\n return this.children;\n }\n set childNodes(children) {\n this.children = children;\n }\n}\nexport class CDATA extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.CDATA;\n }\n get nodeType() {\n return 4;\n }\n}\n/**\n * The root node of the document.\n */\nexport class Document extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.Root;\n }\n get nodeType() {\n return 9;\n }\n}\n/**\n * An element within the DOM.\n */\nexport class Element extends NodeWithChildren {\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */\n constructor(name, attribs, children = [], type = name === \"script\"\n ? ElementType.Script\n : name === \"style\"\n ? ElementType.Style\n : ElementType.Tag) {\n super(children);\n this.name = name;\n this.attribs = attribs;\n this.type = type;\n }\n get nodeType() {\n return 1;\n }\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get tagName() {\n return this.name;\n }\n set tagName(name) {\n this.name = name;\n }\n get attributes() {\n return Object.keys(this.attribs).map((name) => {\n var _a, _b;\n return ({\n name,\n value: this.attribs[name],\n namespace: (_a = this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n });\n });\n }\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nexport function isTag(node) {\n return isTagRaw(node);\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nexport function isCDATA(node) {\n return node.type === ElementType.CDATA;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nexport function isText(node) {\n return node.type === ElementType.Text;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nexport function isComment(node) {\n return node.type === ElementType.Comment;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDirective(node) {\n return node.type === ElementType.Directive;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDocument(node) {\n return node.type === ElementType.Root;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has children, `false` otherwise.\n */\nexport function hasChildren(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nexport function cloneNode(node, recursive = false) {\n let result;\n if (isText(node)) {\n result = new Text(node.data);\n }\n else if (isComment(node)) {\n result = new Comment(node.data);\n }\n else if (isTag(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Element(node.name, { ...node.attribs }, children);\n children.forEach((child) => (child.parent = clone));\n if (node.namespace != null) {\n clone.namespace = node.namespace;\n }\n if (node[\"x-attribsNamespace\"]) {\n clone[\"x-attribsNamespace\"] = { ...node[\"x-attribsNamespace\"] };\n }\n if (node[\"x-attribsPrefix\"]) {\n clone[\"x-attribsPrefix\"] = { ...node[\"x-attribsPrefix\"] };\n }\n result = clone;\n }\n else if (isCDATA(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new CDATA(children);\n children.forEach((child) => (child.parent = clone));\n result = clone;\n }\n else if (isDocument(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Document(children);\n children.forEach((child) => (child.parent = clone));\n if (node[\"x-mode\"]) {\n clone[\"x-mode\"] = node[\"x-mode\"];\n }\n result = clone;\n }\n else if (isDirective(node)) {\n const instruction = new ProcessingInstruction(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n }\n else {\n throw new Error(`Not implemented yet: ${node.type}`);\n }\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) {\n result.sourceCodeLocation = node.sourceCodeLocation;\n }\n return result;\n}\nfunction cloneChildren(childs) {\n const children = childs.map((child) => cloneNode(child, true));\n for (let i = 1; i < children.length; i++) {\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n","import { ElementType } from \"domelementtype\";\nimport { Element, Text, Comment, CDATA, Document, ProcessingInstruction, } from \"./node.js\";\nexport * from \"./node.js\";\n// Default options\nconst defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nexport class DomHandler {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n constructor(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n onparserinit(parser) {\n this.parser = parser;\n }\n // Resets the handler back to starting state\n onreset() {\n this.dom = [];\n this.root = new Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n }\n // Signals the handler that parsing is done\n onend() {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n }\n onerror(error) {\n this.handleCallback(error);\n }\n onclosetag() {\n this.lastNode = null;\n const elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n }\n onopentag(name, attribs) {\n const type = this.options.xmlMode ? ElementType.Tag : undefined;\n const element = new Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n }\n ontext(data) {\n const { lastNode } = this;\n if (lastNode && lastNode.type === ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n const node = new Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n }\n oncomment(data) {\n if (this.lastNode && this.lastNode.type === ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n const node = new Comment(data);\n this.addNode(node);\n this.lastNode = node;\n }\n oncommentend() {\n this.lastNode = null;\n }\n oncdatastart() {\n const text = new Text(\"\");\n const node = new CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n }\n oncdataend() {\n this.lastNode = null;\n }\n onprocessinginstruction(name, data) {\n const node = new ProcessingInstruction(name, data);\n this.addNode(node);\n }\n handleCallback(error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n }\n addNode(node) {\n const parent = this.tagStack[this.tagStack.length - 1];\n const previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n }\n}\nexport default DomHandler;\n","export const xmlReplacer = /[\"&'<>$\\x80-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n [34, \""\"],\n [38, \"&\"],\n [39, \"'\"],\n [60, \"<\"],\n [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? (str, index) => str.codePointAt(index)\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n (c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800\n ? (c.charCodeAt(index) - 0xd800) * 0x400 +\n c.charCodeAt(index + 1) -\n 0xdc00 +\n 0x10000\n : c.charCodeAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexport function encodeXML(str) {\n let ret = \"\";\n let lastIdx = 0;\n let match;\n while ((match = xmlReplacer.exec(str)) !== null) {\n const i = match.index;\n const char = str.charCodeAt(i);\n const next = xmlCodeMap.get(char);\n if (next !== undefined) {\n ret += str.substring(lastIdx, i) + next;\n lastIdx = i + 1;\n }\n else {\n ret += `${str.substring(lastIdx, i)}&#x${getCodePoint(str, i).toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIdx = xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);\n }\n }\n return ret + str.substr(lastIdx);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n return function escape(data) {\n let match;\n let lastIdx = 0;\n let result = \"\";\n while ((match = regex.exec(data))) {\n if (lastIdx !== match.index) {\n result += data.substring(lastIdx, match.index);\n }\n // We know that this character will be in the map.\n result += map.get(match[0].charCodeAt(0));\n // Every match will be of length 1\n lastIdx = match.index + 1;\n }\n return result + data.substring(lastIdx);\n };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = getEscaper(/[&<>'\"]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = getEscaper(/[\"&\\u00A0]/g, new Map([\n [34, \""\"],\n [38, \"&\"],\n [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = getEscaper(/[&<>\\u00A0]/g, new Map([\n [38, \"&\"],\n [60, \"<\"],\n [62, \">\"],\n [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map","export const elementNames = new Map([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"clipPath\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"foreignObject\",\n \"glyphRef\",\n \"linearGradient\",\n \"radialGradient\",\n \"textPath\",\n].map((val) => [val.toLowerCase(), val]));\nexport const attributeNames = new Map([\n \"definitionURL\",\n \"attributeName\",\n \"attributeType\",\n \"baseFrequency\",\n \"baseProfile\",\n \"calcMode\",\n \"clipPathUnits\",\n \"diffuseConstant\",\n \"edgeMode\",\n \"filterUnits\",\n \"glyphRef\",\n \"gradientTransform\",\n \"gradientUnits\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keyPoints\",\n \"keySplines\",\n \"keyTimes\",\n \"lengthAdjust\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerUnits\",\n \"markerWidth\",\n \"maskContentUnits\",\n \"maskUnits\",\n \"numOctaves\",\n \"pathLength\",\n \"patternContentUnits\",\n \"patternTransform\",\n \"patternUnits\",\n \"pointsAtX\",\n \"pointsAtY\",\n \"pointsAtZ\",\n \"preserveAlpha\",\n \"preserveAspectRatio\",\n \"primitiveUnits\",\n \"refX\",\n \"refY\",\n \"repeatCount\",\n \"repeatDur\",\n \"requiredExtensions\",\n \"requiredFeatures\",\n \"specularConstant\",\n \"specularExponent\",\n \"spreadMethod\",\n \"startOffset\",\n \"stdDeviation\",\n \"stitchTiles\",\n \"surfaceScale\",\n \"systemLanguage\",\n \"tableValues\",\n \"targetX\",\n \"targetY\",\n \"textLength\",\n \"viewBox\",\n \"viewTarget\",\n \"xChannelSelector\",\n \"yChannelSelector\",\n \"zoomAndPan\",\n].map((val) => [val.toLowerCase(), val]));\n","/*\n * Module dependencies\n */\nimport * as ElementType from \"domelementtype\";\nimport { encodeXML, escapeAttribute, escapeText } from \"entities\";\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nimport { elementNames, attributeNames } from \"./foreignNames.js\";\nconst unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\",\n]);\nfunction replaceQuotes(value) {\n return value.replace(/\"/g, \""\");\n}\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n var _a;\n if (!attributes)\n return;\n const encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false\n ? replaceQuotes\n : opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML\n : escapeAttribute;\n return Object.keys(attributes)\n .map((key) => {\n var _a, _b;\n const value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case attribute names */\n key = (_b = attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n }\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n return key;\n }\n return `${key}=\"${encode(value)}\"`;\n })\n .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nconst singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nexport function render(node, options = {}) {\n const nodes = \"length\" in node ? node : [node];\n let output = \"\";\n for (let i = 0; i < nodes.length; i++) {\n output += renderNode(nodes[i], options);\n }\n return output;\n}\nexport default render;\nfunction renderNode(node, options) {\n switch (node.type) {\n case ElementType.Root:\n return render(node.children, options);\n // @ts-expect-error We don't use `Doctype` yet\n case ElementType.Doctype:\n case ElementType.Directive:\n return renderDirective(node);\n case ElementType.Comment:\n return renderComment(node);\n case ElementType.CDATA:\n return renderCdata(node);\n case ElementType.Script:\n case ElementType.Style:\n case ElementType.Tag:\n return renderTag(node, options);\n case ElementType.Text:\n return renderText(node, options);\n }\n}\nconst foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nconst foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */\n elem.name = (_a = elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */\n if (elem.parent &&\n foreignModeIntegrationPoints.has(elem.parent.name)) {\n opts = { ...opts, xmlMode: false };\n }\n }\n if (!opts.xmlMode && foreignElements.has(elem.name)) {\n opts = { ...opts, xmlMode: \"foreign\" };\n }\n let tag = `<${elem.name}`;\n const attribs = formatAttributes(elem.attribs, opts);\n if (attribs) {\n tag += ` ${attribs}`;\n }\n if (elem.children.length === 0 &&\n (opts.xmlMode\n ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n opts.selfClosingTags !== false\n : // User explicitly asked for self-closing tags, even in HTML mode\n opts.selfClosingTags && singleTag.has(elem.name))) {\n if (!opts.xmlMode)\n tag += \" \";\n tag += \"/>\";\n }\n else {\n tag += \">\";\n if (elem.children.length > 0) {\n tag += render(elem.children, opts);\n }\n if (opts.xmlMode || !singleTag.has(elem.name)) {\n tag += `</${elem.name}>`;\n }\n }\n return tag;\n}\nfunction renderDirective(elem) {\n return `<${elem.data}>`;\n}\nfunction renderText(elem, opts) {\n var _a;\n let data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) !== false &&\n !(!opts.xmlMode &&\n elem.parent &&\n unencodedElements.has(elem.parent.name))) {\n data =\n opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML(data)\n : escapeText(data);\n }\n return data;\n}\nfunction renderCdata(elem) {\n return `<![CDATA[${elem.children[0].data}]]>`;\n}\nfunction renderComment(elem) {\n return `<!--${elem.data}-->`;\n}\n","import { isTag, isCDATA, isText, hasChildren, isComment, } from \"domhandler\";\nimport renderHTML from \"dom-serializer\";\nimport { ElementType } from \"domelementtype\";\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the outer HTML of.\n * @param options Options for serialization.\n * @returns `node`'s outer HTML.\n */\nexport function getOuterHTML(node, options) {\n return renderHTML(node, options);\n}\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the inner HTML of.\n * @param options Options for serialization.\n * @returns `node`'s inner HTML.\n */\nexport function getInnerHTML(node, options) {\n return hasChildren(node)\n ? node.children.map((node) => getOuterHTML(node, options)).join(\"\")\n : \"\";\n}\n/**\n * Get a node's inner text. Same as `textContent`, but inserts newlines for `<br>` tags. Ignores comments.\n *\n * @category Stringify\n * @deprecated Use `textContent` instead.\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n */\nexport function getText(node) {\n if (Array.isArray(node))\n return node.map(getText).join(\"\");\n if (isTag(node))\n return node.name === \"br\" ? \"\\n\" : getText(node.children);\n if (isCDATA(node))\n return getText(node.children);\n if (isText(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's text content. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the text content of.\n * @returns `node`'s text content.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent}\n */\nexport function textContent(node) {\n if (Array.isArray(node))\n return node.map(textContent).join(\"\");\n if (hasChildren(node) && !isComment(node)) {\n return textContent(node.children);\n }\n if (isText(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's inner text, ignoring `<script>` and `<style>` tags. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText}\n */\nexport function innerText(node) {\n if (Array.isArray(node))\n return node.map(innerText).join(\"\");\n if (hasChildren(node) && (node.type === ElementType.Tag || isCDATA(node))) {\n return innerText(node.children);\n }\n if (isText(node))\n return node.data;\n return \"\";\n}\n//# sourceMappingURL=stringify.js.map","import { isTag, hasChildren, } from \"domhandler\";\n/**\n * Get a node's children.\n *\n * @category Traversal\n * @param elem Node to get the children of.\n * @returns `elem`'s children, or an empty array.\n */\nexport function getChildren(elem) {\n return hasChildren(elem) ? elem.children : [];\n}\n/**\n * Get a node's parent.\n *\n * @category Traversal\n * @param elem Node to get the parent of.\n * @returns `elem`'s parent node, or `null` if `elem` is a root node.\n */\nexport function getParent(elem) {\n return elem.parent || null;\n}\n/**\n * Gets an elements siblings, including the element itself.\n *\n * Attempts to get the children through the element's parent first. If we don't\n * have a parent (the element is a root node), we walk the element's `prev` &\n * `next` to get all remaining nodes.\n *\n * @category Traversal\n * @param elem Element to get the siblings of.\n * @returns `elem`'s siblings, including `elem`.\n */\nexport function getSiblings(elem) {\n const parent = getParent(elem);\n if (parent != null)\n return getChildren(parent);\n const siblings = [elem];\n let { prev, next } = elem;\n while (prev != null) {\n siblings.unshift(prev);\n ({ prev } = prev);\n }\n while (next != null) {\n siblings.push(next);\n ({ next } = next);\n }\n return siblings;\n}\n/**\n * Gets an attribute from an element.\n *\n * @category Traversal\n * @param elem Element to check.\n * @param name Attribute name to retrieve.\n * @returns The element's attribute value, or `undefined`.\n */\nexport function getAttributeValue(elem, name) {\n var _a;\n return (_a = elem.attribs) === null || _a === void 0 ? void 0 : _a[name];\n}\n/**\n * Checks whether an element has an attribute.\n *\n * @category Traversal\n * @param elem Element to check.\n * @param name Attribute name to look for.\n * @returns Returns whether `elem` has the attribute `name`.\n */\nexport function hasAttrib(elem, name) {\n return (elem.attribs != null &&\n Object.prototype.hasOwnProperty.call(elem.attribs, name) &&\n elem.attribs[name] != null);\n}\n/**\n * Get the tag name of an element.\n *\n * @category Traversal\n * @param elem The element to get the name for.\n * @returns The tag name of `elem`.\n */\nexport function getName(elem) {\n return elem.name;\n}\n/**\n * Returns the next element sibling of a node.\n *\n * @category Traversal\n * @param elem The element to get the next sibling of.\n * @returns `elem`'s next sibling that is a tag, or `null` if there is no next\n * sibling.\n */\nexport function nextElementSibling(elem) {\n let { next } = elem;\n while (next !== null && !isTag(next))\n ({ next } = next);\n return next;\n}\n/**\n * Returns the previous element sibling of a node.\n *\n * @category Traversal\n * @param elem The element to get the previous sibling of.\n * @returns `elem`'s previous sibling that is a tag, or `null` if there is no\n * previous sibling.\n */\nexport function prevElementSibling(elem) {\n let { prev } = elem;\n while (prev !== null && !isTag(prev))\n ({ prev } = prev);\n return prev;\n}\n//# sourceMappingURL=traversal.js.map","/**\n * Remove an element from the dom\n *\n * @category Manipulation\n * @param elem The element to be removed\n */\nexport function removeElement(elem) {\n if (elem.prev)\n elem.prev.next = elem.next;\n if (elem.next)\n elem.next.prev = elem.prev;\n if (elem.parent) {\n const childs = elem.parent.children;\n const childsIndex = childs.lastIndexOf(elem);\n if (childsIndex >= 0) {\n childs.splice(childsIndex, 1);\n }\n }\n elem.next = null;\n elem.prev = null;\n elem.parent = null;\n}\n/**\n * Replace an element in the dom\n *\n * @category Manipulation\n * @param elem The element to be replaced\n * @param replacement The element to be added\n */\nexport function replaceElement(elem, replacement) {\n const prev = (replacement.prev = elem.prev);\n if (prev) {\n prev.next = replacement;\n }\n const next = (replacement.next = elem.next);\n if (next) {\n next.prev = replacement;\n }\n const parent = (replacement.parent = elem.parent);\n if (parent) {\n const childs = parent.children;\n childs[childs.lastIndexOf(elem)] = replacement;\n elem.parent = null;\n }\n}\n/**\n * Append a child to an element.\n *\n * @category Manipulation\n * @param parent The element to append to.\n * @param child The element to be added as a child.\n */\nexport function appendChild(parent, child) {\n removeElement(child);\n child.next = null;\n child.parent = parent;\n if (parent.children.push(child) > 1) {\n const sibling = parent.children[parent.children.length - 2];\n sibling.next = child;\n child.prev = sibling;\n }\n else {\n child.prev = null;\n }\n}\n/**\n * Append an element after another.\n *\n * @category Manipulation\n * @param elem The element to append after.\n * @param next The element be added.\n */\nexport function append(elem, next) {\n removeElement(next);\n const { parent } = elem;\n const currNext = elem.next;\n next.next = currNext;\n next.prev = elem;\n elem.next = next;\n next.parent = parent;\n if (currNext) {\n currNext.prev = next;\n if (parent) {\n const childs = parent.children;\n childs.splice(childs.lastIndexOf(currNext), 0, next);\n }\n }\n else if (parent) {\n parent.children.push(next);\n }\n}\n/**\n * Prepend a child to an element.\n *\n * @category Manipulation\n * @param parent The element to prepend before.\n * @param child The element to be added as a child.\n */\nexport function prependChild(parent, child) {\n removeElement(child);\n child.parent = parent;\n child.prev = null;\n if (parent.children.unshift(child) !== 1) {\n const sibling = parent.children[1];\n sibling.prev = child;\n child.next = sibling;\n }\n else {\n child.next = null;\n }\n}\n/**\n * Prepend an element before another.\n *\n * @category Manipulation\n * @param elem The element to prepend before.\n * @param prev The element be added.\n */\nexport function prepend(elem, prev) {\n removeElement(prev);\n const { parent } = elem;\n if (parent) {\n const childs = parent.children;\n childs.splice(childs.indexOf(elem), 0, prev);\n }\n if (elem.prev) {\n elem.prev.next = prev;\n }\n prev.parent = parent;\n prev.prev = elem.prev;\n prev.next = elem;\n elem.prev = prev;\n}\n//# sourceMappingURL=manipulation.js.map","import { isTag, hasChildren } from \"domhandler\";\n/**\n * Search a node and its children for nodes passing a test function. If `node` is not an array, it will be wrapped in one.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param node Node to search. Will be included in the result set if it matches.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes passing `test`.\n */\nexport function filter(test, node, recurse = true, limit = Infinity) {\n return find(test, Array.isArray(node) ? node : [node], recurse, limit);\n}\n/**\n * Search an array of nodes and their children for nodes passing a test function.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes passing `test`.\n */\nexport function find(test, nodes, recurse, limit) {\n const result = [];\n /** Stack of the arrays we are looking at. */\n const nodeStack = [nodes];\n /** Stack of the indices within the arrays. */\n const indexStack = [0];\n for (;;) {\n // First, check if the current array has any more elements to look at.\n if (indexStack[0] >= nodeStack[0].length) {\n // If we have no more arrays to look at, we are done.\n if (indexStack.length === 1) {\n return result;\n }\n // Otherwise, remove the current array from the stack.\n nodeStack.shift();\n indexStack.shift();\n // Loop back to the start to continue with the next array.\n continue;\n }\n const elem = nodeStack[0][indexStack[0]++];\n if (test(elem)) {\n result.push(elem);\n if (--limit <= 0)\n return result;\n }\n if (recurse && hasChildren(elem) && elem.children.length > 0) {\n /*\n * Add the children to the stack. We are depth-first, so this is\n * the next array we look at.\n */\n indexStack.unshift(0);\n nodeStack.unshift(elem.children);\n }\n }\n}\n/**\n * Finds the first element inside of an array that matches a test function. This is an alias for `Array.prototype.find`.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns The first node in the array that passes `test`.\n * @deprecated Use `Array.prototype.find` directly.\n */\nexport function findOneChild(test, nodes) {\n return nodes.find(test);\n}\n/**\n * Finds one element in a tree that passes a test.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Node or array of nodes to search.\n * @param recurse Also consider child nodes.\n * @returns The first node that passes `test`.\n */\nexport function findOne(test, nodes, recurse = true) {\n let elem = null;\n for (let i = 0; i < nodes.length && !elem; i++) {\n const node = nodes[i];\n if (!isTag(node)) {\n continue;\n }\n else if (test(node)) {\n elem = node;\n }\n else if (recurse && node.children.length > 0) {\n elem = findOne(test, node.children, true);\n }\n }\n return elem;\n}\n/**\n * Checks if a tree of nodes contains at least one node passing a test.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns Whether a tree of nodes contains at least one node passing the test.\n */\nexport function existsOne(test, nodes) {\n return nodes.some((checked) => isTag(checked) &&\n (test(checked) || existsOne(test, checked.children)));\n}\n/**\n * Search an array of nodes and their children for elements passing a test function.\n *\n * Same as `find`, but limited to elements and with less options, leading to reduced complexity.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns All nodes passing `test`.\n */\nexport function findAll(test, nodes) {\n const result = [];\n const nodeStack = [nodes];\n const indexStack = [0];\n for (;;) {\n if (indexStack[0] >= nodeStack[0].length) {\n if (nodeStack.length === 1) {\n return result;\n }\n // Otherwise, remove the current array from the stack.\n nodeStack.shift();\n indexStack.shift();\n // Loop back to the start to continue with the next array.\n continue;\n }\n const elem = nodeStack[0][indexStack[0]++];\n if (!isTag(elem))\n continue;\n if (test(elem))\n result.push(elem);\n if (elem.children.length > 0) {\n indexStack.unshift(0);\n nodeStack.unshift(elem.children);\n }\n }\n}\n//# sourceMappingURL=querying.js.map","import { isTag, isText } from \"domhandler\";\nimport { filter, findOne } from \"./querying.js\";\n/**\n * A map of functions to check nodes against.\n */\nconst Checks = {\n tag_name(name) {\n if (typeof name === \"function\") {\n return (elem) => isTag(elem) && name(elem.name);\n }\n else if (name === \"*\") {\n return isTag;\n }\n return (elem) => isTag(elem) && elem.name === name;\n },\n tag_type(type) {\n if (typeof type === \"function\") {\n return (elem) => type(elem.type);\n }\n return (elem) => elem.type === type;\n },\n tag_contains(data) {\n if (typeof data === \"function\") {\n return (elem) => isText(elem) && data(elem.data);\n }\n return (elem) => isText(elem) && elem.data === data;\n },\n};\n/**\n * Returns a function to check whether a node has an attribute with a particular\n * value.\n *\n * @param attrib Attribute to check.\n * @param value Attribute value to look for.\n * @returns A function to check whether the a node has an attribute with a\n * particular value.\n */\nfunction getAttribCheck(attrib, value) {\n if (typeof value === \"function\") {\n return (elem) => isTag(elem) && value(elem.attribs[attrib]);\n }\n return (elem) => isTag(elem) && elem.attribs[attrib] === value;\n}\n/**\n * Returns a function that returns `true` if either of the input functions\n * returns `true` for a node.\n *\n * @param a First function to combine.\n * @param b Second function to combine.\n * @returns A function taking a node and returning `true` if either of the input\n * functions returns `true` for the node.\n */\nfunction combineFuncs(a, b) {\n return (elem) => a(elem) || b(elem);\n}\n/**\n * Returns a function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n *\n * @param options An object describing nodes to look for.\n * @returns A function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n */\nfunction compileTest(options) {\n const funcs = Object.keys(options).map((key) => {\n const value = options[key];\n return Object.prototype.hasOwnProperty.call(Checks, key)\n ? Checks[key](value)\n : getAttribCheck(key, value);\n });\n return funcs.length === 0 ? null : funcs.reduce(combineFuncs);\n}\n/**\n * Checks whether a node matches the description in `options`.\n *\n * @category Legacy Query Functions\n * @param options An object describing nodes to look for.\n * @param node The element to test.\n * @returns Whether the element matches the description in `options`.\n */\nexport function testElement(options, node) {\n const test = compileTest(options);\n return test ? test(node) : true;\n}\n/**\n * Returns all nodes that match `options`.\n *\n * @category Legacy Query Functions\n * @param options An object describing nodes to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes that match `options`.\n */\nexport function getElements(options, nodes, recurse, limit = Infinity) {\n const test = compileTest(options);\n return test ? filter(test, nodes, recurse, limit) : [];\n}\n/**\n * Returns the node with the supplied ID.\n *\n * @category Legacy Query Functions\n * @param id The unique ID attribute value to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @returns The node with the supplied ID.\n */\nexport function getElementById(id, nodes, recurse = true) {\n if (!Array.isArray(nodes))\n nodes = [nodes];\n return findOne(getAttribCheck(\"id\", id), nodes, recurse);\n}\n/**\n * Returns all nodes with the supplied `tagName`.\n *\n * @category Legacy Query Functions\n * @param tagName Tag name to search for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `tagName`.\n */\nexport function getElementsByTagName(tagName, nodes, recurse = true, limit = Infinity) {\n return filter(Checks[\"tag_name\"](tagName), nodes, recurse, limit);\n}\n/**\n * Returns all nodes with the supplied `type`.\n *\n * @category Legacy Query Functions\n * @param type Element type to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `type`.\n */\nexport function getElementsByTagType(type, nodes, recurse = true, limit = Infinity) {\n return filter(Checks[\"tag_type\"](type), nodes, recurse, limit);\n}\n//# sourceMappingURL=legacy.js.map","import { hasChildren } from \"domhandler\";\n/**\n * Given an array of nodes, remove any member that is contained by another\n * member.\n *\n * @category Helpers\n * @param nodes Nodes to filter.\n * @returns Remaining nodes that aren't contained by other nodes.\n */\nexport function removeSubsets(nodes) {\n let idx = nodes.length;\n /*\n * Check if each node (or one of its ancestors) is already contained in the\n * array.\n */\n while (--idx >= 0) {\n const node = nodes[idx];\n /*\n * Remove the node if it is not unique.\n * We are going through the array from the end, so we only\n * have to check nodes that preceed the node under consideration in the array.\n */\n if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) {\n nodes.splice(idx, 1);\n continue;\n }\n for (let ancestor = node.parent; ancestor; ancestor = ancestor.parent) {\n if (nodes.includes(ancestor)) {\n nodes.splice(idx, 1);\n break;\n }\n }\n }\n return nodes;\n}\n/**\n * @category Helpers\n * @see {@link http://dom.spec.whatwg.org/#dom-node-comparedocumentposition}\n */\nexport var DocumentPosition;\n(function (DocumentPosition) {\n DocumentPosition[DocumentPosition[\"DISCONNECTED\"] = 1] = \"DISCONNECTED\";\n DocumentPosition[DocumentPosition[\"PRECEDING\"] = 2] = \"PRECEDING\";\n DocumentPosition[DocumentPosition[\"FOLLOWING\"] = 4] = \"FOLLOWING\";\n DocumentPosition[DocumentPosition[\"CONTAINS\"] = 8] = \"CONTAINS\";\n DocumentPosition[DocumentPosition[\"CONTAINED_BY\"] = 16] = \"CONTAINED_BY\";\n})(DocumentPosition || (DocumentPosition = {}));\n/**\n * Compare the position of one node against another node in any other document,\n * returning a bitmask with the values from {@link DocumentPosition}.\n *\n * Document order:\n * > There is an ordering, document order, defined on all the nodes in the\n * > document corresponding to the order in which the first character of the\n * > XML representation of each node occurs in the XML representation of the\n * > document after expansion of general entities. Thus, the document element\n * > node will be the first node. Element nodes occur before their children.\n * > Thus, document order orders element nodes in order of the occurrence of\n * > their start-tag in the XML (after expansion of entities). The attribute\n * > nodes of an element occur after the element and before its children. The\n * > relative order of attribute nodes is implementation-dependent.\n *\n * Source:\n * http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order\n *\n * @category Helpers\n * @param nodeA The first node to use in the comparison\n * @param nodeB The second node to use in the comparison\n * @returns A bitmask describing the input nodes' relative position.\n *\n * See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for\n * a description of these values.\n */\nexport function compareDocumentPosition(nodeA, nodeB) {\n const aParents = [];\n const bParents = [];\n if (nodeA === nodeB) {\n return 0;\n }\n let current = hasChildren(nodeA) ? nodeA : nodeA.parent;\n while (current) {\n aParents.unshift(current);\n current = current.parent;\n }\n current = hasChildren(nodeB) ? nodeB : nodeB.parent;\n while (current) {\n bParents.unshift(current);\n current = current.parent;\n }\n const maxIdx = Math.min(aParents.length, bParents.length);\n let idx = 0;\n while (idx < maxIdx && aParents[idx] === bParents[idx]) {\n idx++;\n }\n if (idx === 0) {\n return DocumentPosition.DISCONNECTED;\n }\n const sharedParent = aParents[idx - 1];\n const siblings = sharedParent.children;\n const aSibling = aParents[idx];\n const bSibling = bParents[idx];\n if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n if (sharedParent === nodeB) {\n return DocumentPosition.FOLLOWING | DocumentPosition.CONTAINED_BY;\n }\n return DocumentPosition.FOLLOWING;\n }\n if (sharedParent === nodeA) {\n return DocumentPosition.PRECEDING | DocumentPosition.CONTAINS;\n }\n return DocumentPosition.PRECEDING;\n}\n/**\n * Sort an array of nodes based on their relative position in the document,\n * removing any duplicate nodes. If the array contains nodes that do not belong\n * to the same document, sort order is unspecified.\n *\n * @category Helpers\n * @param nodes Array of DOM nodes.\n * @returns Collection of unique nodes, sorted in document order.\n */\nexport function uniqueSort(nodes) {\n nodes = nodes.filter((node, i, arr) => !arr.includes(node, i + 1));\n nodes.sort((a, b) => {\n const relative = compareDocumentPosition(a, b);\n if (relative & DocumentPosition.PRECEDING) {\n return -1;\n }\n else if (relative & DocumentPosition.FOLLOWING) {\n return 1;\n }\n return 0;\n });\n return nodes;\n}\n//# sourceMappingURL=helpers.js.map","import { textContent } from \"./stringify.js\";\nimport { getElementsByTagName } from \"./legacy.js\";\n/**\n * Get the feed object from the root of a DOM tree.\n *\n * @category Feeds\n * @param doc - The DOM to to extract the feed from.\n * @returns The feed.\n */\nexport function getFeed(doc) {\n const feedRoot = getOneElement(isValidFeed, doc);\n return !feedRoot\n ? null\n : feedRoot.name === \"feed\"\n ? getAtomFeed(feedRoot)\n : getRssFeed(feedRoot);\n}\n/**\n * Parse an Atom feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getAtomFeed(feedRoot) {\n var _a;\n const childs = feedRoot.children;\n const feed = {\n type: \"atom\",\n items: getElementsByTagName(\"entry\", childs).map((item) => {\n var _a;\n const { children } = item;\n const entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"id\", children);\n addConditionally(entry, \"title\", \"title\", children);\n const href = (_a = getOneElement(\"link\", children)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) {\n entry.link = href;\n }\n const description = fetch(\"summary\", children) || fetch(\"content\", children);\n if (description) {\n entry.description = description;\n }\n const pubDate = fetch(\"updated\", children);\n if (pubDate) {\n entry.pubDate = new Date(pubDate);\n }\n return entry;\n }),\n };\n addConditionally(feed, \"id\", \"id\", childs);\n addConditionally(feed, \"title\", \"title\", childs);\n const href = (_a = getOneElement(\"link\", childs)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) {\n feed.link = href;\n }\n addConditionally(feed, \"description\", \"subtitle\", childs);\n const updated = fetch(\"updated\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"email\", childs, true);\n return feed;\n}\n/**\n * Parse a RSS feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getRssFeed(feedRoot) {\n var _a, _b;\n const childs = (_b = (_a = getOneElement(\"channel\", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : [];\n const feed = {\n type: feedRoot.name.substr(0, 3),\n id: \"\",\n items: getElementsByTagName(\"item\", feedRoot.children).map((item) => {\n const { children } = item;\n const entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"guid\", children);\n addConditionally(entry, \"title\", \"title\", children);\n addConditionally(entry, \"link\", \"link\", children);\n addConditionally(entry, \"description\", \"description\", children);\n const pubDate = fetch(\"pubDate\", children) || fetch(\"dc:date\", children);\n if (pubDate)\n entry.pubDate = new Date(pubDate);\n return entry;\n }),\n };\n addConditionally(feed, \"title\", \"title\", childs);\n addConditionally(feed, \"link\", \"link\", childs);\n addConditionally(feed, \"description\", \"description\", childs);\n const updated = fetch(\"lastBuildDate\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"managingEditor\", childs, true);\n return feed;\n}\nconst MEDIA_KEYS_STRING = [\"url\", \"type\", \"lang\"];\nconst MEDIA_KEYS_INT = [\n \"fileSize\",\n \"bitrate\",\n \"framerate\",\n \"samplingrate\",\n \"channels\",\n \"duration\",\n \"height\",\n \"width\",\n];\n/**\n * Get all media elements of a feed item.\n *\n * @param where Nodes to search in.\n * @returns Media elements.\n */\nfunction getMediaElements(where) {\n return getElementsByTagName(\"media:content\", where).map((elem) => {\n const { attribs } = elem;\n const media = {\n medium: attribs[\"medium\"],\n isDefault: !!attribs[\"isDefault\"],\n };\n for (const attrib of MEDIA_KEYS_STRING) {\n if (attribs[attrib]) {\n media[attrib] = attribs[attrib];\n }\n }\n for (const attrib of MEDIA_KEYS_INT) {\n if (attribs[attrib]) {\n media[attrib] = parseInt(attribs[attrib], 10);\n }\n }\n if (attribs[\"expression\"]) {\n media.expression = attribs[\"expression\"];\n }\n return media;\n });\n}\n/**\n * Get one element by tag name.\n *\n * @param tagName Tag name to look for\n * @param node Node to search in\n * @returns The element or null\n */\nfunction getOneElement(tagName, node) {\n return getElementsByTagName(tagName, node, true, 1)[0];\n}\n/**\n * Get the text content of an element with a certain tag name.\n *\n * @param tagName Tag name to look for.\n * @param where Node to search in.\n * @param recurse Whether to recurse into child nodes.\n * @returns The text content of the element.\n */\nfunction fetch(tagName, where, recurse = false) {\n return textContent(getElementsByTagName(tagName, where, recurse, 1)).trim();\n}\n/**\n * Adds a property to an object if it has a value.\n *\n * @param obj Object to be extended\n * @param prop Property name\n * @param tagName Tag name that contains the conditionally added property\n * @param where Element to search for the property\n * @param recurse Whether to recurse into child nodes.\n */\nfunction addConditionally(obj, prop, tagName, where, recurse = false) {\n const val = fetch(tagName, where, recurse);\n if (val)\n obj[prop] = val;\n}\n/**\n * Checks if an element is a feed root node.\n *\n * @param value The name of the element to check.\n * @returns Whether an element is a feed root node.\n */\nfunction isValidFeed(value) {\n return value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n}\n//# sourceMappingURL=feeds.js.map","import { Parser } from \"./Parser.js\";\nexport { Parser } from \"./Parser.js\";\nimport { DomHandler, } from \"domhandler\";\nexport { DomHandler, \n// Old name for DomHandler\nDomHandler as DefaultHandler, } from \"domhandler\";\n// Helper methods\n/**\n * Parses the data, returns the resulting document.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM handler.\n */\nexport function parseDocument(data, options) {\n const handler = new DomHandler(undefined, options);\n new Parser(handler, options).end(data);\n return handler.root;\n}\n/**\n * Parses data, returns an array of the root nodes.\n *\n * Note that the root nodes still have a `Document` node as their parent.\n * Use `parseDocument` to get the `Document` node instead.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM handler.\n * @deprecated Use `parseDocument` instead.\n */\nexport function parseDOM(data, options) {\n return parseDocument(data, options).children;\n}\n/**\n * Creates a parser instance, with an attached DOM handler.\n *\n * @param callback A callback that will be called once parsing has been completed, with the resulting document.\n * @param options Optional options for the parser and DOM handler.\n * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.\n */\nexport function createDocumentStream(callback, options, elementCallback) {\n const handler = new DomHandler((error) => callback(error, handler.root), options, elementCallback);\n return new Parser(handler, options);\n}\n/**\n * Creates a parser instance, with an attached DOM handler.\n *\n * @param callback A callback that will be called once parsing has been completed, with an array of root nodes.\n * @param options Optional options for the parser and DOM handler.\n * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.\n * @deprecated Use `createDocumentStream` instead.\n */\nexport function createDomStream(callback, options, elementCallback) {\n const handler = new DomHandler(callback, options, elementCallback);\n return new Parser(handler, options);\n}\nexport { default as Tokenizer, QuoteType, } from \"./Tokenizer.js\";\n/*\n * All of the following exports exist for backwards-compatibility.\n * They should probably be removed eventually.\n */\nexport * as ElementType from \"domelementtype\";\nimport { getFeed } from \"domutils\";\nexport { getFeed } from \"domutils\";\nconst parseFeedDefaultOptions = { xmlMode: true };\n/**\n * Parse a feed.\n *\n * @param feed The feed that should be parsed, as a string.\n * @param options Optionally, options for parsing. When using this, you should set `xmlMode` to `true`.\n */\nexport function parseFeed(feed, options = parseFeedDefaultOptions) {\n return getFeed(parseDOM(feed, options));\n}\nexport * as DomUtils from \"domutils\";\n//# sourceMappingURL=index.js.map","// Internal\nexport const NODE_END = -1;\n\n// Node\nexport const ELEMENT_NODE = 1;\nexport const ATTRIBUTE_NODE = 2;\nexport const TEXT_NODE = 3;\nexport const CDATA_SECTION_NODE = 4;\nexport const COMMENT_NODE = 8;\nexport const DOCUMENT_NODE = 9;\nexport const DOCUMENT_TYPE_NODE = 10;\nexport const DOCUMENT_FRAGMENT_NODE = 11;\n\n// Elements\nexport const BLOCK_ELEMENTS = new Set(['ARTICLE', 'ASIDE', 'BLOCKQUOTE', 'BODY', 'BR', 'BUTTON', 'CANVAS', 'CAPTION', 'COL', 'COLGROUP', 'DD', 'DIV', 'DL', 'DT', 'EMBED', 'FIELDSET', 'FIGCAPTION', 'FIGURE', 'FOOTER', 'FORM', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'LI', 'UL', 'OL', 'P']);\n\n// TreeWalker\nexport const SHOW_ALL = -1;\nexport const SHOW_ELEMENT = 1;\nexport const SHOW_TEXT = 4;\nexport const SHOW_CDATA_SECTION = 8;\nexport const SHOW_COMMENT = 128;\n\n// Document position\nexport const DOCUMENT_POSITION_DISCONNECTED = 0x01;\nexport const DOCUMENT_POSITION_PRECEDING = 0x02;\nexport const DOCUMENT_POSITION_FOLLOWING = 0x04;\nexport const DOCUMENT_POSITION_CONTAINS = 0x08;\nexport const DOCUMENT_POSITION_CONTAINED_BY = 0x10;\nexport const DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;\n\n// SVG\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n","const {\n assign,\n create,\n defineProperties,\n entries,\n getOwnPropertyDescriptors,\n keys,\n setPrototypeOf\n} = Object;\n\nexport {\n assign,\n create,\n defineProperties,\n entries,\n getOwnPropertyDescriptors,\n keys,\n setPrototypeOf\n};\n","import {ELEMENT_NODE} from './constants.js';\nimport {END, MIME, NEXT, PREV} from './symbols.js';\n\nconst $String = String;\nexport {$String as String};\n\nexport const getEnd = node => node.nodeType === ELEMENT_NODE ? node[END] : node;\n\nexport const ignoreCase = ({ownerDocument}) => ownerDocument[MIME].ignoreCase;\n\nexport const knownAdjacent = (prev, next) => {\n prev[NEXT] = next;\n next[PREV] = prev;\n};\n\nexport const knownBoundaries = (prev, current, next) => {\n knownAdjacent(prev, current);\n knownAdjacent(getEnd(current), next);\n};\n\nexport const knownSegment = (prev, start, end, next) => {\n knownAdjacent(prev, start);\n knownAdjacent(getEnd(end), next);\n};\n\nexport const knownSiblings = (prev, current, next) => {\n knownAdjacent(prev, current);\n knownAdjacent(current, next);\n};\n\nexport const localCase = ({localName, ownerDocument}) => {\n return ownerDocument[MIME].ignoreCase ? localName.toUpperCase() : localName;\n};\n\nexport const setAdjacent = (prev, next) => {\n if (prev)\n prev[NEXT] = next;\n if (next)\n next[PREV] = prev;\n};\n","export const shadowRoots = new WeakMap;\n","import {ELEMENT_NODE} from '../shared/constants.js';\nimport {END, NEXT, UPGRADE} from '../shared/symbols.js';\nimport {entries, setPrototypeOf} from '../shared/object.js';\nimport {shadowRoots} from '../shared/shadow-roots.js';\n\nlet reactive = false;\n\nexport const Classes = new WeakMap;\n\nexport const customElements = new WeakMap;\n\nexport const attributeChangedCallback = (element, attributeName, oldValue, newValue) => {\n if (\n reactive &&\n customElements.has(element) &&\n element.attributeChangedCallback &&\n element.constructor.observedAttributes.includes(attributeName)\n ) {\n element.attributeChangedCallback(attributeName, oldValue, newValue);\n }\n};\n\nconst createTrigger = (method, isConnected) => element => {\n if (customElements.has(element)) {\n const info = customElements.get(element);\n if (info.connected !== isConnected && element.isConnected === isConnected) {\n info.connected = isConnected;\n if (method in element)\n element[method]();\n }\n }\n};\n\nconst triggerConnected = createTrigger('connectedCallback', true);\nexport const connectedCallback = element => {\n if (reactive) {\n triggerConnected(element);\n if (shadowRoots.has(element))\n element = shadowRoots.get(element).shadowRoot;\n let {[NEXT]: next, [END]: end} = element;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE)\n triggerConnected(next);\n next = next[NEXT];\n }\n }\n};\n\nconst triggerDisconnected = createTrigger('disconnectedCallback', false);\nexport const disconnectedCallback = element => {\n if (reactive) {\n triggerDisconnected(element);\n if (shadowRoots.has(element))\n element = shadowRoots.get(element).shadowRoot;\n let {[NEXT]: next, [END]: end} = element;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE)\n triggerDisconnected(next);\n next = next[NEXT];\n }\n }\n};\n\n/**\n * @implements globalThis.CustomElementRegistry\n */\nexport class CustomElementRegistry {\n\n /**\n * @param {Document} ownerDocument\n */\n constructor(ownerDocument) {\n /**\n * @private\n */\n this.ownerDocument = ownerDocument;\n\n /**\n * @private\n */\n this.registry = new Map;\n\n /**\n * @private\n */\n this.waiting = new Map;\n\n /**\n * @private\n */\n this.active = false;\n }\n\n /**\n * @param {string} localName the custom element definition name\n * @param {Function} Class the custom element **Class** definition\n * @param {object?} options the optional object with an `extends` property\n */\n define(localName, Class, options = {}) {\n const {ownerDocument, registry, waiting} = this;\n\n if (registry.has(localName))\n throw new Error('unable to redefine ' + localName);\n\n if (Classes.has(Class))\n throw new Error('unable to redefine the same class: ' + Class);\n\n this.active = (reactive = true);\n\n const {extends: extend} = options;\n\n Classes.set(Class, {\n ownerDocument,\n options: {is: extend ? localName : ''},\n localName: extend || localName\n });\n\n const check = extend ?\n element => {\n return element.localName === extend &&\n element.getAttribute('is') === localName;\n } :\n element => element.localName === localName;\n registry.set(localName, {Class, check});\n if (waiting.has(localName)) {\n for (const resolve of waiting.get(localName))\n resolve(Class);\n waiting.delete(localName);\n }\n ownerDocument.querySelectorAll(\n extend ? `${extend}[is=\"${localName}\"]` : localName\n ).forEach(this.upgrade, this);\n }\n\n /**\n * @param {Element} element\n */\n upgrade(element) {\n if (customElements.has(element))\n return;\n const {ownerDocument, registry} = this;\n const ce = element.getAttribute('is') || element.localName;\n if (registry.has(ce)) {\n const {Class, check} = registry.get(ce);\n if (check(element)) {\n const {attributes, isConnected} = element;\n for (const attr of attributes)\n element.removeAttributeNode(attr);\n\n const values = entries(element);\n for (const [key] of values)\n delete element[key];\n\n setPrototypeOf(element, Class.prototype);\n ownerDocument[UPGRADE] = {element, values};\n new Class(ownerDocument, ce);\n\n customElements.set(element, {connected: isConnected});\n\n for (const attr of attributes)\n element.setAttributeNode(attr);\n\n if (isConnected && element.connectedCallback)\n element.connectedCallback();\n }\n }\n }\n\n /**\n * @param {string} localName the custom element definition name\n */\n whenDefined(localName) {\n const {registry, waiting} = this;\n return new Promise(resolve => {\n if (registry.has(localName))\n resolve(registry.get(localName).Class);\n else {\n if (!waiting.has(localName))\n waiting.set(localName, []);\n waiting.get(localName).push(resolve);\n }\n });\n }\n\n /**\n * @param {string} localName the custom element definition name\n * @returns {Function?} the custom element **Class**, if any\n */\n get(localName) {\n const info = this.registry.get(localName);\n return info && info.Class;\n }\n\n /**\n * @param {Function} Class **Class** of custom element\n * @returns {string?} found tag name or null\n */\n getName(Class) {\n if (Classes.has(Class)) {\n const { localName } = Classes.get(Class);\n return localName;\n }\n return null;\n }\n}\n","import * as HTMLParser2 from 'htmlparser2';\n\nimport {ELEMENT_NODE, SVG_NAMESPACE} from './constants.js';\nimport {CUSTOM_ELEMENTS, PREV, END, VALUE} from './symbols.js';\nimport {keys} from './object.js';\n\nimport {knownBoundaries, knownSiblings} from './utils.js';\nimport {attributeChangedCallback, connectedCallback} from '../interface/custom-element-registry.js';\n\nconst {Parser} = HTMLParser2;\n\n// import {Mime} from './mime.js';\n// const VOID_SOURCE = Mime['text/html'].voidElements.source.slice(4, -2);\n// const VOID_ELEMENTS = new RegExp(`<(${VOID_SOURCE})([^>]*?)>`, 'gi');\n// const VOID_SANITIZER = (_, $1, $2) => `<${$1}${$2}${/\\/$/.test($2) ? '' : ' /'}>`;\n// const voidSanitizer = html => html.replace(VOID_ELEMENTS, VOID_SANITIZER);\n\nlet notParsing = true;\n\nconst append = (self, node, active) => {\n const end = self[END];\n node.parentNode = self;\n knownBoundaries(end[PREV], node, end);\n if (active && node.nodeType === ELEMENT_NODE)\n connectedCallback(node);\n return node;\n};\n\nconst attribute = (element, end, attribute, value, active) => {\n attribute[VALUE] = value;\n attribute.ownerElement = element;\n knownSiblings(end[PREV], attribute, end);\n if (attribute.name === 'class')\n element.className = value;\n if (active)\n attributeChangedCallback(element, attribute.name, null, value);\n};\n\nexport const isNotParsing = () => notParsing;\n\nexport const parseFromString = (document, isHTML, markupLanguage) => {\n const {active, registry} = document[CUSTOM_ELEMENTS];\n\n let node = document;\n let ownerSVGElement = null;\n let parsingCData = false;\n\n notParsing = false;\n\n const content = new Parser({\n // <!DOCTYPE ...>\n onprocessinginstruction(name, data) {\n if (name.toLowerCase() === '!doctype')\n document.doctype = data.slice(name.length).trim();\n },\n\n // <tagName>\n onopentag(name, attributes) {\n let create = true;\n if (isHTML) {\n if (ownerSVGElement) {\n node = append(node, document.createElementNS(SVG_NAMESPACE, name), active);\n node.ownerSVGElement = ownerSVGElement;\n create = false;\n }\n else if (name === 'svg' || name === 'SVG') {\n ownerSVGElement = document.createElementNS(SVG_NAMESPACE, name);\n node = append(node, ownerSVGElement, active);\n create = false;\n }\n else if (active) {\n const ce = name.includes('-') ? name : (attributes.is || '');\n if (ce && registry.has(ce)) {\n const {Class} = registry.get(ce);\n node = append(node, new Class, active);\n delete attributes.is;\n create = false;\n }\n }\n }\n\n if (create)\n node = append(node, document.createElement(name), false);\n\n let end = node[END];\n for (const name of keys(attributes))\n attribute(node, end, document.createAttribute(name), attributes[name], active);\n },\n\n // #text, #comment\n oncomment(data) { append(node, document.createComment(data), active); },\n ontext(text) {\n if (parsingCData) {\n append(node, document.createCDATASection(text), active);\n } else {\n append(node, document.createTextNode(text), active);\n }\n },\n\n // #cdata\n oncdatastart() { parsingCData = true; },\n oncdataend() { parsingCData = false; },\n\n // </tagName>\n onclosetag() {\n if (isHTML && node === ownerSVGElement)\n ownerSVGElement = null;\n node = node.parentNode;\n }\n }, {\n lowerCaseAttributeNames: false,\n decodeEntities: true,\n xmlMode: !isHTML\n });\n\n content.write(markupLanguage);\n content.end();\n\n notParsing = true;\n\n return document;\n};\n","export const htmlClasses = new Map;\n\nexport const registerHTMLClass = (names, Class) => {\n for (const name of [].concat(names)) {\n htmlClasses.set(name, Class);\n htmlClasses.set(name.toUpperCase(), Class);\n }\n};\n","export default {}","/* c8 ignore start */\ntry {\n const {performance} = require('perf_hooks');\n exports.performance = performance;\n}\ncatch (fallback) {\n exports.performance = {now() { return +new Date; }};\n}\n/* c8 ignore stop */\n","import {\n NODE_END,\n ATTRIBUTE_NODE,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n DOCUMENT_TYPE_NODE,\n ELEMENT_NODE,\n TEXT_NODE\n} from './constants.js';\n\nimport {END, NEXT, VALUE} from './symbols.js';\n\nimport {getEnd} from './utils.js';\n\nconst loopSegment = ({[NEXT]: next, [END]: end}, json) => {\n while (next !== end) {\n switch (next.nodeType) {\n case ATTRIBUTE_NODE:\n attrAsJSON(next, json);\n break;\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n characterDataAsJSON(next, json);\n break;\n case ELEMENT_NODE:\n elementAsJSON(next, json);\n next = getEnd(next);\n break;\n case DOCUMENT_TYPE_NODE:\n documentTypeAsJSON(next, json);\n break;\n }\n next = next[NEXT];\n }\n const last = json.length - 1;\n const value = json[last];\n if (typeof value === 'number' && value < 0)\n json[last] += NODE_END;\n else\n json.push(NODE_END);\n};\n\nexport const attrAsJSON = (attr, json) => {\n json.push(ATTRIBUTE_NODE, attr.name);\n const value = attr[VALUE].trim();\n if (value)\n json.push(value);\n};\n\nexport const characterDataAsJSON = (node, json) => {\n const value = node[VALUE];\n if (value.trim())\n json.push(node.nodeType, value);\n};\n\nexport const nonElementAsJSON = (node, json) => {\n json.push(node.nodeType);\n loopSegment(node, json);\n};\n\nexport const documentTypeAsJSON = ({name, publicId, systemId}, json) => {\n json.push(DOCUMENT_TYPE_NODE, name);\n if (publicId)\n json.push(publicId);\n if (systemId)\n json.push(systemId);\n};\n\nexport const elementAsJSON = (element, json) => {\n json.push(ELEMENT_NODE, element.localName);\n loopSegment(element, json);\n};\n","import {MUTATION_OBSERVER} from '../shared/symbols.js';\n\nconst createRecord =\n (type, target, addedNodes, removedNodes, attributeName, oldValue) =>\n ({type, target, addedNodes, removedNodes, attributeName, oldValue});\n\nconst queueAttribute = (\n observer, target, attributeName, attributeFilter, attributeOldValue, oldValue\n) => {\n if ((!attributeFilter || attributeFilter.includes(attributeName))) {\n const {callback, records, scheduled} = observer;\n records.push(createRecord(\n 'attributes', target,\n [], [],\n attributeName, attributeOldValue ? oldValue : void 0\n ));\n if (!scheduled) {\n observer.scheduled = true;\n Promise.resolve().then(() => {\n observer.scheduled = false;\n callback(records.splice(0), observer);\n });\n }\n }\n};\n\nexport const attributeChangedCallback = (element, attributeName, oldValue) => {\n const {ownerDocument} = element;\n const {active, observers} = ownerDocument[MUTATION_OBSERVER];\n if (active) {\n for (const observer of observers) {\n for (const [\n target,\n {\n childList,\n subtree,\n attributes,\n attributeFilter,\n attributeOldValue\n }\n ] of observer.nodes) {\n if (childList) {\n if (\n (subtree && (target === ownerDocument || target.contains(element))) ||\n (!subtree && target.children.includes(element))\n ) {\n queueAttribute(\n observer, element,\n attributeName, attributeFilter, attributeOldValue, oldValue\n );\n break;\n }\n }\n else if (\n attributes &&\n target === element\n ) {\n queueAttribute(\n observer, element,\n attributeName, attributeFilter, attributeOldValue, oldValue\n );\n break;\n }\n }\n }\n }\n};\n\nexport const moCallback = (element, parentNode) => {\n const {ownerDocument} = element;\n const {active, observers} = ownerDocument[MUTATION_OBSERVER];\n if (active) {\n for (const observer of observers) {\n for (const [target, {subtree, childList, characterData}] of observer.nodes) {\n if (childList) {\n if (\n (parentNode && (target === parentNode || /* c8 ignore next */(subtree && target.contains(parentNode)))) ||\n (!parentNode && ((subtree && (target === ownerDocument || /* c8 ignore next */target.contains(element))) ||\n (!subtree && target[characterData ? 'childNodes' : 'children'].includes(element))))\n ) {\n const {callback, records, scheduled} = observer;\n records.push(createRecord(\n 'childList', target,\n parentNode ? [] : [element], parentNode ? [element] : []\n ));\n if (!scheduled) {\n observer.scheduled = true;\n Promise.resolve().then(() => {\n observer.scheduled = false;\n callback(records.splice(0), observer);\n });\n }\n break;\n }\n }\n }\n }\n }\n};\n\nexport class MutationObserverClass {\n constructor(ownerDocument) {\n const observers = new Set;\n this.observers = observers;\n this.active = false;\n\n /**\n * @implements globalThis.MutationObserver\n */\n this.class = class MutationObserver {\n\n constructor(callback) {\n /**\n * @private\n */\n this.callback = callback;\n\n /**\n * @private\n */\n this.nodes = new Map;\n\n /**\n * @private\n */\n this.records = [];\n\n /**\n * @private\n */\n this.scheduled = false;\n }\n\n disconnect() {\n this.records.splice(0);\n this.nodes.clear();\n observers.delete(this);\n ownerDocument[MUTATION_OBSERVER].active = !!observers.size;\n }\n\n /**\n * @param {Element} target\n * @param {MutationObserverInit} options\n */\n observe(target, options = {\n subtree: false,\n childList: false,\n attributes: false,\n attributeFilter: null,\n attributeOldValue: false,\n characterData: false,\n // TODO: not implemented yet\n // characterDataOldValue: false\n }) {\n if (('attributeOldValue' in options) || ('attributeFilter' in options))\n options.attributes = true;\n // if ('characterDataOldValue' in options)\n // options.characterData = true;\n options.childList = !!options.childList;\n options.subtree = !!options.subtree;\n this.nodes.set(target, options);\n observers.add(this);\n ownerDocument[MUTATION_OBSERVER].active = true;\n }\n\n /**\n * @returns {MutationRecord[]}\n */\n takeRecords() { return this.records.splice(0); }\n }\n }\n}\n","import {CLASS_LIST, NEXT, PREV, VALUE} from './symbols.js';\n\nimport {knownAdjacent, knownSiblings} from './utils.js';\n\nimport {attributeChangedCallback as ceAttributes} from '../interface/custom-element-registry.js';\nimport {attributeChangedCallback as moAttributes} from '../interface/mutation-observer.js';\n\nexport const emptyAttributes = new Set([\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'class',\n 'contenteditable',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'draggable',\n 'formnovalidate',\n 'hidden',\n 'id',\n 'ismap',\n 'itemscope',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected',\n 'style',\n 'truespeed'\n]);\n\nexport const setAttribute = (element, attribute) => {\n const {[VALUE]: value, name} = attribute;\n attribute.ownerElement = element;\n knownSiblings(element, attribute, element[NEXT]);\n if (name === 'class')\n element.className = value;\n moAttributes(element, name, null);\n ceAttributes(element, name, null, value);\n};\n\nexport const removeAttribute = (element, attribute) => {\n const {[VALUE]: value, name} = attribute;\n knownAdjacent(attribute[PREV], attribute[NEXT]);\n attribute.ownerElement = attribute[PREV] = attribute[NEXT] = null;\n if (name === 'class')\n element[CLASS_LIST] = null;\n moAttributes(element, name, value);\n ceAttributes(element, name, value, null);\n};\n\nexport const booleanAttribute = {\n get(element, name) {\n return element.hasAttribute(name);\n },\n set(element, name, value) {\n if (value)\n element.setAttribute(name, '');\n else\n element.removeAttribute(name);\n }\n};\n\nexport const numericAttribute = {\n get(element, name) {\n return parseFloat(element.getAttribute(name) || 0);\n },\n set(element, name, value) {\n element.setAttribute(name, value);\n }\n};\n\nexport const stringAttribute = {\n get(element, name) {\n return element.getAttribute(name) || '';\n },\n set(element, name, value) {\n element.setAttribute(name, value);\n }\n};\n\n/* oddly enough, this apparently is not a thing\nexport const nullableAttribute = {\n get(element, name) {\n return element.getAttribute(name);\n },\n set(element, name, value) {\n if (value === null)\n element.removeAttribute(name);\n else\n element.setAttribute(name, value);\n }\n};\n*/\n","// https://dom.spec.whatwg.org/#interface-eventtarget\n\nconst wm = new WeakMap();\n\nfunction dispatch(event, listener) {\n if (typeof listener === 'function')\n listener.call(event.target, event);\n else\n listener.handleEvent(event);\n return event._stopImmediatePropagationFlag;\n}\n\nfunction invokeListeners({currentTarget, target}) {\n const map = wm.get(currentTarget);\n if (map && map.has(this.type)) {\n const listeners = map.get(this.type);\n if (currentTarget === target) {\n this.eventPhase = this.AT_TARGET;\n } else {\n this.eventPhase = this.BUBBLING_PHASE;\n }\n\n this.currentTarget = currentTarget;\n this.target = target;\n for (const [listener, options] of listeners) {\n if (options && options.once)\n listeners.delete(listener);\n if (dispatch(this, listener))\n break;\n }\n delete this.currentTarget;\n delete this.target;\n return this.cancelBubble;\n }\n}\n\n\n/**\n * @implements globalThis.EventTarget\n */\nclass DOMEventTarget {\n\n constructor() {\n wm.set(this, new Map);\n }\n\n /**\n * @protected\n */\n _getParent() {\n return null;\n }\n\n addEventListener(type, listener, options) {\n const map = wm.get(this);\n if (!map.has(type)) \n map.set(type, new Map);\n map.get(type).set(listener, options);\n }\n\n removeEventListener(type, listener) {\n const map = wm.get(this);\n if (map.has(type)) {\n const listeners = map.get(type);\n if (listeners.delete(listener) && !listeners.size)\n map.delete(type);\n }\n }\n\n dispatchEvent(event) {\n let node = this;\n event.eventPhase = event.CAPTURING_PHASE;\n\n // intentionally simplified, specs imply way more code: https://dom.spec.whatwg.org/#event-path\n while (node) {\n if (node.dispatchEvent)\n event._path.push({currentTarget: node, target: this});\n node = event.bubbles && node._getParent && node._getParent();\n }\n event._path.some(invokeListeners, event);\n event._path = [];\n event.eventPhase = event.NONE;\n return !event.defaultPrevented;\n }\n\n}\n\nexport {DOMEventTarget as EventTarget};\n","// https://dom.spec.whatwg.org/#interface-nodelist\n\n/**\n * @implements globalThis.NodeList\n */\nexport class NodeList extends Array {\n item(i) { return i < this.length ? this[i] : null; }\n}\n","// https://dom.spec.whatwg.org/#node\n\nimport {\n ELEMENT_NODE,\n ATTRIBUTE_NODE,\n TEXT_NODE,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n DOCUMENT_NODE,\n DOCUMENT_FRAGMENT_NODE,\n DOCUMENT_TYPE_NODE,\n DOCUMENT_POSITION_DISCONNECTED,\n DOCUMENT_POSITION_PRECEDING,\n DOCUMENT_POSITION_FOLLOWING,\n DOCUMENT_POSITION_CONTAINS,\n DOCUMENT_POSITION_CONTAINED_BY,\n DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC\n} from '../shared/constants.js';\n\nimport {NEXT, PREV} from '../shared/symbols.js';\n\nimport {EventTarget} from './event-target.js';\n\nimport {NodeList} from './node-list.js';\n\nconst getParentNodeCount = ({parentNode}) => {\n let count = 0;\n while (parentNode) {\n count++;\n parentNode = parentNode.parentNode;\n }\n return count;\n};\n\n/**\n * @implements globalThis.Node\n */\nexport class Node extends EventTarget {\n\n static get ELEMENT_NODE() { return ELEMENT_NODE; }\n static get ATTRIBUTE_NODE() { return ATTRIBUTE_NODE; }\n static get TEXT_NODE() { return TEXT_NODE; }\n static get CDATA_SECTION_NODE() { return CDATA_SECTION_NODE; }\n static get COMMENT_NODE() { return COMMENT_NODE; }\n static get DOCUMENT_NODE() { return DOCUMENT_NODE; }\n static get DOCUMENT_FRAGMENT_NODE() { return DOCUMENT_FRAGMENT_NODE; }\n static get DOCUMENT_TYPE_NODE() { return DOCUMENT_TYPE_NODE; }\n\n constructor(ownerDocument, localName, nodeType) {\n super();\n this.ownerDocument = ownerDocument;\n this.localName = localName;\n this.nodeType = nodeType;\n this.parentNode = null;\n this[NEXT] = null;\n this[PREV] = null;\n }\n\n get ELEMENT_NODE() { return ELEMENT_NODE; }\n get ATTRIBUTE_NODE() { return ATTRIBUTE_NODE; }\n get TEXT_NODE() { return TEXT_NODE; }\n get CDATA_SECTION_NODE() { return CDATA_SECTION_NODE; }\n get COMMENT_NODE() { return COMMENT_NODE; }\n get DOCUMENT_NODE() { return DOCUMENT_NODE; }\n get DOCUMENT_FRAGMENT_NODE() { return DOCUMENT_FRAGMENT_NODE; }\n get DOCUMENT_TYPE_NODE() { return DOCUMENT_TYPE_NODE; }\n\n get baseURI() {\n const ownerDocument = this.nodeType === DOCUMENT_NODE ?\n this : this.ownerDocument;\n if (ownerDocument) {\n const base = ownerDocument.querySelector('base');\n if (base)\n return base.getAttribute('href');\n\n const {location} = ownerDocument.defaultView;\n if (location)\n return location.href;\n }\n\n return null;\n }\n\n /* c8 ignore start */\n // mixin: node\n get isConnected() { return false; }\n get nodeName() { return this.localName; }\n get parentElement() { return null; }\n get previousSibling() { return null; }\n get previousElementSibling() { return null; }\n get nextSibling() { return null; }\n get nextElementSibling() { return null; }\n get childNodes() { return new NodeList; }\n get firstChild() { return null; }\n get lastChild() { return null; }\n\n // default values\n get nodeValue() { return null; }\n set nodeValue(value) {}\n get textContent() { return null; }\n set textContent(value) {}\n normalize() {}\n cloneNode() { return null; }\n contains() { return false; }\n /**\n * Inserts a node before a reference node as a child of this parent node.\n * @param {Node} newNode The node to be inserted.\n * @param {Node} referenceNode The node before which newNode is inserted. If this is null, then newNode is inserted at the end of node's child nodes.\n * @returns The added child\n */\n // eslint-disable-next-line no-unused-vars\n insertBefore(newNode, referenceNode) { return newNode }\n /**\n * Adds a node to the end of the list of children of this node.\n * @param {Node} child The node to append to the given parent node.\n * @returns The appended child.\n */\n appendChild(child) { return child }\n /**\n * Replaces a child node within this node\n * @param {Node} newChild The new node to replace oldChild.\n * @param {Node} oldChild The child to be replaced.\n * @returns The replaced Node. This is the same node as oldChild.\n */\n replaceChild(newChild, oldChild) { return oldChild }\n /**\n * Removes a child node from the DOM.\n * @param {Node} child A Node that is the child node to be removed from the DOM.\n * @returns The removed node.\n */\n removeChild(child) { return child }\n toString() { return ''; }\n /* c8 ignore stop */\n\n hasChildNodes() { return !!this.lastChild; }\n isSameNode(node) { return this === node; }\n\n // TODO: attributes?\n compareDocumentPosition(target) {\n let result = 0;\n if (this !== target) {\n let self = getParentNodeCount(this);\n let other = getParentNodeCount(target);\n if (self < other) {\n result += DOCUMENT_POSITION_FOLLOWING;\n if (this.contains(target))\n result += DOCUMENT_POSITION_CONTAINED_BY;\n }\n else if (other < self) {\n result += DOCUMENT_POSITION_PRECEDING;\n if (target.contains(this))\n result += DOCUMENT_POSITION_CONTAINS;\n }\n else if (self && other) {\n const {childNodes} = this.parentNode;\n if (childNodes.indexOf(this) < childNodes.indexOf(target))\n result += DOCUMENT_POSITION_FOLLOWING;\n else\n result += DOCUMENT_POSITION_PRECEDING;\n }\n if (!self || !other) {\n result += DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;\n result += DOCUMENT_POSITION_DISCONNECTED;\n }\n }\n return result;\n }\n\n isEqualNode(node) {\n if (this === node)\n return true;\n if (this.nodeType === node.nodeType) {\n switch (this.nodeType) {\n case DOCUMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE: {\n const aNodes = this.childNodes;\n const bNodes = node.childNodes;\n return aNodes.length === bNodes.length && aNodes.every((node, i) => node.isEqualNode(bNodes[i]));\n }\n }\n return this.toString() === node.toString();\n }\n return false;\n }\n\n /**\n * @protected\n */\n _getParent() {\n return this.parentNode;\n }\n\n /**\n * Calling it on an element inside a standard web page will return an HTMLDocument object representing the entire page (or <iframe>).\n * Calling it on an element inside a shadow DOM will return the associated ShadowRoot.\n * @return {ShadowRoot | HTMLDocument}\n */\n getRootNode() {\n let root = this;\n while (root.parentNode)\n root = root.parentNode;\n return root;\n }\n}\n","const {replace} = '';\n\n// escape\nconst ca = /[<>&\\xA0]/g;\n\nconst esca = {\n '\\xA0': ' ',\n '&': '&',\n '<': '<',\n '>': '>'\n};\n\nconst pe = m => esca[m];\n\n/**\n * Safely escape HTML entities such as `&`, `<`, `>` only.\n * @param {string} es the input to safely escape\n * @returns {string} the escaped input, and it **throws** an error if\n * the input type is unexpected, except for boolean and numbers,\n * converted as string.\n */\nexport const escape = es => replace.call(es, ca, pe);\n","import {ATTRIBUTE_NODE} from '../shared/constants.js';\nimport {CHANGED, VALUE} from '../shared/symbols.js';\nimport {String, ignoreCase} from '../shared/utils.js';\nimport {attrAsJSON} from '../shared/jsdon.js';\nimport {emptyAttributes} from '../shared/attributes.js';\n\nimport {attributeChangedCallback as moAttributes} from './mutation-observer.js';\nimport {attributeChangedCallback as ceAttributes} from './custom-element-registry.js';\n\nimport {Node} from './node.js';\nimport {escape} from '../shared/text-escaper.js';\n\nconst QUOTE = /\"/g;\n\n/**\n * @implements globalThis.Attr\n */\nexport class Attr extends Node {\n constructor(ownerDocument, name, value = '') {\n super(ownerDocument, name, ATTRIBUTE_NODE);\n this.ownerElement = null;\n this.name = String(name);\n this[VALUE] = String(value);\n this[CHANGED] = false;\n }\n\n get value() { return this[VALUE]; }\n set value(newValue) {\n const {[VALUE]: oldValue, name, ownerElement} = this;\n this[VALUE] = String(newValue);\n this[CHANGED] = true;\n if (ownerElement) {\n moAttributes(ownerElement, name, oldValue);\n ceAttributes(ownerElement, name, oldValue, this[VALUE]);\n }\n }\n\n cloneNode() {\n const {ownerDocument, name, [VALUE]: value} = this;\n return new Attr(ownerDocument, name, value);\n }\n\n toString() {\n const {name, [VALUE]: value} = this;\n if (emptyAttributes.has(name) && !value) {\n return ignoreCase(this) ? name : `${name}=\"\"`;\n }\n const escapedValue = ignoreCase(this) ? value.replace(QUOTE, '"') : escape(value);\n return `${name}=\"${escapedValue}\"`;\n }\n\n toJSON() {\n const json = [];\n attrAsJSON(this, json);\n return json;\n }\n}\n","import {\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n DOCUMENT_NODE,\n DOCUMENT_FRAGMENT_NODE,\n TEXT_NODE,\n NODE_END\n} from './constants.js';\n\nimport {START, NEXT, PREV} from './symbols.js';\nimport {getEnd} from './utils.js';\n\nexport const isConnected = ({ownerDocument, parentNode}) => {\n while (parentNode) {\n if (parentNode === ownerDocument)\n return true;\n parentNode = parentNode.parentNode || parentNode.host;\n }\n return false;\n};\n\nexport const parentElement = ({parentNode}) => {\n if (parentNode) {\n switch (parentNode.nodeType) {\n case DOCUMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE:\n return null;\n }\n }\n return parentNode;\n};\n\nexport const previousSibling = ({[PREV]: prev}) => {\n switch (prev ? prev.nodeType : 0) {\n case NODE_END:\n return prev[START];\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n return prev;\n }\n return null;\n};\n\nexport const nextSibling = node => {\n const next = getEnd(node)[NEXT];\n return next && (next.nodeType === NODE_END ? null : next);\n};\n","// https://dom.spec.whatwg.org/#nondocumenttypechildnode\n// CharacterData, Element\n\nimport {ELEMENT_NODE} from '../shared/constants.js';\n\nimport {nextSibling, previousSibling} from '../shared/node.js';\n\nexport const nextElementSibling = node => {\n let next = nextSibling(node);\n while (next && next.nodeType !== ELEMENT_NODE)\n next = nextSibling(next);\n return next;\n};\n\nexport const previousElementSibling = node => {\n let prev = previousSibling(node);\n while (prev && prev.nodeType !== ELEMENT_NODE)\n prev = previousSibling(prev);\n return prev;\n};\n","// https://dom.spec.whatwg.org/#childnode\n// CharacterData, DocumentType, Element\n\nimport {ELEMENT_NODE} from '../shared/constants.js';\nimport {NEXT, PREV} from '../shared/symbols.js';\n\nimport {getEnd, setAdjacent} from '../shared/utils.js';\n\nimport {moCallback} from '../interface/mutation-observer.js';\nimport {disconnectedCallback} from '../interface/custom-element-registry.js';\n\nconst asFragment = (ownerDocument, nodes) => {\n const fragment = ownerDocument.createDocumentFragment();\n fragment.append(...nodes);\n return fragment;\n};\n\nexport const before = (node, nodes) => {\n const {ownerDocument, parentNode} = node;\n if (parentNode)\n parentNode.insertBefore(\n asFragment(ownerDocument, nodes),\n node\n );\n};\n\nexport const after = (node, nodes) => {\n const {ownerDocument, parentNode} = node;\n if (parentNode)\n parentNode.insertBefore(\n asFragment(ownerDocument, nodes),\n getEnd(node)[NEXT]\n );\n};\n\nexport const replaceWith = (node, nodes) => {\n const {ownerDocument, parentNode} = node;\n if (parentNode) {\n if (nodes.includes(node))\n replaceWith(node, [node = node.cloneNode()]);\n parentNode.insertBefore(\n asFragment(ownerDocument, nodes),\n node\n );\n node.remove();\n }\n};\n\nexport const remove = (prev, current, next) => {\n const {parentNode, nodeType} = current;\n if (prev || next) {\n setAdjacent(prev, next);\n current[PREV] = null;\n getEnd(current)[NEXT] = null;\n }\n if (parentNode) {\n current.parentNode = null;\n moCallback(current, parentNode);\n if (nodeType === ELEMENT_NODE)\n disconnectedCallback(current);\n }\n};\n","// https://dom.spec.whatwg.org/#interface-characterdata\n\nimport {NEXT, PREV, VALUE} from '../shared/symbols.js';\nimport {String} from '../shared/utils.js';\nimport {isConnected, parentElement, previousSibling, nextSibling} from '../shared/node.js';\nimport {characterDataAsJSON} from '../shared/jsdon.js';\n\nimport {previousElementSibling, nextElementSibling} from '../mixin/non-document-type-child-node.js';\nimport {before, after, replaceWith, remove} from '../mixin/child-node.js';\n\nimport {Node} from './node.js';\nimport {moCallback} from './mutation-observer.js';\n\n/**\n * @implements globalThis.CharacterData\n */\nexport class CharacterData extends Node {\n\n constructor(ownerDocument, localName, nodeType, data) {\n super(ownerDocument, localName, nodeType);\n this[VALUE] = String(data);\n }\n\n // <Mixins>\n get isConnected() { return isConnected(this); }\n get parentElement() { return parentElement(this); }\n get previousSibling() { return previousSibling(this); }\n get nextSibling() { return nextSibling(this); }\n\n get previousElementSibling() { return previousElementSibling(this); }\n get nextElementSibling() { return nextElementSibling(this); }\n\n before(...nodes) { before(this, nodes); }\n after(...nodes) { after(this, nodes); }\n replaceWith(...nodes) { replaceWith(this, nodes); }\n remove() { remove(this[PREV], this, this[NEXT]); }\n // </Mixins>\n\n // CharacterData only\n /* c8 ignore start */\n get data() { return this[VALUE]; }\n set data(value) {\n this[VALUE] = String(value);\n moCallback(this, this.parentNode);\n }\n\n get nodeValue() { return this.data; }\n set nodeValue(value) { this.data = value; }\n\n get textContent() { return this.data; }\n set textContent(value) { this.data = value; }\n\n get length() { return this.data.length; }\n\n substringData(offset, count) {\n return this.data.substr(offset, count);\n }\n\n appendData(data) {\n this.data += data;\n }\n\n insertData(offset, data) {\n const {data: t} = this;\n this.data = t.slice(0, offset) + data + t.slice(offset);\n }\n\n deleteData(offset, count) {\n const {data: t} = this;\n this.data = t.slice(0, offset) + t.slice(offset + count);\n }\n\n replaceData(offset, count, data) {\n const {data: t} = this;\n this.data = t.slice(0, offset) + data + t.slice(offset + count);\n }\n /* c8 ignore stop */\n\n toJSON() {\n const json = [];\n characterDataAsJSON(this, json);\n return json;\n }\n}\n","import {CDATA_SECTION_NODE} from '../shared/constants.js';\nimport {VALUE} from '../shared/symbols.js';\n\nimport {CharacterData} from './character-data.js';\n\n/**\n * @implements globalThis.CDATASection\n */\nexport class CDATASection extends CharacterData {\n constructor(ownerDocument, data = '') {\n super(ownerDocument, '#cdatasection', CDATA_SECTION_NODE, data);\n }\n\n cloneNode() {\n const {ownerDocument, [VALUE]: data} = this;\n return new CDATASection(ownerDocument, data);\n }\n\n toString() { return `<![CDATA[${this[VALUE]}]]>`; }\n}\n","import {COMMENT_NODE} from '../shared/constants.js';\nimport {VALUE} from '../shared/symbols.js';\n\nimport {CharacterData} from './character-data.js';\n\n/**\n * @implements globalThis.Comment\n */\nexport class Comment extends CharacterData {\n constructor(ownerDocument, data = '') {\n super(ownerDocument, '#comment', COMMENT_NODE, data);\n }\n\n cloneNode() {\n const {ownerDocument, [VALUE]: data} = this;\n return new Comment(ownerDocument, data);\n }\n\n toString() { return `<!--${this[VALUE]}-->`; }\n}\n","module.exports = {\n\ttrueFunc: function trueFunc(){\n\t\treturn true;\n\t},\n\tfalseFunc: function falseFunc(){\n\t\treturn false;\n\t}\n};","export var SelectorType;\n(function (SelectorType) {\n SelectorType[\"Attribute\"] = \"attribute\";\n SelectorType[\"Pseudo\"] = \"pseudo\";\n SelectorType[\"PseudoElement\"] = \"pseudo-element\";\n SelectorType[\"Tag\"] = \"tag\";\n SelectorType[\"Universal\"] = \"universal\";\n // Traversals\n SelectorType[\"Adjacent\"] = \"adjacent\";\n SelectorType[\"Child\"] = \"child\";\n SelectorType[\"Descendant\"] = \"descendant\";\n SelectorType[\"Parent\"] = \"parent\";\n SelectorType[\"Sibling\"] = \"sibling\";\n SelectorType[\"ColumnCombinator\"] = \"column-combinator\";\n})(SelectorType || (SelectorType = {}));\n/**\n * Modes for ignore case.\n *\n * This could be updated to an enum, and the object is\n * the current stand-in that will allow code to be updated\n * without big changes.\n */\nexport const IgnoreCaseMode = {\n Unknown: null,\n QuirksMode: \"quirks\",\n IgnoreCase: true,\n CaseSensitive: false,\n};\nexport var AttributeAction;\n(function (AttributeAction) {\n AttributeAction[\"Any\"] = \"any\";\n AttributeAction[\"Element\"] = \"element\";\n AttributeAction[\"End\"] = \"end\";\n AttributeAction[\"Equals\"] = \"equals\";\n AttributeAction[\"Exists\"] = \"exists\";\n AttributeAction[\"Hyphen\"] = \"hyphen\";\n AttributeAction[\"Not\"] = \"not\";\n AttributeAction[\"Start\"] = \"start\";\n})(AttributeAction || (AttributeAction = {}));\n","import { SelectorType, AttributeAction, } from \"./types\";\nconst reName = /^[^\\\\#]?(?:\\\\(?:[\\da-f]{1,6}\\s?|.)|[\\w\\-\\u00b0-\\uFFFF])+/;\nconst reEscape = /\\\\([\\da-f]{1,6}\\s?|(\\s)|.)/gi;\nconst actionTypes = new Map([\n [126 /* Tilde */, AttributeAction.Element],\n [94 /* Circumflex */, AttributeAction.Start],\n [36 /* Dollar */, AttributeAction.End],\n [42 /* Asterisk */, AttributeAction.Any],\n [33 /* ExclamationMark */, AttributeAction.Not],\n [124 /* Pipe */, AttributeAction.Hyphen],\n]);\n// Pseudos, whose data property is parsed as well.\nconst unpackPseudos = new Set([\n \"has\",\n \"not\",\n \"matches\",\n \"is\",\n \"where\",\n \"host\",\n \"host-context\",\n]);\n/**\n * Checks whether a specific selector is a traversal.\n * This is useful eg. in swapping the order of elements that\n * are not traversals.\n *\n * @param selector Selector to check.\n */\nexport function isTraversal(selector) {\n switch (selector.type) {\n case SelectorType.Adjacent:\n case SelectorType.Child:\n case SelectorType.Descendant:\n case SelectorType.Parent:\n case SelectorType.Sibling:\n case SelectorType.ColumnCombinator:\n return true;\n default:\n return false;\n }\n}\nconst stripQuotesFromPseudos = new Set([\"contains\", \"icontains\"]);\n// Unescape function taken from https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L152\nfunction funescape(_, escaped, escapedWhitespace) {\n const high = parseInt(escaped, 16) - 0x10000;\n // NaN means non-codepoint\n return high !== high || escapedWhitespace\n ? escaped\n : high < 0\n ? // BMP codepoint\n String.fromCharCode(high + 0x10000)\n : // Supplemental Plane codepoint (surrogate pair)\n String.fromCharCode((high >> 10) | 0xd800, (high & 0x3ff) | 0xdc00);\n}\nfunction unescapeCSS(str) {\n return str.replace(reEscape, funescape);\n}\nfunction isQuote(c) {\n return c === 39 /* SingleQuote */ || c === 34 /* DoubleQuote */;\n}\nfunction isWhitespace(c) {\n return (c === 32 /* Space */ ||\n c === 9 /* Tab */ ||\n c === 10 /* NewLine */ ||\n c === 12 /* FormFeed */ ||\n c === 13 /* CarriageReturn */);\n}\n/**\n * Parses `selector`, optionally with the passed `options`.\n *\n * @param selector Selector to parse.\n * @param options Options for parsing.\n * @returns Returns a two-dimensional array.\n * The first dimension represents selectors separated by commas (eg. `sub1, sub2`),\n * the second contains the relevant tokens for that selector.\n */\nexport function parse(selector) {\n const subselects = [];\n const endIndex = parseSelector(subselects, `${selector}`, 0);\n if (endIndex < selector.length) {\n throw new Error(`Unmatched selector: ${selector.slice(endIndex)}`);\n }\n return subselects;\n}\nfunction parseSelector(subselects, selector, selectorIndex) {\n let tokens = [];\n function getName(offset) {\n const match = selector.slice(selectorIndex + offset).match(reName);\n if (!match) {\n throw new Error(`Expected name, found ${selector.slice(selectorIndex)}`);\n }\n const [name] = match;\n selectorIndex += offset + name.length;\n return unescapeCSS(name);\n }\n function stripWhitespace(offset) {\n selectorIndex += offset;\n while (selectorIndex < selector.length &&\n isWhitespace(selector.charCodeAt(selectorIndex))) {\n selectorIndex++;\n }\n }\n function readValueWithParenthesis() {\n selectorIndex += 1;\n const start = selectorIndex;\n let counter = 1;\n for (; counter > 0 && selectorIndex < selector.length; selectorIndex++) {\n if (selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */ &&\n !isEscaped(selectorIndex)) {\n counter++;\n }\n else if (selector.charCodeAt(selectorIndex) ===\n 41 /* RightParenthesis */ &&\n !isEscaped(selectorIndex)) {\n counter--;\n }\n }\n if (counter) {\n throw new Error(\"Parenthesis not matched\");\n }\n return unescapeCSS(selector.slice(start, selectorIndex - 1));\n }\n function isEscaped(pos) {\n let slashCount = 0;\n while (selector.charCodeAt(--pos) === 92 /* BackSlash */)\n slashCount++;\n return (slashCount & 1) === 1;\n }\n function ensureNotTraversal() {\n if (tokens.length > 0 && isTraversal(tokens[tokens.length - 1])) {\n throw new Error(\"Did not expect successive traversals.\");\n }\n }\n function addTraversal(type) {\n if (tokens.length > 0 &&\n tokens[tokens.length - 1].type === SelectorType.Descendant) {\n tokens[tokens.length - 1].type = type;\n return;\n }\n ensureNotTraversal();\n tokens.push({ type });\n }\n function addSpecialAttribute(name, action) {\n tokens.push({\n type: SelectorType.Attribute,\n name,\n action,\n value: getName(1),\n namespace: null,\n ignoreCase: \"quirks\",\n });\n }\n /**\n * We have finished parsing the current part of the selector.\n *\n * Remove descendant tokens at the end if they exist,\n * and return the last index, so that parsing can be\n * picked up from here.\n */\n function finalizeSubselector() {\n if (tokens.length &&\n tokens[tokens.length - 1].type === SelectorType.Descendant) {\n tokens.pop();\n }\n if (tokens.length === 0) {\n throw new Error(\"Empty sub-selector\");\n }\n subselects.push(tokens);\n }\n stripWhitespace(0);\n if (selector.length === selectorIndex) {\n return selectorIndex;\n }\n loop: while (selectorIndex < selector.length) {\n const firstChar = selector.charCodeAt(selectorIndex);\n switch (firstChar) {\n // Whitespace\n case 32 /* Space */:\n case 9 /* Tab */:\n case 10 /* NewLine */:\n case 12 /* FormFeed */:\n case 13 /* CarriageReturn */: {\n if (tokens.length === 0 ||\n tokens[0].type !== SelectorType.Descendant) {\n ensureNotTraversal();\n tokens.push({ type: SelectorType.Descendant });\n }\n stripWhitespace(1);\n break;\n }\n // Traversals\n case 62 /* GreaterThan */: {\n addTraversal(SelectorType.Child);\n stripWhitespace(1);\n break;\n }\n case 60 /* LessThan */: {\n addTraversal(SelectorType.Parent);\n stripWhitespace(1);\n break;\n }\n case 126 /* Tilde */: {\n addTraversal(SelectorType.Sibling);\n stripWhitespace(1);\n break;\n }\n case 43 /* Plus */: {\n addTraversal(SelectorType.Adjacent);\n stripWhitespace(1);\n break;\n }\n // Special attribute selectors: .class, #id\n case 46 /* Period */: {\n addSpecialAttribute(\"class\", AttributeAction.Element);\n break;\n }\n case 35 /* Hash */: {\n addSpecialAttribute(\"id\", AttributeAction.Equals);\n break;\n }\n case 91 /* LeftSquareBracket */: {\n stripWhitespace(1);\n // Determine attribute name and namespace\n let name;\n let namespace = null;\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */) {\n // Equivalent to no namespace\n name = getName(1);\n }\n else if (selector.startsWith(\"*|\", selectorIndex)) {\n namespace = \"*\";\n name = getName(2);\n }\n else {\n name = getName(0);\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ &&\n selector.charCodeAt(selectorIndex + 1) !==\n 61 /* Equal */) {\n namespace = name;\n name = getName(1);\n }\n }\n stripWhitespace(0);\n // Determine comparison operation\n let action = AttributeAction.Exists;\n const possibleAction = actionTypes.get(selector.charCodeAt(selectorIndex));\n if (possibleAction) {\n action = possibleAction;\n if (selector.charCodeAt(selectorIndex + 1) !==\n 61 /* Equal */) {\n throw new Error(\"Expected `=`\");\n }\n stripWhitespace(2);\n }\n else if (selector.charCodeAt(selectorIndex) === 61 /* Equal */) {\n action = AttributeAction.Equals;\n stripWhitespace(1);\n }\n // Determine value\n let value = \"\";\n let ignoreCase = null;\n if (action !== \"exists\") {\n if (isQuote(selector.charCodeAt(selectorIndex))) {\n const quote = selector.charCodeAt(selectorIndex);\n let sectionEnd = selectorIndex + 1;\n while (sectionEnd < selector.length &&\n (selector.charCodeAt(sectionEnd) !== quote ||\n isEscaped(sectionEnd))) {\n sectionEnd += 1;\n }\n if (selector.charCodeAt(sectionEnd) !== quote) {\n throw new Error(\"Attribute value didn't end\");\n }\n value = unescapeCSS(selector.slice(selectorIndex + 1, sectionEnd));\n selectorIndex = sectionEnd + 1;\n }\n else {\n const valueStart = selectorIndex;\n while (selectorIndex < selector.length &&\n ((!isWhitespace(selector.charCodeAt(selectorIndex)) &&\n selector.charCodeAt(selectorIndex) !==\n 93 /* RightSquareBracket */) ||\n isEscaped(selectorIndex))) {\n selectorIndex += 1;\n }\n value = unescapeCSS(selector.slice(valueStart, selectorIndex));\n }\n stripWhitespace(0);\n // See if we have a force ignore flag\n const forceIgnore = selector.charCodeAt(selectorIndex) | 0x20;\n // If the forceIgnore flag is set (either `i` or `s`), use that value\n if (forceIgnore === 115 /* LowerS */) {\n ignoreCase = false;\n stripWhitespace(1);\n }\n else if (forceIgnore === 105 /* LowerI */) {\n ignoreCase = true;\n stripWhitespace(1);\n }\n }\n if (selector.charCodeAt(selectorIndex) !==\n 93 /* RightSquareBracket */) {\n throw new Error(\"Attribute selector didn't terminate\");\n }\n selectorIndex += 1;\n const attributeSelector = {\n type: SelectorType.Attribute,\n name,\n action,\n value,\n namespace,\n ignoreCase,\n };\n tokens.push(attributeSelector);\n break;\n }\n case 58 /* Colon */: {\n if (selector.charCodeAt(selectorIndex + 1) === 58 /* Colon */) {\n tokens.push({\n type: SelectorType.PseudoElement,\n name: getName(2).toLowerCase(),\n data: selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */\n ? readValueWithParenthesis()\n : null,\n });\n continue;\n }\n const name = getName(1).toLowerCase();\n let data = null;\n if (selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */) {\n if (unpackPseudos.has(name)) {\n if (isQuote(selector.charCodeAt(selectorIndex + 1))) {\n throw new Error(`Pseudo-selector ${name} cannot be quoted`);\n }\n data = [];\n selectorIndex = parseSelector(data, selector, selectorIndex + 1);\n if (selector.charCodeAt(selectorIndex) !==\n 41 /* RightParenthesis */) {\n throw new Error(`Missing closing parenthesis in :${name} (${selector})`);\n }\n selectorIndex += 1;\n }\n else {\n data = readValueWithParenthesis();\n if (stripQuotesFromPseudos.has(name)) {\n const quot = data.charCodeAt(0);\n if (quot === data.charCodeAt(data.length - 1) &&\n isQuote(quot)) {\n data = data.slice(1, -1);\n }\n }\n data = unescapeCSS(data);\n }\n }\n tokens.push({ type: SelectorType.Pseudo, name, data });\n break;\n }\n case 44 /* Comma */: {\n finalizeSubselector();\n tokens = [];\n stripWhitespace(1);\n break;\n }\n default: {\n if (selector.startsWith(\"/*\", selectorIndex)) {\n const endIndex = selector.indexOf(\"*/\", selectorIndex + 2);\n if (endIndex < 0) {\n throw new Error(\"Comment was not terminated\");\n }\n selectorIndex = endIndex + 2;\n // Remove leading whitespace\n if (tokens.length === 0) {\n stripWhitespace(0);\n }\n break;\n }\n let namespace = null;\n let name;\n if (firstChar === 42 /* Asterisk */) {\n selectorIndex += 1;\n name = \"*\";\n }\n else if (firstChar === 124 /* Pipe */) {\n name = \"\";\n if (selector.charCodeAt(selectorIndex + 1) === 124 /* Pipe */) {\n addTraversal(SelectorType.ColumnCombinator);\n stripWhitespace(2);\n break;\n }\n }\n else if (reName.test(selector.slice(selectorIndex))) {\n name = getName(0);\n }\n else {\n break loop;\n }\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ &&\n selector.charCodeAt(selectorIndex + 1) !== 124 /* Pipe */) {\n namespace = name;\n if (selector.charCodeAt(selectorIndex + 1) ===\n 42 /* Asterisk */) {\n name = \"*\";\n selectorIndex += 2;\n }\n else {\n name = getName(1);\n }\n }\n tokens.push(name === \"*\"\n ? { type: SelectorType.Universal, namespace }\n : { type: SelectorType.Tag, name, namespace });\n }\n }\n }\n finalizeSubselector();\n return selectorIndex;\n}\n","import { AttributeAction, SelectorType } from \"css-what\";\nconst procedure = new Map([\n [SelectorType.Universal, 50],\n [SelectorType.Tag, 30],\n [SelectorType.Attribute, 1],\n [SelectorType.Pseudo, 0],\n]);\nexport function isTraversal(token) {\n return !procedure.has(token.type);\n}\nconst attributes = new Map([\n [AttributeAction.Exists, 10],\n [AttributeAction.Equals, 8],\n [AttributeAction.Not, 7],\n [AttributeAction.Start, 6],\n [AttributeAction.End, 6],\n [AttributeAction.Any, 5],\n]);\n/**\n * Sort the parts of the passed selector,\n * as there is potential for optimization\n * (some types of selectors are faster than others)\n *\n * @param arr Selector to sort\n */\nexport default function sortByProcedure(arr) {\n const procs = arr.map(getProcedure);\n for (let i = 1; i < arr.length; i++) {\n const procNew = procs[i];\n if (procNew < 0)\n continue;\n for (let j = i - 1; j >= 0 && procNew < procs[j]; j--) {\n const token = arr[j + 1];\n arr[j + 1] = arr[j];\n arr[j] = token;\n procs[j + 1] = procs[j];\n procs[j] = procNew;\n }\n }\n}\nfunction getProcedure(token) {\n var _a, _b;\n let proc = (_a = procedure.get(token.type)) !== null && _a !== void 0 ? _a : -1;\n if (token.type === SelectorType.Attribute) {\n proc = (_b = attributes.get(token.action)) !== null && _b !== void 0 ? _b : 4;\n if (token.action === AttributeAction.Equals && token.name === \"id\") {\n // Prefer ID selectors (eg. #ID)\n proc = 9;\n }\n if (token.ignoreCase) {\n /*\n * IgnoreCase adds some overhead, prefer \"normal\" token\n * this is a binary operation, to ensure it's still an int\n */\n proc >>= 1;\n }\n }\n else if (token.type === SelectorType.Pseudo) {\n if (!token.data) {\n proc = 3;\n }\n else if (token.name === \"has\" || token.name === \"contains\") {\n proc = 0; // Expensive in any case\n }\n else if (Array.isArray(token.data)) {\n // Eg. :matches, :not\n proc = Math.min(...token.data.map((d) => Math.min(...d.map(getProcedure))));\n // If we have traversals, try to avoid executing this selector\n if (proc < 0) {\n proc = 0;\n }\n }\n else {\n proc = 2;\n }\n }\n return proc;\n}\n//# sourceMappingURL=sort.js.map","import boolbase from \"boolbase\";\n/**\n * All reserved characters in a regex, used for escaping.\n *\n * Taken from XRegExp, (c) 2007-2020 Steven Levithan under the MIT license\n * https://github.com/slevithan/xregexp/blob/95eeebeb8fac8754d54eafe2b4743661ac1cf028/src/xregexp.js#L794\n */\nconst reChars = /[-[\\]{}()*+?.,\\\\^$|#\\s]/g;\nfunction escapeRegex(value) {\n return value.replace(reChars, \"\\\\$&\");\n}\n/**\n * Attributes that are case-insensitive in HTML.\n *\n * @private\n * @see https://html.spec.whatwg.org/multipage/semantics-other.html#case-sensitivity-of-selectors\n */\nconst caseInsensitiveAttributes = new Set([\n \"accept\",\n \"accept-charset\",\n \"align\",\n \"alink\",\n \"axis\",\n \"bgcolor\",\n \"charset\",\n \"checked\",\n \"clear\",\n \"codetype\",\n \"color\",\n \"compact\",\n \"declare\",\n \"defer\",\n \"dir\",\n \"direction\",\n \"disabled\",\n \"enctype\",\n \"face\",\n \"frame\",\n \"hreflang\",\n \"http-equiv\",\n \"lang\",\n \"language\",\n \"link\",\n \"media\",\n \"method\",\n \"multiple\",\n \"nohref\",\n \"noresize\",\n \"noshade\",\n \"nowrap\",\n \"readonly\",\n \"rel\",\n \"rev\",\n \"rules\",\n \"scope\",\n \"scrolling\",\n \"selected\",\n \"shape\",\n \"target\",\n \"text\",\n \"type\",\n \"valign\",\n \"valuetype\",\n \"vlink\",\n]);\nfunction shouldIgnoreCase(selector, options) {\n return typeof selector.ignoreCase === \"boolean\"\n ? selector.ignoreCase\n : selector.ignoreCase === \"quirks\"\n ? !!options.quirksMode\n : !options.xmlMode && caseInsensitiveAttributes.has(selector.name);\n}\n/**\n * Attribute selectors\n */\nexport const attributeRules = {\n equals(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length === value.length &&\n attr.toLowerCase() === value &&\n next(elem));\n };\n }\n return (elem) => adapter.getAttributeValue(elem, name) === value && next(elem);\n },\n hyphen(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n const len = value.length;\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return function hyphenIC(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n (attr.length === len || attr.charAt(len) === \"-\") &&\n attr.substr(0, len).toLowerCase() === value &&\n next(elem));\n };\n }\n return function hyphen(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n (attr.length === len || attr.charAt(len) === \"-\") &&\n attr.substr(0, len) === value &&\n next(elem));\n };\n },\n element(next, data, options) {\n const { adapter } = options;\n const { name, value } = data;\n if (/\\s/.test(value)) {\n return boolbase.falseFunc;\n }\n const regex = new RegExp(`(?:^|\\\\s)${escapeRegex(value)}(?:$|\\\\s)`, shouldIgnoreCase(data, options) ? \"i\" : \"\");\n return function element(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= value.length &&\n regex.test(attr) &&\n next(elem));\n };\n },\n exists(next, { name }, { adapter }) {\n return (elem) => adapter.hasAttrib(elem, name) && next(elem);\n },\n start(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n const len = value.length;\n if (len === 0) {\n return boolbase.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= len &&\n attr.substr(0, len).toLowerCase() === value &&\n next(elem));\n };\n }\n return (elem) => {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.startsWith(value)) &&\n next(elem);\n };\n },\n end(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n const len = -value.length;\n if (len === 0) {\n return boolbase.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n var _a;\n return ((_a = adapter\n .getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.substr(len).toLowerCase()) === value && next(elem);\n };\n }\n return (elem) => {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.endsWith(value)) &&\n next(elem);\n };\n },\n any(next, data, options) {\n const { adapter } = options;\n const { name, value } = data;\n if (value === \"\") {\n return boolbase.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n const regex = new RegExp(escapeRegex(value), \"i\");\n return function anyIC(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= value.length &&\n regex.test(attr) &&\n next(elem));\n };\n }\n return (elem) => {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.includes(value)) &&\n next(elem);\n };\n },\n not(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n if (value === \"\") {\n return (elem) => !!adapter.getAttributeValue(elem, name) && next(elem);\n }\n else if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n const attr = adapter.getAttributeValue(elem, name);\n return ((attr == null ||\n attr.length !== value.length ||\n attr.toLowerCase() !== value) &&\n next(elem));\n };\n }\n return (elem) => adapter.getAttributeValue(elem, name) !== value && next(elem);\n },\n};\n//# sourceMappingURL=attributes.js.map","// Following http://www.w3.org/TR/css3-selectors/#nth-child-pseudo\n// Whitespace as per https://www.w3.org/TR/selectors-3/#lex is \" \\t\\r\\n\\f\"\nconst whitespace = new Set([9, 10, 12, 13, 32]);\nconst ZERO = \"0\".charCodeAt(0);\nconst NINE = \"9\".charCodeAt(0);\n/**\n * Parses an expression.\n *\n * @throws An `Error` if parsing fails.\n * @returns An array containing the integer step size and the integer offset of the nth rule.\n * @example nthCheck.parse(\"2n+3\"); // returns [2, 3]\n */\nexport function parse(formula) {\n formula = formula.trim().toLowerCase();\n if (formula === \"even\") {\n return [2, 0];\n }\n else if (formula === \"odd\") {\n return [2, 1];\n }\n // Parse [ ['-'|'+']? INTEGER? {N} [ S* ['-'|'+'] S* INTEGER ]?\n let idx = 0;\n let a = 0;\n let sign = readSign();\n let number = readNumber();\n if (idx < formula.length && formula.charAt(idx) === \"n\") {\n idx++;\n a = sign * (number !== null && number !== void 0 ? number : 1);\n skipWhitespace();\n if (idx < formula.length) {\n sign = readSign();\n skipWhitespace();\n number = readNumber();\n }\n else {\n sign = number = 0;\n }\n }\n // Throw if there is anything else\n if (number === null || idx < formula.length) {\n throw new Error(`n-th rule couldn't be parsed ('${formula}')`);\n }\n return [a, sign * number];\n function readSign() {\n if (formula.charAt(idx) === \"-\") {\n idx++;\n return -1;\n }\n if (formula.charAt(idx) === \"+\") {\n idx++;\n }\n return 1;\n }\n function readNumber() {\n const start = idx;\n let value = 0;\n while (idx < formula.length &&\n formula.charCodeAt(idx) >= ZERO &&\n formula.charCodeAt(idx) <= NINE) {\n value = value * 10 + (formula.charCodeAt(idx) - ZERO);\n idx++;\n }\n // Return `null` if we didn't read anything.\n return idx === start ? null : value;\n }\n function skipWhitespace() {\n while (idx < formula.length &&\n whitespace.has(formula.charCodeAt(idx))) {\n idx++;\n }\n }\n}\n//# sourceMappingURL=parse.js.map","import boolbase from \"boolbase\";\n/**\n * Returns a function that checks if an elements index matches the given rule\n * highly optimized to return the fastest solution.\n *\n * @param parsed A tuple [a, b], as returned by `parse`.\n * @returns A highly optimized function that returns whether an index matches the nth-check.\n * @example\n *\n * ```js\n * const check = nthCheck.compile([2, 3]);\n *\n * check(0); // `false`\n * check(1); // `false`\n * check(2); // `true`\n * check(3); // `false`\n * check(4); // `true`\n * check(5); // `false`\n * check(6); // `true`\n * ```\n */\nexport function compile(parsed) {\n const a = parsed[0];\n // Subtract 1 from `b`, to convert from one- to zero-indexed.\n const b = parsed[1] - 1;\n /*\n * When `b <= 0`, `a * n` won't be lead to any matches for `a < 0`.\n * Besides, the specification states that no elements are\n * matched when `a` and `b` are 0.\n *\n * `b < 0` here as we subtracted 1 from `b` above.\n */\n if (b < 0 && a <= 0)\n return boolbase.falseFunc;\n // When `a` is in the range -1..1, it matches any element (so only `b` is checked).\n if (a === -1)\n return (index) => index <= b;\n if (a === 0)\n return (index) => index === b;\n // When `b <= 0` and `a === 1`, they match any element.\n if (a === 1)\n return b < 0 ? boolbase.trueFunc : (index) => index >= b;\n /*\n * Otherwise, modulo can be used to check if there is a match.\n *\n * Modulo doesn't care about the sign, so let's use `a`s absolute value.\n */\n const absA = Math.abs(a);\n // Get `b mod a`, + a if this is negative.\n const bMod = ((b % absA) + absA) % absA;\n return a > 1\n ? (index) => index >= b && index % absA === bMod\n : (index) => index <= b && index % absA === bMod;\n}\n/**\n * Returns a function that produces a monotonously increasing sequence of indices.\n *\n * If the sequence has an end, the returned function will return `null` after\n * the last index in the sequence.\n *\n * @param parsed A tuple [a, b], as returned by `parse`.\n * @returns A function that produces a sequence of indices.\n * @example <caption>Always increasing (2n+3)</caption>\n *\n * ```js\n * const gen = nthCheck.generate([2, 3])\n *\n * gen() // `1`\n * gen() // `3`\n * gen() // `5`\n * gen() // `8`\n * gen() // `11`\n * ```\n *\n * @example <caption>With end value (-2n+10)</caption>\n *\n * ```js\n *\n * const gen = nthCheck.generate([-2, 5]);\n *\n * gen() // 0\n * gen() // 2\n * gen() // 4\n * gen() // null\n * ```\n */\nexport function generate(parsed) {\n const a = parsed[0];\n // Subtract 1 from `b`, to convert from one- to zero-indexed.\n let b = parsed[1] - 1;\n let n = 0;\n // Make sure to always return an increasing sequence\n if (a < 0) {\n const aPos = -a;\n // Get `b mod a`\n const minValue = ((b % aPos) + aPos) % aPos;\n return () => {\n const val = minValue + aPos * n++;\n return val > b ? null : val;\n };\n }\n if (a === 0)\n return b < 0\n ? // There are no result — always return `null`\n () => null\n : // Return `b` exactly once\n () => (n++ === 0 ? b : null);\n if (b < 0) {\n b += a * Math.ceil(-b / a);\n }\n return () => a * n++ + b;\n}\n//# sourceMappingURL=compile.js.map","import { parse } from \"./parse.js\";\nimport { compile, generate } from \"./compile.js\";\nexport { parse, compile, generate };\n/**\n * Parses and compiles a formula to a highly optimized function.\n * Combination of {@link parse} and {@link compile}.\n *\n * If the formula doesn't match any elements,\n * it returns [`boolbase`](https://github.com/fb55/boolbase)'s `falseFunc`.\n * Otherwise, a function accepting an _index_ is returned, which returns\n * whether or not the passed _index_ matches the formula.\n *\n * Note: The nth-rule starts counting at `1`, the returned function at `0`.\n *\n * @param formula The formula to compile.\n * @example\n * const check = nthCheck(\"2n+3\");\n *\n * check(0); // `false`\n * check(1); // `false`\n * check(2); // `true`\n * check(3); // `false`\n * check(4); // `true`\n * check(5); // `false`\n * check(6); // `true`\n */\nexport default function nthCheck(formula) {\n return compile(parse(formula));\n}\n/**\n * Parses and compiles a formula to a generator that produces a sequence of indices.\n * Combination of {@link parse} and {@link generate}.\n *\n * @param formula The formula to compile.\n * @returns A function that produces a sequence of indices.\n * @example <caption>Always increasing</caption>\n *\n * ```js\n * const gen = nthCheck.sequence('2n+3')\n *\n * gen() // `1`\n * gen() // `3`\n * gen() // `5`\n * gen() // `8`\n * gen() // `11`\n * ```\n *\n * @example <caption>With end value</caption>\n *\n * ```js\n *\n * const gen = nthCheck.sequence('-2n+5');\n *\n * gen() // 0\n * gen() // 2\n * gen() // 4\n * gen() // null\n * ```\n */\nexport function sequence(formula) {\n return generate(parse(formula));\n}\n//# sourceMappingURL=index.js.map","import getNCheck from \"nth-check\";\nimport boolbase from \"boolbase\";\nfunction getChildFunc(next, adapter) {\n return (elem) => {\n const parent = adapter.getParent(elem);\n return parent != null && adapter.isTag(parent) && next(elem);\n };\n}\nexport const filters = {\n contains(next, text, { adapter }) {\n return function contains(elem) {\n return next(elem) && adapter.getText(elem).includes(text);\n };\n },\n icontains(next, text, { adapter }) {\n const itext = text.toLowerCase();\n return function icontains(elem) {\n return (next(elem) &&\n adapter.getText(elem).toLowerCase().includes(itext));\n };\n },\n // Location specific methods\n \"nth-child\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthChild(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = 0; i < siblings.length; i++) {\n if (equals(elem, siblings[i]))\n break;\n if (adapter.isTag(siblings[i])) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-last-child\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthLastChild(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = siblings.length - 1; i >= 0; i--) {\n if (equals(elem, siblings[i]))\n break;\n if (adapter.isTag(siblings[i])) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-of-type\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthOfType(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === adapter.getName(elem)) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-last-of-type\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthLastOfType(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = siblings.length - 1; i >= 0; i--) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === adapter.getName(elem)) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n // TODO determine the actual root element\n root(next, _rule, { adapter }) {\n return (elem) => {\n const parent = adapter.getParent(elem);\n return (parent == null || !adapter.isTag(parent)) && next(elem);\n };\n },\n scope(next, rule, options, context) {\n const { equals } = options;\n if (!context || context.length === 0) {\n // Equivalent to :root\n return filters[\"root\"](next, rule, options);\n }\n if (context.length === 1) {\n // NOTE: can't be unpacked, as :has uses this for side-effects\n return (elem) => equals(context[0], elem) && next(elem);\n }\n return (elem) => context.includes(elem) && next(elem);\n },\n hover: dynamicStatePseudo(\"isHovered\"),\n visited: dynamicStatePseudo(\"isVisited\"),\n active: dynamicStatePseudo(\"isActive\"),\n};\n/**\n * Dynamic state pseudos. These depend on optional Adapter methods.\n *\n * @param name The name of the adapter method to call.\n * @returns Pseudo for the `filters` object.\n */\nfunction dynamicStatePseudo(name) {\n return function dynamicPseudo(next, _rule, { adapter }) {\n const func = adapter[name];\n if (typeof func !== \"function\") {\n return boolbase.falseFunc;\n }\n return function active(elem) {\n return func(elem) && next(elem);\n };\n };\n}\n//# sourceMappingURL=filters.js.map","// While filters are precompiled, pseudos get called when they are needed\nexport const pseudos = {\n empty(elem, { adapter }) {\n return !adapter.getChildren(elem).some((elem) => \n // FIXME: `getText` call is potentially expensive.\n adapter.isTag(elem) || adapter.getText(elem) !== \"\");\n },\n \"first-child\"(elem, { adapter, equals }) {\n if (adapter.prevElementSibling) {\n return adapter.prevElementSibling(elem) == null;\n }\n const firstChild = adapter\n .getSiblings(elem)\n .find((elem) => adapter.isTag(elem));\n return firstChild != null && equals(elem, firstChild);\n },\n \"last-child\"(elem, { adapter, equals }) {\n const siblings = adapter.getSiblings(elem);\n for (let i = siblings.length - 1; i >= 0; i--) {\n if (equals(elem, siblings[i]))\n return true;\n if (adapter.isTag(siblings[i]))\n break;\n }\n return false;\n },\n \"first-of-type\"(elem, { adapter, equals }) {\n const siblings = adapter.getSiblings(elem);\n const elemName = adapter.getName(elem);\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n return true;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === elemName) {\n break;\n }\n }\n return false;\n },\n \"last-of-type\"(elem, { adapter, equals }) {\n const siblings = adapter.getSiblings(elem);\n const elemName = adapter.getName(elem);\n for (let i = siblings.length - 1; i >= 0; i--) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n return true;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === elemName) {\n break;\n }\n }\n return false;\n },\n \"only-of-type\"(elem, { adapter, equals }) {\n const elemName = adapter.getName(elem);\n return adapter\n .getSiblings(elem)\n .every((sibling) => equals(elem, sibling) ||\n !adapter.isTag(sibling) ||\n adapter.getName(sibling) !== elemName);\n },\n \"only-child\"(elem, { adapter, equals }) {\n return adapter\n .getSiblings(elem)\n .every((sibling) => equals(elem, sibling) || !adapter.isTag(sibling));\n },\n};\nexport function verifyPseudoArgs(func, name, subselect, argIndex) {\n if (subselect === null) {\n if (func.length > argIndex) {\n throw new Error(`Pseudo-class :${name} requires an argument`);\n }\n }\n else if (func.length === argIndex) {\n throw new Error(`Pseudo-class :${name} doesn't have any arguments`);\n }\n}\n//# sourceMappingURL=pseudos.js.map","/**\n * Aliases are pseudos that are expressed as selectors.\n */\nexport const aliases = {\n // Links\n \"any-link\": \":is(a, area, link)[href]\",\n link: \":any-link:not(:visited)\",\n // Forms\n // https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements\n disabled: `:is(\n :is(button, input, select, textarea, optgroup, option)[disabled],\n optgroup[disabled] > option,\n fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *)\n )`,\n enabled: \":not(:disabled)\",\n checked: \":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)\",\n required: \":is(input, select, textarea)[required]\",\n optional: \":is(input, select, textarea):not([required])\",\n // JQuery extensions\n // https://html.spec.whatwg.org/multipage/form-elements.html#concept-option-selectedness\n selected: \"option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)\",\n checkbox: \"[type=checkbox]\",\n file: \"[type=file]\",\n password: \"[type=password]\",\n radio: \"[type=radio]\",\n reset: \"[type=reset]\",\n image: \"[type=image]\",\n submit: \"[type=submit]\",\n parent: \":not(:empty)\",\n header: \":is(h1, h2, h3, h4, h5, h6)\",\n button: \":is(button, input[type=button])\",\n input: \":is(input, textarea, select, button)\",\n text: \"input:is(:not([type!='']), [type=text])\",\n};\n//# sourceMappingURL=aliases.js.map","import boolbase from \"boolbase\";\nimport { isTraversal } from \"../sort.js\";\n/** Used as a placeholder for :has. Will be replaced with the actual element. */\nexport const PLACEHOLDER_ELEMENT = {};\nexport function ensureIsTag(next, adapter) {\n if (next === boolbase.falseFunc)\n return boolbase.falseFunc;\n return (elem) => adapter.isTag(elem) && next(elem);\n}\nexport function getNextSiblings(elem, adapter) {\n const siblings = adapter.getSiblings(elem);\n if (siblings.length <= 1)\n return [];\n const elemIndex = siblings.indexOf(elem);\n if (elemIndex < 0 || elemIndex === siblings.length - 1)\n return [];\n return siblings.slice(elemIndex + 1).filter(adapter.isTag);\n}\nfunction copyOptions(options) {\n // Not copied: context, rootFunc\n return {\n xmlMode: !!options.xmlMode,\n lowerCaseAttributeNames: !!options.lowerCaseAttributeNames,\n lowerCaseTags: !!options.lowerCaseTags,\n quirksMode: !!options.quirksMode,\n cacheResults: !!options.cacheResults,\n pseudos: options.pseudos,\n adapter: options.adapter,\n equals: options.equals,\n };\n}\nconst is = (next, token, options, context, compileToken) => {\n const func = compileToken(token, copyOptions(options), context);\n return func === boolbase.trueFunc\n ? next\n : func === boolbase.falseFunc\n ? boolbase.falseFunc\n : (elem) => func(elem) && next(elem);\n};\n/*\n * :not, :has, :is, :matches and :where have to compile selectors\n * doing this in src/pseudos.ts would lead to circular dependencies,\n * so we add them here\n */\nexport const subselects = {\n is,\n /**\n * `:matches` and `:where` are aliases for `:is`.\n */\n matches: is,\n where: is,\n not(next, token, options, context, compileToken) {\n const func = compileToken(token, copyOptions(options), context);\n return func === boolbase.falseFunc\n ? next\n : func === boolbase.trueFunc\n ? boolbase.falseFunc\n : (elem) => !func(elem) && next(elem);\n },\n has(next, subselect, options, _context, compileToken) {\n const { adapter } = options;\n const opts = copyOptions(options);\n opts.relativeSelector = true;\n const context = subselect.some((s) => s.some(isTraversal))\n ? // Used as a placeholder. Will be replaced with the actual element.\n [PLACEHOLDER_ELEMENT]\n : undefined;\n const compiled = compileToken(subselect, opts, context);\n if (compiled === boolbase.falseFunc)\n return boolbase.falseFunc;\n const hasElement = ensureIsTag(compiled, adapter);\n // If `compiled` is `trueFunc`, we can skip this.\n if (context && compiled !== boolbase.trueFunc) {\n /*\n * `shouldTestNextSiblings` will only be true if the query starts with\n * a traversal (sibling or adjacent). That means we will always have a context.\n */\n const { shouldTestNextSiblings = false } = compiled;\n return (elem) => {\n if (!next(elem))\n return false;\n context[0] = elem;\n const childs = adapter.getChildren(elem);\n const nextElements = shouldTestNextSiblings\n ? [...childs, ...getNextSiblings(elem, adapter)]\n : childs;\n return adapter.existsOne(hasElement, nextElements);\n };\n }\n return (elem) => next(elem) &&\n adapter.existsOne(hasElement, adapter.getChildren(elem));\n },\n};\n//# sourceMappingURL=subselects.js.map","import { parse } from \"css-what\";\nimport { filters } from \"./filters.js\";\nimport { pseudos, verifyPseudoArgs } from \"./pseudos.js\";\nimport { aliases } from \"./aliases.js\";\nimport { subselects } from \"./subselects.js\";\nexport { filters, pseudos, aliases };\nexport function compilePseudoSelector(next, selector, options, context, compileToken) {\n var _a;\n const { name, data } = selector;\n if (Array.isArray(data)) {\n if (!(name in subselects)) {\n throw new Error(`Unknown pseudo-class :${name}(${data})`);\n }\n return subselects[name](next, data, options, context, compileToken);\n }\n const userPseudo = (_a = options.pseudos) === null || _a === void 0 ? void 0 : _a[name];\n const stringPseudo = typeof userPseudo === \"string\" ? userPseudo : aliases[name];\n if (typeof stringPseudo === \"string\") {\n if (data != null) {\n throw new Error(`Pseudo ${name} doesn't have any arguments`);\n }\n // The alias has to be parsed here, to make sure options are respected.\n const alias = parse(stringPseudo);\n return subselects[\"is\"](next, alias, options, context, compileToken);\n }\n if (typeof userPseudo === \"function\") {\n verifyPseudoArgs(userPseudo, name, data, 1);\n return (elem) => userPseudo(elem, data) && next(elem);\n }\n if (name in filters) {\n return filters[name](next, data, options, context);\n }\n if (name in pseudos) {\n const pseudo = pseudos[name];\n verifyPseudoArgs(pseudo, name, data, 2);\n return (elem) => pseudo(elem, options, data) && next(elem);\n }\n throw new Error(`Unknown pseudo-class :${name}`);\n}\n//# sourceMappingURL=index.js.map","import { attributeRules } from \"./attributes.js\";\nimport { compilePseudoSelector } from \"./pseudo-selectors/index.js\";\nimport { SelectorType } from \"css-what\";\nfunction getElementParent(node, adapter) {\n const parent = adapter.getParent(node);\n if (parent && adapter.isTag(parent)) {\n return parent;\n }\n return null;\n}\n/*\n * All available rules\n */\nexport function compileGeneralSelector(next, selector, options, context, compileToken) {\n const { adapter, equals } = options;\n switch (selector.type) {\n case SelectorType.PseudoElement: {\n throw new Error(\"Pseudo-elements are not supported by css-select\");\n }\n case SelectorType.ColumnCombinator: {\n throw new Error(\"Column combinators are not yet supported by css-select\");\n }\n case SelectorType.Attribute: {\n if (selector.namespace != null) {\n throw new Error(\"Namespaced attributes are not yet supported by css-select\");\n }\n if (!options.xmlMode || options.lowerCaseAttributeNames) {\n selector.name = selector.name.toLowerCase();\n }\n return attributeRules[selector.action](next, selector, options);\n }\n case SelectorType.Pseudo: {\n return compilePseudoSelector(next, selector, options, context, compileToken);\n }\n // Tags\n case SelectorType.Tag: {\n if (selector.namespace != null) {\n throw new Error(\"Namespaced tag names are not yet supported by css-select\");\n }\n let { name } = selector;\n if (!options.xmlMode || options.lowerCaseTags) {\n name = name.toLowerCase();\n }\n return function tag(elem) {\n return adapter.getName(elem) === name && next(elem);\n };\n }\n // Traversal\n case SelectorType.Descendant: {\n if (options.cacheResults === false ||\n typeof WeakSet === \"undefined\") {\n return function descendant(elem) {\n let current = elem;\n while ((current = getElementParent(current, adapter))) {\n if (next(current)) {\n return true;\n }\n }\n return false;\n };\n }\n // @ts-expect-error `ElementNode` is not extending object\n const isFalseCache = new WeakSet();\n return function cachedDescendant(elem) {\n let current = elem;\n while ((current = getElementParent(current, adapter))) {\n if (!isFalseCache.has(current)) {\n if (adapter.isTag(current) && next(current)) {\n return true;\n }\n isFalseCache.add(current);\n }\n }\n return false;\n };\n }\n case \"_flexibleDescendant\": {\n // Include element itself, only used while querying an array\n return function flexibleDescendant(elem) {\n let current = elem;\n do {\n if (next(current))\n return true;\n } while ((current = getElementParent(current, adapter)));\n return false;\n };\n }\n case SelectorType.Parent: {\n return function parent(elem) {\n return adapter\n .getChildren(elem)\n .some((elem) => adapter.isTag(elem) && next(elem));\n };\n }\n case SelectorType.Child: {\n return function child(elem) {\n const parent = adapter.getParent(elem);\n return parent != null && adapter.isTag(parent) && next(parent);\n };\n }\n case SelectorType.Sibling: {\n return function sibling(elem) {\n const siblings = adapter.getSiblings(elem);\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) && next(currentSibling)) {\n return true;\n }\n }\n return false;\n };\n }\n case SelectorType.Adjacent: {\n if (adapter.prevElementSibling) {\n return function adjacent(elem) {\n const previous = adapter.prevElementSibling(elem);\n return previous != null && next(previous);\n };\n }\n return function adjacent(elem) {\n const siblings = adapter.getSiblings(elem);\n let lastElement;\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling)) {\n lastElement = currentSibling;\n }\n }\n return !!lastElement && next(lastElement);\n };\n }\n case SelectorType.Universal: {\n if (selector.namespace != null && selector.namespace !== \"*\") {\n throw new Error(\"Namespaced universal selectors are not yet supported by css-select\");\n }\n return next;\n }\n }\n}\n//# sourceMappingURL=general.js.map","import { parse, SelectorType } from \"css-what\";\nimport boolbase from \"boolbase\";\nimport sortRules, { isTraversal } from \"./sort.js\";\nimport { compileGeneralSelector } from \"./general.js\";\nimport { ensureIsTag, PLACEHOLDER_ELEMENT, } from \"./pseudo-selectors/subselects.js\";\n/**\n * Compiles a selector to an executable function.\n *\n * @param selector Selector to compile.\n * @param options Compilation options.\n * @param context Optional context for the selector.\n */\nexport function compile(selector, options, context) {\n const next = compileUnsafe(selector, options, context);\n return ensureIsTag(next, options.adapter);\n}\nexport function compileUnsafe(selector, options, context) {\n const token = typeof selector === \"string\" ? parse(selector) : selector;\n return compileToken(token, options, context);\n}\nfunction includesScopePseudo(t) {\n return (t.type === SelectorType.Pseudo &&\n (t.name === \"scope\" ||\n (Array.isArray(t.data) &&\n t.data.some((data) => data.some(includesScopePseudo)))));\n}\nconst DESCENDANT_TOKEN = { type: SelectorType.Descendant };\nconst FLEXIBLE_DESCENDANT_TOKEN = {\n type: \"_flexibleDescendant\",\n};\nconst SCOPE_TOKEN = {\n type: SelectorType.Pseudo,\n name: \"scope\",\n data: null,\n};\n/*\n * CSS 4 Spec (Draft): 3.4.1. Absolutizing a Relative Selector\n * http://www.w3.org/TR/selectors4/#absolutizing\n */\nfunction absolutize(token, { adapter }, context) {\n // TODO Use better check if the context is a document\n const hasContext = !!(context === null || context === void 0 ? void 0 : context.every((e) => {\n const parent = adapter.isTag(e) && adapter.getParent(e);\n return e === PLACEHOLDER_ELEMENT || (parent && adapter.isTag(parent));\n }));\n for (const t of token) {\n if (t.length > 0 &&\n isTraversal(t[0]) &&\n t[0].type !== SelectorType.Descendant) {\n // Don't continue in else branch\n }\n else if (hasContext && !t.some(includesScopePseudo)) {\n t.unshift(DESCENDANT_TOKEN);\n }\n else {\n continue;\n }\n t.unshift(SCOPE_TOKEN);\n }\n}\nexport function compileToken(token, options, context) {\n var _a;\n token.forEach(sortRules);\n context = (_a = options.context) !== null && _a !== void 0 ? _a : context;\n const isArrayContext = Array.isArray(context);\n const finalContext = context && (Array.isArray(context) ? context : [context]);\n // Check if the selector is relative\n if (options.relativeSelector !== false) {\n absolutize(token, options, finalContext);\n }\n else if (token.some((t) => t.length > 0 && isTraversal(t[0]))) {\n throw new Error(\"Relative selectors are not allowed when the `relativeSelector` option is disabled\");\n }\n let shouldTestNextSiblings = false;\n const query = token\n .map((rules) => {\n if (rules.length >= 2) {\n const [first, second] = rules;\n if (first.type !== SelectorType.Pseudo ||\n first.name !== \"scope\") {\n // Ignore\n }\n else if (isArrayContext &&\n second.type === SelectorType.Descendant) {\n rules[1] = FLEXIBLE_DESCENDANT_TOKEN;\n }\n else if (second.type === SelectorType.Adjacent ||\n second.type === SelectorType.Sibling) {\n shouldTestNextSiblings = true;\n }\n }\n return compileRules(rules, options, finalContext);\n })\n .reduce(reduceRules, boolbase.falseFunc);\n query.shouldTestNextSiblings = shouldTestNextSiblings;\n return query;\n}\nfunction compileRules(rules, options, context) {\n var _a;\n return rules.reduce((previous, rule) => previous === boolbase.falseFunc\n ? boolbase.falseFunc\n : compileGeneralSelector(previous, rule, options, context, compileToken), (_a = options.rootFunc) !== null && _a !== void 0 ? _a : boolbase.trueFunc);\n}\nfunction reduceRules(a, b) {\n if (b === boolbase.falseFunc || a === boolbase.trueFunc) {\n return a;\n }\n if (a === boolbase.falseFunc || b === boolbase.trueFunc) {\n return b;\n }\n return function combine(elem) {\n return a(elem) || b(elem);\n };\n}\n//# sourceMappingURL=compile.js.map","import * as DomUtils from \"domutils\";\nimport boolbase from \"boolbase\";\nimport { compile as compileRaw, compileUnsafe, compileToken, } from \"./compile.js\";\nimport { getNextSiblings } from \"./pseudo-selectors/subselects.js\";\nconst defaultEquals = (a, b) => a === b;\nconst defaultOptions = {\n adapter: DomUtils,\n equals: defaultEquals,\n};\nfunction convertOptionFormats(options) {\n var _a, _b, _c, _d;\n /*\n * We force one format of options to the other one.\n */\n // @ts-expect-error Default options may have incompatible `Node` / `ElementNode`.\n const opts = options !== null && options !== void 0 ? options : defaultOptions;\n // @ts-expect-error Same as above.\n (_a = opts.adapter) !== null && _a !== void 0 ? _a : (opts.adapter = DomUtils);\n // @ts-expect-error `equals` does not exist on `Options`\n (_b = opts.equals) !== null && _b !== void 0 ? _b : (opts.equals = (_d = (_c = opts.adapter) === null || _c === void 0 ? void 0 : _c.equals) !== null && _d !== void 0 ? _d : defaultEquals);\n return opts;\n}\nfunction wrapCompile(func) {\n return function addAdapter(selector, options, context) {\n const opts = convertOptionFormats(options);\n return func(selector, opts, context);\n };\n}\n/**\n * Compiles the query, returns a function.\n */\nexport const compile = wrapCompile(compileRaw);\nexport const _compileUnsafe = wrapCompile(compileUnsafe);\nexport const _compileToken = wrapCompile(compileToken);\nfunction getSelectorFunc(searchFunc) {\n return function select(query, elements, options) {\n const opts = convertOptionFormats(options);\n if (typeof query !== \"function\") {\n query = compileUnsafe(query, opts, elements);\n }\n const filteredElements = prepareContext(elements, opts.adapter, query.shouldTestNextSiblings);\n return searchFunc(query, filteredElements, opts);\n };\n}\nexport function prepareContext(elems, adapter, shouldTestNextSiblings = false) {\n /*\n * Add siblings if the query requires them.\n * See https://github.com/fb55/css-select/pull/43#issuecomment-225414692\n */\n if (shouldTestNextSiblings) {\n elems = appendNextSiblings(elems, adapter);\n }\n return Array.isArray(elems)\n ? adapter.removeSubsets(elems)\n : adapter.getChildren(elems);\n}\nfunction appendNextSiblings(elem, adapter) {\n // Order matters because jQuery seems to check the children before the siblings\n const elems = Array.isArray(elem) ? elem.slice(0) : [elem];\n const elemsLength = elems.length;\n for (let i = 0; i < elemsLength; i++) {\n const nextSiblings = getNextSiblings(elems[i], adapter);\n elems.push(...nextSiblings);\n }\n return elems;\n}\n/**\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elems Elements to query. If it is an element, its children will be queried..\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns All matching elements.\n *\n */\nexport const selectAll = getSelectorFunc((query, elems, options) => query === boolbase.falseFunc || !elems || elems.length === 0\n ? []\n : options.adapter.findAll(query, elems));\n/**\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elems Elements to query. If it is an element, its children will be queried..\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns the first match, or null if there was no match.\n */\nexport const selectOne = getSelectorFunc((query, elems, options) => query === boolbase.falseFunc || !elems || elems.length === 0\n ? null\n : options.adapter.findOne(query, elems));\n/**\n * Tests whether or not an element is matched by query.\n *\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elem The element to test if it matches the query.\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns\n */\nexport function is(elem, query, options) {\n const opts = convertOptionFormats(options);\n return (typeof query === \"function\" ? query : compileRaw(query, opts))(elem);\n}\n/**\n * Alias for selectAll(query, elems, options).\n * @see [compile] for supported selector queries.\n */\nexport default selectAll;\n// Export filters, pseudos and aliases to allow users to supply their own.\n/** @deprecated Use the `pseudos` option instead. */\nexport { filters, pseudos, aliases } from \"./pseudo-selectors/index.js\";\n//# sourceMappingURL=index.js.map","import * as CSSselect from 'css-select';\n\nimport {ELEMENT_NODE, TEXT_NODE} from './constants.js';\nimport {ignoreCase} from './utils.js';\n\nconst {isArray} = Array;\n\n/* c8 ignore start */\nconst isTag = ({nodeType}) => nodeType === ELEMENT_NODE;\n\nconst existsOne = (test, elements) => elements.some(\n element => isTag(element) && (\n test(element) ||\n existsOne(test, getChildren(element))\n )\n);\n\nconst getAttributeValue = (element, name) => name === 'class' ?\n element.classList.value : element.getAttribute(name);\n\nconst getChildren = ({childNodes}) => childNodes;\n\nconst getName = (element) => {\n const {localName} = element;\n return ignoreCase(element) ? localName.toLowerCase() : localName;\n};\n\nconst getParent = ({parentNode}) => parentNode;\n\nconst getSiblings = element => {\n const {parentNode} = element;\n return parentNode ? getChildren(parentNode) : element;\n};\n\nconst getText = node => {\n if (isArray(node))\n return node.map(getText).join('');\n if (isTag(node))\n return getText(getChildren(node));\n if (node.nodeType === TEXT_NODE)\n return node.data;\n return '';\n};\n\nconst hasAttrib = (element, name) => element.hasAttribute(name);\n\nconst removeSubsets = nodes => {\n let {length} = nodes;\n while (length--) {\n const node = nodes[length];\n if (length && -1 < nodes.lastIndexOf(node, length - 1)) {\n nodes.splice(length, 1);\n continue;\n }\n for (let {parentNode} = node; parentNode; parentNode = parentNode.parentNode) {\n if (nodes.includes(parentNode)) {\n nodes.splice(length, 1);\n break;\n }\n }\n }\n return nodes;\n};\n\nconst findAll = (test, nodes) => {\n const matches = [];\n for (const node of nodes) {\n if (isTag(node)) {\n if (test(node))\n matches.push(node);\n matches.push(...findAll(test, getChildren(node)));\n }\n }\n return matches;\n};\n\nconst findOne = (test, nodes) => {\n for (let node of nodes)\n if (test(node) || (node = findOne(test, getChildren(node))))\n return node;\n return null;\n};\n/* c8 ignore stop */\n\nconst adapter = {\n isTag,\n existsOne,\n getAttributeValue,\n getChildren,\n getName,\n getParent,\n getSiblings,\n getText,\n hasAttrib,\n removeSubsets,\n findAll,\n findOne\n};\n\nexport const prepareMatch = (element, selectors) => CSSselect.compile(\n selectors,\n {\n context: selectors.includes(':scope') ? element : void 0,\n xmlMode: !ignoreCase(element),\n adapter\n }\n);\n\nexport const matches = (element, selectors) => CSSselect.is(\n element,\n selectors,\n {\n strict: true,\n context: selectors.includes(':scope') ? element : void 0,\n xmlMode: !ignoreCase(element),\n adapter\n }\n);\n","import {TEXT_NODE} from '../shared/constants.js';\nimport {VALUE} from '../shared/symbols.js';\nimport {escape} from '../shared/text-escaper.js';\n\nimport {CharacterData} from './character-data.js';\n\n/**\n * @implements globalThis.Text\n */\nexport class Text extends CharacterData {\n constructor(ownerDocument, data = '') {\n super(ownerDocument, '#text', TEXT_NODE, data);\n }\n\n get wholeText() {\n const text = [];\n let {previousSibling, nextSibling} = this;\n while (previousSibling) {\n if (previousSibling.nodeType === TEXT_NODE)\n text.unshift(previousSibling[VALUE]);\n else\n break;\n previousSibling = previousSibling.previousSibling;\n }\n text.push(this[VALUE]);\n while (nextSibling) {\n if (nextSibling.nodeType === TEXT_NODE)\n text.push(nextSibling[VALUE]);\n else\n break;\n nextSibling = nextSibling.nextSibling;\n }\n return text.join('');\n }\n\n cloneNode() {\n const {ownerDocument, [VALUE]: data} = this;\n return new Text(ownerDocument, data);\n }\n\n toString() { return escape(this[VALUE]); }\n}\n","// https://dom.spec.whatwg.org/#interface-parentnode\n// Document, DocumentFragment, Element\n\nimport {\n ATTRIBUTE_NODE,\n DOCUMENT_FRAGMENT_NODE,\n ELEMENT_NODE,\n TEXT_NODE,\n NODE_END,\n CDATA_SECTION_NODE,\n COMMENT_NODE\n} from '../shared/constants.js';\n\nimport {PRIVATE, END, NEXT, PREV, START, VALUE} from '../shared/symbols.js';\n\nimport {prepareMatch} from '../shared/matches.js';\nimport {previousSibling, nextSibling} from '../shared/node.js';\nimport {getEnd, knownAdjacent, knownBoundaries, knownSegment, knownSiblings, localCase} from '../shared/utils.js';\n\nimport {Node} from '../interface/node.js';\nimport {Text} from '../interface/text.js';\nimport {NodeList} from '../interface/node-list.js';\n\nimport {moCallback} from '../interface/mutation-observer.js';\nimport {connectedCallback} from '../interface/custom-element-registry.js';\n\nimport {nextElementSibling} from './non-document-type-child-node.js';\n\nconst isNode = node => node instanceof Node;\n\nconst insert = (parentNode, child, nodes) => {\n const {ownerDocument} = parentNode;\n for (const node of nodes)\n parentNode.insertBefore(\n isNode(node) ? node : new Text(ownerDocument, node),\n child\n );\n};\n\n/** @typedef { import('../interface/element.js').Element & {\n [typeof NEXT]: NodeStruct,\n [typeof PREV]: NodeStruct,\n [typeof START]: NodeStruct,\n nodeType: typeof ATTRIBUTE_NODE | typeof DOCUMENT_FRAGMENT_NODE | typeof ELEMENT_NODE | typeof TEXT_NODE | typeof NODE_END | typeof COMMENT_NODE | typeof CDATA_SECTION_NODE,\n ownerDocument: Document,\n parentNode: ParentNode,\n}} NodeStruct */\n\nexport class ParentNode extends Node {\n constructor(ownerDocument, localName, nodeType) {\n super(ownerDocument, localName, nodeType);\n this[PRIVATE] = null;\n /** @type {NodeStruct} */\n this[NEXT] = this[END] = {\n [NEXT]: null,\n [PREV]: this,\n [START]: this,\n nodeType: NODE_END,\n ownerDocument: this.ownerDocument,\n parentNode: null\n };\n }\n\n get childNodes() {\n const childNodes = new NodeList;\n let {firstChild} = this;\n while (firstChild) {\n childNodes.push(firstChild);\n firstChild = nextSibling(firstChild);\n }\n return childNodes;\n }\n\n get children() {\n const children = new NodeList;\n let {firstElementChild} = this;\n while (firstElementChild) {\n children.push(firstElementChild);\n firstElementChild = nextElementSibling(firstElementChild);\n }\n return children;\n }\n\n /**\n * @returns {NodeStruct | null}\n */\n get firstChild() {\n let {[NEXT]: next, [END]: end} = this;\n while (next.nodeType === ATTRIBUTE_NODE)\n next = next[NEXT];\n return next === end ? null : next;\n }\n\n /**\n * @returns {NodeStruct | null}\n */\n get firstElementChild() {\n let {firstChild} = this;\n while (firstChild) {\n if (firstChild.nodeType === ELEMENT_NODE)\n return firstChild;\n firstChild = nextSibling(firstChild);\n }\n return null;\n }\n\n get lastChild() {\n const prev = this[END][PREV];\n switch (prev.nodeType) {\n case NODE_END:\n return prev[START];\n case ATTRIBUTE_NODE:\n return null;\n }\n return prev === this ? null : prev;\n }\n\n get lastElementChild() {\n let {lastChild} = this;\n while (lastChild) {\n if (lastChild.nodeType === ELEMENT_NODE)\n return lastChild;\n lastChild = previousSibling(lastChild);\n }\n return null;\n }\n\n get childElementCount() {\n return this.children.length;\n }\n\n prepend(...nodes) {\n insert(this, this.firstChild, nodes);\n }\n\n append(...nodes) {\n insert(this, this[END], nodes);\n }\n\n replaceChildren(...nodes) {\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end && next.nodeType === ATTRIBUTE_NODE)\n next = next[NEXT];\n while (next !== end) {\n const after = getEnd(next)[NEXT];\n next.remove();\n next = after;\n }\n if (nodes.length)\n insert(this, end, nodes);\n }\n\n getElementsByClassName(className) {\n const elements = new NodeList;\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (\n next.nodeType === ELEMENT_NODE &&\n next.hasAttribute('class') &&\n next.classList.has(className)\n )\n elements.push(next);\n next = next[NEXT];\n }\n return elements;\n }\n\n getElementsByTagName(tagName) {\n const elements = new NodeList;\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && (\n next.localName === tagName ||\n localCase(next) === tagName\n ))\n elements.push(next);\n next = next[NEXT];\n }\n return elements;\n }\n\n querySelector(selectors) {\n const matches = prepareMatch(this, selectors);\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && matches(next))\n return next;\n next = next.nodeType === ELEMENT_NODE && next.localName === 'template' ? next[END] : next[NEXT];\n }\n return null;\n }\n\n querySelectorAll(selectors) {\n const matches = prepareMatch(this, selectors);\n const elements = new NodeList;\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && matches(next))\n elements.push(next);\n next = next.nodeType === ELEMENT_NODE && next.localName === 'template' ? next[END] : next[NEXT];\n }\n return elements;\n }\n\n appendChild(node) {\n return this.insertBefore(node, this[END]);\n }\n\n contains(node) {\n let parentNode = node;\n while (parentNode && parentNode !== this)\n parentNode = parentNode.parentNode;\n return parentNode === this;\n }\n\n insertBefore(node, before = null) {\n if (node === before)\n return node;\n if (node === this)\n throw new Error('unable to append a node to itself');\n const next = before || this[END];\n switch (node.nodeType) {\n case ELEMENT_NODE:\n node.remove();\n node.parentNode = this;\n knownBoundaries(next[PREV], node, next);\n moCallback(node, null);\n connectedCallback(node);\n break;\n case DOCUMENT_FRAGMENT_NODE: {\n let {[PRIVATE]: parentNode, firstChild, lastChild} = node;\n if (firstChild) {\n knownSegment(next[PREV], firstChild, lastChild, next);\n knownAdjacent(node, node[END]);\n if (parentNode)\n parentNode.replaceChildren();\n do {\n firstChild.parentNode = this;\n moCallback(firstChild, null);\n if (firstChild.nodeType === ELEMENT_NODE)\n connectedCallback(firstChild);\n } while (\n firstChild !== lastChild &&\n (firstChild = nextSibling(firstChild))\n );\n }\n break;\n }\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n node.remove();\n /* eslint no-fallthrough:0 */\n // this covers DOCUMENT_TYPE_NODE too\n default:\n node.parentNode = this;\n knownSiblings(next[PREV], node, next);\n moCallback(node, null);\n break;\n }\n return node;\n }\n\n normalize() {\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n const {[NEXT]: $next, [PREV]: $prev, nodeType} = next;\n if (nodeType === TEXT_NODE) {\n if (!next[VALUE])\n next.remove();\n else if ($prev && $prev.nodeType === TEXT_NODE) {\n $prev.textContent += next.textContent;\n next.remove();\n }\n }\n next = $next;\n }\n }\n\n removeChild(node) {\n if (node.parentNode !== this)\n throw new Error('node is not a child');\n node.remove();\n return node;\n }\n\n replaceChild(node, replaced) {\n const next = getEnd(replaced)[NEXT];\n replaced.remove();\n this.insertBefore(node, next);\n return replaced;\n }\n}\n","// https://dom.spec.whatwg.org/#interface-nonelementparentnode\n// Document, DocumentFragment\n\nimport {ELEMENT_NODE} from '../shared/constants.js';\nimport {END, NEXT} from '../shared/symbols.js';\nimport {nonElementAsJSON} from '../shared/jsdon.js';\n\nimport {ParentNode} from './parent-node.js';\n\nexport class NonElementParentNode extends ParentNode {\n getElementById(id) {\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && next.id === id)\n return next;\n next = next[NEXT];\n }\n return null;\n }\n\n cloneNode(deep) {\n const {ownerDocument, constructor} = this;\n const nonEPN = new constructor(ownerDocument);\n if (deep) {\n const {[END]: end} = nonEPN;\n for (const node of this.childNodes)\n nonEPN.insertBefore(node.cloneNode(deep), end);\n }\n return nonEPN; \n }\n\n toString() {\n const {childNodes, localName} = this;\n return `<${localName}>${childNodes.join('')}</${localName}>`;\n }\n\n toJSON() {\n const json = [];\n nonElementAsJSON(this, json);\n return json;\n }\n}\n","import {DOCUMENT_FRAGMENT_NODE} from '../shared/constants.js';\nimport {NonElementParentNode} from '../mixin/non-element-parent-node.js';\n\n/**\n * @implements globalThis.DocumentFragment\n */\nexport class DocumentFragment extends NonElementParentNode {\n constructor(ownerDocument) {\n super(ownerDocument, '#document-fragment', DOCUMENT_FRAGMENT_NODE);\n }\n}\n","import {DOCUMENT_TYPE_NODE} from '../shared/constants.js';\nimport {documentTypeAsJSON} from '../shared/jsdon.js';\n\nimport {Node} from './node.js';\n\n/**\n * @implements globalThis.DocumentType\n */\nexport class DocumentType extends Node {\n constructor(ownerDocument, name, publicId = '', systemId = '') {\n super(ownerDocument, '#document-type', DOCUMENT_TYPE_NODE);\n this.name = name;\n this.publicId = publicId;\n this.systemId = systemId;\n }\n\n cloneNode() {\n const {ownerDocument, name, publicId, systemId} = this;\n return new DocumentType(ownerDocument, name, publicId, systemId);\n }\n\n toString() {\n const {name, publicId, systemId} = this;\n const hasPublic = 0 < publicId.length;\n const str = [name];\n if (hasPublic)\n str.push('PUBLIC', `\"${publicId}\"`);\n if (systemId.length) {\n if (!hasPublic)\n str.push('SYSTEM');\n str.push(`\"${systemId}\"`);\n }\n return `<!DOCTYPE ${str.join(' ')}>`;\n }\n\n toJSON() {\n const json = [];\n documentTypeAsJSON(this, json);\n return json;\n }\n}\n","import {ELEMENT_NODE, DOCUMENT_FRAGMENT_NODE} from '../shared/constants.js';\nimport {CUSTOM_ELEMENTS} from '../shared/symbols.js';\nimport {parseFromString} from '../shared/parse-from-string.js';\nimport {ignoreCase} from '../shared/utils.js';\n\n\n/**\n * @param {Node} node\n * @returns {String}\n */\nexport const getInnerHtml = node => node.childNodes.join('');\n\n/**\n * @param {Node} node\n * @param {String} html\n */\nexport const setInnerHtml = (node, html) => {\n const {ownerDocument} = node;\n const {constructor} = ownerDocument;\n const document = new constructor;\n document[CUSTOM_ELEMENTS] = ownerDocument[CUSTOM_ELEMENTS];\n const {childNodes} = parseFromString(document, ignoreCase(node), html);\n\n node.replaceChildren(...childNodes.map(setOwnerDocument, ownerDocument));\n};\n\nfunction setOwnerDocument(node) {\n node.ownerDocument = this;\n switch (node.nodeType) {\n case ELEMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE:\n node.childNodes.forEach(setOwnerDocument, this);\n break;\n }\n return node;\n}\n","export default camel => camel.replace(/(([A-Z0-9])([A-Z0-9][a-z]))|(([a-z0-9]+)([A-Z]))/g, '$2$5-$3$6')\n .toLowerCase();\n","import uhyphen from 'uhyphen';\nimport {setPrototypeOf} from '../shared/object.js';\n\nconst refs = new WeakMap;\n\nconst key = name => `data-${uhyphen(name)}`;\nconst prop = name => name.slice(5).replace(/-([a-z])/g, (_, $1) => $1.toUpperCase());\n\nconst handler = {\n get(dataset, name) {\n if (name in dataset)\n return refs.get(dataset).getAttribute(key(name));\n },\n\n set(dataset, name, value) {\n dataset[name] = value;\n refs.get(dataset).setAttribute(key(name), value);\n return true;\n },\n\n deleteProperty(dataset, name) {\n if (name in dataset)\n refs.get(dataset).removeAttribute(key(name));\n return delete dataset[name];\n }\n};\n\n/**\n * @implements globalThis.DOMStringMap\n */\nexport class DOMStringMap {\n /**\n * @param {Element} ref\n */\n constructor(ref) {\n for (const {name, value} of ref.attributes) {\n if (/^data-/.test(name))\n this[prop(name)] = value;\n }\n refs.set(this, ref);\n return new Proxy(this, handler);\n }\n}\n\nsetPrototypeOf(DOMStringMap.prototype, null);\n","import {OWNER_ELEMENT} from '../shared/symbols.js';\nimport {setAttribute} from '../shared/attributes.js';\n\nimport {Attr} from '../interface/attr.js';\n\nconst {add} = Set.prototype;\nconst addTokens = (self, tokens) => {\n for (const token of tokens) {\n if (token)\n add.call(self, token);\n }\n};\n\nconst update = ({[OWNER_ELEMENT]: ownerElement, value}) => {\n const attribute = ownerElement.getAttributeNode('class');\n if (attribute)\n attribute.value = value;\n else\n setAttribute(\n ownerElement,\n new Attr(ownerElement.ownerDocument, 'class', value)\n );\n};\n\n/**\n * @implements globalThis.DOMTokenList\n */\nexport class DOMTokenList extends Set {\n\n constructor(ownerElement) {\n super();\n this[OWNER_ELEMENT] = ownerElement;\n const attribute = ownerElement.getAttributeNode('class');\n if (attribute)\n addTokens(this, attribute.value.split(/\\s+/));\n }\n\n get length() { return this.size; }\n\n get value() { return [...this].join(' '); }\n\n /**\n * @param {...string} tokens\n */\n add(...tokens) {\n addTokens(this, tokens);\n update(this);\n }\n\n /**\n * @param {string} token\n */\n contains(token) { return this.has(token); }\n\n /**\n * @param {...string} tokens\n */\n remove(...tokens) {\n for (const token of tokens)\n this.delete(token);\n update(this);\n }\n\n /**\n * @param {string} token\n * @param {boolean?} force\n */\n toggle(token, force) {\n if (this.has(token)) {\n if (force)\n return true;\n this.delete(token);\n update(this);\n }\n else if (force || arguments.length === 1) {\n super.add(token);\n update(this);\n return true;\n }\n return false;\n }\n\n /**\n * @param {string} token\n * @param {string} newToken\n */\n replace(token, newToken) {\n if (this.has(token)) {\n this.delete(token);\n super.add(newToken);\n update(this);\n return true;\n }\n return false;\n }\n\n /**\n * @param {string} token\n */\n supports() { return true; }\n}\n","import uhyphen from 'uhyphen';\n\nimport {CHANGED, PRIVATE, VALUE} from '../shared/symbols.js';\n\nconst refs = new WeakMap;\n\nconst getKeys = style => [...style.keys()].filter(key => key !== PRIVATE);\n\nconst updateKeys = style => {\n const attr = refs.get(style).getAttributeNode('style');\n if (!attr || attr[CHANGED] || style.get(PRIVATE) !== attr) {\n style.clear();\n if (attr) {\n style.set(PRIVATE, attr);\n for (const rule of attr[VALUE].split(/\\s*;\\s*/)) {\n let [key, ...rest] = rule.split(':');\n if (rest.length > 0) {\n key = key.trim();\n const value = rest.join(':').trim();\n if (key && value)\n style.set(key, value);\n }\n }\n }\n }\n return attr;\n};\n\nconst handler = {\n get(style, name) {\n if (name in prototype)\n return style[name];\n updateKeys(style);\n if (name === 'length')\n return getKeys(style).length;\n if (/^\\d+$/.test(name))\n return getKeys(style)[name];\n return style.get(uhyphen(name));\n },\n\n set(style, name, value) {\n if (name === 'cssText')\n style[name] = value;\n else {\n let attr = updateKeys(style);\n if (value == null)\n style.delete(uhyphen(name));\n else\n style.set(uhyphen(name), value);\n if (!attr) {\n const element = refs.get(style);\n attr = element.ownerDocument.createAttribute('style');\n element.setAttributeNode(attr);\n style.set(PRIVATE, attr);\n }\n attr[CHANGED] = false;\n attr[VALUE] = style.toString();\n }\n return true;\n }\n};\n\n/**\n * @implements globalThis.CSSStyleDeclaration\n */\nexport class CSSStyleDeclaration extends Map {\n constructor(element) {\n super();\n refs.set(this, element);\n /* c8 ignore start */\n return new Proxy(this, handler);\n /* c8 ignore stop */\n }\n\n get cssText() {\n return this.toString();\n }\n\n set cssText(value) {\n refs.get(this).setAttribute('style', value);\n }\n\n getPropertyValue(name) {\n const self = this[PRIVATE];\n return handler.get(self, name);\n }\n\n setProperty(name, value) {\n const self = this[PRIVATE];\n handler.set(self, name, value);\n }\n\n removeProperty(name) {\n const self = this[PRIVATE];\n handler.set(self, name, null);\n }\n\n [Symbol.iterator]() {\n const self = this[PRIVATE];\n updateKeys(self);\n const keys = getKeys(self);\n const {length} = keys;\n let i = 0;\n return {\n next() {\n const done = i === length;\n return {done, value: done ? null : keys[i++]};\n }\n };\n }\n\n get[PRIVATE]() { return this; }\n\n toString() {\n const self = this[PRIVATE];\n updateKeys(self);\n const cssText = [];\n self.forEach(push, cssText);\n return cssText.join(';');\n }\n}\n\nconst {prototype} = CSSStyleDeclaration;\n\nfunction push(value, key) {\n if (key !== PRIVATE)\n this.push(`${key}:${value}`);\n}\n","// https://dom.spec.whatwg.org/#interface-event\n\n/* c8 ignore start */\n\n// Node 15 has Event but 14 and 12 don't\nconst BUBBLING_PHASE = 3;\nconst AT_TARGET = 2;\nconst CAPTURING_PHASE = 1;\nconst NONE = 0;\n\nfunction getCurrentTarget(ev) {\n return ev.currentTarget;\n}\n\n/**\n * @implements globalThis.Event\n */\nclass GlobalEvent {\n static get BUBBLING_PHASE() { return BUBBLING_PHASE; }\n static get AT_TARGET() { return AT_TARGET; }\n static get CAPTURING_PHASE() { return CAPTURING_PHASE; }\n static get NONE() { return NONE; }\n\n constructor(type, eventInitDict = {}) {\n this.type = type;\n this.bubbles = !!eventInitDict.bubbles;\n this.cancelBubble = false;\n this._stopImmediatePropagationFlag = false;\n this.cancelable = !!eventInitDict.cancelable;\n this.eventPhase = this.NONE;\n this.timeStamp = Date.now();\n this.defaultPrevented = false;\n this.originalTarget = null;\n this.returnValue = null;\n this.srcElement = null;\n this.target = null;\n this._path = [];\n }\n\n get BUBBLING_PHASE() { return BUBBLING_PHASE; }\n get AT_TARGET() { return AT_TARGET; }\n get CAPTURING_PHASE() { return CAPTURING_PHASE; }\n get NONE() { return NONE; }\n\n preventDefault() { this.defaultPrevented = true; }\n\n // simplified implementation, should be https://dom.spec.whatwg.org/#dom-event-composedpath\n composedPath() {\n return this._path.map(getCurrentTarget);\n }\n\n stopPropagation() {\n this.cancelBubble = true;\n }\n \n stopImmediatePropagation() {\n this.stopPropagation();\n this._stopImmediatePropagationFlag = true;\n }\n }\n\nexport {GlobalEvent as Event};\n\n/* c8 ignore stop */\n","/**\n * @implements globalThis.NamedNodeMap\n */\nexport class NamedNodeMap extends Array {\n constructor(ownerElement) {\n super();\n this.ownerElement = ownerElement;\n }\n\n getNamedItem(name) {\n return this.ownerElement.getAttributeNode(name);\n }\n\n setNamedItem(attr) {\n this.ownerElement.setAttributeNode(attr);\n this.unshift(attr);\n }\n\n removeNamedItem(name) {\n const item = this.getNamedItem(name);\n this.ownerElement.removeAttribute(name);\n this.splice(this.indexOf(item), 1);\n }\n\n item(index) {\n return index < this.length ? this[index] : null;\n }\n\n /* c8 ignore start */\n getNamedItemNS(_, name) {\n return this.getNamedItem(name);\n }\n\n setNamedItemNS(_, attr) {\n return this.setNamedItem(attr);\n }\n\n removeNamedItemNS(_, name) {\n return this.removeNamedItem(name);\n }\n /* c8 ignore stop */\n}\n","import {DOCUMENT_FRAGMENT_NODE} from '../shared/constants.js';\nimport {getInnerHtml, setInnerHtml} from '../mixin/inner-html.js';\nimport {NonElementParentNode} from '../mixin/non-element-parent-node.js';\n\n/**\n * @implements globalThis.ShadowRoot\n */\nexport class ShadowRoot extends NonElementParentNode {\n constructor(host) {\n super(host.ownerDocument, '#shadow-root', DOCUMENT_FRAGMENT_NODE);\n this.host = host;\n }\n\n get innerHTML() {\n return getInnerHtml(this);\n }\n set innerHTML(html) {\n setInnerHtml(this, html);\n }\n}\n","// https://dom.spec.whatwg.org/#interface-element\n\nimport {\n ATTRIBUTE_NODE,\n BLOCK_ELEMENTS,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n ELEMENT_NODE,\n NODE_END,\n TEXT_NODE,\n SVG_NAMESPACE\n} from '../shared/constants.js';\n\nimport {\n setAttribute, removeAttribute,\n numericAttribute, stringAttribute\n} from '../shared/attributes.js';\n\nimport {\n CLASS_LIST, DATASET, STYLE,\n END, NEXT, PREV, START,\n MIME\n} from '../shared/symbols.js';\n\nimport {\n ignoreCase,\n knownAdjacent,\n localCase,\n String\n} from '../shared/utils.js';\n\nimport {elementAsJSON} from '../shared/jsdon.js';\nimport {matches, prepareMatch} from '../shared/matches.js';\nimport {shadowRoots} from '../shared/shadow-roots.js';\n\nimport {isConnected, parentElement, previousSibling, nextSibling} from '../shared/node.js';\nimport {previousElementSibling, nextElementSibling} from '../mixin/non-document-type-child-node.js';\n\nimport {before, after, replaceWith, remove} from '../mixin/child-node.js';\nimport {getInnerHtml, setInnerHtml} from '../mixin/inner-html.js';\nimport {ParentNode} from '../mixin/parent-node.js';\n\nimport {DOMStringMap} from '../dom/string-map.js';\nimport {DOMTokenList} from '../dom/token-list.js';\n\nimport {CSSStyleDeclaration} from './css-style-declaration.js';\nimport {Event} from './event.js';\nimport {NamedNodeMap} from './named-node-map.js';\nimport {ShadowRoot} from './shadow-root.js';\nimport {NodeList} from './node-list.js';\nimport {Attr} from './attr.js';\nimport {Text} from './text.js';\nimport {escape} from '../shared/text-escaper.js';\n\n// <utils>\nconst attributesHandler = {\n get(target, key) {\n return key in target ? target[key] : target.find(({name}) => name === key);\n }\n};\n\nconst create = (ownerDocument, element, localName) => {\n if ('ownerSVGElement' in element) {\n const svg = ownerDocument.createElementNS(SVG_NAMESPACE, localName);\n svg.ownerSVGElement = element.ownerSVGElement;\n return svg;\n }\n return ownerDocument.createElement(localName);\n};\n\nconst isVoid = ({localName, ownerDocument}) => {\n return ownerDocument[MIME].voidElements.test(localName);\n};\n\n// </utils>\n\n/**\n * @implements globalThis.Element\n */\nexport class Element extends ParentNode {\n constructor(ownerDocument, localName) {\n super(ownerDocument, localName, ELEMENT_NODE);\n this[CLASS_LIST] = null;\n this[DATASET] = null;\n this[STYLE] = null;\n }\n\n // <Mixins>\n get isConnected() { return isConnected(this); }\n get parentElement() { return parentElement(this); }\n get previousSibling() { return previousSibling(this); }\n get nextSibling() { return nextSibling(this); }\n get namespaceURI() {\n return 'http://www.w3.org/1999/xhtml';\n }\n\n get previousElementSibling() { return previousElementSibling(this); }\n get nextElementSibling() { return nextElementSibling(this); }\n\n before(...nodes) { before(this, nodes); }\n after(...nodes) { after(this, nodes); }\n replaceWith(...nodes) { replaceWith(this, nodes); }\n remove() { remove(this[PREV], this, this[END][NEXT]); }\n // </Mixins>\n\n // <specialGetters>\n get id() { return stringAttribute.get(this, 'id'); }\n set id(value) { stringAttribute.set(this, 'id', value); }\n\n get className() { return this.classList.value; }\n set className(value) {\n const {classList} = this;\n classList.clear();\n classList.add(...(String(value).split(/\\s+/)));\n }\n\n get nodeName() { return localCase(this); }\n get tagName() { return localCase(this); }\n\n get classList() {\n return this[CLASS_LIST] || (\n this[CLASS_LIST] = new DOMTokenList(this)\n );\n }\n\n get dataset() {\n return this[DATASET] || (\n this[DATASET] = new DOMStringMap(this)\n );\n }\n\n getBoundingClientRect() {\n return {\n x: 0,\n y: 0,\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0\n };\n }\n\n get nonce() { return stringAttribute.get(this, 'nonce'); }\n set nonce(value) { stringAttribute.set(this, 'nonce', value); }\n\n get style() {\n return this[STYLE] || (\n this[STYLE] = new CSSStyleDeclaration(this)\n );\n }\n\n get tabIndex() { return numericAttribute.get(this, 'tabindex') || -1; }\n set tabIndex(value) { numericAttribute.set(this, 'tabindex', value); }\n\n get slot() { return stringAttribute.get(this, 'slot'); }\n set slot(value) { stringAttribute.set(this, 'slot', value); }\n // </specialGetters>\n\n\n // <contentRelated>\n get innerText() {\n const text = [];\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === TEXT_NODE) {\n text.push(next.textContent.replace(/\\s+/g, ' '));\n } else if(\n text.length && next[NEXT] != end &&\n BLOCK_ELEMENTS.has(next.tagName)\n ) {\n text.push('\\n');\n }\n next = next[NEXT];\n }\n return text.join('');\n }\n\n /**\n * @returns {String}\n */\n get textContent() {\n const text = [];\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === TEXT_NODE)\n text.push(next.textContent);\n next = next[NEXT];\n }\n return text.join('');\n }\n\n set textContent(text) {\n this.replaceChildren();\n if (text != null && text !== '')\n this.appendChild(new Text(this.ownerDocument, text));\n }\n\n get innerHTML() {\n return getInnerHtml(this);\n }\n set innerHTML(html) {\n setInnerHtml(this, html);\n }\n\n get outerHTML() { return this.toString(); }\n set outerHTML(html) {\n const template = this.ownerDocument.createElement('');\n template.innerHTML = html;\n this.replaceWith(...template.childNodes);\n }\n // </contentRelated>\n\n // <attributes>\n get attributes() {\n const attributes = new NamedNodeMap(this);\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n attributes.push(next);\n next = next[NEXT];\n }\n return new Proxy(attributes, attributesHandler);\n }\n\n focus() { this.dispatchEvent(new Event('focus')); }\n\n getAttribute(name) {\n if (name === 'class')\n return this.className;\n const attribute = this.getAttributeNode(name);\n return attribute && (ignoreCase(this) ? attribute.value : escape(attribute.value));\n }\n\n getAttributeNode(name) {\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n if (next.name === name)\n return next;\n next = next[NEXT];\n }\n return null;\n }\n\n getAttributeNames() {\n const attributes = new NodeList;\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n attributes.push(next.name);\n next = next[NEXT];\n }\n return attributes;\n }\n\n hasAttribute(name) { return !!this.getAttributeNode(name); }\n hasAttributes() { return this[NEXT].nodeType === ATTRIBUTE_NODE; }\n\n removeAttribute(name) {\n if (name === 'class' && this[CLASS_LIST])\n this[CLASS_LIST].clear();\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n if (next.name === name) {\n removeAttribute(this, next);\n return;\n }\n next = next[NEXT];\n }\n }\n\n removeAttributeNode(attribute) {\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n if (next === attribute) {\n removeAttribute(this, next);\n return;\n }\n next = next[NEXT];\n }\n }\n\n setAttribute(name, value) {\n if (name === 'class')\n this.className = value;\n else {\n const attribute = this.getAttributeNode(name);\n if (attribute)\n attribute.value = value;\n else\n setAttribute(this, new Attr(this.ownerDocument, name, value));\n }\n }\n\n setAttributeNode(attribute) {\n const {name} = attribute;\n const previously = this.getAttributeNode(name);\n if (previously !== attribute) {\n if (previously)\n this.removeAttributeNode(previously);\n const {ownerElement} = attribute;\n if (ownerElement)\n ownerElement.removeAttributeNode(attribute);\n setAttribute(this, attribute);\n }\n return previously;\n }\n\n toggleAttribute(name, force) {\n if (this.hasAttribute(name)) {\n if (!force) {\n this.removeAttribute(name);\n return false;\n }\n return true;\n }\n else if (force || arguments.length === 1) {\n this.setAttribute(name, '');\n return true;\n }\n return false;\n }\n // </attributes>\n\n // <ShadowDOM>\n get shadowRoot() {\n if (shadowRoots.has(this)) {\n const {mode, shadowRoot} = shadowRoots.get(this);\n if (mode === 'open')\n return shadowRoot;\n }\n return null;\n }\n\n attachShadow(init) {\n if (shadowRoots.has(this))\n throw new Error('operation not supported');\n // TODO: shadowRoot should be likely a specialized class that extends DocumentFragment\n // but until DSD is out, I am not sure I should spend time on this.\n const shadowRoot = new ShadowRoot(this);\n shadowRoots.set(this, {\n mode: init.mode,\n shadowRoot\n });\n return shadowRoot;\n }\n // </ShadowDOM>\n\n // <selectors>\n matches(selectors) { return matches(this, selectors); }\n closest(selectors) {\n let parentElement = this;\n const matches = prepareMatch(parentElement, selectors);\n while (parentElement && !matches(parentElement))\n parentElement = parentElement.parentElement;\n return parentElement;\n }\n // </selectors>\n\n // <insertAdjacent>\n insertAdjacentElement(position, element) {\n const {parentElement} = this;\n switch (position) {\n case 'beforebegin':\n if (parentElement) {\n parentElement.insertBefore(element, this);\n break;\n }\n return null;\n case 'afterbegin':\n this.insertBefore(element, this.firstChild);\n break;\n case 'beforeend':\n this.insertBefore(element, null);\n break;\n case 'afterend':\n if (parentElement) {\n parentElement.insertBefore(element, this.nextSibling);\n break;\n }\n return null;\n }\n return element;\n }\n\n insertAdjacentHTML(position, html) {\n const template = this.ownerDocument.createElement('template');\n template.innerHTML = html;\n this.insertAdjacentElement(position, template.content);\n }\n\n insertAdjacentText(position, text) {\n const node = this.ownerDocument.createTextNode(text);\n this.insertAdjacentElement(position, node);\n }\n // </insertAdjacent>\n\n cloneNode(deep = false) {\n const {ownerDocument, localName} = this;\n const addNext = next => {\n next.parentNode = parentNode;\n knownAdjacent($next, next);\n $next = next;\n };\n const clone = create(ownerDocument, this, localName);\n let parentNode = clone, $next = clone;\n let {[NEXT]: next, [END]: prev} = this;\n while (next !== prev && (deep || next.nodeType === ATTRIBUTE_NODE)) {\n switch (next.nodeType) {\n case NODE_END:\n knownAdjacent($next, parentNode[END]);\n $next = parentNode[END];\n parentNode = parentNode.parentNode;\n break;\n case ELEMENT_NODE: {\n const node = create(ownerDocument, next, next.localName);\n addNext(node);\n parentNode = node;\n break;\n }\n case ATTRIBUTE_NODE: {\n const attr = next.cloneNode(deep);\n attr.ownerElement = parentNode;\n addNext(attr);\n break;\n }\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n addNext(next.cloneNode(deep));\n break;\n }\n next = next[NEXT];\n }\n knownAdjacent($next, clone[END]);\n return clone;\n }\n\n // <custom>\n toString() {\n const out = [];\n const {[END]: end} = this;\n let next = {[NEXT]: this};\n let isOpened = false;\n do {\n next = next[NEXT];\n switch (next.nodeType) {\n case ATTRIBUTE_NODE: {\n const attr = ' ' + next;\n switch (attr) {\n case ' id':\n case ' class':\n case ' style':\n break;\n default:\n out.push(attr);\n }\n break;\n }\n case NODE_END: {\n const start = next[START];\n if (isOpened) {\n if ('ownerSVGElement' in start)\n out.push(' />');\n else if (isVoid(start))\n out.push(ignoreCase(start) ? '>' : ' />');\n else\n out.push(`></${start.localName}>`);\n isOpened = false;\n }\n else\n out.push(`</${start.localName}>`);\n break;\n }\n case ELEMENT_NODE:\n if (isOpened)\n out.push('>');\n if (next.toString !== this.toString) {\n out.push(next.toString());\n next = next[END];\n isOpened = false;\n }\n else {\n out.push(`<${next.localName}`);\n isOpened = true;\n }\n break;\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n out.push((isOpened ? '>' : '') + next);\n isOpened = false;\n break;\n }\n } while (next !== end);\n return out.join('');\n }\n\n toJSON() {\n const json = [];\n elementAsJSON(this, json);\n return json;\n }\n // </custom>\n\n\n /* c8 ignore start */\n getAttributeNS(_, name) { return this.getAttribute(name); }\n getElementsByTagNameNS(_, name) { return this.getElementsByTagName(name); }\n hasAttributeNS(_, name) { return this.hasAttribute(name); }\n removeAttributeNS(_, name) { this.removeAttribute(name); }\n setAttributeNS(_, name, value) { this.setAttribute(name, value); }\n setAttributeNodeNS(attr) { return this.setAttributeNode(attr); }\n /* c8 ignore stop */\n}\n","import {Element} from '../interface/element.js';\nimport {String} from '../shared/utils.js';\n\nconst classNames = new WeakMap;\n\nconst handler = {\n get(target, name) {\n return target[name];\n },\n set(target, name, value) {\n target[name] = value;\n return true;\n }\n};\n\n/**\n * @implements globalThis.SVGElement\n */\nexport class SVGElement extends Element {\n constructor(ownerDocument, localName, ownerSVGElement = null) {\n super(ownerDocument, localName);\n this.ownerSVGElement = ownerSVGElement;\n }\n\n get className() {\n if (!classNames.has(this))\n classNames.set(this, new Proxy({baseVal: '', animVal: ''}, handler));\n return classNames.get(this);\n }\n\n /* c8 ignore start */\n set className(value) {\n const {classList} = this;\n classList.clear();\n classList.add(...(String(value).split(/\\s+/)));\n }\n /* c8 ignore stop */\n\n get namespaceURI() {\n return 'http://www.w3.org/2000/svg';\n }\n\n getAttribute(name) {\n return name === 'class' ?\n [...this.classList].join(' ') :\n super.getAttribute(name);\n }\n\n setAttribute(name, value) {\n if (name === 'class')\n this.className = value;\n else if (name === 'style') {\n const {className} = this;\n className.baseVal = className.animVal = value;\n }\n super.setAttribute(name, value);\n }\n}\n","import {Attr as _Attr} from '../interface/attr.js';\nimport {CharacterData as _CharacterData} from '../interface/character-data.js';\nimport {CDATASection as _CDATASection} from '../interface/cdata-section.js';\nimport {Comment as _Comment} from '../interface/comment.js';\nimport {DocumentFragment as _DocumentFragment} from '../interface/document-fragment.js';\nimport {DocumentType as _DocumentType} from '../interface/document-type.js';\nimport {Element as _Element} from '../interface/element.js';\nimport {Node as _Node} from '../interface/node.js';\nimport {ShadowRoot as _ShadowRoot} from '../interface/shadow-root.js';\nimport {Text as _Text} from '../interface/text.js';\nimport {SVGElement as _SVGElement} from '../svg/element.js';\n\nimport {setPrototypeOf} from './object.js';\n\n/* c8 ignore start */\nexport const illegalConstructor = () => {\n throw new TypeError('Illegal constructor');\n};\n\nexport function Attr() { illegalConstructor(); }\nsetPrototypeOf(Attr, _Attr);\nAttr.prototype = _Attr.prototype;\n\nexport function CDATASection() { illegalConstructor(); }\nsetPrototypeOf(CDATASection, _CDATASection);\nCDATASection.prototype = _CDATASection.prototype;\n\nexport function CharacterData() { illegalConstructor(); }\nsetPrototypeOf(CharacterData, _CharacterData);\nCharacterData.prototype = _CharacterData.prototype;\n\nexport function Comment() { illegalConstructor(); }\nsetPrototypeOf(Comment, _Comment);\nComment.prototype = _Comment.prototype;\n\nexport function DocumentFragment() { illegalConstructor(); }\nsetPrototypeOf(DocumentFragment, _DocumentFragment);\nDocumentFragment.prototype = _DocumentFragment.prototype;\n\nexport function DocumentType() { illegalConstructor(); }\nsetPrototypeOf(DocumentType, _DocumentType);\nDocumentType.prototype = _DocumentType.prototype;\n\nexport function Element() { illegalConstructor(); }\nsetPrototypeOf(Element, _Element);\nElement.prototype = _Element.prototype;\n\nexport function Node() { illegalConstructor(); }\nsetPrototypeOf(Node, _Node);\nNode.prototype = _Node.prototype;\n\nexport function ShadowRoot() { illegalConstructor(); }\nsetPrototypeOf(ShadowRoot, _ShadowRoot);\nShadowRoot.prototype = _ShadowRoot.prototype;\n\nexport function Text() { illegalConstructor(); }\nsetPrototypeOf(Text, _Text);\nText.prototype = _Text.prototype;\n\nexport function SVGElement() { illegalConstructor(); }\nsetPrototypeOf(SVGElement, _SVGElement);\nSVGElement.prototype = _SVGElement.prototype;\n/* c8 ignore stop */\n\nexport const Facades = {\n Attr,\n CDATASection,\n CharacterData,\n Comment,\n DocumentFragment,\n DocumentType,\n Element,\n Node,\n ShadowRoot,\n Text,\n SVGElement\n};\n","import {END, UPGRADE} from '../shared/symbols.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {Event} from '../interface/event.js';\nimport {Element} from '../interface/element.js';\nimport {Classes, customElements} from '../interface/custom-element-registry.js';\n\nconst Level0 = new WeakMap;\nconst level0 = {\n get(element, name) {\n return Level0.has(element) && Level0.get(element)[name] || null;\n },\n set(element, name, value) {\n if (!Level0.has(element))\n Level0.set(element, {});\n const handlers = Level0.get(element);\n const type = name.slice(2);\n if (handlers[name])\n element.removeEventListener(type, handlers[name], false);\n if ((handlers[name] = value))\n element.addEventListener(type, value, false);\n }\n};\n\n/**\n * @implements globalThis.HTMLElement\n */\nexport class HTMLElement extends Element {\n\n static get observedAttributes() { return []; }\n\n constructor(ownerDocument = null, localName = '') {\n super(ownerDocument, localName);\n\n const ownerLess = !ownerDocument;\n let options;\n\n if (ownerLess) {\n const {constructor: Class} = this;\n if (!Classes.has(Class))\n throw new Error('unable to initialize this Custom Element');\n ({ownerDocument, localName, options} = Classes.get(Class));\n }\n\n if (ownerDocument[UPGRADE]) {\n const {element, values} = ownerDocument[UPGRADE];\n ownerDocument[UPGRADE] = null;\n for (const [key, value] of values)\n element[key] = value;\n return element;\n }\n\n if (ownerLess) {\n this.ownerDocument = this[END].ownerDocument = ownerDocument;\n this.localName = localName;\n customElements.set(this, {connected: false});\n if (options.is)\n this.setAttribute('is', options.is);\n }\n }\n\n /* c8 ignore start */\n\n /* TODO: what about these?\n offsetHeight\n offsetLeft\n offsetParent\n offsetTop\n offsetWidth\n */\n\n blur() { this.dispatchEvent(new Event('blur')); }\n click() {\n const clickEvent = new Event('click', {bubbles: true, cancelable: true});\n clickEvent.button = 0;\n\n this.dispatchEvent(clickEvent);\n }\n\n // Boolean getters\n get accessKeyLabel() {\n const {accessKey} = this;\n return accessKey && `Alt+Shift+${accessKey}`;\n }\n get isContentEditable() { return this.hasAttribute('contenteditable'); }\n\n // Boolean Accessors\n get contentEditable() { return booleanAttribute.get(this, 'contenteditable'); }\n set contentEditable(value) { booleanAttribute.set(this, 'contenteditable', value); }\n get draggable() { return booleanAttribute.get(this, 'draggable'); }\n set draggable(value) { booleanAttribute.set(this, 'draggable', value); }\n get hidden() { return booleanAttribute.get(this, 'hidden'); }\n set hidden(value) { booleanAttribute.set(this, 'hidden', value); }\n get spellcheck() { return booleanAttribute.get(this, 'spellcheck'); }\n set spellcheck(value) { booleanAttribute.set(this, 'spellcheck', value); }\n\n // String Accessors\n get accessKey() { return stringAttribute.get(this, 'accesskey'); }\n set accessKey(value) { stringAttribute.set(this, 'accesskey', value); }\n get dir() { return stringAttribute.get(this, 'dir'); }\n set dir(value) { stringAttribute.set(this, 'dir', value); }\n get lang() { return stringAttribute.get(this, 'lang'); }\n set lang(value) { stringAttribute.set(this, 'lang', value); }\n get title() { return stringAttribute.get(this, 'title'); }\n set title(value) { stringAttribute.set(this, 'title', value); }\n\n // DOM Level 0\n get onabort() { return level0.get(this, 'onabort'); }\n set onabort(value) { level0.set(this, 'onabort', value); }\n\n get onblur() { return level0.get(this, 'onblur'); }\n set onblur(value) { level0.set(this, 'onblur', value); }\n\n get oncancel() { return level0.get(this, 'oncancel'); }\n set oncancel(value) { level0.set(this, 'oncancel', value); }\n\n get oncanplay() { return level0.get(this, 'oncanplay'); }\n set oncanplay(value) { level0.set(this, 'oncanplay', value); }\n\n get oncanplaythrough() { return level0.get(this, 'oncanplaythrough'); }\n set oncanplaythrough(value) { level0.set(this, 'oncanplaythrough', value); }\n\n get onchange() { return level0.get(this, 'onchange'); }\n set onchange(value) { level0.set(this, 'onchange', value); }\n\n get onclick() { return level0.get(this, 'onclick'); }\n set onclick(value) { level0.set(this, 'onclick', value); }\n\n get onclose() { return level0.get(this, 'onclose'); }\n set onclose(value) { level0.set(this, 'onclose', value); }\n\n get oncontextmenu() { return level0.get(this, 'oncontextmenu'); }\n set oncontextmenu(value) { level0.set(this, 'oncontextmenu', value); }\n\n get oncuechange() { return level0.get(this, 'oncuechange'); }\n set oncuechange(value) { level0.set(this, 'oncuechange', value); }\n\n get ondblclick() { return level0.get(this, 'ondblclick'); }\n set ondblclick(value) { level0.set(this, 'ondblclick', value); }\n\n get ondrag() { return level0.get(this, 'ondrag'); }\n set ondrag(value) { level0.set(this, 'ondrag', value); }\n\n get ondragend() { return level0.get(this, 'ondragend'); }\n set ondragend(value) { level0.set(this, 'ondragend', value); }\n\n get ondragenter() { return level0.get(this, 'ondragenter'); }\n set ondragenter(value) { level0.set(this, 'ondragenter', value); }\n\n get ondragleave() { return level0.get(this, 'ondragleave'); }\n set ondragleave(value) { level0.set(this, 'ondragleave', value); }\n\n get ondragover() { return level0.get(this, 'ondragover'); }\n set ondragover(value) { level0.set(this, 'ondragover', value); }\n\n get ondragstart() { return level0.get(this, 'ondragstart'); }\n set ondragstart(value) { level0.set(this, 'ondragstart', value); }\n\n get ondrop() { return level0.get(this, 'ondrop'); }\n set ondrop(value) { level0.set(this, 'ondrop', value); }\n\n get ondurationchange() { return level0.get(this, 'ondurationchange'); }\n set ondurationchange(value) { level0.set(this, 'ondurationchange', value); }\n\n get onemptied() { return level0.get(this, 'onemptied'); }\n set onemptied(value) { level0.set(this, 'onemptied', value); }\n\n get onended() { return level0.get(this, 'onended'); }\n set onended(value) { level0.set(this, 'onended', value); }\n\n get onerror() { return level0.get(this, 'onerror'); }\n set onerror(value) { level0.set(this, 'onerror', value); }\n\n get onfocus() { return level0.get(this, 'onfocus'); }\n set onfocus(value) { level0.set(this, 'onfocus', value); }\n\n get oninput() { return level0.get(this, 'oninput'); }\n set oninput(value) { level0.set(this, 'oninput', value); }\n\n get oninvalid() { return level0.get(this, 'oninvalid'); }\n set oninvalid(value) { level0.set(this, 'oninvalid', value); }\n\n get onkeydown() { return level0.get(this, 'onkeydown'); }\n set onkeydown(value) { level0.set(this, 'onkeydown', value); }\n\n get onkeypress() { return level0.get(this, 'onkeypress'); }\n set onkeypress(value) { level0.set(this, 'onkeypress', value); }\n\n get onkeyup() { return level0.get(this, 'onkeyup'); }\n set onkeyup(value) { level0.set(this, 'onkeyup', value); }\n\n get onload() { return level0.get(this, 'onload'); }\n set onload(value) { level0.set(this, 'onload', value); }\n\n get onloadeddata() { return level0.get(this, 'onloadeddata'); }\n set onloadeddata(value) { level0.set(this, 'onloadeddata', value); }\n\n get onloadedmetadata() { return level0.get(this, 'onloadedmetadata'); }\n set onloadedmetadata(value) { level0.set(this, 'onloadedmetadata', value); }\n\n get onloadstart() { return level0.get(this, 'onloadstart'); }\n set onloadstart(value) { level0.set(this, 'onloadstart', value); }\n\n get onmousedown() { return level0.get(this, 'onmousedown'); }\n set onmousedown(value) { level0.set(this, 'onmousedown', value); }\n\n get onmouseenter() { return level0.get(this, 'onmouseenter'); }\n set onmouseenter(value) { level0.set(this, 'onmouseenter', value); }\n\n get onmouseleave() { return level0.get(this, 'onmouseleave'); }\n set onmouseleave(value) { level0.set(this, 'onmouseleave', value); }\n\n get onmousemove() { return level0.get(this, 'onmousemove'); }\n set onmousemove(value) { level0.set(this, 'onmousemove', value); }\n\n get onmouseout() { return level0.get(this, 'onmouseout'); }\n set onmouseout(value) { level0.set(this, 'onmouseout', value); }\n\n get onmouseover() { return level0.get(this, 'onmouseover'); }\n set onmouseover(value) { level0.set(this, 'onmouseover', value); }\n\n get onmouseup() { return level0.get(this, 'onmouseup'); }\n set onmouseup(value) { level0.set(this, 'onmouseup', value); }\n\n get onmousewheel() { return level0.get(this, 'onmousewheel'); }\n set onmousewheel(value) { level0.set(this, 'onmousewheel', value); }\n\n get onpause() { return level0.get(this, 'onpause'); }\n set onpause(value) { level0.set(this, 'onpause', value); }\n\n get onplay() { return level0.get(this, 'onplay'); }\n set onplay(value) { level0.set(this, 'onplay', value); }\n\n get onplaying() { return level0.get(this, 'onplaying'); }\n set onplaying(value) { level0.set(this, 'onplaying', value); }\n\n get onprogress() { return level0.get(this, 'onprogress'); }\n set onprogress(value) { level0.set(this, 'onprogress', value); }\n\n get onratechange() { return level0.get(this, 'onratechange'); }\n set onratechange(value) { level0.set(this, 'onratechange', value); }\n\n get onreset() { return level0.get(this, 'onreset'); }\n set onreset(value) { level0.set(this, 'onreset', value); }\n\n get onresize() { return level0.get(this, 'onresize'); }\n set onresize(value) { level0.set(this, 'onresize', value); }\n\n get onscroll() { return level0.get(this, 'onscroll'); }\n set onscroll(value) { level0.set(this, 'onscroll', value); }\n\n get onseeked() { return level0.get(this, 'onseeked'); }\n set onseeked(value) { level0.set(this, 'onseeked', value); }\n\n get onseeking() { return level0.get(this, 'onseeking'); }\n set onseeking(value) { level0.set(this, 'onseeking', value); }\n\n get onselect() { return level0.get(this, 'onselect'); }\n set onselect(value) { level0.set(this, 'onselect', value); }\n\n get onshow() { return level0.get(this, 'onshow'); }\n set onshow(value) { level0.set(this, 'onshow', value); }\n\n get onstalled() { return level0.get(this, 'onstalled'); }\n set onstalled(value) { level0.set(this, 'onstalled', value); }\n\n get onsubmit() { return level0.get(this, 'onsubmit'); }\n set onsubmit(value) { level0.set(this, 'onsubmit', value); }\n\n get onsuspend() { return level0.get(this, 'onsuspend'); }\n set onsuspend(value) { level0.set(this, 'onsuspend', value); }\n\n get ontimeupdate() { return level0.get(this, 'ontimeupdate'); }\n set ontimeupdate(value) { level0.set(this, 'ontimeupdate', value); }\n\n get ontoggle() { return level0.get(this, 'ontoggle'); }\n set ontoggle(value) { level0.set(this, 'ontoggle', value); }\n\n get onvolumechange() { return level0.get(this, 'onvolumechange'); }\n set onvolumechange(value) { level0.set(this, 'onvolumechange', value); }\n\n get onwaiting() { return level0.get(this, 'onwaiting'); }\n set onwaiting(value) { level0.set(this, 'onwaiting', value); }\n\n get onauxclick() { return level0.get(this, 'onauxclick'); }\n set onauxclick(value) { level0.set(this, 'onauxclick', value); }\n\n get ongotpointercapture() { return level0.get(this, 'ongotpointercapture'); }\n set ongotpointercapture(value) { level0.set(this, 'ongotpointercapture', value); }\n\n get onlostpointercapture() { return level0.get(this, 'onlostpointercapture'); }\n set onlostpointercapture(value) { level0.set(this, 'onlostpointercapture', value); }\n\n get onpointercancel() { return level0.get(this, 'onpointercancel'); }\n set onpointercancel(value) { level0.set(this, 'onpointercancel', value); }\n\n get onpointerdown() { return level0.get(this, 'onpointerdown'); }\n set onpointerdown(value) { level0.set(this, 'onpointerdown', value); }\n\n get onpointerenter() { return level0.get(this, 'onpointerenter'); }\n set onpointerenter(value) { level0.set(this, 'onpointerenter', value); }\n\n get onpointerleave() { return level0.get(this, 'onpointerleave'); }\n set onpointerleave(value) { level0.set(this, 'onpointerleave', value); }\n\n get onpointermove() { return level0.get(this, 'onpointermove'); }\n set onpointermove(value) { level0.set(this, 'onpointermove', value); }\n\n get onpointerout() { return level0.get(this, 'onpointerout'); }\n set onpointerout(value) { level0.set(this, 'onpointerout', value); }\n\n get onpointerover() { return level0.get(this, 'onpointerover'); }\n set onpointerover(value) { level0.set(this, 'onpointerover', value); }\n\n get onpointerup() { return level0.get(this, 'onpointerup'); }\n set onpointerup(value) { level0.set(this, 'onpointerup', value); }\n /* c8 ignore stop */\n\n}\n","import {CONTENT, PRIVATE} from '../shared/symbols.js';\n\nimport {registerHTMLClass} from '../shared/register-html-class.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'template';\n\n/**\n * @implements globalThis.HTMLTemplateElement\n */\nclass HTMLTemplateElement extends HTMLElement {\n constructor(ownerDocument) {\n super(ownerDocument, tagName);\n const content = this.ownerDocument.createDocumentFragment();\n (this[CONTENT] = content)[PRIVATE] = this;\n }\n\n get content() {\n if (this.hasChildNodes() && !this[CONTENT].hasChildNodes()) {\n for (const node of this.childNodes)\n this[CONTENT].appendChild(node.cloneNode(true));\n }\n return this[CONTENT];\n }\n}\n\nregisterHTMLClass(tagName, HTMLTemplateElement);\n\nexport {HTMLTemplateElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLHtmlElement\n */\nexport class HTMLHtmlElement extends HTMLElement {\n constructor(ownerDocument, localName = 'html') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\nconst {toString} = HTMLElement.prototype;\n\nexport class TextElement extends HTMLElement {\n\n get innerHTML() { return this.textContent; }\n set innerHTML(html) { this.textContent = html; }\n\n toString() {\n const outerHTML = toString.call(this.cloneNode());\n return outerHTML.replace(/></, `>${this.textContent}<`);\n }\n}\n","import { booleanAttribute, stringAttribute } from '../shared/attributes.js';\nimport { registerHTMLClass } from '../shared/register-html-class.js';\n\nimport { TextElement } from './text-element.js';\n\nconst tagName = 'script';\n\n/**\n * @implements globalThis.HTMLScriptElement\n */\nclass HTMLScriptElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n get type() {\n return stringAttribute.get(this, 'type');\n }\n set type(value) {\n stringAttribute.set(this, 'type', value);\n }\n\n get src() {\n return stringAttribute.get(this, 'src');\n }\n set src(value) {\n stringAttribute.set(this, 'src', value);\n }\n\n get defer() {\n return booleanAttribute.get(this, 'defer');\n }\n\n set defer(value) {\n booleanAttribute.set(this, 'defer', value);\n }\n\n get crossOrigin() {\n return stringAttribute.get(this, 'crossorigin');\n }\n set crossOrigin(value) {\n stringAttribute.set(this, 'crossorigin', value);\n }\n\n get nomodule() {\n return booleanAttribute.get(this, 'nomodule');\n }\n set nomodule(value) {\n booleanAttribute.set(this, 'nomodule', value);\n }\n\n get referrerPolicy() {\n return stringAttribute.get(this, 'referrerpolicy');\n }\n set referrerPolicy(value) {\n stringAttribute.set(this, 'referrerpolicy', value);\n }\n\n get nonce() {\n return stringAttribute.get(this, 'nonce');\n }\n set nonce(value) {\n stringAttribute.set(this, 'nonce', value);\n }\n\n get async() {\n return booleanAttribute.get(this, 'async');\n }\n set async(value) {\n booleanAttribute.set(this, 'async', value);\n }\n\n get text() { return this.textContent; }\n set text(content) { this.textContent = content; }\n}\n\nregisterHTMLClass(tagName, HTMLScriptElement);\n\nexport { HTMLScriptElement };\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFrameElement\n */\nexport class HTMLFrameElement extends HTMLElement {\n constructor(ownerDocument, localName = 'frame') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'iframe';\n\n/**\n * @implements globalThis.HTMLIFrameElement\n */\nclass HTMLIFrameElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get src() { return stringAttribute.get(this, 'src'); }\n set src(value) { stringAttribute.set(this, 'src', value); }\n\n get srcdoc() { return stringAttribute.get(this, \"srcdoc\"); }\n set srcdoc(value) { stringAttribute.set(this, \"srcdoc\", value); }\n\n get name() { return stringAttribute.get(this, \"name\"); }\n set name(value) { stringAttribute.set(this, \"name\", value); }\n\n get allow() { return stringAttribute.get(this, \"allow\"); }\n set allow(value) { stringAttribute.set(this, \"allow\", value); }\n\n get allowFullscreen() { return booleanAttribute.get(this, \"allowfullscreen\"); }\n set allowFullscreen(value) { booleanAttribute.set(this, \"allowfullscreen\", value); }\n \n get referrerPolicy() { return stringAttribute.get(this, \"referrerpolicy\"); }\n set referrerPolicy(value) { stringAttribute.set(this, \"referrerpolicy\", value); }\n \n get loading() { return stringAttribute.get(this, \"loading\"); }\n set loading(value) { stringAttribute.set(this, \"loading\", value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLIFrameElement);\n\nexport {HTMLIFrameElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLObjectElement\n */\nexport class HTMLObjectElement extends HTMLElement {\n constructor(ownerDocument, localName = 'object') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLHeadElement\n */\nexport class HTMLHeadElement extends HTMLElement {\n constructor(ownerDocument, localName = 'head') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLBodyElement\n */\nexport class HTMLBodyElement extends HTMLElement {\n constructor(ownerDocument, localName = 'body') {\n super(ownerDocument, localName);\n }\n}\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#the-stylesheet-interface\n */\nCSSOM.StyleSheet = function StyleSheet() {\n\tthis.parentStyleSheet = null;\n};\n\n\n//.CommonJS\nexports.StyleSheet = CSSOM.StyleSheet;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#the-cssrule-interface\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSRule\n */\nCSSOM.CSSRule = function CSSRule() {\n\tthis.parentRule = null;\n\tthis.parentStyleSheet = null;\n};\n\nCSSOM.CSSRule.UNKNOWN_RULE = 0; // obsolete\nCSSOM.CSSRule.STYLE_RULE = 1;\nCSSOM.CSSRule.CHARSET_RULE = 2; // obsolete\nCSSOM.CSSRule.IMPORT_RULE = 3;\nCSSOM.CSSRule.MEDIA_RULE = 4;\nCSSOM.CSSRule.FONT_FACE_RULE = 5;\nCSSOM.CSSRule.PAGE_RULE = 6;\nCSSOM.CSSRule.KEYFRAMES_RULE = 7;\nCSSOM.CSSRule.KEYFRAME_RULE = 8;\nCSSOM.CSSRule.MARGIN_RULE = 9;\nCSSOM.CSSRule.NAMESPACE_RULE = 10;\nCSSOM.CSSRule.COUNTER_STYLE_RULE = 11;\nCSSOM.CSSRule.SUPPORTS_RULE = 12;\nCSSOM.CSSRule.DOCUMENT_RULE = 13;\nCSSOM.CSSRule.FONT_FEATURE_VALUES_RULE = 14;\nCSSOM.CSSRule.VIEWPORT_RULE = 15;\nCSSOM.CSSRule.REGION_STYLE_RULE = 16;\n\n\nCSSOM.CSSRule.prototype = {\n\tconstructor: CSSOM.CSSRule\n\t//FIXME\n};\n\n\n//.CommonJS\nexports.CSSRule = CSSOM.CSSRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#cssstylerule\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleRule\n */\nCSSOM.CSSStyleRule = function CSSStyleRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.selectorText = \"\";\n\tthis.style = new CSSOM.CSSStyleDeclaration();\n\tthis.style.parentRule = this;\n};\n\nCSSOM.CSSStyleRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSStyleRule.prototype.constructor = CSSOM.CSSStyleRule;\nCSSOM.CSSStyleRule.prototype.type = 1;\n\nObject.defineProperty(CSSOM.CSSStyleRule.prototype, \"cssText\", {\n\tget: function() {\n\t\tvar text;\n\t\tif (this.selectorText) {\n\t\t\ttext = this.selectorText + \" {\" + this.style.cssText + \"}\";\n\t\t} else {\n\t\t\ttext = \"\";\n\t\t}\n\t\treturn text;\n\t},\n\tset: function(cssText) {\n\t\tvar rule = CSSOM.CSSStyleRule.parse(cssText);\n\t\tthis.style = rule.style;\n\t\tthis.selectorText = rule.selectorText;\n\t}\n});\n\n\n/**\n * NON-STANDARD\n * lightweight version of parse.js.\n * @param {string} ruleText\n * @return CSSStyleRule\n */\nCSSOM.CSSStyleRule.parse = function(ruleText) {\n\tvar i = 0;\n\tvar state = \"selector\";\n\tvar index;\n\tvar j = i;\n\tvar buffer = \"\";\n\n\tvar SIGNIFICANT_WHITESPACE = {\n\t\t\"selector\": true,\n\t\t\"value\": true\n\t};\n\n\tvar styleRule = new CSSOM.CSSStyleRule();\n\tvar name, priority=\"\";\n\n\tfor (var character; (character = ruleText.charAt(i)); i++) {\n\n\t\tswitch (character) {\n\n\t\tcase \" \":\n\t\tcase \"\\t\":\n\t\tcase \"\\r\":\n\t\tcase \"\\n\":\n\t\tcase \"\\f\":\n\t\t\tif (SIGNIFICANT_WHITESPACE[state]) {\n\t\t\t\t// Squash 2 or more white-spaces in the row into 1\n\t\t\t\tswitch (ruleText.charAt(i - 1)) {\n\t\t\t\t\tcase \" \":\n\t\t\t\t\tcase \"\\t\":\n\t\t\t\t\tcase \"\\r\":\n\t\t\t\t\tcase \"\\n\":\n\t\t\t\t\tcase \"\\f\":\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbuffer += \" \";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// String\n\t\tcase '\"':\n\t\t\tj = i + 1;\n\t\t\tindex = ruleText.indexOf('\"', j) + 1;\n\t\t\tif (!index) {\n\t\t\t\tthrow '\" is missing';\n\t\t\t}\n\t\t\tbuffer += ruleText.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tbreak;\n\n\t\tcase \"'\":\n\t\t\tj = i + 1;\n\t\t\tindex = ruleText.indexOf(\"'\", j) + 1;\n\t\t\tif (!index) {\n\t\t\t\tthrow \"' is missing\";\n\t\t\t}\n\t\t\tbuffer += ruleText.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tbreak;\n\n\t\t// Comment\n\t\tcase \"/\":\n\t\t\tif (ruleText.charAt(i + 1) === \"*\") {\n\t\t\t\ti += 2;\n\t\t\t\tindex = ruleText.indexOf(\"*/\", i);\n\t\t\t\tif (index === -1) {\n\t\t\t\t\tthrow new SyntaxError(\"Missing */\");\n\t\t\t\t} else {\n\t\t\t\t\ti = index + 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"{\":\n\t\t\tif (state === \"selector\") {\n\t\t\t\tstyleRule.selectorText = buffer.trim();\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"name\";\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \":\":\n\t\t\tif (state === \"name\") {\n\t\t\t\tname = buffer.trim();\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"value\";\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"!\":\n\t\t\tif (state === \"value\" && ruleText.indexOf(\"!important\", i) === i) {\n\t\t\t\tpriority = \"important\";\n\t\t\t\ti += \"important\".length;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \";\":\n\t\t\tif (state === \"value\") {\n\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\tpriority = \"\";\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"name\";\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"}\":\n\t\t\tif (state === \"value\") {\n\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\tpriority = \"\";\n\t\t\t\tbuffer = \"\";\n\t\t\t} else if (state === \"name\") {\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tstate = \"selector\";\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\n\t\t}\n\t}\n\n\treturn styleRule;\n\n};\n\n\n//.CommonJS\nexports.CSSStyleRule = CSSOM.CSSStyleRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tStyleSheet: require(\"./StyleSheet\").StyleSheet,\n\tCSSStyleRule: require(\"./CSSStyleRule\").CSSStyleRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet\n */\nCSSOM.CSSStyleSheet = function CSSStyleSheet() {\n\tCSSOM.StyleSheet.call(this);\n\tthis.cssRules = [];\n};\n\n\nCSSOM.CSSStyleSheet.prototype = new CSSOM.StyleSheet();\nCSSOM.CSSStyleSheet.prototype.constructor = CSSOM.CSSStyleSheet;\n\n\n/**\n * Used to insert a new rule into the style sheet. The new rule now becomes part of the cascade.\n *\n * sheet = new Sheet(\"body {margin: 0}\")\n * sheet.toString()\n * -> \"body{margin:0;}\"\n * sheet.insertRule(\"img {border: none}\", 0)\n * -> 0\n * sheet.toString()\n * -> \"img{border:none;}body{margin:0;}\"\n *\n * @param {string} rule\n * @param {number} index\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet-insertRule\n * @return {number} The index within the style sheet's rule collection of the newly inserted rule.\n */\nCSSOM.CSSStyleSheet.prototype.insertRule = function(rule, index) {\n\tif (index < 0 || index > this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tvar cssRule = CSSOM.parse(rule).cssRules[0];\n\tcssRule.parentStyleSheet = this;\n\tthis.cssRules.splice(index, 0, cssRule);\n\treturn index;\n};\n\n\n/**\n * Used to delete a rule from the style sheet.\n *\n * sheet = new Sheet(\"img{border:none} body{margin:0}\")\n * sheet.toString()\n * -> \"img{border:none;}body{margin:0;}\"\n * sheet.deleteRule(0)\n * sheet.toString()\n * -> \"body{margin:0;}\"\n *\n * @param {number} index within the style sheet's rule list of the rule to remove.\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet-deleteRule\n */\nCSSOM.CSSStyleSheet.prototype.deleteRule = function(index) {\n\tif (index < 0 || index >= this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tthis.cssRules.splice(index, 1);\n};\n\n\n/**\n * NON-STANDARD\n * @return {string} serialize stylesheet\n */\nCSSOM.CSSStyleSheet.prototype.toString = function() {\n\tvar result = \"\";\n\tvar rules = this.cssRules;\n\tfor (var i=0; i<rules.length; i++) {\n\t\tresult += rules[i].cssText + \"\\n\";\n\t}\n\treturn result;\n};\n\n\n//.CommonJS\nexports.CSSStyleSheet = CSSOM.CSSStyleSheet;\nCSSOM.parse = require('./parse').parse; // Cannot be included sooner due to the mutual dependency between parse.js and CSSStyleSheet.js\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#the-medialist-interface\n */\nCSSOM.MediaList = function MediaList(){\n\tthis.length = 0;\n};\n\nCSSOM.MediaList.prototype = {\n\n\tconstructor: CSSOM.MediaList,\n\n\t/**\n\t * @return {string}\n\t */\n\tget mediaText() {\n\t\treturn Array.prototype.join.call(this, \", \");\n\t},\n\n\t/**\n\t * @param {string} value\n\t */\n\tset mediaText(value) {\n\t\tvar values = value.split(\",\");\n\t\tvar length = this.length = values.length;\n\t\tfor (var i=0; i<length; i++) {\n\t\t\tthis[i] = values[i].trim();\n\t\t}\n\t},\n\n\t/**\n\t * @param {string} medium\n\t */\n\tappendMedium: function(medium) {\n\t\tif (Array.prototype.indexOf.call(this, medium) === -1) {\n\t\t\tthis[this.length] = medium;\n\t\t\tthis.length++;\n\t\t}\n\t},\n\n\t/**\n\t * @param {string} medium\n\t */\n\tdeleteMedium: function(medium) {\n\t\tvar index = Array.prototype.indexOf.call(this, medium);\n\t\tif (index !== -1) {\n\t\t\tArray.prototype.splice.call(this, index, 1);\n\t\t}\n\t}\n\n};\n\n\n//.CommonJS\nexports.MediaList = CSSOM.MediaList;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSStyleSheet: require(\"./CSSStyleSheet\").CSSStyleSheet,\n\tMediaList: require(\"./MediaList\").MediaList\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#cssimportrule\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSImportRule\n */\nCSSOM.CSSImportRule = function CSSImportRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.href = \"\";\n\tthis.media = new CSSOM.MediaList();\n\tthis.styleSheet = new CSSOM.CSSStyleSheet();\n};\n\nCSSOM.CSSImportRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSImportRule.prototype.constructor = CSSOM.CSSImportRule;\nCSSOM.CSSImportRule.prototype.type = 3;\n\nObject.defineProperty(CSSOM.CSSImportRule.prototype, \"cssText\", {\n get: function() {\n var mediaText = this.media.mediaText;\n return \"@import url(\" + this.href + \")\" + (mediaText ? \" \" + mediaText : \"\") + \";\";\n },\n set: function(cssText) {\n var i = 0;\n\n /**\n * @import url(partial.css) screen, handheld;\n * || |\n * after-import media\n * |\n * url\n */\n var state = '';\n\n var buffer = '';\n var index;\n for (var character; (character = cssText.charAt(i)); i++) {\n\n switch (character) {\n case ' ':\n case '\\t':\n case '\\r':\n case '\\n':\n case '\\f':\n if (state === 'after-import') {\n state = 'url';\n } else {\n buffer += character;\n }\n break;\n\n case '@':\n if (!state && cssText.indexOf('@import', i) === i) {\n state = 'after-import';\n i += 'import'.length;\n buffer = '';\n }\n break;\n\n case 'u':\n if (state === 'url' && cssText.indexOf('url(', i) === i) {\n index = cssText.indexOf(')', i + 1);\n if (index === -1) {\n throw i + ': \")\" not found';\n }\n i += 'url('.length;\n var url = cssText.slice(i, index);\n if (url[0] === url[url.length - 1]) {\n if (url[0] === '\"' || url[0] === \"'\") {\n url = url.slice(1, -1);\n }\n }\n this.href = url;\n i = index;\n state = 'media';\n }\n break;\n\n case '\"':\n if (state === 'url') {\n index = cssText.indexOf('\"', i + 1);\n if (!index) {\n throw i + \": '\\\"' not found\";\n }\n this.href = cssText.slice(i + 1, index);\n i = index;\n state = 'media';\n }\n break;\n\n case \"'\":\n if (state === 'url') {\n index = cssText.indexOf(\"'\", i + 1);\n if (!index) {\n throw i + ': \"\\'\" not found';\n }\n this.href = cssText.slice(i + 1, index);\n i = index;\n state = 'media';\n }\n break;\n\n case ';':\n if (state === 'media') {\n if (buffer) {\n this.media.mediaText = buffer.trim();\n }\n }\n break;\n\n default:\n if (state === 'media') {\n buffer += character;\n }\n break;\n }\n }\n }\n});\n\n\n//.CommonJS\nexports.CSSImportRule = CSSOM.CSSImportRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/cssom/#the-cssgroupingrule-interface\n */\nCSSOM.CSSGroupingRule = function CSSGroupingRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.cssRules = [];\n};\n\nCSSOM.CSSGroupingRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSGroupingRule.prototype.constructor = CSSOM.CSSGroupingRule;\n\n\n/**\n * Used to insert a new CSS rule to a list of CSS rules.\n *\n * @example\n * cssGroupingRule.cssText\n * -> \"body{margin:0;}\"\n * cssGroupingRule.insertRule(\"img{border:none;}\", 1)\n * -> 1\n * cssGroupingRule.cssText\n * -> \"body{margin:0;}img{border:none;}\"\n *\n * @param {string} rule\n * @param {number} [index]\n * @see https://www.w3.org/TR/cssom-1/#dom-cssgroupingrule-insertrule\n * @return {number} The index within the grouping rule's collection of the newly inserted rule.\n */\n CSSOM.CSSGroupingRule.prototype.insertRule = function insertRule(rule, index) {\n\tif (index < 0 || index > this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tvar cssRule = CSSOM.parse(rule).cssRules[0];\n\tcssRule.parentRule = this;\n\tthis.cssRules.splice(index, 0, cssRule);\n\treturn index;\n};\n\n/**\n * Used to delete a rule from the grouping rule.\n *\n * cssGroupingRule.cssText\n * -> \"img{border:none;}body{margin:0;}\"\n * cssGroupingRule.deleteRule(0)\n * cssGroupingRule.cssText\n * -> \"body{margin:0;}\"\n *\n * @param {number} index within the grouping rule's rule list of the rule to remove.\n * @see https://www.w3.org/TR/cssom-1/#dom-cssgroupingrule-deleterule\n */\n CSSOM.CSSGroupingRule.prototype.deleteRule = function deleteRule(index) {\n\tif (index < 0 || index >= this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tthis.cssRules.splice(index, 1)[0].parentRule = null;\n};\n\n//.CommonJS\nexports.CSSGroupingRule = CSSOM.CSSGroupingRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n CSSRule: require(\"./CSSRule\").CSSRule,\n CSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://www.w3.org/TR/css-conditional-3/#the-cssconditionrule-interface\n */\nCSSOM.CSSConditionRule = function CSSConditionRule() {\n CSSOM.CSSGroupingRule.call(this);\n this.cssRules = [];\n};\n\nCSSOM.CSSConditionRule.prototype = new CSSOM.CSSGroupingRule();\nCSSOM.CSSConditionRule.prototype.constructor = CSSOM.CSSConditionRule;\nCSSOM.CSSConditionRule.prototype.conditionText = ''\nCSSOM.CSSConditionRule.prototype.cssText = ''\n\n//.CommonJS\nexports.CSSConditionRule = CSSOM.CSSConditionRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n\tCSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule,\n\tMediaList: require(\"./MediaList\").MediaList\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#cssmediarule\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSMediaRule\n */\nCSSOM.CSSMediaRule = function CSSMediaRule() {\n\tCSSOM.CSSConditionRule.call(this);\n\tthis.media = new CSSOM.MediaList();\n};\n\nCSSOM.CSSMediaRule.prototype = new CSSOM.CSSConditionRule();\nCSSOM.CSSMediaRule.prototype.constructor = CSSOM.CSSMediaRule;\nCSSOM.CSSMediaRule.prototype.type = 4;\n\n// https://opensource.apple.com/source/WebCore/WebCore-7611.1.21.161.3/css/CSSMediaRule.cpp\nObject.defineProperties(CSSOM.CSSMediaRule.prototype, {\n \"conditionText\": {\n get: function() {\n return this.media.mediaText;\n },\n set: function(value) {\n this.media.mediaText = value;\n },\n configurable: true,\n enumerable: true\n },\n \"cssText\": {\n get: function() {\n var cssTexts = [];\n for (var i=0, length=this.cssRules.length; i < length; i++) {\n cssTexts.push(this.cssRules[i].cssText);\n }\n return \"@media \" + this.media.mediaText + \" {\" + cssTexts.join(\"\") + \"}\";\n },\n configurable: true,\n enumerable: true\n }\n});\n\n\n//.CommonJS\nexports.CSSMediaRule = CSSOM.CSSMediaRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n CSSRule: require(\"./CSSRule\").CSSRule,\n CSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n CSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/css-conditional-3/#the-csssupportsrule-interface\n */\nCSSOM.CSSSupportsRule = function CSSSupportsRule() {\n CSSOM.CSSConditionRule.call(this);\n};\n\nCSSOM.CSSSupportsRule.prototype = new CSSOM.CSSConditionRule();\nCSSOM.CSSSupportsRule.prototype.constructor = CSSOM.CSSSupportsRule;\nCSSOM.CSSSupportsRule.prototype.type = 12;\n\nObject.defineProperty(CSSOM.CSSSupportsRule.prototype, \"cssText\", {\n get: function() {\n var cssTexts = [];\n\n for (var i = 0, length = this.cssRules.length; i < length; i++) {\n cssTexts.push(this.cssRules[i].cssText);\n }\n\n return \"@supports \" + this.conditionText + \" {\" + cssTexts.join(\"\") + \"}\";\n }\n});\n\n//.CommonJS\nexports.CSSSupportsRule = CSSOM.CSSSupportsRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#css-font-face-rule\n */\nCSSOM.CSSFontFaceRule = function CSSFontFaceRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.style = new CSSOM.CSSStyleDeclaration();\n\tthis.style.parentRule = this;\n};\n\nCSSOM.CSSFontFaceRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSFontFaceRule.prototype.constructor = CSSOM.CSSFontFaceRule;\nCSSOM.CSSFontFaceRule.prototype.type = 5;\n//FIXME\n//CSSOM.CSSFontFaceRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSFontFaceRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\n// http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSFontFaceRule.cpp\nObject.defineProperty(CSSOM.CSSFontFaceRule.prototype, \"cssText\", {\n get: function() {\n return \"@font-face {\" + this.style.cssText + \"}\";\n }\n});\n\n\n//.CommonJS\nexports.CSSFontFaceRule = CSSOM.CSSFontFaceRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/shadow-dom/#host-at-rule\n */\nCSSOM.CSSHostRule = function CSSHostRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.cssRules = [];\n};\n\nCSSOM.CSSHostRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSHostRule.prototype.constructor = CSSOM.CSSHostRule;\nCSSOM.CSSHostRule.prototype.type = 1001;\n//FIXME\n//CSSOM.CSSHostRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSHostRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\nObject.defineProperty(CSSOM.CSSHostRule.prototype, \"cssText\", {\n\tget: function() {\n\t\tvar cssTexts = [];\n\t\tfor (var i=0, length=this.cssRules.length; i < length; i++) {\n\t\t\tcssTexts.push(this.cssRules[i].cssText);\n\t\t}\n\t\treturn \"@host {\" + cssTexts.join(\"\") + \"}\";\n\t}\n});\n\n\n//.CommonJS\nexports.CSSHostRule = CSSOM.CSSHostRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSStyleDeclaration: require('./CSSStyleDeclaration').CSSStyleDeclaration\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/css3-animations/#DOM-CSSKeyframeRule\n */\nCSSOM.CSSKeyframeRule = function CSSKeyframeRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.keyText = '';\n\tthis.style = new CSSOM.CSSStyleDeclaration();\n\tthis.style.parentRule = this;\n};\n\nCSSOM.CSSKeyframeRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSKeyframeRule.prototype.constructor = CSSOM.CSSKeyframeRule;\nCSSOM.CSSKeyframeRule.prototype.type = 8;\n//FIXME\n//CSSOM.CSSKeyframeRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSKeyframeRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\n// http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSKeyframeRule.cpp\nObject.defineProperty(CSSOM.CSSKeyframeRule.prototype, \"cssText\", {\n get: function() {\n return this.keyText + \" {\" + this.style.cssText + \"} \";\n }\n});\n\n\n//.CommonJS\nexports.CSSKeyframeRule = CSSOM.CSSKeyframeRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/css3-animations/#DOM-CSSKeyframesRule\n */\nCSSOM.CSSKeyframesRule = function CSSKeyframesRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.name = '';\n\tthis.cssRules = [];\n};\n\nCSSOM.CSSKeyframesRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSKeyframesRule.prototype.constructor = CSSOM.CSSKeyframesRule;\nCSSOM.CSSKeyframesRule.prototype.type = 7;\n//FIXME\n//CSSOM.CSSKeyframesRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSKeyframesRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\n// http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSKeyframesRule.cpp\nObject.defineProperty(CSSOM.CSSKeyframesRule.prototype, \"cssText\", {\n get: function() {\n var cssTexts = [];\n for (var i=0, length=this.cssRules.length; i < length; i++) {\n cssTexts.push(\" \" + this.cssRules[i].cssText);\n }\n return \"@\" + (this._vendorPrefix || '') + \"keyframes \" + this.name + \" { \\n\" + cssTexts.join(\"\\n\") + \"\\n}\";\n }\n});\n\n\n//.CommonJS\nexports.CSSKeyframesRule = CSSOM.CSSKeyframesRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSValue\n *\n * TODO: add if needed\n */\nCSSOM.CSSValue = function CSSValue() {\n};\n\nCSSOM.CSSValue.prototype = {\n\tconstructor: CSSOM.CSSValue,\n\n\t// @see: http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSValue\n\tset cssText(text) {\n\t\tvar name = this._getConstructorName();\n\n\t\tthrow new Error('DOMException: property \"cssText\" of \"' + name + '\" is readonly and can not be replaced with \"' + text + '\"!');\n\t},\n\n\tget cssText() {\n\t\tvar name = this._getConstructorName();\n\n\t\tthrow new Error('getter \"cssText\" of \"' + name + '\" is not implemented!');\n\t},\n\n\t_getConstructorName: function() {\n\t\tvar s = this.constructor.toString(),\n\t\t\t\tc = s.match(/function\\s([^\\(]+)/),\n\t\t\t\tname = c[1];\n\n\t\treturn name;\n\t}\n};\n\n\n//.CommonJS\nexports.CSSValue = CSSOM.CSSValue;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSValue: require('./CSSValue').CSSValue\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://msdn.microsoft.com/en-us/library/ms537634(v=vs.85).aspx\n *\n */\nCSSOM.CSSValueExpression = function CSSValueExpression(token, idx) {\n\tthis._token = token;\n\tthis._idx = idx;\n};\n\nCSSOM.CSSValueExpression.prototype = new CSSOM.CSSValue();\nCSSOM.CSSValueExpression.prototype.constructor = CSSOM.CSSValueExpression;\n\n/**\n * parse css expression() value\n *\n * @return {Object}\n * - error:\n * or\n * - idx:\n * - expression:\n *\n * Example:\n *\n * .selector {\n *\t\tzoom: expression(documentElement.clientWidth > 1000 ? '1000px' : 'auto');\n * }\n */\nCSSOM.CSSValueExpression.prototype.parse = function() {\n\tvar token = this._token,\n\t\t\tidx = this._idx;\n\n\tvar character = '',\n\t\t\texpression = '',\n\t\t\terror = '',\n\t\t\tinfo,\n\t\t\tparen = [];\n\n\n\tfor (; ; ++idx) {\n\t\tcharacter = token.charAt(idx);\n\n\t\t// end of token\n\t\tif (character === '') {\n\t\t\terror = 'css expression error: unfinished expression!';\n\t\t\tbreak;\n\t\t}\n\n\t\tswitch(character) {\n\t\t\tcase '(':\n\t\t\t\tparen.push(character);\n\t\t\t\texpression += character;\n\t\t\t\tbreak;\n\n\t\t\tcase ')':\n\t\t\t\tparen.pop(character);\n\t\t\t\texpression += character;\n\t\t\t\tbreak;\n\n\t\t\tcase '/':\n\t\t\t\tif ((info = this._parseJSComment(token, idx))) { // comment?\n\t\t\t\t\tif (info.error) {\n\t\t\t\t\t\terror = 'css expression error: unfinished comment in expression!';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tidx = info.idx;\n\t\t\t\t\t\t// ignore the comment\n\t\t\t\t\t}\n\t\t\t\t} else if ((info = this._parseJSRexExp(token, idx))) { // regexp\n\t\t\t\t\tidx = info.idx;\n\t\t\t\t\texpression += info.text;\n\t\t\t\t} else { // other\n\t\t\t\t\texpression += character;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"'\":\n\t\t\tcase '\"':\n\t\t\t\tinfo = this._parseJSString(token, idx, character);\n\t\t\t\tif (info) { // string\n\t\t\t\t\tidx = info.idx;\n\t\t\t\t\texpression += info.text;\n\t\t\t\t} else {\n\t\t\t\t\texpression += character;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\texpression += character;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (error) {\n\t\t\tbreak;\n\t\t}\n\n\t\t// end of expression\n\t\tif (paren.length === 0) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tvar ret;\n\tif (error) {\n\t\tret = {\n\t\t\terror: error\n\t\t};\n\t} else {\n\t\tret = {\n\t\t\tidx: idx,\n\t\t\texpression: expression\n\t\t};\n\t}\n\n\treturn ret;\n};\n\n\n/**\n *\n * @return {Object|false}\n * - idx:\n * - text:\n * or\n * - error:\n * or\n * false\n *\n */\nCSSOM.CSSValueExpression.prototype._parseJSComment = function(token, idx) {\n\tvar nextChar = token.charAt(idx + 1),\n\t\t\ttext;\n\n\tif (nextChar === '/' || nextChar === '*') {\n\t\tvar startIdx = idx,\n\t\t\t\tendIdx,\n\t\t\t\tcommentEndChar;\n\n\t\tif (nextChar === '/') { // line comment\n\t\t\tcommentEndChar = '\\n';\n\t\t} else if (nextChar === '*') { // block comment\n\t\t\tcommentEndChar = '*/';\n\t\t}\n\n\t\tendIdx = token.indexOf(commentEndChar, startIdx + 1 + 1);\n\t\tif (endIdx !== -1) {\n\t\t\tendIdx = endIdx + commentEndChar.length - 1;\n\t\t\ttext = token.substring(idx, endIdx + 1);\n\t\t\treturn {\n\t\t\t\tidx: endIdx,\n\t\t\t\ttext: text\n\t\t\t};\n\t\t} else {\n\t\t\tvar error = 'css expression error: unfinished comment in expression!';\n\t\t\treturn {\n\t\t\t\terror: error\n\t\t\t};\n\t\t}\n\t} else {\n\t\treturn false;\n\t}\n};\n\n\n/**\n *\n * @return {Object|false}\n *\t\t\t\t\t- idx:\n *\t\t\t\t\t- text:\n *\t\t\t\t\tor \n *\t\t\t\t\tfalse\n *\n */\nCSSOM.CSSValueExpression.prototype._parseJSString = function(token, idx, sep) {\n\tvar endIdx = this._findMatchedIdx(token, idx, sep),\n\t\t\ttext;\n\n\tif (endIdx === -1) {\n\t\treturn false;\n\t} else {\n\t\ttext = token.substring(idx, endIdx + sep.length);\n\n\t\treturn {\n\t\t\tidx: endIdx,\n\t\t\ttext: text\n\t\t};\n\t}\n};\n\n\n/**\n * parse regexp in css expression\n *\n * @return {Object|false}\n *\t\t\t\t- idx:\n *\t\t\t\t- regExp:\n *\t\t\t\tor \n *\t\t\t\tfalse\n */\n\n/*\n\nall legal RegExp\n \n/a/\n(/a/)\n[/a/]\n[12, /a/]\n\n!/a/\n\n+/a/\n-/a/\n* /a/\n/ /a/\n%/a/\n\n===/a/\n!==/a/\n==/a/\n!=/a/\n>/a/\n>=/a/\n</a/\n<=/a/\n\n&/a/\n|/a/\n^/a/\n~/a/\n<</a/\n>>/a/\n>>>/a/\n\n&&/a/\n||/a/\n?/a/\n=/a/\n,/a/\n\n\t\tdelete /a/\n\t\t\t\tin /a/\ninstanceof /a/\n\t\t\t\tnew /a/\n\t\ttypeof /a/\n\t\t\tvoid /a/\n\n*/\nCSSOM.CSSValueExpression.prototype._parseJSRexExp = function(token, idx) {\n\tvar before = token.substring(0, idx).replace(/\\s+$/, \"\"),\n\t\t\tlegalRegx = [\n\t\t\t\t/^$/,\n\t\t\t\t/\\($/,\n\t\t\t\t/\\[$/,\n\t\t\t\t/\\!$/,\n\t\t\t\t/\\+$/,\n\t\t\t\t/\\-$/,\n\t\t\t\t/\\*$/,\n\t\t\t\t/\\/\\s+/,\n\t\t\t\t/\\%$/,\n\t\t\t\t/\\=$/,\n\t\t\t\t/\\>$/,\n\t\t\t\t/<$/,\n\t\t\t\t/\\&$/,\n\t\t\t\t/\\|$/,\n\t\t\t\t/\\^$/,\n\t\t\t\t/\\~$/,\n\t\t\t\t/\\?$/,\n\t\t\t\t/\\,$/,\n\t\t\t\t/delete$/,\n\t\t\t\t/in$/,\n\t\t\t\t/instanceof$/,\n\t\t\t\t/new$/,\n\t\t\t\t/typeof$/,\n\t\t\t\t/void$/\n\t\t\t];\n\n\tvar isLegal = legalRegx.some(function(reg) {\n\t\treturn reg.test(before);\n\t});\n\n\tif (!isLegal) {\n\t\treturn false;\n\t} else {\n\t\tvar sep = '/';\n\n\t\t// same logic as string\n\t\treturn this._parseJSString(token, idx, sep);\n\t}\n};\n\n\n/**\n *\n * find next sep(same line) index in `token`\n *\n * @return {Number}\n *\n */\nCSSOM.CSSValueExpression.prototype._findMatchedIdx = function(token, idx, sep) {\n\tvar startIdx = idx,\n\t\t\tendIdx;\n\n\tvar NOT_FOUND = -1;\n\n\twhile(true) {\n\t\tendIdx = token.indexOf(sep, startIdx + 1);\n\n\t\tif (endIdx === -1) { // not found\n\t\t\tendIdx = NOT_FOUND;\n\t\t\tbreak;\n\t\t} else {\n\t\t\tvar text = token.substring(idx + 1, endIdx),\n\t\t\t\t\tmatched = text.match(/\\\\+$/);\n\t\t\tif (!matched || matched[0] % 2 === 0) { // not escaped\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tstartIdx = endIdx;\n\t\t\t}\n\t\t}\n\t}\n\n\t// boundary must be in the same line(js sting or regexp)\n\tvar nextNewLineIdx = token.indexOf('\\n', idx + 1);\n\tif (nextNewLineIdx < endIdx) {\n\t\tendIdx = NOT_FOUND;\n\t}\n\n\n\treturn endIdx;\n};\n\n\n\n\n//.CommonJS\nexports.CSSValueExpression = CSSOM.CSSValueExpression;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://developer.mozilla.org/en/CSS/@-moz-document\n */\nCSSOM.MatcherList = function MatcherList(){\n this.length = 0;\n};\n\nCSSOM.MatcherList.prototype = {\n\n constructor: CSSOM.MatcherList,\n\n /**\n * @return {string}\n */\n get matcherText() {\n return Array.prototype.join.call(this, \", \");\n },\n\n /**\n * @param {string} value\n */\n set matcherText(value) {\n // just a temporary solution, actually it may be wrong by just split the value with ',', because a url can include ','.\n var values = value.split(\",\");\n var length = this.length = values.length;\n for (var i=0; i<length; i++) {\n this[i] = values[i].trim();\n }\n },\n\n /**\n * @param {string} matcher\n */\n appendMatcher: function(matcher) {\n if (Array.prototype.indexOf.call(this, matcher) === -1) {\n this[this.length] = matcher;\n this.length++;\n }\n },\n\n /**\n * @param {string} matcher\n */\n deleteMatcher: function(matcher) {\n var index = Array.prototype.indexOf.call(this, matcher);\n if (index !== -1) {\n Array.prototype.splice.call(this, index, 1);\n }\n }\n\n};\n\n\n//.CommonJS\nexports.MatcherList = CSSOM.MatcherList;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n CSSRule: require(\"./CSSRule\").CSSRule,\n MatcherList: require(\"./MatcherList\").MatcherList\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://developer.mozilla.org/en/CSS/@-moz-document\n */\nCSSOM.CSSDocumentRule = function CSSDocumentRule() {\n CSSOM.CSSRule.call(this);\n this.matcher = new CSSOM.MatcherList();\n this.cssRules = [];\n};\n\nCSSOM.CSSDocumentRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSDocumentRule.prototype.constructor = CSSOM.CSSDocumentRule;\nCSSOM.CSSDocumentRule.prototype.type = 10;\n//FIXME\n//CSSOM.CSSDocumentRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSDocumentRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\nObject.defineProperty(CSSOM.CSSDocumentRule.prototype, \"cssText\", {\n get: function() {\n var cssTexts = [];\n for (var i=0, length=this.cssRules.length; i < length; i++) {\n cssTexts.push(this.cssRules[i].cssText);\n }\n return \"@-moz-document \" + this.matcher.matcherText + \" {\" + cssTexts.join(\"\") + \"}\";\n }\n});\n\n\n//.CommonJS\nexports.CSSDocumentRule = CSSOM.CSSDocumentRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @param {string} token\n */\nCSSOM.parse = function parse(token) {\n\n\tvar i = 0;\n\n\t/**\n\t\t\"before-selector\" or\n\t\t\"selector\" or\n\t\t\"atRule\" or\n\t\t\"atBlock\" or\n\t\t\"conditionBlock\" or\n\t\t\"before-name\" or\n\t\t\"name\" or\n\t\t\"before-value\" or\n\t\t\"value\"\n\t*/\n\tvar state = \"before-selector\";\n\n\tvar index;\n\tvar buffer = \"\";\n\tvar valueParenthesisDepth = 0;\n\n\tvar SIGNIFICANT_WHITESPACE = {\n\t\t\"selector\": true,\n\t\t\"value\": true,\n\t\t\"value-parenthesis\": true,\n\t\t\"atRule\": true,\n\t\t\"importRule-begin\": true,\n\t\t\"importRule\": true,\n\t\t\"atBlock\": true,\n\t\t\"conditionBlock\": true,\n\t\t'documentRule-begin': true\n\t};\n\n\tvar styleSheet = new CSSOM.CSSStyleSheet();\n\n\t// @type CSSStyleSheet|CSSMediaRule|CSSSupportsRule|CSSFontFaceRule|CSSKeyframesRule|CSSDocumentRule\n\tvar currentScope = styleSheet;\n\n\t// @type CSSMediaRule|CSSSupportsRule|CSSKeyframesRule|CSSDocumentRule\n\tvar parentRule;\n\n\tvar ancestorRules = [];\n\tvar hasAncestors = false;\n\tvar prevScope;\n\n\tvar name, priority=\"\", styleRule, mediaRule, supportsRule, importRule, fontFaceRule, keyframesRule, documentRule, hostRule;\n\n\tvar atKeyframesRegExp = /@(-(?:\\w+-)+)?keyframes/g;\n\n\tvar parseError = function(message) {\n\t\tvar lines = token.substring(0, i).split('\\n');\n\t\tvar lineCount = lines.length;\n\t\tvar charCount = lines.pop().length + 1;\n\t\tvar error = new Error(message + ' (line ' + lineCount + ', char ' + charCount + ')');\n\t\terror.line = lineCount;\n\t\t/* jshint sub : true */\n\t\terror['char'] = charCount;\n\t\terror.styleSheet = styleSheet;\n\t\tthrow error;\n\t};\n\n\tfor (var character; (character = token.charAt(i)); i++) {\n\n\t\tswitch (character) {\n\n\t\tcase \" \":\n\t\tcase \"\\t\":\n\t\tcase \"\\r\":\n\t\tcase \"\\n\":\n\t\tcase \"\\f\":\n\t\t\tif (SIGNIFICANT_WHITESPACE[state]) {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// String\n\t\tcase '\"':\n\t\t\tindex = i + 1;\n\t\t\tdo {\n\t\t\t\tindex = token.indexOf('\"', index) + 1;\n\t\t\t\tif (!index) {\n\t\t\t\t\tparseError('Unmatched \"');\n\t\t\t\t}\n\t\t\t} while (token[index - 2] === '\\\\');\n\t\t\tbuffer += token.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tswitch (state) {\n\t\t\t\tcase 'before-value':\n\t\t\t\t\tstate = 'value';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'importRule-begin':\n\t\t\t\t\tstate = 'importRule';\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"'\":\n\t\t\tindex = i + 1;\n\t\t\tdo {\n\t\t\t\tindex = token.indexOf(\"'\", index) + 1;\n\t\t\t\tif (!index) {\n\t\t\t\t\tparseError(\"Unmatched '\");\n\t\t\t\t}\n\t\t\t} while (token[index - 2] === '\\\\');\n\t\t\tbuffer += token.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tswitch (state) {\n\t\t\t\tcase 'before-value':\n\t\t\t\t\tstate = 'value';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'importRule-begin':\n\t\t\t\t\tstate = 'importRule';\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// Comment\n\t\tcase \"/\":\n\t\t\tif (token.charAt(i + 1) === \"*\") {\n\t\t\t\ti += 2;\n\t\t\t\tindex = token.indexOf(\"*/\", i);\n\t\t\t\tif (index === -1) {\n\t\t\t\t\tparseError(\"Missing */\");\n\t\t\t\t} else {\n\t\t\t\t\ti = index + 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tif (state === \"importRule-begin\") {\n\t\t\t\tbuffer += \" \";\n\t\t\t\tstate = \"importRule\";\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// At-rule\n\t\tcase \"@\":\n\t\t\tif (token.indexOf(\"@-moz-document\", i) === i) {\n\t\t\t\tstate = \"documentRule-begin\";\n\t\t\t\tdocumentRule = new CSSOM.CSSDocumentRule();\n\t\t\t\tdocumentRule.__starts = i;\n\t\t\t\ti += \"-moz-document\".length;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@media\", i) === i) {\n\t\t\t\tstate = \"atBlock\";\n\t\t\t\tmediaRule = new CSSOM.CSSMediaRule();\n\t\t\t\tmediaRule.__starts = i;\n\t\t\t\ti += \"media\".length;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@supports\", i) === i) {\n\t\t\t\tstate = \"conditionBlock\";\n\t\t\t\tsupportsRule = new CSSOM.CSSSupportsRule();\n\t\t\t\tsupportsRule.__starts = i;\n\t\t\t\ti += \"supports\".length;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@host\", i) === i) {\n\t\t\t\tstate = \"hostRule-begin\";\n\t\t\t\ti += \"host\".length;\n\t\t\t\thostRule = new CSSOM.CSSHostRule();\n\t\t\t\thostRule.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@import\", i) === i) {\n\t\t\t\tstate = \"importRule-begin\";\n\t\t\t\ti += \"import\".length;\n\t\t\t\tbuffer += \"@import\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@font-face\", i) === i) {\n\t\t\t\tstate = \"fontFaceRule-begin\";\n\t\t\t\ti += \"font-face\".length;\n\t\t\t\tfontFaceRule = new CSSOM.CSSFontFaceRule();\n\t\t\t\tfontFaceRule.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tatKeyframesRegExp.lastIndex = i;\n\t\t\t\tvar matchKeyframes = atKeyframesRegExp.exec(token);\n\t\t\t\tif (matchKeyframes && matchKeyframes.index === i) {\n\t\t\t\t\tstate = \"keyframesRule-begin\";\n\t\t\t\t\tkeyframesRule = new CSSOM.CSSKeyframesRule();\n\t\t\t\t\tkeyframesRule.__starts = i;\n\t\t\t\t\tkeyframesRule._vendorPrefix = matchKeyframes[1]; // Will come out as undefined if no prefix was found\n\t\t\t\t\ti += matchKeyframes[0].length - 1;\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (state === \"selector\") {\n\t\t\t\t\tstate = \"atRule\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\n\t\tcase \"{\":\n\t\t\tif (state === \"selector\" || state === \"atRule\") {\n\t\t\t\tstyleRule.selectorText = buffer.trim();\n\t\t\t\tstyleRule.style.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-name\";\n\t\t\t} else if (state === \"atBlock\") {\n\t\t\t\tmediaRule.media.mediaText = buffer.trim();\n\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t}\n\n\t\t\t\tcurrentScope = parentRule = mediaRule;\n\t\t\t\tmediaRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t} else if (state === \"conditionBlock\") {\n\t\t\t\tsupportsRule.conditionText = buffer.trim();\n\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t}\n\n\t\t\t\tcurrentScope = parentRule = supportsRule;\n\t\t\t\tsupportsRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t} else if (state === \"hostRule-begin\") {\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t}\n\n\t\t\t\tcurrentScope = parentRule = hostRule;\n\t\t\t\thostRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t} else if (state === \"fontFaceRule-begin\") {\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tfontFaceRule.parentRule = parentRule;\n\t\t\t\t}\n\t\t\t\tfontFaceRule.parentStyleSheet = styleSheet;\n\t\t\t\tstyleRule = fontFaceRule;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-name\";\n\t\t\t} else if (state === \"keyframesRule-begin\") {\n\t\t\t\tkeyframesRule.name = buffer.trim();\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t\tkeyframesRule.parentRule = parentRule;\n\t\t\t\t}\n\t\t\t\tkeyframesRule.parentStyleSheet = styleSheet;\n\t\t\t\tcurrentScope = parentRule = keyframesRule;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"keyframeRule-begin\";\n\t\t\t} else if (state === \"keyframeRule-begin\") {\n\t\t\t\tstyleRule = new CSSOM.CSSKeyframeRule();\n\t\t\t\tstyleRule.keyText = buffer.trim();\n\t\t\t\tstyleRule.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-name\";\n\t\t\t} else if (state === \"documentRule-begin\") {\n\t\t\t\t// FIXME: what if this '{' is in the url text of the match function?\n\t\t\t\tdocumentRule.matcher.matcherText = buffer.trim();\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t\tdocumentRule.parentRule = parentRule;\n\t\t\t\t}\n\t\t\t\tcurrentScope = parentRule = documentRule;\n\t\t\t\tdocumentRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \":\":\n\t\t\tif (state === \"name\") {\n\t\t\t\tname = buffer.trim();\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-value\";\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"(\":\n\t\t\tif (state === 'value') {\n\t\t\t\t// ie css expression mode\n\t\t\t\tif (buffer.trim() === 'expression') {\n\t\t\t\t\tvar info = (new CSSOM.CSSValueExpression(token, i)).parse();\n\n\t\t\t\t\tif (info.error) {\n\t\t\t\t\t\tparseError(info.error);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbuffer += info.expression;\n\t\t\t\t\t\ti = info.idx;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tstate = 'value-parenthesis';\n\t\t\t\t\t//always ensure this is reset to 1 on transition\n\t\t\t\t\t//from value to value-parenthesis\n\t\t\t\t\tvalueParenthesisDepth = 1;\n\t\t\t\t\tbuffer += character;\n\t\t\t\t}\n\t\t\t} else if (state === 'value-parenthesis') {\n\t\t\t\tvalueParenthesisDepth++;\n\t\t\t\tbuffer += character;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \")\":\n\t\t\tif (state === 'value-parenthesis') {\n\t\t\t\tvalueParenthesisDepth--;\n\t\t\t\tif (valueParenthesisDepth === 0) state = 'value';\n\t\t\t}\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\n\t\tcase \"!\":\n\t\t\tif (state === \"value\" && token.indexOf(\"!important\", i) === i) {\n\t\t\t\tpriority = \"important\";\n\t\t\t\ti += \"important\".length;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \";\":\n\t\t\tswitch (state) {\n\t\t\t\tcase \"value\":\n\t\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\t\tpriority = \"\";\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-name\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"atRule\":\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"importRule\":\n\t\t\t\t\timportRule = new CSSOM.CSSImportRule();\n\t\t\t\t\timportRule.parentStyleSheet = importRule.styleSheet.parentStyleSheet = styleSheet;\n\t\t\t\t\timportRule.cssText = buffer + character;\n\t\t\t\t\tstyleSheet.cssRules.push(importRule);\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbuffer += character;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"}\":\n\t\t\tswitch (state) {\n\t\t\t\tcase \"value\":\n\t\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\t\tpriority = \"\";\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase \"before-name\":\n\t\t\t\tcase \"name\":\n\t\t\t\t\tstyleRule.__ends = i + 1;\n\t\t\t\t\tif (parentRule) {\n\t\t\t\t\t\tstyleRule.parentRule = parentRule;\n\t\t\t\t\t}\n\t\t\t\t\tstyleRule.parentStyleSheet = styleSheet;\n\t\t\t\t\tcurrentScope.cssRules.push(styleRule);\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tif (currentScope.constructor === CSSOM.CSSKeyframesRule) {\n\t\t\t\t\t\tstate = \"keyframeRule-begin\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"keyframeRule-begin\":\n\t\t\t\tcase \"before-selector\":\n\t\t\t\tcase \"selector\":\n\t\t\t\t\t// End of media/supports/document rule.\n\t\t\t\t\tif (!parentRule) {\n\t\t\t\t\t\tparseError(\"Unexpected }\");\n\t\t\t\t\t}\n\n\t\t\t\t\t// Handle rules nested in @media or @supports\n\t\t\t\t\thasAncestors = ancestorRules.length > 0;\n\n\t\t\t\t\twhile (ancestorRules.length > 0) {\n\t\t\t\t\t\tparentRule = ancestorRules.pop();\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tparentRule.constructor.name === \"CSSMediaRule\"\n\t\t\t\t\t\t\t|| parentRule.constructor.name === \"CSSSupportsRule\"\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tprevScope = currentScope;\n\t\t\t\t\t\t\tcurrentScope = parentRule;\n\t\t\t\t\t\t\tcurrentScope.cssRules.push(prevScope);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (ancestorRules.length === 0) {\n\t\t\t\t\t\t\thasAncestors = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (!hasAncestors) {\n\t\t\t\t\t\tcurrentScope.__ends = i + 1;\n\t\t\t\t\t\tstyleSheet.cssRules.push(currentScope);\n\t\t\t\t\t\tcurrentScope = styleSheet;\n\t\t\t\t\t\tparentRule = null;\n\t\t\t\t\t}\n\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tswitch (state) {\n\t\t\t\tcase \"before-selector\":\n\t\t\t\t\tstate = \"selector\";\n\t\t\t\t\tstyleRule = new CSSOM.CSSStyleRule();\n\t\t\t\t\tstyleRule.__starts = i;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"before-name\":\n\t\t\t\t\tstate = \"name\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"before-value\":\n\t\t\t\t\tstate = \"value\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"importRule-begin\":\n\t\t\t\t\tstate = \"importRule\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn styleSheet;\n};\n\n\n//.CommonJS\nexports.parse = CSSOM.parse;\n// The following modules cannot be included sooner due to the mutual dependency with parse.js\nCSSOM.CSSStyleSheet = require(\"./CSSStyleSheet\").CSSStyleSheet;\nCSSOM.CSSStyleRule = require(\"./CSSStyleRule\").CSSStyleRule;\nCSSOM.CSSImportRule = require(\"./CSSImportRule\").CSSImportRule;\nCSSOM.CSSGroupingRule = require(\"./CSSGroupingRule\").CSSGroupingRule;\nCSSOM.CSSMediaRule = require(\"./CSSMediaRule\").CSSMediaRule;\nCSSOM.CSSConditionRule = require(\"./CSSConditionRule\").CSSConditionRule;\nCSSOM.CSSSupportsRule = require(\"./CSSSupportsRule\").CSSSupportsRule;\nCSSOM.CSSFontFaceRule = require(\"./CSSFontFaceRule\").CSSFontFaceRule;\nCSSOM.CSSHostRule = require(\"./CSSHostRule\").CSSHostRule;\nCSSOM.CSSStyleDeclaration = require('./CSSStyleDeclaration').CSSStyleDeclaration;\nCSSOM.CSSKeyframeRule = require('./CSSKeyframeRule').CSSKeyframeRule;\nCSSOM.CSSKeyframesRule = require('./CSSKeyframesRule').CSSKeyframesRule;\nCSSOM.CSSValueExpression = require('./CSSValueExpression').CSSValueExpression;\nCSSOM.CSSDocumentRule = require('./CSSDocumentRule').CSSDocumentRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration\n */\nCSSOM.CSSStyleDeclaration = function CSSStyleDeclaration(){\n\tthis.length = 0;\n\tthis.parentRule = null;\n\n\t// NON-STANDARD\n\tthis._importants = {};\n};\n\n\nCSSOM.CSSStyleDeclaration.prototype = {\n\n\tconstructor: CSSOM.CSSStyleDeclaration,\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-getPropertyValue\n\t * @return {string} the value of the property if it has been explicitly set for this declaration block.\n\t * Returns the empty string if the property has not been set.\n\t */\n\tgetPropertyValue: function(name) {\n\t\treturn this[name] || \"\";\n\t},\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @param {string} value\n\t * @param {string} [priority=null] \"important\" or null\n\t * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-setProperty\n\t */\n\tsetProperty: function(name, value, priority) {\n\t\tif (this[name]) {\n\t\t\t// Property already exist. Overwrite it.\n\t\t\tvar index = Array.prototype.indexOf.call(this, name);\n\t\t\tif (index < 0) {\n\t\t\t\tthis[this.length] = name;\n\t\t\t\tthis.length++;\n\t\t\t}\n\t\t} else {\n\t\t\t// New property.\n\t\t\tthis[this.length] = name;\n\t\t\tthis.length++;\n\t\t}\n\t\tthis[name] = value + \"\";\n\t\tthis._importants[name] = priority;\n\t},\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-removeProperty\n\t * @return {string} the value of the property if it has been explicitly set for this declaration block.\n\t * Returns the empty string if the property has not been set or the property name does not correspond to a known CSS property.\n\t */\n\tremoveProperty: function(name) {\n\t\tif (!(name in this)) {\n\t\t\treturn \"\";\n\t\t}\n\t\tvar index = Array.prototype.indexOf.call(this, name);\n\t\tif (index < 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tvar prevValue = this[name];\n\t\tthis[name] = \"\";\n\n\t\t// That's what WebKit and Opera do\n\t\tArray.prototype.splice.call(this, index, 1);\n\n\t\t// That's what Firefox does\n\t\t//this[index] = \"\"\n\n\t\treturn prevValue;\n\t},\n\n\tgetPropertyCSSValue: function() {\n\t\t//FIXME\n\t},\n\n\t/**\n\t *\n\t * @param {String} name\n\t */\n\tgetPropertyPriority: function(name) {\n\t\treturn this._importants[name] || \"\";\n\t},\n\n\n\t/**\n\t * element.style.overflow = \"auto\"\n\t * element.style.getPropertyShorthand(\"overflow-x\")\n\t * -> \"overflow\"\n\t */\n\tgetPropertyShorthand: function() {\n\t\t//FIXME\n\t},\n\n\tisPropertyImplicit: function() {\n\t\t//FIXME\n\t},\n\n\t// Doesn't work in IE < 9\n\tget cssText(){\n\t\tvar properties = [];\n\t\tfor (var i=0, length=this.length; i < length; ++i) {\n\t\t\tvar name = this[i];\n\t\t\tvar value = this.getPropertyValue(name);\n\t\t\tvar priority = this.getPropertyPriority(name);\n\t\t\tif (priority) {\n\t\t\t\tpriority = \" !\" + priority;\n\t\t\t}\n\t\t\tproperties[i] = name + \": \" + value + priority + \";\";\n\t\t}\n\t\treturn properties.join(\" \");\n\t},\n\n\tset cssText(text){\n\t\tvar i, name;\n\t\tfor (i = this.length; i--;) {\n\t\t\tname = this[i];\n\t\t\tthis[name] = \"\";\n\t\t}\n\t\tArray.prototype.splice.call(this, 0, this.length);\n\t\tthis._importants = {};\n\n\t\tvar dummyRule = CSSOM.parse('#bogus{' + text + '}').cssRules[0].style;\n\t\tvar length = dummyRule.length;\n\t\tfor (i = 0; i < length; ++i) {\n\t\t\tname = dummyRule[i];\n\t\t\tthis.setProperty(dummyRule[i], dummyRule.getPropertyValue(name), dummyRule.getPropertyPriority(name));\n\t\t}\n\t}\n};\n\n\n//.CommonJS\nexports.CSSStyleDeclaration = CSSOM.CSSStyleDeclaration;\nCSSOM.parse = require('./parse').parse; // Cannot be included sooner due to the mutual dependency between parse.js and CSSStyleDeclaration.js\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSStyleSheet: require(\"./CSSStyleSheet\").CSSStyleSheet,\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSStyleRule: require(\"./CSSStyleRule\").CSSStyleRule,\n\tCSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n\tCSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule,\n\tCSSMediaRule: require(\"./CSSMediaRule\").CSSMediaRule,\n\tCSSSupportsRule: require(\"./CSSSupportsRule\").CSSSupportsRule,\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSKeyframeRule: require('./CSSKeyframeRule').CSSKeyframeRule,\n\tCSSKeyframesRule: require('./CSSKeyframesRule').CSSKeyframesRule\n};\n///CommonJS\n\n\n/**\n * Produces a deep copy of stylesheet — the instance variables of stylesheet are copied recursively.\n * @param {CSSStyleSheet|CSSOM.CSSStyleSheet} stylesheet\n * @nosideeffects\n * @return {CSSOM.CSSStyleSheet}\n */\nCSSOM.clone = function clone(stylesheet) {\n\n\tvar cloned = new CSSOM.CSSStyleSheet();\n\n\tvar rules = stylesheet.cssRules;\n\tif (!rules) {\n\t\treturn cloned;\n\t}\n\n\tfor (var i = 0, rulesLength = rules.length; i < rulesLength; i++) {\n\t\tvar rule = rules[i];\n\t\tvar ruleClone = cloned.cssRules[i] = new rule.constructor();\n\n\t\tvar style = rule.style;\n\t\tif (style) {\n\t\t\tvar styleClone = ruleClone.style = new CSSOM.CSSStyleDeclaration();\n\t\t\tfor (var j = 0, styleLength = style.length; j < styleLength; j++) {\n\t\t\t\tvar name = styleClone[j] = style[j];\n\t\t\t\tstyleClone[name] = style[name];\n\t\t\t\tstyleClone._importants[name] = style.getPropertyPriority(name);\n\t\t\t}\n\t\t\tstyleClone.length = style.length;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('keyText')) {\n\t\t\truleClone.keyText = rule.keyText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('selectorText')) {\n\t\t\truleClone.selectorText = rule.selectorText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('mediaText')) {\n\t\t\truleClone.mediaText = rule.mediaText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('conditionText')) {\n\t\t\truleClone.conditionText = rule.conditionText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('cssRules')) {\n\t\t\truleClone.cssRules = clone(rule).cssRules;\n\t\t}\n\t}\n\n\treturn cloned;\n\n};\n\n//.CommonJS\nexports.clone = CSSOM.clone;\n///CommonJS\n","'use strict';\n\nexports.CSSStyleDeclaration = require('./CSSStyleDeclaration').CSSStyleDeclaration;\nexports.CSSRule = require('./CSSRule').CSSRule;\nexports.CSSGroupingRule = require('./CSSGroupingRule').CSSGroupingRule;\nexports.CSSConditionRule = require('./CSSConditionRule').CSSConditionRule;\nexports.CSSStyleRule = require('./CSSStyleRule').CSSStyleRule;\nexports.MediaList = require('./MediaList').MediaList;\nexports.CSSMediaRule = require('./CSSMediaRule').CSSMediaRule;\nexports.CSSSupportsRule = require('./CSSSupportsRule').CSSSupportsRule;\nexports.CSSImportRule = require('./CSSImportRule').CSSImportRule;\nexports.CSSFontFaceRule = require('./CSSFontFaceRule').CSSFontFaceRule;\nexports.CSSHostRule = require('./CSSHostRule').CSSHostRule;\nexports.StyleSheet = require('./StyleSheet').StyleSheet;\nexports.CSSStyleSheet = require('./CSSStyleSheet').CSSStyleSheet;\nexports.CSSKeyframesRule = require('./CSSKeyframesRule').CSSKeyframesRule;\nexports.CSSKeyframeRule = require('./CSSKeyframeRule').CSSKeyframeRule;\nexports.MatcherList = require('./MatcherList').MatcherList;\nexports.CSSDocumentRule = require('./CSSDocumentRule').CSSDocumentRule;\nexports.CSSValue = require('./CSSValue').CSSValue;\nexports.CSSValueExpression = require('./CSSValueExpression').CSSValueExpression;\nexports.parse = require('./parse').parse;\nexports.clone = require('./clone').clone;\n","import {parse} from 'cssom';\n\nimport {registerHTMLClass} from '../shared/register-html-class.js';\nimport {SHEET} from '../shared/symbols.js';\n\nimport {TextElement} from './text-element.js';\n\nconst tagName = 'style';\n\n/**\n * @implements globalThis.HTMLStyleElement\n */\nclass HTMLStyleElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n this[SHEET] = null;\n }\n\n get sheet() {\n const sheet = this[SHEET];\n if (sheet !== null) {\n return sheet;\n }\n return this[SHEET] = parse(this.textContent);\n }\n\n get innerHTML() {\n return super.innerHTML || '';\n }\n set innerHTML(value) {\n super.textContent = value;\n this[SHEET] = null;\n }\n get innerText() {\n return super.innerText || '';\n }\n set innerText(value) {\n super.textContent = value;\n this[SHEET] = null;\n }\n get textContent() {\n return super.textContent || '';\n }\n set textContent(value) {\n super.textContent = value;\n this[SHEET] = null;\n }\n}\n\nregisterHTMLClass(tagName, HTMLStyleElement);\n\nexport {HTMLStyleElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTimeElement\n */\nexport class HTMLTimeElement extends HTMLElement {\n constructor(ownerDocument, localName = 'time') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFieldSetElement\n */\nexport class HTMLFieldSetElement extends HTMLElement {\n constructor(ownerDocument, localName = 'fieldset') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLEmbedElement\n */\nexport class HTMLEmbedElement extends HTMLElement {\n constructor(ownerDocument, localName = 'embed') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLHRElement\n */\nexport class HTMLHRElement extends HTMLElement {\n constructor(ownerDocument, localName = 'hr') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLProgressElement\n */\nexport class HTMLProgressElement extends HTMLElement {\n constructor(ownerDocument, localName = 'progress') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLParagraphElement\n */\nexport class HTMLParagraphElement extends HTMLElement {\n constructor(ownerDocument, localName = 'p') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableElement\n */\nexport class HTMLTableElement extends HTMLElement {\n constructor(ownerDocument, localName = 'table') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFrameSetElement\n */\nexport class HTMLFrameSetElement extends HTMLElement {\n constructor(ownerDocument, localName = 'frameset') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLLIElement\n */\nexport class HTMLLIElement extends HTMLElement {\n constructor(ownerDocument, localName = 'li') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLBaseElement\n */\nexport class HTMLBaseElement extends HTMLElement {\n constructor(ownerDocument, localName = 'base') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDataListElement\n */\nexport class HTMLDataListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'datalist') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'input';\n\n/**\n * @implements globalThis.HTMLInputElement\n */\nclass HTMLInputElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get autofocus() { return booleanAttribute.get(this, 'autofocus') || -1; }\n set autofocus(value) { booleanAttribute.set(this, 'autofocus', value); }\n\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n get placeholder() { return this.getAttribute('placeholder'); }\n set placeholder(value) { this.setAttribute('placeholder', value); }\n\n get type() { return this.getAttribute('type'); }\n set type(value) { this.setAttribute('type', value); }\n\n get value() { return stringAttribute.get(this, 'value'); }\n set value(value) { stringAttribute.set(this, 'value', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLInputElement);\n\nexport {HTMLInputElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLParamElement\n */\nexport class HTMLParamElement extends HTMLElement {\n constructor(ownerDocument, localName = 'param') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMediaElement\n */\nexport class HTMLMediaElement extends HTMLElement {\n constructor(ownerDocument, localName = 'media') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLAudioElement\n */\nexport class HTMLAudioElement extends HTMLElement {\n constructor(ownerDocument, localName = 'audio') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'h1';\n\n/**\n * @implements globalThis.HTMLHeadingElement\n */\nclass HTMLHeadingElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n}\n\nregisterHTMLClass([tagName, 'h2', 'h3', 'h4', 'h5', 'h6'], HTMLHeadingElement);\n\nexport {HTMLHeadingElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDirectoryElement\n */\nexport class HTMLDirectoryElement extends HTMLElement {\n constructor(ownerDocument, localName = 'dir') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLQuoteElement\n */\nexport class HTMLQuoteElement extends HTMLElement {\n constructor(ownerDocument, localName = 'quote') {\n super(ownerDocument, localName);\n }\n}\n","class Canvas {\n constructor(width, height) {\n this.width = width;\n this.height = height;\n }\n getContext() {\n return null;\n }\n toDataURL() {\n return '';\n }\n}\n\nmodule.exports = {\n createCanvas: (width, height) => new Canvas(width, height),\n};\n","/* c8 ignore start */\ntry {\n module.exports = require('canvas');\n} catch (fallback) {\n module.exports = require('./canvas-shim.cjs');\n}\n/* c8 ignore stop */\n","import {IMAGE} from '../shared/symbols.js';\n\nimport {registerHTMLClass} from '../shared/register-html-class.js';\nimport {numericAttribute} from '../shared/attributes.js';\n\nimport Canvas from '../../commonjs/canvas.cjs';\n\nimport {HTMLElement} from './element.js';\n\nconst {createCanvas} = Canvas;\n\nconst tagName = 'canvas';\n\n/**\n * @implements globalThis.HTMLCanvasElement\n */\nclass HTMLCanvasElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n this[IMAGE] = createCanvas(300, 150);\n }\n\n get width() {\n return this[IMAGE].width;\n }\n\n set width(value) {\n numericAttribute.set(this, 'width', value);\n this[IMAGE].width = value;\n }\n\n get height() {\n return this[IMAGE].height;\n }\n\n set height(value) {\n numericAttribute.set(this, 'height', value);\n this[IMAGE].height = value;\n }\n\n getContext(type) {\n return this[IMAGE].getContext(type);\n }\n\n toDataURL(...args) {\n return this[IMAGE].toDataURL(...args);\n }\n}\n\nregisterHTMLClass(tagName, HTMLCanvasElement);\n\nexport {HTMLCanvasElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLLegendElement\n */\nexport class HTMLLegendElement extends HTMLElement {\n constructor(ownerDocument, localName = 'legend') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\nimport {registerHTMLClass} from '../shared/register-html-class.js';\n\nconst tagName = 'option';\n\n/**\n * @implements globalThis.HTMLOptionElement\n */\nclass HTMLOptionElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get value() { return stringAttribute.get(this, 'value'); }\n set value(value) { stringAttribute.set(this, 'value', value); }\n /* c8 ignore stop */\n\n get selected() { return booleanAttribute.get(this, 'selected'); }\n set selected(value) {\n const option = this.parentElement?.querySelector('option[selected]');\n if (option && option !== this)\n option.selected = false;\n booleanAttribute.set(this, 'selected', value);\n }\n}\n\nregisterHTMLClass(tagName, HTMLOptionElement);\n\nexport {HTMLOptionElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLSpanElement\n */\nexport class HTMLSpanElement extends HTMLElement {\n constructor(ownerDocument, localName = 'span') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMeterElement\n */\nexport class HTMLMeterElement extends HTMLElement {\n constructor(ownerDocument, localName = 'meter') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLVideoElement\n */\nexport class HTMLVideoElement extends HTMLElement {\n constructor(ownerDocument, localName = 'video') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableCellElement\n */\nexport class HTMLTableCellElement extends HTMLElement {\n constructor(ownerDocument, localName = 'td') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\n\nimport {TextElement} from './text-element.js';\n\nconst tagName = 'title';\n\n/**\n * @implements globalThis.HTMLTitleElement\n */\nclass HTMLTitleElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n}\n\nregisterHTMLClass(tagName, HTMLTitleElement);\n\nexport {HTMLTitleElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLOutputElement\n */\nexport class HTMLOutputElement extends HTMLElement {\n constructor(ownerDocument, localName = 'output') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableRowElement\n */\nexport class HTMLTableRowElement extends HTMLElement {\n constructor(ownerDocument, localName = 'tr') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDataElement\n */\nexport class HTMLDataElement extends HTMLElement {\n constructor(ownerDocument, localName = 'data') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMenuElement\n */\nexport class HTMLMenuElement extends HTMLElement {\n constructor(ownerDocument, localName = 'menu') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\nimport {NodeList} from '../interface/node-list.js';\n\nconst tagName = 'select';\n\n/**\n * @implements globalThis.HTMLSelectElement\n */\nclass HTMLSelectElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n get options() {\n let children = new NodeList;\n let {firstElementChild} = this;\n while (firstElementChild) {\n if (firstElementChild.tagName === 'OPTGROUP')\n children.push(...firstElementChild.children);\n else\n children.push(firstElementChild);\n firstElementChild = firstElementChild.nextElementSibling;\n }\n return children;\n }\n\n /* c8 ignore start */\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n /* c8 ignore stop */\n\n get value() { return this.querySelector('option[selected]')?.value; }\n}\n\nregisterHTMLClass(tagName, HTMLSelectElement);\n\nexport {HTMLSelectElement};\n\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLBRElement\n */\nexport class HTMLBRElement extends HTMLElement {\n constructor(ownerDocument, localName = 'br') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'button';\n\n/**\n * @implements globalThis.HTMLButtonElement\n */\nclass HTMLButtonElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n get type() { return this.getAttribute('type'); }\n set type(value) { this.setAttribute('type', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLButtonElement);\n\nexport {HTMLButtonElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMapElement\n */\nexport class HTMLMapElement extends HTMLElement {\n constructor(ownerDocument, localName = 'map') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLOptGroupElement\n */\nexport class HTMLOptGroupElement extends HTMLElement {\n constructor(ownerDocument, localName = 'optgroup') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDListElement\n */\nexport class HTMLDListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'dl') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute} from '../shared/attributes.js';\n\nimport {TextElement} from './text-element.js';\n\nconst tagName = 'textarea';\n\n/**\n * @implements globalThis.HTMLTextAreaElement\n */\nclass HTMLTextAreaElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n get placeholder() { return this.getAttribute('placeholder'); }\n set placeholder(value) { this.setAttribute('placeholder', value); }\n\n get type() { return this.getAttribute('type'); }\n set type(value) { this.setAttribute('type', value); }\n\n get value() { return this.textContent; }\n set value(content) { this.textContent = content; }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLTextAreaElement);\n\nexport {HTMLTextAreaElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFontElement\n */\nexport class HTMLFontElement extends HTMLElement {\n constructor(ownerDocument, localName = 'font') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDivElement\n */\nexport class HTMLDivElement extends HTMLElement {\n constructor(ownerDocument, localName = 'div') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'link';\n\n/**\n * @implements globalThis.HTMLLinkElement\n */\nclass HTMLLinkElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */ // copy paste from img.src, already covered\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get href() { return stringAttribute.get(this, 'href'); }\n set href(value) { stringAttribute.set(this, 'href', value); }\n\n get hreflang() { return stringAttribute.get(this, 'hreflang'); }\n set hreflang(value) { stringAttribute.set(this, 'hreflang', value); }\n\n get media() { return stringAttribute.get(this, 'media'); }\n set media(value) { stringAttribute.set(this, 'media', value); }\n\n get rel() { return stringAttribute.get(this, 'rel'); }\n set rel(value) { stringAttribute.set(this, 'rel', value); }\n\n get type() { return stringAttribute.get(this, 'type'); }\n set type(value) { stringAttribute.set(this, 'type', value); }\n /* c8 ignore stop */\n\n}\n\nregisterHTMLClass(tagName, HTMLLinkElement);\n\nexport {HTMLLinkElement};\n","import {HTMLElement} from './element.js';\nimport {registerHTMLClass} from '../shared/register-html-class.js';\n\nconst tagName = 'slot';\n\n/**\n * @implements globalThis.HTMLSlotElement\n */\nclass HTMLSlotElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n assign() {}\n\n assignedNodes(options) {\n const isNamedSlot = !!this.name;\n const hostChildNodes = this.getRootNode().host?.childNodes ?? [];\n let slottables;\n\n if (isNamedSlot) {\n slottables = [...hostChildNodes].filter(node => node.slot === this.name);\n } else {\n slottables = [...hostChildNodes].filter(node => !node.slot);\n }\n\n if (options?.flatten) {\n const result = [];\n\n // Element and Text nodes are slottables. A slot can be a slottable.\n for (let slottable of slottables) {\n if (slottable.localName === 'slot') {\n result.push(...slottable.assignedNodes({ flatten: true }));\n } else {\n result.push(slottable);\n }\n }\n\n slottables = result;\n }\n\n // If no assigned nodes are found, it returns the slot's fallback content.\n return slottables.length ? slottables : [...this.childNodes];\n }\n\n assignedElements(options) {\n const slottables = this.assignedNodes(options).filter(n => n.nodeType === 1);\n\n // If no assigned elements are found, it returns the slot's fallback content.\n return slottables.length ? slottables : [...this.children];\n }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLSlotElement);\n\nexport {HTMLSlotElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFormElement\n */\nexport class HTMLFormElement extends HTMLElement {\n constructor(ownerDocument, localName = 'form') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {numericAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'img';\n\n/**\n * @implements globalThis.HTMLImageElement\n */\nclass HTMLImageElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get alt() { return stringAttribute.get(this, 'alt'); }\n set alt(value) { stringAttribute.set(this, 'alt', value); }\n\n get sizes() { return stringAttribute.get(this, 'sizes'); }\n set sizes(value) { stringAttribute.set(this, 'sizes', value); }\n\n get src() { return stringAttribute.get(this, 'src'); }\n set src(value) { stringAttribute.set(this, 'src', value); }\n\n get srcset() { return stringAttribute.get(this, 'srcset'); }\n set srcset(value) { stringAttribute.set(this, 'srcset', value); }\n\n get title() { return stringAttribute.get(this, 'title'); }\n set title(value) { stringAttribute.set(this, 'title', value); }\n\n get width() { return numericAttribute.get(this, 'width'); }\n set width(value) { numericAttribute.set(this, 'width', value); }\n\n get height() { return numericAttribute.get(this, 'height'); }\n set height(value) { numericAttribute.set(this, 'height', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLImageElement);\n\nexport {HTMLImageElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLPreElement\n */\nexport class HTMLPreElement extends HTMLElement {\n constructor(ownerDocument, localName = 'pre') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLUListElement\n */\nexport class HTMLUListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'ul') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\nimport {registerHTMLClass} from '../shared/register-html-class.js';\nimport { stringAttribute } from '../shared/attributes.js';\n\nconst tagName = 'meta'\n/**\n * @implements globalThis.HTMLMetaElement\n */\nexport class HTMLMetaElement extends HTMLElement {\n constructor(ownerDocument, localName =tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get name() { return stringAttribute.get(this, 'name'); }\n set name(value) { stringAttribute.set(this, 'name', value); }\n\n get httpEquiv() { return stringAttribute.get(this, 'http-equiv'); }\n set httpEquiv(value) { stringAttribute.set(this, 'http-equiv', value); }\n\n get content() { return stringAttribute.get(this, 'content'); }\n set content(value) { stringAttribute.set(this, 'content', value); }\n\n get charset() { return stringAttribute.get(this, 'charset'); }\n set charset(value) { stringAttribute.set(this, 'charset', value); }\n\n get media() { return stringAttribute.get(this, 'media'); }\n set media(value) { stringAttribute.set(this, 'media', value); }\n /* c8 ignore stop */\n\n}\n\nregisterHTMLClass(tagName, HTMLMetaElement);\n\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLPictureElement\n */\nexport class HTMLPictureElement extends HTMLElement {\n constructor(ownerDocument, localName = 'picture') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLAreaElement\n */\nexport class HTMLAreaElement extends HTMLElement {\n constructor(ownerDocument, localName = 'area') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLOListElement\n */\nexport class HTMLOListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'ol') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableCaptionElement\n */\nexport class HTMLTableCaptionElement extends HTMLElement {\n constructor(ownerDocument, localName = 'caption') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'a';\n\n/**\n * @implements globalThis.HTMLAnchorElement\n */\nclass HTMLAnchorElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */ // copy paste from img.src, already covered\n get href() { return encodeURI(decodeURI(stringAttribute.get(this, 'href'))); }\n set href(value) { stringAttribute.set(this, 'href', decodeURI(value)); }\n\n get download() { return encodeURI(decodeURI(stringAttribute.get(this, 'download'))); }\n set download(value) { stringAttribute.set(this, 'download', decodeURI(value)); }\n\n get target() { return stringAttribute.get(this, 'target'); }\n set target(value) { stringAttribute.set(this, 'target', value); }\n\n get type() { return stringAttribute.get(this, 'type'); }\n set type(value) { stringAttribute.set(this, 'type', value); }\n /* c8 ignore stop */\n\n}\n\nregisterHTMLClass(tagName, HTMLAnchorElement);\n\nexport {HTMLAnchorElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLLabelElement\n */\nexport class HTMLLabelElement extends HTMLElement {\n constructor(ownerDocument, localName = 'label') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLUnknownElement\n */\nexport class HTMLUnknownElement extends HTMLElement {\n constructor(ownerDocument, localName = 'unknown') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLModElement\n */\nexport class HTMLModElement extends HTMLElement {\n constructor(ownerDocument, localName = 'mod') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDetailsElement\n */\nexport class HTMLDetailsElement extends HTMLElement {\n constructor(ownerDocument, localName = 'details') {\n super(ownerDocument, localName);\n }\n}\n","import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'source';\n\n/**\n * @implements globalThis.HTMLSourceElement\n */\nclass HTMLSourceElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get src() { return stringAttribute.get(this, 'src'); }\n set src(value) { stringAttribute.set(this, 'src', value); }\n\n get srcset() { return stringAttribute.get(this, 'srcset'); }\n set srcset(value) { stringAttribute.set(this, 'srcset', value); }\n\n get sizes() { return stringAttribute.get(this, 'sizes'); }\n set sizes(value) { stringAttribute.set(this, 'sizes', value); }\n\n get type() { return stringAttribute.get(this, 'type'); }\n set type(value) { stringAttribute.set(this, 'type', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLSourceElement);\n\nexport {HTMLSourceElement};\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTrackElement\n */\nexport class HTMLTrackElement extends HTMLElement {\n constructor(ownerDocument, localName = 'track') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMarqueeElement\n */\nexport class HTMLMarqueeElement extends HTMLElement {\n constructor(ownerDocument, localName = 'marquee') {\n super(ownerDocument, localName);\n }\n}\n","import {HTMLElement} from '../html/element.js';\nimport {HTMLTemplateElement} from '../html/template-element.js';\nimport {HTMLHtmlElement} from '../html/html-element.js';\nimport {HTMLScriptElement} from '../html/script-element.js';\nimport {HTMLFrameElement} from '../html/frame-element.js';\nimport {HTMLIFrameElement} from '../html/i-frame-element.js';\nimport {HTMLObjectElement} from '../html/object-element.js';\nimport {HTMLHeadElement} from '../html/head-element.js';\nimport {HTMLBodyElement} from '../html/body-element.js';\nimport {HTMLStyleElement} from '../html/style-element.js';\nimport {HTMLTimeElement} from '../html/time-element.js';\nimport {HTMLFieldSetElement} from '../html/field-set-element.js';\nimport {HTMLEmbedElement} from '../html/embed-element.js';\nimport {HTMLHRElement} from '../html/hr-element.js';\nimport {HTMLProgressElement} from '../html/progress-element.js';\nimport {HTMLParagraphElement} from '../html/paragraph-element.js';\nimport {HTMLTableElement} from '../html/table-element.js';\nimport {HTMLFrameSetElement} from '../html/frame-set-element.js';\nimport {HTMLLIElement} from '../html/li-element.js';\nimport {HTMLBaseElement} from '../html/base-element.js';\nimport {HTMLDataListElement} from '../html/data-list-element.js';\nimport {HTMLInputElement} from '../html/input-element.js';\nimport {HTMLParamElement} from '../html/param-element.js';\nimport {HTMLMediaElement} from '../html/media-element.js';\nimport {HTMLAudioElement} from '../html/audio-element.js';\nimport {HTMLHeadingElement} from '../html/heading-element.js';\nimport {HTMLDirectoryElement} from '../html/directory-element.js';\nimport {HTMLQuoteElement} from '../html/quote-element.js';\nimport {HTMLCanvasElement} from '../html/canvas-element.js';\nimport {HTMLLegendElement} from '../html/legend-element.js';\nimport {HTMLOptionElement} from '../html/option-element.js';\nimport {HTMLSpanElement} from '../html/span-element.js';\nimport {HTMLMeterElement} from '../html/meter-element.js';\nimport {HTMLVideoElement} from '../html/video-element.js';\nimport {HTMLTableCellElement} from '../html/table-cell-element.js';\nimport {HTMLTitleElement} from '../html/title-element.js';\nimport {HTMLOutputElement} from '../html/output-element.js';\nimport {HTMLTableRowElement} from '../html/table-row-element.js';\nimport {HTMLDataElement} from '../html/data-element.js';\nimport {HTMLMenuElement} from '../html/menu-element.js';\nimport {HTMLSelectElement} from '../html/select-element.js';\nimport {HTMLBRElement} from '../html/br-element.js';\nimport {HTMLButtonElement} from '../html/button-element.js';\nimport {HTMLMapElement} from '../html/map-element.js';\nimport {HTMLOptGroupElement} from '../html/opt-group-element.js';\nimport {HTMLDListElement} from '../html/d-list-element.js';\nimport {HTMLTextAreaElement} from '../html/text-area-element.js';\nimport {HTMLFontElement} from '../html/font-element.js';\nimport {HTMLDivElement} from '../html/div-element.js';\nimport {HTMLLinkElement} from '../html/link-element.js';\nimport {HTMLSlotElement} from '../html/slot-element.js';\nimport {HTMLFormElement} from '../html/form-element.js';\nimport {HTMLImageElement} from '../html/image-element.js';\nimport {HTMLPreElement} from '../html/pre-element.js';\nimport {HTMLUListElement} from '../html/u-list-element.js';\nimport {HTMLMetaElement} from '../html/meta-element.js';\nimport {HTMLPictureElement} from '../html/picture-element.js';\nimport {HTMLAreaElement} from '../html/area-element.js';\nimport {HTMLOListElement} from '../html/o-list-element.js';\nimport {HTMLTableCaptionElement} from '../html/table-caption-element.js';\nimport {HTMLAnchorElement} from '../html/anchor-element.js';\nimport {HTMLLabelElement} from '../html/label-element.js';\nimport {HTMLUnknownElement} from '../html/unknown-element.js';\nimport {HTMLModElement} from '../html/mod-element.js';\nimport {HTMLDetailsElement} from '../html/details-element.js';\nimport {HTMLSourceElement} from '../html/source-element.js';\nimport {HTMLTrackElement} from '../html/track-element.js';\nimport {HTMLMarqueeElement} from '../html/marquee-element.js';\n\nexport {\n HTMLElement,\n HTMLTemplateElement,\n HTMLHtmlElement,\n HTMLScriptElement,\n HTMLFrameElement,\n HTMLIFrameElement,\n HTMLObjectElement,\n HTMLHeadElement,\n HTMLBodyElement,\n HTMLStyleElement,\n HTMLTimeElement,\n HTMLFieldSetElement,\n HTMLEmbedElement,\n HTMLHRElement,\n HTMLProgressElement,\n HTMLParagraphElement,\n HTMLTableElement,\n HTMLFrameSetElement,\n HTMLLIElement,\n HTMLBaseElement,\n HTMLDataListElement,\n HTMLInputElement,\n HTMLParamElement,\n HTMLMediaElement,\n HTMLAudioElement,\n HTMLHeadingElement,\n HTMLDirectoryElement,\n HTMLQuoteElement,\n HTMLCanvasElement,\n HTMLLegendElement,\n HTMLOptionElement,\n HTMLSpanElement,\n HTMLMeterElement,\n HTMLVideoElement,\n HTMLTableCellElement,\n HTMLTitleElement,\n HTMLOutputElement,\n HTMLTableRowElement,\n HTMLDataElement,\n HTMLMenuElement,\n HTMLSelectElement,\n HTMLBRElement,\n HTMLButtonElement,\n HTMLMapElement,\n HTMLOptGroupElement,\n HTMLDListElement,\n HTMLTextAreaElement,\n HTMLFontElement,\n HTMLDivElement,\n HTMLLinkElement,\n HTMLSlotElement,\n HTMLFormElement,\n HTMLImageElement,\n HTMLPreElement,\n HTMLUListElement,\n HTMLMetaElement,\n HTMLPictureElement,\n HTMLAreaElement,\n HTMLOListElement,\n HTMLTableCaptionElement,\n HTMLAnchorElement,\n HTMLLabelElement,\n HTMLUnknownElement,\n HTMLModElement,\n HTMLDetailsElement,\n HTMLSourceElement,\n HTMLTrackElement,\n HTMLMarqueeElement\n};\n\nexport const HTMLClasses = {\n HTMLElement,\n HTMLTemplateElement,\n HTMLHtmlElement,\n HTMLScriptElement,\n HTMLFrameElement,\n HTMLIFrameElement,\n HTMLObjectElement,\n HTMLHeadElement,\n HTMLBodyElement,\n HTMLStyleElement,\n HTMLTimeElement,\n HTMLFieldSetElement,\n HTMLEmbedElement,\n HTMLHRElement,\n HTMLProgressElement,\n HTMLParagraphElement,\n HTMLTableElement,\n HTMLFrameSetElement,\n HTMLLIElement,\n HTMLBaseElement,\n HTMLDataListElement,\n HTMLInputElement,\n HTMLParamElement,\n HTMLMediaElement,\n HTMLAudioElement,\n HTMLHeadingElement,\n HTMLDirectoryElement,\n HTMLQuoteElement,\n HTMLCanvasElement,\n HTMLLegendElement,\n HTMLOptionElement,\n HTMLSpanElement,\n HTMLMeterElement,\n HTMLVideoElement,\n HTMLTableCellElement,\n HTMLTitleElement,\n HTMLOutputElement,\n HTMLTableRowElement,\n HTMLDataElement,\n HTMLMenuElement,\n HTMLSelectElement,\n HTMLBRElement,\n HTMLButtonElement,\n HTMLMapElement,\n HTMLOptGroupElement,\n HTMLDListElement,\n HTMLTextAreaElement,\n HTMLFontElement,\n HTMLDivElement,\n HTMLLinkElement,\n HTMLSlotElement,\n HTMLFormElement,\n HTMLImageElement,\n HTMLPreElement,\n HTMLUListElement,\n HTMLMetaElement,\n HTMLPictureElement,\n HTMLAreaElement,\n HTMLOListElement,\n HTMLTableCaptionElement,\n HTMLAnchorElement,\n HTMLLabelElement,\n HTMLUnknownElement,\n HTMLModElement,\n HTMLDetailsElement,\n HTMLSourceElement,\n HTMLTrackElement,\n HTMLMarqueeElement\n};\n","// TODO: ensure all these are text only\n// /^(?:plaintext|script|style|textarea|title|xmp)$/i\n\nconst voidElements = {test: () => true};\nexport const Mime = {\n 'text/html': {\n docType: '<!DOCTYPE html>',\n ignoreCase: true,\n voidElements: /^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i\n },\n 'image/svg+xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n },\n 'text/xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n },\n 'application/xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n },\n 'application/xhtml+xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n }\n};\n","// https://dom.spec.whatwg.org/#interface-customevent\n\n/* c8 ignore start */\n\n// One day Node might have CustomEvent too\n\nimport {Event} from './event.js';\n\n/**\n * @implements globalThis.CustomEvent\n */\nexport class CustomEvent extends Event {\n constructor(type, eventInitDict = {}) {\n super(type, eventInitDict);\n this.detail = eventInitDict.detail;\n }\n}\n\n/* c8 ignore stop */\n","// https://dom.spec.whatwg.org/#interface-customevent\n\n/* c8 ignore start */\n\n// One day Node might have CustomEvent too\n\nimport {Event} from './event.js';\n\n/**\n * @implements globalThis.InputEvent\n */\nexport class InputEvent extends Event {\n constructor(type, inputEventInit = {}) {\n super(type, inputEventInit);\n this.inputType = inputEventInit.inputType;\n this.data = inputEventInit.data;\n this.dataTransfer = inputEventInit.dataTransfer;\n this.isComposing = inputEventInit.isComposing || false;\n this.ranges = inputEventInit.ranges;\n }\n}\n/* c8 ignore stop */\n","import {HTMLImageElement} from '../html/image-element.js';\n\nexport const ImageClass = ownerDocument =>\n/**\n * @implements globalThis.Image\n */\nclass Image extends HTMLImageElement {\n constructor(width, height) {\n super(ownerDocument);\n switch (arguments.length) {\n case 1:\n this.height = width;\n this.width = width;\n break;\n case 2:\n this.height = height;\n this.width = width;\n break;\n }\n }\n};\n","// https://dom.spec.whatwg.org/#concept-live-range\n\nimport {END, NEXT, PREV, START} from '../shared/symbols.js';\n\nimport {SVGElement} from '../svg/element.js';\n\nimport {getEnd, setAdjacent} from '../shared/utils.js';\n\nconst deleteContents = ({[START]: start, [END]: end}, fragment = null) => {\n setAdjacent(start[PREV], end[NEXT]);\n do {\n const after = getEnd(start);\n const next = after === end ? after : after[NEXT];\n if (fragment)\n fragment.insertBefore(start, fragment[END]);\n else\n start.remove();\n start = next;\n } while (start !== end);\n};\n\n/**\n * @implements globalThis.Range\n */\nexport class Range {\n constructor() {\n this[START] = null;\n this[END] = null;\n this.commonAncestorContainer = null;\n }\n\n /* TODO: this is more complicated than it looks\n setStart(node, offset) {\n this[START] = node.childNodes[offset];\n }\n\n setEnd(node, offset) {\n this[END] = getEnd(node.childNodes[offset]);\n }\n //*/\n\n insertNode(newNode) {\n this[END].parentNode.insertBefore(newNode, this[START]);\n }\n\n selectNode(node) {\n this[START] = node;\n this[END] = getEnd(node);\n }\n\n // TODO: SVG elements should then create contextual fragments\n // that return SVG nodes\n selectNodeContents(node) {\n this.selectNode(node);\n this.commonAncestorContainer = node;\n }\n\n surroundContents(parentNode) {\n parentNode.replaceChildren(this.extractContents());\n }\n\n setStartBefore(node) {\n this[START] = node;\n }\n\n setStartAfter(node) {\n this[START] = node.nextSibling;\n }\n\n setEndBefore(node) {\n this[END] = getEnd(node.previousSibling);\n }\n\n setEndAfter(node) {\n this[END] = getEnd(node);\n }\n\n cloneContents() {\n let {[START]: start, [END]: end} = this;\n const fragment = start.ownerDocument.createDocumentFragment();\n while (start !== end) {\n fragment.insertBefore(start.cloneNode(true), fragment[END]);\n start = getEnd(start);\n if (start !== end)\n start = start[NEXT];\n }\n return fragment;\n }\n\n deleteContents() {\n deleteContents(this);\n }\n\n extractContents() {\n const fragment = this[START].ownerDocument.createDocumentFragment();\n deleteContents(this, fragment);\n return fragment;\n }\n\n createContextualFragment(html) {\n const { commonAncestorContainer: doc } = this;\n const isSVG = 'ownerSVGElement' in doc;\n const document = isSVG ? doc.ownerDocument : doc;\n const template = document.createElement('template');\n template.innerHTML = html;\n let {content} = template;\n if (isSVG) {\n const childNodes = [...content.childNodes];\n content = document.createDocumentFragment();\n Object.setPrototypeOf(content, SVGElement.prototype);\n content.ownerSVGElement = document;\n for (const child of childNodes) {\n Object.setPrototypeOf(child, SVGElement.prototype);\n child.ownerSVGElement = document;\n content.appendChild(child);\n }\n }\n else\n this.selectNode(content);\n return content;\n }\n\n cloneRange() {\n const range = new Range;\n range[START] = this[START];\n range[END] = this[END];\n return range;\n }\n}\n","import {\n DOCUMENT_NODE,\n ELEMENT_NODE,\n TEXT_NODE,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n SHOW_ALL,\n SHOW_ELEMENT,\n SHOW_CDATA_SECTION,\n SHOW_COMMENT,\n SHOW_TEXT\n} from '../shared/constants.js';\n\nimport {PRIVATE, END, NEXT} from '../shared/symbols.js';\n\nconst isOK = ({nodeType}, mask) => {\n switch (nodeType) {\n case ELEMENT_NODE:\n return mask & SHOW_ELEMENT;\n case TEXT_NODE:\n return mask & SHOW_TEXT;\n case COMMENT_NODE:\n return mask & SHOW_COMMENT;\n case CDATA_SECTION_NODE:\n return mask & SHOW_CDATA_SECTION;\n }\n return 0;\n};\n\n/**\n * @implements globalThis.TreeWalker\n */\nexport class TreeWalker {\n constructor(root, whatToShow = SHOW_ALL) {\n this.root = root;\n this.currentNode = root;\n this.whatToShow = whatToShow;\n let {[NEXT]: next, [END]: end} = root;\n if (root.nodeType === DOCUMENT_NODE) {\n const {documentElement} = root;\n next = documentElement;\n end = documentElement[END];\n }\n const nodes = [];\n while (next !== end) {\n if (isOK(next, whatToShow))\n nodes.push(next);\n next = next[NEXT];\n }\n this[PRIVATE] = {i: 0, nodes};\n }\n\n nextNode() {\n const $ = this[PRIVATE];\n this.currentNode = $.i < $.nodes.length ? $.nodes[$.i++] : null;\n return this.currentNode;\n }\n}\n","import {performance} from '../../commonjs/perf_hooks.cjs';\n\nimport {DOCUMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, SVG_NAMESPACE} from '../shared/constants.js';\n\nimport {\n CUSTOM_ELEMENTS, DOM_PARSER, GLOBALS, IMAGE, MUTATION_OBSERVER,\n DOCTYPE, END, NEXT, MIME, EVENT_TARGET, UPGRADE\n} from '../shared/symbols.js';\n\nimport {Facades, illegalConstructor} from '../shared/facades.js';\nimport {HTMLClasses} from '../shared/html-classes.js';\nimport {Mime} from '../shared/mime.js';\nimport {knownSiblings} from '../shared/utils.js';\nimport {assign, create, defineProperties, setPrototypeOf} from '../shared/object.js';\n\nimport {NonElementParentNode} from '../mixin/non-element-parent-node.js';\n\nimport {SVGElement} from '../svg/element.js';\n\nimport {Attr} from './attr.js';\nimport {CDATASection} from './cdata-section.js'\nimport {Comment} from './comment.js';\nimport {CustomElementRegistry} from './custom-element-registry.js';\nimport {CustomEvent} from './custom-event.js';\nimport {DocumentFragment} from './document-fragment.js';\nimport {DocumentType} from './document-type.js';\nimport {Element} from './element.js';\nimport {Event} from './event.js';\nimport {EventTarget} from './event-target.js';\nimport {InputEvent} from './input-event.js';\nimport {ImageClass} from './image.js';\nimport {MutationObserverClass} from './mutation-observer.js';\nimport {NamedNodeMap} from './named-node-map.js';\nimport {NodeList} from './node-list.js';\nimport {Range} from './range.js';\nimport {Text} from './text.js';\nimport {TreeWalker} from './tree-walker.js';\n\nconst query = (method, ownerDocument, selectors) => {\n let {[NEXT]: next, [END]: end} = ownerDocument;\n return method.call({ownerDocument, [NEXT]: next, [END]: end}, selectors);\n};\n\nconst globalExports = assign(\n {},\n Facades,\n HTMLClasses,\n {\n CustomEvent,\n Event,\n EventTarget,\n InputEvent,\n NamedNodeMap,\n NodeList\n }\n);\n\nconst window = new WeakMap;\n\n/**\n * @implements globalThis.Document\n */\nexport class Document extends NonElementParentNode {\n constructor(type) {\n super(null, '#document', DOCUMENT_NODE);\n this[CUSTOM_ELEMENTS] = {active: false, registry: null};\n this[MUTATION_OBSERVER] = {active: false, class: null};\n this[MIME] = Mime[type];\n /** @type {DocumentType} */\n this[DOCTYPE] = null;\n this[DOM_PARSER] = null;\n this[GLOBALS] = null;\n this[IMAGE] = null;\n this[UPGRADE] = null;\n }\n\n /**\n * @type {globalThis.Document['defaultView']}\n */\n get defaultView() {\n if (!window.has(this))\n window.set(this, new Proxy(globalThis, {\n set: (target, name, value) => {\n switch (name) {\n case 'addEventListener':\n case 'removeEventListener':\n case 'dispatchEvent':\n this[EVENT_TARGET][name] = value;\n break;\n default:\n target[name] = value;\n break;\n }\n return true;\n },\n get: (globalThis, name) => {\n switch (name) {\n case 'addEventListener':\n case 'removeEventListener':\n case 'dispatchEvent':\n if (!this[EVENT_TARGET]) {\n const et = this[EVENT_TARGET] = new EventTarget;\n et.dispatchEvent = et.dispatchEvent.bind(et);\n et.addEventListener = et.addEventListener.bind(et);\n et.removeEventListener = et.removeEventListener.bind(et);\n }\n return this[EVENT_TARGET][name];\n case 'document':\n return this;\n /* c8 ignore start */\n case 'navigator':\n return {\n userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36'\n };\n /* c8 ignore stop */\n case 'window':\n return window.get(this);\n case 'customElements':\n if (!this[CUSTOM_ELEMENTS].registry)\n this[CUSTOM_ELEMENTS] = new CustomElementRegistry(this);\n return this[CUSTOM_ELEMENTS];\n case 'performance':\n return performance;\n case 'DOMParser':\n return this[DOM_PARSER];\n case 'Image':\n if (!this[IMAGE])\n this[IMAGE] = ImageClass(this);\n return this[IMAGE];\n case 'MutationObserver':\n if (!this[MUTATION_OBSERVER].class)\n this[MUTATION_OBSERVER] = new MutationObserverClass(this);\n return this[MUTATION_OBSERVER].class;\n }\n return (this[GLOBALS] && this[GLOBALS][name]) ||\n globalExports[name] ||\n globalThis[name];\n }\n }));\n return window.get(this);\n }\n\n get doctype() {\n const docType = this[DOCTYPE];\n if (docType)\n return docType;\n const {firstChild} = this;\n if (firstChild && firstChild.nodeType === DOCUMENT_TYPE_NODE)\n return (this[DOCTYPE] = firstChild);\n return null;\n }\n\n set doctype(value) {\n if (/^([a-z:]+)(\\s+system|\\s+public(\\s+\"([^\"]+)\")?)?(\\s+\"([^\"]+)\")?/i.test(value)) {\n const {$1: name, $4: publicId, $6: systemId} = RegExp;\n this[DOCTYPE] = new DocumentType(this, name, publicId, systemId);\n knownSiblings(this, this[DOCTYPE], this[NEXT]);\n }\n }\n\n get documentElement() {\n return this.firstElementChild;\n }\n\n get isConnected() { return true; }\n\n /**\n * @protected\n */\n _getParent() {\n return this[EVENT_TARGET];\n }\n\n createAttribute(name) { return new Attr(this, name); }\n createCDATASection(data) { return new CDATASection(this, data); }\n createComment(textContent) { return new Comment(this, textContent); }\n createDocumentFragment() { return new DocumentFragment(this); }\n createDocumentType(name, publicId, systemId) { return new DocumentType(this, name, publicId, systemId); }\n createElement(localName) { return new Element(this, localName); }\n createRange() {\n const range = new Range;\n range.commonAncestorContainer = this;\n return range;\n }\n createTextNode(textContent) { return new Text(this, textContent); }\n createTreeWalker(root, whatToShow = -1) { return new TreeWalker(root, whatToShow); }\n createNodeIterator(root, whatToShow = -1) { return this.createTreeWalker(root, whatToShow); }\n\n createEvent(name) {\n const event = create(name === 'Event' ? new Event('') : new CustomEvent(''));\n event.initEvent = event.initCustomEvent = (\n type,\n canBubble = false,\n cancelable = false,\n detail\n ) => {\n event.bubbles = !!canBubble;\n\n defineProperties(event, {\n type: {value: type},\n canBubble: {value: canBubble},\n cancelable: {value: cancelable},\n detail: {value: detail}\n });\n };\n return event;\n }\n\n cloneNode(deep = false) {\n const {\n constructor,\n [CUSTOM_ELEMENTS]: customElements,\n [DOCTYPE]: doctype\n } = this;\n const document = new constructor();\n document[CUSTOM_ELEMENTS] = customElements;\n if (deep) {\n const end = document[END];\n const {childNodes} = this;\n for (let {length} = childNodes, i = 0; i < length; i++)\n document.insertBefore(childNodes[i].cloneNode(true), end);\n if (doctype)\n document[DOCTYPE] = childNodes[0];\n }\n return document;\n }\n\n importNode(externalNode) {\n // important: keep the signature length as *one*\n // or it would behave like old IE or Edge with polyfills\n const deep = 1 < arguments.length && !!arguments[1];\n const node = externalNode.cloneNode(deep);\n const {[CUSTOM_ELEMENTS]: customElements} = this;\n const {active} = customElements;\n const upgrade = element => {\n const {ownerDocument, nodeType} = element;\n element.ownerDocument = this;\n if (active && ownerDocument !== this && nodeType === ELEMENT_NODE)\n customElements.upgrade(element);\n };\n upgrade(node);\n if (deep) {\n switch (node.nodeType) {\n case ELEMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE: {\n let {[NEXT]: next, [END]: end} = node;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE)\n upgrade(next);\n next = next[NEXT];\n }\n break;\n }\n }\n }\n return node;\n }\n\n toString() { return this.childNodes.join(''); }\n\n querySelector(selectors) {\n return query(super.querySelector, this, selectors);\n }\n\n querySelectorAll(selectors) {\n return query(super.querySelectorAll, this, selectors);\n }\n\n /* c8 ignore start */\n getElementsByTagNameNS(_, name) {\n return this.getElementsByTagName(name);\n }\n createAttributeNS(_, name) {\n return this.createAttribute(name);\n }\n createElementNS(nsp, localName, options) {\n return nsp === SVG_NAMESPACE ?\n new SVGElement(this, localName, null) :\n this.createElement(localName, options);\n }\n /* c8 ignore stop */\n}\n\nsetPrototypeOf(\n globalExports.Document = function Document() {\n illegalConstructor();\n },\n Document\n).prototype = Document.prototype;\n","import {DOMParser} from './dom/parser.js';\nimport {Document as _Document} from './interface/document.js';\n\nimport {illegalConstructor} from './shared/facades.js';\nimport {setPrototypeOf} from './shared/object.js';\nexport {parseJSON, toJSON} from './shared/parse-json.js';\n\nexport * from './shared/facades.js';\nexport * from './shared/html-classes.js';\n\nexport {DOMParser};\n\nexport {CustomEvent} from './interface/custom-event.js';\nexport {Event} from './interface/event.js';\nexport {EventTarget} from './interface/event-target.js';\nexport {InputEvent} from './interface/input-event.js';\nexport {NodeList} from './interface/node-list.js';\nexport {NodeFilter} from './interface/node-filter.js';\n\nexport const parseHTML = (html, globals = null) => (new DOMParser).parseFromString(\n html, 'text/html', globals\n).defaultView;\n\nexport function Document() {\n illegalConstructor();\n}\n\nsetPrototypeOf(Document, _Document).prototype = _Document.prototype;\n","import { parseHTML } from \"linkedom\";\n\n/**\n * @param { String } string\n * @return HTMLDocument\n */\nexport function createDocumentFromString(string) {\n const parser = parseHTML(string);\n return parser.document;\n}\n\n/**\n * creates an array of parent elements sorted from closest parent of node to furthest parent of node.\n * inclusive of the element matching `condition`\n *\n * @param { HTMLElement } node\n * @param { Function } condition\n * @returns { HTMLElement[] } array of parent elements\n */\n\nexport function parentsThrough(node, condition) {\n const breakOnCondition = condition && typeof condition == \"function\";\n\n let parent = node.parentNode;\n // Escape hatch for development mode\n\n const parents = [];\n while (parent && parent.tagName !== \"BODY\") {\n parents.push(parent);\n\n if (breakOnCondition && condition(parent)) {\n return parents;\n }\n if (parent.parentNode?.id === \"svelte\") {\n parent = parent.parentNode.parentNode;\n }\n parent = parent.parentNode;\n }\n return parents;\n}\n\n/**\n * receives a string and strips its non alphanumeric characters\n *\n * @param { String } text\n * @param { String } id\n * @return a lowercase alphanumeric string\n */\nexport function textToId(text) {\n const spaces = new RegExp(/\\s/g);\n const anythingButSpacesAndLetters = /[^\\sA-Za-z0-9]/g;\n const punctuationToStrip = new RegExp(anythingButSpacesAndLetters);\n const id = text?.toLowerCase().replace(punctuationToStrip, \"\").replace(spaces, \"-\");\n return id;\n}\n\nexport function hasData(onNode, key) {\n if (!onNode) {\n return false;\n }\n if (!onNode.dataset) {\n return false;\n }\n return onNode.dataset[key] !== undefined;\n}\n\nexport function copyElement({ element, elementType, textContent, id, rootNode = document }) {\n if (!elementType) {\n console.error(\"no elementType provided to copyElement\");\n return;\n }\n const newElement = rootNode.createElement(elementType);\n [...element.attributes].forEach(({ name, value }) => {\n newElement.setAttribute(name, value);\n });\n newElement.textContent = textContent;\n newElement.id = id;\n\n return newElement;\n}\n\nexport function clickOutside(element, callbackFunction) {\n function onClick(event) {\n if (!element.contains(event.target)) {\n callbackFunction(event);\n }\n }\n\n document.body.addEventListener(\"click\", onClick);\n\n return {\n update(newCallbackFunction) {\n callbackFunction = newCallbackFunction;\n },\n destroy() {\n document.body.removeEventListener(\"click\", onClick);\n }\n };\n}\n\nexport function elementIsFullyInViewport(element) {\n const elementRect = element.getBoundingClientRect();\n const headerOffset =\n document.documentElement.style.getPropertyValue(\"--scroll-header-padding\") ?? 0;\n return (\n elementRect.top >= parseInt(headerOffset) &&\n elementRect.left >= 0 &&\n elementRect.bottom <= window.innerHeight &&\n elementRect.right <= window.innerWidth\n );\n}\n"],"names":["get_spread_update","levels","updates","update","to_null_out","accounted_for","i","o","n","key","get_spread_object","spread_props","IDX","HEX","BUFFER","v4","num","out","ctx","insert_hydration","target","svg","anchor","append_hydration","path","g","defs","clipPath","rect","path0","path1","path2","validatePropValue","componentName","propName","propValue","validPropValues","validatePropObjectWithSchema","schema","ICON_NAMES","alert","arrowLeft","arrowRight","arrowUpRight","caretDown","caretUp","check","close","facebook","filter","instagram","linkedIn","menu","pause","play","playOffset","search","threads","youtube","x","id","$$props","name","inheritSize","iconClass","$$invalidate","component","Constants","dynamicHeading","getContext","setContext","svelte_element","svelte_element_data","svelte_element_levels","create_dynamic_element","calculateResultingHeadingLevel","suggestedHeadingLevel","currentDynamicHeadingLevel","levelSum","resultingHeadingLevel","className","ref","currentElement","$$value","STANDARD_THEMES","COLORS","PATTERN_THEMES","DEM_FORUM_THEMES","THEMES","THEME_NAMES","getTheme","themeName","span2","span0","span1","theme","accessibilityLabel","containerClass","currentTheme","dotColorValue","backgroundColorValue","span","create_if_block_2","create_if_block","svelte_element_disabled_value","if_block2","dirty","svelte_element_type_value","svelte_element_href_value","svelte_element_role_value","svelte_element_class_value","current","VALID_VARIANTS","VALID_THEMES","VALID_ICON_ALIGNMENTS","VALID_TYPES","buttonClass","variant","type","disabled","url","label","ariaLabel","submittingText","iconName","isLoading","iconAlignment","buttonThemeClasses","hoverThemeClasses","disabledThemeClasses","hasValidLabel","spacingClasses","$$slots","iconSpacingClasses","iconAlignmentClasses","componentColorTheme","_a","themeClasses","hoverClasses","disabledClasses","cubicInOut","t","cubicOut","f","fade","node","delay","duration","easing","linear","fly","y","opacity","style","target_opacity","transform","od","xValue","xUnit","split_css_unit","yValue","yUnit","u","slide","axis","primary_property","primary_property_value","secondary_properties","capitalized_secondary_properties","e","padding_start_value","padding_end_value","margin_start_value","margin_end_value","border_width_start_value","border_width_end_value","IMAGE_ASPECT_RATIOS","ASPECT_RATIO_CLASSES","validateAspectRatioClasses","aspectRatioClasses","listOfClasses","validClasses","aspectRatioClass","validClass","trapFocus","options","abortController","currentOptions","firstElement","secondElement","lastElement","focusableElements","onFirstElementKeydown","onSecondElementKeydown","onLastElementKeydown","manageFocus","signal","focusableListList","focusableList","triggerElement","cleanUp","observationChange","observer","newOptions","Breakpoints","breakpointValues","mediaQueries","getBreakpoint","width","breakpointWeights","maxFontSizeMapForFullWidthText","isSmallOrMediumBreakpoint","screenWidth","currentBreakpoint","attr","img","img_class_value","img_aria_hidden_value","VALID_CONTAINER_ELEMENTS","src","srcset","sizes","alt","containerElement","elementClass","eagerLoad","frameClasses","create_dynamic_element_1","baseClasses","icon_changes","create_if_block_1","svelte_element_target_value","svelte_element_rel_value","href","ariaHidden","isExternal","isLinkHovered","hideInternalLinkArrow","showLinkArrowOnHover","linkClass","variantClasses","iconClasses","arrowClasses","getElementType","element","animationTriggerClass","shouldShowArrow","animatedUnderlineClasses","innerSpanClasses","mobileClasses","mediumClasses","svelte_element_style_value","gridElement","gridClass","subGridColumns","gridSpanMobile","gridSpanTablet","gridSpanDesktop","div","div_class_value","gridInnerClasses","outsideSpacingClasses","span_class_value","themeClass","_getDefaults","_defaults","changeDefaults","newDefaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","escape$1","html","encode","caret","edit","regex","opt","source","obj","val","valSource","cleanUrl","noopTest","splitCells","tableRow","count","row","match","offset","str","escaped","curr","cells","rtrim","c","invert","l","suffLen","currChar","findClosingBracket","b","level","outputLink","cap","link","raw","lexer","title","text","token","indentCodeCompensation","matchIndentToCode","indentToCode","matchIndentInNode","indentInNode","_Tokenizer","__publicField","trimmed","lines","tokens","inBlockquote","currentLines","currentRaw","currentText","top","lastToken","oldToken","newText","newToken","bull","isordered","list","itemRegex","endsWithBlankLine","endEarly","itemContents","line","nextLine","blankLine","indent","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","htmlBeginRegex","rawLine","nextLineWithoutTabs","istask","ischecked","spacers","hasMultipleLineBreaks","tag","headers","aligns","rows","item","align","cell","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","links","linkString","maskedSrc","prevChar","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","lastCharLength","hasNonSpaceChars","hasSpaceCharsOnBothEnds","prevCapZero","newline","blockCode","fences","hr","heading","bullet","lheading","_paragraph","blockText","_blockLabel","def","_tag","_comment","paragraph","blockquote","blockNormal","gfmTable","blockGfm","blockPedantic","escape","inlineCode","br","inlineText","_punctuation","punctuation","blockSkip","emStrongLDelim","emStrongRDelimAst","emStrongRDelimUnd","anyPunctuation","autolink","_inlineComment","_inlineLabel","reflink","nolink","reflinkSearch","inlineNormal","inlinePedantic","inlineGfm","inlineBreaks","block","inline","_Lexer","rules","next","lastParagraphClipped","cutSrc","extTokenizer","startIndex","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","_Renderer","lang","langString","code","depth","ordered","start","body","j","startAttr","itemBody","checkbox","checked","header","k","content","cleanHref","_TextRenderer","_Parser","anyToken","genericToken","ret","textToken","renderer","_Hooks","markdown","Marked","args","callback","values","tableToken","listToken","_b","childTokens","extensions","pack","opts","ext","prevRenderer","extLevel","prop","rendererProp","rendererFunc","tokenizer","tokenizerProp","tokenizerFunc","prevTokenizer","hooks","hooksProp","hooksFunc","prevHook","arg","walkTokens","packWalktokens","blockType","origOpt","throwError","parser","silent","async","msg","markedInstance","marked","parseInline","entries","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","create","apply","construct","fun","thisValue","Func","arrayForEach","unapply","arrayLastIndexOf","arrayPop","arrayPush","arraySplice","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","objectHasOwnProperty","regExpTest","typeErrorCreate","unconstruct","func","thisArg","_len","_key","_len2","_key2","addToSet","set","array","transformCaseFunc","lcElement","cleanArray","index","clone","object","newObject","property","value","lookupGetter","desc","fallbackValue","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","EXPRESSIONS","NODE_TYPE","getGlobal","_createTrustedTypesPolicy","trustedTypes","purifyHostElement","suffix","ATTR_NAME","policyName","scriptUrl","_createHooksMap","createDOMPurify","window","DOMPurify","root","document","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","Node","Element","NodeFilter","NamedNodeMap","HTMLFormElement","DOMParser","ElementPrototype","cloneNode","remove","getNextSibling","getChildNodes","getParentNode","template","trustedTypesPolicy","emptyHTML","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","cfg","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","parent","tagName","parentTagName","_forceRemove","_removeAttribute","_initDocument","doc","leadingWhitespace","matches","dirtyPayload","_createNodeIterator","_isClobbered","_isNode","_executeHooks","currentNode","data","hook","_sanitizeElements","_isBasicCustomElement","parentNode","childNodes","childCount","childClone","expr","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","attributes","hookEvent","namespaceURI","attrValue","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","importedNode","returnNode","nodeIterator","serializedHTML","entryPoint","hookFunction","purify","purify_cjs","browser","require$$0","getStores","stores","browser_stores","page","fn","navigating","isServer","detectOS","ua","ipad","iphone","android","ios","getEventListenerOptions","isSupportOptions","listenerOptions","noop","testEvent","capture","getPreventEventDefault","event","toArray","initialLockState","getLockState","lockState","handleScroll","targetElement","initialClientPos","scrollTop","scrollLeft","scrollWidth","scrollHeight","clientWidth","clientHeight","clientX","clientY","isVertical","isOnTop","isOnLeft","isOnRight","isOnBottom","setOverflowHiddenPc","$html","htmlStyle","scrollBarWidth","previousPaddingRight","setOverflowHiddenMobile","$body","bodyStyle","supportsNativeSmoothScroll","lock","detectRes","_event$targetTouches$","addTouchMoveListener","unlock","unlockByCallback","removeTouchMoveListener","clearBodyLocks","ul","t_value","set_data","a","a_label_value","a_href_value","li","li_class_value","defaultBulletClasses","tags","componentClass","bulletClass","linkThemeName","linkTheme","factory","module","global","defaultSettings","els","settings","elType","processItem","el","isElement","innerSpan","originalHeight","originalHTML","originalWidth","low","mid","high","innerWidth","innerHeight","hasClass","multiLine","size","addStyleSheet","height","cls","css","ITEM_PREVIEW_LIST_FORMS","FEATURED_IMAGES_POSITIONS","PRIVACY_MANDATE_REGIONS","BANNER_COOKIE_NAME","REQUIRED_COOKIES","BREAK_POINTS","SALESFORCE_CONSTANTS","getUrlObject","INTERNAL_ORIGINS","isExternalUrl","currentOrigin","urlObj","targetOrigin","correctedUrl","isMissingTrailingSlash","getFullUrl","isNotStaticFile","isRootRelative","hasNoTrailingSlash","IMAGE_VARIANT_MAP","STORY_CARD_ASPECT_RATIO_CLASSES","SRCSET_WIDTHS","CONTENTFUL_LARGE_ASSET_URL_PREFIX","CONTENTFUL_IMAGE_CDN_PREFIX","swapAssetUrl","CONTENTFUL_API_DEFAULTS","contentfulImageUrlFor","paramOverrides","fm","apiParams","params","buildSrc","asset","resizeParams","ignoreContentfulImgResize","srcSetFromWidths","widths","SCREENS","sizeForMinWidth","minWidth","sizesForBreakpoints","breakpoints","sizeAttr","sizeForWidth","altTextToDisplay","altText","getImageAspectRatio","aspectRatio","imageDetails","_c","mappedVariant","calculatedVariant","getClosestAspectRatioClass","validAspectRatios","closestAspectRatio","minDifference","ratio","ratioValueString","calcRatios","ratioWidth","ratioHeight","ratioValue","difference","heroThemeStore","writable","filterItemsStore","getTotalNumberOfSelectedFilters","activeFilters","accumulator","currentFilterGroup","option","filterOutInactiveFilterGroups","filterGroups","filterGroup","flattenAppliedFilterGroups","selectedFilterGroups","selectedOptions","CHANGED","CLASS_LIST","CUSTOM_ELEMENTS","CONTENT","DATASET","DOCTYPE","DOM_PARSER","END","EVENT_TARGET","GLOBALS","IMAGE","MIME","MUTATION_OBSERVER","NEXT","OWNER_ELEMENT","PREV","PRIVATE","SHEET","START","STYLE","UPGRADE","VALUE","htmlDecodeTree","xmlDecodeTree","decodeMap","fromCodePoint","codePoint","output","replaceCodePoint","CharCodes","TO_LOWER_BIT","BinTrieFlags","isNumber","isHexadecimalCharacter","isAsciiAlphaNumeric","isEntityInAttributeInvalidEnd","EntityDecoderState","DecodingMode","EntityDecoder","decodeTree","emitCodePoint","errors","decodeMode","end","base","digitCount","startIdx","char","lastCp","expectedLength","valueLength","determineBranch","result","consumed","getDecoder","decoder","lastIndex","len","nodeIdx","branchCount","jumpOffset","lo","hi","midVal","State","isWhitespace","isEndOfTagSection","isASCIIAlpha","QuoteType","Sequences","Tokenizer","xmlMode","decodeEntities","cbs","cp","chunk","isEnd","endOfText","actualIndex","sequence","lower","quote","length","endIndex","formTags","pTag","tableSectionTags","ddtTags","rtpTags","openImpliesClose","voidElements","foreignContextElements","htmlIntegrationElements","reNameEnd","Parser$1","_d","_e","_f","impliesClose","isImplied","_g","_h","pos","isOpenImplied","_j","_k","slice","ElementType","isTag","elem","Root","Text","Directive","Comment","Script","Style","Tag","CDATA","Doctype","Node$2","prev","recursive","DataNode","ProcessingInstruction","NodeWithChildren","children","attribs","isTagRaw","isCDATA","isText","isComment","isDirective","isDocument","hasChildren","cloneChildren","child","Document","instruction","childs","defaultOpts","DomHandler","elementCB","error","lastNode","previousSibling","xmlReplacer","xmlCodeMap","getCodePoint","encodeXML","lastIdx","getEscaper","map","escapeAttribute","escapeText","elementNames","attributeNames","unencodedElements","replaceQuotes","formatAttributes","singleTag","render","nodes","renderNode","ElementType.Root","ElementType.Doctype","ElementType.Directive","renderDirective","ElementType.Comment","renderComment","ElementType.CDATA","renderCdata","ElementType.Script","ElementType.Style","ElementType.Tag","renderTag","ElementType.Text","renderText","foreignModeIntegrationPoints","foreignElements","getOuterHTML","renderHTML","getInnerHTML","getText","textContent","innerText","getChildren","getParent","getSiblings","siblings","getAttributeValue","hasAttrib","getName","nextElementSibling","prevElementSibling","removeElement","childsIndex","replaceElement","replacement","appendChild","sibling","append","currNext","prependChild","prepend","test","recurse","limit","find","nodeStack","indexStack","findOneChild","findOne","existsOne","findAll","Checks","getAttribCheck","attrib","combineFuncs","compileTest","funcs","testElement","getElements","getElementById","getElementsByTagType","removeSubsets","idx","ancestor","DocumentPosition","compareDocumentPosition","nodeA","nodeB","aParents","bParents","maxIdx","sharedParent","aSibling","bSibling","uniqueSort","arr","relative","getFeed","feedRoot","getOneElement","isValidFeed","getAtomFeed","getRssFeed","feed","entry","getMediaElements","addConditionally","description","fetch","pubDate","updated","MEDIA_KEYS_STRING","MEDIA_KEYS_INT","where","media","parseDocument","handler","Parser","parseDOM","createDocumentStream","elementCallback","createDomStream","parseFeedDefaultOptions","parseFeed","NODE_END","ELEMENT_NODE","ATTRIBUTE_NODE","TEXT_NODE","CDATA_SECTION_NODE","COMMENT_NODE","DOCUMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","BLOCK_ELEMENTS","SHOW_ALL","SHOW_ELEMENT","SHOW_TEXT","SHOW_CDATA_SECTION","SHOW_COMMENT","DOCUMENT_POSITION_DISCONNECTED","DOCUMENT_POSITION_PRECEDING","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_CONTAINS","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC","assign","defineProperties","getOwnPropertyDescriptors","keys","$String","getEnd","ignoreCase","ownerDocument","knownAdjacent","knownBoundaries","knownSegment","knownSiblings","localCase","localName","setAdjacent","shadowRoots","reactive","Classes","customElements","attributeChangedCallback","attributeName","oldValue","newValue","createTrigger","method","isConnected","info","triggerConnected","connectedCallback","triggerDisconnected","disconnectedCallback","CustomElementRegistry","Class","registry","waiting","extend","resolve","ce","HTMLParser2","self","active","attribute","parseFromString","isHTML","markupLanguage","ownerSVGElement","parsingCData","htmlClasses","registerHTMLClass","names","__viteBrowserExternal","performance","performance_1","perf_hooks","loopSegment","json","attrAsJSON","characterDataAsJSON","elementAsJSON","documentTypeAsJSON","last","nonElementAsJSON","publicId","systemId","createRecord","addedNodes","removedNodes","queueAttribute","attributeFilter","attributeOldValue","records","scheduled","observers","childList","subtree","moCallback","characterData","MutationObserverClass","emptyAttributes","setAttribute","moAttributes","ceAttributes","removeAttribute","booleanAttribute","numericAttribute","stringAttribute","wm","dispatch","listener","invokeListeners","currentTarget","listeners","DOMEventTarget","NodeList","getParentNodeCount","EventTarget","nodeType","location","newNode","referenceNode","newChild","oldChild","other","aNodes","bNodes","replace","ca","esca","pe","m","es","QUOTE","Attr","String","ownerElement","escapedValue","parentElement","nextSibling","previousElementSibling","asFragment","before","after","replaceWith","CDATASection","CharacterData","boolbase","SelectorType","AttributeAction","reName","reEscape","actionTypes","unpackPseudos","isTraversal","selector","stripQuotesFromPseudos","funescape","_","escapedWhitespace","unescapeCSS","isQuote","parse","subselects","parseSelector","selectorIndex","stripWhitespace","readValueWithParenthesis","counter","isEscaped","slashCount","ensureNotTraversal","addTraversal","addSpecialAttribute","action","finalizeSubselector","loop","firstChar","namespace","possibleAction","sectionEnd","valueStart","forceIgnore","attributeSelector","quot","procedure","sortByProcedure","procs","getProcedure","procNew","proc","d","reChars","escapeRegex","caseInsensitiveAttributes","shouldIgnoreCase","attributeRules","adapter","whitespace","ZERO","NINE","formula","sign","readSign","number","readNumber","skipWhitespace","compile","parsed","absA","bMod","nthCheck","getChildFunc","filters","itext","rule","equals","getNCheck","currentSibling","_rule","context","dynamicStatePseudo","pseudos","firstChild","elemName","verifyPseudoArgs","subselect","argIndex","aliases","PLACEHOLDER_ELEMENT","ensureIsTag","getNextSiblings","elemIndex","copyOptions","is","compileToken","_context","s","compiled","hasElement","shouldTestNextSiblings","nextElements","compilePseudoSelector","userPseudo","stringPseudo","alias","pseudo","getElementParent","compileGeneralSelector","isFalseCache","previous","compileUnsafe","includesScopePseudo","DESCENDANT_TOKEN","FLEXIBLE_DESCENDANT_TOKEN","SCOPE_TOKEN","absolutize","hasContext","sortRules","isArrayContext","finalContext","query","first","second","compileRules","reduceRules","defaultEquals","defaultOptions","DomUtils","convertOptionFormats","wrapCompile","compileRaw","isArray","elements","prepareMatch","selectors","CSSselect.compile","CSSselect.is","isNode","insert","ParentNode","firstElementChild","lastChild","$next","$prev","replaced","NonElementParentNode","deep","constructor","nonEPN","DocumentType","hasPublic","getInnerHtml","setInnerHtml","setOwnerDocument","uhyphen","camel","refs","$1","dataset","DOMStringMap","add","addTokens","DOMTokenList","force","getKeys","updateKeys","rest","prototype","done","cssText","push","CSSStyleDeclaration","BUBBLING_PHASE","AT_TARGET","CAPTURING_PHASE","NONE","getCurrentTarget","ev","GlobalEvent","eventInitDict","host","attributesHandler","isVoid","classList","Event","previously","mode","shadowRoot","init","ShadowRoot","position","addNext","isOpened","classNames","illegalConstructor","_Attr","_CDATASection","_CharacterData","_Comment","_DocumentFragment","_DocumentType","_Element","_Node","_ShadowRoot","_Text","SVGElement","_SVGElement","Facades","Level0","level0","handlers","ownerLess","clickEvent","accessKey","HTMLElement","HTMLHtmlElement","toString","TextElement","HTMLScriptElement","HTMLFrameElement","HTMLIFrameElement","HTMLObjectElement","HTMLHeadElement","HTMLBodyElement","CSSOM","StyleSheet","CSSRule","require$$1","ruleText","state","buffer","SIGNIFICANT_WHITESPACE","styleRule","priority","character","CSSStyleRule","cssRule","CSSStyleSheet","require$$2","medium","MediaList","mediaText","CSSImportRule","CSSGroupingRule","CSSConditionRule","require$$3","cssTexts","CSSMediaRule","CSSSupportsRule","CSSFontFaceRule","CSSHostRule","CSSKeyframeRule","CSSKeyframesRule","CSSValue","expression","paren","nextChar","endIdx","commentEndChar","sep","legalRegx","isLegal","reg","NOT_FOUND","matched","nextNewLineIdx","CSSValueExpression","matcher","MatcherList","CSSDocumentRule","valueParenthesisDepth","styleSheet","currentScope","parentRule","ancestorRules","hasAncestors","prevScope","mediaRule","supportsRule","importRule","fontFaceRule","keyframesRule","documentRule","hostRule","atKeyframesRegExp","parseError","message","lineCount","charCount","matchKeyframes","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","prevValue","properties","dummyRule","require$$14","require$$19","HTMLStyleElement","sheet","HTMLTimeElement","HTMLFieldSetElement","HTMLEmbedElement","HTMLHRElement","HTMLProgressElement","HTMLParagraphElement","HTMLTableElement","HTMLFrameSetElement","HTMLLIElement","HTMLBaseElement","HTMLDataListElement","HTMLInputElement","HTMLParamElement","HTMLMediaElement","HTMLAudioElement","HTMLHeadingElement","HTMLDirectoryElement","HTMLQuoteElement","Canvas","canvasShim","canvasModule","createCanvas","HTMLCanvasElement","HTMLLegendElement","HTMLOptionElement","HTMLSpanElement","HTMLMeterElement","HTMLVideoElement","HTMLTableCellElement","HTMLTitleElement","HTMLOutputElement","HTMLTableRowElement","HTMLDataElement","HTMLMenuElement","HTMLSelectElement","HTMLBRElement","HTMLButtonElement","HTMLMapElement","HTMLOptGroupElement","HTMLDListElement","HTMLTextAreaElement","HTMLFontElement","HTMLDivElement","HTMLLinkElement","HTMLSlotElement","isNamedSlot","hostChildNodes","slottables","slottable","HTMLImageElement","HTMLPreElement","HTMLUListElement","HTMLMetaElement","HTMLPictureElement","HTMLAreaElement","HTMLOListElement","HTMLTableCaptionElement","HTMLAnchorElement","HTMLLabelElement","HTMLUnknownElement","HTMLModElement","HTMLDetailsElement","HTMLSourceElement","HTMLTrackElement","HTMLMarqueeElement","HTMLClasses","Mime","CustomEvent","InputEvent","inputEventInit","ImageClass","deleteContents","Range","isSVG","range","isOK","mask","TreeWalker","whatToShow","documentElement","$","globalExports","globalThis","et","docType","canBubble","cancelable","detail","doctype","externalNode","upgrade","nsp","_Document","textToId","spaces","anythingButSpacesAndLetters","punctuationToStrip"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,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,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230]}