{"version":3,"file":"GovernancePage-cGJ0_WvS.js","sources":["../../node_modules/@mantine/core/esm/core/utils/memoize/memoize.mjs","../../node_modules/@mantine/core/esm/components/Collapse/use-collapse.mjs","../../node_modules/@mantine/core/esm/components/Collapse/Collapse.mjs","../../node_modules/@mantine/core/esm/components/ColorSwatch/ColorSwatch.module.css.mjs","../../node_modules/@mantine/core/esm/components/ColorSwatch/ColorSwatch.mjs","../../node_modules/@mantine/core/esm/components/Tree/TreeNode.mjs","../../node_modules/@mantine/core/esm/components/Tree/get-all-checked-nodes/get-all-checked-nodes.mjs","../../node_modules/@mantine/core/esm/components/Tree/get-children-nodes-values/get-children-nodes-values.mjs","../../node_modules/@mantine/core/esm/components/Tree/is-node-checked/is-node-checked.mjs","../../node_modules/@mantine/core/esm/components/Tree/is-node-indeterminate/is-node-indeterminate.mjs","../../node_modules/@mantine/core/esm/components/Tree/use-tree.mjs","../../node_modules/@mantine/core/esm/components/Tree/Tree.module.css.mjs","../../node_modules/@mantine/core/esm/components/Tree/Tree.mjs","../../node_modules/@tabler/icons-react/dist/esm/icons/IconCheckbox.mjs","../../node_modules/@tabler/icons-react/dist/esm/icons/IconChecklist.mjs","../../node_modules/@tabler/icons-react/dist/esm/icons/IconLaurelWreath1.mjs","../../node_modules/@tabler/icons-react/dist/esm/icons/IconLaurelWreath2.mjs","../../node_modules/@tabler/icons-react/dist/esm/icons/IconLaurelWreath3.mjs","../../node_modules/@tabler/icons-react/dist/esm/icons/IconLoader.mjs","../../node_modules/@tabler/icons-react/dist/esm/icons/IconReportAnalytics.mjs","../../node_modules/@tabler/icons-react/dist/esm/icons/IconSpeakerphone.mjs","../../node_modules/@tabler/icons-react/dist/esm/icons/IconUsers.mjs","../../node_modules/@tabler/icons-react/dist/esm/icons/IconPointFilled.mjs","../../node_modules/@mantine/charts/esm/ChartLegend/ChartLegend.module.css.mjs","../../node_modules/@mantine/charts/esm/ChartLegend/ChartLegend.mjs","../../node_modules/recharts/es6/util/getEveryNthWithCondition.js","../../node_modules/recharts/es6/util/TickUtils.js","../../node_modules/recharts/es6/cartesian/getEquidistantTicks.js","../../node_modules/recharts/es6/cartesian/getTicks.js","../../node_modules/recharts/es6/cartesian/CartesianAxis.js","../../node_modules/recharts/es6/cartesian/CartesianGrid.js","../../node_modules/recharts/es6/cartesian/Area.js","../../node_modules/recharts/es6/cartesian/XAxis.js","../../node_modules/recharts/es6/cartesian/YAxis.js","../../node_modules/recharts/es6/chart/AreaChart.js","../../node_modules/@mantine/charts/esm/PointLabel/PointLabel.mjs","../../node_modules/@mantine/charts/esm/AreaChart/AreaGradient.mjs","../../node_modules/@mantine/charts/esm/AreaChart/AreaSplit.mjs","../../node_modules/@mantine/charts/esm/AreaChart/get-split-offset.mjs","../../node_modules/@mantine/charts/esm/grid-chart.module.css.mjs","../../node_modules/@mantine/charts/esm/AreaChart/AreaChart.mjs","../../src/components/Governance/GovInfo.tsx","../../src/components/Governance/GovernanceList/ListActions/CampaignAction.tsx","../../src/components/Governance/GovernanceList/ListActions/NominationAction.tsx","../../src/components/Governance/GovernanceList/VoteInput.tsx","../../src/components/Governance/GovernanceList/ListActions/VotingAction.tsx","../../src/components/PodiumIcon.tsx","../../src/components/Governance/GovernanceList/ListNumber.tsx","../../src/components/Governance/GovernanceList/NominatedBy.tsx","../../src/components/Governance/GovernanceList/NomineeCard.tsx","../../node_modules/crypto-js/x64-core.js","../../node_modules/crypto-js/lib-typedarrays.js","../../node_modules/crypto-js/enc-utf16.js","../../node_modules/crypto-js/enc-base64.js","../../node_modules/crypto-js/enc-base64url.js","../../node_modules/crypto-js/md5.js","../../node_modules/crypto-js/sha1.js","../../node_modules/crypto-js/sha224.js","../../node_modules/crypto-js/sha512.js","../../node_modules/crypto-js/sha384.js","../../node_modules/crypto-js/sha3.js","../../node_modules/crypto-js/ripemd160.js","../../node_modules/crypto-js/hmac.js","../../node_modules/crypto-js/pbkdf2.js","../../node_modules/crypto-js/evpkdf.js","../../node_modules/crypto-js/cipher-core.js","../../node_modules/crypto-js/mode-cfb.js","../../node_modules/crypto-js/mode-ctr.js","../../node_modules/crypto-js/mode-ctr-gladman.js","../../node_modules/crypto-js/mode-ofb.js","../../node_modules/crypto-js/mode-ecb.js","../../node_modules/crypto-js/pad-ansix923.js","../../node_modules/crypto-js/pad-iso10126.js","../../node_modules/crypto-js/pad-iso97971.js","../../node_modules/crypto-js/pad-zeropadding.js","../../node_modules/crypto-js/pad-nopadding.js","../../node_modules/crypto-js/format-hex.js","../../node_modules/crypto-js/aes.js","../../node_modules/crypto-js/tripledes.js","../../node_modules/crypto-js/rc4.js","../../node_modules/crypto-js/rabbit.js","../../node_modules/crypto-js/rabbit-legacy.js","../../node_modules/crypto-js/blowfish.js","../../node_modules/crypto-js/index.js","../../node_modules/buffer-reverse/index.js","../../node_modules/treeify/treeify.js","../../node_modules/merkletreejs/dist/Base.js","../../node_modules/merkletreejs/dist/MerkleTree.js","../../node_modules/merkletreejs/dist/MerkleMountainRange.js","../../node_modules/merkletreejs/dist/IncrementalMerkleTree.js","../../node_modules/merkletreejs/dist/MerkleSumTree.js","../../node_modules/merkletreejs/dist/MerkleRadixTree.js","../../node_modules/merkletreejs/dist/UnifiedBinaryTree.js","../../node_modules/merkletreejs/dist/index.js","../../src/components/Modals/Governance/utils.tsx","../../src/components/Modals/Governance/ProofModal.tsx","../../src/components/Governance/GovernanceList/VotesCard.tsx","../../src/components/Governance/GovernanceList/NomineesList.tsx","../../src/components/Governance/GovernanceSteps/Campaign.tsx","../../src/components/Modals/Governance/NominateModal.tsx","../../node_modules/dayjs/dayjs.min.js","../../node_modules/@mantine/dates/esm/utils/handle-control-key-down.mjs","../../node_modules/@mantine/dates/esm/utils/assign-time/assign-time.mjs","../../node_modules/dayjs/plugin/timezone.js","../../node_modules/dayjs/plugin/utc.js","../../node_modules/@mantine/dates/esm/utils/get-timezone-offset.mjs","../../node_modules/@mantine/dates/esm/utils/shift-timezone.mjs","../../node_modules/@mantine/dates/esm/components/DatesProvider/DatesProvider.mjs","../../node_modules/@mantine/dates/esm/components/DatesProvider/use-dates-context.mjs","../../node_modules/@mantine/dates/esm/components/HiddenDatesInput/HiddenDatesInput.mjs","../../node_modules/@mantine/dates/esm/components/TimeInput/TimeInput.module.css.mjs","../../node_modules/@mantine/dates/esm/components/TimeInput/TimeInput.mjs","../../node_modules/@mantine/dates/esm/components/Day/Day.module.css.mjs","../../node_modules/@mantine/dates/esm/components/Day/Day.mjs","../../node_modules/@mantine/dates/esm/components/WeekdaysRow/get-weekdays-names/get-weekdays-names.mjs","../../node_modules/@mantine/dates/esm/components/WeekdaysRow/WeekdaysRow.module.css.mjs","../../node_modules/@mantine/dates/esm/components/WeekdaysRow/WeekdaysRow.mjs","../../node_modules/@mantine/dates/esm/components/Month/get-end-of-week/get-end-of-week.mjs","../../node_modules/@mantine/dates/esm/components/Month/get-start-of-week/get-start-of-week.mjs","../../node_modules/@mantine/dates/esm/components/Month/get-month-days/get-month-days.mjs","../../node_modules/@mantine/dates/esm/components/Month/is-same-month/is-same-month.mjs","../../node_modules/@mantine/dates/esm/components/Month/is-after-min-date/is-after-min-date.mjs","../../node_modules/@mantine/dates/esm/components/Month/is-before-max-date/is-before-max-date.mjs","../../node_modules/@mantine/dates/esm/components/Month/get-date-in-tab-order/get-date-in-tab-order.mjs","../../node_modules/@mantine/dates/esm/components/Month/Month.module.css.mjs","../../node_modules/@mantine/dates/esm/components/Month/Month.mjs","../../node_modules/@mantine/dates/esm/components/PickerControl/PickerControl.module.css.mjs","../../node_modules/@mantine/dates/esm/components/PickerControl/PickerControl.mjs","../../node_modules/@mantine/dates/esm/components/YearsList/is-year-disabled/is-year-disabled.mjs","../../node_modules/@mantine/dates/esm/components/YearsList/get-year-in-tab-order/get-year-in-tab-order.mjs","../../node_modules/@mantine/dates/esm/components/YearsList/get-years-data/get-years-data.mjs","../../node_modules/@mantine/dates/esm/components/YearsList/YearsList.module.css.mjs","../../node_modules/@mantine/dates/esm/components/YearsList/YearsList.mjs","../../node_modules/@mantine/dates/esm/components/MonthsList/is-month-disabled/is-month-disabled.mjs","../../node_modules/@mantine/dates/esm/components/MonthsList/get-month-in-tab-order/get-month-in-tab-order.mjs","../../node_modules/@mantine/dates/esm/components/MonthsList/get-months-data/get-months-data.mjs","../../node_modules/@mantine/dates/esm/components/MonthsList/MonthsList.module.css.mjs","../../node_modules/@mantine/dates/esm/components/MonthsList/MonthsList.mjs","../../node_modules/@mantine/dates/esm/components/CalendarHeader/CalendarHeader.module.css.mjs","../../node_modules/@mantine/dates/esm/components/CalendarHeader/CalendarHeader.mjs","../../node_modules/@mantine/dates/esm/components/DecadeLevel/get-decade-range/get-decade-range.mjs","../../node_modules/@mantine/dates/esm/components/DecadeLevel/DecadeLevel.mjs","../../node_modules/@mantine/dates/esm/components/YearLevel/YearLevel.mjs","../../node_modules/@mantine/dates/esm/components/MonthLevel/MonthLevel.mjs","../../node_modules/@mantine/dates/esm/components/LevelsGroup/LevelsGroup.module.css.mjs","../../node_modules/@mantine/dates/esm/components/LevelsGroup/LevelsGroup.mjs","../../node_modules/@mantine/dates/esm/components/DecadeLevelGroup/DecadeLevelGroup.mjs","../../node_modules/@mantine/dates/esm/components/YearLevelGroup/YearLevelGroup.mjs","../../node_modules/@mantine/dates/esm/components/MonthLevelGroup/MonthLevelGroup.mjs","../../node_modules/@mantine/dates/esm/components/PickerInputBase/PickerInputBase.module.css.mjs","../../node_modules/@mantine/dates/esm/components/PickerInputBase/PickerInputBase.mjs","../../node_modules/@mantine/dates/esm/hooks/use-uncontrolled-dates/use-uncontrolled-dates.mjs","../../node_modules/@mantine/dates/esm/components/Calendar/clamp-level/clamp-level.mjs","../../node_modules/@mantine/dates/esm/components/Calendar/Calendar.mjs","../../node_modules/@mantine/dates/esm/components/Calendar/pick-calendar-levels-props/pick-calendar-levels-props.mjs","../../node_modules/@mantine/dates/esm/hooks/use-dates-state/is-in-range/is-in-range.mjs","../../node_modules/@mantine/dates/esm/hooks/use-dates-state/use-dates-state.mjs","../../node_modules/@mantine/dates/esm/components/DatePicker/DatePicker.mjs","../../node_modules/@mantine/dates/esm/components/DateTimePicker/DateTimePicker.module.css.mjs","../../node_modules/@mantine/dates/esm/components/DateTimePicker/DateTimePicker.mjs","../../node_modules/date-fns/constants.js","../../node_modules/date-fns/constructFrom.js","../../node_modules/date-fns/toDate.js","../../node_modules/date-fns/_lib/defaultOptions.js","../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../../node_modules/date-fns/_lib/normalizeDates.js","../../node_modules/date-fns/compareAsc.js","../../node_modules/date-fns/differenceInCalendarMonths.js","../../node_modules/date-fns/_lib/getRoundingMethod.js","../../node_modules/date-fns/differenceInMilliseconds.js","../../node_modules/date-fns/endOfDay.js","../../node_modules/date-fns/endOfMonth.js","../../node_modules/date-fns/isLastDayOfMonth.js","../../node_modules/date-fns/differenceInMonths.js","../../node_modules/date-fns/differenceInSeconds.js","../../node_modules/date-fns/locale/en-US/_lib/formatDistance.js","../../node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../../node_modules/date-fns/locale/en-US/_lib/formatLong.js","../../node_modules/date-fns/locale/en-US/_lib/formatRelative.js","../../node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../../node_modules/date-fns/locale/en-US/_lib/localize.js","../../node_modules/date-fns/locale/_lib/buildMatchFn.js","../../node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../../node_modules/date-fns/locale/en-US/_lib/match.js","../../node_modules/date-fns/locale/en-US.js","../../node_modules/date-fns/formatDistance.js","../../src/components/Modals/Governance/StartElectionModal.tsx","../../src/components/Governance/GovernanceSteps/Nomination.tsx","../../src/components/Governance/GovernanceSteps/Results.tsx","../../src/components/Governance/GovernanceSteps/Voting.tsx","../../src/components/Governance/GovernanceSteps/GovernanceStepper.tsx","../../src/components/Governance/GovernancePage.tsx"],"sourcesContent":["'use client';\nfunction memoize(func) {\n const cache = /* @__PURE__ */ new Map();\n return (...args) => {\n const key = JSON.stringify(args);\n if (cache.has(key)) {\n return cache.get(key);\n }\n const result = func(...args);\n cache.set(key, result);\n return result;\n };\n}\n\nexport { memoize };\n//# sourceMappingURL=memoize.mjs.map\n","'use client';\nimport { useRef, useState } from 'react';\nimport { flushSync } from 'react-dom';\nimport { useDidUpdate, mergeRefs } from '@mantine/hooks';\n\nfunction getAutoHeightDuration(height) {\n if (!height || typeof height === \"string\") {\n return 0;\n }\n const constant = height / 36;\n return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);\n}\nfunction getElementHeight(el) {\n return el?.current ? el.current.scrollHeight : \"auto\";\n}\nconst raf = typeof window !== \"undefined\" && window.requestAnimationFrame;\nfunction useCollapse({\n transitionDuration,\n transitionTimingFunction = \"ease\",\n onTransitionEnd = () => {\n },\n opened\n}) {\n const el = useRef(null);\n const collapsedHeight = 0;\n const collapsedStyles = {\n display: \"none\",\n height: 0,\n overflow: \"hidden\"\n };\n const [styles, setStylesRaw] = useState(opened ? {} : collapsedStyles);\n const setStyles = (newStyles) => {\n flushSync(() => setStylesRaw(newStyles));\n };\n const mergeStyles = (newStyles) => {\n setStyles((oldStyles) => ({ ...oldStyles, ...newStyles }));\n };\n function getTransitionStyles(height) {\n const _duration = transitionDuration || getAutoHeightDuration(height);\n return {\n transition: `height ${_duration}ms ${transitionTimingFunction}, opacity ${_duration}ms ${transitionTimingFunction}`\n };\n }\n useDidUpdate(() => {\n if (typeof raf === \"function\") {\n if (opened) {\n raf(() => {\n mergeStyles({ willChange: \"height\", display: \"block\", overflow: \"hidden\" });\n raf(() => {\n const height = getElementHeight(el);\n mergeStyles({ ...getTransitionStyles(height), height });\n });\n });\n } else {\n raf(() => {\n const height = getElementHeight(el);\n mergeStyles({ ...getTransitionStyles(height), willChange: \"height\", height });\n raf(() => mergeStyles({ height: collapsedHeight, overflow: \"hidden\" }));\n });\n }\n }\n }, [opened]);\n const handleTransitionEnd = (e) => {\n if (e.target !== el.current || e.propertyName !== \"height\") {\n return;\n }\n if (opened) {\n const height = getElementHeight(el);\n if (height === styles.height) {\n setStyles({});\n } else {\n mergeStyles({ height });\n }\n onTransitionEnd();\n } else if (styles.height === collapsedHeight) {\n setStyles(collapsedStyles);\n onTransitionEnd();\n }\n };\n function getCollapseProps({ style = {}, refKey = \"ref\", ...rest } = {}) {\n const theirRef = rest[refKey];\n return {\n \"aria-hidden\": !opened,\n ...rest,\n [refKey]: mergeRefs(el, theirRef),\n onTransitionEnd: handleTransitionEnd,\n style: { boxSizing: \"border-box\", ...style, ...styles }\n };\n }\n return getCollapseProps;\n}\n\nexport { getElementHeight, useCollapse };\n//# sourceMappingURL=use-collapse.mjs.map\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { useReducedMotion } from '@mantine/hooks';\nimport 'react';\nimport 'clsx';\nimport '../../core/MantineProvider/Mantine.context.mjs';\nimport '../../core/MantineProvider/default-theme.mjs';\nimport '../../core/MantineProvider/MantineProvider.mjs';\nimport { useMantineTheme } from '../../core/MantineProvider/MantineThemeProvider/MantineThemeProvider.mjs';\nimport { useProps } from '../../core/MantineProvider/use-props/use-props.mjs';\nimport '../../core/MantineProvider/MantineCssVariables/MantineCssVariables.mjs';\nimport { getStyleObject } from '../../core/Box/get-style-object/get-style-object.mjs';\nimport { Box } from '../../core/Box/Box.mjs';\nimport { factory } from '../../core/factory/factory.mjs';\nimport '../../core/DirectionProvider/DirectionProvider.mjs';\nimport { useCollapse } from './use-collapse.mjs';\n\nconst defaultProps = {\n transitionDuration: 200,\n transitionTimingFunction: \"ease\",\n animateOpacity: true\n};\nconst Collapse = factory((props, ref) => {\n const {\n children,\n in: opened,\n transitionDuration,\n transitionTimingFunction,\n style,\n onTransitionEnd,\n animateOpacity,\n ...others\n } = useProps(\"Collapse\", defaultProps, props);\n const theme = useMantineTheme();\n const shouldReduceMotion = useReducedMotion();\n const reduceMotion = theme.respectReducedMotion ? shouldReduceMotion : false;\n const duration = reduceMotion ? 0 : transitionDuration;\n const getCollapseProps = useCollapse({\n opened,\n transitionDuration: duration,\n transitionTimingFunction,\n onTransitionEnd\n });\n if (duration === 0) {\n return opened ? /* @__PURE__ */ jsx(Box, { ...others, children }) : null;\n }\n return /* @__PURE__ */ jsx(\n Box,\n {\n ...getCollapseProps({\n style: {\n opacity: opened || !animateOpacity ? 1 : 0,\n transition: animateOpacity ? `opacity ${duration}ms ${transitionTimingFunction}` : \"none\",\n ...getStyleObject(style, theme)\n },\n ref,\n ...others\n }),\n children\n }\n );\n});\nCollapse.displayName = \"@mantine/core/Collapse\";\n\nexport { Collapse };\n//# sourceMappingURL=Collapse.mjs.map\n","'use client';\nvar classes = {\"root\":\"m_de3d2490\",\"colorOverlay\":\"m_862f3d1b\",\"shadowOverlay\":\"m_98ae7f22\",\"alphaOverlay\":\"m_95709ac0\",\"childrenOverlay\":\"m_93e74e3\"};\n\nexport { classes as default };\n//# sourceMappingURL=ColorSwatch.module.css.mjs.map\n","'use client';\nimport { jsxs, jsx } from 'react/jsx-runtime';\nimport { rem } from '../../core/utils/units-converters/rem.mjs';\nimport 'react';\nimport { getRadius } from '../../core/utils/get-size/get-size.mjs';\nimport '@mantine/hooks';\nimport { createVarsResolver } from '../../core/styles-api/create-vars-resolver/create-vars-resolver.mjs';\nimport 'clsx';\nimport '../../core/MantineProvider/Mantine.context.mjs';\nimport '../../core/MantineProvider/default-theme.mjs';\nimport '../../core/MantineProvider/MantineProvider.mjs';\nimport '../../core/MantineProvider/MantineThemeProvider/MantineThemeProvider.mjs';\nimport { useProps } from '../../core/MantineProvider/use-props/use-props.mjs';\nimport '../../core/MantineProvider/MantineCssVariables/MantineCssVariables.mjs';\nimport { useStyles } from '../../core/styles-api/use-styles/use-styles.mjs';\nimport { Box } from '../../core/Box/Box.mjs';\nimport { polymorphicFactory } from '../../core/factory/polymorphic-factory.mjs';\nimport '../../core/DirectionProvider/DirectionProvider.mjs';\nimport classes from './ColorSwatch.module.css.mjs';\n\nconst defaultProps = {\n withShadow: true\n};\nconst varsResolver = createVarsResolver((_, { radius, size }) => ({\n root: {\n \"--cs-radius\": radius === void 0 ? void 0 : getRadius(radius),\n \"--cs-size\": rem(size)\n }\n}));\nconst ColorSwatch = polymorphicFactory((_props, ref) => {\n const props = useProps(\"ColorSwatch\", defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n color,\n size,\n radius,\n withShadow,\n children,\n variant,\n ...others\n } = useProps(\"ColorSwatch\", defaultProps, props);\n const getStyles = useStyles({\n name: \"ColorSwatch\",\n props,\n classes,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n varsResolver\n });\n return /* @__PURE__ */ jsxs(\n Box,\n {\n ref,\n variant,\n size,\n ...getStyles(\"root\", { focusable: true }),\n ...others,\n children: [\n /* @__PURE__ */ jsx(\"span\", { ...getStyles(\"alphaOverlay\") }),\n withShadow && /* @__PURE__ */ jsx(\"span\", { ...getStyles(\"shadowOverlay\") }),\n /* @__PURE__ */ jsx(\"span\", { ...getStyles(\"colorOverlay\", { style: { backgroundColor: color } }) }),\n /* @__PURE__ */ jsx(\"span\", { ...getStyles(\"childrenOverlay\"), children })\n ]\n }\n );\n});\nColorSwatch.classes = classes;\nColorSwatch.displayName = \"@mantine/core/ColorSwatch\";\n\nexport { ColorSwatch };\n//# sourceMappingURL=ColorSwatch.mjs.map\n","'use client';\nimport { jsx, jsxs } from 'react/jsx-runtime';\nimport { useRef } from 'react';\nimport { findElementAncestor } from '../../core/utils/find-element-ancestor/find-element-ancestor.mjs';\nimport '@mantine/hooks';\nimport 'clsx';\nimport '../../core/MantineProvider/Mantine.context.mjs';\nimport '../../core/MantineProvider/default-theme.mjs';\nimport '../../core/MantineProvider/MantineProvider.mjs';\nimport '../../core/MantineProvider/MantineThemeProvider/MantineThemeProvider.mjs';\nimport '../../core/MantineProvider/MantineCssVariables/MantineCssVariables.mjs';\nimport '../../core/Box/Box.mjs';\nimport '../../core/DirectionProvider/DirectionProvider.mjs';\n\nfunction getValuesRange(anchor, value, flatValues) {\n if (!anchor || !value) {\n return [];\n }\n const anchorIndex = flatValues.indexOf(anchor);\n const valueIndex = flatValues.indexOf(value);\n const start = Math.min(anchorIndex, valueIndex);\n const end = Math.max(anchorIndex, valueIndex);\n return flatValues.slice(start, end + 1);\n}\nfunction TreeNode({\n node,\n getStyles,\n rootIndex,\n controller,\n expandOnClick,\n selectOnClick,\n isSubtree,\n level = 1,\n renderNode,\n flatValues,\n allowRangeSelection,\n expandOnSpace\n}) {\n const ref = useRef(null);\n const nested = (node.children || []).map((child) => /* @__PURE__ */ jsx(\n TreeNode,\n {\n node: child,\n flatValues,\n getStyles,\n rootIndex: void 0,\n level: level + 1,\n controller,\n expandOnClick,\n isSubtree: true,\n renderNode,\n selectOnClick,\n allowRangeSelection,\n expandOnSpace\n },\n child.value\n ));\n const handleKeyDown = (event) => {\n if (event.nativeEvent.code === \"ArrowRight\") {\n event.stopPropagation();\n event.preventDefault();\n if (controller.expandedState[node.value]) {\n event.currentTarget.querySelector(\"[role=treeitem]\")?.focus();\n } else {\n controller.expand(node.value);\n }\n }\n if (event.nativeEvent.code === \"ArrowLeft\") {\n event.stopPropagation();\n event.preventDefault();\n if (controller.expandedState[node.value] && (node.children || []).length > 0) {\n controller.collapse(node.value);\n } else if (isSubtree) {\n findElementAncestor(event.currentTarget, \"[role=treeitem]\")?.focus();\n }\n }\n if (event.nativeEvent.code === \"ArrowDown\" || event.nativeEvent.code === \"ArrowUp\") {\n const root = findElementAncestor(event.currentTarget, \"[data-tree-root]\");\n if (!root) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n const nodes = Array.from(root.querySelectorAll(\"[role=treeitem]\"));\n const index = nodes.indexOf(event.currentTarget);\n if (index === -1) {\n return;\n }\n const nextIndex = event.nativeEvent.code === \"ArrowDown\" ? index + 1 : index - 1;\n nodes[nextIndex]?.focus();\n if (event.shiftKey) {\n const selectNode = nodes[nextIndex];\n if (selectNode) {\n controller.setSelectedState(\n getValuesRange(controller.anchorNode, selectNode.dataset.value, flatValues)\n );\n }\n }\n }\n if (event.nativeEvent.code === \"Space\" && expandOnSpace) {\n event.stopPropagation();\n event.preventDefault();\n controller.toggleExpanded(node.value);\n }\n };\n const handleNodeClick = (event) => {\n event.stopPropagation();\n if (allowRangeSelection && event.shiftKey && controller.anchorNode) {\n controller.setSelectedState(getValuesRange(controller.anchorNode, node.value, flatValues));\n ref.current?.focus();\n } else {\n expandOnClick && controller.toggleExpanded(node.value);\n selectOnClick && controller.select(node.value);\n ref.current?.focus();\n }\n };\n const selected = controller.selectedState.includes(node.value);\n const elementProps = {\n ...getStyles(\"label\"),\n onClick: handleNodeClick,\n \"data-selected\": selected || void 0,\n \"data-value\": node.value,\n \"data-hovered\": controller.hoveredNode === node.value || void 0\n };\n return /* @__PURE__ */ jsxs(\n \"li\",\n {\n ...getStyles(\"node\", {\n style: { \"--label-offset\": `calc(var(--level-offset) * ${level - 1})` }\n }),\n role: \"treeitem\",\n \"aria-selected\": selected,\n \"data-value\": node.value,\n \"data-selected\": selected || void 0,\n \"data-hovered\": controller.hoveredNode === node.value || void 0,\n \"data-level\": level,\n tabIndex: rootIndex === 0 ? 0 : -1,\n onKeyDown: handleKeyDown,\n ref,\n onMouseOver: (event) => {\n event.stopPropagation();\n controller.setHoveredNode(node.value);\n },\n onMouseLeave: (event) => {\n event.stopPropagation();\n controller.setHoveredNode(null);\n },\n children: [\n typeof renderNode === \"function\" ? renderNode({\n node,\n level,\n selected,\n tree: controller,\n expanded: controller.expandedState[node.value] || false,\n hasChildren: Array.isArray(node.children) && node.children.length > 0,\n elementProps\n }) : /* @__PURE__ */ jsx(\"div\", { ...elementProps, children: node.label }),\n controller.expandedState[node.value] && nested.length > 0 && /* @__PURE__ */ jsx(\"ul\", { role: \"group\", ...getStyles(\"subtree\"), \"data-level\": level, children: nested })\n ]\n }\n );\n}\nTreeNode.displayName = \"@mantine/core/TreeNode\";\n\nexport { TreeNode };\n//# sourceMappingURL=TreeNode.mjs.map\n","'use client';\nfunction getAllCheckedNodes(data, checkedState, acc = []) {\n const currentTreeChecked = [];\n for (const node of data) {\n if (Array.isArray(node.children) && node.children.length > 0) {\n const innerChecked = getAllCheckedNodes(node.children, checkedState, acc);\n if (innerChecked.currentTreeChecked.length === node.children.length) {\n const isChecked = innerChecked.currentTreeChecked.every((item2) => item2.checked);\n const item = {\n checked: isChecked,\n indeterminate: !isChecked,\n value: node.value,\n hasChildren: true\n };\n currentTreeChecked.push(item);\n acc.push(item);\n } else if (innerChecked.currentTreeChecked.length > 0) {\n const item = { checked: false, indeterminate: true, value: node.value, hasChildren: true };\n currentTreeChecked.push(item);\n acc.push(item);\n }\n } else if (checkedState.includes(node.value)) {\n const item = {\n checked: true,\n indeterminate: false,\n value: node.value,\n hasChildren: false\n };\n currentTreeChecked.push(item);\n acc.push(item);\n }\n }\n return { result: acc, currentTreeChecked };\n}\n\nexport { getAllCheckedNodes };\n//# sourceMappingURL=get-all-checked-nodes.mjs.map\n","'use client';\nfunction findTreeNode(value, data) {\n for (const node of data) {\n if (node.value === value) {\n return node;\n }\n if (Array.isArray(node.children)) {\n const childNode = findTreeNode(value, node.children);\n if (childNode) {\n return childNode;\n }\n }\n }\n return null;\n}\nfunction getChildrenNodesValues(value, data, acc = []) {\n const node = findTreeNode(value, data);\n if (!node) {\n return acc;\n }\n if (!Array.isArray(node.children) || node.children.length === 0) {\n return [node.value];\n }\n node.children.forEach((child) => {\n if (Array.isArray(child.children) && child.children.length > 0) {\n getChildrenNodesValues(child.value, data, acc);\n } else {\n acc.push(child.value);\n }\n });\n return acc;\n}\nfunction getAllChildrenNodes(data) {\n return data.reduce((acc, node) => {\n if (Array.isArray(node.children) && node.children.length > 0) {\n acc.push(...getAllChildrenNodes(node.children));\n } else {\n acc.push(node.value);\n }\n return acc;\n }, []);\n}\n\nexport { findTreeNode, getAllChildrenNodes, getChildrenNodesValues };\n//# sourceMappingURL=get-children-nodes-values.mjs.map\n","'use client';\nimport 'react';\nimport 'react/jsx-runtime';\nimport '@mantine/hooks';\nimport { memoize } from '../../../core/utils/memoize/memoize.mjs';\nimport 'clsx';\nimport '../../../core/MantineProvider/Mantine.context.mjs';\nimport '../../../core/MantineProvider/default-theme.mjs';\nimport '../../../core/MantineProvider/MantineProvider.mjs';\nimport '../../../core/MantineProvider/MantineThemeProvider/MantineThemeProvider.mjs';\nimport '../../../core/MantineProvider/MantineCssVariables/MantineCssVariables.mjs';\nimport '../../../core/Box/Box.mjs';\nimport '../../../core/DirectionProvider/DirectionProvider.mjs';\nimport { getAllCheckedNodes } from '../get-all-checked-nodes/get-all-checked-nodes.mjs';\n\nfunction isNodeChecked(value, data, checkedState) {\n if (checkedState.length === 0) {\n return false;\n }\n if (checkedState.includes(value)) {\n return true;\n }\n const checkedNodes = getAllCheckedNodes(data, checkedState).result;\n return checkedNodes.some((node) => node.value === value && node.checked);\n}\nconst memoizedIsNodeChecked = memoize(isNodeChecked);\n\nexport { isNodeChecked, memoizedIsNodeChecked };\n//# sourceMappingURL=is-node-checked.mjs.map\n","'use client';\nimport 'react';\nimport 'react/jsx-runtime';\nimport '@mantine/hooks';\nimport { memoize } from '../../../core/utils/memoize/memoize.mjs';\nimport 'clsx';\nimport '../../../core/MantineProvider/Mantine.context.mjs';\nimport '../../../core/MantineProvider/default-theme.mjs';\nimport '../../../core/MantineProvider/MantineProvider.mjs';\nimport '../../../core/MantineProvider/MantineThemeProvider/MantineThemeProvider.mjs';\nimport '../../../core/MantineProvider/MantineCssVariables/MantineCssVariables.mjs';\nimport '../../../core/Box/Box.mjs';\nimport '../../../core/DirectionProvider/DirectionProvider.mjs';\nimport { getAllCheckedNodes } from '../get-all-checked-nodes/get-all-checked-nodes.mjs';\n\nfunction isNodeIndeterminate(value, data, checkedState) {\n if (checkedState.length === 0) {\n return false;\n }\n const checkedNodes = getAllCheckedNodes(data, checkedState).result;\n return checkedNodes.some((node) => node.value === value && node.indeterminate);\n}\nconst memoizedIsNodeIndeterminate = memoize(isNodeIndeterminate);\n\nexport { isNodeIndeterminate, memoizedIsNodeIndeterminate };\n//# sourceMappingURL=is-node-indeterminate.mjs.map\n","'use client';\nimport { useState, useCallback } from 'react';\nimport { getAllCheckedNodes } from './get-all-checked-nodes/get-all-checked-nodes.mjs';\nimport { getChildrenNodesValues, getAllChildrenNodes } from './get-children-nodes-values/get-children-nodes-values.mjs';\nimport { memoizedIsNodeChecked } from './is-node-checked/is-node-checked.mjs';\nimport { memoizedIsNodeIndeterminate } from './is-node-indeterminate/is-node-indeterminate.mjs';\n\nfunction getInitialTreeExpandedState(initialState, data, value, acc = {}) {\n data.forEach((node) => {\n acc[node.value] = node.value in initialState ? initialState[node.value] : node.value === value;\n if (Array.isArray(node.children)) {\n getInitialTreeExpandedState(initialState, node.children, value, acc);\n }\n });\n return acc;\n}\nfunction getTreeExpandedState(data, expandedNodesValues) {\n const state = getInitialTreeExpandedState({}, data, []);\n if (expandedNodesValues === \"*\") {\n return Object.keys(state).reduce((acc, key) => ({ ...acc, [key]: true }), {});\n }\n expandedNodesValues.forEach((node) => {\n state[node] = true;\n });\n return state;\n}\nfunction getInitialCheckedState(initialState, data) {\n const acc = [];\n initialState.forEach((node) => acc.push(...getChildrenNodesValues(node, data)));\n return Array.from(new Set(acc));\n}\nfunction useTree({\n initialSelectedState = [],\n initialCheckedState = [],\n initialExpandedState = {},\n multiple = false,\n onNodeCollapse,\n onNodeExpand\n} = {}) {\n const [data, setData] = useState([]);\n const [expandedState, setExpandedState] = useState(initialExpandedState);\n const [selectedState, setSelectedState] = useState(initialSelectedState);\n const [checkedState, setCheckedState] = useState(initialCheckedState);\n const [anchorNode, setAnchorNode] = useState(null);\n const [hoveredNode, setHoveredNode] = useState(null);\n const initialize = useCallback(\n (_data) => {\n setExpandedState((current) => getInitialTreeExpandedState(current, _data, selectedState));\n setCheckedState((current) => getInitialCheckedState(current, _data));\n setData(_data);\n },\n [selectedState, checkedState]\n );\n const toggleExpanded = useCallback(\n (value) => {\n setExpandedState((current) => {\n const nextState = { ...current, [value]: !current[value] };\n nextState[value] ? onNodeExpand?.(value) : onNodeCollapse?.(value);\n return nextState;\n });\n },\n [onNodeCollapse, onNodeExpand]\n );\n const collapse = useCallback(\n (value) => {\n setExpandedState((current) => {\n if (current[value] !== false) {\n onNodeCollapse?.(value);\n }\n return { ...current, [value]: false };\n });\n },\n [onNodeCollapse]\n );\n const expand = useCallback(\n (value) => {\n setExpandedState((current) => {\n if (current[value] !== true) {\n onNodeExpand?.(value);\n }\n return { ...current, [value]: true };\n });\n },\n [onNodeExpand]\n );\n const expandAllNodes = useCallback(() => {\n setExpandedState((current) => {\n const next = { ...current };\n Object.keys(next).forEach((key) => {\n next[key] = true;\n });\n return next;\n });\n }, []);\n const collapseAllNodes = useCallback(() => {\n setExpandedState((current) => {\n const next = { ...current };\n Object.keys(next).forEach((key) => {\n next[key] = false;\n });\n return next;\n });\n }, []);\n const toggleSelected = useCallback(\n (value) => setSelectedState((current) => {\n if (!multiple) {\n if (current.includes(value)) {\n setAnchorNode(null);\n return [];\n }\n setAnchorNode(value);\n return [value];\n }\n if (current.includes(value)) {\n setAnchorNode(null);\n return current.filter((item) => item !== value);\n }\n setAnchorNode(value);\n return [...current, value];\n }),\n []\n );\n const select = useCallback((value) => {\n setAnchorNode(value);\n setSelectedState(\n (current) => multiple ? current.includes(value) ? current : [...current, value] : [value]\n );\n }, []);\n const deselect = useCallback((value) => {\n anchorNode === value && setAnchorNode(null);\n setSelectedState((current) => current.filter((item) => item !== value));\n }, []);\n const clearSelected = useCallback(() => {\n setSelectedState([]);\n setAnchorNode(null);\n }, []);\n const checkNode = useCallback(\n (value) => {\n const checkedNodes = getChildrenNodesValues(value, data);\n setCheckedState((current) => Array.from(/* @__PURE__ */ new Set([...current, ...checkedNodes])));\n },\n [data]\n );\n const uncheckNode = useCallback(\n (value) => {\n const checkedNodes = getChildrenNodesValues(value, data);\n setCheckedState((current) => current.filter((item) => !checkedNodes.includes(item)));\n },\n [data]\n );\n const checkAllNodes = useCallback(() => {\n setCheckedState(() => getAllChildrenNodes(data));\n }, [data]);\n const uncheckAllNodes = useCallback(() => {\n setCheckedState([]);\n }, []);\n const getCheckedNodes = () => getAllCheckedNodes(data, checkedState).result;\n const isNodeChecked = (value) => memoizedIsNodeChecked(value, data, checkedState);\n const isNodeIndeterminate = (value) => memoizedIsNodeIndeterminate(value, data, checkedState);\n return {\n multiple,\n expandedState,\n selectedState,\n checkedState,\n anchorNode,\n initialize,\n toggleExpanded,\n collapse,\n expand,\n expandAllNodes,\n collapseAllNodes,\n setExpandedState,\n checkNode,\n uncheckNode,\n checkAllNodes,\n uncheckAllNodes,\n setCheckedState,\n toggleSelected,\n select,\n deselect,\n clearSelected,\n setSelectedState,\n hoveredNode,\n setHoveredNode,\n getCheckedNodes,\n isNodeChecked,\n isNodeIndeterminate\n };\n}\n\nexport { getTreeExpandedState, useTree };\n//# sourceMappingURL=use-tree.mjs.map\n","'use client';\nvar classes = {\"root\":\"m_f698e191\",\"subtree\":\"m_75f3ecf\",\"node\":\"m_f6970eb1\",\"label\":\"m_dc283425\"};\n\nexport { classes as default };\n//# sourceMappingURL=Tree.module.css.mjs.map\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { useMemo, useEffect } from 'react';\nimport { useClickOutside, useMergedRef } from '@mantine/hooks';\nimport { getSpacing } from '../../core/utils/get-size/get-size.mjs';\nimport { createVarsResolver } from '../../core/styles-api/create-vars-resolver/create-vars-resolver.mjs';\nimport 'clsx';\nimport '../../core/MantineProvider/Mantine.context.mjs';\nimport '../../core/MantineProvider/default-theme.mjs';\nimport '../../core/MantineProvider/MantineProvider.mjs';\nimport '../../core/MantineProvider/MantineThemeProvider/MantineThemeProvider.mjs';\nimport { useProps } from '../../core/MantineProvider/use-props/use-props.mjs';\nimport '../../core/MantineProvider/MantineCssVariables/MantineCssVariables.mjs';\nimport { useStyles } from '../../core/styles-api/use-styles/use-styles.mjs';\nimport { Box } from '../../core/Box/Box.mjs';\nimport { factory } from '../../core/factory/factory.mjs';\nimport '../../core/DirectionProvider/DirectionProvider.mjs';\nimport { TreeNode } from './TreeNode.mjs';\nimport { useTree } from './use-tree.mjs';\nimport classes from './Tree.module.css.mjs';\n\nfunction getFlatValues(data) {\n return data.reduce((acc, item) => {\n acc.push(item.value);\n if (item.children) {\n acc.push(...getFlatValues(item.children));\n }\n return acc;\n }, []);\n}\nconst defaultProps = {\n expandOnClick: true,\n allowRangeSelection: true,\n expandOnSpace: true\n};\nconst varsResolver = createVarsResolver((_theme, { levelOffset }) => ({\n root: {\n \"--level-offset\": getSpacing(levelOffset)\n }\n}));\nconst Tree = factory((_props, ref) => {\n const props = useProps(\"Tree\", defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n data,\n expandOnClick,\n tree,\n renderNode,\n selectOnClick,\n clearSelectionOnOutsideClick,\n allowRangeSelection,\n expandOnSpace,\n levelOffset,\n ...others\n } = props;\n const defaultController = useTree();\n const controller = tree || defaultController;\n const getStyles = useStyles({\n name: \"Tree\",\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n varsResolver\n });\n const clickOutsideRef = useClickOutside(\n () => clearSelectionOnOutsideClick && controller.clearSelected()\n );\n const mergedRef = useMergedRef(ref, clickOutsideRef);\n const flatValues = useMemo(() => getFlatValues(data), [data]);\n useEffect(() => {\n controller.initialize(data);\n }, [data]);\n const nodes = data.map((node, index) => /* @__PURE__ */ jsx(\n TreeNode,\n {\n node,\n getStyles,\n rootIndex: index,\n expandOnClick,\n selectOnClick,\n controller,\n renderNode,\n flatValues,\n allowRangeSelection,\n expandOnSpace\n },\n node.value\n ));\n return /* @__PURE__ */ jsx(\n Box,\n {\n component: \"ul\",\n ref: mergedRef,\n ...getStyles(\"root\"),\n ...others,\n role: \"tree\",\n \"aria-multiselectable\": controller.multiple,\n \"data-tree-root\": true,\n children: nodes\n }\n );\n});\nTree.displayName = \"@mantine/core/Tree\";\nTree.classes = classes;\n\nexport { Tree };\n//# sourceMappingURL=Tree.mjs.map\n","/**\n * @license @tabler/icons-react v3.22.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nvar IconCheckbox = createReactComponent(\"outline\", \"checkbox\", \"IconCheckbox\", [[\"path\", { \"d\": \"M9 11l3 3l8 -8\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M20 12v6a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h9\", \"key\": \"svg-1\" }]]);\n\nexport { IconCheckbox as default };\n//# sourceMappingURL=IconCheckbox.mjs.map\n","/**\n * @license @tabler/icons-react v3.22.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nvar IconChecklist = createReactComponent(\"outline\", \"checklist\", \"IconChecklist\", [[\"path\", { \"d\": \"M9.615 20h-2.615a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M14 19l2 2l4 -4\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M9 8h4\", \"key\": \"svg-2\" }], [\"path\", { \"d\": \"M9 12h2\", \"key\": \"svg-3\" }]]);\n\nexport { IconChecklist as default };\n//# sourceMappingURL=IconChecklist.mjs.map\n","/**\n * @license @tabler/icons-react v3.22.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nvar IconLaurelWreath1 = createReactComponent(\"outline\", \"laurel-wreath-1\", \"IconLaurelWreath1\", [[\"path\", { \"d\": \"M6.436 8a8.6 8.6 0 0 0 -.436 2.727c0 4.017 2.686 7.273 6 7.273s6 -3.256 6 -7.273a8.6 8.6 0 0 0 -.436 -2.727\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M14.5 21s-.682 -3 -2.5 -3s-2.5 3 -2.5 3\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M18.52 5.23c.292 1.666 -1.02 2.77 -1.02 2.77s-1.603 -.563 -1.895 -2.23c-.292 -1.666 1.02 -2.77 1.02 -2.77s1.603 .563 1.895 2.23\", \"key\": \"svg-2\" }], [\"path\", { \"d\": \"M21.094 12.14c-1.281 1.266 -3.016 .76 -3.016 .76s-.454 -1.772 .828 -3.04c1.28 -1.266 3.016 -.76 3.016 -.76s.454 1.772 -.828 3.04\", \"key\": \"svg-3\" }], [\"path\", { \"d\": \"M17.734 18.826c-1.5 -.575 -1.734 -2.19 -1.734 -2.19s1.267 -1.038 2.767 -.462c1.5 .575 1.733 2.19 1.733 2.19s-1.267 1.038 -2.767 .462\", \"key\": \"svg-4\" }], [\"path\", { \"d\": \"M6.267 18.826c1.5 -.575 1.733 -2.19 1.733 -2.19s-1.267 -1.038 -2.767 -.462c-1.5 .575 -1.733 2.19 -1.733 2.19s1.267 1.038 2.767 .462\", \"key\": \"svg-5\" }], [\"path\", { \"d\": \"M2.906 12.14c1.281 1.266 3.016 .76 3.016 .76s.454 -1.772 -.828 -3.04c-1.281 -1.265 -3.016 -.76 -3.016 -.76s-.454 1.772 .828 3.04\", \"key\": \"svg-6\" }], [\"path\", { \"d\": \"M5.48 5.23c-.292 1.666 1.02 2.77 1.02 2.77s1.603 -.563 1.895 -2.23c.292 -1.666 -1.02 -2.77 -1.02 -2.77s-1.603 .563 -1.895 2.23\", \"key\": \"svg-7\" }], [\"path\", { \"d\": \"M11 9l1 -1v6\", \"key\": \"svg-8\" }]]);\n\nexport { IconLaurelWreath1 as default };\n//# sourceMappingURL=IconLaurelWreath1.mjs.map\n","/**\n * @license @tabler/icons-react v3.22.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nvar IconLaurelWreath2 = createReactComponent(\"outline\", \"laurel-wreath-2\", \"IconLaurelWreath2\", [[\"path\", { \"d\": \"M6.436 8a8.6 8.6 0 0 0 -.436 2.727c0 4.017 2.686 7.273 6 7.273s6 -3.256 6 -7.273a8.6 8.6 0 0 0 -.436 -2.727\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M14.5 21s-.682 -3 -2.5 -3s-2.5 3 -2.5 3\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M18.52 5.23c.292 1.666 -1.02 2.77 -1.02 2.77s-1.603 -.563 -1.895 -2.23c-.292 -1.666 1.02 -2.77 1.02 -2.77s1.603 .563 1.895 2.23\", \"key\": \"svg-2\" }], [\"path\", { \"d\": \"M21.094 12.14c-1.281 1.266 -3.016 .76 -3.016 .76s-.454 -1.772 .828 -3.04c1.28 -1.266 3.016 -.76 3.016 -.76s.454 1.772 -.828 3.04\", \"key\": \"svg-3\" }], [\"path\", { \"d\": \"M17.734 18.826c-1.5 -.575 -1.734 -2.19 -1.734 -2.19s1.267 -1.038 2.767 -.462c1.5 .575 1.733 2.19 1.733 2.19s-1.267 1.038 -2.767 .462\", \"key\": \"svg-4\" }], [\"path\", { \"d\": \"M6.267 18.826c1.5 -.575 1.733 -2.19 1.733 -2.19s-1.267 -1.038 -2.767 -.462c-1.5 .575 -1.733 2.19 -1.733 2.19s1.267 1.038 2.767 .462\", \"key\": \"svg-5\" }], [\"path\", { \"d\": \"M2.906 12.14c1.281 1.266 3.016 .76 3.016 .76s.454 -1.772 -.828 -3.04c-1.281 -1.265 -3.016 -.76 -3.016 -.76s-.454 1.772 .828 3.04\", \"key\": \"svg-6\" }], [\"path\", { \"d\": \"M5.48 5.23c-.292 1.666 1.02 2.77 1.02 2.77s1.603 -.563 1.895 -2.23c.292 -1.666 -1.02 -2.77 -1.02 -2.77s-1.603 .563 -1.895 2.23\", \"key\": \"svg-7\" }], [\"path\", { \"d\": \"M10.6 8h2a1 1 0 0 1 1 1v1a1 1 0 0 1 -1 1h-1a1 1 0 0 0 -1 1v1a1 1 0 0 0 1 1h2\", \"key\": \"svg-8\" }]]);\n\nexport { IconLaurelWreath2 as default };\n//# sourceMappingURL=IconLaurelWreath2.mjs.map\n","/**\n * @license @tabler/icons-react v3.22.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nvar IconLaurelWreath3 = createReactComponent(\"outline\", \"laurel-wreath-3\", \"IconLaurelWreath3\", [[\"path\", { \"d\": \"M6.436 8a8.6 8.6 0 0 0 -.436 2.727c0 4.017 2.686 7.273 6 7.273s6 -3.256 6 -7.273a8.6 8.6 0 0 0 -.436 -2.727\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M14.5 21s-.682 -3 -2.5 -3s-2.5 3 -2.5 3\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M18.52 5.23c.292 1.666 -1.02 2.77 -1.02 2.77s-1.603 -.563 -1.895 -2.23c-.292 -1.666 1.02 -2.77 1.02 -2.77s1.603 .563 1.895 2.23\", \"key\": \"svg-2\" }], [\"path\", { \"d\": \"M21.094 12.14c-1.281 1.266 -3.016 .76 -3.016 .76s-.454 -1.772 .828 -3.04c1.28 -1.266 3.016 -.76 3.016 -.76s.454 1.772 -.828 3.04\", \"key\": \"svg-3\" }], [\"path\", { \"d\": \"M17.734 18.826c-1.5 -.575 -1.734 -2.19 -1.734 -2.19s1.267 -1.038 2.767 -.462c1.5 .575 1.733 2.19 1.733 2.19s-1.267 1.038 -2.767 .462\", \"key\": \"svg-4\" }], [\"path\", { \"d\": \"M6.267 18.826c1.5 -.575 1.733 -2.19 1.733 -2.19s-1.267 -1.038 -2.767 -.462c-1.5 .575 -1.733 2.19 -1.733 2.19s1.267 1.038 2.767 .462\", \"key\": \"svg-5\" }], [\"path\", { \"d\": \"M2.906 12.14c1.281 1.266 3.016 .76 3.016 .76s.454 -1.772 -.828 -3.04c-1.281 -1.265 -3.016 -.76 -3.016 -.76s-.454 1.772 .828 3.04\", \"key\": \"svg-6\" }], [\"path\", { \"d\": \"M5.48 5.23c-.292 1.666 1.02 2.77 1.02 2.77s1.603 -.563 1.895 -2.23c.292 -1.666 -1.02 -2.77 -1.02 -2.77s-1.603 .563 -1.895 2.23\", \"key\": \"svg-7\" }], [\"path\", { \"d\": \"M10.5 8h1.5a1.5 1.5 0 0 1 0 3h-1h1a1.5 1.5 0 0 1 0 3h-1.5\", \"key\": \"svg-8\" }]]);\n\nexport { IconLaurelWreath3 as default };\n//# sourceMappingURL=IconLaurelWreath3.mjs.map\n","/**\n * @license @tabler/icons-react v3.22.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nvar IconLoader = createReactComponent(\"outline\", \"loader\", \"IconLoader\", [[\"path\", { \"d\": \"M12 6l0 -3\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M16.25 7.75l2.15 -2.15\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M18 12l3 0\", \"key\": \"svg-2\" }], [\"path\", { \"d\": \"M16.25 16.25l2.15 2.15\", \"key\": \"svg-3\" }], [\"path\", { \"d\": \"M12 18l0 3\", \"key\": \"svg-4\" }], [\"path\", { \"d\": \"M7.75 16.25l-2.15 2.15\", \"key\": \"svg-5\" }], [\"path\", { \"d\": \"M6 12l-3 0\", \"key\": \"svg-6\" }], [\"path\", { \"d\": \"M7.75 7.75l-2.15 -2.15\", \"key\": \"svg-7\" }]]);\n\nexport { IconLoader as default };\n//# sourceMappingURL=IconLoader.mjs.map\n","/**\n * @license @tabler/icons-react v3.22.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nvar IconReportAnalytics = createReactComponent(\"outline\", \"report-analytics\", \"IconReportAnalytics\", [[\"path\", { \"d\": \"M9 5h-2a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2h-2\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M9 3m0 2a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v0a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2z\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M9 17v-5\", \"key\": \"svg-2\" }], [\"path\", { \"d\": \"M12 17v-1\", \"key\": \"svg-3\" }], [\"path\", { \"d\": \"M15 17v-3\", \"key\": \"svg-4\" }]]);\n\nexport { IconReportAnalytics as default };\n//# sourceMappingURL=IconReportAnalytics.mjs.map\n","/**\n * @license @tabler/icons-react v3.22.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nvar IconSpeakerphone = createReactComponent(\"outline\", \"speakerphone\", \"IconSpeakerphone\", [[\"path\", { \"d\": \"M18 8a3 3 0 0 1 0 6\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M10 8v11a1 1 0 0 1 -1 1h-1a1 1 0 0 1 -1 -1v-5\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M12 8h0l4.524 -3.77a.9 .9 0 0 1 1.476 .692v12.156a.9 .9 0 0 1 -1.476 .692l-4.524 -3.77h-8a1 1 0 0 1 -1 -1v-4a1 1 0 0 1 1 -1h8\", \"key\": \"svg-2\" }]]);\n\nexport { IconSpeakerphone as default };\n//# sourceMappingURL=IconSpeakerphone.mjs.map\n","/**\n * @license @tabler/icons-react v3.22.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nvar IconUsers = createReactComponent(\"outline\", \"users\", \"IconUsers\", [[\"path\", { \"d\": \"M9 7m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M3 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M16 3.13a4 4 0 0 1 0 7.75\", \"key\": \"svg-2\" }], [\"path\", { \"d\": \"M21 21v-2a4 4 0 0 0 -3 -3.85\", \"key\": \"svg-3\" }]]);\n\nexport { IconUsers as default };\n//# sourceMappingURL=IconUsers.mjs.map\n","/**\n * @license @tabler/icons-react v3.22.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nvar IconPointFilled = createReactComponent(\"filled\", \"point-filled\", \"IconPointFilled\", [[\"path\", { \"d\": \"M12 7a5 5 0 1 1 -4.995 5.217l-.005 -.217l.005 -.217a5 5 0 0 1 4.995 -4.783z\", \"key\": \"svg-0\" }]]);\n\nexport { IconPointFilled as default };\n//# sourceMappingURL=IconPointFilled.mjs.map\n","'use client';\nvar classes = {\"legend\":\"m_847eaf\",\"legendItem\":\"m_17da7e62\",\"legendItemColor\":\"m_6e236e21\",\"legendItemName\":\"m_8ff56c0d\"};\n\nexport { classes as default };\n//# sourceMappingURL=ChartLegend.module.css.mjs.map\n","'use client';\nimport { jsxs, jsx } from 'react/jsx-runtime';\nimport { factory, useProps, useStyles, ColorSwatch, Box } from '@mantine/core';\nimport { getSeriesLabels } from '../utils/get-series-labels/get-series-labels.mjs';\nimport classes from './ChartLegend.module.css.mjs';\n\nfunction updateChartLegendPayload(payload) {\n return payload.map((item) => {\n const newDataKey = item.dataKey?.split(\".\").pop();\n return {\n ...item,\n dataKey: newDataKey,\n payload: {\n ...item.payload,\n name: newDataKey,\n dataKey: newDataKey\n }\n };\n });\n}\nfunction getFilteredChartLegendPayload(payload) {\n return updateChartLegendPayload(payload.filter((item) => item.color !== \"none\"));\n}\nconst defaultProps = {};\nconst ChartLegend = factory((_props, ref) => {\n const props = useProps(\"ChartLegend\", defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n payload,\n onHighlight,\n legendPosition,\n mod,\n series,\n showColor,\n centered,\n ...others\n } = props;\n const getStyles = useStyles({\n name: \"ChartLegend\",\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled\n });\n if (!payload) {\n return null;\n }\n const filteredPayload = getFilteredChartLegendPayload(payload);\n const labels = getSeriesLabels(series);\n const items = filteredPayload.map((item, index) => /* @__PURE__ */ jsxs(\n \"div\",\n {\n ...getStyles(\"legendItem\"),\n onMouseEnter: () => onHighlight(item.dataKey),\n onMouseLeave: () => onHighlight(null),\n \"data-without-color\": showColor === false || void 0,\n children: [\n /* @__PURE__ */ jsx(\n ColorSwatch,\n {\n color: item.color,\n size: 12,\n ...getStyles(\"legendItemColor\"),\n withShadow: false\n }\n ),\n /* @__PURE__ */ jsx(\"p\", { ...getStyles(\"legendItemName\"), children: labels[item.dataKey] || item.dataKey })\n ]\n },\n index\n ));\n return /* @__PURE__ */ jsx(\n Box,\n {\n ref,\n mod: [{ position: legendPosition, centered }, mod],\n ...getStyles(\"legend\"),\n ...others,\n children: items\n }\n );\n});\nChartLegend.displayName = \"@mantine/charts/ChartLegend\";\n\nexport { ChartLegend, getFilteredChartLegendPayload };\n//# sourceMappingURL=ChartLegend.mjs.map\n","/**\n * Given an array and a number N, return a new array which contains every nTh\n * element of the input array. For n below 1, an empty array is returned.\n * If isValid is provided, all candidates must suffice the condition, else undefined is returned.\n * @param {T[]} array An input array.\n * @param {integer} n A number\n * @param {Function} isValid A function to evaluate a candidate form the array\n * @returns {T[]} The result array of the same type as the input array.\n */\nexport function getEveryNthWithCondition(array, n, isValid) {\n if (n < 1) {\n return [];\n }\n if (n === 1 && isValid === undefined) {\n return array;\n }\n var result = [];\n for (var i = 0; i < array.length; i += n) {\n if (isValid === undefined || isValid(array[i]) === true) {\n result.push(array[i]);\n } else {\n return undefined;\n }\n }\n return result;\n}","import { getAngledRectangleWidth } from './CartesianUtils';\nimport { getEveryNthWithCondition } from './getEveryNthWithCondition';\nexport function getAngledTickWidth(contentSize, unitSize, angle) {\n var size = {\n width: contentSize.width + unitSize.width,\n height: contentSize.height + unitSize.height\n };\n return getAngledRectangleWidth(size, angle);\n}\nexport function getTickBoundaries(viewBox, sign, sizeKey) {\n var isWidth = sizeKey === 'width';\n var x = viewBox.x,\n y = viewBox.y,\n width = viewBox.width,\n height = viewBox.height;\n if (sign === 1) {\n return {\n start: isWidth ? x : y,\n end: isWidth ? x + width : y + height\n };\n }\n return {\n start: isWidth ? x + width : y + height,\n end: isWidth ? x : y\n };\n}\nexport function isVisible(sign, tickPosition, getSize, start, end) {\n /* Since getSize() is expensive (it reads the ticks' size from the DOM), we do this check first to avoid calculating\n * the tick's size. */\n if (sign * tickPosition < sign * start || sign * tickPosition > sign * end) {\n return false;\n }\n var size = getSize();\n return sign * (tickPosition - sign * size / 2 - start) >= 0 && sign * (tickPosition + sign * size / 2 - end) <= 0;\n}\nexport function getNumberIntervalTicks(ticks, interval) {\n return getEveryNthWithCondition(ticks, interval + 1);\n}","import { isVisible } from '../util/TickUtils';\nimport { getEveryNthWithCondition } from '../util/getEveryNthWithCondition';\nexport function getEquidistantTicks(sign, boundaries, getTickSize, ticks, minTickGap) {\n var result = (ticks || []).slice();\n var initialStart = boundaries.start,\n end = boundaries.end;\n var index = 0;\n // Premature optimisation idea 1: Estimate a lower bound, and start from there.\n // For now, start from every tick\n var stepsize = 1;\n var start = initialStart;\n var _loop = function _loop() {\n // Given stepsize, evaluate whether every stepsize-th tick can be shown.\n // If it can not, then increase the stepsize by 1, and try again.\n\n var entry = ticks === null || ticks === void 0 ? void 0 : ticks[index];\n\n // Break condition - If we have evaluate all the ticks, then we are done.\n if (entry === undefined) {\n return {\n v: getEveryNthWithCondition(ticks, stepsize)\n };\n }\n\n // Check if the element collides with the next element\n var i = index;\n var size;\n var getSize = function getSize() {\n if (size === undefined) {\n size = getTickSize(entry, i);\n }\n return size;\n };\n var tickCoord = entry.coordinate;\n // We will always show the first tick.\n var isShow = index === 0 || isVisible(sign, tickCoord, getSize, start, end);\n if (!isShow) {\n // Start all over with a larger stepsize\n index = 0;\n start = initialStart;\n stepsize += 1;\n }\n if (isShow) {\n // If it can be shown, update the start\n start = tickCoord + sign * (getSize() / 2 + minTickGap);\n index += stepsize;\n }\n },\n _ret;\n while (stepsize <= result.length) {\n _ret = _loop();\n if (_ret) return _ret.v;\n }\n return [];\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport isFunction from 'lodash/isFunction';\nimport { mathSign, isNumber } from '../util/DataUtils';\nimport { getStringSize } from '../util/DOMUtils';\nimport { Global } from '../util/Global';\nimport { isVisible, getTickBoundaries, getNumberIntervalTicks, getAngledTickWidth } from '../util/TickUtils';\nimport { getEquidistantTicks } from './getEquidistantTicks';\nfunction getTicksEnd(sign, boundaries, getTickSize, ticks, minTickGap) {\n var result = (ticks || []).slice();\n var len = result.length;\n var start = boundaries.start;\n var end = boundaries.end;\n var _loop = function _loop(i) {\n var entry = result[i];\n var size;\n var getSize = function getSize() {\n if (size === undefined) {\n size = getTickSize(entry, i);\n }\n return size;\n };\n if (i === len - 1) {\n var gap = sign * (entry.coordinate + sign * getSize() / 2 - end);\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: gap > 0 ? entry.coordinate - gap * sign : entry.coordinate\n });\n } else {\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: entry.coordinate\n });\n }\n var isShow = isVisible(sign, entry.tickCoord, getSize, start, end);\n if (isShow) {\n end = entry.tickCoord - sign * (getSize() / 2 + minTickGap);\n result[i] = _objectSpread(_objectSpread({}, entry), {}, {\n isShow: true\n });\n }\n };\n for (var i = len - 1; i >= 0; i--) {\n _loop(i);\n }\n return result;\n}\nfunction getTicksStart(sign, boundaries, getTickSize, ticks, minTickGap, preserveEnd) {\n var result = (ticks || []).slice();\n var len = result.length;\n var start = boundaries.start,\n end = boundaries.end;\n if (preserveEnd) {\n // Try to guarantee the tail to be displayed\n var tail = ticks[len - 1];\n var tailSize = getTickSize(tail, len - 1);\n var tailGap = sign * (tail.coordinate + sign * tailSize / 2 - end);\n result[len - 1] = tail = _objectSpread(_objectSpread({}, tail), {}, {\n tickCoord: tailGap > 0 ? tail.coordinate - tailGap * sign : tail.coordinate\n });\n var isTailShow = isVisible(sign, tail.tickCoord, function () {\n return tailSize;\n }, start, end);\n if (isTailShow) {\n end = tail.tickCoord - sign * (tailSize / 2 + minTickGap);\n result[len - 1] = _objectSpread(_objectSpread({}, tail), {}, {\n isShow: true\n });\n }\n }\n var count = preserveEnd ? len - 1 : len;\n var _loop2 = function _loop2(i) {\n var entry = result[i];\n var size;\n var getSize = function getSize() {\n if (size === undefined) {\n size = getTickSize(entry, i);\n }\n return size;\n };\n if (i === 0) {\n var gap = sign * (entry.coordinate - sign * getSize() / 2 - start);\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: gap < 0 ? entry.coordinate - gap * sign : entry.coordinate\n });\n } else {\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: entry.coordinate\n });\n }\n var isShow = isVisible(sign, entry.tickCoord, getSize, start, end);\n if (isShow) {\n start = entry.tickCoord + sign * (getSize() / 2 + minTickGap);\n result[i] = _objectSpread(_objectSpread({}, entry), {}, {\n isShow: true\n });\n }\n };\n for (var i = 0; i < count; i++) {\n _loop2(i);\n }\n return result;\n}\nexport function getTicks(props, fontSize, letterSpacing) {\n var tick = props.tick,\n ticks = props.ticks,\n viewBox = props.viewBox,\n minTickGap = props.minTickGap,\n orientation = props.orientation,\n interval = props.interval,\n tickFormatter = props.tickFormatter,\n unit = props.unit,\n angle = props.angle;\n if (!ticks || !ticks.length || !tick) {\n return [];\n }\n if (isNumber(interval) || Global.isSsr) {\n return getNumberIntervalTicks(ticks, typeof interval === 'number' && isNumber(interval) ? interval : 0);\n }\n var candidates = [];\n var sizeKey = orientation === 'top' || orientation === 'bottom' ? 'width' : 'height';\n var unitSize = unit && sizeKey === 'width' ? getStringSize(unit, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n }) : {\n width: 0,\n height: 0\n };\n var getTickSize = function getTickSize(content, index) {\n var value = isFunction(tickFormatter) ? tickFormatter(content.value, index) : content.value;\n // Recharts only supports angles when sizeKey === 'width'\n return sizeKey === 'width' ? getAngledTickWidth(getStringSize(value, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n }), unitSize, angle) : getStringSize(value, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n })[sizeKey];\n };\n var sign = ticks.length >= 2 ? mathSign(ticks[1].coordinate - ticks[0].coordinate) : 1;\n var boundaries = getTickBoundaries(viewBox, sign, sizeKey);\n if (interval === 'equidistantPreserveStart') {\n return getEquidistantTicks(sign, boundaries, getTickSize, ticks, minTickGap);\n }\n if (interval === 'preserveStart' || interval === 'preserveStartEnd') {\n candidates = getTicksStart(sign, boundaries, getTickSize, ticks, minTickGap, interval === 'preserveStartEnd');\n } else {\n candidates = getTicksEnd(sign, boundaries, getTickSize, ticks, minTickGap);\n }\n return candidates.filter(function (entry) {\n return entry.isShow;\n });\n}","var _excluded = [\"viewBox\"],\n _excluded2 = [\"viewBox\"],\n _excluded3 = [\"ticks\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Cartesian Axis\n */\nimport React, { Component } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport get from 'lodash/get';\nimport clsx from 'clsx';\nimport { shallowEqual } from '../util/ShallowEqual';\nimport { Layer } from '../container/Layer';\nimport { Text } from '../component/Text';\nimport { Label } from '../component/Label';\nimport { isNumber } from '../util/DataUtils';\nimport { adaptEventsOfChild } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { getTicks } from './getTicks';\n\n/** The orientation of the axis in correspondence to the chart */\n\n/** A unit to be appended to a value */\n\n/** The formatter function of tick */\n\nexport var CartesianAxis = /*#__PURE__*/function (_Component) {\n function CartesianAxis(props) {\n var _this;\n _classCallCheck(this, CartesianAxis);\n _this = _callSuper(this, CartesianAxis, [props]);\n _this.state = {\n fontSize: '',\n letterSpacing: ''\n };\n return _this;\n }\n _inherits(CartesianAxis, _Component);\n return _createClass(CartesianAxis, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(_ref, nextState) {\n var viewBox = _ref.viewBox,\n restProps = _objectWithoutProperties(_ref, _excluded);\n // props.viewBox is sometimes generated every time -\n // check that specially as object equality is likely to fail\n var _this$props = this.props,\n viewBoxOld = _this$props.viewBox,\n restPropsOld = _objectWithoutProperties(_this$props, _excluded2);\n return !shallowEqual(viewBox, viewBoxOld) || !shallowEqual(restProps, restPropsOld) || !shallowEqual(nextState, this.state);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var htmlLayer = this.layerReference;\n if (!htmlLayer) return;\n var tick = htmlLayer.getElementsByClassName('recharts-cartesian-axis-tick-value')[0];\n if (tick) {\n this.setState({\n fontSize: window.getComputedStyle(tick).fontSize,\n letterSpacing: window.getComputedStyle(tick).letterSpacing\n });\n }\n }\n\n /**\n * Calculate the coordinates of endpoints in ticks\n * @param {Object} data The data of a simple tick\n * @return {Object} (x1, y1): The coordinate of endpoint close to tick text\n * (x2, y2): The coordinate of endpoint close to axis\n */\n }, {\n key: \"getTickLineCoord\",\n value: function getTickLineCoord(data) {\n var _this$props2 = this.props,\n x = _this$props2.x,\n y = _this$props2.y,\n width = _this$props2.width,\n height = _this$props2.height,\n orientation = _this$props2.orientation,\n tickSize = _this$props2.tickSize,\n mirror = _this$props2.mirror,\n tickMargin = _this$props2.tickMargin;\n var x1, x2, y1, y2, tx, ty;\n var sign = mirror ? -1 : 1;\n var finalTickSize = data.tickSize || tickSize;\n var tickCoord = isNumber(data.tickCoord) ? data.tickCoord : data.coordinate;\n switch (orientation) {\n case 'top':\n x1 = x2 = data.coordinate;\n y2 = y + +!mirror * height;\n y1 = y2 - sign * finalTickSize;\n ty = y1 - sign * tickMargin;\n tx = tickCoord;\n break;\n case 'left':\n y1 = y2 = data.coordinate;\n x2 = x + +!mirror * width;\n x1 = x2 - sign * finalTickSize;\n tx = x1 - sign * tickMargin;\n ty = tickCoord;\n break;\n case 'right':\n y1 = y2 = data.coordinate;\n x2 = x + +mirror * width;\n x1 = x2 + sign * finalTickSize;\n tx = x1 + sign * tickMargin;\n ty = tickCoord;\n break;\n default:\n x1 = x2 = data.coordinate;\n y2 = y + +mirror * height;\n y1 = y2 + sign * finalTickSize;\n ty = y1 + sign * tickMargin;\n tx = tickCoord;\n break;\n }\n return {\n line: {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n },\n tick: {\n x: tx,\n y: ty\n }\n };\n }\n }, {\n key: \"getTickTextAnchor\",\n value: function getTickTextAnchor() {\n var _this$props3 = this.props,\n orientation = _this$props3.orientation,\n mirror = _this$props3.mirror;\n var textAnchor;\n switch (orientation) {\n case 'left':\n textAnchor = mirror ? 'start' : 'end';\n break;\n case 'right':\n textAnchor = mirror ? 'end' : 'start';\n break;\n default:\n textAnchor = 'middle';\n break;\n }\n return textAnchor;\n }\n }, {\n key: \"getTickVerticalAnchor\",\n value: function getTickVerticalAnchor() {\n var _this$props4 = this.props,\n orientation = _this$props4.orientation,\n mirror = _this$props4.mirror;\n var verticalAnchor = 'end';\n switch (orientation) {\n case 'left':\n case 'right':\n verticalAnchor = 'middle';\n break;\n case 'top':\n verticalAnchor = mirror ? 'start' : 'end';\n break;\n default:\n verticalAnchor = mirror ? 'end' : 'start';\n break;\n }\n return verticalAnchor;\n }\n }, {\n key: \"renderAxisLine\",\n value: function renderAxisLine() {\n var _this$props5 = this.props,\n x = _this$props5.x,\n y = _this$props5.y,\n width = _this$props5.width,\n height = _this$props5.height,\n orientation = _this$props5.orientation,\n mirror = _this$props5.mirror,\n axisLine = _this$props5.axisLine;\n var props = _objectSpread(_objectSpread(_objectSpread({}, filterProps(this.props, false)), filterProps(axisLine, false)), {}, {\n fill: 'none'\n });\n if (orientation === 'top' || orientation === 'bottom') {\n var needHeight = +(orientation === 'top' && !mirror || orientation === 'bottom' && mirror);\n props = _objectSpread(_objectSpread({}, props), {}, {\n x1: x,\n y1: y + needHeight * height,\n x2: x + width,\n y2: y + needHeight * height\n });\n } else {\n var needWidth = +(orientation === 'left' && !mirror || orientation === 'right' && mirror);\n props = _objectSpread(_objectSpread({}, props), {}, {\n x1: x + needWidth * width,\n y1: y,\n x2: x + needWidth * width,\n y2: y + height\n });\n }\n return /*#__PURE__*/React.createElement(\"line\", _extends({}, props, {\n className: clsx('recharts-cartesian-axis-line', get(axisLine, 'className'))\n }));\n }\n }, {\n key: \"renderTicks\",\n value:\n /**\n * render the ticks\n * @param {Array} ticks The ticks to actually render (overrides what was passed in props)\n * @param {string} fontSize Fontsize to consider for tick spacing\n * @param {string} letterSpacing Letterspacing to consider for tick spacing\n * @return {ReactComponent} renderedTicks\n */\n function renderTicks(ticks, fontSize, letterSpacing) {\n var _this2 = this;\n var _this$props6 = this.props,\n tickLine = _this$props6.tickLine,\n stroke = _this$props6.stroke,\n tick = _this$props6.tick,\n tickFormatter = _this$props6.tickFormatter,\n unit = _this$props6.unit;\n var finalTicks = getTicks(_objectSpread(_objectSpread({}, this.props), {}, {\n ticks: ticks\n }), fontSize, letterSpacing);\n var textAnchor = this.getTickTextAnchor();\n var verticalAnchor = this.getTickVerticalAnchor();\n var axisProps = filterProps(this.props, false);\n var customTickProps = filterProps(tick, false);\n var tickLineProps = _objectSpread(_objectSpread({}, axisProps), {}, {\n fill: 'none'\n }, filterProps(tickLine, false));\n var items = finalTicks.map(function (entry, i) {\n var _this2$getTickLineCoo = _this2.getTickLineCoord(entry),\n lineCoord = _this2$getTickLineCoo.line,\n tickCoord = _this2$getTickLineCoo.tick;\n var tickProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n textAnchor: textAnchor,\n verticalAnchor: verticalAnchor\n }, axisProps), {}, {\n stroke: 'none',\n fill: stroke\n }, customTickProps), tickCoord), {}, {\n index: i,\n payload: entry,\n visibleTicksCount: finalTicks.length,\n tickFormatter: tickFormatter\n });\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-cartesian-axis-tick\",\n key: \"tick-\".concat(entry.value, \"-\").concat(entry.coordinate, \"-\").concat(entry.tickCoord)\n }, adaptEventsOfChild(_this2.props, entry, i)), tickLine && /*#__PURE__*/React.createElement(\"line\", _extends({}, tickLineProps, lineCoord, {\n className: clsx('recharts-cartesian-axis-tick-line', get(tickLine, 'className'))\n })), tick && CartesianAxis.renderTickItem(tick, tickProps, \"\".concat(isFunction(tickFormatter) ? tickFormatter(entry.value, i) : entry.value).concat(unit || '')));\n });\n return /*#__PURE__*/React.createElement(\"g\", {\n className: \"recharts-cartesian-axis-ticks\"\n }, items);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n var _this$props7 = this.props,\n axisLine = _this$props7.axisLine,\n width = _this$props7.width,\n height = _this$props7.height,\n ticksGenerator = _this$props7.ticksGenerator,\n className = _this$props7.className,\n hide = _this$props7.hide;\n if (hide) {\n return null;\n }\n var _this$props8 = this.props,\n ticks = _this$props8.ticks,\n noTicksProps = _objectWithoutProperties(_this$props8, _excluded3);\n var finalTicks = ticks;\n if (isFunction(ticksGenerator)) {\n finalTicks = ticks && ticks.length > 0 ? ticksGenerator(this.props) : ticksGenerator(noTicksProps);\n }\n if (width <= 0 || height <= 0 || !finalTicks || !finalTicks.length) {\n return null;\n }\n return /*#__PURE__*/React.createElement(Layer, {\n className: clsx('recharts-cartesian-axis', className),\n ref: function ref(_ref2) {\n _this3.layerReference = _ref2;\n }\n }, axisLine && this.renderAxisLine(), this.renderTicks(finalTicks, this.state.fontSize, this.state.letterSpacing), Label.renderCallByParent(this.props));\n }\n }], [{\n key: \"renderTickItem\",\n value: function renderTickItem(option, props, value) {\n var tickItem;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n tickItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n tickItem = option(props);\n } else {\n tickItem = /*#__PURE__*/React.createElement(Text, _extends({}, props, {\n className: \"recharts-cartesian-axis-tick-value\"\n }), value);\n }\n return tickItem;\n }\n }]);\n}(Component);\n_defineProperty(CartesianAxis, \"displayName\", 'CartesianAxis');\n_defineProperty(CartesianAxis, \"defaultProps\", {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n viewBox: {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n // The orientation of axis\n orientation: 'bottom',\n // The ticks\n ticks: [],\n stroke: '#666',\n tickLine: true,\n axisLine: true,\n tick: true,\n mirror: false,\n minTickGap: 5,\n // The width or height of tick\n tickSize: 6,\n tickMargin: 2,\n interval: 'preserveEnd'\n});","var _excluded = [\"x1\", \"y1\", \"x2\", \"y2\", \"key\"],\n _excluded2 = [\"offset\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\n/**\n * @fileOverview Cartesian Grid\n */\nimport React from 'react';\nimport isFunction from 'lodash/isFunction';\nimport { warn } from '../util/LogUtils';\nimport { isNumber } from '../util/DataUtils';\nimport { filterProps } from '../util/ReactUtils';\nimport { getCoordinatesOfGrid, getTicksOfAxis } from '../util/ChartUtils';\nimport { getTicks } from './getTicks';\nimport { CartesianAxis } from './CartesianAxis';\nimport { useArbitraryXAxis, useChartHeight, useChartWidth, useOffset, useYAxisWithFiniteDomainOrRandom } from '../context/chartLayoutContext';\n\n/**\n * The = 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Area\n */\nimport React, { PureComponent } from 'react';\nimport clsx from 'clsx';\nimport Animate from 'react-smooth';\nimport isFunction from 'lodash/isFunction';\nimport max from 'lodash/max';\nimport isNil from 'lodash/isNil';\nimport isNan from 'lodash/isNaN';\nimport isEqual from 'lodash/isEqual';\nimport { Curve } from '../shape/Curve';\nimport { Dot } from '../shape/Dot';\nimport { Layer } from '../container/Layer';\nimport { LabelList } from '../component/LabelList';\nimport { Global } from '../util/Global';\nimport { isNumber, uniqueId, interpolateNumber } from '../util/DataUtils';\nimport { getCateCoordinateOfLine, getValueByDataKey } from '../util/ChartUtils';\nimport { filterProps, hasClipDot } from '../util/ReactUtils';\nexport var Area = /*#__PURE__*/function (_PureComponent) {\n function Area() {\n var _this;\n _classCallCheck(this, Area);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, Area, [].concat(args));\n _defineProperty(_this, \"state\", {\n isAnimationFinished: true\n });\n _defineProperty(_this, \"id\", uniqueId('recharts-area-'));\n _defineProperty(_this, \"handleAnimationEnd\", function () {\n var onAnimationEnd = _this.props.onAnimationEnd;\n _this.setState({\n isAnimationFinished: true\n });\n if (isFunction(onAnimationEnd)) {\n onAnimationEnd();\n }\n });\n _defineProperty(_this, \"handleAnimationStart\", function () {\n var onAnimationStart = _this.props.onAnimationStart;\n _this.setState({\n isAnimationFinished: false\n });\n if (isFunction(onAnimationStart)) {\n onAnimationStart();\n }\n });\n return _this;\n }\n _inherits(Area, _PureComponent);\n return _createClass(Area, [{\n key: \"renderDots\",\n value: function renderDots(needClip, clipDot, clipPathId) {\n var isAnimationActive = this.props.isAnimationActive;\n var isAnimationFinished = this.state.isAnimationFinished;\n if (isAnimationActive && !isAnimationFinished) {\n return null;\n }\n var _this$props = this.props,\n dot = _this$props.dot,\n points = _this$props.points,\n dataKey = _this$props.dataKey;\n var areaProps = filterProps(this.props, false);\n var customDotProps = filterProps(dot, true);\n var dots = points.map(function (entry, i) {\n var dotProps = _objectSpread(_objectSpread(_objectSpread({\n key: \"dot-\".concat(i),\n r: 3\n }, areaProps), customDotProps), {}, {\n index: i,\n cx: entry.x,\n cy: entry.y,\n dataKey: dataKey,\n value: entry.value,\n payload: entry.payload,\n points: points\n });\n return Area.renderDotItem(dot, dotProps);\n });\n var dotsProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipDot ? '' : 'dots-').concat(clipPathId, \")\") : null\n };\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-area-dots\"\n }, dotsProps), dots);\n }\n }, {\n key: \"renderHorizontalRect\",\n value: function renderHorizontalRect(alpha) {\n var _this$props2 = this.props,\n baseLine = _this$props2.baseLine,\n points = _this$props2.points,\n strokeWidth = _this$props2.strokeWidth;\n var startX = points[0].x;\n var endX = points[points.length - 1].x;\n var width = alpha * Math.abs(startX - endX);\n var maxY = max(points.map(function (entry) {\n return entry.y || 0;\n }));\n if (isNumber(baseLine) && typeof baseLine === 'number') {\n maxY = Math.max(baseLine, maxY);\n } else if (baseLine && Array.isArray(baseLine) && baseLine.length) {\n maxY = Math.max(max(baseLine.map(function (entry) {\n return entry.y || 0;\n })), maxY);\n }\n if (isNumber(maxY)) {\n return /*#__PURE__*/React.createElement(\"rect\", {\n x: startX < endX ? startX : startX - width,\n y: 0,\n width: width,\n height: Math.floor(maxY + (strokeWidth ? parseInt(\"\".concat(strokeWidth), 10) : 1))\n });\n }\n return null;\n }\n }, {\n key: \"renderVerticalRect\",\n value: function renderVerticalRect(alpha) {\n var _this$props3 = this.props,\n baseLine = _this$props3.baseLine,\n points = _this$props3.points,\n strokeWidth = _this$props3.strokeWidth;\n var startY = points[0].y;\n var endY = points[points.length - 1].y;\n var height = alpha * Math.abs(startY - endY);\n var maxX = max(points.map(function (entry) {\n return entry.x || 0;\n }));\n if (isNumber(baseLine) && typeof baseLine === 'number') {\n maxX = Math.max(baseLine, maxX);\n } else if (baseLine && Array.isArray(baseLine) && baseLine.length) {\n maxX = Math.max(max(baseLine.map(function (entry) {\n return entry.x || 0;\n })), maxX);\n }\n if (isNumber(maxX)) {\n return /*#__PURE__*/React.createElement(\"rect\", {\n x: 0,\n y: startY < endY ? startY : startY - height,\n width: maxX + (strokeWidth ? parseInt(\"\".concat(strokeWidth), 10) : 1),\n height: Math.floor(height)\n });\n }\n return null;\n }\n }, {\n key: \"renderClipRect\",\n value: function renderClipRect(alpha) {\n var layout = this.props.layout;\n if (layout === 'vertical') {\n return this.renderVerticalRect(alpha);\n }\n return this.renderHorizontalRect(alpha);\n }\n }, {\n key: \"renderAreaStatically\",\n value: function renderAreaStatically(points, baseLine, needClip, clipPathId) {\n var _this$props4 = this.props,\n layout = _this$props4.layout,\n type = _this$props4.type,\n stroke = _this$props4.stroke,\n connectNulls = _this$props4.connectNulls,\n isRange = _this$props4.isRange,\n ref = _this$props4.ref,\n others = _objectWithoutProperties(_this$props4, _excluded);\n return /*#__PURE__*/React.createElement(Layer, {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n }, /*#__PURE__*/React.createElement(Curve, _extends({}, filterProps(others, true), {\n points: points,\n connectNulls: connectNulls,\n type: type,\n baseLine: baseLine,\n layout: layout,\n stroke: \"none\",\n className: \"recharts-area-area\"\n })), stroke !== 'none' && /*#__PURE__*/React.createElement(Curve, _extends({}, filterProps(this.props, false), {\n className: \"recharts-area-curve\",\n layout: layout,\n type: type,\n connectNulls: connectNulls,\n fill: \"none\",\n points: points\n })), stroke !== 'none' && isRange && /*#__PURE__*/React.createElement(Curve, _extends({}, filterProps(this.props, false), {\n className: \"recharts-area-curve\",\n layout: layout,\n type: type,\n connectNulls: connectNulls,\n fill: \"none\",\n points: baseLine\n })));\n }\n }, {\n key: \"renderAreaWithAnimation\",\n value: function renderAreaWithAnimation(needClip, clipPathId) {\n var _this2 = this;\n var _this$props5 = this.props,\n points = _this$props5.points,\n baseLine = _this$props5.baseLine,\n isAnimationActive = _this$props5.isAnimationActive,\n animationBegin = _this$props5.animationBegin,\n animationDuration = _this$props5.animationDuration,\n animationEasing = _this$props5.animationEasing,\n animationId = _this$props5.animationId;\n var _this$state = this.state,\n prevPoints = _this$state.prevPoints,\n prevBaseLine = _this$state.prevBaseLine;\n // const clipPathId = isNil(id) ? this.id : id;\n\n return /*#__PURE__*/React.createElement(Animate, {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"area-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function (_ref) {\n var t = _ref.t;\n if (prevPoints) {\n var prevPointsDiffFactor = prevPoints.length / points.length;\n // update animtaion\n var stepPoints = points.map(function (entry, index) {\n var prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n if (prevPoints[prevPointIndex]) {\n var prev = prevPoints[prevPointIndex];\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolatorX(t),\n y: interpolatorY(t)\n });\n }\n return entry;\n });\n var stepBaseLine;\n if (isNumber(baseLine) && typeof baseLine === 'number') {\n var interpolator = interpolateNumber(prevBaseLine, baseLine);\n stepBaseLine = interpolator(t);\n } else if (isNil(baseLine) || isNan(baseLine)) {\n var _interpolator = interpolateNumber(prevBaseLine, 0);\n stepBaseLine = _interpolator(t);\n } else {\n stepBaseLine = baseLine.map(function (entry, index) {\n var prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n if (prevBaseLine[prevPointIndex]) {\n var prev = prevBaseLine[prevPointIndex];\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolatorX(t),\n y: interpolatorY(t)\n });\n }\n return entry;\n });\n }\n return _this2.renderAreaStatically(stepPoints, stepBaseLine, needClip, clipPathId);\n }\n return /*#__PURE__*/React.createElement(Layer, null, /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"animationClipPath-\".concat(clipPathId)\n }, _this2.renderClipRect(t))), /*#__PURE__*/React.createElement(Layer, {\n clipPath: \"url(#animationClipPath-\".concat(clipPathId, \")\")\n }, _this2.renderAreaStatically(points, baseLine, needClip, clipPathId)));\n });\n }\n }, {\n key: \"renderArea\",\n value: function renderArea(needClip, clipPathId) {\n var _this$props6 = this.props,\n points = _this$props6.points,\n baseLine = _this$props6.baseLine,\n isAnimationActive = _this$props6.isAnimationActive;\n var _this$state2 = this.state,\n prevPoints = _this$state2.prevPoints,\n prevBaseLine = _this$state2.prevBaseLine,\n totalLength = _this$state2.totalLength;\n if (isAnimationActive && points && points.length && (!prevPoints && totalLength > 0 || !isEqual(prevPoints, points) || !isEqual(prevBaseLine, baseLine))) {\n return this.renderAreaWithAnimation(needClip, clipPathId);\n }\n return this.renderAreaStatically(points, baseLine, needClip, clipPathId);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _filterProps;\n var _this$props7 = this.props,\n hide = _this$props7.hide,\n dot = _this$props7.dot,\n points = _this$props7.points,\n className = _this$props7.className,\n top = _this$props7.top,\n left = _this$props7.left,\n xAxis = _this$props7.xAxis,\n yAxis = _this$props7.yAxis,\n width = _this$props7.width,\n height = _this$props7.height,\n isAnimationActive = _this$props7.isAnimationActive,\n id = _this$props7.id;\n if (hide || !points || !points.length) {\n return null;\n }\n var isAnimationFinished = this.state.isAnimationFinished;\n var hasSinglePoint = points.length === 1;\n var layerClass = clsx('recharts-area', className);\n var needClipX = xAxis && xAxis.allowDataOverflow;\n var needClipY = yAxis && yAxis.allowDataOverflow;\n var needClip = needClipX || needClipY;\n var clipPathId = isNil(id) ? this.id : id;\n var _ref2 = (_filterProps = filterProps(dot, false)) !== null && _filterProps !== void 0 ? _filterProps : {\n r: 3,\n strokeWidth: 2\n },\n _ref2$r = _ref2.r,\n r = _ref2$r === void 0 ? 3 : _ref2$r,\n _ref2$strokeWidth = _ref2.strokeWidth,\n strokeWidth = _ref2$strokeWidth === void 0 ? 2 : _ref2$strokeWidth;\n var _ref3 = hasClipDot(dot) ? dot : {},\n _ref3$clipDot = _ref3.clipDot,\n clipDot = _ref3$clipDot === void 0 ? true : _ref3$clipDot;\n var dotSize = r * 2 + strokeWidth;\n return /*#__PURE__*/React.createElement(Layer, {\n className: layerClass\n }, needClipX || needClipY ? /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: needClipX ? left : left - width / 2,\n y: needClipY ? top : top - height / 2,\n width: needClipX ? width : width * 2,\n height: needClipY ? height : height * 2\n })), !clipDot && /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clipPath-dots-\".concat(clipPathId)\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: left - dotSize / 2,\n y: top - dotSize / 2,\n width: width + dotSize,\n height: height + dotSize\n }))) : null, !hasSinglePoint ? this.renderArea(needClip, clipPathId) : null, (dot || hasSinglePoint) && this.renderDots(needClip, clipDot, clipPathId), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curPoints: nextProps.points,\n curBaseLine: nextProps.baseLine,\n prevPoints: prevState.curPoints,\n prevBaseLine: prevState.curBaseLine\n };\n }\n if (nextProps.points !== prevState.curPoints || nextProps.baseLine !== prevState.curBaseLine) {\n return {\n curPoints: nextProps.points,\n curBaseLine: nextProps.baseLine\n };\n }\n return null;\n }\n }]);\n}(PureComponent);\n_Area = Area;\n_defineProperty(Area, \"displayName\", 'Area');\n_defineProperty(Area, \"defaultProps\", {\n stroke: '#3182bd',\n fill: '#3182bd',\n fillOpacity: 0.6,\n xAxisId: 0,\n yAxisId: 0,\n legendType: 'line',\n connectNulls: false,\n // points of area\n points: [],\n dot: false,\n activeDot: true,\n hide: false,\n isAnimationActive: !Global.isSsr,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease'\n});\n_defineProperty(Area, \"getBaseValue\", function (props, item, xAxis, yAxis) {\n var layout = props.layout,\n chartBaseValue = props.baseValue;\n var itemBaseValue = item.props.baseValue;\n\n // The baseValue can be defined both on the AreaChart as well as on the Area.\n // The value for the item takes precedence.\n var baseValue = itemBaseValue !== null && itemBaseValue !== void 0 ? itemBaseValue : chartBaseValue;\n if (isNumber(baseValue) && typeof baseValue === 'number') {\n return baseValue;\n }\n var numericAxis = layout === 'horizontal' ? yAxis : xAxis;\n var domain = numericAxis.scale.domain();\n if (numericAxis.type === 'number') {\n var domainMax = Math.max(domain[0], domain[1]);\n var domainMin = Math.min(domain[0], domain[1]);\n if (baseValue === 'dataMin') {\n return domainMin;\n }\n if (baseValue === 'dataMax') {\n return domainMax;\n }\n return domainMax < 0 ? domainMax : Math.max(Math.min(domain[0], domain[1]), 0);\n }\n if (baseValue === 'dataMin') {\n return domain[0];\n }\n if (baseValue === 'dataMax') {\n return domain[1];\n }\n return domain[0];\n});\n_defineProperty(Area, \"getComposedData\", function (_ref4) {\n var props = _ref4.props,\n item = _ref4.item,\n xAxis = _ref4.xAxis,\n yAxis = _ref4.yAxis,\n xAxisTicks = _ref4.xAxisTicks,\n yAxisTicks = _ref4.yAxisTicks,\n bandSize = _ref4.bandSize,\n dataKey = _ref4.dataKey,\n stackedData = _ref4.stackedData,\n dataStartIndex = _ref4.dataStartIndex,\n displayedData = _ref4.displayedData,\n offset = _ref4.offset;\n var layout = props.layout;\n var hasStack = stackedData && stackedData.length;\n var baseValue = _Area.getBaseValue(props, item, xAxis, yAxis);\n var isHorizontalLayout = layout === 'horizontal';\n var isRange = false;\n var points = displayedData.map(function (entry, index) {\n var value;\n if (hasStack) {\n value = stackedData[dataStartIndex + index];\n } else {\n value = getValueByDataKey(entry, dataKey);\n if (!Array.isArray(value)) {\n value = [baseValue, value];\n } else {\n isRange = true;\n }\n }\n var isBreakPoint = value[1] == null || hasStack && getValueByDataKey(entry, dataKey) == null;\n if (isHorizontalLayout) {\n return {\n x: getCateCoordinateOfLine({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n y: isBreakPoint ? null : yAxis.scale(value[1]),\n value: value,\n payload: entry\n };\n }\n return {\n x: isBreakPoint ? null : xAxis.scale(value[1]),\n y: getCateCoordinateOfLine({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n value: value,\n payload: entry\n };\n });\n var baseLine;\n if (hasStack || isRange) {\n baseLine = points.map(function (entry) {\n var x = Array.isArray(entry.value) ? entry.value[0] : null;\n if (isHorizontalLayout) {\n return {\n x: entry.x,\n y: x != null && entry.y != null ? yAxis.scale(x) : null\n };\n }\n return {\n x: x != null ? xAxis.scale(x) : null,\n y: entry.y\n };\n });\n } else {\n baseLine = isHorizontalLayout ? yAxis.scale(baseValue) : xAxis.scale(baseValue);\n }\n return _objectSpread({\n points: points,\n baseLine: baseLine,\n layout: layout,\n isRange: isRange\n }, offset);\n});\n_defineProperty(Area, \"renderDotItem\", function (option, props) {\n var dotItem;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n dotItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n dotItem = option(props);\n } else {\n var className = clsx('recharts-area-dot', typeof option !== 'boolean' ? option.className : '');\n var key = props.key,\n rest = _objectWithoutProperties(props, _excluded2);\n dotItem = /*#__PURE__*/React.createElement(Dot, _extends({}, rest, {\n key: key,\n className: className\n }));\n }\n return dotItem;\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/**\n * @fileOverview X Axis\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { useChartHeight, useChartWidth, useXAxisOrThrow } from '../context/chartLayoutContext';\nimport { CartesianAxis } from './CartesianAxis';\nimport { getTicksOfAxis } from '../util/ChartUtils';\n\n/** Define of XAxis props */\n\nfunction XAxisImpl(_ref) {\n var xAxisId = _ref.xAxisId;\n var width = useChartWidth();\n var height = useChartHeight();\n var axisOptions = useXAxisOrThrow(xAxisId);\n if (axisOptions == null) {\n return null;\n }\n return (\n /*#__PURE__*/\n // @ts-expect-error the axisOptions type is not exactly what CartesianAxis is expecting.\n React.createElement(CartesianAxis, _extends({}, axisOptions, {\n className: clsx(\"recharts-\".concat(axisOptions.axisType, \" \").concat(axisOptions.axisType), axisOptions.className),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n ticksGenerator: function ticksGenerator(axis) {\n return getTicksOfAxis(axis, true);\n }\n }))\n );\n}\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport var XAxis = /*#__PURE__*/function (_React$Component) {\n function XAxis() {\n _classCallCheck(this, XAxis);\n return _callSuper(this, XAxis, arguments);\n }\n _inherits(XAxis, _React$Component);\n return _createClass(XAxis, [{\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(XAxisImpl, this.props);\n }\n }]);\n}(React.Component);\n_defineProperty(XAxis, \"displayName\", 'XAxis');\n_defineProperty(XAxis, \"defaultProps\", {\n allowDecimals: true,\n hide: false,\n orientation: 'bottom',\n width: 0,\n height: 30,\n mirror: false,\n xAxisId: 0,\n tickCount: 5,\n type: 'category',\n padding: {\n left: 0,\n right: 0\n },\n allowDataOverflow: false,\n scale: 'auto',\n reversed: false,\n allowDuplicatedCategory: true\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/**\n * @fileOverview Y Axis\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { useChartHeight, useChartWidth, useYAxisOrThrow } from '../context/chartLayoutContext';\nimport { CartesianAxis } from './CartesianAxis';\nimport { getTicksOfAxis } from '../util/ChartUtils';\nvar YAxisImpl = function YAxisImpl(_ref) {\n var yAxisId = _ref.yAxisId;\n var width = useChartWidth();\n var height = useChartHeight();\n var axisOptions = useYAxisOrThrow(yAxisId);\n if (axisOptions == null) {\n return null;\n }\n return (\n /*#__PURE__*/\n // @ts-expect-error the axisOptions type is not exactly what CartesianAxis is expecting.\n React.createElement(CartesianAxis, _extends({}, axisOptions, {\n className: clsx(\"recharts-\".concat(axisOptions.axisType, \" \").concat(axisOptions.axisType), axisOptions.className),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n ticksGenerator: function ticksGenerator(axis) {\n return getTicksOfAxis(axis, true);\n }\n }))\n );\n};\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport var YAxis = /*#__PURE__*/function (_React$Component) {\n function YAxis() {\n _classCallCheck(this, YAxis);\n return _callSuper(this, YAxis, arguments);\n }\n _inherits(YAxis, _React$Component);\n return _createClass(YAxis, [{\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(YAxisImpl, this.props);\n }\n }]);\n}(React.Component);\n_defineProperty(YAxis, \"displayName\", 'YAxis');\n_defineProperty(YAxis, \"defaultProps\", {\n allowDuplicatedCategory: true,\n allowDecimals: true,\n hide: false,\n orientation: 'left',\n width: 60,\n height: 0,\n mirror: false,\n yAxisId: 0,\n tickCount: 5,\n type: 'number',\n padding: {\n top: 0,\n bottom: 0\n },\n allowDataOverflow: false,\n scale: 'auto',\n reversed: false\n});","/**\n * @fileOverview Area Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Area } from '../cartesian/Area';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\nexport var AreaChart = generateCategoricalChart({\n chartName: 'AreaChart',\n GraphicalChild: Area,\n axisComponents: [{\n axisType: 'xAxis',\n AxisComp: XAxis\n }, {\n axisType: 'yAxis',\n AxisComp: YAxis\n }],\n formatAxisMap: formatAxisMap\n});","'use client';\nimport { jsx } from 'react/jsx-runtime';\n\nfunction PointLabel({ x, y, value, valueFormatter }) {\n return /* @__PURE__ */ jsx(\"g\", { transform: `translate(${x},${y})`, children: /* @__PURE__ */ jsx(\n \"text\",\n {\n x: 0,\n y: 0,\n dy: -8,\n dx: -10,\n textAnchor: \"top\",\n fill: \"var(--chart-text-color, var(--mantine-color-dimmed))\",\n fontSize: 8,\n children: valueFormatter ? valueFormatter(value) : value\n }\n ) });\n}\n\nexport { PointLabel };\n//# sourceMappingURL=PointLabel.mjs.map\n","'use client';\nimport { jsx, Fragment, jsxs } from 'react/jsx-runtime';\n\nfunction AreaGradient({ color, id, withGradient, fillOpacity }) {\n return /* @__PURE__ */ jsx(Fragment, { children: withGradient ? /* @__PURE__ */ jsxs(\"linearGradient\", { id, x1: \"0\", y1: \"0\", x2: \"0\", y2: \"1\", children: [\n /* @__PURE__ */ jsx(\"stop\", { offset: \"0%\", stopColor: color, stopOpacity: fillOpacity }),\n /* @__PURE__ */ jsx(\"stop\", { offset: \"100%\", stopColor: color, stopOpacity: 0.01 })\n ] }) : /* @__PURE__ */ jsx(\"linearGradient\", { id, x1: \"0\", y1: \"0\", x2: \"0\", y2: \"1\", children: /* @__PURE__ */ jsx(\"stop\", { stopColor: color, stopOpacity: fillOpacity ?? 0.2 }) }) });\n}\nAreaGradient.displayName = \"@mantine/charts/AreaGradient\";\n\nexport { AreaGradient };\n//# sourceMappingURL=AreaGradient.mjs.map\n","'use client';\nimport { jsxs, jsx } from 'react/jsx-runtime';\nimport { useMantineTheme, getThemeColor } from '@mantine/core';\n\nfunction AreaSplit({ offset, id, colors, fillOpacity }) {\n const theme = useMantineTheme();\n return /* @__PURE__ */ jsxs(\"linearGradient\", { id, x1: \"0\", y1: \"0\", x2: \"0\", y2: \"1\", children: [\n /* @__PURE__ */ jsx(\n \"stop\",\n {\n offset,\n stopColor: getThemeColor(colors[0], theme),\n stopOpacity: fillOpacity ?? 0.2\n }\n ),\n /* @__PURE__ */ jsx(\n \"stop\",\n {\n offset,\n stopColor: getThemeColor(colors[1], theme),\n stopOpacity: fillOpacity ?? 0.2\n }\n )\n ] });\n}\nAreaSplit.displayName = \"@mantine/charts/AreaSplit\";\n\nexport { AreaSplit };\n//# sourceMappingURL=AreaSplit.mjs.map\n","'use client';\nfunction getSplitOffset({ data, dataKey }) {\n const dataMax = Math.max(...data.map((item) => item[dataKey]));\n const dataMin = Math.min(...data.map((item) => item[dataKey]));\n if (dataMax <= 0) {\n return 0;\n }\n if (dataMin >= 0) {\n return 1;\n }\n return dataMax / (dataMax - dataMin);\n}\nfunction getDefaultSplitOffset({ data, series }) {\n if (series.length === 1) {\n const dataKey = series[0].name;\n return getSplitOffset({ data, dataKey });\n }\n return 0.5;\n}\n\nexport { getDefaultSplitOffset, getSplitOffset };\n//# sourceMappingURL=get-split-offset.mjs.map\n","'use client';\nvar classes = {\"root\":\"m_a50f3e58\",\"container\":\"m_af9188cb\",\"grid\":\"m_a50a48bc\",\"axis\":\"m_a507a517\",\"axisLabel\":\"m_2293801d\",\"tooltip\":\"m_92b296cd\"};\n\nexport { classes as default };\n//# sourceMappingURL=grid-chart.module.css.mjs.map\n","'use client';\nimport { jsxs, jsx } from 'react/jsx-runtime';\nimport { useId, useState, createElement, Fragment } from 'react';\nimport { Area, ReferenceLine, ResponsiveContainer, AreaChart as AreaChart$1, Legend, CartesianGrid, XAxis, Label, YAxis, Tooltip } from 'recharts';\nimport { createVarsResolver, getThemeColor, factory, useProps, useMantineTheme, useResolvedStylesApi, useStyles, Box } from '@mantine/core';\nimport { ChartLegend } from '../ChartLegend/ChartLegend.mjs';\nimport { ChartTooltip } from '../ChartTooltip/ChartTooltip.mjs';\nimport { PointLabel } from '../PointLabel/PointLabel.mjs';\nimport { AreaGradient } from './AreaGradient.mjs';\nimport { AreaSplit } from './AreaSplit.mjs';\nimport { getDefaultSplitOffset } from './get-split-offset.mjs';\nimport classes from '../grid-chart.module.css.mjs';\n\nfunction valueToPercent(value) {\n return `${(value * 100).toFixed(0)}%`;\n}\nconst defaultProps = {\n withXAxis: true,\n withYAxis: true,\n withDots: true,\n withTooltip: true,\n connectNulls: true,\n strokeWidth: 2,\n tooltipAnimationDuration: 0,\n fillOpacity: 0.2,\n tickLine: \"y\",\n strokeDasharray: \"5 5\",\n curveType: \"monotone\",\n gridAxis: \"x\",\n type: \"default\",\n splitColors: [\"green.7\", \"red.7\"],\n orientation: \"horizontal\"\n};\nconst varsResolver = createVarsResolver((theme, { textColor, gridColor }) => ({\n root: {\n \"--chart-text-color\": textColor ? getThemeColor(textColor, theme) : void 0,\n \"--chart-grid-color\": gridColor ? getThemeColor(gridColor, theme) : void 0\n }\n}));\nconst AreaChart = factory((_props, ref) => {\n const props = useProps(\"AreaChart\", defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n data,\n series,\n withGradient,\n dataKey,\n withXAxis,\n withYAxis,\n curveType,\n gridProps,\n withDots,\n tickLine,\n strokeDasharray,\n gridAxis,\n unit,\n yAxisProps,\n xAxisProps,\n dotProps,\n activeDotProps,\n strokeWidth,\n tooltipAnimationDuration,\n type,\n legendProps,\n tooltipProps,\n withLegend,\n withTooltip,\n areaChartProps,\n fillOpacity,\n splitColors,\n splitOffset,\n connectNulls,\n onMouseLeave,\n orientation,\n referenceLines,\n dir,\n valueFormatter,\n children,\n areaProps,\n xAxisLabel,\n yAxisLabel,\n withRightYAxis,\n rightYAxisLabel,\n rightYAxisProps,\n withPointLabels,\n ...others\n } = props;\n const theme = useMantineTheme();\n const baseId = useId();\n const splitId = `${baseId}-split`;\n const withXTickLine = gridAxis !== \"none\" && (tickLine === \"x\" || tickLine === \"xy\");\n const withYTickLine = gridAxis !== \"none\" && (tickLine === \"y\" || tickLine === \"xy\");\n const isAnimationActive = (tooltipAnimationDuration || 0) > 0;\n const _withGradient = typeof withGradient === \"boolean\" ? withGradient : type === \"default\";\n const stacked = type === \"stacked\" || type === \"percent\";\n const [highlightedArea, setHighlightedArea] = useState(null);\n const shouldHighlight = highlightedArea !== null;\n const handleMouseLeave = (event) => {\n setHighlightedArea(null);\n onMouseLeave?.(event);\n };\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi({\n classNames,\n styles,\n props\n });\n const getStyles = useStyles({\n name: \"AreaChart\",\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n varsResolver\n });\n const dotsAreas = series.map((item) => {\n const color = getThemeColor(item.color, theme);\n const dimmed = shouldHighlight && highlightedArea !== item.name;\n return /* @__PURE__ */ createElement(\n Area,\n {\n ...getStyles(\"area\"),\n activeDot: { fill: theme.white, stroke: color, strokeWidth: 2, r: 4, ...activeDotProps },\n dot: { fill: color, fillOpacity: dimmed ? 0 : 1, strokeWidth: 2, r: 4, ...dotProps },\n key: item.name,\n name: item.name,\n type: curveType,\n dataKey: item.name,\n fill: \"none\",\n strokeWidth,\n stroke: \"none\",\n isAnimationActive: false,\n connectNulls,\n stackId: stacked ? \"stack-dots\" : void 0,\n yAxisId: item.yAxisId || \"left\",\n ...typeof areaProps === \"function\" ? areaProps(item) : areaProps\n }\n );\n });\n const areas = series.map((item) => {\n const id = `${baseId}-${item.color.replace(/[^a-zA-Z0-9]/g, \"\")}`;\n const color = getThemeColor(item.color, theme);\n const dimmed = shouldHighlight && highlightedArea !== item.name;\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\"defs\", { children: /* @__PURE__ */ jsx(\n AreaGradient,\n {\n color,\n withGradient: _withGradient,\n id,\n fillOpacity\n }\n ) }),\n /* @__PURE__ */ jsx(\n Area,\n {\n ...getStyles(\"area\"),\n activeDot: false,\n dot: false,\n name: item.name,\n type: curveType,\n dataKey: item.name,\n fill: type === \"split\" ? `url(#${splitId})` : `url(#${id})`,\n strokeWidth,\n stroke: color,\n isAnimationActive: false,\n connectNulls,\n stackId: stacked ? \"stack\" : void 0,\n fillOpacity: dimmed ? 0 : 1,\n strokeOpacity: dimmed ? 0.5 : 1,\n strokeDasharray: item.strokeDasharray,\n yAxisId: item.yAxisId || \"left\",\n label: withPointLabels ? /* @__PURE__ */ jsx(PointLabel, { valueFormatter }) : void 0,\n ...typeof areaProps === \"function\" ? areaProps(item) : areaProps\n }\n )\n ] }, item.name);\n });\n const referenceLinesItems = referenceLines?.map((line, index) => {\n const color = getThemeColor(line.color, theme);\n return /* @__PURE__ */ jsx(\n ReferenceLine,\n {\n stroke: line.color ? color : \"var(--chart-grid-color)\",\n strokeWidth: 1,\n yAxisId: line.yAxisId || \"left\",\n ...line,\n label: {\n value: line.label,\n fill: line.color ? color : \"currentColor\",\n fontSize: 12,\n position: line.labelPosition ?? \"insideBottomLeft\"\n },\n ...getStyles(\"referenceLine\")\n },\n index\n );\n });\n const tickFormatter = type === \"percent\" ? valueToPercent : valueFormatter;\n const sharedYAxisProps = {\n axisLine: false,\n ...orientation === \"vertical\" ? { dataKey, type: \"category\" } : { type: \"number\" },\n tickLine: withYTickLine ? { stroke: \"currentColor\" } : false,\n allowDecimals: true,\n unit,\n tickFormatter: orientation === \"vertical\" ? void 0 : tickFormatter,\n ...getStyles(\"axis\")\n };\n return /* @__PURE__ */ jsx(\n Box,\n {\n ref,\n ...getStyles(\"root\"),\n onMouseLeave: handleMouseLeave,\n dir: dir || \"ltr\",\n ...others,\n children: /* @__PURE__ */ jsx(ResponsiveContainer, { ...getStyles(\"container\"), children: /* @__PURE__ */ jsxs(\n AreaChart$1,\n {\n data,\n stackOffset: type === \"percent\" ? \"expand\" : void 0,\n layout: orientation,\n margin: {\n bottom: xAxisLabel ? 30 : void 0,\n left: yAxisLabel ? 10 : void 0,\n right: yAxisLabel ? 5 : void 0\n },\n ...areaChartProps,\n children: [\n referenceLinesItems,\n withLegend && /* @__PURE__ */ jsx(\n Legend,\n {\n verticalAlign: \"top\",\n content: (payload) => /* @__PURE__ */ jsx(\n ChartLegend,\n {\n payload: payload.payload,\n onHighlight: setHighlightedArea,\n legendPosition: legendProps?.verticalAlign || \"top\",\n classNames: resolvedClassNames,\n styles: resolvedStyles,\n series\n }\n ),\n ...legendProps\n }\n ),\n /* @__PURE__ */ jsx(\n CartesianGrid,\n {\n strokeDasharray,\n vertical: gridAxis === \"y\" || gridAxis === \"xy\",\n horizontal: gridAxis === \"x\" || gridAxis === \"xy\",\n ...getStyles(\"grid\"),\n ...gridProps\n }\n ),\n /* @__PURE__ */ jsxs(\n XAxis,\n {\n hide: !withXAxis,\n ...orientation === \"vertical\" ? { type: \"number\" } : { dataKey },\n tick: { transform: \"translate(0, 10)\", fontSize: 12, fill: \"currentColor\" },\n stroke: \"\",\n interval: \"preserveStartEnd\",\n tickLine: withXTickLine ? { stroke: \"currentColor\" } : false,\n minTickGap: 5,\n tickFormatter: orientation === \"vertical\" ? tickFormatter : void 0,\n ...getStyles(\"axis\"),\n ...xAxisProps,\n children: [\n xAxisLabel && /* @__PURE__ */ jsx(Label, { position: \"insideBottom\", offset: -20, fontSize: 12, ...getStyles(\"axisLabel\"), children: xAxisLabel }),\n xAxisProps?.children\n ]\n }\n ),\n /* @__PURE__ */ jsxs(\n YAxis,\n {\n yAxisId: \"left\",\n orientation: \"left\",\n tick: { transform: \"translate(-10, 0)\", fontSize: 12, fill: \"currentColor\" },\n hide: !withYAxis,\n ...sharedYAxisProps,\n ...yAxisProps,\n children: [\n yAxisLabel && /* @__PURE__ */ jsx(\n Label,\n {\n position: \"insideLeft\",\n angle: -90,\n textAnchor: \"middle\",\n fontSize: 12,\n offset: -5,\n ...getStyles(\"axisLabel\"),\n children: yAxisLabel\n }\n ),\n yAxisProps?.children\n ]\n }\n ),\n /* @__PURE__ */ jsxs(\n YAxis,\n {\n yAxisId: \"right\",\n orientation: \"right\",\n tick: { transform: \"translate(10, 0)\", fontSize: 12, fill: \"currentColor\" },\n hide: !withRightYAxis,\n ...sharedYAxisProps,\n ...rightYAxisProps,\n children: [\n rightYAxisLabel && /* @__PURE__ */ jsx(\n Label,\n {\n position: \"insideRight\",\n angle: 90,\n textAnchor: \"middle\",\n fontSize: 12,\n offset: -5,\n ...getStyles(\"axisLabel\"),\n children: rightYAxisLabel\n }\n ),\n yAxisProps?.children\n ]\n }\n ),\n withTooltip && /* @__PURE__ */ jsx(\n Tooltip,\n {\n animationDuration: tooltipAnimationDuration,\n isAnimationActive,\n position: orientation === \"vertical\" ? {} : { y: 0 },\n cursor: {\n stroke: \"var(--chart-grid-color)\",\n strokeWidth: 1,\n strokeDasharray\n },\n content: ({ label, payload }) => /* @__PURE__ */ jsx(\n ChartTooltip,\n {\n label,\n payload,\n unit,\n classNames: resolvedClassNames,\n styles: resolvedStyles,\n series,\n valueFormatter\n }\n ),\n ...tooltipProps\n }\n ),\n type === \"split\" && /* @__PURE__ */ jsx(\"defs\", { children: /* @__PURE__ */ jsx(\n AreaSplit,\n {\n colors: splitColors,\n id: splitId,\n offset: splitOffset ?? getDefaultSplitOffset({ data, series }),\n fillOpacity\n }\n ) }),\n areas,\n withDots && dotsAreas,\n children\n ]\n }\n ) })\n }\n );\n});\nAreaChart.classes = classes;\nAreaChart.displayName = \"@mantine/charts/AreaChart\";\n\nexport { AreaChart };\n//# sourceMappingURL=AreaChart.mjs.map\n","import { useMantineTheme } from '@mantine/core'\nimport { IconInfoCircle } from '@tabler/icons-react'\nimport React, { useEffect, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { useErrorMessages } from '@/constants/content'\nimport useSessionStorage from '@/hooks/useSessionStorage'\nimport { GOV_INFO_CONTENT_TYPE, RichText } from '@/plugins/contentful/api'\nimport client from '@/plugins/contentful/client'\n\nimport ParseRichText from '../Contentful/ParseRichText'\nimport CustomAlert from '../CustomAlert'\nimport ErrorMessage from '../ErrorMessage'\nimport Loading from '../Loading'\n\ninterface GovInfoProps {}\n\nconst GovInfo: React.FC = () => {\n const theme = useMantineTheme()\n const {\n t,\n i18n: { language },\n } = useTranslation()\n const errorMessages = useErrorMessages()\n const [title, setTitle] = useSessionStorage(`govInfoTitle-${language}`)\n const [body, setBody] = useSessionStorage(`govInfoBody-${language}`)\n const [isLoading, setIsLoading] = useState(false)\n const [error, setError] = useState('')\n useEffect(() => {\n if (!body && !title) {\n setIsLoading(true)\n client\n .getEntries({\n content_type: GOV_INFO_CONTENT_TYPE,\n locale: language,\n })\n .then(response => {\n setTitle(response?.items[0]?.fields?.title as string)\n setBody(response?.items[0]?.fields?.body as RichText)\n })\n .catch(err => {\n console.warn(err)\n setError(err.message)\n })\n .finally(() => {\n setIsLoading(false)\n })\n }\n }, [body, title, setTitle, setBody, t, language])\n return (\n body && (\n }\n >\n {isLoading && }\n {error && }\n {!isLoading && !error && }\n \n )\n )\n}\n\nexport default GovInfo\n","import { Stack, useMantineTheme } from '@mantine/core'\nimport { IconBrandDiscord } from '@tabler/icons-react'\nimport React, { useCallback } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport RootButton from '@/components/Buttons/RootButton'\n\ninterface CampaignActionProps {\n isBreakpoint: boolean | undefined\n nomineeLink: string\n loading: boolean\n}\n\nconst CampaignAction: React.FC = ({ isBreakpoint, nomineeLink, loading }) => {\n const { t } = useTranslation()\n const theme = useMantineTheme()\n\n const handleDiscordRedirect = useCallback(() => {\n if (!nomineeLink) return\n window.open(nomineeLink, '_blank')\n }, [nomineeLink])\n\n return (\n \n }\n loading={loading}\n disabled={!nomineeLink}\n >\n {t('components.elections.campaignAction.viewCampaign', 'View Campaign')}\n \n \n )\n}\n\nexport default CampaignAction\n","import { Stack, Text, useMantineTheme } from '@mantine/core'\nimport { useDisclosure } from '@mantine/hooks'\nimport { IconCheck, IconClipboardText, IconLoader, IconX } from '@tabler/icons-react'\nimport React, { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useNavigate } from 'react-router'\n\nimport RootButton from '@/components/Buttons/RootButton'\nimport ActionNomination from '@/components/Modals/Governance/ActionNomination'\nimport ViewApplicationModal from '@/components/Modals/Governance/ViewApplicationModal'\nimport ModalSkeleton from '@/components/Modals/ModalSkeleton'\nimport { useGovernanceContext } from '@/contexts/GovernanceContext'\nimport { useAuth } from '@/plugins/auth'\n\ninterface NominationStatusProps {\n status: 'PENDING' | 'ACCEPTED' | 'REJECTED'\n}\n\nconst NominationStatus: React.FC = ({ status }) => {\n const theme = useMantineTheme()\n const text = useMemo(() => {\n switch (status) {\n case 'PENDING':\n return 'Nomination Pending'\n case 'ACCEPTED':\n return 'Nomination Accepted'\n case 'REJECTED':\n return 'Nomination Rejected'\n default:\n return ''\n }\n }, [status])\n const icon = useMemo(() => {\n switch (status) {\n case 'PENDING':\n return \n case 'ACCEPTED':\n return \n case 'REJECTED':\n return \n default:\n return null\n }\n }, [status, theme.colors.textAndIcon])\n return (\n \n {text}\n {icon}\n \n )\n}\n\ninterface NominationActionProps {\n nominee: string\n status: string\n isMobile: boolean | undefined\n isBreakpoint: boolean | undefined\n}\n\nconst NominationAction: React.FC = ({\n nominee,\n status,\n isMobile,\n isBreakpoint,\n}) => {\n const { address } = useAuth()\n const { t } = useTranslation()\n const navigate = useNavigate()\n const [openedReject, { open: openReject, close: closeReject }] = useDisclosure()\n const handleOpenReject = (e: React.MouseEvent) => {\n e.stopPropagation()\n openReject()\n }\n\n const { nomineeApplication } = useGovernanceContext()\n const [openedApplication, { open: openApplication, close: closeApplication }] =\n useDisclosure(false)\n const hasApplication = useMemo(\n () => nomineeApplication(nominee) !== '',\n [nomineeApplication, nominee]\n )\n\n return (\n <>\n {status === 'PENDING' ? (\n \n {address === nominee ? (\n \n \n Reject {!isMobile && 'Nomination'}\n \n navigate('/application')}>\n Accept {!isMobile && 'Nomination'}\n \n \n ) : (\n \n )}\n \n ) : (\n \n \n {!hasApplication && address === nominee && status === 'ACCEPTED' && (\n }\n onClick={() => navigate('/application')}\n >\n Fill Application\n \n )}\n {hasApplication && (\n }\n >\n {address === nominee ? 'Edit' : 'View'} Application\n \n )}\n \n \n \n )}\n \n \n \n \n \n \n \n )\n}\n\nexport default NominationAction\n","import { NumberInput, Stack, Text } from '@mantine/core'\nimport React, { useCallback } from 'react'\n\nimport { Amount } from '@/components/CurrencyInput'\nimport { useGovernanceContext } from '@/contexts/GovernanceContext'\n\ninterface VoteActionProps {\n totalVotes: number\n votes: Amount\n setVotes: (value: Amount) => void\n isBreakpoint?: boolean\n}\n\nconst VoteInput: React.FC = ({ isBreakpoint, totalVotes, votes, setVotes }) => {\n const { vote } = useGovernanceContext()\n\n const handleVoteChange = useCallback(\n (value: number | string) => {\n if (totalVotes + Number(value) - Number(votes.value) > Number(vote.fullValue)) {\n setVotes({ value: `${value}`, touched: true, error: 'Total votes exceed available votes' })\n } else {\n setVotes({ value: `${value}`, touched: true, error: '' })\n }\n },\n [totalVotes, vote]\n )\n\n return (\n e.stopPropagation()}\n style={{\n flexDirection: 'row',\n gap: '20px',\n alignItems: 'center',\n width: isBreakpoint ? '100%' : '',\n }}\n >\n handleVoteChange(Number(vote.fullValue))}\n >\n Max\n \n }\n required\n error={votes.error}\n />\n \n )\n}\n\nexport default VoteInput\n","import React, { useMemo } from 'react'\n\nimport { Amount } from '@/components/CurrencyInput'\n\nimport VoteInput from '../VoteInput'\n\ninterface VotingActionProps {\n isBreakpoint: boolean | undefined\n votes: { [key: string]: Amount }\n nominee: string\n setVotes: (value: Amount) => void\n}\n\nconst VotingAction: React.FC = ({ isBreakpoint, votes, nominee, setVotes }) => {\n const totalVotes = useMemo(\n () => Object.values(votes).reduce((acc, curr) => acc + Number(curr.value), 0),\n [votes]\n )\n return (\n \n )\n}\n\nexport default VotingAction\n","import { Title, useMantineTheme } from '@mantine/core'\nimport { IconLaurelWreath1, IconLaurelWreath2, IconLaurelWreath3 } from '@tabler/icons-react'\nimport React from 'react'\n\nimport { bronzeColor, silverColor } from '@/utils/utils'\n\ninterface PodiumIconProps {\n index: number\n}\n\nconst PodiumIcon: React.FC = ({ index }) => {\n const theme = useMantineTheme()\n\n if (index === 0) {\n return \n }\n if (index === 1) {\n return \n }\n if (index === 2) {\n return \n }\n return {index + 1}.\n}\n\nexport default PodiumIcon\n","import { Stack, Title, useMantineTheme } from '@mantine/core'\nimport React, { useMemo } from 'react'\n\nimport classes from '@/components/Discover/Feed/MembersList.module.css'\nimport PodiumIcon from '@/components/PodiumIcon'\nimport { bronzeColor, silverColor } from '@/utils/utils'\n\ninterface ListNumberProps {\n index: number\n phase: 'nomination' | 'campaign' | 'voting' | 'results'\n isMobile: boolean | undefined\n}\n\nconst ListNumber: React.FC = ({ isMobile, index, phase }) => {\n const theme = useMantineTheme()\n const results = useMemo(() => phase === 'results', [phase])\n\n return (\n \n {results ? : {index + 1}.}\n \n )\n}\nexport default ListNumber\n","import { Stack, Text, useMantineTheme } from '@mantine/core'\nimport { useMediaQuery } from '@mantine/hooks'\nimport { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport UserDetails from '@/components/Details/UserDetails/UserDetails'\nimport { NominationData } from '@/hooks/useGovernance'\nimport { useAuth } from '@/plugins/auth'\n\ninterface NominatedByProps {\n candidates: NominationData[]\n nominee: string\n nominator: string\n}\n\nconst NominatedBy: React.FC = ({ candidates, nominee, nominator }) => {\n const { address } = useAuth()\n const theme = useMantineTheme()\n const { t } = useTranslation()\n const isMobile = useMediaQuery(`(max-width: ${theme.breakpoints.sm})`)\n\n // Check if the current user has nominated this nominee\n const isNominatedByMe = useMemo(() => {\n if (!address) return false\n\n // Find all nominations made by the current user\n const myNominations = candidates.filter(\n cand => cand.nominator.toLowerCase() === address.toLowerCase()\n )\n\n // Check if any of those nominations is for the current nominee\n return myNominations.some(nom => nom.nominee.toLowerCase() === nominee.toLowerCase())\n }, [candidates, nominee, address])\n\n return (\n \n \n {t('components.governance.nomineeCard.nominatedBy', 'Nominated by:')}\n \n\n {!isNominatedByMe ? (\n \n ) : (\n you\n )}\n \n )\n}\nexport default NominatedBy\n","import { Stack, useMantineTheme } from '@mantine/core'\nimport React, { useMemo } from 'react'\nimport { useNavigate } from 'react-router'\n\nimport UserDetails from '@/components/Details/UserDetails/UserDetails'\nimport classes from '@/components/Discover/Feed/MembersList.module.css'\nimport { NominationData } from '@/hooks/useGovernance'\nimport useProfilePath from '@/hooks/useProfilePath'\nimport { useAuth } from '@/plugins/auth'\nimport { bronzeColor, silverColor } from '@/utils/utils'\n\nimport NominatedBy from './NominatedBy'\n\ninterface NomineeCardProps {\n nominee: string\n nominator: string\n candidates: NominationData[]\n phase: 'nomination' | 'campaign' | 'voting' | 'results'\n index: number\n isBreakpoint: boolean | undefined\n isMobile: boolean | undefined\n action?: {\n nomination?: React.ReactNode\n campaign?: React.ReactNode\n voting?: React.ReactNode\n results?: React.ReactNode\n }\n}\n\nconst NomineeCard: React.FC = ({\n candidates,\n nominee,\n nominator,\n phase,\n index,\n isBreakpoint,\n isMobile,\n action,\n}) => {\n const theme = useMantineTheme()\n const { address } = useAuth()\n const nomination = useMemo(() => phase === 'nomination', [phase])\n const campaign = useMemo(() => phase === 'campaign', [phase])\n const voting = useMemo(() => phase === 'voting', [phase])\n const results = useMemo(() => phase === 'results', [phase])\n const profilePath = useProfilePath(nominee)\n const navigate = useNavigate()\n\n return (\n <>\n navigate(profilePath)}\n >\n }\n />\n
e.stopPropagation()}>\n {action && action[phase]}\n
\n \n \n )\n}\n\nexport default NomineeCard\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var X32WordArray = C_lib.WordArray;\n\n\t /**\n\t * x64 namespace.\n\t */\n\t var C_x64 = C.x64 = {};\n\n\t /**\n\t * A 64-bit word.\n\t */\n\t var X64Word = C_x64.Word = Base.extend({\n\t /**\n\t * Initializes a newly created 64-bit word.\n\t *\n\t * @param {number} high The high 32 bits.\n\t * @param {number} low The low 32 bits.\n\t *\n\t * @example\n\t *\n\t * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t */\n\t init: function (high, low) {\n\t this.high = high;\n\t this.low = low;\n\t }\n\n\t /**\n\t * Bitwise NOTs this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after negating.\n\t *\n\t * @example\n\t *\n\t * var negated = x64Word.not();\n\t */\n\t // not: function () {\n\t // var high = ~this.high;\n\t // var low = ~this.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ANDs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to AND with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ANDing.\n\t *\n\t * @example\n\t *\n\t * var anded = x64Word.and(anotherX64Word);\n\t */\n\t // and: function (word) {\n\t // var high = this.high & word.high;\n\t // var low = this.low & word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to OR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ORing.\n\t *\n\t * @example\n\t *\n\t * var ored = x64Word.or(anotherX64Word);\n\t */\n\t // or: function (word) {\n\t // var high = this.high | word.high;\n\t // var low = this.low | word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise XORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to XOR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after XORing.\n\t *\n\t * @example\n\t *\n\t * var xored = x64Word.xor(anotherX64Word);\n\t */\n\t // xor: function (word) {\n\t // var high = this.high ^ word.high;\n\t // var low = this.low ^ word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftL(25);\n\t */\n\t // shiftL: function (n) {\n\t // if (n < 32) {\n\t // var high = (this.high << n) | (this.low >>> (32 - n));\n\t // var low = this.low << n;\n\t // } else {\n\t // var high = this.low << (n - 32);\n\t // var low = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftR(7);\n\t */\n\t // shiftR: function (n) {\n\t // if (n < 32) {\n\t // var low = (this.low >>> n) | (this.high << (32 - n));\n\t // var high = this.high >>> n;\n\t // } else {\n\t // var low = this.high >>> (n - 32);\n\t // var high = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotL(25);\n\t */\n\t // rotL: function (n) {\n\t // return this.shiftL(n).or(this.shiftR(64 - n));\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotR(7);\n\t */\n\t // rotR: function (n) {\n\t // return this.shiftR(n).or(this.shiftL(64 - n));\n\t // },\n\n\t /**\n\t * Adds this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to add with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after adding.\n\t *\n\t * @example\n\t *\n\t * var added = x64Word.add(anotherX64Word);\n\t */\n\t // add: function (word) {\n\t // var low = (this.low + word.low) | 0;\n\t // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t // var high = (this.high + word.high + carry) | 0;\n\n\t // return X64Word.create(high, low);\n\t // }\n\t });\n\n\t /**\n\t * An array of 64-bit words.\n\t *\n\t * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var X64WordArray = C_x64.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create();\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ]);\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ], 10);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t },\n\n\t /**\n\t * Converts this 64-bit word array to a 32-bit word array.\n\t *\n\t * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t *\n\t * @example\n\t *\n\t * var x32WordArray = x64WordArray.toX32();\n\t */\n\t toX32: function () {\n\t // Shortcuts\n\t var x64Words = this.words;\n\t var x64WordsLength = x64Words.length;\n\n\t // Convert\n\t var x32Words = [];\n\t for (var i = 0; i < x64WordsLength; i++) {\n\t var x64Word = x64Words[i];\n\t x32Words.push(x64Word.high);\n\t x32Words.push(x64Word.low);\n\t }\n\n\t return X32WordArray.create(x32Words, this.sigBytes);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {X64WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = x64WordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\n\t // Clone \"words\" array\n\t var words = clone.words = this.words.slice(0);\n\n\t // Clone each X64Word object\n\t var wordsLength = words.length;\n\t for (var i = 0; i < wordsLength; i++) {\n\t words[i] = words[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\t}());\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * UTF-16 BE encoding strategy.\n\t */\n\t var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t /**\n\t * Converts a word array to a UTF-16 BE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 BE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 BE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 BE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t /**\n\t * UTF-16 LE encoding strategy.\n\t */\n\t C_enc.Utf16LE = {\n\t /**\n\t * Converts a word array to a UTF-16 LE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 LE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 LE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 LE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t function swapEndian(word) {\n\t return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64url encoding strategy.\n\t */\n\t var Base64url = C_enc.Base64url = {\n\t /**\n\t * Converts a word array to a Base64url string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {string} The Base64url string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n\t */\n\t stringify: function (wordArray, urlSafe) {\n\t if (urlSafe === undefined) {\n\t urlSafe = true\n\t }\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = urlSafe ? this._safe_map : this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64url string to a word array.\n\t *\n\t * @param {string} base64Str The Base64url string.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n\t */\n\t parse: function (base64Str, urlSafe) {\n\t if (urlSafe === undefined) {\n\t urlSafe = true\n\t }\n\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = urlSafe ? this._safe_map : this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64url;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\n\t /**\n\t * SHA-224 hash algorithm.\n\t */\n\t var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA256._doFinalize.call(this);\n\n\t hash.sigBytes -= 4;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA224('message');\n\t * var hash = CryptoJS.SHA224(wordArray);\n\t */\n\t C.SHA224 = SHA256._createHelper(SHA224);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA224(message, key);\n\t */\n\t C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\n\t function X64Word_create() {\n\t return X64Word.create.apply(X64Word, arguments);\n\t }\n\n\t // Constants\n\t var K = [\n\t X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t ];\n\n\t // Reusable objects\n\t var W = [];\n\t (function () {\n\t for (var i = 0; i < 80; i++) {\n\t W[i] = X64Word_create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-512 hash algorithm.\n\t */\n\t var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var H0 = H[0];\n\t var H1 = H[1];\n\t var H2 = H[2];\n\t var H3 = H[3];\n\t var H4 = H[4];\n\t var H5 = H[5];\n\t var H6 = H[6];\n\t var H7 = H[7];\n\n\t var H0h = H0.high;\n\t var H0l = H0.low;\n\t var H1h = H1.high;\n\t var H1l = H1.low;\n\t var H2h = H2.high;\n\t var H2l = H2.low;\n\t var H3h = H3.high;\n\t var H3l = H3.low;\n\t var H4h = H4.high;\n\t var H4l = H4.low;\n\t var H5h = H5.high;\n\t var H5l = H5.low;\n\t var H6h = H6.high;\n\t var H6l = H6.low;\n\t var H7h = H7.high;\n\t var H7l = H7.low;\n\n\t // Working variables\n\t var ah = H0h;\n\t var al = H0l;\n\t var bh = H1h;\n\t var bl = H1l;\n\t var ch = H2h;\n\t var cl = H2l;\n\t var dh = H3h;\n\t var dl = H3l;\n\t var eh = H4h;\n\t var el = H4l;\n\t var fh = H5h;\n\t var fl = H5l;\n\t var gh = H6h;\n\t var gl = H6l;\n\t var hh = H7h;\n\t var hl = H7l;\n\n\t // Rounds\n\t for (var i = 0; i < 80; i++) {\n\t var Wil;\n\t var Wih;\n\n\t // Shortcut\n\t var Wi = W[i];\n\n\t // Extend message\n\t if (i < 16) {\n\t Wih = Wi.high = M[offset + i * 2] | 0;\n\t Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n\t } else {\n\t // Gamma0\n\t var gamma0x = W[i - 15];\n\t var gamma0xh = gamma0x.high;\n\t var gamma0xl = gamma0x.low;\n\t var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t // Gamma1\n\t var gamma1x = W[i - 2];\n\t var gamma1xh = gamma1x.high;\n\t var gamma1xl = gamma1x.low;\n\t var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t var Wi7 = W[i - 7];\n\t var Wi7h = Wi7.high;\n\t var Wi7l = Wi7.low;\n\n\t var Wi16 = W[i - 16];\n\t var Wi16h = Wi16.high;\n\t var Wi16l = Wi16.low;\n\n\t Wil = gamma0l + Wi7l;\n\t Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t Wil = Wil + gamma1l;\n\t Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t Wil = Wil + Wi16l;\n\t Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t Wi.high = Wih;\n\t Wi.low = Wil;\n\t }\n\n\t var chh = (eh & fh) ^ (~eh & gh);\n\t var chl = (el & fl) ^ (~el & gl);\n\t var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t // t1 = h + sigma1 + ch + K[i] + W[i]\n\t var Ki = K[i];\n\t var Kih = Ki.high;\n\t var Kil = Ki.low;\n\n\t var t1l = hl + sigma1l;\n\t var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t var t1l = t1l + chl;\n\t var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t var t1l = t1l + Kil;\n\t var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t var t1l = t1l + Wil;\n\t var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t // t2 = sigma0 + maj\n\t var t2l = sigma0l + majl;\n\t var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t // Update working variables\n\t hh = gh;\n\t hl = gl;\n\t gh = fh;\n\t gl = fl;\n\t fh = eh;\n\t fl = el;\n\t el = (dl + t1l) | 0;\n\t eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t dh = ch;\n\t dl = cl;\n\t ch = bh;\n\t cl = bl;\n\t bh = ah;\n\t bl = al;\n\t al = (t1l + t2l) | 0;\n\t ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H0l = H0.low = (H0l + al);\n\t H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t H1l = H1.low = (H1l + bl);\n\t H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t H2l = H2.low = (H2l + cl);\n\t H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t H3l = H3.low = (H3l + dl);\n\t H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t H4l = H4.low = (H4l + el);\n\t H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t H5l = H5.low = (H5l + fl);\n\t H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t H6l = H6.low = (H6l + gl);\n\t H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t H7l = H7.low = (H7l + hl);\n\t H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Convert hash to 32-bit word array before returning\n\t var hash = this._hash.toX32();\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t },\n\n\t blockSize: 1024/32\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA512('message');\n\t * var hash = CryptoJS.SHA512(wordArray);\n\t */\n\t C.SHA512 = Hasher._createHelper(SHA512);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA512(message, key);\n\t */\n\t C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./sha512\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\t var SHA512 = C_algo.SHA512;\n\n\t /**\n\t * SHA-384 hash algorithm.\n\t */\n\t var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA512._doFinalize.call(this);\n\n\t hash.sigBytes -= 16;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA384('message');\n\t * var hash = CryptoJS.SHA384(wordArray);\n\t */\n\t C.SHA384 = SHA512._createHelper(SHA384);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA384(message, key);\n\t */\n\t C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var C_algo = C.algo;\n\n\t // Constants tables\n\t var RHO_OFFSETS = [];\n\t var PI_INDEXES = [];\n\t var ROUND_CONSTANTS = [];\n\n\t // Compute Constants\n\t (function () {\n\t // Compute rho offset constants\n\t var x = 1, y = 0;\n\t for (var t = 0; t < 24; t++) {\n\t RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t var newX = y % 5;\n\t var newY = (2 * x + 3 * y) % 5;\n\t x = newX;\n\t y = newY;\n\t }\n\n\t // Compute pi index constants\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t }\n\t }\n\n\t // Compute round constants\n\t var LFSR = 0x01;\n\t for (var i = 0; i < 24; i++) {\n\t var roundConstantMsw = 0;\n\t var roundConstantLsw = 0;\n\n\t for (var j = 0; j < 7; j++) {\n\t if (LFSR & 0x01) {\n\t var bitPosition = (1 << j) - 1;\n\t if (bitPosition < 32) {\n\t roundConstantLsw ^= 1 << bitPosition;\n\t } else /* if (bitPosition >= 32) */ {\n\t roundConstantMsw ^= 1 << (bitPosition - 32);\n\t }\n\t }\n\n\t // Compute next LFSR\n\t if (LFSR & 0x80) {\n\t // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t LFSR = (LFSR << 1) ^ 0x71;\n\t } else {\n\t LFSR <<= 1;\n\t }\n\t }\n\n\t ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t }\n\t }());\n\n\t // Reusable objects for temporary values\n\t var T = [];\n\t (function () {\n\t for (var i = 0; i < 25; i++) {\n\t T[i] = X64Word.create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-3 hash algorithm.\n\t */\n\t var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} outputLength\n\t * The desired number of bits in the output hash.\n\t * Only values permitted are: 224, 256, 384, 512.\n\t * Default: 512\n\t */\n\t cfg: Hasher.cfg.extend({\n\t outputLength: 512\n\t }),\n\n\t _doReset: function () {\n\t var state = this._state = []\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = new X64Word.init();\n\t }\n\n\t this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var state = this._state;\n\t var nBlockSizeLanes = this.blockSize / 2;\n\n\t // Absorb\n\t for (var i = 0; i < nBlockSizeLanes; i++) {\n\t // Shortcuts\n\t var M2i = M[offset + 2 * i];\n\t var M2i1 = M[offset + 2 * i + 1];\n\n\t // Swap endian\n\t M2i = (\n\t (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |\n\t (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)\n\t );\n\t M2i1 = (\n\t (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Absorb message into state\n\t var lane = state[i];\n\t lane.high ^= M2i1;\n\t lane.low ^= M2i;\n\t }\n\n\t // Rounds\n\t for (var round = 0; round < 24; round++) {\n\t // Theta\n\t for (var x = 0; x < 5; x++) {\n\t // Mix column lanes\n\t var tMsw = 0, tLsw = 0;\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t tMsw ^= lane.high;\n\t tLsw ^= lane.low;\n\t }\n\n\t // Temporary values\n\t var Tx = T[x];\n\t Tx.high = tMsw;\n\t Tx.low = tLsw;\n\t }\n\t for (var x = 0; x < 5; x++) {\n\t // Shortcuts\n\t var Tx4 = T[(x + 4) % 5];\n\t var Tx1 = T[(x + 1) % 5];\n\t var Tx1Msw = Tx1.high;\n\t var Tx1Lsw = Tx1.low;\n\n\t // Mix surrounding columns\n\t var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t lane.high ^= tMsw;\n\t lane.low ^= tLsw;\n\t }\n\t }\n\n\t // Rho Pi\n\t for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t var tMsw;\n\t var tLsw;\n\n\t // Shortcuts\n\t var lane = state[laneIndex];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\t var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t // Rotate lanes\n\t if (rhoOffset < 32) {\n\t tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t } else /* if (rhoOffset >= 32) */ {\n\t tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t }\n\n\t // Transpose lanes\n\t var TPiLane = T[PI_INDEXES[laneIndex]];\n\t TPiLane.high = tMsw;\n\t TPiLane.low = tLsw;\n\t }\n\n\t // Rho pi at x = y = 0\n\t var T0 = T[0];\n\t var state0 = state[0];\n\t T0.high = state0.high;\n\t T0.low = state0.low;\n\n\t // Chi\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t // Shortcuts\n\t var laneIndex = x + 5 * y;\n\t var lane = state[laneIndex];\n\t var TLane = T[laneIndex];\n\t var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t // Mix rows\n\t lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);\n\t }\n\t }\n\n\t // Iota\n\t var lane = state[0];\n\t var roundConstant = ROUND_CONSTANTS[round];\n\t lane.high ^= roundConstant.high;\n\t lane.low ^= roundConstant.low;\n\t }\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\t var blockSizeBits = this.blockSize * 32;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var state = this._state;\n\t var outputLengthBytes = this.cfg.outputLength / 8;\n\t var outputLengthLanes = outputLengthBytes / 8;\n\n\t // Squeeze\n\t var hashWords = [];\n\t for (var i = 0; i < outputLengthLanes; i++) {\n\t // Shortcuts\n\t var lane = state[i];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\n\t // Swap endian\n\t laneMsw = (\n\t (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)\n\t );\n\t laneLsw = (\n\t (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Squeeze state to retrieve hash\n\t hashWords.push(laneLsw);\n\t hashWords.push(laneMsw);\n\t }\n\n\t // Return final computed hash\n\t return new WordArray.init(hashWords, outputLengthBytes);\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\n\t var state = clone._state = this._state.slice(0);\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = state[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA3('message');\n\t * var hash = CryptoJS.SHA3(wordArray);\n\t */\n\t C.SHA3 = Hasher._createHelper(SHA3);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA3(message, key);\n\t */\n\t C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var _zl = WordArray.create([\n\t 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n\t 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n\t 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n\t 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n\t var _zr = WordArray.create([\n\t 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n\t 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n\t 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n\t 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n\t 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n\t var _sl = WordArray.create([\n\t 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n\t 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n\t 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n\t 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n\t 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);\n\t var _sr = WordArray.create([\n\t 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n\t 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n\t 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n\t 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n\t 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);\n\n\t var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t /**\n\t * RIPEMD160 hash algorithm.\n\t */\n\t var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t // Swap\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\t // Shortcut\n\t var H = this._hash.words;\n\t var hl = _hl.words;\n\t var hr = _hr.words;\n\t var zl = _zl.words;\n\t var zr = _zr.words;\n\t var sl = _sl.words;\n\t var sr = _sr.words;\n\n\t // Working variables\n\t var al, bl, cl, dl, el;\n\t var ar, br, cr, dr, er;\n\n\t ar = al = H[0];\n\t br = bl = H[1];\n\t cr = cl = H[2];\n\t dr = dl = H[3];\n\t er = el = H[4];\n\t // Computation\n\t var t;\n\t for (var i = 0; i < 80; i += 1) {\n\t t = (al + M[offset+zl[i]])|0;\n\t if (i<16){\n\t\t t += f1(bl,cl,dl) + hl[0];\n\t } else if (i<32) {\n\t\t t += f2(bl,cl,dl) + hl[1];\n\t } else if (i<48) {\n\t\t t += f3(bl,cl,dl) + hl[2];\n\t } else if (i<64) {\n\t\t t += f4(bl,cl,dl) + hl[3];\n\t } else {// if (i<80) {\n\t\t t += f5(bl,cl,dl) + hl[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sl[i]);\n\t t = (t+el)|0;\n\t al = el;\n\t el = dl;\n\t dl = rotl(cl, 10);\n\t cl = bl;\n\t bl = t;\n\n\t t = (ar + M[offset+zr[i]])|0;\n\t if (i<16){\n\t\t t += f5(br,cr,dr) + hr[0];\n\t } else if (i<32) {\n\t\t t += f4(br,cr,dr) + hr[1];\n\t } else if (i<48) {\n\t\t t += f3(br,cr,dr) + hr[2];\n\t } else if (i<64) {\n\t\t t += f2(br,cr,dr) + hr[3];\n\t } else {// if (i<80) {\n\t\t t += f1(br,cr,dr) + hr[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sr[i]) ;\n\t t = (t+er)|0;\n\t ar = er;\n\t er = dr;\n\t dr = rotl(cr, 10);\n\t cr = br;\n\t br = t;\n\t }\n\t // Intermediate hash value\n\t t = (H[1] + cl + dr)|0;\n\t H[1] = (H[2] + dl + er)|0;\n\t H[2] = (H[3] + el + ar)|0;\n\t H[3] = (H[4] + al + br)|0;\n\t H[4] = (H[0] + bl + cr)|0;\n\t H[0] = t;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\n\t );\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 5; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t // Swap\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\n\t function f1(x, y, z) {\n\t return ((x) ^ (y) ^ (z));\n\n\t }\n\n\t function f2(x, y, z) {\n\t return (((x)&(y)) | ((~x)&(z)));\n\t }\n\n\t function f3(x, y, z) {\n\t return (((x) | (~(y))) ^ (z));\n\t }\n\n\t function f4(x, y, z) {\n\t return (((x) & (z)) | ((y)&(~(z))));\n\t }\n\n\t function f5(x, y, z) {\n\t return ((x) ^ ((y) |(~(z))));\n\n\t }\n\n\t function rotl(x,n) {\n\t return (x<>>(32-n));\n\t }\n\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.RIPEMD160('message');\n\t * var hash = CryptoJS.RIPEMD160(wordArray);\n\t */\n\t C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t */\n\t C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA256\n\t * @property {number} iterations The number of iterations to perform. Default: 250000\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA256,\n\t iterations: 250000\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t var block;\n\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t var block;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t var modeCreator;\n\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t modeCreator = mode.createDecryptor;\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\n\t if (this._mode && this._mode.__creator == modeCreator) {\n\t this._mode.init(this, iv && iv.words);\n\t } else {\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t this._mode.__creator = modeCreator;\n\t }\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t var finalProcessedBlocks;\n\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t var wordArray;\n\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t var salt;\n\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt, hasher) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t if (!hasher) {\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\t } else {\n\t var key = EvpKDF.create({ keySize: keySize + ivSize, hasher: hasher }).compute(password, salt);\n\t }\n\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, cfg.salt, cfg.hasher);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt, cfg.hasher);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t CFB.Encryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t CFB.Decryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t var keystream;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t keystream = this._prevBlock;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\n\t return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = CTR.Encryptor = CTR.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t var keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Increment counter\n\t counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTR.Decryptor = Encryptor;\n\n\t return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTRGladman.Decryptor = Encryptor;\n\n\t return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = OFB.Encryptor = OFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var keystream = this._keystream;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = this._keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t OFB.Decryptor = Encryptor;\n\n\t return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t ECB.Encryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.encryptBlock(words, offset);\n\t }\n\t });\n\n\t ECB.Decryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.decryptBlock(words, offset);\n\t }\n\t });\n\n\t return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t pad: function (data, blockSize) {\n\t // Shortcuts\n\t var dataSigBytes = data.sigBytes;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t // Compute last byte position\n\t var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t // Pad\n\t data.clamp();\n\t data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t data.sigBytes += nPaddingBytes;\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Pad\n\t data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t pad: function (data, blockSize) {\n\t // Add 0x80 byte\n\t data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t // Zero pad the rest\n\t CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t },\n\n\t unpad: function (data) {\n\t // Remove zero padding\n\t CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t // Remove one more byte -- the 0x80 byte\n\t data.sigBytes--;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Pad\n\t data.clamp();\n\t data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t },\n\n\t unpad: function (data) {\n\t // Shortcut\n\t var dataWords = data.words;\n\n\t // Unpad\n\t var i = data.sigBytes - 1;\n\t for (var i = data.sigBytes - 1; i >= 0; i--) {\n\t if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t data.sigBytes = i + 1;\n\t break;\n\t }\n\t }\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t pad: function () {\n\t },\n\n\t unpad: function () {\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var CipherParams = C_lib.CipherParams;\n\t var C_enc = C.enc;\n\t var Hex = C_enc.Hex;\n\t var C_format = C.format;\n\n\t var HexFormatter = C_format.Hex = {\n\t /**\n\t * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The hexadecimally encoded string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t return cipherParams.ciphertext.toString(Hex);\n\t },\n\n\t /**\n\t * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t *\n\t * @param {string} input The hexadecimally encoded string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t */\n\t parse: function (input) {\n\t var ciphertext = Hex.parse(input);\n\t return CipherParams.create({ ciphertext: ciphertext });\n\t }\n\t };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t var t;\n\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t // Make sure the key length is valid (64, 128 or >= 192 bit)\n\t if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n\t throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n\t }\n\n\t // Extend the key according to the keying options defined in 3DES standard\n\t var key1 = keyWords.slice(0, 2);\n\t var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n\t var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(key1));\n\t this._des2 = DES.createEncryptor(WordArray.create(key2));\n\t this._des3 = DES.createEncryptor(WordArray.create(key3));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm.\n\t *\n\t * This is a legacy version that neglected to convert the key to little-endian.\n\t * This error doesn't affect the cipher's security,\n\t * but it does affect its compatibility with other implementations.\n\t */\n\t var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t const N = 16;\n\n\t //Origin pbox and sbox, derived from PI\n\t const ORIG_P = [\n\t 0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344,\n\t 0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89,\n\t 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C,\n\t 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917,\n\t 0x9216D5D9, 0x8979FB1B\n\t ];\n\n\t const ORIG_S = [\n\t [ 0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7,\n\t 0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99,\n\t 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,\n\t 0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E,\n\t 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE,\n\t 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,\n\t 0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF,\n\t 0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E,\n\t 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60,\n\t 0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440,\n\t 0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE,\n\t 0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A,\n\t 0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E,\n\t 0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677,\n\t 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193,\n\t 0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032,\n\t 0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88,\n\t 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239,\n\t 0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E,\n\t 0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0,\n\t 0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3,\n\t 0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98,\n\t 0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88,\n\t 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE,\n\t 0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6,\n\t 0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D,\n\t 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B,\n\t 0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7,\n\t 0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA,\n\t 0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463,\n\t 0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F,\n\t 0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09,\n\t 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3,\n\t 0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB,\n\t 0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279,\n\t 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8,\n\t 0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB,\n\t 0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82,\n\t 0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB,\n\t 0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573,\n\t 0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0,\n\t 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B,\n\t 0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790,\n\t 0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8,\n\t 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4,\n\t 0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0,\n\t 0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7,\n\t 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C,\n\t 0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD,\n\t 0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1,\n\t 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299,\n\t 0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9,\n\t 0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477,\n\t 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF,\n\t 0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49,\n\t 0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF,\n\t 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA,\n\t 0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5,\n\t 0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41,\n\t 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915,\n\t 0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400,\n\t 0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915,\n\t 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664,\n\t 0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A ],\n\t [ 0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623,\n\t 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266,\n\t 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1,\n\t 0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E,\n\t 0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6,\n\t 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1,\n\t 0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E,\n\t 0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1,\n\t 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737,\n\t 0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8,\n\t 0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF,\n\t 0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD,\n\t 0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701,\n\t 0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7,\n\t 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41,\n\t 0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331,\n\t 0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF,\n\t 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF,\n\t 0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E,\n\t 0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87,\n\t 0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C,\n\t 0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2,\n\t 0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16,\n\t 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD,\n\t 0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B,\n\t 0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509,\n\t 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E,\n\t 0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3,\n\t 0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F,\n\t 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A,\n\t 0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4,\n\t 0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960,\n\t 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66,\n\t 0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28,\n\t 0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802,\n\t 0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84,\n\t 0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510,\n\t 0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF,\n\t 0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14,\n\t 0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E,\n\t 0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50,\n\t 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7,\n\t 0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8,\n\t 0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281,\n\t 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99,\n\t 0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696,\n\t 0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128,\n\t 0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73,\n\t 0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0,\n\t 0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0,\n\t 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105,\n\t 0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250,\n\t 0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3,\n\t 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285,\n\t 0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00,\n\t 0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061,\n\t 0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB,\n\t 0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E,\n\t 0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735,\n\t 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC,\n\t 0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9,\n\t 0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340,\n\t 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20,\n\t 0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7 ],\n\t [ 0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934,\n\t 0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068,\n\t 0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF,\n\t 0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840,\n\t 0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45,\n\t 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504,\n\t 0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A,\n\t 0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB,\n\t 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE,\n\t 0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6,\n\t 0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42,\n\t 0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B,\n\t 0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2,\n\t 0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB,\n\t 0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527,\n\t 0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B,\n\t 0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33,\n\t 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C,\n\t 0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3,\n\t 0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC,\n\t 0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17,\n\t 0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564,\n\t 0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B,\n\t 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115,\n\t 0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922,\n\t 0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728,\n\t 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0,\n\t 0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E,\n\t 0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37,\n\t 0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D,\n\t 0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804,\n\t 0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B,\n\t 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3,\n\t 0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB,\n\t 0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D,\n\t 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C,\n\t 0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350,\n\t 0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9,\n\t 0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A,\n\t 0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE,\n\t 0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D,\n\t 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC,\n\t 0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F,\n\t 0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61,\n\t 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2,\n\t 0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9,\n\t 0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2,\n\t 0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C,\n\t 0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E,\n\t 0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633,\n\t 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10,\n\t 0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169,\n\t 0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52,\n\t 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027,\n\t 0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5,\n\t 0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62,\n\t 0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634,\n\t 0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76,\n\t 0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24,\n\t 0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC,\n\t 0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4,\n\t 0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C,\n\t 0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837,\n\t 0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0 ],\n\t [ 0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B,\n\t 0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE,\n\t 0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B,\n\t 0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4,\n\t 0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8,\n\t 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6,\n\t 0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304,\n\t 0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22,\n\t 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4,\n\t 0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6,\n\t 0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9,\n\t 0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59,\n\t 0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593,\n\t 0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51,\n\t 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28,\n\t 0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C,\n\t 0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B,\n\t 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28,\n\t 0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C,\n\t 0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD,\n\t 0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A,\n\t 0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319,\n\t 0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB,\n\t 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F,\n\t 0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991,\n\t 0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32,\n\t 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680,\n\t 0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166,\n\t 0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE,\n\t 0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB,\n\t 0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5,\n\t 0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47,\n\t 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370,\n\t 0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D,\n\t 0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84,\n\t 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048,\n\t 0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8,\n\t 0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD,\n\t 0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9,\n\t 0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7,\n\t 0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38,\n\t 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F,\n\t 0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C,\n\t 0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525,\n\t 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1,\n\t 0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442,\n\t 0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964,\n\t 0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E,\n\t 0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8,\n\t 0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D,\n\t 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F,\n\t 0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299,\n\t 0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02,\n\t 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC,\n\t 0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614,\n\t 0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A,\n\t 0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6,\n\t 0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B,\n\t 0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0,\n\t 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060,\n\t 0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E,\n\t 0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9,\n\t 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F,\n\t 0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6 ]\n\t ];\n\n\t var BLOWFISH_CTX = {\n\t pbox: [],\n\t sbox: []\n\t }\n\n\t function F(ctx, x){\n\t let a = (x >> 24) & 0xFF;\n\t let b = (x >> 16) & 0xFF;\n\t let c = (x >> 8) & 0xFF;\n\t let d = x & 0xFF;\n\n\t let y = ctx.sbox[0][a] + ctx.sbox[1][b];\n\t y = y ^ ctx.sbox[2][c];\n\t y = y + ctx.sbox[3][d];\n\n\t return y;\n\t }\n\n\t function BlowFish_Encrypt(ctx, left, right){\n\t let Xl = left;\n\t let Xr = right;\n\t let temp;\n\n\t for(let i = 0; i < N; ++i){\n\t Xl = Xl ^ ctx.pbox[i];\n\t Xr = F(ctx, Xl) ^ Xr;\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\t }\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\n\t Xr = Xr ^ ctx.pbox[N];\n\t Xl = Xl ^ ctx.pbox[N + 1];\n\n\t return {left: Xl, right: Xr};\n\t }\n\n\t function BlowFish_Decrypt(ctx, left, right){\n\t let Xl = left;\n\t let Xr = right;\n\t let temp;\n\n\t for(let i = N + 1; i > 1; --i){\n\t Xl = Xl ^ ctx.pbox[i];\n\t Xr = F(ctx, Xl) ^ Xr;\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\t }\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\n\t Xr = Xr ^ ctx.pbox[1];\n\t Xl = Xl ^ ctx.pbox[0];\n\n\t return {left: Xl, right: Xr};\n\t }\n\n\t /**\n\t * Initialization ctx's pbox and sbox.\n\t *\n\t * @param {Object} ctx The object has pbox and sbox.\n\t * @param {Array} key An array of 32-bit words.\n\t * @param {int} keysize The length of the key.\n\t *\n\t * @example\n\t *\n\t * BlowFishInit(BLOWFISH_CTX, key, 128/32);\n\t */\n\t function BlowFishInit(ctx, key, keysize)\n\t {\n\t for(let Row = 0; Row < 4; Row++)\n\t {\n\t ctx.sbox[Row] = [];\n\t for(let Col = 0; Col < 256; Col++)\n\t {\n\t ctx.sbox[Row][Col] = ORIG_S[Row][Col];\n\t }\n\t }\n\n\t let keyIndex = 0;\n\t for(let index = 0; index < N + 2; index++)\n\t {\n\t ctx.pbox[index] = ORIG_P[index] ^ key[keyIndex];\n\t keyIndex++;\n\t if(keyIndex >= keysize)\n\t {\n\t keyIndex = 0;\n\t }\n\t }\n\n\t let Data1 = 0;\n\t let Data2 = 0;\n\t let res = 0;\n\t for(let i = 0; i < N + 2; i += 2)\n\t {\n\t res = BlowFish_Encrypt(ctx, Data1, Data2);\n\t Data1 = res.left;\n\t Data2 = res.right;\n\t ctx.pbox[i] = Data1;\n\t ctx.pbox[i + 1] = Data2;\n\t }\n\n\t for(let i = 0; i < 4; i++)\n\t {\n\t for(let j = 0; j < 256; j += 2)\n\t {\n\t res = BlowFish_Encrypt(ctx, Data1, Data2);\n\t Data1 = res.left;\n\t Data2 = res.right;\n\t ctx.sbox[i][j] = Data1;\n\t ctx.sbox[i][j + 1] = Data2;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t /**\n\t * Blowfish block cipher algorithm.\n\t */\n\t var Blowfish = C_algo.Blowfish = BlockCipher.extend({\n\t _doReset: function () {\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t //Initialization pbox and sbox\n\t BlowFishInit(BLOWFISH_CTX, keyWords, keySize);\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t var res = BlowFish_Encrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n\t M[offset] = res.left;\n\t M[offset + 1] = res.right;\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t var res = BlowFish_Decrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n\t M[offset] = res.left;\n\t M[offset + 1] = res.right;\n\t },\n\n\t blockSize: 64/32,\n\n\t keySize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Blowfish.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Blowfish.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Blowfish = BlockCipher._createHelper(Blowfish);\n\t}());\n\n\n\treturn CryptoJS.Blowfish;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./lib-typedarrays\"), require(\"./enc-utf16\"), require(\"./enc-base64\"), require(\"./enc-base64url\"), require(\"./md5\"), require(\"./sha1\"), require(\"./sha256\"), require(\"./sha224\"), require(\"./sha512\"), require(\"./sha384\"), require(\"./sha3\"), require(\"./ripemd160\"), require(\"./hmac\"), require(\"./pbkdf2\"), require(\"./evpkdf\"), require(\"./cipher-core\"), require(\"./mode-cfb\"), require(\"./mode-ctr\"), require(\"./mode-ctr-gladman\"), require(\"./mode-ofb\"), require(\"./mode-ecb\"), require(\"./pad-ansix923\"), require(\"./pad-iso10126\"), require(\"./pad-iso97971\"), require(\"./pad-zeropadding\"), require(\"./pad-nopadding\"), require(\"./format-hex\"), require(\"./aes\"), require(\"./tripledes\"), require(\"./rc4\"), require(\"./rabbit\"), require(\"./rabbit-legacy\"), require(\"./blowfish\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./enc-base64url\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\", \"./blowfish\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));","module.exports = function reverse (src) {\n var buffer = new Buffer(src.length)\n\n for (var i = 0, j = src.length - 1; i <= j; ++i, --j) {\n buffer[i] = src[j]\n buffer[j] = src[i]\n }\n\n return buffer\n}\n","// treeify.js\n// Luke Plaster \n// https://github.com/notatestuser/treeify.js\n\n// do the universal module definition dance\n(function (root, factory) {\n\n if (typeof exports === 'object') {\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n define(factory);\n } else {\n root.treeify = factory();\n }\n\n}(this, function() {\n\n function makePrefix(key, last) {\n var str = (last ? '└' : '├');\n if (key) {\n str += '─ ';\n } else {\n str += '──┐';\n }\n return str;\n }\n\n function filterKeys(obj, hideFunctions) {\n var keys = [];\n for (var branch in obj) {\n // always exclude anything in the object's prototype\n if (!obj.hasOwnProperty(branch)) {\n continue;\n }\n // ... and hide any keys mapped to functions if we've been told to\n if (hideFunctions && ((typeof obj[branch])===\"function\")) {\n continue;\n }\n keys.push(branch);\n }\n return keys;\n }\n\n function growBranch(key, root, last, lastStates, showValues, hideFunctions, callback) {\n var line = '', index = 0, lastKey, circular, lastStatesCopy = lastStates.slice(0);\n\n if (lastStatesCopy.push([ root, last ]) && lastStates.length > 0) {\n // based on the \"was last element\" states of whatever we're nested within,\n // we need to append either blankness or a branch to our line\n lastStates.forEach(function(lastState, idx) {\n if (idx > 0) {\n line += (lastState[1] ? ' ' : '│') + ' ';\n }\n if ( ! circular && lastState[0] === root) {\n circular = true;\n }\n });\n\n // the prefix varies based on whether the key contains something to show and\n // whether we're dealing with the last element in this collection\n line += makePrefix(key, last) + key;\n\n // append values and the circular reference indicator\n showValues && (typeof root !== 'object' || root instanceof Date) && (line += ': ' + root);\n circular && (line += ' (circular ref.)');\n\n callback(line);\n }\n\n // can we descend into the next item?\n if ( ! circular && typeof root === 'object') {\n var keys = filterKeys(root, hideFunctions);\n keys.forEach(function(branch){\n // the last key is always printed with a different prefix, so we'll need to know if we have it\n lastKey = ++index === keys.length;\n\n // hold your breath for recursive action\n growBranch(branch, root[branch], lastKey, lastStatesCopy, showValues, hideFunctions, callback);\n });\n }\n };\n\n // --------------------\n\n var Treeify = {};\n\n // Treeify.asLines\n // --------------------\n // Outputs the tree line-by-line, calling the lineCallback when each one is available.\n\n Treeify.asLines = function(obj, showValues, hideFunctions, lineCallback) {\n /* hideFunctions and lineCallback are curried, which means we don't break apps using the older form */\n var hideFunctionsArg = typeof hideFunctions !== 'function' ? hideFunctions : false;\n growBranch('.', obj, false, [], showValues, hideFunctionsArg, lineCallback || hideFunctions);\n };\n\n // Treeify.asTree\n // --------------------\n // Outputs the entire tree, returning it as a string with line breaks.\n\n Treeify.asTree = function(obj, showValues, hideFunctions) {\n var tree = '';\n growBranch('.', obj, false, [], showValues, hideFunctions, function(line) {\n tree += line + '\\n';\n });\n return tree;\n };\n\n // --------------------\n\n return Treeify;\n\n}));\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Base = void 0;\nconst buffer_1 = require(\"buffer\");\nconst crypto_js_1 = __importDefault(require(\"crypto-js\"));\nclass Base {\n /**\n * print\n * @desc Prints out a visual representation of the merkle tree.\n * @example\n *```js\n *tree.print()\n *```\n */\n print() {\n Base.print(this);\n }\n /**\n * bufferIndexOf\n * @desc Returns the first index of which given buffer is found in array.\n * @param {Buffer[]} haystack - Array of buffers.\n * @param {Buffer} needle - Buffer to find.\n * @return {Number} - Index number\n *\n * @example\n * ```js\n *const index = tree.bufferIndexOf(haystack, needle)\n *```\n */\n bufferIndexOf(array, element, isSorted = false) {\n if (isSorted) {\n return this.binarySearch(array, element, buffer_1.Buffer.compare);\n }\n const eqChecker = (buffer1, buffer2) => buffer1.equals(buffer2);\n return this.linearSearch(array, element, eqChecker);\n }\n /**\n * binarySearch\n * @desc Returns the first index of which given item is found in array using binary search.\n * @param {Buffer[]} array - Array of items.\n * @param {Buffer} element - Item to find.\n * @param {Function} compareFunction\n * @return {Number} - Index number\n *\n * @example\n * ```js\n *const index = MerkleTree.binarySearch(array, element, Buffer.compare)\n *```\n */\n static binarySearch(array, element, compareFunction) {\n let start = 0;\n let end = array.length - 1;\n // Iterate while start not meets end\n while (start <= end) {\n // Find the mid index\n const mid = Math.floor((start + end) / 2);\n // Check if the mid value is greater than, equal to, or less than search element.\n const ordering = compareFunction(array[mid], element);\n // If element is present at mid, start iterating for searching first appearance.\n if (ordering === 0) {\n // Linear reverse iteration until the first matching item index is found.\n for (let i = mid - 1; i >= 0; i--) {\n if (compareFunction(array[i], element) === 0)\n continue;\n return i + 1;\n }\n return 0;\n } /* Else look in left or right half accordingly */\n else if (ordering < 0) {\n start = mid + 1;\n }\n else {\n end = mid - 1;\n }\n }\n return -1;\n }\n /**\n * binarySearch\n * @desc Returns the first index of which given item is found in array using binary search.\n * @param {Buffer[]} array - Array of items.\n * @param {Buffer} element - Item to find.\n * @param {Function} compareFunction\n * @return {Number} - Index number\n *\n * @example\n * ```js\n *const index = tree.binarySearch(array, element, Buffer.compare)\n *```\n */\n binarySearch(array, element, compareFunction) {\n return Base.binarySearch(array, element, compareFunction);\n }\n /**\n * linearSearch\n * @desc Returns the first index of which given item is found in array using linear search.\n * @param {Buffer[]} array - Array of items.\n * @param {Buffer} element - Item to find.\n * @param {Function} eqChecker\n * @return {Number} - Index number\n *\n * @example\n * ```js\n *const index = MerkleTree.linearSearch(array, element, (a, b) => a === b)\n *```\n */\n static linearSearch(array, element, eqChecker) {\n for (let i = 0; i < array.length; i++) {\n if (eqChecker(array[i], element)) {\n return i;\n }\n }\n return -1;\n }\n /**\n * linearSearch\n * @desc Returns the first index of which given item is found in array using linear search.\n * @param {Buffer[]} array - Array of items.\n * @param {Buffer} element - Item to find.\n * @param {Function} eqChecker\n * @return {Number} - Index number\n *\n * @example\n * ```js\n *const index = tree.linearSearch(array, element, (a, b) => a === b)\n *```\n */\n linearSearch(array, element, eqChecker) {\n return Base.linearSearch(array, element, eqChecker);\n }\n /**\n * bufferify\n * @desc Returns a buffer type for the given value.\n * @param {String|Number|Object|Buffer|ArrayBuffer} value\n * @return {Buffer}\n *\n * @example\n * ```js\n *const buf = MerkleTree.bufferify('0x1234')\n *```\n */\n static bufferify(value) {\n if (!buffer_1.Buffer.isBuffer(value)) {\n // crypto-js support\n if (typeof value === 'object' && value.words) {\n return buffer_1.Buffer.from(value.toString(crypto_js_1.default.enc.Hex), 'hex');\n }\n else if (Base.isHexString(value)) {\n const hexString = value.replace('0x', '');\n const paddedHexString = hexString.length % 2 ? '0' + hexString : hexString;\n return buffer_1.Buffer.from(paddedHexString, 'hex');\n }\n else if (typeof value === 'string') {\n return buffer_1.Buffer.from(value);\n }\n else if (typeof value === 'bigint') {\n const hexString = value.toString(16).length % 2 ? '0' + value.toString(16) : value.toString(16);\n return buffer_1.Buffer.from(hexString, 'hex');\n }\n else if (value instanceof Uint8Array) {\n return buffer_1.Buffer.from(value.buffer, value.byteOffset, value.byteLength);\n }\n else if (typeof value === 'number') {\n let s = value.toString();\n if (s.length % 2) {\n s = `0${s}`;\n }\n return buffer_1.Buffer.from(s, 'hex');\n }\n else if (ArrayBuffer.isView(value)) {\n return buffer_1.Buffer.from(value.buffer, value.byteOffset, value.byteLength);\n }\n }\n return value;\n }\n /**\n * bufferifyFn\n * @desc Returns a function that will bufferify the return value.\n * @param {Function}\n * @return {Function}\n *\n * @example\n * ```js\n *const fn = MerkleTree.bufferifyFn((value) => sha256(value))\n *```\n */\n static bufferifyFn(f) {\n if (typeof f !== 'function') {\n throw new Error(`bufferifyFn expects a function, received: ${typeof f}`);\n }\n return (value) => {\n const v = f(value);\n if (buffer_1.Buffer.isBuffer(v)) {\n return v;\n }\n if (Base.isHexString(v)) {\n const hexString = v.replace('0x', '');\n const paddedHexString = hexString.length % 2 ? '0' + hexString : hexString;\n return buffer_1.Buffer.from(paddedHexString, 'hex');\n }\n if (typeof v === 'string') {\n return buffer_1.Buffer.from(v);\n }\n if (typeof v === 'bigint') {\n const hexString = v.toString(16).length % 2 ? '0' + v.toString(16) : v.toString(16);\n return buffer_1.Buffer.from(hexString, 'hex');\n }\n if (ArrayBuffer.isView(v)) {\n return buffer_1.Buffer.from(v.buffer, v.byteOffset, v.byteLength);\n }\n // crypto-js support\n return buffer_1.Buffer.from(f(crypto_js_1.default.enc.Hex.parse(value.toString('hex'))).toString(crypto_js_1.default.enc.Hex), 'hex');\n };\n }\n bigNumberify(value) {\n return Base.bigNumberify(value);\n }\n static bigNumberify(value) {\n if (typeof value === 'bigint') {\n return value;\n }\n if (typeof value === 'string') {\n if (value.startsWith('0x') && Base.isHexString(value)) {\n // Remove '0x' and ensure even-length hex string\n const hexString = value.replace('0x', '');\n const paddedHexString = hexString.length % 2 ? '0' + hexString : (hexString || '0');\n return BigInt('0x' + paddedHexString);\n }\n return BigInt(value);\n }\n if (buffer_1.Buffer.isBuffer(value)) {\n // Convert buffer to hex string and ensure even-length hex string\n const hexString = value.toString('hex');\n const paddedHexString = hexString.length % 2 ? '0' + hexString : (hexString || '0');\n return BigInt('0x' + paddedHexString);\n }\n if (value instanceof Uint8Array) {\n // Convert Uint8Array to hex string and ensure even-length hex string\n const hexString = buffer_1.Buffer.from(value).toString('hex');\n const paddedHexString = hexString.length % 2 ? '0' + hexString : (hexString || '0');\n return BigInt('0x' + paddedHexString);\n }\n if (typeof value === 'number') {\n return BigInt(value);\n }\n throw new Error('cannot bigNumberify');\n }\n /**\n * isHexString\n * @desc Returns true if value is a hex string.\n * @param {String} value\n * @return {Boolean}\n *\n * @example\n * ```js\n *console.log(MerkleTree.isHexString('0x1234'))\n *```\n */\n static isHexString(v) {\n return typeof v === 'string' && /^(0x)?[0-9A-Fa-f]*$/.test(v);\n }\n /**\n * print\n * @desc Prints out a visual representation of the given merkle tree.\n * @param {Object} tree - Merkle tree instance.\n * @return {String}\n * @example\n *```js\n *MerkleTree.print(tree)\n *```\n */\n static print(tree) {\n console.log(tree.toString());\n }\n /**\n * bufferToHex\n * @desc Returns a hex string with 0x prefix for given buffer.\n * @param {Buffer} value\n * @return {String}\n * @example\n *```js\n *const hexStr = tree.bufferToHex(Buffer.from('A'))\n *```\n */\n bufferToHex(value, withPrefix = true) {\n return Base.bufferToHex(value, withPrefix);\n }\n /**\n * bufferToHex\n * @desc Returns a hex string with 0x prefix for given buffer.\n * @param {Buffer} value\n * @return {String}\n * @example\n *```js\n *const hexStr = MerkleTree.bufferToHex(Buffer.from('A'))\n *```\n */\n static bufferToHex(value, withPrefix = true) {\n return `${withPrefix ? '0x' : ''}${(value || buffer_1.Buffer.alloc(0)).toString('hex')}`;\n }\n /**\n * bufferify\n * @desc Returns a buffer type for the given value.\n * @param {String|Number|Object|Buffer} value\n * @return {Buffer}\n *\n * @example\n * ```js\n *const buf = tree.bufferify('0x1234')\n *```\n */\n bufferify(value) {\n return Base.bufferify(value);\n }\n /**\n * bufferifyFn\n * @desc Returns a function that will bufferify the return value.\n * @param {Function}\n * @return {Function}\n *\n * @example\n * ```js\n *const fn = tree.bufferifyFn((value) => sha256(value))\n *```\n */\n bufferifyFn(f) {\n return Base.bufferifyFn(f);\n }\n /**\n * isHexString\n * @desc Returns true if value is a hex string.\n * @param {String} value\n * @return {Boolean}\n *\n * @example\n * ```js\n *console.log(MerkleTree.isHexString('0x1234'))\n *```\n */\n isHexString(value) {\n return Base.isHexString(value);\n }\n /**\n * log2\n * @desc Returns the log2 of number.\n * @param {Number} value\n * @return {Number}\n */\n log2(n) {\n return n === 1 ? 0 : 1 + this.log2((n / 2) | 0);\n }\n /**\n * zip\n * @desc Returns true if value is a hex string.\n * @param {String[]|Number[]|Buffer[]} a - first array\n * @param {String[]|Number[]|Buffer[]} b - second array\n * @return {String[][]|Number[][]|Buffer[][]}\n *\n * @example\n * ```js\n *const zipped = tree.zip(['a', 'b'],['A', 'B'])\n *console.log(zipped) // [ [ 'a', 'A' ], [ 'b', 'B' ] ]\n *```\n */\n zip(a, b) {\n return a.map((e, i) => [e, b[i]]);\n }\n static hexZeroPad(hexStr, length) {\n return '0x' + hexStr.replace('0x', '').padStart(length, '0');\n }\n bufferArrayIncludes(bufferArray, targetBuffer) {\n return bufferArray.some(buffer => buffer.equals(targetBuffer !== null && targetBuffer !== void 0 ? targetBuffer : buffer_1.Buffer.alloc(0)));\n }\n}\nexports.Base = Base;\nexports.default = Base;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MerkleTree = void 0;\nconst buffer_1 = require(\"buffer\");\nconst buffer_reverse_1 = __importDefault(require(\"buffer-reverse\"));\nconst sha256_1 = __importDefault(require(\"crypto-js/sha256\"));\nconst treeify_1 = __importDefault(require(\"treeify\"));\nconst Base_1 = __importDefault(require(\"./Base\"));\n/**\n * Class reprensenting a Merkle Tree\n * @namespace MerkleTree\n */\nclass MerkleTree extends Base_1.default {\n /**\n * @desc Constructs a Merkle Tree.\n * All nodes and leaves are stored as Buffers.\n * Lonely leaf nodes are promoted to the next level up without being hashed again.\n * @param {Buffer[]} leaves - Array of hashed leaves. Each leaf must be a Buffer.\n * @param {Function} hashFunction - Hash function to use for hashing leaves and nodes\n * @param {Object} options - Additional options\n * @example\n *```js\n *const MerkleTree = require('merkletreejs')\n *const crypto = require('crypto')\n *\n *function sha256(data) {\n * // returns Buffer\n * return crypto.createHash('sha256').update(data).digest()\n *}\n *\n *const leaves = ['a', 'b', 'c'].map(value => keccak(value))\n *\n *const tree = new MerkleTree(leaves, sha256)\n *```\n */\n constructor(leaves, hashFn = sha256_1.default, options = {}) {\n super();\n this.duplicateOdd = false;\n this.hashLeaves = false;\n this.isBitcoinTree = false;\n this.leaves = [];\n this.layers = [];\n this.sortLeaves = false;\n this.sortPairs = false;\n this.sort = false;\n this.fillDefaultHash = null;\n this.complete = false;\n if (options.complete) {\n if (options.isBitcoinTree) {\n throw new Error('option \"complete\" is incompatible with \"isBitcoinTree\"');\n }\n if (options.duplicateOdd) {\n throw new Error('option \"complete\" is incompatible with \"duplicateOdd\"');\n }\n }\n this.isBitcoinTree = !!options.isBitcoinTree;\n this.hashLeaves = !!options.hashLeaves;\n this.sortLeaves = !!options.sortLeaves;\n this.sortPairs = !!options.sortPairs;\n this.complete = !!options.complete;\n if (options.fillDefaultHash) {\n if (typeof options.fillDefaultHash === 'function') {\n this.fillDefaultHash = options.fillDefaultHash;\n }\n else if (buffer_1.Buffer.isBuffer(options.fillDefaultHash) || typeof options.fillDefaultHash === 'string') {\n this.fillDefaultHash = (idx, hashFn) => options.fillDefaultHash;\n }\n else {\n throw new Error('method \"fillDefaultHash\" must be a function, Buffer, or string');\n }\n }\n this.sort = !!options.sort;\n if (this.sort) {\n this.sortLeaves = true;\n this.sortPairs = true;\n }\n this.duplicateOdd = !!options.duplicateOdd;\n if (options.concatenator) {\n this.concatenator = options.concatenator;\n }\n else {\n this.concatenator = buffer_1.Buffer.concat;\n }\n if (typeof hashFn !== 'function') {\n throw new Error('hashFn must be a function');\n }\n this.hashFn = this.bufferifyFn(hashFn);\n this.processLeaves(leaves);\n }\n getOptions() {\n var _a, _b;\n return {\n complete: this.complete,\n isBitcoinTree: this.isBitcoinTree,\n hashLeaves: this.hashLeaves,\n sortLeaves: this.sortLeaves,\n sortPairs: this.sortPairs,\n sort: this.sort,\n fillDefaultHash: (_b = (_a = this.fillDefaultHash) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : null,\n duplicateOdd: this.duplicateOdd\n };\n }\n processLeaves(leaves) {\n if (this.hashLeaves) {\n leaves = leaves.map(this.hashFn);\n }\n this.leaves = leaves.map(this.bufferify);\n if (this.sortLeaves) {\n this.leaves = this.leaves.sort(buffer_1.Buffer.compare);\n }\n if (this.fillDefaultHash) {\n for (let i = this.leaves.length; i < Math.pow(2, Math.ceil(Math.log2(this.leaves.length))); i++) {\n this.leaves.push(this.bufferify(this.fillDefaultHash(i, this.hashFn)));\n }\n }\n this.createHashes(this.leaves);\n }\n createHashes(nodes) {\n this.layers = [nodes];\n while (nodes.length > 1) {\n const layerIndex = this.layers.length;\n this.layers.push([]);\n const layerLimit = this.complete && layerIndex === 1 && !Number.isInteger(Math.log2(nodes.length))\n ? (2 * nodes.length) - (Math.pow(2, Math.ceil(Math.log2(nodes.length))))\n : nodes.length;\n for (let i = 0; i < nodes.length; i += 2) {\n if (i >= layerLimit) {\n this.layers[layerIndex].push(...nodes.slice(layerLimit));\n break;\n }\n else if (i + 1 === nodes.length) {\n if (nodes.length % 2 === 1) {\n const data = nodes[nodes.length - 1];\n let hash = data;\n // is bitcoin tree\n if (this.isBitcoinTree) {\n // Bitcoin method of duplicating the odd ending nodes\n hash = this.hashFn(this.concatenator([buffer_reverse_1.default(data), buffer_reverse_1.default(data)]));\n hash = buffer_reverse_1.default(this.hashFn(hash));\n this.layers[layerIndex].push(hash);\n continue;\n }\n else {\n if (this.duplicateOdd) {\n // continue with creating layer\n }\n else {\n // push copy of hash and continue iteration\n this.layers[layerIndex].push(nodes[i]);\n continue;\n }\n }\n }\n }\n const left = nodes[i];\n const right = i + 1 === nodes.length ? left : nodes[i + 1];\n let combined = null;\n if (this.isBitcoinTree) {\n combined = [buffer_reverse_1.default(left), buffer_reverse_1.default(right)];\n }\n else {\n combined = [left, right];\n }\n if (this.sortPairs) {\n combined.sort(buffer_1.Buffer.compare);\n }\n let hash = this.hashFn(this.concatenator(combined));\n // double hash if bitcoin tree\n if (this.isBitcoinTree) {\n hash = buffer_reverse_1.default(this.hashFn(hash));\n }\n this.layers[layerIndex].push(hash);\n }\n nodes = this.layers[layerIndex];\n }\n }\n /**\n * addLeaf\n * @desc Adds a leaf to the tree and re-calculates layers.\n * @param {String|Buffer} - Leaf\n * @param {Boolean} - Set to true if the leaf should be hashed before being added to tree.\n * @example\n *```js\n *tree.addLeaf(newLeaf)\n *```\n */\n addLeaf(leaf, shouldHash = false) {\n if (shouldHash) {\n leaf = this.hashFn(leaf);\n }\n this.processLeaves(this.leaves.concat(leaf));\n }\n /**\n * addLeaves\n * @desc Adds multiple leaves to the tree and re-calculates layers.\n * @param {String[]|Buffer[]} - Array of leaves\n * @param {Boolean} - Set to true if the leaves should be hashed before being added to tree.\n * @example\n *```js\n *tree.addLeaves(newLeaves)\n *```\n */\n addLeaves(leaves, shouldHash = false) {\n if (shouldHash) {\n leaves = leaves.map(this.hashFn);\n }\n this.processLeaves(this.leaves.concat(leaves));\n }\n /**\n * getLeaves\n * @desc Returns array of leaves of Merkle Tree.\n * @return {Buffer[]}\n * @example\n *```js\n *const leaves = tree.getLeaves()\n *```\n */\n getLeaves(values) {\n if (Array.isArray(values)) {\n if (this.hashLeaves) {\n values = values.map(this.hashFn);\n if (this.sortLeaves) {\n values = values.sort(buffer_1.Buffer.compare);\n }\n }\n return this.leaves.filter(leaf => this.bufferIndexOf(values, leaf, this.sortLeaves) !== -1);\n }\n return this.leaves;\n }\n removeLeaf(index) {\n if (!this.isValidLeafIndex(index)) {\n throw new Error(`\"${index}\" is not a valid leaf index. Expected to be [0, ${this.getLeafCount() - 1}]`);\n }\n const result = this.leaves.splice(index, 1);\n this.processLeaves(this.leaves);\n return result[0];\n }\n updateLeaf(index, value, shouldHash = false) {\n if (!this.isValidLeafIndex(index)) {\n throw new Error(`\"${index}\" is not a valid leaf index. Expected to be [0, ${this.getLeafCount() - 1}]`);\n }\n if (shouldHash)\n value = this.hashFn(value);\n this.leaves[index] = value;\n this.processLeaves(this.leaves);\n }\n /**\n * getLeaf\n * @desc Returns the leaf at the given index.\n * @param {Number} - Index number\n * @return {Buffer}\n * @example\n *```js\n *const leaf = tree.getLeaf(1)\n *```\n */\n getLeaf(index) {\n if (index < 0 || index > this.leaves.length - 1) {\n return buffer_1.Buffer.from([]);\n }\n return this.leaves[index];\n }\n /**\n * getLeafIndex\n * @desc Returns the index of the given leaf, or -1 if the leaf is not found.\n * @param {String|Buffer} - Target leaf\n * @return {number}\n * @example\n *```js\n *const leaf = Buffer.from('abc')\n *const index = tree.getLeafIndex(leaf)\n *```\n */\n getLeafIndex(target) {\n target = this.bufferify(target);\n const leaves = this.getLeaves();\n for (let i = 0; i < leaves.length; i++) {\n const leaf = leaves[i];\n if (leaf.equals(target)) {\n return i;\n }\n }\n return -1;\n }\n /**\n * getLeafCount\n * @desc Returns the total number of leaves.\n * @return {number}\n * @example\n *```js\n *const count = tree.getLeafCount()\n *```\n */\n getLeafCount() {\n return this.leaves.length;\n }\n /**\n * getHexLeaves\n * @desc Returns array of leaves of Merkle Tree as hex strings.\n * @return {String[]}\n * @example\n *```js\n *const leaves = tree.getHexLeaves()\n *```\n */\n getHexLeaves() {\n return this.leaves.map(leaf => this.bufferToHex(leaf));\n }\n /**\n * marshalLeaves\n * @desc Returns array of leaves of Merkle Tree as a JSON string.\n * @param {String[]|Buffer[]} - Merkle tree leaves\n * @return {String} - List of leaves as JSON string\n * @example\n *```js\n *const jsonStr = MerkleTree.marshalLeaves(leaves)\n *```\n */\n static marshalLeaves(leaves) {\n return JSON.stringify(leaves.map(leaf => MerkleTree.bufferToHex(leaf)), null, 2);\n }\n /**\n * unmarshalLeaves\n * @desc Returns array of leaves of Merkle Tree as a Buffers.\n * @param {String|Object} - JSON stringified leaves\n * @return {Buffer[]} - Unmarshalled list of leaves\n * @example\n *```js\n *const leaves = MerkleTree.unmarshalLeaves(jsonStr)\n *```\n */\n static unmarshalLeaves(jsonStr) {\n let parsed = null;\n if (typeof jsonStr === 'string') {\n parsed = JSON.parse(jsonStr);\n }\n else if (jsonStr instanceof Object) {\n parsed = jsonStr;\n }\n else {\n throw new Error('Expected type of string or object');\n }\n if (!parsed) {\n return [];\n }\n if (!Array.isArray(parsed)) {\n throw new Error('Expected JSON string to be array');\n }\n return parsed.map(MerkleTree.bufferify);\n }\n /**\n * getLayers\n * @desc Returns multi-dimensional array of all layers of Merkle Tree, including leaves and root.\n * @return {Buffer[][]}\n * @example\n *```js\n *const layers = tree.getLayers()\n *```\n */\n getLayers() {\n return this.layers;\n }\n /**\n * getHexLayers\n * @desc Returns multi-dimensional array of all layers of Merkle Tree, including leaves and root as hex strings.\n * @return {String[][]}\n * @example\n *```js\n *const layers = tree.getHexLayers()\n *```\n */\n getHexLayers() {\n return this.layers.reduce((acc, item) => {\n if (Array.isArray(item)) {\n acc.push(item.map(layer => this.bufferToHex(layer)));\n }\n else {\n acc.push(item);\n }\n return acc;\n }, []);\n }\n /**\n * getLayersFlat\n * @desc Returns single flat array of all layers of Merkle Tree, including leaves and root.\n * @return {Buffer[]}\n * @example\n *```js\n *const layers = tree.getLayersFlat()\n *```\n */\n getLayersFlat() {\n const layers = this.layers.reduce((acc, item) => {\n if (Array.isArray(item)) {\n acc.unshift(...item);\n }\n else {\n acc.unshift(item);\n }\n return acc;\n }, []);\n layers.unshift(buffer_1.Buffer.from([0]));\n return layers;\n }\n /**\n * getHexLayersFlat\n * @desc Returns single flat array of all layers of Merkle Tree, including leaves and root as hex string.\n * @return {String[]}\n * @example\n *```js\n *const layers = tree.getHexLayersFlat()\n *```\n */\n getHexLayersFlat() {\n return this.getLayersFlat().map(layer => this.bufferToHex(layer));\n }\n /**\n * getLayerCount\n * @desc Returns the total number of layers.\n * @return {number}\n * @example\n *```js\n *const count = tree.getLayerCount()\n *```\n */\n getLayerCount() {\n return this.getLayers().length;\n }\n /**\n * getRoot\n * @desc Returns the Merkle root hash as a Buffer.\n * @return {Buffer}\n * @example\n *```js\n *const root = tree.getRoot()\n *```\n */\n getRoot() {\n if (this.layers.length === 0) {\n return buffer_1.Buffer.from([]);\n }\n return this.layers[this.layers.length - 1][0] || buffer_1.Buffer.from([]);\n }\n /**\n * getHexRoot\n * @desc Returns the Merkle root hash as a hex string.\n * @return {String}\n * @example\n *```js\n *const root = tree.getHexRoot()\n *```\n */\n getHexRoot() {\n return this.bufferToHex(this.getRoot());\n }\n /**\n * getProof\n * @desc Returns the proof for a target leaf.\n * @param {Buffer} leaf - Target leaf\n * @param {Number} [index] - Target leaf index in leaves array.\n * Use if there are leaves containing duplicate data in order to distinguish it.\n * @return {Object[]} - Array of objects containing a position property of type string\n * with values of 'left' or 'right' and a data property of type Buffer.\n * @example\n * ```js\n *const proof = tree.getProof(leaves[2])\n *```\n *\n * @example\n *```js\n *const leaves = ['a', 'b', 'a'].map(value => keccak(value))\n *const tree = new MerkleTree(leaves, keccak)\n *const proof = tree.getProof(leaves[2], 2)\n *```\n */\n getProof(leaf, index) {\n if (typeof leaf === 'undefined') {\n throw new Error('leaf is required');\n }\n leaf = this.bufferify(leaf);\n const proof = [];\n if (!Number.isInteger(index)) {\n index = -1;\n for (let i = 0; i < this.leaves.length; i++) {\n if (buffer_1.Buffer.compare(leaf, this.leaves[i]) === 0) {\n index = i;\n }\n }\n }\n if (index <= -1) {\n return [];\n }\n for (let i = 0; i < this.layers.length; i++) {\n const layer = this.layers[i];\n const isRightNode = index % 2;\n const pairIndex = (isRightNode ? index - 1\n : this.isBitcoinTree && index === layer.length - 1 && i < this.layers.length - 1\n // Proof Generation for Bitcoin Trees\n ? index\n // Proof Generation for Non-Bitcoin Trees\n : index + 1);\n if (pairIndex < layer.length) {\n proof.push({\n position: isRightNode ? 'left' : 'right',\n data: layer[pairIndex]\n });\n }\n // set index to parent index\n index = (index / 2) | 0;\n }\n return proof;\n }\n /**\n * getHexProof\n * @desc Returns the proof for a target leaf as hex strings.\n * @param {Buffer} leaf - Target leaf\n * @param {Number} [index] - Target leaf index in leaves array.\n * Use if there are leaves containing duplicate data in order to distinguish it.\n * @return {String[]} - Proof array as hex strings.\n * @example\n * ```js\n *const proof = tree.getHexProof(leaves[2])\n *```\n */\n getHexProof(leaf, index) {\n return this.getProof(leaf, index).map(item => this.bufferToHex(item.data));\n }\n /**\n * getProofs\n * @desc Returns the proofs for all leaves.\n * @return {Object[]} - Array of objects containing a position property of type string\n * with values of 'left' or 'right' and a data property of type Buffer for all leaves.\n * @example\n * ```js\n *const proofs = tree.getProofs()\n *```\n *\n * @example\n *```js\n *const leaves = ['a', 'b', 'a'].map(value => keccak(value))\n *const tree = new MerkleTree(leaves, keccak)\n *const proofs = tree.getProofs()\n *```\n */\n getProofs() {\n const proof = [];\n const proofs = [];\n this.getProofsDFS(this.layers.length - 1, 0, proof, proofs);\n return proofs;\n }\n /**\n * getProofsDFS\n * @desc Get all proofs through single traverse\n * @param {Number} currentLayer - Current layer index in traverse.\n * @param {Number} index - Current tarvese node index in traverse.\n * @param {Object[]} proof - Proof chain for single leaf.\n * @param {Object[]} proofs - Proofs for all leaves\n * @example\n * ```js\n *const layers = tree.getLayers()\n *const index = 0;\n *let proof = [];\n *let proofs = [];\n *const proof = tree.getProofsDFS(layers, index, proof, proofs)\n *```\n */\n getProofsDFS(currentLayer, index, proof, proofs) {\n const isRightNode = index % 2;\n if (currentLayer === -1) {\n if (!isRightNode)\n proofs.push([...proof].reverse());\n return;\n }\n if (index >= this.layers[currentLayer].length)\n return;\n const layer = this.layers[currentLayer];\n const pairIndex = isRightNode ? index - 1 : index + 1;\n let pushed = false;\n if (pairIndex < layer.length) {\n pushed = true;\n proof.push({\n position: isRightNode ? 'left' : 'right',\n data: layer[pairIndex]\n });\n }\n const leftchildIndex = index * 2;\n const rightchildIndex = index * 2 + 1;\n this.getProofsDFS(currentLayer - 1, leftchildIndex, proof, proofs);\n this.getProofsDFS(currentLayer - 1, rightchildIndex, proof, proofs);\n if (pushed)\n proof.splice(proof.length - 1, 1);\n }\n /**\n * getHexProofs\n * @desc Returns the proofs for all leaves as hex strings.\n * @return {String[]} - Proofs array as hex strings.\n * @example\n * ```js\n *const proofs = tree.getHexProofs()\n *```\n */\n getHexProofs() {\n return this.getProofs().map(item => this.bufferToHex(item.data));\n }\n /**\n * getPositionalHexProof\n * @desc Returns the proof for a target leaf as hex strings and the position in binary (left == 0).\n * @param {Buffer} leaf - Target leaf\n * @param {Number} [index] - Target leaf index in leaves array.\n * Use if there are leaves containing duplicate data in order to distinguish it.\n * @return {(string | number)[][]} - Proof array as hex strings. position at index 0\n * @example\n * ```js\n *const proof = tree.getPositionalHexProof(leaves[2])\n *```\n */\n getPositionalHexProof(leaf, index) {\n return this.getProof(leaf, index).map(item => {\n return [\n item.position === 'left' ? 0 : 1,\n this.bufferToHex(item.data)\n ];\n });\n }\n /**\n * marshalProof\n * @desc Returns proof array as JSON string.\n * @param {String[]|Object[]} proof - Merkle tree proof array\n * @return {String} - Proof array as JSON string.\n * @example\n * ```js\n *const jsonStr = MerkleTree.marshalProof(proof)\n *```\n */\n static marshalProof(proof) {\n const json = proof.map(item => {\n if (typeof item === 'string') {\n return item;\n }\n if (buffer_1.Buffer.isBuffer(item)) {\n return MerkleTree.bufferToHex(item);\n }\n return {\n position: item.position,\n data: MerkleTree.bufferToHex(item.data)\n };\n });\n return JSON.stringify(json, null, 2);\n }\n /**\n * unmarshalProof\n * @desc Returns the proof for a target leaf as a list of Buffers.\n * @param {String|Object} - Merkle tree leaves\n * @return {String|Object} - Marshalled proof\n * @example\n * ```js\n *const proof = MerkleTree.unmarshalProof(jsonStr)\n *```\n */\n static unmarshalProof(jsonStr) {\n let parsed = null;\n if (typeof jsonStr === 'string') {\n parsed = JSON.parse(jsonStr);\n }\n else if (jsonStr instanceof Object) {\n parsed = jsonStr;\n }\n else {\n throw new Error('Expected type of string or object');\n }\n if (!parsed) {\n return [];\n }\n if (!Array.isArray(parsed)) {\n throw new Error('Expected JSON string to be array');\n }\n return parsed.map(item => {\n if (typeof item === 'string') {\n return MerkleTree.bufferify(item);\n }\n else if (item instanceof Object) {\n return {\n position: item.position,\n data: MerkleTree.bufferify(item.data)\n };\n }\n else {\n throw new Error('Expected item to be of type string or object');\n }\n });\n }\n static marshalTree(tree) {\n const root = tree.getHexRoot();\n const leaves = tree.leaves.map(leaf => MerkleTree.bufferToHex(leaf));\n const layers = tree.getHexLayers();\n const options = tree.getOptions();\n return JSON.stringify({\n options,\n root,\n layers,\n leaves\n }, null, 2);\n }\n static unmarshalTree(jsonStr, hashFn = sha256_1.default, options = {}) {\n let parsed = null;\n if (typeof jsonStr === 'string') {\n parsed = JSON.parse(jsonStr);\n }\n else if (jsonStr instanceof Object) {\n parsed = jsonStr;\n }\n else {\n throw new Error('Expected type of string or object');\n }\n if (!parsed) {\n throw new Error('could not parse json');\n }\n options = Object.assign({}, parsed.options || {}, options);\n return new MerkleTree(parsed.leaves, hashFn, options);\n }\n /**\n * getProofIndices\n * @desc Returns the proof indices for given tree indices.\n * @param {Number[]} treeIndices - Tree indices\n * @param {Number} depth - Tree depth; number of layers.\n * @return {Number[]} - Proof indices\n * @example\n * ```js\n *const proofIndices = tree.getProofIndices([2,5,6], 4)\n *console.log(proofIndices) // [ 23, 20, 19, 8, 3 ]\n *```\n */\n getProofIndices(treeIndices, depth) {\n const leafCount = Math.pow(2, depth);\n let maximalIndices = new Set();\n for (const index of treeIndices) {\n let x = leafCount + index;\n while (x > 1) {\n maximalIndices.add(x ^ 1);\n x = (x / 2) | 0;\n }\n }\n const a = treeIndices.map(index => leafCount + index);\n const b = Array.from(maximalIndices).sort((a, b) => a - b).reverse();\n maximalIndices = a.concat(b);\n const redundantIndices = new Set();\n const proof = [];\n for (let index of maximalIndices) {\n if (!redundantIndices.has(index)) {\n proof.push(index);\n while (index > 1) {\n redundantIndices.add(index);\n if (!redundantIndices.has(index ^ 1))\n break;\n index = (index / 2) | 0;\n }\n }\n }\n return proof.filter(index => {\n return !treeIndices.includes(index - leafCount);\n });\n }\n getProofIndicesForUnevenTree(sortedLeafIndices, leavesCount) {\n const depth = Math.ceil(Math.log2(leavesCount));\n const unevenLayers = [];\n for (let index = 0; index < depth; index++) {\n const unevenLayer = leavesCount % 2 !== 0;\n if (unevenLayer) {\n unevenLayers.push({ index, leavesCount });\n }\n leavesCount = Math.ceil(leavesCount / 2);\n }\n const proofIndices = [];\n let layerNodes = sortedLeafIndices;\n for (let layerIndex = 0; layerIndex < depth; layerIndex++) {\n const siblingIndices = layerNodes.map((index) => {\n if (index % 2 === 0) {\n return index + 1;\n }\n return index - 1;\n });\n let proofNodeIndices = siblingIndices.filter((index) => !layerNodes.includes(index));\n const unevenLayer = unevenLayers.find(({ index }) => index === layerIndex);\n if (unevenLayer && layerNodes.includes(unevenLayer.leavesCount - 1)) {\n proofNodeIndices = proofNodeIndices.slice(0, -1);\n }\n proofIndices.push(proofNodeIndices);\n layerNodes = [...new Set(layerNodes.map((index) => {\n if (index % 2 === 0) {\n return index / 2;\n }\n if (index % 2 === 0) {\n return (index + 1) / 2;\n }\n return (index - 1) / 2;\n }))];\n }\n return proofIndices;\n }\n /**\n * getMultiProof\n * @desc Returns the multiproof for given tree indices.\n * @param {Number[]} indices - Tree indices.\n * @return {Buffer[]} - Multiproofs\n * @example\n * ```js\n *const indices = [2, 5, 6]\n *const proof = tree.getMultiProof(indices)\n *```\n */\n getMultiProof(tree, indices) {\n if (!this.complete) {\n console.warn('Warning: For correct multiProofs it\\'s strongly recommended to set complete: true');\n }\n if (!indices) {\n indices = tree;\n tree = this.getLayersFlat();\n }\n const isUneven = this.isUnevenTree();\n if (isUneven) {\n if (indices.every(Number.isInteger)) {\n return this.getMultiProofForUnevenTree(indices);\n }\n }\n if (!indices.every(Number.isInteger)) {\n let els = indices;\n if (this.sortPairs) {\n els = els.sort(buffer_1.Buffer.compare);\n }\n let ids = els.map((el) => this.bufferIndexOf(this.leaves, el, this.sortLeaves)).sort((a, b) => a === b ? 0 : a > b ? 1 : -1);\n if (!ids.every((idx) => idx !== -1)) {\n throw new Error('Element does not exist in Merkle tree');\n }\n const hashes = [];\n const proof = [];\n let nextIds = [];\n for (let i = 0; i < this.layers.length; i++) {\n const layer = this.layers[i];\n for (let j = 0; j < ids.length; j++) {\n const idx = ids[j];\n const pairElement = this.getPairNode(layer, idx);\n hashes.push(layer[idx]);\n if (pairElement) {\n proof.push(pairElement);\n }\n nextIds.push((idx / 2) | 0);\n }\n ids = nextIds.filter((value, i, self) => self.indexOf(value) === i);\n nextIds = [];\n }\n return proof.filter((value) => !hashes.includes(value));\n }\n return this.getProofIndices(indices, Math.log2((tree.length / 2) | 0)).map(index => tree[index]);\n }\n getMultiProofForUnevenTree(tree, indices) {\n if (!indices) {\n indices = tree;\n tree = this.getLayers();\n }\n let proofHashes = [];\n let currentLayerIndices = indices;\n for (const treeLayer of tree) {\n const siblings = [];\n for (const index of currentLayerIndices) {\n if (index % 2 === 0) {\n const idx = index + 1;\n if (!currentLayerIndices.includes(idx)) {\n if (treeLayer[idx]) {\n siblings.push(treeLayer[idx]);\n continue;\n }\n }\n }\n const idx = index - 1;\n if (!currentLayerIndices.includes(idx)) {\n if (treeLayer[idx]) {\n siblings.push(treeLayer[idx]);\n continue;\n }\n }\n }\n proofHashes = proofHashes.concat(siblings);\n const uniqueIndices = new Set();\n for (const index of currentLayerIndices) {\n if (index % 2 === 0) {\n uniqueIndices.add(index / 2);\n continue;\n }\n if (index % 2 === 0) {\n uniqueIndices.add((index + 1) / 2);\n continue;\n }\n uniqueIndices.add((index - 1) / 2);\n }\n currentLayerIndices = Array.from(uniqueIndices);\n }\n return proofHashes;\n }\n /**\n * getHexMultiProof\n * @desc Returns the multiproof for given tree indices as hex strings.\n * @param {Number[]} indices - Tree indices.\n * @return {String[]} - Multiproofs as hex strings.\n * @example\n * ```js\n *const indices = [2, 5, 6]\n *const proof = tree.getHexMultiProof(indices)\n *```\n */\n getHexMultiProof(tree, indices) {\n return this.getMultiProof(tree, indices).map((x) => this.bufferToHex(x));\n }\n /**\n * getProofFlags\n * @desc Returns list of booleans where proofs should be used instead of hashing.\n * Proof flags are used in the Solidity multiproof verifiers.\n * @param {Number[]|Buffer[]} leaves\n * @param {Buffer[]} proofs\n * @return {Boolean[]} - Boolean flags\n * @example\n * ```js\n *const indices = [2, 5, 6]\n *const proof = tree.getMultiProof(indices)\n *const proofFlags = tree.getProofFlags(leaves, proof)\n *```\n */\n getProofFlags(leaves, proofs) {\n if (!Array.isArray(leaves) || leaves.length <= 0) {\n throw new Error('Invalid Inputs!');\n }\n let ids;\n if (leaves.every(Number.isInteger)) {\n ids = [...leaves].sort((a, b) => a === b ? 0 : a > b ? 1 : -1); // Indices where passed\n }\n else {\n ids = leaves.map((el) => this.bufferIndexOf(this.leaves, el, this.sortLeaves)).sort((a, b) => a === b ? 0 : a > b ? 1 : -1);\n }\n if (!ids.every((idx) => idx !== -1)) {\n throw new Error('Element does not exist in Merkle tree');\n }\n const proofBufs = proofs.map(item => this.bufferify(item));\n const tested = [];\n const flags = [];\n for (let index = 0; index < this.layers.length; index++) {\n const layer = this.layers[index];\n ids = ids.reduce((ids, idx) => {\n const skipped = tested.includes(layer[idx]);\n if (!skipped) {\n const pairElement = this.getPairNode(layer, idx);\n const proofUsed = this.bufferArrayIncludes(proofBufs, layer[idx]) || this.bufferArrayIncludes(proofBufs, pairElement);\n pairElement && flags.push(!proofUsed);\n tested.push(layer[idx]);\n tested.push(pairElement);\n }\n ids.push((idx / 2) | 0);\n return ids;\n }, []);\n }\n return flags;\n }\n /**\n * verify\n * @desc Returns true if the proof path (array of hashes) can connect the target node\n * to the Merkle root.\n * @param {Object[]} proof - Array of proof objects that should connect\n * target node to Merkle root.\n * @param {Buffer} targetNode - Target node Buffer\n * @param {Buffer} root - Merkle root Buffer\n * @return {Boolean}\n * @example\n *```js\n *const root = tree.getRoot()\n *const proof = tree.getProof(leaves[2])\n *const verified = tree.verify(proof, leaves[2], root)\n *```\n */\n verify(proof, targetNode, root) {\n let hash = this.bufferify(targetNode);\n root = this.bufferify(root);\n if (!Array.isArray(proof) ||\n !targetNode ||\n !root) {\n return false;\n }\n for (let i = 0; i < proof.length; i++) {\n const node = proof[i];\n let data = null;\n let isLeftNode = null;\n // case for when proof is hex values only\n if (typeof node === 'string') {\n data = this.bufferify(node);\n isLeftNode = true;\n }\n else if (Array.isArray(node)) {\n isLeftNode = (node[0] === 0);\n data = this.bufferify(node[1]);\n }\n else if (buffer_1.Buffer.isBuffer(node)) {\n data = node;\n isLeftNode = true;\n }\n else if (node instanceof Object) {\n data = this.bufferify(node.data);\n isLeftNode = (node.position === 'left');\n }\n else {\n throw new Error('Expected node to be of type string or object');\n }\n const buffers = [];\n if (this.isBitcoinTree) {\n buffers.push(buffer_reverse_1.default(hash));\n buffers[isLeftNode ? 'unshift' : 'push'](buffer_reverse_1.default(data));\n hash = this.hashFn(this.concatenator(buffers));\n hash = buffer_reverse_1.default(this.hashFn(hash));\n }\n else {\n if (this.sortPairs) {\n if (buffer_1.Buffer.compare(hash, data) === -1) {\n buffers.push(hash, data);\n hash = this.hashFn(this.concatenator(buffers));\n }\n else {\n buffers.push(data, hash);\n hash = this.hashFn(this.concatenator(buffers));\n }\n }\n else {\n buffers.push(hash);\n buffers[isLeftNode ? 'unshift' : 'push'](data);\n hash = this.hashFn(this.concatenator(buffers));\n }\n }\n }\n return buffer_1.Buffer.compare(hash, root) === 0;\n }\n /**\n * verifyMultiProof\n * @desc Returns true if the multiproofs can connect the leaves to the Merkle root.\n * @param {Buffer} root - Merkle tree root\n * @param {Number[]} proofIndices - Leave indices for proof\n * @param {Buffer[]} proofLeaves - Leaf values at indices for proof\n * @param {Number} leavesCount - Count of original leaves\n * @param {Buffer[]} proof - Multiproofs given indices\n * @return {Boolean}\n * @example\n *```js\n *const leaves = tree.getLeaves()\n *const root = tree.getRoot()\n *const treeFlat = tree.getLayersFlat()\n *const leavesCount = leaves.length\n *const proofIndices = [2, 5, 6]\n *const proofLeaves = proofIndices.map(i => leaves[i])\n *const proof = tree.getMultiProof(treeFlat, indices)\n *const verified = tree.verifyMultiProof(root, proofIndices, proofLeaves, leavesCount, proof)\n *```\n */\n verifyMultiProof(root, proofIndices, proofLeaves, leavesCount, proof) {\n const isUneven = this.isUnevenTree();\n if (isUneven) {\n // TODO: combine these functions and simplify\n return this.verifyMultiProofForUnevenTree(root, proofIndices, proofLeaves, leavesCount, proof);\n }\n const depth = Math.ceil(Math.log2(leavesCount));\n root = this.bufferify(root);\n proofLeaves = proofLeaves.map(leaf => this.bufferify(leaf));\n proof = proof.map(leaf => this.bufferify(leaf));\n const tree = {};\n for (const [index, leaf] of this.zip(proofIndices, proofLeaves)) {\n tree[(Math.pow(2, depth)) + index] = leaf;\n }\n for (const [index, proofitem] of this.zip(this.getProofIndices(proofIndices, depth), proof)) {\n tree[index] = proofitem;\n }\n let indexqueue = Object.keys(tree).map(value => +value).sort((a, b) => a - b);\n indexqueue = indexqueue.slice(0, indexqueue.length - 1);\n let i = 0;\n while (i < indexqueue.length) {\n const index = indexqueue[i];\n if (index >= 2 && ({}).hasOwnProperty.call(tree, index ^ 1)) {\n let pair = [tree[index - (index % 2)], tree[index - (index % 2) + 1]];\n if (this.sortPairs) {\n pair = pair.sort(buffer_1.Buffer.compare);\n }\n const hash = pair[1] ? this.hashFn(this.concatenator(pair)) : pair[0];\n tree[(index / 2) | 0] = hash;\n indexqueue.push((index / 2) | 0);\n }\n i += 1;\n }\n return !proofIndices.length || (({}).hasOwnProperty.call(tree, 1) && tree[1].equals(root));\n }\n verifyMultiProofWithFlags(root, leaves, proofs, proofFlag) {\n root = this.bufferify(root);\n leaves = leaves.map(this.bufferify);\n proofs = proofs.map(this.bufferify);\n const leavesLen = leaves.length;\n const totalHashes = proofFlag.length;\n const hashes = [];\n let leafPos = 0;\n let hashPos = 0;\n let proofPos = 0;\n for (let i = 0; i < totalHashes; i++) {\n const bufA = proofFlag[i] ? (leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++]) : proofs[proofPos++];\n const bufB = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++];\n const buffers = [bufA, bufB].sort(buffer_1.Buffer.compare);\n hashes[i] = this.hashFn(this.concatenator(buffers));\n }\n return buffer_1.Buffer.compare(hashes[totalHashes - 1], root) === 0;\n }\n verifyMultiProofForUnevenTree(root, indices, leaves, leavesCount, proof) {\n root = this.bufferify(root);\n leaves = leaves.map(leaf => this.bufferify(leaf));\n proof = proof.map(leaf => this.bufferify(leaf));\n const computedRoot = this.calculateRootForUnevenTree(indices, leaves, leavesCount, proof);\n return root.equals(computedRoot);\n }\n /**\n * getDepth\n * @desc Returns the tree depth (number of layers)\n * @return {Number}\n * @example\n *```js\n *const depth = tree.getDepth()\n *```\n */\n getDepth() {\n return this.getLayers().length - 1;\n }\n /**\n * getLayersAsObject\n * @desc Returns the layers as nested objects instead of an array.\n * @example\n *```js\n *const layersObj = tree.getLayersAsObject()\n *```\n */\n getLayersAsObject() {\n const layers = this.getLayers().map((layer) => layer.map((value) => this.bufferToHex(value, false)));\n const objs = [];\n for (let i = 0; i < layers.length; i++) {\n const arr = [];\n for (let j = 0; j < layers[i].length; j++) {\n const obj = { [layers[i][j]]: null };\n if (objs.length) {\n obj[layers[i][j]] = {};\n const a = objs.shift();\n const akey = Object.keys(a)[0];\n obj[layers[i][j]][akey] = a[akey];\n if (objs.length) {\n const b = objs.shift();\n const bkey = Object.keys(b)[0];\n obj[layers[i][j]][bkey] = b[bkey];\n }\n }\n arr.push(obj);\n }\n objs.push(...arr);\n }\n return objs[0];\n }\n /**\n * verify\n * @desc Returns true if the proof path (array of hashes) can connect the target node\n * to the Merkle root.\n * @param {Object[]} proof - Array of proof objects that should connect\n * target node to Merkle root.\n * @param {Buffer} targetNode - Target node Buffer\n * @param {Buffer} root - Merkle root Buffer\n * @param {Function} hashFunction - Hash function for hashing leaves and nodes\n * @param {Object} options - Additional options\n * @return {Boolean}\n * @example\n *```js\n *const verified = MerkleTree.verify(proof, leaf, root, sha256, options)\n *```\n */\n static verify(proof, targetNode, root, hashFn = sha256_1.default, options = {}) {\n const tree = new MerkleTree([], hashFn, options);\n return tree.verify(proof, targetNode, root);\n }\n /**\n * getMultiProof\n * @desc Returns the multiproof for given tree indices.\n * @param {Buffer[]} tree - Tree as a flat array.\n * @param {Number[]} indices - Tree indices.\n * @return {Buffer[]} - Multiproofs\n *\n *@example\n * ```js\n *const flatTree = tree.getLayersFlat()\n *const indices = [2, 5, 6]\n *const proof = MerkleTree.getMultiProof(flatTree, indices)\n *```\n */\n static getMultiProof(tree, indices) {\n const t = new MerkleTree([]);\n return t.getMultiProof(tree, indices);\n }\n /**\n * resetTree\n * @desc Resets the tree by clearing the leaves and layers.\n * @example\n *```js\n *tree.resetTree()\n *```\n */\n resetTree() {\n this.leaves = [];\n this.layers = [];\n }\n /**\n * getPairNode\n * @desc Returns the node at the index for given layer.\n * @param {Buffer[]} layer - Tree layer\n * @param {Number} index - Index at layer.\n * @return {Buffer} - Node\n *\n *@example\n * ```js\n *const node = tree.getPairNode(layer, index)\n *```\n */\n getPairNode(layer, idx) {\n const pairIdx = idx % 2 === 0 ? idx + 1 : idx - 1;\n if (pairIdx < layer.length) {\n return layer[pairIdx];\n }\n else {\n return null;\n }\n }\n /**\n * toTreeString\n * @desc Returns a visual representation of the merkle tree as a string.\n * @return {String}\n * @example\n *```js\n *console.log(tree.toTreeString())\n *```\n */\n toTreeString() {\n const obj = this.getLayersAsObject();\n return treeify_1.default.asTree(obj, true);\n }\n /**\n * toString\n * @desc Returns a visual representation of the merkle tree as a string.\n * @example\n *```js\n *console.log(tree.toString())\n *```\n */\n toString() {\n return this.toTreeString();\n }\n isUnevenTree(treeLayers) {\n const depth = (treeLayers === null || treeLayers === void 0 ? void 0 : treeLayers.length) || this.getDepth();\n return !this.isPowOf2(depth);\n }\n isPowOf2(v) {\n return v && !(v & (v - 1));\n }\n isValidLeafIndex(idx) {\n return idx >= 0 && idx < this.getLeafCount();\n }\n calculateRootForUnevenTree(leafIndices, leafHashes, totalLeavesCount, proofHashes) {\n const leafTuples = this.zip(leafIndices, leafHashes).sort(([indexA], [indexB]) => indexA - indexB);\n const leafTupleIndices = leafTuples.map(([index]) => index);\n const proofIndices = this.getProofIndicesForUnevenTree(leafTupleIndices, totalLeavesCount);\n let nextSliceStart = 0;\n const proofTuplesByLayers = [];\n for (let i = 0; i < proofIndices.length; i++) {\n const indices = proofIndices[i];\n const sliceStart = nextSliceStart;\n nextSliceStart += indices.length;\n proofTuplesByLayers[i] = this.zip(indices, proofHashes.slice(sliceStart, nextSliceStart));\n }\n const tree = [leafTuples];\n for (let layerIndex = 0; layerIndex < proofTuplesByLayers.length; layerIndex++) {\n const currentLayer = proofTuplesByLayers[layerIndex].concat(tree[layerIndex]).sort(([indexA], [indexB]) => indexA - indexB)\n .map(([, hash]) => hash);\n const s = tree[layerIndex].map(([layerIndex]) => layerIndex);\n const parentIndices = [...new Set(s.map((index) => {\n if (index % 2 === 0) {\n return index / 2;\n }\n if (index % 2 === 0) {\n return (index + 1) / 2;\n }\n return (index - 1) / 2;\n }))];\n const parentLayer = [];\n for (let i = 0; i < parentIndices.length; i++) {\n const parentNodeTreeIndex = parentIndices[i];\n const bufA = currentLayer[i * 2];\n const bufB = currentLayer[i * 2 + 1];\n const hash = bufB ? this.hashFn(this.concatenator([bufA, bufB])) : bufA;\n parentLayer.push([parentNodeTreeIndex, hash]);\n }\n tree.push(parentLayer);\n }\n return tree[tree.length - 1][0][1];\n }\n}\nexports.MerkleTree = MerkleTree;\nif (typeof window !== 'undefined') {\n ;\n window.MerkleTree = MerkleTree;\n}\nexports.default = MerkleTree;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MerkleMountainRange = void 0;\nconst buffer_1 = require(\"buffer\");\nconst sha256_1 = __importDefault(require(\"crypto-js/sha256\"));\nconst Base_1 = __importDefault(require(\"./Base\"));\n// @credit: https://github.com/wanseob/solidity-mmr\n/**\n * @desc The index of this MMR implementation starts from 1 not 0.\n */\nclass MerkleMountainRange extends Base_1.default {\n constructor(hashFn = sha256_1.default, leaves = [], hashLeafFn, peakBaggingFn, hashBranchFn) {\n super();\n this.root = buffer_1.Buffer.alloc(0);\n this.size = 0;\n this.width = 0;\n this.hashes = {};\n this.data = {};\n leaves = leaves.map(this.bufferify);\n this.hashFn = this.bufferifyFn(hashFn);\n this.hashLeafFn = hashLeafFn;\n this.peakBaggingFn = peakBaggingFn;\n this.hashBranchFn = hashBranchFn;\n for (const leaf of leaves) {\n this.append(leaf);\n }\n }\n /**\n * @desc This only stores the hashed value of the leaf.\n * If you need to retrieve the detail data later, use a map to store them.\n */\n append(data) {\n data = this.bufferify(data);\n const dataHash = this.hashFn(data);\n const dataHashHex = this.bufferToHex(dataHash);\n if (!this.data[dataHashHex] || this.bufferToHex(this.hashFn(this.data[dataHashHex])) !== dataHashHex) {\n this.data[dataHashHex] = data;\n }\n const leaf = this.hashLeaf(this.size + 1, dataHash);\n this.hashes[this.size + 1] = leaf;\n this.width += 1;\n // find peaks for enlarged tree\n const peakIndexes = this.getPeakIndexes(this.width);\n // the right most peak's value is the new size of the updated tree\n this.size = this.getSize(this.width);\n // starting from the left-most peak, get all peak hashes\n const peaks = [];\n for (let i = 0; i < peakIndexes.length; i++) {\n peaks[i] = this._getOrCreateNode(peakIndexes[i]);\n }\n // update the tree root hash\n this.root = this.peakBagging(this.width, peaks);\n }\n /**\n * @desc It returns the hash of a leaf node with hash(M | DATA )\n * M is the index of the node.\n */\n hashLeaf(index, dataHash) {\n dataHash = this.bufferify(dataHash);\n if (this.hashLeafFn) {\n return this.bufferify(this.hashLeafFn(index, dataHash));\n }\n return this.hashFn(buffer_1.Buffer.concat([this.bufferify(index), dataHash]));\n }\n /**\n * @desc It returns the hash a parent node with hash(M | Left child | Right child)\n * M is the index of the node.\n */\n hashBranch(index, left, right) {\n if (this.hashBranchFn) {\n return this.bufferify(this.hashBranchFn(index, left, right));\n }\n return this.hashFn(buffer_1.Buffer.concat([this.bufferify(index), this.bufferify(left), this.bufferify(right)]));\n }\n getPeaks() {\n const peakIndexes = this.getPeakIndexes(this.width);\n const peaks = [];\n for (let i = 0; i < peakIndexes.length; i++) {\n peaks[i] = this.hashes[peakIndexes[i]];\n }\n return peaks;\n }\n getLeafIndex(width) {\n if (width % 2 === 1) {\n return this.getSize(width);\n }\n return this.getSize(width - 1) + 1;\n }\n /**\n * @desc It returns all peaks of the smallest merkle mountain range tree which includes\n * the given index(size).\n */\n getPeakIndexes(width) {\n const numPeaks = this.numOfPeaks(width);\n const peakIndexes = [];\n let count = 0;\n let size = 0;\n for (let i = 255; i > 0; i--) {\n if ((width & (1 << (i - 1))) !== 0) {\n // peak exists\n size = size + (1 << i) - 1;\n peakIndexes[count++] = size;\n if (peakIndexes.length >= numPeaks) {\n break;\n }\n }\n }\n if (count !== peakIndexes.length) {\n throw new Error('invalid bit calculation');\n }\n return peakIndexes;\n }\n numOfPeaks(width) {\n let bits = width;\n let num = 0;\n while (bits > 0) {\n if (bits % 2 === 1) {\n num++;\n }\n bits = bits >> 1;\n }\n return num;\n }\n peakBagging(width, peaks) {\n const size = this.getSize(width);\n if (this.numOfPeaks(width) !== peaks.length) {\n throw new Error('received invalid number of peaks');\n }\n if (width === 0 && !peaks.length) {\n return buffer_1.Buffer.alloc(0);\n }\n if (this.peakBaggingFn) {\n return this.bufferify(this.peakBaggingFn(size, peaks));\n }\n return this.hashFn(buffer_1.Buffer.concat([this.bufferify(size), ...peaks.map(this.bufferify)]));\n }\n /**\n * @desc It returns the size of the tree.\n */\n getSize(width) {\n return (width << 1) - this.numOfPeaks(width);\n }\n /**\n * @desc It returns the root value of the tree.\n */\n getRoot() {\n return this.root;\n }\n getHexRoot() {\n return this.bufferToHex(this.getRoot());\n }\n /**\n * @dev It returns the hash value of a node for the given position. Note that the index starts from 1.\n */\n getNode(index) {\n return this.hashes[index];\n }\n /**\n * @desc It returns the height of the highest peak.\n */\n mountainHeight(size) {\n let height = 1;\n while (1 << height <= size + height) {\n height++;\n }\n return height - 1;\n }\n /**\n * @desc It returns the height of the index.\n */\n heightAt(index) {\n let reducedIndex = index;\n let peakIndex = 0;\n let height = 0;\n // if an index has a left mountain then subtract the mountain\n while (reducedIndex > peakIndex) {\n reducedIndex -= (1 << height) - 1;\n height = this.mountainHeight(reducedIndex);\n peakIndex = (1 << height) - 1;\n }\n // index is on the right slope\n return height - (peakIndex - reducedIndex);\n }\n /**\n * @desc It returns whether the index is the leaf node or not\n */\n isLeaf(index) {\n return this.heightAt(index) === 1;\n }\n /**\n * @desc It returns the children when it is a parent node.\n */\n getChildren(index) {\n const left = index - (1 << (this.heightAt(index) - 1));\n const right = index - 1;\n if (left === right) {\n throw new Error('not a parent');\n }\n return [left, right];\n }\n /**\n * @desc It returns a merkle proof for a leaf. Note that the index starts from 1.\n */\n getMerkleProof(index) {\n if (index > this.size) {\n throw new Error('out of range');\n }\n if (!this.isLeaf(index)) {\n throw new Error('not a leaf');\n }\n const root = this.root;\n const width = this.width;\n // find all peaks for bagging\n const peaks = this.getPeakIndexes(this.width);\n const peakBagging = [];\n let cursor = 0;\n for (let i = 0; i < peaks.length; i++) {\n // collect the hash of all peaks\n peakBagging[i] = this.hashes[peaks[i]];\n // find the peak which includes the target index\n if (peaks[i] >= index && cursor === 0) {\n cursor = peaks[i];\n }\n }\n let left = 0;\n let right = 0;\n // get hashes of the siblings in the mountain which the index belgons to.\n // it moves the cursor from the summit of the mountain down to the target index\n let height = this.heightAt(cursor);\n const siblings = [];\n while (cursor !== index) {\n height--;\n ([left, right] = this.getChildren(cursor));\n // move the cursor down to the left size or right size\n cursor = index <= left ? left : right;\n // remaining node is the sibling\n siblings[height - 1] = this.hashes[index <= left ? right : left];\n }\n return {\n root,\n width,\n peakBagging,\n siblings\n };\n }\n /**\n * @desc It returns true when the given params verifies that the given value exists in the tree or reverts the transaction.\n */\n verify(root, width, index, value, peaks, siblings) {\n value = this.bufferify(value);\n const size = this.getSize(width);\n if (size < index) {\n throw new Error('index is out of range');\n }\n // check the root equals the peak bagging hash\n if (!root.equals(this.peakBagging(width, peaks))) {\n throw new Error('invalid root hash from the peaks');\n }\n // find the mountain where the target index belongs to\n let cursor = 0;\n let targetPeak;\n const peakIndexes = this.getPeakIndexes(width);\n for (let i = 0; i < peakIndexes.length; i++) {\n if (peakIndexes[i] >= index) {\n targetPeak = peaks[i];\n cursor = peakIndexes[i];\n break;\n }\n }\n if (!targetPeak) {\n throw new Error('target not found');\n }\n // find the path climbing down\n let height = siblings.length + 1;\n const path = new Array(height);\n let left = 0;\n let right = 0;\n while (height > 0) {\n // record the current cursor and climb down\n path[--height] = cursor;\n if (cursor === index) {\n // on the leaf node. Stop climbing down\n break;\n }\n else {\n // on the parent node. Go left or right\n ([left, right] = this.getChildren(cursor));\n cursor = index > left ? right : left;\n continue;\n }\n }\n // calculate the summit hash climbing up again\n let node;\n while (height < path.length) {\n // move cursor\n cursor = path[height];\n if (height === 0) {\n // cusor is on the leaf\n node = this.hashLeaf(cursor, this.hashFn(value));\n }\n else if (cursor - 1 === path[height - 1]) {\n // cursor is on a parent and a siblings is on the left\n node = this.hashBranch(cursor, siblings[height - 1], node);\n }\n else {\n // cursor is on a parent and a siblings is on the right\n node = this.hashBranch(cursor, node, siblings[height - 1]);\n }\n // climb up\n height++;\n }\n // computed hash value of the summit should equal to the target peak hash\n if (!node.equals(targetPeak)) {\n throw new Error('hashed peak is invalid');\n }\n return true;\n }\n peaksToPeakMap(width, peaks) {\n const peakMap = {};\n let bitIndex = 0;\n let peakRef = 0;\n let count = peaks.length;\n for (let height = 1; height <= 32; height++) {\n // index starts from the right most bit\n bitIndex = 32 - height;\n peakRef = 1 << (height - 1);\n if ((width & peakRef) !== 0) {\n peakMap[bitIndex] = peaks[--count];\n }\n else {\n peakMap[bitIndex] = 0;\n }\n }\n if (count !== 0) {\n throw new Error('invalid number of peaks');\n }\n return peakMap;\n }\n peakMapToPeaks(width, peakMap) {\n const arrLength = this.numOfPeaks(width);\n const peaks = new Array(arrLength);\n let count = 0;\n for (let i = 0; i < 32; i++) {\n if (peakMap[i] !== 0) {\n peaks[count++] = peakMap[i];\n }\n }\n if (count !== arrLength) {\n throw new Error('invalid number of peaks');\n }\n return peaks;\n }\n peakUpdate(width, prevPeakMap, itemHash) {\n const nextPeakMap = {};\n const newWidth = width + 1;\n let cursorIndex = this.getLeafIndex(newWidth);\n let cursorNode = this.hashLeaf(cursorIndex, itemHash);\n let bitIndex = 0;\n let peakRef = 0;\n let prevPeakExist = false;\n let nextPeakExist = false;\n let obtained = false;\n for (let height = 1; height <= 32; height++) {\n // index starts from the right most bit\n bitIndex = 32 - height;\n if (obtained) {\n nextPeakMap[bitIndex] = prevPeakMap[bitIndex];\n }\n else {\n peakRef = 1 << (height - 1);\n prevPeakExist = (width & peakRef) !== 0;\n nextPeakExist = (newWidth & peakRef) !== 0;\n // get new cursor node with hashing the peak and the current cursor\n cursorIndex++;\n if (prevPeakExist) {\n cursorNode = this.hashBranch(cursorIndex, prevPeakMap[bitIndex], cursorNode);\n }\n // if new peak exists for the bit index\n if (nextPeakExist) {\n // if prev peak exists for the bit index\n if (prevPeakExist) {\n nextPeakMap[bitIndex] = prevPeakMap[bitIndex];\n }\n else {\n nextPeakMap[bitIndex] = cursorNode;\n }\n obtained = true;\n }\n else {\n nextPeakMap[bitIndex] = 0;\n }\n }\n }\n return nextPeakMap;\n }\n rollUp(root, width, peaks, itemHashes) {\n // check the root equals the peak bagging hash\n if (!root.equals(this.peakBagging(width, peaks))) {\n throw new Error('invalid root hash from the peaks');\n }\n let tmpWidth = width;\n let tmpPeakMap = this.peaksToPeakMap(width, peaks);\n for (let i = 0; i < itemHashes.length; i++) {\n tmpPeakMap = this.peakUpdate(tmpWidth, tmpPeakMap, itemHashes[i]);\n tmpWidth++;\n }\n return this.peakBagging(tmpWidth, this.peakMapToPeaks(tmpWidth, tmpPeakMap));\n }\n /**\n * @desc It returns the hash value of the node for the index.\n * If the hash already exists it simply returns the stored value. On the other hand,\n * it computes hashes recursively downward.\n * Only appending an item calls this function.\n */\n _getOrCreateNode(index) {\n if (index > this.size) {\n throw new Error('out of range');\n }\n if (!this.hashes[index]) {\n const [leftIndex, rightIndex] = this.getChildren(index);\n const leftHash = this._getOrCreateNode(leftIndex);\n const rightHash = this._getOrCreateNode(rightIndex);\n this.hashes[index] = this.hashBranch(index, leftHash, rightHash);\n }\n return this.hashes[index];\n }\n}\nexports.MerkleMountainRange = MerkleMountainRange;\nif (typeof window !== 'undefined') {\n ;\n window.MerkleMountainRange = MerkleMountainRange;\n}\nexports.default = MerkleMountainRange;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IncrementalMerkleTree = void 0;\nconst Base_1 = __importDefault(require(\"./Base\"));\nconst treeify_1 = __importDefault(require(\"treeify\"));\nclass IncrementalMerkleTree extends Base_1.default {\n constructor(hashFn, options) {\n super();\n this.hashFn = hashFn;\n if (options.depth) {\n this.depth = options.depth;\n }\n if (options.arity) {\n this.arity = options.arity;\n }\n if (this.depth < 1) {\n throw new Error('depth must be greater than 0');\n }\n if (this.arity < 1) {\n throw new Error('arity must be greater than 0');\n }\n const nodes = [];\n let zeroValue = options.zeroValue;\n this.zeroValue = zeroValue;\n this.zeroes = [];\n if (this.depth) {\n for (let i = 0; i < this.depth; i++) {\n this.zeroes.push(zeroValue);\n nodes[i] = [];\n zeroValue = this.hashFn(Array(this.arity).fill(zeroValue));\n }\n }\n this.nodes = nodes;\n this.root = zeroValue;\n }\n getRoot() {\n return this.root;\n }\n getHexRoot() {\n return this.bufferToHex(this.bufferify(this.getRoot()));\n }\n insert(leaf) {\n if (this.depth && this.arity) {\n if (this.nodes[0].length >= this.getMaxLeaves()) {\n throw new Error('tree is full');\n }\n }\n let node = leaf;\n let index = this.nodes[0].length;\n for (let level = 0; level < this.depth; level += 1) {\n const position = index % this.arity;\n const levelStartIndex = index - position;\n const levelEndIndex = levelStartIndex + this.arity;\n const children = [];\n this.nodes[level][index] = node;\n for (let i = levelStartIndex; i < levelEndIndex; i += 1) {\n if (i < this.nodes[level].length) {\n children.push(this.nodes[level][i]);\n }\n else {\n children.push(this.zeroes[level]);\n }\n }\n node = this.hashFn(children);\n index = Math.floor(index / this.arity);\n }\n this.root = node;\n }\n delete(index) {\n this.update(index, this.zeroValue);\n }\n update(index, newLeaf) {\n if (index < 0 || index >= this.nodes[0].length) {\n throw new Error('out of bounds');\n }\n let node = newLeaf;\n for (let level = 0; level < this.depth; level += 1) {\n const position = index % this.arity;\n const levelStartIndex = index - position;\n const levelEndIndex = levelStartIndex + this.arity;\n const children = [];\n this.nodes[level][index] = node;\n for (let i = levelStartIndex; i < levelEndIndex; i += 1) {\n if (i < this.nodes[level].length) {\n children.push(this.nodes[level][i]);\n }\n else {\n children.push(this.zeroes[level]);\n }\n }\n node = this.hashFn(children);\n index = Math.floor(index / this.arity);\n }\n this.root = node;\n }\n getDepth() {\n return this.depth;\n }\n getArity() {\n return this.arity;\n }\n getMaxLeaves() {\n return Math.pow(this.depth, this.arity);\n }\n indexOf(leaf) {\n return this.nodes[0].indexOf(leaf);\n }\n getLeaves() {\n const leaves = this.copyList(this.nodes[0]);\n const index = this.nodes[0].length;\n for (let i = index; i < this.getMaxLeaves(); i++) {\n leaves[i] = this.zeroValue;\n }\n return leaves;\n }\n copyList(list) {\n return list.map((x) => BigInt(x));\n }\n getLayers() {\n const layers = [];\n for (const list of this.nodes) {\n layers.push(this.copyList(list));\n }\n if (layers[0].length < this.getMaxLeaves()) {\n let index = layers[0].length;\n for (let i = index; i < this.getMaxLeaves(); i++) {\n layers[0][i] = this.zeroValue;\n }\n for (let level = 0; level < this.depth; level++) {\n const position = index % this.arity;\n const levelStartIndex = index - position;\n const levelEndIndex = levelStartIndex + this.arity;\n for (let i = levelStartIndex; i < levelEndIndex; i++) {\n if (i >= layers[level].length) {\n layers[level][i] = this.zeroes[level];\n }\n }\n index = Math.floor(index / this.arity);\n }\n }\n layers.push([this.root]);\n return layers;\n }\n getHexLayers() {\n return this.getLayers().reduce((acc, item) => {\n if (Array.isArray(item)) {\n acc.push(item.map(layer => this.bufferToHex(this.bufferify(layer))));\n }\n else {\n acc.push(item);\n }\n return acc;\n }, []);\n }\n getLayersAsObject() {\n const layers = this.getLayers().map((layer) => layer.map((value) => this.bufferToHex(this.bufferify(value), false)));\n const objs = [];\n for (let i = 0; i < layers.length; i++) {\n const arr = [];\n for (let j = 0; j < layers[i].length; j++) {\n const obj = { [layers[i][j]]: null };\n if (objs.length) {\n obj[layers[i][j]] = {};\n const a = objs.shift();\n const akey = Object.keys(a)[0];\n obj[layers[i][j]][akey] = a[akey];\n if (objs.length) {\n const b = objs.shift();\n const bkey = Object.keys(b)[0];\n obj[layers[i][j]][bkey] = b[bkey];\n }\n }\n arr.push(obj);\n }\n objs.push(...arr);\n }\n return objs[0];\n }\n computeRoot() {\n let node;\n let index = this.nodes[0].length;\n for (let level = 0; level < this.depth; level += 1) {\n const position = index % this.arity;\n const levelStartIndex = index - position;\n const levelEndIndex = levelStartIndex + this.arity;\n const children = [];\n for (let i = levelStartIndex; i < levelEndIndex; i += 1) {\n if (i < this.nodes[level].length) {\n children.push(this.nodes[level][i]);\n }\n else {\n children.push(this.zeroes[level]);\n }\n }\n node = this.hashFn(children);\n index = Math.floor(index / this.arity);\n }\n return node;\n }\n getProof(index) {\n if (index < 0 || index >= this.nodes[0].length) {\n throw new Error('The leaf does not exist in this tree');\n }\n const siblings = [];\n const pathIndices = [];\n const leafIndex = index;\n for (let level = 0; level < this.depth; level += 1) {\n const position = index % this.arity;\n const levelStartIndex = index - position;\n const levelEndIndex = levelStartIndex + this.arity;\n pathIndices[level] = position;\n siblings[level] = [];\n for (let i = levelStartIndex; i < levelEndIndex; i += 1) {\n if (i !== index) {\n if (i < this.nodes[level].length) {\n siblings[level].push(this.nodes[level][i]);\n }\n else {\n siblings[level].push(this.zeroes[level]);\n }\n }\n }\n index = Math.floor(index / this.arity);\n }\n return { root: this.root, leaf: this.nodes[0][leafIndex], pathIndices, siblings };\n }\n verify(proof) {\n let node = proof.leaf;\n for (let i = 0; i < proof.siblings.length; i += 1) {\n const children = proof.siblings[i].slice();\n children.splice(proof.pathIndices[i], 0, node);\n node = this.hashFn(children);\n }\n return proof.root === node;\n }\n toString() {\n return this.toTreeString();\n }\n toTreeString() {\n const obj = this.getLayersAsObject();\n return treeify_1.default.asTree(obj, true);\n }\n}\nexports.IncrementalMerkleTree = IncrementalMerkleTree;\nif (typeof window !== 'undefined') {\n ;\n window.IncrementalMerkleTree = IncrementalMerkleTree;\n}\nexports.default = IncrementalMerkleTree;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MerkleSumTree = exports.ProofStep = exports.Leaf = exports.Bucket = void 0;\nconst Base_1 = require(\"./Base\");\nclass Bucket {\n constructor(size, hashed) {\n this.size = BigInt(size);\n this.hashed = hashed;\n // each node in the tree can have a parent, and a left or right sibling\n this.parent = null;\n this.left = null;\n this.right = null;\n }\n}\nexports.Bucket = Bucket;\nclass Leaf {\n constructor(hashFn, rng, data) {\n this.hashFn = hashFn;\n this.rng = rng.map(x => BigInt(x));\n this.data = data;\n }\n getBucket() {\n let hashed;\n if (this.data) {\n hashed = this.hashFn(this.data);\n }\n else {\n hashed = Buffer.alloc(32);\n }\n return new Bucket(BigInt(this.rng[1]) - BigInt(this.rng[0]), hashed);\n }\n}\nexports.Leaf = Leaf;\nclass ProofStep {\n constructor(bucket, right) {\n this.bucket = bucket;\n this.right = right; // whether the bucket hash should be appeded on the right side in this step (default is left\n }\n}\nexports.ProofStep = ProofStep;\nclass MerkleSumTree extends Base_1.Base {\n constructor(leaves, hashFn) {\n super();\n this.leaves = leaves;\n this.hashFn = hashFn;\n MerkleSumTree.checkConsecutive(leaves);\n this.buckets = [];\n for (const l of leaves) {\n this.buckets.push(l.getBucket());\n }\n let buckets = [];\n for (const bucket of this.buckets) {\n buckets.push(bucket);\n }\n while (buckets.length !== 1) {\n const newBuckets = [];\n while (buckets.length) {\n if (buckets.length >= 2) {\n const b1 = buckets.shift();\n const b2 = buckets.shift();\n const size = b1.size + b2.size;\n const hashed = this.hashFn(Buffer.concat([this.sizeToBuffer(b1.size), this.bufferify(b1.hashed), this.sizeToBuffer(b2.size), this.bufferify(b2.hashed)]));\n const b = new Bucket(size, hashed);\n b2.parent = b;\n b1.parent = b2.parent;\n b1.right = b2;\n b2.left = b1;\n newBuckets.push(b);\n }\n else {\n newBuckets.push(buckets.shift());\n }\n }\n buckets = newBuckets;\n }\n this.root = buckets[0];\n }\n sizeToBuffer(size) {\n const buf = Buffer.alloc(8);\n const view = new DataView(buf.buffer);\n view.setBigInt64(0, BigInt(size), false); // true when little endian\n return buf;\n }\n static checkConsecutive(leaves) {\n let curr = BigInt(0);\n for (const leaf of leaves) {\n if (leaf.rng[0] !== curr) {\n throw new Error('leaf ranges are invalid');\n }\n curr = BigInt(leaf.rng[1]);\n }\n }\n // gets inclusion/exclusion proof of a bucket in the specified index\n getProof(index) {\n let curr = this.buckets[Number(index)];\n const proof = [];\n while (curr && curr.parent) {\n const right = !!curr.right;\n const bucket = curr.right ? curr.right : curr.left;\n curr = curr.parent;\n proof.push(new ProofStep(bucket, right));\n }\n return proof;\n }\n sum(arr) {\n let total = BigInt(0);\n for (const value of arr) {\n total += BigInt(value);\n }\n return total;\n }\n // validates the suppplied proof for a specified leaf according to the root bucket\n verifyProof(root, leaf, proof) {\n const rng = [this.sum(proof.filter(x => !x.right).map(x => x.bucket.size)), BigInt(root.size) - this.sum(proof.filter(x => x.right).map(x => x.bucket.size))];\n if (!(rng[0] === leaf.rng[0] && rng[1] === leaf.rng[1])) {\n // supplied steps are not routing to the range specified\n return false;\n }\n let curr = leaf.getBucket();\n let hashed;\n for (const step of proof) {\n if (step.right) {\n hashed = this.hashFn(Buffer.concat([this.sizeToBuffer(curr.size), this.bufferify(curr.hashed), this.sizeToBuffer(step.bucket.size), this.bufferify(step.bucket.hashed)]));\n }\n else {\n hashed = this.hashFn(Buffer.concat([this.sizeToBuffer(step.bucket.size), this.bufferify(step.bucket.hashed), this.sizeToBuffer(curr.size), this.bufferify(curr.hashed)]));\n }\n curr = new Bucket(BigInt(curr.size) + BigInt(step.bucket.size), hashed);\n }\n return curr.size === root.size && curr.hashed.toString('hex') === root.hashed.toString('hex');\n }\n}\nexports.MerkleSumTree = MerkleSumTree;\nif (typeof window !== 'undefined') {\n ;\n window.MerkleSumTree = MerkleSumTree;\n}\nexports.default = MerkleSumTree;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MerkleRadixTree = void 0;\nconst Base_1 = __importDefault(require(\"./Base\"));\nclass MerkleRadixNode {\n constructor(key = '', value = null, hashFn) {\n this.key = key;\n this.value = value;\n this.children = new Map();\n this.hashFn = hashFn;\n this.hash = this.computeHash();\n }\n computeHash() {\n let hash = this.hashFn('');\n hash = Buffer.concat([hash, Base_1.default.bufferify(this.key), this.value != null ? Base_1.default.bufferify(this.value) : Buffer.alloc(0)]);\n for (const child of this.children.values()) {\n hash = Buffer.concat([hash, child.hash]);\n }\n const result = this.hashFn(hash);\n return result;\n }\n updateHash() {\n this.hash = this.computeHash();\n }\n}\nclass MerkleRadixTree extends Base_1.default {\n constructor(hashFn) {\n super();\n this.hashFn = this.bufferifyFn(hashFn);\n this.root = new MerkleRadixNode('', null, this.hashFn);\n }\n insert(key, value) {\n let node = this.root;\n let commonPrefixLength = 0;\n while (key.length > 0) {\n const child = [...node.children.values()].find(child => key.startsWith(child.key));\n if (!child) {\n node.children.set(key, new MerkleRadixNode(key, value, this.hashFn));\n node.updateHash(); // Update the hash of the current node\n return;\n }\n commonPrefixLength = this.commonPrefixLength(key, child.key);\n if (commonPrefixLength === child.key.length) {\n node = child;\n key = key.slice(commonPrefixLength);\n }\n else {\n const commonPrefix = key.slice(0, commonPrefixLength);\n const childSuffix = child.key.slice(commonPrefixLength);\n const newNode = new MerkleRadixNode(commonPrefix, null, this.hashFn);\n node.children.delete(child.key);\n node.children.set(commonPrefix, newNode);\n newNode.children.set(childSuffix, child);\n child.key = childSuffix;\n if (commonPrefixLength < key.length) {\n const suffix = key.slice(commonPrefixLength);\n newNode.children.set(suffix, new MerkleRadixNode(suffix, value, this.hashFn));\n }\n else {\n newNode.value = value;\n }\n node.updateHash();\n newNode.updateHash(); // Update the hash of the new node\n return;\n }\n }\n node.value = value;\n node.updateHash(); // Update the hash of the node where the value was inserted\n }\n lookup(key) {\n let node = this.root;\n while (key.length > 0) {\n const child = [...node.children.values()].find(child => key.startsWith(child.key));\n if (!child) {\n return null;\n }\n const commonPrefixLength = this.commonPrefixLength(key, child.key);\n if (commonPrefixLength === child.key.length) {\n node = child;\n key = key.slice(commonPrefixLength);\n }\n else {\n return null;\n }\n }\n return node.value;\n }\n commonPrefixLength(str1, str2) {\n let length = 0;\n while (length < str1.length && length < str2.length && str1[length] === str2[length]) {\n length++;\n }\n return length;\n }\n generateProof(key) {\n let node = this.root;\n const proof = [];\n while (key.length > 0) {\n const siblings = [];\n for (const child of node.children.values()) {\n if (child.key !== key) {\n siblings.push({\n key: child.key,\n hash: child.hash\n });\n }\n }\n proof.push({\n key: node.key,\n hash: node.hash,\n siblings\n });\n const child = [...node.children.values()].find(child => key.startsWith(child.key));\n if (!child) {\n return null;\n }\n const commonPrefixLength = this.commonPrefixLength(key, child.key);\n if (commonPrefixLength === child.key.length) {\n node = child;\n key = key.slice(commonPrefixLength);\n }\n else {\n return null;\n }\n }\n proof.push({\n key: node.key,\n hash: node.hash,\n siblings: []\n });\n return proof;\n }\n verifyProof(proof, rootHash) {\n if (!proof || proof.length === 0) {\n return false;\n }\n let currentHash = proof[proof.length - 1].hash;\n for (let i = proof.length - 2; i >= 0; i--) {\n const item = proof[i];\n let concatenatedHash = Buffer.concat([this.hashFn(''), this.bufferify(item.key), currentHash]);\n for (const sibling of item.siblings) {\n concatenatedHash = Buffer.concat([concatenatedHash, sibling.hash]);\n }\n currentHash = this.hashFn(concatenatedHash);\n }\n return currentHash.equals(rootHash);\n }\n}\nexports.MerkleRadixTree = MerkleRadixTree;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UnifiedBinaryTree = exports.InternalNode = exports.StemNode = exports.chunkifyCode = exports.getTreeKeyForCodeChunk = exports.getTreeKeyForStorageSlot = exports.getTreeKeyForCodeHash = exports.getTreeKeyForBasicData = exports.getTreeKey = exports.treeHash = exports.oldStyleAddressToAddress32 = exports.push32 = exports.push1 = exports.pushOffset = exports.MAIN_STORAGE_OFFSET = exports.STEM_SUBTREE_WIDTH = exports.CODE_OFFSET = exports.HEADER_STORAGE_OFFSET = exports.CODE_HASH_LEAF_KEY = exports.BASIC_DATA_LEAF_KEY = void 0;\nconst buffer_1 = require(\"buffer\");\nconst Base_1 = require(\"./Base\");\n// -----------------------------------------------------------------------------\n// Constants\n// -----------------------------------------------------------------------------\n/**\n * Constants used for key derivation and tree organization.\n * These define the structure and layout of the binary tree.\n */\n// Leaf key types\nexports.BASIC_DATA_LEAF_KEY = 0; // Used for account basic data (nonce, balance, etc.)\nexports.CODE_HASH_LEAF_KEY = 1; // Used for contract code hash\n// Storage layout offsets\nexports.HEADER_STORAGE_OFFSET = 64; // Start of header storage slots\nexports.CODE_OFFSET = 128; // Start of code chunks\nexports.STEM_SUBTREE_WIDTH = 256; // Width of each stem subtree (8 bits)\nexports.MAIN_STORAGE_OFFSET = 256; // Start of main storage slots\n// EVM PUSH instruction constants\nexports.pushOffset = 95; // Base offset for PUSH instructions\nexports.push1 = exports.pushOffset + 1; // PUSH1 opcode (0x60)\nexports.push32 = exports.pushOffset + 32; // PUSH32 opcode (0x7F)\n// -----------------------------------------------------------------------------\n// Utility Functions for Key Derivation and Code Chunkification\n// -----------------------------------------------------------------------------\n/**\n * Converts a 20-byte Ethereum address to a 32-byte address by left-padding with zeros.\n *\n * @example\n * ```typescript\n * const addr20 = Buffer.from('1234567890123456789012345678901234567890', 'hex')\n * const addr32 = oldStyleAddressToAddress32(addr20)\n * // addr32 = 0x000000000000123456789012345678901234567890 (32 bytes)\n * ```\n */\nfunction oldStyleAddressToAddress32(address) {\n if (address.length !== 20) {\n throw new Error('Address must be 20 bytes.');\n }\n return buffer_1.Buffer.concat([buffer_1.Buffer.alloc(12, 0), address]);\n}\nexports.oldStyleAddressToAddress32 = oldStyleAddressToAddress32;\n/**\n * Applies a hash function to input data with proper buffering.\n *\n * @example\n * ```typescript\n * const input = Buffer.from('Hello World')\n * const hashFn = (data) => blake3.hash(data)\n * const hash = treeHash(input, hashFn)\n * // hash = 32-byte BLAKE3 hash of 'Hello World'\n * ```\n */\nfunction treeHash(input, hashFn) {\n return treeHashFn(hashFn)(input);\n}\nexports.treeHash = treeHash;\nfunction treeHashFn(hashFn) {\n return Base_1.Base.bufferifyFn(hashFn);\n}\n/**\n * Derives a tree key from an address and indices using a hash function.\n * Used to generate unique keys for different parts of the tree structure.\n * The resulting key is composed of a 31-byte stem (derived from address and treeIndex)\n * and a 1-byte subIndex.\n *\n * @param address - A 32-byte address to derive the key from\n * @param treeIndex - Primary index used to derive different trees for the same address\n * @param subIndex - Secondary index used to derive different keys within the same tree\n * @param hashFn - Hash function to use for key derivation\n * @returns A 32-byte key that uniquely identifies this storage slot\n * @throws Error if address is not 32 bytes\n *\n * @example\n * ```typescript\n * const addr32 = oldStyleAddressToAddress32(address)\n * const treeKey = getTreeKey(addr32, 0, 1, blake3.hash)\n * // Returns a unique key for this address's tree at index 0, subIndex 1\n * ```\n */\nfunction getTreeKey(address, treeIndex, subIndex, hashFn) {\n // Validate address length\n if (address.length !== 32) {\n throw new Error('Address must be 32 bytes.');\n }\n // Get the tree-specific hash function\n const treeHash = treeHashFn(hashFn);\n // Create a buffer to store the tree index\n const indexBuffer = buffer_1.Buffer.alloc(32, 0);\n indexBuffer.writeUInt32LE(treeIndex, 0);\n // Generate the stem by:\n // 1. Concatenating address and index buffer\n // 2. Hashing the result\n // 3. Taking first 31 bytes\n const stem = treeHash(buffer_1.Buffer.concat([address, indexBuffer]), hashFn).subarray(0, 31);\n // Combine the stem with the subIndex to create the final 32-byte key\n return buffer_1.Buffer.concat([stem, buffer_1.Buffer.from([subIndex])]);\n}\nexports.getTreeKey = getTreeKey;\n/**\n * Derives a key for storing an account's basic data (nonce, balance, etc.).\n *\n * @example\n * ```typescript\n * const addr32 = oldStyleAddressToAddress32(address)\n * const basicDataKey = getTreeKeyForBasicData(addr32, hashFn)\n * tree.insert(basicDataKey, accountData)\n * ```\n */\nfunction getTreeKeyForBasicData(address, hashFn) {\n return getTreeKey(address, 0, exports.BASIC_DATA_LEAF_KEY, hashFn);\n}\nexports.getTreeKeyForBasicData = getTreeKeyForBasicData;\n/**\n * Derives a key for storing a contract's code hash.\n *\n * @example\n * ```typescript\n * const addr32 = oldStyleAddressToAddress32(contractAddress)\n * const codeHashKey = getTreeKeyForCodeHash(addr32, hashFn)\n * tree.insert(codeHashKey, codeHash)\n * ```\n */\nfunction getTreeKeyForCodeHash(address, hashFn) {\n return getTreeKey(address, 0, exports.CODE_HASH_LEAF_KEY, hashFn);\n}\nexports.getTreeKeyForCodeHash = getTreeKeyForCodeHash;\n/**\n * Derives a tree key for a storage slot in a contract's storage.\n * Handles two types of storage:\n * 1. Header storage (slots 0-63): Used for contract metadata and special storage\n * 2. Main storage (slots 256+): Used for regular contract storage\n *\n * The storage layout is:\n * - Header storage: slots [0, 63] mapped to positions [64, 127]\n * - Main storage: slots [256+] mapped to positions [384+]\n * This creates gaps in the tree to allow for future extensions.\n *\n * @param address - The 32-byte contract address\n * @param storageKey - The storage slot number to access\n * @param hashFn - Hash function to use for key derivation\n * @returns A 32-byte key that uniquely identifies this storage slot\n *\n * @example\n * ```typescript\n * const addr32 = oldStyleAddressToAddress32(contractAddress)\n * // Get key for a header storage slot (0-63)\n * const headerKey = getTreeKeyForStorageSlot(addr32, 5, blake3.hash)\n * // Get key for a main storage slot (256+)\n * const mainKey = getTreeKeyForStorageSlot(addr32, 300, blake3.hash)\n * ```\n */\nfunction getTreeKeyForStorageSlot(address, storageKey, hashFn) {\n let pos;\n // If storage key is in header range (0-63), map it to positions 64-127\n if (storageKey < exports.CODE_OFFSET - exports.HEADER_STORAGE_OFFSET) {\n pos = exports.HEADER_STORAGE_OFFSET + storageKey;\n }\n else {\n // Otherwise, map it to main storage starting at position 384\n pos = exports.MAIN_STORAGE_OFFSET + storageKey;\n }\n // Convert the position to tree coordinates:\n // - treeIndex: Which subtree to use (pos / 256)\n // - subIndex: Which leaf in the subtree (pos % 256)\n return getTreeKey(address, Math.floor(pos / exports.STEM_SUBTREE_WIDTH), pos % exports.STEM_SUBTREE_WIDTH, hashFn);\n}\nexports.getTreeKeyForStorageSlot = getTreeKeyForStorageSlot;\n/**\n * Derives a key for storing a chunk of contract code.\n * Used when contract code is split into 32-byte chunks.\n *\n * @example\n * ```typescript\n * const addr32 = oldStyleAddressToAddress32(contractAddress)\n * const chunks = chunkifyCode(contractCode)\n * chunks.forEach((chunk, i) => {\n * const key = getTreeKeyForCodeChunk(addr32, i, hashFn)\n * tree.insert(key, chunk)\n * })\n * ```\n */\nfunction getTreeKeyForCodeChunk(address, chunkId, hashFn) {\n const pos = exports.CODE_OFFSET + chunkId;\n return getTreeKey(address, Math.floor(pos / exports.STEM_SUBTREE_WIDTH), pos % exports.STEM_SUBTREE_WIDTH, hashFn);\n}\nexports.getTreeKeyForCodeChunk = getTreeKeyForCodeChunk;\n/**\n * Splits EVM bytecode into 31-byte chunks with metadata.\n * Each chunk is prefixed with a byte indicating the number of bytes\n * that are part of PUSH data in the next chunk.\n *\n * @example\n * ```typescript\n * const code = Buffer.from('6001600201', 'hex') // PUSH1 01 PUSH1 02 ADD\n * const chunks = chunkifyCode(code)\n * // chunks[0] = [0x01, 0x60, 0x01, 0x60, 0x02, 0x01, 0x00...] (32 bytes)\n * ```\n */\nfunction chunkifyCode(code) {\n // If code length is not divisible by 31, pad it with zeros\n // This ensures all chunks (except last) are exactly 31 bytes\n const remainder = code.length % 31;\n if (remainder !== 0) {\n code = buffer_1.Buffer.concat([code, buffer_1.Buffer.alloc(31 - remainder, 0)]);\n }\n // Create array to track how many bytes of PUSH data follow each position\n // Size is code.length + 32 to handle edge cases where PUSH data crosses chunk boundaries\n const bytesToExecData = new Array(code.length + 32).fill(0);\n // Iterate through the bytecode to identify PUSH operations and their data\n let pos = 0;\n while (pos < code.length) {\n const opcode = code[pos];\n let pushdataBytes = 0;\n // Check if opcode is a PUSH operation (0x60 to 0x7F)\n if (opcode >= exports.push1 && opcode <= exports.push32) {\n // Calculate number of bytes to push (PUSH1 = 1 byte, PUSH2 = 2 bytes, etc.)\n pushdataBytes = opcode - exports.pushOffset;\n }\n pos += 1; // Move past the opcode\n // For each byte of PUSH data, store how many remaining PUSH bytes follow\n // This helps identify which bytes are executable vs PUSH data when chunking\n for (let x = 0; x < pushdataBytes; x++) {\n bytesToExecData[pos + x] = pushdataBytes - x;\n }\n pos += pushdataBytes; // Skip over the PUSH data bytes\n }\n // Split the code into 32-byte chunks (1 prefix byte + 31 code bytes)\n const chunks = [];\n for (let start = 0; start < code.length; start += 31) {\n // First byte of chunk indicates how many PUSH data bytes are at start of next chunk\n const prefix = Math.min(bytesToExecData[start], 31);\n // Create a new chunk by combining:\n // 1. Single prefix byte indicating PUSH data count\n // 2. 31 bytes of code starting at current position\n const chunk = buffer_1.Buffer.concat([\n buffer_1.Buffer.from([prefix]),\n code.slice(start, start + 31)\n ]);\n chunks.push(chunk);\n }\n return chunks;\n}\nexports.chunkifyCode = chunkifyCode;\n/**\n * Leaf node in the binary tree that stores actual values.\n * Contains a 31-byte stem and an array of 256 possible values.\n *\n * @example\n * ```typescript\n * const stem = Buffer.alloc(31, 0)\n * const node = new StemNode(stem)\n * node.setValue(0, Buffer.alloc(32).fill(1)) // Set value at index 0\n * ```\n */\nclass StemNode {\n /**\n * Creates a new StemNode with the given stem.\n *\n * @param stem - The 31-byte stem for this node.\n */\n constructor(stem) {\n this.nodeType = 'stem';\n if (stem.length !== 31) {\n throw new Error('Stem must be 31 bytes.');\n }\n this.stem = stem;\n this.values = new Array(256).fill(null);\n }\n /**\n * Sets the value at the given index.\n *\n * @param index - The index to set the value at.\n * @param value - The 32-byte value to set.\n */\n setValue(index, value) {\n if (value.length !== 32) {\n throw new Error('Value must be 32 bytes.');\n }\n this.values[index] = value;\n }\n}\nexports.StemNode = StemNode;\n/**\n * Internal node in the binary tree with left and right children.\n * Used to create the tree structure based on key bit patterns.\n *\n * @example\n * ```typescript\n * const node = new InternalNode()\n * node.left = new StemNode(Buffer.alloc(31, 0))\n * node.right = new StemNode(Buffer.alloc(31, 1))\n * ```\n */\nclass InternalNode {\n constructor() {\n this.left = null;\n this.right = null;\n this.nodeType = 'internal';\n }\n}\nexports.InternalNode = InternalNode;\n/**\n * Main binary tree implementation that stores key-value pairs.\n * Uses a configurable hash function and supports various operations.\n *\n * @example\n * ```typescript\n * const tree = new BinaryTree(blake3.hash)\n * tree.insert(key, value)\n * const root = tree.merkelize()\n * const serialized = tree.serialize()\n * ```\n */\nclass UnifiedBinaryTree {\n /**\n * Creates a new BinaryTree instance with the given hash function.\n *\n * @param hashFn - The hash function to use for key derivation.\n */\n constructor(hashFn) {\n this.root = null;\n this.hashFn = Base_1.Base.bufferifyFn(hashFn);\n }\n /**\n * Inserts a key-value pair into the binary tree.\n * The key is split into two parts:\n * - stem (first 31 bytes): Determines the path in the tree\n * - subIndex (last byte): Determines the position within a leaf node\n *\n * If this is the first insertion, creates a new leaf node.\n * Otherwise, recursively traverses or builds the tree structure.\n *\n * @param key - A 32-byte key that determines where to store the value\n * @param value - A 32-byte value to store\n * @throws Error if key or value is not exactly 32 bytes\n *\n * @example\n * ```typescript\n * const tree = new BinaryTree(hashFn)\n * const key = getTreeKey(address, 0, 1, hashFn)\n * const value = Buffer.alloc(32).fill(1)\n * tree.insert(key, value)\n * ```\n */\n insert(key, value) {\n // Validate input lengths\n if (key.length !== 32) {\n throw new Error('Key must be 32 bytes.');\n }\n if (value.length !== 32) {\n throw new Error('Value must be 32 bytes.');\n }\n // Split key into stem (path) and subIndex (leaf position)\n const stem = key.slice(0, 31);\n const subIndex = key[31];\n // If tree is empty, create first leaf node\n if (this.root === null) {\n this.root = new StemNode(stem);\n this.root.setValue(subIndex, value);\n return;\n }\n // Otherwise, recursively insert into existing tree\n // Starting at depth 0 (root level)\n this.root = this.insertRecursive(this.root, stem, subIndex, value, 0);\n }\n /**\n * Recursively inserts a key-value pair into the tree.\n * This method handles three cases:\n * 1. Empty node: Creates a new leaf node\n * 2. Stem node: Either updates value or splits into internal node\n * 3. Internal node: Recursively traverses left or right based on stem bits\n *\n * @param node - Current node in traversal (null if empty)\n * @param stem - The 31-byte path component of the key\n * @param subIndex - The leaf position component of the key\n * @param value - The 32-byte value to store\n * @param depth - Current depth in the tree (max 247 to prevent hash collisions)\n * @returns The new or updated node\n * @throws Error if tree depth exceeds 247 levels\n */\n insertRecursive(node, stem, subIndex, value, depth) {\n // Prevent deep recursion that could lead to hash collisions\n if (depth >= 248) {\n throw new Error('Depth must be less than 248.');\n }\n // Case 1: Empty node - create new leaf\n if (node === null) {\n const newNode = new StemNode(stem);\n newNode.setValue(subIndex, value);\n return newNode;\n }\n // Convert stem to bit array for path decisions\n const stemBits = this.bytesToBits(stem);\n // Case 2: Reached a leaf node (StemNode)\n if (node instanceof StemNode) {\n // If stems match, just update the value\n if (node.stem.equals(stem)) {\n node.setValue(subIndex, value);\n return node;\n }\n // If stems differ, need to split this leaf node\n const existingStemBits = this.bytesToBits(node.stem);\n return this.splitLeaf(node, stemBits, existingStemBits, subIndex, value, depth);\n }\n else { // Case 3: Internal node - traverse left or right\n // Use current depth's bit to decide path (0 = left, 1 = right)\n const bit = stemBits[depth];\n if (bit === 0) {\n node.left = this.insertRecursive(node.left, stem, subIndex, value, depth + 1);\n }\n else {\n node.right = this.insertRecursive(node.right, stem, subIndex, value, depth + 1);\n }\n return node;\n }\n }\n /**\n * Converts a byte array to an array of individual bits.\n * Each byte is converted to 8 bits, maintaining the most-significant-bit first order.\n * Used for making path decisions in the binary tree based on stem bytes.\n *\n * @param data - Buffer containing bytes to convert\n * @returns Array of bits (0s and 1s) in MSB-first order\n *\n * @example\n * ```typescript\n * const bytes = Buffer.from([0xA5]) // Binary: 10100101\n * const bits = bytesToBits(bytes)\n * // bits = [1,0,1,0,0,1,0,1]\n * // ^ MSB LSB ^\n * ```\n *\n * Process for each byte:\n * 1. Right shift by (7-i) positions to get desired bit to LSB\n * 2. AND with 1 to isolate that bit\n * 3. Push result (0 or 1) to output array\n */\n bytesToBits(data) {\n const bits = [];\n // Process each byte in the input buffer\n for (const byte of data) {\n // Extract each bit from the byte, MSB first\n for (let i = 0; i < 8; i++) {\n // Right shift to position + mask to get bit value\n // i=0: shift 7 (10100101 -> 00000001)\n // i=1: shift 6 (10100101 -> 00000000)\n // i=2: shift 5 (10100101 -> 00000001)\n // etc.\n bits.push((byte >> (7 - i)) & 1);\n }\n }\n return bits;\n }\n /**\n * Converts an array of bits back into a Buffer of bytes.\n * This is the inverse operation of bytesToBits.\n * Processes bits in groups of 8, maintaining MSB-first order.\n *\n * @param bits - Array of 0s and 1s to convert to bytes\n * @returns Buffer containing the reconstructed bytes\n * @throws Error if the number of bits is not divisible by 8\n *\n * @example\n * ```typescript\n * const bits = [1,0,1,0,0,1,0,1] // Represents binary 10100101\n * const bytes = bitsToBytes(bits)\n * // bytes = Buffer.from([0xA5])\n * ```\n *\n * Process for each byte:\n * 1. Take 8 bits at a time\n * 2. For each bit:\n * - Shift it left to its correct position (7-j positions)\n * - OR it with the accumulating byte value\n * 3. Add completed byte to array\n */\n bitsToBytes(bits) {\n // Ensure we have complete bytes (groups of 8 bits)\n if (bits.length % 8 !== 0) {\n throw new Error('Number of bits must be a multiple of 8.');\n }\n const bytes = [];\n // Process bits in groups of 8\n for (let i = 0; i < bits.length; i += 8) {\n let byte = 0;\n // Build each byte bit by bit\n for (let j = 0; j < 8; j++) {\n // Left shift each bit to its position and OR with current byte\n // j=0: bit goes to position 7 (MSB)\n // j=1: bit goes to position 6\n // j=2: bit goes to position 5\n // etc.\n byte |= bits[i + j] << (7 - j);\n }\n bytes.push(byte);\n }\n return buffer_1.Buffer.from(bytes);\n }\n /**\n * Applies the hash function to the given data with special handling for null values.\n * Used primarily for Merkle tree calculations and node hashing.\n *\n * Special cases:\n * - null input -> returns 32-byte zero buffer\n * - 64-byte zero buffer -> returns 32-byte zero buffer\n * This handling ensures consistent treatment of empty/uninitialized nodes.\n *\n * @param data - Buffer to hash, must be either 32 or 64 bytes, or null\n * @returns A 32-byte hash of the data, or zero32 for empty cases\n * @throws Error if data length is not 32 or 64 bytes\n *\n * @example\n * ```typescript\n * // Regular hashing\n * const hash1 = hashData(nodeBuffer) // Returns hash of data\n *\n * // Empty cases - all return 32 zeros\n * const hash2 = hashData(null)\n * const hash3 = hashData(Buffer.alloc(64, 0))\n * ```\n */\n hashData(data) {\n // Pre-allocate zero buffers for comparison and return values\n const zero64 = buffer_1.Buffer.alloc(64, 0); // Used to detect empty 64-byte input\n const zero32 = buffer_1.Buffer.alloc(32, 0); // Returned for empty/zero cases\n // Return zero32 for either null input or a 64-byte zero buffer\n // This treats empty nodes consistently in the tree\n if (data === null || data.equals(zero64)) {\n return zero32;\n }\n // Validate input size - must be either a single node (32 bytes)\n // or a pair of nodes being combined (64 bytes)\n if (data.length !== 32 && data.length !== 64) {\n throw new Error('Data must be 32 or 64 bytes.');\n }\n // Apply the configured hash function to valid data\n return this.hashFn(data);\n }\n /**\n * Computes the Merkle root of the entire tree.\n * The Merkle root is a single 32-byte hash that uniquely represents the entire tree state.\n *\n * The computation follows these rules:\n * 1. For Internal nodes: hash(leftChild || rightChild)\n * 2. For Stem nodes: hash(stem || 0x00 || merkleOfValues)\n * 3. For empty nodes: return 32 bytes of zeros\n *\n * @returns A 32-byte Buffer containing the Merkle root\n *\n * @example\n * ```typescript\n * const tree = new BinaryTree(hashFn)\n * tree.insert(key1, value1)\n * tree.insert(key2, value2)\n * const root = tree.merkelize()\n * // root now contains a 32-byte hash representing the entire tree\n * ```\n */\n merkelize() {\n /**\n * Recursive helper function to compute the Merkle root of a subtree\n * @param node - Root of the subtree to compute hash for\n * @returns 32-byte Buffer containing the node's Merkle hash\n */\n const computeMerkle = (node) => {\n const zero32 = buffer_1.Buffer.alloc(32, 0);\n // Base case: empty node returns zero hash\n if (node === null) {\n return zero32;\n }\n // Case 1: Internal node\n if (node instanceof InternalNode) {\n // Recursively compute hashes of left and right children\n const leftHash = computeMerkle(node.left);\n const rightHash = computeMerkle(node.right);\n // Combine and hash the children\n return this.hashData(buffer_1.Buffer.concat([leftHash, rightHash]));\n }\n // Case 2: Stem node (leaf)\n // First compute Merkle tree of the 256 values in this node\n const level = node.values.map(val => this.hashData(val));\n // Build a balanced binary tree from the value hashes\n // Each iteration combines pairs of hashes until only root remains\n while (level.length > 1) {\n const newLevel = [];\n for (let i = 0; i < level.length; i += 2) {\n // Combine each pair of hashes\n newLevel.push(this.hashData(buffer_1.Buffer.concat([level[i], level[i + 1]])));\n }\n // Replace old level with new level\n level.splice(0, level.length, ...newLevel);\n }\n // Final stem node hash combines:\n // 1. The stem (31 bytes)\n // 2. A zero byte (1 byte)\n // 3. The Merkle root of values (32 bytes)\n return this.hashData(buffer_1.Buffer.concat([\n node.stem,\n buffer_1.Buffer.from([0]),\n level[0] // 32-byte value root\n ]));\n };\n // Start computation from root\n return computeMerkle(this.root);\n }\n // -------------------------------------------------------------\n // New Features\n // -------------------------------------------------------------\n /**\n * Incrementally updates the value for an existing key.\n * For our implementation, update is the same as insert.\n *\n * @param key - A 32-byte key.\n * @param value - A 32-byte value.\n */\n update(key, value) {\n // Simply re-insert; our insert() method will update an existing key.\n this.insert(key, value);\n }\n /**\n * Performs a batch insertion of key-value pairs.\n *\n * @param entries - An array of objects with 'key' and 'value' properties.\n */\n insertBatch(entries) {\n for (const { key, value } of entries) {\n this.insert(key, value);\n }\n }\n /**\n * Serializes the entire tree structure into a JSON Buffer.\n * Converts the tree into a format that can be stored or transmitted,\n * preserving the complete structure and all values.\n *\n * The serialized format for each node type is:\n * 1. Stem Node:\n * ```json\n * {\n * \"nodeType\": \"stem\",\n * \"stem\": \"hex string of 31 bytes\",\n * \"values\": [\"hex string or null\", ...] // 256 entries\n * }\n * ```\n * 2. Internal Node:\n * ```json\n * {\n * \"nodeType\": \"internal\",\n * \"left\": ,\n * \"right\": \n * }\n * ```\n *\n * @returns Buffer containing the JSON string representation of the tree\n *\n * @example\n * ```typescript\n * const tree = new BinaryTree(hashFn)\n * tree.insert(key, value)\n * const serialized = tree.serialize()\n * // Save to file or transmit\n * const newTree = UnifiedBinaryTree.deserialize(serialized, hashFn)\n * ```\n */\n serialize() {\n /**\n * Helper function to recursively serialize each node in the tree\n * Converts Buffer data to hex strings for JSON compatibility\n *\n * @param node - The node to serialize\n * @returns JSON-compatible object representation of the node\n */\n function serializeNode(node) {\n // Handle empty nodes\n if (!node)\n return null;\n // Case 1: Stem (leaf) node\n if (node instanceof StemNode) {\n return {\n nodeType: 'stem',\n stem: node.stem.toString('hex'),\n values: node.values.map(val => // Convert 256 values to hex\n (val ? val.toString('hex') : null)) // Preserve null values\n };\n }\n else { // Case 2: Internal node\n return {\n nodeType: 'internal',\n left: serializeNode(node.left),\n right: serializeNode(node.right) // Recursively serialize right subtree\n };\n }\n }\n // Wrap the serialized tree in a root object and convert to Buffer\n const obj = { root: serializeNode(this.root) };\n return buffer_1.Buffer.from(JSON.stringify(obj), 'utf8');\n }\n /**\n * Reconstructs a BinaryTree from its serialized form.\n * This is the inverse operation of serialize().\n *\n * Expected input format:\n * ```json\n * {\n * \"root\": {\n * \"nodeType\": \"internal\"|\"stem\",\n * // For stem nodes:\n * \"stem\": \"hex string\",\n * \"values\": [\"hex string\"|null, ...],\n * // For internal nodes:\n * \"left\": ,\n * \"right\": \n * }\n * }\n * ```\n *\n * @param data - Buffer containing the JSON serialized tree\n * @param hashFn - Hash function to use for the reconstructed tree\n * @returns A new BinaryTree instance with the deserialized structure\n * @throws Error if JSON parsing fails or format is invalid\n *\n * @example\n * ```typescript\n * const serialized = existingTree.serialize()\n * const newTree = UnifiedBinaryTree.deserialize(serialized, hashFn)\n * // newTree is now identical to existingTree\n * ```\n */\n static deserialize(data, hashFn) {\n // Parse the JSON string from the buffer\n const json = JSON.parse(data.toString('utf8'));\n /**\n * Helper function to recursively deserialize nodes\n * Converts hex strings back to Buffers and reconstructs the tree structure\n *\n * @param obj - JSON object representing a node\n * @returns Reconstructed BinaryTreeNode or null\n */\n function deserializeNode(obj) {\n // Handle null nodes\n if (obj === null)\n return null;\n // Case 1: Reconstruct stem (leaf) node\n if (obj.nodeType === 'stem') {\n // Convert hex stem back to Buffer\n const node = new StemNode(buffer_1.Buffer.from(obj.stem, 'hex'));\n // Convert hex values back to Buffers, preserving nulls\n node.values = obj.values.map((v) => (v !== null ? buffer_1.Buffer.from(v, 'hex') : null));\n return node;\n }\n else if (obj.nodeType === 'internal') { // Case 2: Reconstruct internal node\n const node = new InternalNode();\n // Recursively deserialize left and right subtrees\n node.left = deserializeNode(obj.left);\n node.right = deserializeNode(obj.right);\n return node;\n }\n // Invalid node type\n return null;\n }\n // Create new tree with provided hash function\n const tree = new UnifiedBinaryTree(hashFn);\n // Deserialize and set the root node\n tree.root = deserializeNode(json.root);\n return tree;\n }\n /**\n * Splits a leaf node when inserting a new key with a different stem.\n * This method handles two cases:\n * 1. Matching bits at current depth: Continue splitting recursively\n * 2. Different bits at current depth: Create new internal node and arrange leaves\n *\n * The process ensures that keys with different stems are properly distributed\n * in the tree based on their binary representation.\n *\n * @param leaf - The existing leaf node to split\n * @param stemBits - Binary representation of the new stem\n * @param existingStemBits - Binary representation of the existing stem\n * @param subIndex - Position within leaf node for new value\n * @param value - Value to store at the new position\n * @param depth - Current depth in the tree\n * @returns A new internal node containing both the existing and new data\n *\n * Example:\n * If stems differ at bit 3:\n * - New stem: [1,0,1,0,...]\n * - Existing stem: [1,0,1,1,...]\n * ^ split here\n * Creates an internal node with the leaf nodes arranged based on bit 3\n */\n splitLeaf(leaf, stemBits, existingStemBits, subIndex, value, depth) {\n // Case 1: Bits match at current depth, need to go deeper\n if (stemBits[depth] === existingStemBits[depth]) {\n const newInternal = new InternalNode();\n const bit = stemBits[depth];\n // Continue splitting recursively in the matching direction\n if (bit === 0) {\n newInternal.left = this.splitLeaf(leaf, stemBits, existingStemBits, subIndex, value, depth + 1);\n }\n else {\n newInternal.right = this.splitLeaf(leaf, stemBits, existingStemBits, subIndex, value, depth + 1);\n }\n return newInternal;\n }\n else { // Case 2: Bits differ at current depth, create split point\n const newInternal = new InternalNode();\n const bit = stemBits[depth];\n // Create new leaf node for the new stem\n const newStem = this.bitsToBytes(stemBits);\n const newNode = new StemNode(newStem);\n newNode.setValue(subIndex, value);\n // Arrange nodes based on their bits at current depth\n // bit = 0: new node goes left, existing goes right\n // bit = 1: new node goes right, existing goes left\n if (bit === 0) {\n newInternal.left = newNode;\n newInternal.right = leaf;\n }\n else {\n newInternal.right = newNode;\n newInternal.left = leaf;\n }\n return newInternal;\n }\n }\n}\nexports.UnifiedBinaryTree = UnifiedBinaryTree;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MerkleTree = void 0;\nconst MerkleTree_1 = __importDefault(require(\"./MerkleTree\"));\nexports.MerkleTree = MerkleTree_1.default;\nvar MerkleMountainRange_1 = require(\"./MerkleMountainRange\");\nObject.defineProperty(exports, \"MerkleMountainRange\", { enumerable: true, get: function () { return MerkleMountainRange_1.MerkleMountainRange; } });\nvar IncrementalMerkleTree_1 = require(\"./IncrementalMerkleTree\");\nObject.defineProperty(exports, \"IncrementalMerkleTree\", { enumerable: true, get: function () { return IncrementalMerkleTree_1.IncrementalMerkleTree; } });\nvar MerkleSumTree_1 = require(\"./MerkleSumTree\");\nObject.defineProperty(exports, \"MerkleSumTree\", { enumerable: true, get: function () { return MerkleSumTree_1.MerkleSumTree; } });\nvar MerkleRadixTree_1 = require(\"./MerkleRadixTree\");\nObject.defineProperty(exports, \"MerkleRadixTree\", { enumerable: true, get: function () { return MerkleRadixTree_1.MerkleRadixTree; } });\nvar UnifiedBinaryTree_1 = require(\"./UnifiedBinaryTree\");\nObject.defineProperty(exports, \"UnifiedBinaryTree\", { enumerable: true, get: function () { return UnifiedBinaryTree_1.UnifiedBinaryTree; } });\nexports.default = MerkleTree_1.default;\n","import { Group, TreeNodeData, useMantineTheme } from '@mantine/core'\nimport { useMemo } from 'react'\n\ninterface RenderNodeProps {\n node: TreeNodeData\n level: number\n elementProps: React.HTMLAttributes\n data: any\n}\n\nconst RenderNode: React.FC = ({ node, level, elementProps, data }) => {\n const theme = useMantineTheme()\n const markLastBranchLeafs = (nodes: TreeNodeData[], lastBranchLeafs: string[] = []) => {\n nodes.forEach(nd => {\n if (nd.children && nd.children.length > 0) {\n markLastBranchLeafs(nd.children, lastBranchLeafs)\n lastBranchLeafs.push(nd.children[nd.children.length - 1].value)\n }\n })\n return lastBranchLeafs\n }\n\n const lastBranchLeafs = useMemo(() => markLastBranchLeafs(data), [data])\n const isCurrentLastBranchLeaf = lastBranchLeafs.includes(node.value)\n\n return (\n \n \n {node.label}\n\n <>\n {level > 1 && !isCurrentLastBranchLeaf && (\n \n )}\n {level > 2 && (\n \n )}\n {isCurrentLastBranchLeaf && (\n \n \n \n \n )}\n \n \n \n )\n}\n\nexport default RenderNode\n","import {\n ActionIcon,\n getTreeExpandedState,\n ScrollArea,\n Stack,\n Table,\n Text,\n Title,\n Tree,\n TreeNodeData,\n useMantineTheme,\n useTree,\n} from '@mantine/core'\nimport { IconChecklist } from '@tabler/icons-react'\nimport { SHA256 } from 'crypto-js'\nimport { MerkleTree } from 'merkletreejs'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { ByteArray, Signature } from 'viem'\n\nimport RootButton from '@/components/Buttons/RootButton'\nimport UserDetails from '@/components/Details/UserDetails/UserDetails'\nimport ErrorMessage from '@/components/ErrorMessage'\nimport Loading from '@/components/Loading'\nimport classes from '@/components/Tables/WithdrawTable.module.css'\nimport publicViemClient from '@/components/Wallet/utils'\nimport { STUDIO_BOT } from '@/constants/blockchain'\nimport { useGovernanceContext } from '@/contexts/GovernanceContext'\nimport useSpacesAuth from '@/hooks/useSpacesAuth'\nimport { useAuth } from '@/plugins/auth'\nimport { post, shortenHash } from '@/utils/utils'\n\nimport RenderNode from './utils'\n\ninterface Vote {\n candidate: string\n amount: number\n signature: `0x${string}` | ByteArray | Signature\n}\n\ninterface ProofModalProps {\n nominee: string\n close: () => void\n}\n\nconst mockTreeData = [\n {\n timestamp: '2021-10-01 12:00:00',\n amount: '1000',\n hash: '0x1234567890abcdef',\n proof: '2',\n },\n {\n timestamp: '2021-10-01 12:05:00',\n amount: '1000',\n hash: '0x1234567890abcdef',\n proof: '1',\n },\n {\n timestamp: '2021-10-01 12:10:00',\n amount: '1000',\n hash: '0x1234567890abcdef',\n proof: '2',\n },\n {\n timestamp: '2021-10-01 12:15:00',\n amount: '1000',\n hash: '0x1234567890abcdef',\n proof: '1',\n },\n {\n timestamp: '2021-10-01 12:20:00',\n amount: '1000',\n hash: '0x1234567890abcdef',\n proof: '2',\n },\n {\n timestamp: '2021-10-01 12:25:00',\n amount: '1000',\n hash: '0x1234567890abcdef',\n proof: '1',\n },\n {\n timestamp: '2021-10-01 12:30:00',\n amount: '1000',\n hash: '0x1234567890abcdef',\n proof: '2',\n },\n {\n timestamp: '2021-10-01 12:35:00',\n amount: '1000',\n hash: '0x1234567890abcdef',\n proof: '1',\n },\n {\n timestamp: '2021-10-01 12:40:00',\n amount: '1000',\n hash: '0x1234567890abcdef',\n proof: '2',\n },\n {\n timestamp: '2021-10-01 12:45:00',\n amount: '1000',\n hash: '0x1234567890abcdef',\n proof: '1',\n },\n {\n timestamp: '2021-10-01 12:50:00',\n amount: '1000',\n hash: '0x1234567890abcdef',\n proof: '2',\n },\n {\n timestamp: '2021-10-01 12:55:00',\n amount: '1000',\n hash: '0x1234567890abcdef',\n proof: '1',\n },\n]\n\nconst ProofModal: React.FC = ({ nominee, close }) => {\n const { t } = useTranslation()\n const theme = useMantineTheme()\n const [isLoading] = useState(false)\n const [error, setError] = useState({ call: '', msg: '', isError: false })\n const [, setValidVotes] = useState<{ [key: string]: number }>({})\n\n const { token } = useSpacesAuth()\n const { address } = useAuth()\n const { electionData } = useGovernanceContext()\n const { idx } = electionData\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const fetchAndValidateVotes = useCallback(async () => {\n if (!address || !token) return\n\n try {\n const response = await post(\n `${STUDIO_BOT}/elections/getVotes`,\n JSON.stringify({ electionIdx: idx }),\n token\n )\n\n const votes = response.data\n const validVotes: { [key: string]: number } = {}\n\n await Promise.all(\n votes.map(async (vote: Vote) => {\n const { candidate, amount, signature } = vote\n const message = `${candidate}:${amount}`\n const isValid = await publicViemClient.verifyMessage({\n address,\n message,\n signature,\n })\n\n if (isValid) {\n if (!validVotes[candidate]) {\n validVotes[candidate] = 0\n }\n validVotes[candidate] += amount\n }\n setValidVotes(validVotes)\n })\n )\n } catch (err: any) {\n setError({ call: '', msg: 'Failed to fetch or validate votes', isError: true })\n }\n }, [address, token, idx])\n\n // useEffect(() => {\n // const fetchVotes = async () => {\n // await fetchAndValidateVotes()\n // if (validVts) {\n // setUserVotes(validVts)\n // }\n // }\n\n // fetchVotes()\n // }, [fetchAndValidateVotes])\n\n const renderTreeRow = useCallback(\n (text: string, vote: number) => (\n \n {text}\n \n {vote} VOTE\n \n \n ),\n []\n )\n\n const data: TreeNodeData[] = useMemo(\n () => [\n {\n label: renderTreeRow('Root', 1000),\n value: 'Root',\n children: [\n {\n label: renderTreeRow('Nominee', 1000),\n value: 'nominee',\n children: [\n { label: renderTreeRow('Your Vote', 500), value: 'you' },\n { label: renderTreeRow('Other Votes', 1000), value: 'other votes' },\n ],\n },\n {\n label: renderTreeRow('Other Candidates', 1000),\n value: 'other candidates',\n },\n ],\n },\n ],\n [renderTreeRow]\n )\n\n const tree = useTree({\n initialExpandedState: getTreeExpandedState(data, '*'),\n })\n\n const rows = useMemo(\n () =>\n mockTreeData.map(row => (\n \n {row.timestamp}\n {row.amount}\n {shortenHash(row.hash)}\n \n \n \n \n \n \n )),\n []\n )\n\n // test Merkle tree library\n useEffect(() => {\n const leaves = ['a', 'b', 'c'].map(x => SHA256(x))\n const mtree = new MerkleTree(leaves, SHA256)\n const root = mtree.getRoot().toString('hex')\n const leaf = SHA256('a') as unknown as Buffer\n const proof = mtree.getProof(leaf)\n console.log('verify tree', mtree.verify(proof, leaf, root)) // true\n\n const badLeaves = ['a', 'x', 'c'].map(x => SHA256(x))\n const badTree = new MerkleTree(badLeaves, SHA256)\n const badLeaf = SHA256('x') as unknown as Buffer\n const badProof = badTree.getProof(badLeaf)\n console.log(badTree.verify(badProof, badLeaf, root)) // false\n\n console.log('mtree', mtree.toString())\n }, [])\n\n return (\n \n \n {/* // TODO: Display user votes */}\n (\n \n )}\n />\n \n \n \n \n Timestamp\n Amount\n Hash\n Proof\n \n \n {rows}\n {isLoading && }\n \n
\n \n \n {t('buttons.close', 'Close')}\n \n \n {error.isError && }\n
\n )\n}\n\nexport default ProofModal\n","import { Stack, Title, useMantineTheme } from '@mantine/core'\nimport { useDisclosure } from '@mantine/hooks'\nimport React, { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport classes from '@/components/Discover/Feed/MembersList.module.css'\nimport ProofModal from '@/components/Modals/Governance/ProofModal'\nimport ModalSkeleton from '@/components/Modals/ModalSkeleton'\nimport TooltipText from '@/components/TooltipText'\nimport { bronzeColor, silverColor } from '@/utils/utils'\n\ninterface VotesCardProps {\n index: number\n nominee: string\n phase: 'nomination' | 'campaign' | 'voting' | 'results'\n isBreakpoint: boolean | undefined\n onClick?: () => void\n votes: number\n text?: string\n openProofModal?: boolean\n}\nconst VotesCard: React.FC = ({\n index,\n phase,\n nominee,\n isBreakpoint,\n onClick,\n votes,\n text = 'All Votes',\n openProofModal = false,\n}) => {\n const theme = useMantineTheme()\n const { t } = useTranslation()\n const [openedProof, { open: openProof, close: closeProof }] = useDisclosure()\n const results = useMemo(() => phase === 'results', [phase])\n\n const handleOpenProof = () => {\n if (!results || !openProofModal) return\n openProof()\n }\n\n return (\n <>\n \n {votes}\n \n \n \n \n \n \n )\n}\n\nexport default VotesCard\n","import { Collapse, Stack, Title, useMantineTheme } from '@mantine/core'\nimport { useDisclosure, useMediaQuery } from '@mantine/hooks'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport RootButton from '@/components/Buttons/RootButton'\nimport { l1SignBotEndpoint } from '@/components/Wallet/SignaturePage'\nimport { ELECTIONS_ADDRESS } from '@/constants/blockchain'\nimport { NominationData } from '@/hooks/useGovernance'\nimport { useAuth } from '@/plugins/auth'\nimport { get } from '@/utils/utils'\n\nimport { Amount } from '../../CurrencyInput'\nimport NoData from '../../NoData'\nimport CampaignAction from './ListActions/CampaignAction'\nimport NominationAction from './ListActions/NominationAction'\nimport VotingAction from './ListActions/VotingAction'\nimport ListNumber from './ListNumber'\nimport NomineeCard from './NomineeCard'\nimport VotesCard from './VotesCard'\n\ninterface NomineesListProps {\n title?: string\n candidates: NominationData[]\n phase?: 'nomination' | 'campaign' | 'voting' | 'results'\n votes?: { [key: string]: Amount }\n setVotes?: (value: (prevVotes: { [key: string]: Amount }) => { [key: string]: Amount }) => void\n button?: React.ReactNode\n electionId?: number\n}\n\nconst NomineesList: React.FC = ({\n title = '',\n candidates,\n phase = 'nomination',\n button = null,\n votes = {},\n setVotes = () => {},\n electionId,\n}) => {\n const theme = useMantineTheme()\n const { t } = useTranslation()\n const isBreakpoint = useMediaQuery(`(max-width: 920px)`)\n const isMobile = useMediaQuery(`(max-width: ${theme.breakpoints.sm})`)\n const { address } = useAuth()\n\n const nomination = useMemo(() => phase === 'nomination', [phase])\n const campaign = useMemo(() => phase === 'campaign', [phase])\n const voting = useMemo(() => phase === 'voting', [phase])\n const results = useMemo(() => phase === 'results', [phase])\n\n const [openedViewMore, { toggle }] = useDisclosure(false)\n\n const acceptedCandidates = useMemo(\n () =>\n candidates.filter(\n cand =>\n cand.status === 'ACCEPTED' &&\n cand.nominee.toLowerCase() !== address?.toLowerCase() &&\n cand.cid !== ''\n ),\n [candidates, address]\n )\n\n const randomizedAcceptedCandidates = useMemo(() => {\n const randCands = [...acceptedCandidates]\n for (let i = randCands.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1))\n ;[randCands[i], randCands[j]] = [randCands[j], randCands[i]]\n }\n return randCands\n }, [acceptedCandidates.length])\n\n const sortedCandidates = useMemo(() => {\n if (nomination || campaign || voting) {\n const userCandidate = candidates.find(\n cand => cand.nominee.toLowerCase() === address?.toLowerCase()\n )\n\n // Separate candidates by status\n const acceptedCandidatesNoApp = candidates.filter(\n cand =>\n cand.status === 'ACCEPTED' &&\n cand.nominee.toLowerCase() !== address?.toLowerCase() &&\n cand.cid === ''\n )\n\n const pendingCandidates = candidates.filter(\n cand => cand.status === 'PENDING' && cand.nominee.toLowerCase() !== address?.toLowerCase()\n )\n\n const rejectedCandidates = candidates.filter(\n cand => cand.status === 'REJECTED' && cand.nominee.toLowerCase() !== address?.toLowerCase()\n )\n\n // Combine all candidates in the desired order\n return [\n ...(userCandidate ? [userCandidate] : []),\n ...randomizedAcceptedCandidates,\n ...acceptedCandidatesNoApp,\n ...pendingCandidates,\n ...rejectedCandidates,\n ]\n }\n return candidates\n }, [candidates, address, nomination, campaign, voting, randomizedAcceptedCandidates])\n\n // Campaign Logic\n const [campaignLinks, setCampaignLinks] = useState>(new Map())\n\n const sessionCampaingLinksKey = useMemo(() => `campaignLinks-${electionId}`, [electionId])\n const [loadingCampaignLinks, setLoadingCampaignLinks] = useState(false)\n const campaignLinkKeyCondition = useMemo(\n () => !address || electionId === 0,\n [address, electionId]\n )\n\n const fetchDiscordLinks = useCallback(async () => {\n setLoadingCampaignLinks(true)\n try {\n const response = await get(\n `https://${l1SignBotEndpoint}/get-candidate-channels?electionContract=${encodeURIComponent(\n ELECTIONS_ADDRESS\n )}`\n )\n const candidateMap: Record = response\n if (!candidateMap) {\n console.error('No candidate channels found')\n } else {\n const map = new Map(Object.entries(candidateMap))\n setCampaignLinks(map)\n sessionStorage.setItem(sessionCampaingLinksKey, JSON.stringify([...map]))\n }\n } catch (error) {\n console.error('Error fetching candidate channels:', error)\n } finally {\n setLoadingCampaignLinks(false)\n }\n }, [sessionCampaingLinksKey])\n\n useEffect(() => {\n if (!campaign && campaignLinkKeyCondition) return\n const sessionCampaignLinks = sessionStorage.getItem(sessionCampaingLinksKey)\n if (!sessionCampaignLinks) {\n fetchDiscordLinks()\n } else {\n setCampaignLinks(new Map(JSON.parse(sessionCampaignLinks)))\n }\n }, [campaign, campaignLinkKeyCondition, sessionCampaingLinksKey, fetchDiscordLinks])\n\n const getCampaignLink = useCallback(\n (nominee: string) => {\n if (campaignLinks.has(nominee)) {\n return campaignLinks.get(nominee) || ''\n }\n return ''\n },\n [campaignLinks]\n )\n\n // Vote logic\n const handleVoteChange = (nominee: string, value: Amount) => {\n setVotes((prevVotes: { [key: string]: Amount }) => ({\n ...prevVotes,\n [nominee]: value,\n }))\n }\n\n return (\n \n \n {title && {title}}\n {button}\n \n {sortedCandidates.length > 0 ? (\n \n {sortedCandidates.map(({ nominee, nominator, status }, index) => {\n const showCollapse = index > 2 && results\n const List = !(results && index === 0) && (\n \n \n {!(isMobile && !results) && (\n \n )}\n \n ),\n campaign: (\n \n ),\n voting: (\n handleVoteChange(nominee, value)}\n />\n ),\n }}\n />\n \n {(results || voting) && (\n <>\n \n \n \n )}\n \n )\n return (\n \n {showCollapse ? {List} : List}\n \n )\n })}\n \n ) : (\n \n )}\n\n {results && (\n \n {openedViewMore ? t('buttons.viewLess', 'View Less') : t('buttons.viewMore', 'View More')}\n \n )}\n \n )\n}\n\nexport default NomineesList\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { useGovernanceContext } from '@/contexts/GovernanceContext'\n\nimport NomineesList from '../GovernanceList/NomineesList'\n\ninterface CampaignProps {}\n\nconst Campaign: React.FC = () => {\n const { t } = useTranslation()\n\n // Governance data\n const { nominationData, electionData } = useGovernanceContext()\n\n return (\n cand.status === 'ACCEPTED')}\n phase=\"campaign\"\n electionId={electionData.idx}\n />\n )\n}\n\nexport default Campaign\n","import { Checkbox, Stack, Text } from '@mantine/core'\nimport { useDisclosure } from '@mantine/hooks'\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { isAddress } from 'viem'\nimport { sendTransaction } from 'viem/actions'\n\nimport ErrorMessage from '@/components/ErrorMessage'\nimport { ConfirmationLoading, ConfirmationReady } from '@/components/Identity/ConfirmModals/utils'\nimport { BLANK_ADDRESS, ELECTIONS_ADDRESS } from '@/constants/blockchain'\nimport { useGovernanceContext } from '@/contexts/GovernanceContext'\nimport OMMAElection from '@/contracts/OMMAElection'\nimport { ContractCall, useChainFunctions } from '@/hooks/useChain'\nimport useL1NS from '@/hooks/useL1NS'\nimport { l1NativeWagmiConfig } from '@/plugins/auth/config'\n\nimport RootButton from '../../Buttons/RootButton'\nimport UserDetails from '../../Details/UserDetails/UserDetails'\nimport { checkInputHandleAddress } from '../../Identity/rules'\nimport { AtIcon, CheckedIcon, InvalidIcon, SpecialInputText } from '../../SpecialInputText'\nimport { DEBOUNCE_USERNAME_RESOLVE_TIME } from '../../Transfer/Send'\nimport ModalSkeleton from '../ModalSkeleton'\n\ninterface NominationModalProps {\n close: () => void\n}\n\nconst NominateModal: React.FC = ({ close }) => {\n const { t } = useTranslation()\n const { writeContract } = useChainFunctions(l1NativeWagmiConfig)\n const { getL1nsName, getL1nsAddress } = useL1NS()\n const {\n vote,\n hasBeenNominated,\n // Settings\n minVoteBalance,\n } = useGovernanceContext()\n\n // User can nominate only if has more vote balance than the minimum required\n const canNominate = useMemo(() => vote.value >= minVoteBalance.value, [minVoteBalance, vote])\n\n // modal\n const [openedConfirmation, { open: openConfirmation, close: closeConfirmation }] = useDisclosure()\n\n const [destinationAddress, setDestinationAddress] = useState({\n value: '',\n touched: false,\n error: '',\n })\n const recipientAddressRef = useRef(null)\n // handle vs address\n const [validSendAddress, setValidSendAddress] = useState(false)\n const [isHandle, setIsHandle] = useState(false)\n const [handleCheckStatus, setHandleCheckStatus] = useState({\n input: '',\n message: '',\n verified: false,\n })\n // ready confirmation\n const [isLoading, setIsLoading] = useState(false)\n const [error, setError] = useState('')\n const [isReady, setIsReady] = useState(false)\n\n // Confirm checkbox\n const [confirmCheckbox, setConfirmCheckbox] = useState(false)\n const isAddressNeedsConfirmation = useMemo(\n () => !confirmCheckbox && !isHandle,\n [confirmCheckbox, isHandle]\n )\n\n const contractCalls: ContractCall[] | undefined = useMemo(() => {\n if (!recipientAddressRef.current) {\n return undefined\n }\n return [\n {\n args: {\n address: ELECTIONS_ADDRESS,\n abi: OMMAElection,\n functionName: 'nominate',\n args: [recipientAddressRef.current],\n },\n },\n ]\n }, [recipientAddressRef.current])\n\n const handleNominate = useCallback(async () => {\n if (!(contractCalls && contractCalls.length > 0)) return\n try {\n setIsLoading(true)\n await writeContract(contractCalls[0].args)\n setIsLoading(false)\n setIsReady(true)\n } catch (err: any) {\n console.error(err)\n setIsLoading(false)\n setError(err.message)\n }\n }, [contractCalls, writeContract])\n\n // Left Icon showing validation status\n const iconLeft = useMemo(\n () =>\n handleCheckStatus.verified ? (\n validSendAddress ? (\n \n ) : (\n \n )\n ) : (\n \n ),\n [validSendAddress, handleCheckStatus]\n )\n\n // Handle Username/Address Validation:\n // check if username exists, set recipient address, and validate send address\n const handleCheckStatusAction = useCallback(async () => {\n if (isHandle) {\n const reverseAddress = await getL1nsAddress(destinationAddress.value)\n if (reverseAddress && reverseAddress !== BLANK_ADDRESS) {\n setHandleCheckStatus({\n input: destinationAddress.value,\n message: `${reverseAddress}`,\n verified: true,\n })\n // Check if user has been nominated if it's a valid username\n const beenNominated = hasBeenNominated(reverseAddress)\n if (beenNominated) {\n setDestinationAddress({\n value: destinationAddress.value,\n touched: true,\n error: 'User has already been nominated',\n })\n setValidSendAddress(false)\n } else {\n recipientAddressRef.current = reverseAddress\n setValidSendAddress(true)\n }\n } else {\n // If username is not found, set the error message\n setHandleCheckStatus({\n input: destinationAddress.value,\n message: '',\n verified: true,\n })\n setValidSendAddress(false)\n setDestinationAddress({\n value: destinationAddress.value,\n touched: true,\n error: 'Username not found',\n })\n }\n } else {\n const reverseName = await getL1nsName(destinationAddress.value)\n const beenNominated = hasBeenNominated(destinationAddress.value)\n console.log('hasBeenNominated', hasBeenNominated, reverseName, destinationAddress.value)\n if (beenNominated) {\n setDestinationAddress({\n value: destinationAddress.value,\n touched: true,\n error: 'User has already been nominated',\n })\n setValidSendAddress(false)\n } else {\n if (reverseName) {\n setHandleCheckStatus({\n input: destinationAddress.value,\n message: `${reverseName}`,\n verified: true,\n })\n } else {\n setHandleCheckStatus({\n input: destinationAddress.value,\n message: '',\n verified: true,\n })\n }\n recipientAddressRef.current = destinationAddress.value\n setValidSendAddress(true)\n }\n }\n }, [destinationAddress.value, getL1nsAddress, getL1nsName, isHandle, sendTransaction])\n\n const resetDestinationHandle = useCallback(() => {\n setHandleCheckStatus({\n input: '',\n message: '',\n verified: false,\n })\n setDestinationAddress({\n value: '',\n touched: false,\n error: '',\n })\n setValidSendAddress(false)\n }, [setHandleCheckStatus, setDestinationAddress])\n\n const handleDestinationChange = useCallback(\n (e: React.ChangeEvent | React.ChangeEvent) => {\n const { value } = e.target\n resetDestinationHandle()\n setIsHandle(!isAddress(value))\n setConfirmCheckbox(false)\n const destinationError = checkInputHandleAddress(t, value, !isAddress(value))\n setDestinationAddress({\n value: value.toLowerCase(),\n touched: true,\n error: destinationError,\n })\n setValidSendAddress(false)\n setHandleCheckStatus({\n input: value.toLowerCase(),\n message: '',\n verified: false,\n })\n // setSendingTx(null)\n },\n [t]\n )\n\n const handleCloseConfirmationCancel = useCallback(() => {\n setError('')\n closeConfirmation()\n }, [closeConfirmation])\n\n const handleCloseConfirmation = useCallback(() => {\n setError('')\n closeConfirmation()\n close()\n }, [closeConfirmation, close])\n\n // Resolve username from destination changes with debounce\n useEffect(() => {\n const handler = setTimeout(() => {\n if (destinationAddress.touched && destinationAddress.error === '') {\n handleCheckStatusAction()\n }\n }, DEBOUNCE_USERNAME_RESOLVE_TIME)\n\n return () => {\n clearTimeout(handler)\n }\n }, [destinationAddress])\n\n return (\n <>\n \n \n {t(\n 'components.governance.nomination.text1',\n 'You need at least {{minBalance}} vote power to nominate a candidate. You can only nominate one candidate per election.',\n {\n minBalance: minVoteBalance.display,\n }\n )}\n \n \n {!isHandle && handleCheckStatus.input !== '' && !destinationAddress.error && (\n setConfirmCheckbox(!confirmCheckbox)}\n label={t(\n 'components.send.checkboxAddress',\n 'Confirm that you want to nominate this address'\n )}\n />\n )}\n\n \n \n {t('components.governance.modal.nomination.close', 'Close')}\n \n \n {t('components.governance.modal.nomination.button', 'Nominate')}\n \n \n \n \n {error && (\n \n )}\n {isLoading && (\n \n )}\n {isReady && !isLoading && !error && (\n \n )}\n {!isReady && !error && !isLoading && (\n <>\n \n \n {t(\n 'components.governance.modal.nominate.confirmMessage',\n 'You are about to nominate this user for the upcoming election. This action is irreversible.'\n )}\n \n \n \n \n \n {t('buttons.cancel', 'Cancel')}\n \n \n {t('buttons.confirm', 'Confirm')}\n \n \n \n )}\n \n \n )\n}\n\nexport default NominateModal\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)= size[levelIndex][size[levelIndex].length - 1]) {\n return {\n levelIndex: levelIndex + 1,\n rowIndex: 0,\n cellIndex\n };\n }\n return {\n levelIndex,\n rowIndex: rowIndex + 1,\n cellIndex\n };\n case \"left\":\n if (levelIndex === 0 && rowIndex === 0 && cellIndex === 0) {\n return null;\n }\n if (rowIndex === 0 && cellIndex === 0) {\n return {\n levelIndex: levelIndex - 1,\n rowIndex: size[levelIndex - 1].length - 1,\n cellIndex: size[levelIndex - 1][size[levelIndex - 1].length - 1] - 1\n };\n }\n if (cellIndex === 0) {\n return {\n levelIndex,\n rowIndex: rowIndex - 1,\n cellIndex: size[levelIndex][rowIndex - 1] - 1\n };\n }\n return {\n levelIndex,\n rowIndex,\n cellIndex: cellIndex - 1\n };\n case \"right\":\n if (rowIndex === size[levelIndex].length - 1 && cellIndex === size[levelIndex][rowIndex] - 1) {\n return {\n levelIndex: levelIndex + 1,\n rowIndex: 0,\n cellIndex: 0\n };\n }\n if (cellIndex === size[levelIndex][rowIndex] - 1) {\n return {\n levelIndex,\n rowIndex: rowIndex + 1,\n cellIndex: 0\n };\n }\n return {\n levelIndex,\n rowIndex,\n cellIndex: cellIndex + 1\n };\n default:\n return { levelIndex, rowIndex, cellIndex };\n }\n}\nfunction focusOnNextFocusableControl({\n controlsRef,\n direction,\n levelIndex,\n rowIndex,\n cellIndex,\n size\n}) {\n const nextIndex = getNextIndex({ direction, size, rowIndex, cellIndex, levelIndex });\n if (!nextIndex) {\n return;\n }\n const controlToFocus = controlsRef.current?.[nextIndex.levelIndex]?.[nextIndex.rowIndex]?.[nextIndex.cellIndex];\n if (!controlToFocus) {\n return;\n }\n if (controlToFocus.disabled || controlToFocus.getAttribute(\"data-hidden\") || controlToFocus.getAttribute(\"data-outside\")) {\n focusOnNextFocusableControl({\n controlsRef,\n direction,\n levelIndex: nextIndex.levelIndex,\n cellIndex: nextIndex.cellIndex,\n rowIndex: nextIndex.rowIndex,\n size\n });\n } else {\n controlToFocus.focus();\n }\n}\nfunction getDirection(key) {\n switch (key) {\n case \"ArrowDown\":\n return \"down\";\n case \"ArrowUp\":\n return \"up\";\n case \"ArrowRight\":\n return \"right\";\n case \"ArrowLeft\":\n return \"left\";\n default:\n return null;\n }\n}\nfunction getControlsSize(controlsRef) {\n return controlsRef.current?.map((column) => column.map((row) => row.length));\n}\nfunction handleControlKeyDown({\n controlsRef,\n levelIndex,\n rowIndex,\n cellIndex,\n event\n}) {\n const direction = getDirection(event.key);\n if (direction) {\n event.preventDefault();\n const size = getControlsSize(controlsRef);\n focusOnNextFocusableControl({\n controlsRef,\n direction,\n levelIndex,\n rowIndex,\n cellIndex,\n size\n });\n }\n}\n\nexport { handleControlKeyDown };\n//# sourceMappingURL=handle-control-key-down.mjs.map\n","'use client';\nfunction assignTime(originalDate, resultDate) {\n if (!originalDate || !resultDate) {\n return resultDate;\n }\n const hours = originalDate.getHours();\n const minutes = originalDate.getMinutes();\n const seconds = originalDate.getSeconds();\n const ms = originalDate.getMilliseconds();\n const result = new Date(resultDate);\n result.setHours(hours);\n result.setMinutes(minutes);\n result.setSeconds(seconds);\n result.setMilliseconds(ms);\n return result;\n}\n\nexport { assignTime };\n//# sourceMappingURL=assign-time.mjs.map\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_timezone=e()}(this,(function(){\"use strict\";var t={year:0,month:1,day:2,hour:3,minute:4,second:5},e={};return function(n,i,o){var r,a=function(t,n,i){void 0===i&&(i={});var o=new Date(t),r=function(t,n){void 0===n&&(n={});var i=n.timeZoneName||\"short\",o=t+\"|\"+i,r=e[o];return r||(r=new Intl.DateTimeFormat(\"en-US\",{hour12:!1,timeZone:t,year:\"numeric\",month:\"2-digit\",day:\"2-digit\",hour:\"2-digit\",minute:\"2-digit\",second:\"2-digit\",timeZoneName:i}),e[o]=r),r}(n,i);return r.formatToParts(o)},u=function(e,n){for(var i=a(e,n),r=[],u=0;u=0&&(r[c]=parseInt(m,10))}var d=r[3],l=24===d?0:d,h=r[0]+\"-\"+r[1]+\"-\"+r[2]+\" \"+l+\":\"+r[4]+\":\"+r[5]+\":000\",v=+e;return(o.utc(h).valueOf()-(v-=v%1e3))/6e4},f=i.prototype;f.tz=function(t,e){void 0===t&&(t=r);var n,i=this.utcOffset(),a=this.toDate(),u=a.toLocaleString(\"en-US\",{timeZone:t}),f=Math.round((a-new Date(u))/1e3/60),s=15*-Math.round(a.getTimezoneOffset()/15)-f;if(!Number(s))n=this.utcOffset(0,e);else if(n=o(u,{locale:this.$L}).$set(\"millisecond\",this.$ms).utcOffset(s,!0),e){var m=n.utcOffset();n=n.add(i-m,\"minute\")}return n.$x.$timezone=t,n},f.offsetName=function(t){var e=this.$x.$timezone||o.tz.guess(),n=a(this.valueOf(),e,{timeZoneName:t}).find((function(t){return\"timezonename\"===t.type.toLowerCase()}));return n&&n.value};var s=f.startOf;f.startOf=function(t,e){if(!this.$x||!this.$x.$timezone)return s.call(this,t,e);var n=o(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\"),{locale:this.$L});return s.call(n,t,e).tz(this.$x.$timezone,!0)},o.tz=function(t,e,n){var i=n&&e,a=n||e||r,f=u(+o(),a);if(\"string\"!=typeof t)return o(t).tz(a);var s=function(t,e,n){var i=t-60*e*1e3,o=u(i,n);if(e===o)return[i,e];var r=u(i-=60*(o-e)*1e3,n);return o===r?[i,o]:[t-60*Math.min(o,r)*1e3,Math.max(o,r)]}(o.utc(t,i).valueOf(),f,a),m=s[0],c=s[1],d=o(m).utcOffset(c);return d.$x.$timezone=a,d},o.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},o.tz.setDefault=function(t){r=t}}}));","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_utc=i()}(this,(function(){\"use strict\";var t=\"minute\",i=/[+-]\\d\\d(?::?\\d\\d)?/g,e=/([+-]|\\d\\d)/g;return function(s,f,n){var u=f.prototype;n.utc=function(t){var i={date:t,utc:!0,args:arguments};return new f(i)},u.utc=function(i){var e=n(this.toDate(),{locale:this.$L,utc:!0});return i?e.add(this.utcOffset(),t):e},u.local=function(){return n(this.toDate(),{locale:this.$L,utc:!1})};var o=u.parse;u.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),o.call(this,t)};var r=u.init;u.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else r.call(this)};var a=u.utcOffset;u.utcOffset=function(s,f){var n=this.$utils().u;if(n(s))return this.$u?0:n(this.$offset)?a.call(this):this.$offset;if(\"string\"==typeof s&&(s=function(t){void 0===t&&(t=\"\");var s=t.match(i);if(!s)return null;var f=(\"\"+s[0]).match(e)||[\"-\",0,0],n=f[0],u=60*+f[1]+ +f[2];return 0===u?0:\"+\"===n?u:-u}(s),null===s))return this;var u=Math.abs(s)<=16?60*s:s,o=this;if(f)return o.$offset=u,o.$u=0===s,o;if(0!==s){var r=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(o=this.local().add(u+r,t)).$offset=u,o.$x.$localOffset=r}else o=this.utc();return o};var h=u.format;u.format=function(t){var i=t||(this.$u?\"YYYY-MM-DDTHH:mm:ss[Z]\":\"\");return h.call(this,i)},u.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*t},u.isUTC=function(){return!!this.$u},u.toISOString=function(){return this.toDate().toISOString()},u.toString=function(){return this.toDate().toUTCString()};var l=u.toDate;u.toDate=function(t){return\"s\"===t&&this.$offset?n(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\")).toDate():l.call(this)};var c=u.diff;u.diff=function(t,i,e){if(t&&this.$u===t.$u)return c.call(this,t,i,e);var s=this.local(),f=n(t).local();return c.call(s,f,i,e)}}}));","'use client';\nimport dayjs from 'dayjs';\nimport timezonePlugin from 'dayjs/plugin/timezone.js';\nimport utcPlugin from 'dayjs/plugin/utc.js';\n\ndayjs.extend(utcPlugin);\ndayjs.extend(timezonePlugin);\nfunction getTimezoneOffset(date, timezone) {\n if (timezone) {\n return dayjs(date).tz(timezone).utcOffset() + date.getTimezoneOffset();\n }\n return 0;\n}\n\nexport { getTimezoneOffset };\n//# sourceMappingURL=get-timezone-offset.mjs.map\n","'use client';\nimport dayjs from 'dayjs';\nimport { getTimezoneOffset } from './get-timezone-offset.mjs';\n\nconst updateTimezone = (date, timezone, direction) => {\n if (!date) {\n return null;\n }\n if (!timezone) {\n return date;\n }\n let offset = getTimezoneOffset(date, timezone);\n if (direction === \"remove\") {\n offset *= -1;\n }\n return dayjs(date).add(offset, \"minutes\").toDate();\n};\nfunction shiftTimezone(direction, date, timezone, disabled) {\n if (disabled || !date) {\n return date;\n }\n if (Array.isArray(date)) {\n return date.map((d) => updateTimezone(d, timezone, direction));\n }\n return updateTimezone(date, timezone, direction);\n}\n\nexport { shiftTimezone };\n//# sourceMappingURL=shift-timezone.mjs.map\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { createContext } from 'react';\n\nconst DATES_PROVIDER_DEFAULT_SETTINGS = {\n locale: \"en\",\n timezone: null,\n firstDayOfWeek: 1,\n weekendDays: [0, 6],\n labelSeparator: \"\\u2013\",\n consistentWeeks: false\n};\nconst DatesProviderContext = createContext(DATES_PROVIDER_DEFAULT_SETTINGS);\nfunction DatesProvider({ settings, children }) {\n return /* @__PURE__ */ jsx(DatesProviderContext.Provider, { value: { ...DATES_PROVIDER_DEFAULT_SETTINGS, ...settings }, children });\n}\n\nexport { DATES_PROVIDER_DEFAULT_SETTINGS, DatesProvider, DatesProviderContext };\n//# sourceMappingURL=DatesProvider.mjs.map\n","'use client';\nimport { useContext, useCallback } from 'react';\nimport { DatesProviderContext } from './DatesProvider.mjs';\n\nfunction useDatesContext() {\n const ctx = useContext(DatesProviderContext);\n const getLocale = useCallback((input) => input || ctx.locale, [ctx.locale]);\n const getTimezone = useCallback(\n (input) => input || ctx.timezone || void 0,\n [ctx.timezone]\n );\n const getFirstDayOfWeek = useCallback(\n (input) => typeof input === \"number\" ? input : ctx.firstDayOfWeek,\n [ctx.firstDayOfWeek]\n );\n const getWeekendDays = useCallback(\n (input) => Array.isArray(input) ? input : ctx.weekendDays,\n [ctx.weekendDays]\n );\n const getLabelSeparator = useCallback(\n (input) => typeof input === \"string\" ? input : ctx.labelSeparator,\n [ctx.labelSeparator]\n );\n return {\n ...ctx,\n getLocale,\n getTimezone,\n getFirstDayOfWeek,\n getWeekendDays,\n getLabelSeparator\n };\n}\n\nexport { useDatesContext };\n//# sourceMappingURL=use-dates-context.mjs.map\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport 'dayjs';\nimport { shiftTimezone } from '../../utils/shift-timezone.mjs';\nimport '../DatesProvider/DatesProvider.mjs';\nimport { useDatesContext } from '../DatesProvider/use-dates-context.mjs';\n\nfunction formatValue(value, type) {\n const ctx = useDatesContext();\n const formatDateWithTimezone = (date) => {\n return shiftTimezone(\"remove\", date, ctx.getTimezone()).toISOString();\n };\n if (type === \"range\" && Array.isArray(value)) {\n const [startDate, endDate] = value;\n if (!startDate) {\n return \"\";\n }\n if (!endDate) {\n return `${formatDateWithTimezone(startDate)} \\u2013`;\n }\n return `${formatDateWithTimezone(startDate)} \\u2013 ${formatDateWithTimezone(endDate)}`;\n }\n if (type === \"multiple\" && Array.isArray(value)) {\n return value.map((date) => date && formatDateWithTimezone(date)).filter(Boolean).join(\", \");\n }\n if (!Array.isArray(value) && value) {\n return formatDateWithTimezone(value);\n }\n return \"\";\n}\nfunction HiddenDatesInput({ value, type, name, form }) {\n return /* @__PURE__ */ jsx(\"input\", { type: \"hidden\", value: formatValue(value, type), name, form });\n}\nHiddenDatesInput.displayName = \"@mantine/dates/HiddenDatesInput\";\n\nexport { HiddenDatesInput };\n//# sourceMappingURL=HiddenDatesInput.mjs.map\n","'use client';\nvar classes = {\"input\":\"m_468e7eda\"};\n\nexport { classes as default };\n//# sourceMappingURL=TimeInput.module.css.mjs.map\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport cx from 'clsx';\nimport { factory, useProps, useResolvedStylesApi, InputBase } from '@mantine/core';\nimport classes from './TimeInput.module.css.mjs';\n\nconst defaultProps = {};\nconst TimeInput = factory((_props, ref) => {\n const props = useProps(\"TimeInput\", defaultProps, _props);\n const {\n classNames,\n styles,\n unstyled,\n vars,\n withSeconds,\n minTime,\n maxTime,\n value,\n onChange,\n ...others\n } = props;\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi({\n classNames,\n styles,\n props\n });\n const checkIfTimeLimitExceeded = (val) => {\n if (minTime !== void 0 || maxTime !== void 0) {\n const [hours, minutes, seconds] = val.split(\":\").map(Number);\n if (minTime) {\n const [minHours, minMinutes, minSeconds] = minTime.split(\":\").map(Number);\n if (hours < minHours || hours === minHours && minutes < minMinutes || withSeconds && hours === minHours && minutes === minMinutes && seconds < minSeconds) {\n return -1;\n }\n }\n if (maxTime) {\n const [maxHours, maxMinutes, maxSeconds] = maxTime.split(\":\").map(Number);\n if (hours > maxHours || hours === maxHours && minutes > maxMinutes || withSeconds && hours === maxHours && minutes === maxMinutes && seconds > maxSeconds) {\n return 1;\n }\n }\n }\n return 0;\n };\n const onTimeBlur = (event) => {\n props.onBlur?.(event);\n if (minTime !== void 0 || maxTime !== void 0) {\n const val = event.currentTarget.value;\n if (val) {\n const check = checkIfTimeLimitExceeded(val);\n if (check === 1) {\n event.currentTarget.value = maxTime;\n props.onChange?.(event);\n } else if (check === -1) {\n event.currentTarget.value = minTime;\n props.onChange?.(event);\n }\n }\n }\n };\n return /* @__PURE__ */ jsx(\n InputBase,\n {\n classNames: { ...resolvedClassNames, input: cx(classes.input, resolvedClassNames?.input) },\n styles: resolvedStyles,\n unstyled,\n ref,\n value,\n ...others,\n step: withSeconds ? 1 : 60,\n onChange,\n onBlur: onTimeBlur,\n type: \"time\",\n __staticSelector: \"TimeInput\"\n }\n );\n});\nTimeInput.classes = InputBase.classes;\nTimeInput.displayName = \"@mantine/dates/TimeInput\";\n\nexport { TimeInput };\n//# sourceMappingURL=TimeInput.mjs.map\n","'use client';\nvar classes = {\"day\":\"m_396ce5cb\"};\n\nexport { classes as default };\n//# sourceMappingURL=Day.module.css.mjs.map\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport dayjs from 'dayjs';\nimport { createVarsResolver, getSize, factory, useProps, useStyles, UnstyledButton } from '@mantine/core';\nimport { shiftTimezone } from '../../utils/shift-timezone.mjs';\nimport '../DatesProvider/DatesProvider.mjs';\nimport { useDatesContext } from '../DatesProvider/use-dates-context.mjs';\nimport classes from './Day.module.css.mjs';\n\nconst defaultProps = {};\nconst varsResolver = createVarsResolver((_, { size }) => ({\n day: {\n \"--day-size\": getSize(size, \"day-size\")\n }\n}));\nconst Day = factory((_props, ref) => {\n const props = useProps(\"Day\", defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n date,\n disabled,\n __staticSelector,\n weekend,\n outside,\n selected,\n renderDay,\n inRange,\n firstInRange,\n lastInRange,\n hidden,\n static: isStatic,\n highlightToday,\n ...others\n } = props;\n const getStyles = useStyles({\n name: __staticSelector || \"Day\",\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n varsResolver,\n rootSelector: \"day\"\n });\n const ctx = useDatesContext();\n return /* @__PURE__ */ jsx(\n UnstyledButton,\n {\n ...getStyles(\"day\", { style: hidden ? { display: \"none\" } : void 0 }),\n component: isStatic ? \"div\" : \"button\",\n ref,\n disabled,\n \"data-today\": dayjs(date).isSame(shiftTimezone(\"add\", /* @__PURE__ */ new Date(), ctx.getTimezone()), \"day\") || void 0,\n \"data-hidden\": hidden || void 0,\n \"data-highlight-today\": highlightToday || void 0,\n \"data-disabled\": disabled || void 0,\n \"data-weekend\": !disabled && !outside && weekend || void 0,\n \"data-outside\": !disabled && outside || void 0,\n \"data-selected\": !disabled && selected || void 0,\n \"data-in-range\": inRange && !disabled || void 0,\n \"data-first-in-range\": firstInRange && !disabled || void 0,\n \"data-last-in-range\": lastInRange && !disabled || void 0,\n \"data-static\": isStatic || void 0,\n unstyled,\n ...others,\n children: renderDay?.(date) || date.getDate()\n }\n );\n});\nDay.classes = classes;\nDay.displayName = \"@mantine/dates/Day\";\n\nexport { Day };\n//# sourceMappingURL=Day.mjs.map\n","'use client';\nimport dayjs from 'dayjs';\n\nfunction getWeekdayNames({\n locale,\n format = \"dd\",\n firstDayOfWeek = 1\n}) {\n const baseDate = dayjs().day(firstDayOfWeek);\n const labels = [];\n for (let i = 0; i < 7; i += 1) {\n if (typeof format === \"string\") {\n labels.push(dayjs(baseDate).add(i, \"days\").locale(locale).format(format));\n } else {\n labels.push(format(dayjs(baseDate).add(i, \"days\").toDate()));\n }\n }\n return labels;\n}\n\nexport { getWeekdayNames };\n//# sourceMappingURL=get-weekdays-names.mjs.map\n","'use client';\nvar classes = {\"weekday\":\"m_18a3eca\"};\n\nexport { classes as default };\n//# sourceMappingURL=WeekdaysRow.module.css.mjs.map\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { createVarsResolver, getFontSize, getSpacing, factory, useProps, useStyles, Box } from '@mantine/core';\nimport '../DatesProvider/DatesProvider.mjs';\nimport { useDatesContext } from '../DatesProvider/use-dates-context.mjs';\nimport { getWeekdayNames } from './get-weekdays-names/get-weekdays-names.mjs';\nimport classes from './WeekdaysRow.module.css.mjs';\n\nconst defaultProps = {};\nconst varsResolver = createVarsResolver((_, { size }) => ({\n weekdaysRow: {\n \"--wr-fz\": getFontSize(size),\n \"--wr-spacing\": getSpacing(size)\n }\n}));\nconst WeekdaysRow = factory((_props, ref) => {\n const props = useProps(\"WeekdaysRow\", defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n locale,\n firstDayOfWeek,\n weekdayFormat,\n cellComponent: CellComponent = \"th\",\n __staticSelector,\n ...others\n } = props;\n const getStyles = useStyles({\n name: __staticSelector || \"WeekdaysRow\",\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n varsResolver,\n rootSelector: \"weekdaysRow\"\n });\n const ctx = useDatesContext();\n const weekdays = getWeekdayNames({\n locale: ctx.getLocale(locale),\n format: weekdayFormat,\n firstDayOfWeek: ctx.getFirstDayOfWeek(firstDayOfWeek)\n }).map((weekday, index) => /* @__PURE__ */ jsx(CellComponent, { ...getStyles(\"weekday\"), children: weekday }, index));\n return /* @__PURE__ */ jsx(Box, { component: \"tr\", ref, ...getStyles(\"weekdaysRow\"), ...others, children: weekdays });\n});\nWeekdaysRow.classes = classes;\nWeekdaysRow.displayName = \"@mantine/dates/WeekdaysRow\";\n\nexport { WeekdaysRow };\n//# sourceMappingURL=WeekdaysRow.mjs.map\n","'use client';\nfunction getEndOfWeek(date, firstDayOfWeek = 1) {\n const value = new Date(date);\n const lastDayOfWeek = firstDayOfWeek === 0 ? 6 : firstDayOfWeek - 1;\n while (value.getDay() !== lastDayOfWeek) {\n value.setDate(value.getDate() + 1);\n }\n return value;\n}\n\nexport { getEndOfWeek };\n//# sourceMappingURL=get-end-of-week.mjs.map\n","'use client';\nfunction getStartOfWeek(date, firstDayOfWeek = 1) {\n const value = new Date(date);\n while (value.getDay() !== firstDayOfWeek) {\n value.setDate(value.getDate() - 1);\n }\n return value;\n}\n\nexport { getStartOfWeek };\n//# sourceMappingURL=get-start-of-week.mjs.map\n","'use client';\nimport { getEndOfWeek } from '../get-end-of-week/get-end-of-week.mjs';\nimport { getStartOfWeek } from '../get-start-of-week/get-start-of-week.mjs';\n\nfunction getMonthDays({\n month,\n firstDayOfWeek = 1,\n consistentWeeks\n}) {\n const currentMonth = month.getMonth();\n const startOfMonth = new Date(month.getFullYear(), currentMonth, 1);\n const endOfMonth = new Date(month.getFullYear(), month.getMonth() + 1, 0);\n const endDate = getEndOfWeek(endOfMonth, firstDayOfWeek);\n const date = getStartOfWeek(startOfMonth, firstDayOfWeek);\n const weeks = [];\n while (date <= endDate) {\n const days = [];\n for (let i = 0; i < 7; i += 1) {\n days.push(new Date(date));\n date.setDate(date.getDate() + 1);\n }\n weeks.push(days);\n }\n if (consistentWeeks && weeks.length < 6) {\n const lastWeek = weeks[weeks.length - 1];\n const lastDay = lastWeek[lastWeek.length - 1];\n const nextDay = new Date(lastDay);\n nextDay.setDate(nextDay.getDate() + 1);\n while (weeks.length < 6) {\n const days = [];\n for (let i = 0; i < 7; i += 1) {\n days.push(new Date(nextDay));\n nextDay.setDate(nextDay.getDate() + 1);\n }\n weeks.push(days);\n }\n }\n return weeks;\n}\n\nexport { getMonthDays };\n//# sourceMappingURL=get-month-days.mjs.map\n","'use client';\nfunction isSameMonth(date, comparison) {\n return date.getFullYear() === comparison.getFullYear() && date.getMonth() === comparison.getMonth();\n}\n\nexport { isSameMonth };\n//# sourceMappingURL=is-same-month.mjs.map\n","'use client';\nimport dayjs from 'dayjs';\n\nfunction isAfterMinDate(date, minDate) {\n return minDate instanceof Date ? dayjs(date).isAfter(dayjs(minDate).subtract(1, \"day\"), \"day\") : true;\n}\n\nexport { isAfterMinDate };\n//# sourceMappingURL=is-after-min-date.mjs.map\n","'use client';\nimport dayjs from 'dayjs';\n\nfunction isBeforeMaxDate(date, maxDate) {\n return maxDate instanceof Date ? dayjs(date).isBefore(dayjs(maxDate).add(1, \"day\"), \"day\") : true;\n}\n\nexport { isBeforeMaxDate };\n//# sourceMappingURL=is-before-max-date.mjs.map\n","'use client';\nimport dayjs from 'dayjs';\nimport { isAfterMinDate } from '../is-after-min-date/is-after-min-date.mjs';\nimport { isBeforeMaxDate } from '../is-before-max-date/is-before-max-date.mjs';\nimport { isSameMonth } from '../is-same-month/is-same-month.mjs';\n\nfunction getDateInTabOrder(dates, minDate, maxDate, getDateControlProps, excludeDate, hideOutsideDates, month) {\n const enabledDates = dates.flat().filter(\n (date) => isBeforeMaxDate(date, maxDate) && isAfterMinDate(date, minDate) && !excludeDate?.(date) && !getDateControlProps?.(date)?.disabled && (!hideOutsideDates || isSameMonth(date, month))\n );\n const selectedDate = enabledDates.find((date) => getDateControlProps?.(date)?.selected);\n if (selectedDate) {\n return selectedDate;\n }\n const currentDate = enabledDates.find((date) => dayjs().isSame(date, \"date\"));\n if (currentDate) {\n return currentDate;\n }\n return enabledDates[0];\n}\n\nexport { getDateInTabOrder };\n//# sourceMappingURL=get-date-in-tab-order.mjs.map\n","'use client';\nvar classes = {\"month\":\"m_cc9820d3\",\"monthCell\":\"m_8f457cd5\"};\n\nexport { classes as default };\n//# sourceMappingURL=Month.module.css.mjs.map\n","'use client';\nimport { jsx, jsxs } from 'react/jsx-runtime';\nimport dayjs from 'dayjs';\nimport { factory, useProps, useStyles, useResolvedStylesApi, Box } from '@mantine/core';\nimport '../DatesProvider/DatesProvider.mjs';\nimport { useDatesContext } from '../DatesProvider/use-dates-context.mjs';\nimport { Day } from '../Day/Day.mjs';\nimport { WeekdaysRow } from '../WeekdaysRow/WeekdaysRow.mjs';\nimport { getDateInTabOrder } from './get-date-in-tab-order/get-date-in-tab-order.mjs';\nimport { getMonthDays } from './get-month-days/get-month-days.mjs';\nimport { isAfterMinDate } from './is-after-min-date/is-after-min-date.mjs';\nimport { isBeforeMaxDate } from './is-before-max-date/is-before-max-date.mjs';\nimport { isSameMonth } from './is-same-month/is-same-month.mjs';\nimport classes from './Month.module.css.mjs';\n\nconst defaultProps = {\n withCellSpacing: true\n};\nconst Month = factory((_props, ref) => {\n const props = useProps(\"Month\", defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n __staticSelector,\n locale,\n firstDayOfWeek,\n weekdayFormat,\n month,\n weekendDays,\n getDayProps,\n excludeDate,\n minDate,\n maxDate,\n renderDay,\n hideOutsideDates,\n hideWeekdays,\n getDayAriaLabel,\n static: isStatic,\n __getDayRef,\n __onDayKeyDown,\n __onDayClick,\n __onDayMouseEnter,\n __preventFocus,\n __stopPropagation,\n withCellSpacing,\n size,\n highlightToday,\n ...others\n } = props;\n const getStyles = useStyles({\n name: __staticSelector || \"Month\",\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n rootSelector: \"month\"\n });\n const ctx = useDatesContext();\n const dates = getMonthDays({\n month,\n firstDayOfWeek: ctx.getFirstDayOfWeek(firstDayOfWeek),\n consistentWeeks: ctx.consistentWeeks\n });\n const dateInTabOrder = getDateInTabOrder(\n dates,\n minDate,\n maxDate,\n getDayProps,\n excludeDate,\n hideOutsideDates,\n month\n );\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi({\n classNames,\n styles,\n props\n });\n const rows = dates.map((row, rowIndex) => {\n const cells = row.map((date, cellIndex) => {\n const outside = !isSameMonth(date, month);\n const ariaLabel = getDayAriaLabel?.(date) || dayjs(date).locale(locale || ctx.locale).format(\"D MMMM YYYY\");\n const dayProps = getDayProps?.(date);\n const isDateInTabOrder = dayjs(date).isSame(dateInTabOrder, \"date\");\n return /* @__PURE__ */ jsx(\n \"td\",\n {\n ...getStyles(\"monthCell\"),\n \"data-with-spacing\": withCellSpacing || void 0,\n children: /* @__PURE__ */ jsx(\n Day,\n {\n __staticSelector: __staticSelector || \"Month\",\n classNames: resolvedClassNames,\n styles: resolvedStyles,\n unstyled,\n \"data-mantine-stop-propagation\": __stopPropagation || void 0,\n highlightToday,\n renderDay,\n date,\n size,\n weekend: ctx.getWeekendDays(weekendDays).includes(date.getDay()),\n outside,\n hidden: hideOutsideDates ? outside : false,\n \"aria-label\": ariaLabel,\n static: isStatic,\n disabled: excludeDate?.(date) || !isBeforeMaxDate(date, maxDate) || !isAfterMinDate(date, minDate),\n ref: (node) => __getDayRef?.(rowIndex, cellIndex, node),\n ...dayProps,\n onKeyDown: (event) => {\n dayProps?.onKeyDown?.(event);\n __onDayKeyDown?.(event, { rowIndex, cellIndex, date });\n },\n onMouseEnter: (event) => {\n dayProps?.onMouseEnter?.(event);\n __onDayMouseEnter?.(event, date);\n },\n onClick: (event) => {\n dayProps?.onClick?.(event);\n __onDayClick?.(event, date);\n },\n onMouseDown: (event) => {\n dayProps?.onMouseDown?.(event);\n __preventFocus && event.preventDefault();\n },\n tabIndex: __preventFocus || !isDateInTabOrder ? -1 : 0\n }\n )\n },\n date.toString()\n );\n });\n return /* @__PURE__ */ jsx(\"tr\", { ...getStyles(\"monthRow\"), children: cells }, rowIndex);\n });\n return /* @__PURE__ */ jsxs(Box, { component: \"table\", ...getStyles(\"month\"), size, ref, ...others, children: [\n !hideWeekdays && /* @__PURE__ */ jsx(\"thead\", { ...getStyles(\"monthThead\"), children: /* @__PURE__ */ jsx(\n WeekdaysRow,\n {\n __staticSelector: __staticSelector || \"Month\",\n locale,\n firstDayOfWeek,\n weekdayFormat,\n size,\n classNames: resolvedClassNames,\n styles: resolvedStyles,\n unstyled\n }\n ) }),\n /* @__PURE__ */ jsx(\"tbody\", { ...getStyles(\"monthTbody\"), children: rows })\n ] });\n});\nMonth.classes = classes;\nMonth.displayName = \"@mantine/dates/Month\";\n\nexport { Month };\n//# sourceMappingURL=Month.mjs.map\n","'use client';\nvar classes = {\"pickerControl\":\"m_dc6a3c71\"};\n\nexport { classes as default };\n//# sourceMappingURL=PickerControl.module.css.mjs.map\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { createVarsResolver, getFontSize, getSize, factory, useProps, useStyles, UnstyledButton } from '@mantine/core';\nimport classes from './PickerControl.module.css.mjs';\n\nconst defaultProps = {};\nconst varsResolver = createVarsResolver((_, { size }) => ({\n pickerControl: {\n \"--dpc-fz\": getFontSize(size),\n \"--dpc-size\": getSize(size, \"dpc-size\")\n }\n}));\nconst PickerControl = factory((_props, ref) => {\n const props = useProps(\"PickerControl\", defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n firstInRange,\n lastInRange,\n inRange,\n __staticSelector,\n selected,\n disabled,\n ...others\n } = props;\n const getStyles = useStyles({\n name: __staticSelector || \"PickerControl\",\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n varsResolver,\n rootSelector: \"pickerControl\"\n });\n return /* @__PURE__ */ jsx(\n UnstyledButton,\n {\n ...getStyles(\"pickerControl\"),\n ref,\n unstyled,\n \"data-picker-control\": true,\n \"data-selected\": selected && !disabled || void 0,\n \"data-disabled\": disabled || void 0,\n \"data-in-range\": inRange && !disabled && !selected || void 0,\n \"data-first-in-range\": firstInRange && !disabled || void 0,\n \"data-last-in-range\": lastInRange && !disabled || void 0,\n disabled,\n ...others\n }\n );\n});\nPickerControl.classes = classes;\nPickerControl.displayName = \"@mantine/dates/PickerControl\";\n\nexport { PickerControl };\n//# sourceMappingURL=PickerControl.mjs.map\n","'use client';\nimport dayjs from 'dayjs';\n\nfunction isYearDisabled(year, minDate, maxDate) {\n if (!minDate && !maxDate) {\n return false;\n }\n if (minDate && dayjs(year).isBefore(minDate, \"year\")) {\n return true;\n }\n if (maxDate && dayjs(year).isAfter(maxDate, \"year\")) {\n return true;\n }\n return false;\n}\n\nexport { isYearDisabled };\n//# sourceMappingURL=is-year-disabled.mjs.map\n","'use client';\nimport dayjs from 'dayjs';\nimport { isYearDisabled } from '../is-year-disabled/is-year-disabled.mjs';\n\nfunction getYearInTabOrder(years, minDate, maxDate, getYearControlProps) {\n const enabledYears = years.flat().filter(\n (year) => !isYearDisabled(year, minDate, maxDate) && !getYearControlProps?.(year)?.disabled\n );\n const selectedYear = enabledYears.find((year) => getYearControlProps?.(year)?.selected);\n if (selectedYear) {\n return selectedYear;\n }\n const currentYear = enabledYears.find((year) => dayjs().isSame(year, \"year\"));\n if (currentYear) {\n return currentYear;\n }\n return enabledYears[0];\n}\n\nexport { getYearInTabOrder };\n//# sourceMappingURL=get-year-in-tab-order.mjs.map\n","'use client';\nfunction getYearsData(decade) {\n const year = decade.getFullYear();\n const rounded = year - year % 10;\n let currentYearIndex = 0;\n const results = [[], [], [], []];\n for (let i = 0; i < 4; i += 1) {\n const max = i === 3 ? 1 : 3;\n for (let j = 0; j < max; j += 1) {\n results[i].push(new Date(rounded + currentYearIndex, 0));\n currentYearIndex += 1;\n }\n }\n return results;\n}\n\nexport { getYearsData };\n//# sourceMappingURL=get-years-data.mjs.map\n","'use client';\nvar classes = {\"yearsList\":\"m_9206547b\",\"yearsListCell\":\"m_c5a19c7d\"};\n\nexport { classes as default };\n//# sourceMappingURL=YearsList.module.css.mjs.map\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport dayjs from 'dayjs';\nimport { factory, useProps, useStyles, Box } from '@mantine/core';\nimport '../DatesProvider/DatesProvider.mjs';\nimport { useDatesContext } from '../DatesProvider/use-dates-context.mjs';\nimport { PickerControl } from '../PickerControl/PickerControl.mjs';\nimport { getYearInTabOrder } from './get-year-in-tab-order/get-year-in-tab-order.mjs';\nimport { getYearsData } from './get-years-data/get-years-data.mjs';\nimport { isYearDisabled } from './is-year-disabled/is-year-disabled.mjs';\nimport classes from './YearsList.module.css.mjs';\n\nconst defaultProps = {\n yearsListFormat: \"YYYY\",\n withCellSpacing: true\n};\nconst YearsList = factory((_props, ref) => {\n const props = useProps(\"YearsList\", defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n decade,\n yearsListFormat,\n locale,\n minDate,\n maxDate,\n getYearControlProps,\n __staticSelector,\n __getControlRef,\n __onControlKeyDown,\n __onControlClick,\n __onControlMouseEnter,\n __preventFocus,\n __stopPropagation,\n withCellSpacing,\n size,\n ...others\n } = props;\n const getStyles = useStyles({\n name: __staticSelector || \"YearsList\",\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n rootSelector: \"yearsList\"\n });\n const ctx = useDatesContext();\n const years = getYearsData(decade);\n const yearInTabOrder = getYearInTabOrder(years, minDate, maxDate, getYearControlProps);\n const rows = years.map((yearsRow, rowIndex) => {\n const cells = yearsRow.map((year, cellIndex) => {\n const controlProps = getYearControlProps?.(year);\n const isYearInTabOrder = dayjs(year).isSame(yearInTabOrder, \"year\");\n return /* @__PURE__ */ jsx(\n \"td\",\n {\n ...getStyles(\"yearsListCell\"),\n \"data-with-spacing\": withCellSpacing || void 0,\n children: /* @__PURE__ */ jsx(\n PickerControl,\n {\n ...getStyles(\"yearsListControl\"),\n size,\n unstyled,\n \"data-mantine-stop-propagation\": __stopPropagation || void 0,\n disabled: isYearDisabled(year, minDate, maxDate),\n ref: (node) => __getControlRef?.(rowIndex, cellIndex, node),\n ...controlProps,\n onKeyDown: (event) => {\n controlProps?.onKeyDown?.(event);\n __onControlKeyDown?.(event, { rowIndex, cellIndex, date: year });\n },\n onClick: (event) => {\n controlProps?.onClick?.(event);\n __onControlClick?.(event, year);\n },\n onMouseEnter: (event) => {\n controlProps?.onMouseEnter?.(event);\n __onControlMouseEnter?.(event, year);\n },\n onMouseDown: (event) => {\n controlProps?.onMouseDown?.(event);\n __preventFocus && event.preventDefault();\n },\n tabIndex: __preventFocus || !isYearInTabOrder ? -1 : 0,\n children: dayjs(year).locale(ctx.getLocale(locale)).format(yearsListFormat)\n }\n )\n },\n cellIndex\n );\n });\n return /* @__PURE__ */ jsx(\"tr\", { ...getStyles(\"yearsListRow\"), children: cells }, rowIndex);\n });\n return /* @__PURE__ */ jsx(Box, { component: \"table\", ref, size, ...getStyles(\"yearsList\"), ...others, children: /* @__PURE__ */ jsx(\"tbody\", { children: rows }) });\n});\nYearsList.classes = classes;\nYearsList.displayName = \"@mantine/dates/YearsList\";\n\nexport { YearsList };\n//# sourceMappingURL=YearsList.mjs.map\n","'use client';\nimport dayjs from 'dayjs';\n\nfunction isMonthDisabled(month, minDate, maxDate) {\n if (!minDate && !maxDate) {\n return false;\n }\n if (minDate && dayjs(month).isBefore(minDate, \"month\")) {\n return true;\n }\n if (maxDate && dayjs(month).isAfter(maxDate, \"month\")) {\n return true;\n }\n return false;\n}\n\nexport { isMonthDisabled };\n//# sourceMappingURL=is-month-disabled.mjs.map\n","'use client';\nimport dayjs from 'dayjs';\nimport { isMonthDisabled } from '../is-month-disabled/is-month-disabled.mjs';\n\nfunction getMonthInTabOrder(months, minDate, maxDate, getMonthControlProps) {\n const enabledMonths = months.flat().filter(\n (month) => !isMonthDisabled(month, minDate, maxDate) && !getMonthControlProps?.(month)?.disabled\n );\n const selectedMonth = enabledMonths.find((month) => getMonthControlProps?.(month)?.selected);\n if (selectedMonth) {\n return selectedMonth;\n }\n const currentMonth = enabledMonths.find((month) => dayjs().isSame(month, \"month\"));\n if (currentMonth) {\n return currentMonth;\n }\n return enabledMonths[0];\n}\n\nexport { getMonthInTabOrder };\n//# sourceMappingURL=get-month-in-tab-order.mjs.map\n","'use client';\nimport dayjs from 'dayjs';\n\nfunction getMonthsData(year) {\n const startOfYear = dayjs(year).startOf(\"year\").toDate();\n const results = [[], [], [], []];\n let currentMonthIndex = 0;\n for (let i = 0; i < 4; i += 1) {\n for (let j = 0; j < 3; j += 1) {\n results[i].push(dayjs(startOfYear).add(currentMonthIndex, \"months\").toDate());\n currentMonthIndex += 1;\n }\n }\n return results;\n}\n\nexport { getMonthsData };\n//# sourceMappingURL=get-months-data.mjs.map\n","'use client';\nvar classes = {\"monthsList\":\"m_2a6c32d\",\"monthsListCell\":\"m_fe27622f\"};\n\nexport { classes as default };\n//# sourceMappingURL=MonthsList.module.css.mjs.map\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport dayjs from 'dayjs';\nimport { factory, useProps, useStyles, Box } from '@mantine/core';\nimport '../DatesProvider/DatesProvider.mjs';\nimport { useDatesContext } from '../DatesProvider/use-dates-context.mjs';\nimport { PickerControl } from '../PickerControl/PickerControl.mjs';\nimport { getMonthInTabOrder } from './get-month-in-tab-order/get-month-in-tab-order.mjs';\nimport { getMonthsData } from './get-months-data/get-months-data.mjs';\nimport { isMonthDisabled } from './is-month-disabled/is-month-disabled.mjs';\nimport classes from './MonthsList.module.css.mjs';\n\nconst defaultProps = {\n monthsListFormat: \"MMM\",\n withCellSpacing: true\n};\nconst MonthsList = factory((_props, ref) => {\n const props = useProps(\"MonthsList\", defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n __staticSelector,\n year,\n monthsListFormat,\n locale,\n minDate,\n maxDate,\n getMonthControlProps,\n __getControlRef,\n __onControlKeyDown,\n __onControlClick,\n __onControlMouseEnter,\n __preventFocus,\n __stopPropagation,\n withCellSpacing,\n size,\n ...others\n } = props;\n const getStyles = useStyles({\n name: __staticSelector || \"MonthsList\",\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n rootSelector: \"monthsList\"\n });\n const ctx = useDatesContext();\n const months = getMonthsData(year);\n const monthInTabOrder = getMonthInTabOrder(months, minDate, maxDate, getMonthControlProps);\n const rows = months.map((monthsRow, rowIndex) => {\n const cells = monthsRow.map((month, cellIndex) => {\n const controlProps = getMonthControlProps?.(month);\n const isMonthInTabOrder = dayjs(month).isSame(monthInTabOrder, \"month\");\n return /* @__PURE__ */ jsx(\n \"td\",\n {\n ...getStyles(\"monthsListCell\"),\n \"data-with-spacing\": withCellSpacing || void 0,\n children: /* @__PURE__ */ jsx(\n PickerControl,\n {\n ...getStyles(\"monthsListControl\"),\n size,\n unstyled,\n __staticSelector: __staticSelector || \"MonthsList\",\n \"data-mantine-stop-propagation\": __stopPropagation || void 0,\n disabled: isMonthDisabled(month, minDate, maxDate),\n ref: (node) => __getControlRef?.(rowIndex, cellIndex, node),\n ...controlProps,\n onKeyDown: (event) => {\n controlProps?.onKeyDown?.(event);\n __onControlKeyDown?.(event, { rowIndex, cellIndex, date: month });\n },\n onClick: (event) => {\n controlProps?.onClick?.(event);\n __onControlClick?.(event, month);\n },\n onMouseEnter: (event) => {\n controlProps?.onMouseEnter?.(event);\n __onControlMouseEnter?.(event, month);\n },\n onMouseDown: (event) => {\n controlProps?.onMouseDown?.(event);\n __preventFocus && event.preventDefault();\n },\n tabIndex: __preventFocus || !isMonthInTabOrder ? -1 : 0,\n children: dayjs(month).locale(ctx.getLocale(locale)).format(monthsListFormat)\n }\n )\n },\n cellIndex\n );\n });\n return /* @__PURE__ */ jsx(\"tr\", { ...getStyles(\"monthsListRow\"), children: cells }, rowIndex);\n });\n return /* @__PURE__ */ jsx(Box, { component: \"table\", ref, size, ...getStyles(\"monthsList\"), ...others, children: /* @__PURE__ */ jsx(\"tbody\", { children: rows }) });\n});\nMonthsList.classes = classes;\nMonthsList.displayName = \"@mantine/dates/MonthsList\";\n\nexport { MonthsList };\n//# sourceMappingURL=MonthsList.mjs.map\n","'use client';\nvar classes = {\"calendarHeader\":\"m_730a79ed\",\"calendarHeaderLevel\":\"m_f6645d97\",\"calendarHeaderControl\":\"m_2351eeb0\",\"calendarHeaderControlIcon\":\"m_367dc749\"};\n\nexport { classes as default };\n//# sourceMappingURL=CalendarHeader.module.css.mjs.map\n","'use client';\nimport { jsxs, jsx } from 'react/jsx-runtime';\nimport { createVarsResolver, getSize, getFontSize, factory, useProps, useStyles, Box, UnstyledButton, AccordionChevron } from '@mantine/core';\nimport classes from './CalendarHeader.module.css.mjs';\n\nconst defaultProps = {\n nextDisabled: false,\n previousDisabled: false,\n hasNextLevel: true,\n withNext: true,\n withPrevious: true\n};\nconst varsResolver = createVarsResolver((_, { size }) => ({\n calendarHeader: {\n \"--dch-control-size\": getSize(size, \"dch-control-size\"),\n \"--dch-fz\": getFontSize(size)\n }\n}));\nconst CalendarHeader = factory((_props, ref) => {\n const props = useProps(\"CalendarHeader\", defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n nextIcon,\n previousIcon,\n nextLabel,\n previousLabel,\n onNext,\n onPrevious,\n onLevelClick,\n label,\n nextDisabled,\n previousDisabled,\n hasNextLevel,\n levelControlAriaLabel,\n withNext,\n withPrevious,\n __staticSelector,\n __preventFocus,\n __stopPropagation,\n ...others\n } = props;\n const getStyles = useStyles({\n name: __staticSelector || \"CalendarHeader\",\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n varsResolver,\n rootSelector: \"calendarHeader\"\n });\n const preventFocus = __preventFocus ? (event) => event.preventDefault() : void 0;\n return /* @__PURE__ */ jsxs(Box, { ...getStyles(\"calendarHeader\"), ref, ...others, children: [\n withPrevious && /* @__PURE__ */ jsx(\n UnstyledButton,\n {\n ...getStyles(\"calendarHeaderControl\"),\n \"data-direction\": \"previous\",\n \"aria-label\": previousLabel,\n onClick: onPrevious,\n unstyled,\n onMouseDown: preventFocus,\n disabled: previousDisabled,\n \"data-disabled\": previousDisabled || void 0,\n tabIndex: __preventFocus || previousDisabled ? -1 : 0,\n \"data-mantine-stop-propagation\": __stopPropagation || void 0,\n children: previousIcon || /* @__PURE__ */ jsx(\n AccordionChevron,\n {\n ...getStyles(\"calendarHeaderControlIcon\"),\n \"data-direction\": \"previous\",\n size: \"45%\"\n }\n )\n }\n ),\n /* @__PURE__ */ jsx(\n UnstyledButton,\n {\n component: hasNextLevel ? \"button\" : \"div\",\n ...getStyles(\"calendarHeaderLevel\"),\n onClick: hasNextLevel ? onLevelClick : void 0,\n unstyled,\n onMouseDown: hasNextLevel ? preventFocus : void 0,\n disabled: !hasNextLevel,\n \"data-static\": !hasNextLevel || void 0,\n \"aria-label\": levelControlAriaLabel,\n tabIndex: __preventFocus || !hasNextLevel ? -1 : 0,\n \"data-mantine-stop-propagation\": __stopPropagation || void 0,\n children: label\n }\n ),\n withNext && /* @__PURE__ */ jsx(\n UnstyledButton,\n {\n ...getStyles(\"calendarHeaderControl\"),\n \"data-direction\": \"next\",\n \"aria-label\": nextLabel,\n onClick: onNext,\n unstyled,\n onMouseDown: preventFocus,\n disabled: nextDisabled,\n \"data-disabled\": nextDisabled || void 0,\n tabIndex: __preventFocus || nextDisabled ? -1 : 0,\n \"data-mantine-stop-propagation\": __stopPropagation || void 0,\n children: nextIcon || /* @__PURE__ */ jsx(\n AccordionChevron,\n {\n ...getStyles(\"calendarHeaderControlIcon\"),\n \"data-direction\": \"next\",\n size: \"45%\"\n }\n )\n }\n )\n ] });\n});\nCalendarHeader.classes = classes;\nCalendarHeader.displayName = \"@mantine/dates/CalendarHeader\";\n\nexport { CalendarHeader };\n//# sourceMappingURL=CalendarHeader.mjs.map\n","'use client';\nimport { getYearsData } from '../../YearsList/get-years-data/get-years-data.mjs';\n\nfunction getDecadeRange(decade) {\n const years = getYearsData(decade);\n return [years[0][0], years[3][0]];\n}\n\nexport { getDecadeRange };\n//# sourceMappingURL=get-decade-range.mjs.map\n","'use client';\nimport { jsxs, jsx } from 'react/jsx-runtime';\nimport dayjs from 'dayjs';\nimport { factory, useProps, Box } from '@mantine/core';\nimport { CalendarHeader } from '../CalendarHeader/CalendarHeader.mjs';\nimport '../DatesProvider/DatesProvider.mjs';\nimport { useDatesContext } from '../DatesProvider/use-dates-context.mjs';\nimport { YearsList } from '../YearsList/YearsList.mjs';\nimport { getDecadeRange } from './get-decade-range/get-decade-range.mjs';\n\nconst defaultProps = {\n decadeLabelFormat: \"YYYY\"\n};\nconst DecadeLevel = factory((_props, ref) => {\n const props = useProps(\"DecadeLevel\", defaultProps, _props);\n const {\n // YearsList settings\n decade,\n locale,\n minDate,\n maxDate,\n yearsListFormat,\n getYearControlProps,\n __getControlRef,\n __onControlKeyDown,\n __onControlClick,\n __onControlMouseEnter,\n withCellSpacing,\n // CalendarHeader settings\n __preventFocus,\n nextIcon,\n previousIcon,\n nextLabel,\n previousLabel,\n onNext,\n onPrevious,\n nextDisabled,\n previousDisabled,\n levelControlAriaLabel,\n withNext,\n withPrevious,\n // Other props\n decadeLabelFormat,\n classNames,\n styles,\n unstyled,\n __staticSelector,\n __stopPropagation,\n size,\n ...others\n } = props;\n const ctx = useDatesContext();\n const [startOfDecade, endOfDecade] = getDecadeRange(decade);\n const stylesApiProps = {\n __staticSelector: __staticSelector || \"DecadeLevel\",\n classNames,\n styles,\n unstyled,\n size\n };\n const _nextDisabled = typeof nextDisabled === \"boolean\" ? nextDisabled : maxDate ? !dayjs(endOfDecade).endOf(\"year\").isBefore(maxDate) : false;\n const _previousDisabled = typeof previousDisabled === \"boolean\" ? previousDisabled : minDate ? !dayjs(startOfDecade).startOf(\"year\").isAfter(minDate) : false;\n const formatDecade = (date, format) => dayjs(date).locale(locale || ctx.locale).format(format);\n return /* @__PURE__ */ jsxs(Box, { \"data-decade-level\": true, size, ref, ...others, children: [\n /* @__PURE__ */ jsx(\n CalendarHeader,\n {\n label: typeof decadeLabelFormat === \"function\" ? decadeLabelFormat(startOfDecade, endOfDecade) : `${formatDecade(startOfDecade, decadeLabelFormat)} \\u2013 ${formatDecade(\n endOfDecade,\n decadeLabelFormat\n )}`,\n __preventFocus,\n __stopPropagation,\n nextIcon,\n previousIcon,\n nextLabel,\n previousLabel,\n onNext,\n onPrevious,\n nextDisabled: _nextDisabled,\n previousDisabled: _previousDisabled,\n hasNextLevel: false,\n levelControlAriaLabel,\n withNext,\n withPrevious,\n ...stylesApiProps\n }\n ),\n /* @__PURE__ */ jsx(\n YearsList,\n {\n decade,\n locale,\n minDate,\n maxDate,\n yearsListFormat,\n getYearControlProps,\n __getControlRef,\n __onControlKeyDown,\n __onControlClick,\n __onControlMouseEnter,\n __preventFocus,\n __stopPropagation,\n withCellSpacing,\n ...stylesApiProps\n }\n )\n ] });\n});\nDecadeLevel.classes = { ...YearsList.classes, ...CalendarHeader.classes };\nDecadeLevel.displayName = \"@mantine/dates/DecadeLevel\";\n\nexport { DecadeLevel };\n//# sourceMappingURL=DecadeLevel.mjs.map\n","'use client';\nimport { jsxs, jsx } from 'react/jsx-runtime';\nimport dayjs from 'dayjs';\nimport { factory, useProps, Box } from '@mantine/core';\nimport { CalendarHeader } from '../CalendarHeader/CalendarHeader.mjs';\nimport '../DatesProvider/DatesProvider.mjs';\nimport { useDatesContext } from '../DatesProvider/use-dates-context.mjs';\nimport { MonthsList } from '../MonthsList/MonthsList.mjs';\n\nconst defaultProps = {\n yearLabelFormat: \"YYYY\"\n};\nconst YearLevel = factory((_props, ref) => {\n const props = useProps(\"YearLevel\", defaultProps, _props);\n const {\n // MonthsList settings\n year,\n locale,\n minDate,\n maxDate,\n monthsListFormat,\n getMonthControlProps,\n __getControlRef,\n __onControlKeyDown,\n __onControlClick,\n __onControlMouseEnter,\n withCellSpacing,\n // CalendarHeader settings\n __preventFocus,\n nextIcon,\n previousIcon,\n nextLabel,\n previousLabel,\n onNext,\n onPrevious,\n onLevelClick,\n nextDisabled,\n previousDisabled,\n hasNextLevel,\n levelControlAriaLabel,\n withNext,\n withPrevious,\n // Other props\n yearLabelFormat,\n __staticSelector,\n __stopPropagation,\n size,\n classNames,\n styles,\n unstyled,\n ...others\n } = props;\n const ctx = useDatesContext();\n const stylesApiProps = {\n __staticSelector: __staticSelector || \"YearLevel\",\n classNames,\n styles,\n unstyled,\n size\n };\n const _nextDisabled = typeof nextDisabled === \"boolean\" ? nextDisabled : maxDate ? !dayjs(year).endOf(\"year\").isBefore(maxDate) : false;\n const _previousDisabled = typeof previousDisabled === \"boolean\" ? previousDisabled : minDate ? !dayjs(year).startOf(\"year\").isAfter(minDate) : false;\n return /* @__PURE__ */ jsxs(Box, { \"data-year-level\": true, size, ref, ...others, children: [\n /* @__PURE__ */ jsx(\n CalendarHeader,\n {\n label: typeof yearLabelFormat === \"function\" ? yearLabelFormat(year) : dayjs(year).locale(locale || ctx.locale).format(yearLabelFormat),\n __preventFocus,\n __stopPropagation,\n nextIcon,\n previousIcon,\n nextLabel,\n previousLabel,\n onNext,\n onPrevious,\n onLevelClick,\n nextDisabled: _nextDisabled,\n previousDisabled: _previousDisabled,\n hasNextLevel,\n levelControlAriaLabel,\n withNext,\n withPrevious,\n ...stylesApiProps\n }\n ),\n /* @__PURE__ */ jsx(\n MonthsList,\n {\n year,\n locale,\n minDate,\n maxDate,\n monthsListFormat,\n getMonthControlProps,\n __getControlRef,\n __onControlKeyDown,\n __onControlClick,\n __onControlMouseEnter,\n __preventFocus,\n __stopPropagation,\n withCellSpacing,\n ...stylesApiProps\n }\n )\n ] });\n});\nYearLevel.classes = { ...CalendarHeader.classes, ...MonthsList.classes };\nYearLevel.displayName = \"@mantine/dates/YearLevel\";\n\nexport { YearLevel };\n//# sourceMappingURL=YearLevel.mjs.map\n","'use client';\nimport { jsxs, jsx } from 'react/jsx-runtime';\nimport dayjs from 'dayjs';\nimport { factory, useProps, Box } from '@mantine/core';\nimport { CalendarHeader } from '../CalendarHeader/CalendarHeader.mjs';\nimport '../DatesProvider/DatesProvider.mjs';\nimport { useDatesContext } from '../DatesProvider/use-dates-context.mjs';\nimport { Month } from '../Month/Month.mjs';\n\nconst defaultProps = {\n monthLabelFormat: \"MMMM YYYY\"\n};\nconst MonthLevel = factory((_props, ref) => {\n const props = useProps(\"MonthLevel\", defaultProps, _props);\n const {\n // Month settings\n month,\n locale,\n firstDayOfWeek,\n weekdayFormat,\n weekendDays,\n getDayProps,\n excludeDate,\n minDate,\n maxDate,\n renderDay,\n hideOutsideDates,\n hideWeekdays,\n getDayAriaLabel,\n __getDayRef,\n __onDayKeyDown,\n __onDayClick,\n __onDayMouseEnter,\n withCellSpacing,\n highlightToday,\n // CalendarHeader settings\n __preventFocus,\n __stopPropagation,\n nextIcon,\n previousIcon,\n nextLabel,\n previousLabel,\n onNext,\n onPrevious,\n onLevelClick,\n nextDisabled,\n previousDisabled,\n hasNextLevel,\n levelControlAriaLabel,\n withNext,\n withPrevious,\n // Other props\n monthLabelFormat,\n classNames,\n styles,\n unstyled,\n __staticSelector,\n size,\n static: isStatic,\n ...others\n } = props;\n const ctx = useDatesContext();\n const stylesApiProps = {\n __staticSelector: __staticSelector || \"MonthLevel\",\n classNames,\n styles,\n unstyled,\n size\n };\n const _nextDisabled = typeof nextDisabled === \"boolean\" ? nextDisabled : maxDate ? !dayjs(month).endOf(\"month\").isBefore(maxDate) : false;\n const _previousDisabled = typeof previousDisabled === \"boolean\" ? previousDisabled : minDate ? !dayjs(month).startOf(\"month\").isAfter(minDate) : false;\n return /* @__PURE__ */ jsxs(Box, { \"data-month-level\": true, size, ref, ...others, children: [\n /* @__PURE__ */ jsx(\n CalendarHeader,\n {\n label: typeof monthLabelFormat === \"function\" ? monthLabelFormat(month) : dayjs(month).locale(locale || ctx.locale).format(monthLabelFormat),\n __preventFocus,\n __stopPropagation,\n nextIcon,\n previousIcon,\n nextLabel,\n previousLabel,\n onNext,\n onPrevious,\n onLevelClick,\n nextDisabled: _nextDisabled,\n previousDisabled: _previousDisabled,\n hasNextLevel,\n levelControlAriaLabel,\n withNext,\n withPrevious,\n ...stylesApiProps\n }\n ),\n /* @__PURE__ */ jsx(\n Month,\n {\n month,\n locale,\n firstDayOfWeek,\n weekdayFormat,\n weekendDays,\n getDayProps,\n excludeDate,\n minDate,\n maxDate,\n renderDay,\n hideOutsideDates,\n hideWeekdays,\n getDayAriaLabel,\n __getDayRef,\n __onDayKeyDown,\n __onDayClick,\n __onDayMouseEnter,\n __preventFocus,\n __stopPropagation,\n static: isStatic,\n withCellSpacing,\n highlightToday,\n ...stylesApiProps\n }\n )\n ] });\n});\nMonthLevel.classes = { ...Month.classes, ...CalendarHeader.classes };\nMonthLevel.displayName = \"@mantine/dates/MonthLevel\";\n\nexport { MonthLevel };\n//# sourceMappingURL=MonthLevel.mjs.map\n","'use client';\nvar classes = {\"levelsGroup\":\"m_30b26e33\"};\n\nexport { classes as default };\n//# sourceMappingURL=LevelsGroup.module.css.mjs.map\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { factory, useProps, useStyles, Box } from '@mantine/core';\nimport classes from './LevelsGroup.module.css.mjs';\n\nconst defaultProps = {};\nconst LevelsGroup = factory((_props, ref) => {\n const props = useProps(\"LevelsGroup\", defaultProps, _props);\n const { classNames, className, style, styles, unstyled, vars, __staticSelector, ...others } = props;\n const getStyles = useStyles({\n name: __staticSelector || \"LevelsGroup\",\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n rootSelector: \"levelsGroup\"\n });\n return /* @__PURE__ */ jsx(Box, { ref, ...getStyles(\"levelsGroup\"), ...others });\n});\nLevelsGroup.classes = classes;\nLevelsGroup.displayName = \"@mantine/dates/LevelsGroup\";\n\nexport { LevelsGroup };\n//# sourceMappingURL=LevelsGroup.mjs.map\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport dayjs from 'dayjs';\nimport { useRef } from 'react';\nimport { factory, useProps } from '@mantine/core';\nimport { handleControlKeyDown } from '../../utils/handle-control-key-down.mjs';\nimport '../../utils/get-timezone-offset.mjs';\nimport { DecadeLevel } from '../DecadeLevel/DecadeLevel.mjs';\nimport { LevelsGroup } from '../LevelsGroup/LevelsGroup.mjs';\n\nconst defaultProps = {\n numberOfColumns: 1\n};\nconst DecadeLevelGroup = factory((_props, ref) => {\n const props = useProps(\"DecadeLevelGroup\", defaultProps, _props);\n const {\n // DecadeLevel settings\n decade,\n locale,\n minDate,\n maxDate,\n yearsListFormat,\n getYearControlProps,\n __onControlClick,\n __onControlMouseEnter,\n withCellSpacing,\n // CalendarHeader settings\n __preventFocus,\n nextIcon,\n previousIcon,\n nextLabel,\n previousLabel,\n onNext,\n onPrevious,\n nextDisabled,\n previousDisabled,\n // Other settings\n classNames,\n styles,\n unstyled,\n __staticSelector,\n __stopPropagation,\n numberOfColumns,\n levelControlAriaLabel,\n decadeLabelFormat,\n size,\n vars,\n ...others\n } = props;\n const controlsRef = useRef([]);\n const decades = Array(numberOfColumns).fill(0).map((_, decadeIndex) => {\n const currentDecade = dayjs(decade).add(decadeIndex * 10, \"years\").toDate();\n return /* @__PURE__ */ jsx(\n DecadeLevel,\n {\n size,\n yearsListFormat,\n decade: currentDecade,\n withNext: decadeIndex === numberOfColumns - 1,\n withPrevious: decadeIndex === 0,\n decadeLabelFormat,\n __onControlClick,\n __onControlMouseEnter,\n __onControlKeyDown: (event, payload) => handleControlKeyDown({\n levelIndex: decadeIndex,\n rowIndex: payload.rowIndex,\n cellIndex: payload.cellIndex,\n event,\n controlsRef\n }),\n __getControlRef: (rowIndex, cellIndex, node) => {\n if (!Array.isArray(controlsRef.current[decadeIndex])) {\n controlsRef.current[decadeIndex] = [];\n }\n if (!Array.isArray(controlsRef.current[decadeIndex][rowIndex])) {\n controlsRef.current[decadeIndex][rowIndex] = [];\n }\n controlsRef.current[decadeIndex][rowIndex][cellIndex] = node;\n },\n levelControlAriaLabel: typeof levelControlAriaLabel === \"function\" ? levelControlAriaLabel(currentDecade) : levelControlAriaLabel,\n locale,\n minDate,\n maxDate,\n __preventFocus,\n __stopPropagation,\n nextIcon,\n previousIcon,\n nextLabel,\n previousLabel,\n onNext,\n onPrevious,\n nextDisabled,\n previousDisabled,\n getYearControlProps,\n __staticSelector: __staticSelector || \"DecadeLevelGroup\",\n classNames,\n styles,\n unstyled,\n withCellSpacing\n },\n decadeIndex\n );\n });\n return /* @__PURE__ */ jsx(\n LevelsGroup,\n {\n classNames,\n styles,\n __staticSelector: __staticSelector || \"DecadeLevelGroup\",\n ref,\n size,\n unstyled,\n ...others,\n children: decades\n }\n );\n});\nDecadeLevelGroup.classes = { ...LevelsGroup.classes, ...DecadeLevel.classes };\nDecadeLevelGroup.displayName = \"@mantine/dates/DecadeLevelGroup\";\n\nexport { DecadeLevelGroup };\n//# sourceMappingURL=DecadeLevelGroup.mjs.map\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport dayjs from 'dayjs';\nimport { useRef } from 'react';\nimport { factory, useProps } from '@mantine/core';\nimport { handleControlKeyDown } from '../../utils/handle-control-key-down.mjs';\nimport '../../utils/get-timezone-offset.mjs';\nimport { LevelsGroup } from '../LevelsGroup/LevelsGroup.mjs';\nimport { YearLevel } from '../YearLevel/YearLevel.mjs';\n\nconst defaultProps = {\n numberOfColumns: 1\n};\nconst YearLevelGroup = factory((_props, ref) => {\n const props = useProps(\"YearLevelGroup\", defaultProps, _props);\n const {\n // YearLevel settings\n year,\n locale,\n minDate,\n maxDate,\n monthsListFormat,\n getMonthControlProps,\n __onControlClick,\n __onControlMouseEnter,\n withCellSpacing,\n // CalendarHeader settings\n __preventFocus,\n nextIcon,\n previousIcon,\n nextLabel,\n previousLabel,\n onNext,\n onPrevious,\n onLevelClick,\n nextDisabled,\n previousDisabled,\n hasNextLevel,\n // Other settings\n classNames,\n styles,\n unstyled,\n __staticSelector,\n __stopPropagation,\n numberOfColumns,\n levelControlAriaLabel,\n yearLabelFormat,\n size,\n vars,\n ...others\n } = props;\n const controlsRef = useRef([]);\n const years = Array(numberOfColumns).fill(0).map((_, yearIndex) => {\n const currentYear = dayjs(year).add(yearIndex, \"years\").toDate();\n return /* @__PURE__ */ jsx(\n YearLevel,\n {\n size,\n monthsListFormat,\n year: currentYear,\n withNext: yearIndex === numberOfColumns - 1,\n withPrevious: yearIndex === 0,\n yearLabelFormat,\n __stopPropagation,\n __onControlClick,\n __onControlMouseEnter,\n __onControlKeyDown: (event, payload) => handleControlKeyDown({\n levelIndex: yearIndex,\n rowIndex: payload.rowIndex,\n cellIndex: payload.cellIndex,\n event,\n controlsRef\n }),\n __getControlRef: (rowIndex, cellIndex, node) => {\n if (!Array.isArray(controlsRef.current[yearIndex])) {\n controlsRef.current[yearIndex] = [];\n }\n if (!Array.isArray(controlsRef.current[yearIndex][rowIndex])) {\n controlsRef.current[yearIndex][rowIndex] = [];\n }\n controlsRef.current[yearIndex][rowIndex][cellIndex] = node;\n },\n levelControlAriaLabel: typeof levelControlAriaLabel === \"function\" ? levelControlAriaLabel(currentYear) : levelControlAriaLabel,\n locale,\n minDate,\n maxDate,\n __preventFocus,\n nextIcon,\n previousIcon,\n nextLabel,\n previousLabel,\n onNext,\n onPrevious,\n onLevelClick,\n nextDisabled,\n previousDisabled,\n hasNextLevel,\n getMonthControlProps,\n classNames,\n styles,\n unstyled,\n __staticSelector: __staticSelector || \"YearLevelGroup\",\n withCellSpacing\n },\n yearIndex\n );\n });\n return /* @__PURE__ */ jsx(\n LevelsGroup,\n {\n classNames,\n styles,\n __staticSelector: __staticSelector || \"YearLevelGroup\",\n ref,\n size,\n unstyled,\n ...others,\n children: years\n }\n );\n});\nYearLevelGroup.classes = { ...YearLevel.classes, ...LevelsGroup.classes };\nYearLevelGroup.displayName = \"@mantine/dates/YearLevelGroup\";\n\nexport { YearLevelGroup };\n//# sourceMappingURL=YearLevelGroup.mjs.map\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport dayjs from 'dayjs';\nimport { useRef } from 'react';\nimport { factory, useProps } from '@mantine/core';\nimport { handleControlKeyDown } from '../../utils/handle-control-key-down.mjs';\nimport '../../utils/get-timezone-offset.mjs';\nimport { LevelsGroup } from '../LevelsGroup/LevelsGroup.mjs';\nimport { MonthLevel } from '../MonthLevel/MonthLevel.mjs';\n\nconst defaultProps = {\n numberOfColumns: 1\n};\nconst MonthLevelGroup = factory((_props, ref) => {\n const props = useProps(\"MonthLevelGroup\", defaultProps, _props);\n const {\n // Month settings\n month,\n locale,\n firstDayOfWeek,\n weekdayFormat,\n weekendDays,\n getDayProps,\n excludeDate,\n minDate,\n maxDate,\n renderDay,\n hideOutsideDates,\n hideWeekdays,\n getDayAriaLabel,\n __onDayClick,\n __onDayMouseEnter,\n withCellSpacing,\n highlightToday,\n // CalendarHeader settings\n __preventFocus,\n nextIcon,\n previousIcon,\n nextLabel,\n previousLabel,\n onNext,\n onPrevious,\n onLevelClick,\n nextDisabled,\n previousDisabled,\n hasNextLevel,\n // Other settings\n classNames,\n styles,\n unstyled,\n numberOfColumns,\n levelControlAriaLabel,\n monthLabelFormat,\n __staticSelector,\n __stopPropagation,\n size,\n static: isStatic,\n vars,\n ...others\n } = props;\n const daysRefs = useRef([]);\n const months = Array(numberOfColumns).fill(0).map((_, monthIndex) => {\n const currentMonth = dayjs(month).add(monthIndex, \"months\").toDate();\n return /* @__PURE__ */ jsx(\n MonthLevel,\n {\n month: currentMonth,\n withNext: monthIndex === numberOfColumns - 1,\n withPrevious: monthIndex === 0,\n monthLabelFormat,\n __stopPropagation,\n __onDayClick,\n __onDayMouseEnter,\n __onDayKeyDown: (event, payload) => handleControlKeyDown({\n levelIndex: monthIndex,\n rowIndex: payload.rowIndex,\n cellIndex: payload.cellIndex,\n event,\n controlsRef: daysRefs\n }),\n __getDayRef: (rowIndex, cellIndex, node) => {\n if (!Array.isArray(daysRefs.current[monthIndex])) {\n daysRefs.current[monthIndex] = [];\n }\n if (!Array.isArray(daysRefs.current[monthIndex][rowIndex])) {\n daysRefs.current[monthIndex][rowIndex] = [];\n }\n daysRefs.current[monthIndex][rowIndex][cellIndex] = node;\n },\n levelControlAriaLabel: typeof levelControlAriaLabel === \"function\" ? levelControlAriaLabel(currentMonth) : levelControlAriaLabel,\n locale,\n firstDayOfWeek,\n weekdayFormat,\n weekendDays,\n getDayProps,\n excludeDate,\n minDate,\n maxDate,\n renderDay,\n hideOutsideDates,\n hideWeekdays,\n getDayAriaLabel,\n __preventFocus,\n nextIcon,\n previousIcon,\n nextLabel,\n previousLabel,\n onNext,\n onPrevious,\n onLevelClick,\n nextDisabled,\n previousDisabled,\n hasNextLevel,\n classNames,\n styles,\n unstyled,\n __staticSelector: __staticSelector || \"MonthLevelGroup\",\n size,\n static: isStatic,\n withCellSpacing,\n highlightToday\n },\n monthIndex\n );\n });\n return /* @__PURE__ */ jsx(\n LevelsGroup,\n {\n classNames,\n styles,\n __staticSelector: __staticSelector || \"MonthLevelGroup\",\n ref,\n size,\n ...others,\n children: months\n }\n );\n});\nMonthLevelGroup.classes = { ...LevelsGroup.classes, ...MonthLevel.classes };\nMonthLevelGroup.displayName = \"@mantine/dates/MonthLevelGroup\";\n\nexport { MonthLevelGroup };\n//# sourceMappingURL=MonthLevelGroup.mjs.map\n","'use client';\nvar classes = {\"input\":\"m_6fa5e2aa\"};\n\nexport { classes as default };\n//# sourceMappingURL=PickerInputBase.module.css.mjs.map\n","'use client';\nimport { jsx, jsxs, Fragment } from 'react/jsx-runtime';\nimport cx from 'clsx';\nimport { factory, useInputProps, CloseButton, Modal, Input, Popover } from '@mantine/core';\nimport { HiddenDatesInput } from '../HiddenDatesInput/HiddenDatesInput.mjs';\nimport classes from './PickerInputBase.module.css.mjs';\n\nconst defaultProps = {};\nconst PickerInputBase = factory((_props, ref) => {\n const {\n inputProps,\n wrapperProps,\n placeholder,\n classNames,\n styles,\n unstyled,\n popoverProps,\n modalProps,\n dropdownType,\n children,\n formattedValue,\n dropdownHandlers,\n dropdownOpened,\n onClick,\n clearable,\n onClear,\n clearButtonProps,\n rightSection,\n shouldClear,\n readOnly,\n disabled,\n value,\n name,\n form,\n type,\n ...others\n } = useInputProps(\"PickerInputBase\", defaultProps, _props);\n const _rightSection = rightSection || (clearable && shouldClear && !readOnly && !disabled ? /* @__PURE__ */ jsx(\n CloseButton,\n {\n variant: \"transparent\",\n onClick: onClear,\n unstyled,\n size: inputProps.size || \"sm\",\n ...clearButtonProps\n }\n ) : null);\n const handleClose = () => {\n const isInvalidRangeValue = type === \"range\" && Array.isArray(value) && value[0] && !value[1];\n if (isInvalidRangeValue) {\n onClear();\n }\n dropdownHandlers.close();\n };\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n dropdownType === \"modal\" && !readOnly && /* @__PURE__ */ jsx(\n Modal,\n {\n opened: dropdownOpened,\n onClose: handleClose,\n withCloseButton: false,\n size: \"auto\",\n \"data-dates-modal\": true,\n unstyled,\n ...modalProps,\n children\n }\n ),\n /* @__PURE__ */ jsx(Input.Wrapper, { ...wrapperProps, children: /* @__PURE__ */ jsxs(\n Popover,\n {\n position: \"bottom-start\",\n opened: dropdownOpened,\n trapFocus: true,\n returnFocus: true,\n unstyled,\n ...popoverProps,\n disabled: popoverProps?.disabled || dropdownType === \"modal\" || readOnly,\n onChange: (_opened) => {\n if (!_opened) {\n popoverProps?.onClose?.();\n handleClose();\n }\n },\n children: [\n /* @__PURE__ */ jsx(Popover.Target, { children: /* @__PURE__ */ jsx(\n Input,\n {\n \"data-dates-input\": true,\n \"data-read-only\": readOnly || void 0,\n disabled,\n component: \"button\",\n type: \"button\",\n multiline: true,\n onClick: (event) => {\n onClick?.(event);\n dropdownHandlers.toggle();\n },\n rightSection: _rightSection,\n ...inputProps,\n ref,\n classNames: { ...classNames, input: cx(classes.input, classNames?.input) },\n ...others,\n children: formattedValue || /* @__PURE__ */ jsx(\n Input.Placeholder,\n {\n error: inputProps.error,\n unstyled,\n className: classNames?.placeholder,\n style: styles?.placeholder,\n children: placeholder\n }\n )\n }\n ) }),\n /* @__PURE__ */ jsx(Popover.Dropdown, { \"data-dates-dropdown\": true, children })\n ]\n }\n ) }),\n /* @__PURE__ */ jsx(HiddenDatesInput, { value, name, form, type })\n ] });\n});\nPickerInputBase.classes = classes;\nPickerInputBase.displayName = \"@mantine/dates/PickerInputBase\";\n\nexport { PickerInputBase };\n//# sourceMappingURL=PickerInputBase.mjs.map\n","'use client';\nimport { useRef } from 'react';\nimport { useUncontrolled } from '@mantine/hooks';\nimport '../../components/DatesProvider/DatesProvider.mjs';\nimport { useDatesContext } from '../../components/DatesProvider/use-dates-context.mjs';\nimport 'dayjs';\nimport { shiftTimezone } from '../../utils/shift-timezone.mjs';\n\nconst getEmptyValue = (type) => type === \"range\" ? [null, null] : type === \"multiple\" ? [] : null;\nfunction useUncontrolledDates({\n type,\n value,\n defaultValue,\n onChange,\n applyTimezone = true\n}) {\n const storedType = useRef(type);\n const ctx = useDatesContext();\n const [_value, _setValue, controlled] = useUncontrolled({\n value: shiftTimezone(\"add\", value, ctx.getTimezone(), !applyTimezone),\n defaultValue: shiftTimezone(\"add\", defaultValue, ctx.getTimezone(), !applyTimezone),\n finalValue: getEmptyValue(type),\n onChange: (newDate) => {\n onChange?.(shiftTimezone(\"remove\", newDate, ctx.getTimezone(), !applyTimezone));\n }\n });\n let _finalValue = _value;\n if (storedType.current !== type) {\n storedType.current = type;\n if (value === void 0) {\n _finalValue = defaultValue !== void 0 ? defaultValue : getEmptyValue(type);\n _setValue(_finalValue);\n } else if (process.env.NODE_ENV === \"development\") {\n switch (type) {\n case \"default\":\n if (value !== null && typeof value !== \"string\") {\n console.error(\n \"[@mantine/dates/use-uncontrolled-dates] Value must be type of `null` or `string`\"\n );\n }\n break;\n case \"multiple\":\n if (!(value instanceof Array)) {\n console.error(\n \"[@mantine/dates/use-uncontrolled-dates] Value must be type of `string[]`\"\n );\n }\n break;\n case \"range\":\n if (!(value instanceof Array) || value.length !== 2) {\n console.error(\n \"[@mantine/dates/use-uncontrolled-dates] Value must be type of `[string, string]`\"\n );\n }\n break;\n }\n }\n }\n return [_finalValue, _setValue, controlled];\n}\n\nexport { useUncontrolledDates };\n//# sourceMappingURL=use-uncontrolled-dates.mjs.map\n","'use client';\nimport { clamp } from '@mantine/hooks';\n\nfunction levelToNumber(level, fallback) {\n if (!level) {\n return fallback || 0;\n }\n return level === \"month\" ? 0 : level === \"year\" ? 1 : 2;\n}\nfunction levelNumberToLevel(levelNumber) {\n return levelNumber === 0 ? \"month\" : levelNumber === 1 ? \"year\" : \"decade\";\n}\nfunction clampLevel(level, minLevel, maxLevel) {\n return levelNumberToLevel(\n clamp(\n levelToNumber(level, 0),\n levelToNumber(minLevel, 0),\n levelToNumber(maxLevel, 2)\n )\n );\n}\n\nexport { clampLevel };\n//# sourceMappingURL=clamp-level.mjs.map\n","'use client';\nimport { jsxs, jsx } from 'react/jsx-runtime';\nimport dayjs from 'dayjs';\nimport { factory, useProps, useResolvedStylesApi, Box } from '@mantine/core';\nimport { useUncontrolled } from '@mantine/hooks';\nimport 'react';\nimport { useUncontrolledDates } from '../../hooks/use-uncontrolled-dates/use-uncontrolled-dates.mjs';\nimport '../DatesProvider/DatesProvider.mjs';\nimport { useDatesContext } from '../DatesProvider/use-dates-context.mjs';\nimport { shiftTimezone } from '../../utils/shift-timezone.mjs';\nimport { DecadeLevelGroup } from '../DecadeLevelGroup/DecadeLevelGroup.mjs';\nimport { MonthLevelGroup } from '../MonthLevelGroup/MonthLevelGroup.mjs';\nimport { YearLevelGroup } from '../YearLevelGroup/YearLevelGroup.mjs';\nimport { clampLevel } from './clamp-level/clamp-level.mjs';\n\nconst defaultProps = {\n maxLevel: \"decade\",\n minLevel: \"month\",\n __updateDateOnYearSelect: true,\n __updateDateOnMonthSelect: true\n};\nconst Calendar = factory((_props, ref) => {\n const props = useProps(\"Calendar\", defaultProps, _props);\n const {\n vars,\n // CalendarLevel props\n maxLevel,\n minLevel,\n defaultLevel,\n level,\n onLevelChange,\n date,\n defaultDate,\n onDateChange,\n numberOfColumns,\n columnsToScroll,\n ariaLabels,\n nextLabel,\n previousLabel,\n onYearSelect,\n onMonthSelect,\n onYearMouseEnter,\n onMonthMouseEnter,\n __updateDateOnYearSelect,\n __updateDateOnMonthSelect,\n // MonthLevelGroup props\n firstDayOfWeek,\n weekdayFormat,\n weekendDays,\n getDayProps,\n excludeDate,\n renderDay,\n hideOutsideDates,\n hideWeekdays,\n getDayAriaLabel,\n monthLabelFormat,\n nextIcon,\n previousIcon,\n __onDayClick,\n __onDayMouseEnter,\n withCellSpacing,\n highlightToday,\n // YearLevelGroup props\n monthsListFormat,\n getMonthControlProps,\n yearLabelFormat,\n // DecadeLevelGroup props\n yearsListFormat,\n getYearControlProps,\n decadeLabelFormat,\n // Other props\n classNames,\n styles,\n unstyled,\n minDate,\n maxDate,\n locale,\n __staticSelector,\n size,\n __preventFocus,\n __stopPropagation,\n onNextDecade,\n onPreviousDecade,\n onNextYear,\n onPreviousYear,\n onNextMonth,\n onPreviousMonth,\n static: isStatic,\n __timezoneApplied,\n ...others\n } = props;\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi({\n classNames,\n styles,\n props\n });\n const [_level, setLevel] = useUncontrolled({\n value: level ? clampLevel(level, minLevel, maxLevel) : void 0,\n defaultValue: defaultLevel ? clampLevel(defaultLevel, minLevel, maxLevel) : void 0,\n finalValue: clampLevel(void 0, minLevel, maxLevel),\n onChange: onLevelChange\n });\n const [_date, setDate] = useUncontrolledDates({\n type: \"default\",\n value: date,\n defaultValue: defaultDate,\n onChange: onDateChange,\n applyTimezone: !__timezoneApplied\n });\n const stylesApiProps = {\n __staticSelector: __staticSelector || \"Calendar\",\n styles: resolvedStyles,\n classNames: resolvedClassNames,\n unstyled,\n size\n };\n const ctx = useDatesContext();\n const _columnsToScroll = columnsToScroll || numberOfColumns || 1;\n const now = /* @__PURE__ */ new Date();\n const fallbackDate = minDate && minDate > now ? minDate : now;\n const currentDate = _date || shiftTimezone(\"add\", fallbackDate, ctx.getTimezone());\n const handleNextMonth = () => {\n const nextDate = dayjs(currentDate).add(_columnsToScroll, \"month\").toDate();\n onNextMonth?.(nextDate);\n setDate(nextDate);\n };\n const handlePreviousMonth = () => {\n const nextDate = dayjs(currentDate).subtract(_columnsToScroll, \"month\").toDate();\n onPreviousMonth?.(nextDate);\n setDate(nextDate);\n };\n const handleNextYear = () => {\n const nextDate = dayjs(currentDate).add(_columnsToScroll, \"year\").toDate();\n onNextYear?.(nextDate);\n setDate(nextDate);\n };\n const handlePreviousYear = () => {\n const nextDate = dayjs(currentDate).subtract(_columnsToScroll, \"year\").toDate();\n onPreviousYear?.(nextDate);\n setDate(nextDate);\n };\n const handleNextDecade = () => {\n const nextDate = dayjs(currentDate).add(10 * _columnsToScroll, \"year\").toDate();\n onNextDecade?.(nextDate);\n setDate(nextDate);\n };\n const handlePreviousDecade = () => {\n const nextDate = dayjs(currentDate).subtract(10 * _columnsToScroll, \"year\").toDate();\n onPreviousDecade?.(nextDate);\n setDate(nextDate);\n };\n return /* @__PURE__ */ jsxs(Box, { ref, size, \"data-calendar\": true, ...others, children: [\n _level === \"month\" && /* @__PURE__ */ jsx(\n MonthLevelGroup,\n {\n month: currentDate,\n minDate,\n maxDate,\n firstDayOfWeek,\n weekdayFormat,\n weekendDays,\n getDayProps,\n excludeDate,\n renderDay,\n hideOutsideDates,\n hideWeekdays,\n getDayAriaLabel,\n onNext: handleNextMonth,\n onPrevious: handlePreviousMonth,\n hasNextLevel: maxLevel !== \"month\",\n onLevelClick: () => setLevel(\"year\"),\n numberOfColumns,\n locale,\n levelControlAriaLabel: ariaLabels?.monthLevelControl,\n nextLabel: ariaLabels?.nextMonth ?? nextLabel,\n nextIcon,\n previousLabel: ariaLabels?.previousMonth ?? previousLabel,\n previousIcon,\n monthLabelFormat,\n __onDayClick,\n __onDayMouseEnter,\n __preventFocus,\n __stopPropagation,\n static: isStatic,\n withCellSpacing,\n highlightToday,\n ...stylesApiProps\n }\n ),\n _level === \"year\" && /* @__PURE__ */ jsx(\n YearLevelGroup,\n {\n year: currentDate,\n numberOfColumns,\n minDate,\n maxDate,\n monthsListFormat,\n getMonthControlProps,\n locale,\n onNext: handleNextYear,\n onPrevious: handlePreviousYear,\n hasNextLevel: maxLevel !== \"month\" && maxLevel !== \"year\",\n onLevelClick: () => setLevel(\"decade\"),\n levelControlAriaLabel: ariaLabels?.yearLevelControl,\n nextLabel: ariaLabels?.nextYear ?? nextLabel,\n nextIcon,\n previousLabel: ariaLabels?.previousYear ?? previousLabel,\n previousIcon,\n yearLabelFormat,\n __onControlMouseEnter: onMonthMouseEnter,\n __onControlClick: (_event, payload) => {\n __updateDateOnMonthSelect && setDate(payload);\n setLevel(clampLevel(\"month\", minLevel, maxLevel));\n onMonthSelect?.(payload);\n },\n __preventFocus,\n __stopPropagation,\n withCellSpacing,\n ...stylesApiProps\n }\n ),\n _level === \"decade\" && /* @__PURE__ */ jsx(\n DecadeLevelGroup,\n {\n decade: currentDate,\n minDate,\n maxDate,\n yearsListFormat,\n getYearControlProps,\n locale,\n onNext: handleNextDecade,\n onPrevious: handlePreviousDecade,\n numberOfColumns,\n nextLabel: ariaLabels?.nextDecade ?? nextLabel,\n nextIcon,\n previousLabel: ariaLabels?.previousDecade ?? previousLabel,\n previousIcon,\n decadeLabelFormat,\n __onControlMouseEnter: onYearMouseEnter,\n __onControlClick: (_event, payload) => {\n __updateDateOnYearSelect && setDate(payload);\n setLevel(clampLevel(\"year\", minLevel, maxLevel));\n onYearSelect?.(payload);\n },\n __preventFocus,\n __stopPropagation,\n withCellSpacing,\n ...stylesApiProps\n }\n )\n ] });\n});\nCalendar.classes = {\n ...DecadeLevelGroup.classes,\n ...YearLevelGroup.classes,\n ...MonthLevelGroup.classes\n};\nCalendar.displayName = \"@mantine/dates/Calendar\";\n\nexport { Calendar };\n//# sourceMappingURL=Calendar.mjs.map\n","'use client';\nfunction pickCalendarProps(props) {\n const {\n maxLevel,\n minLevel,\n defaultLevel,\n level,\n onLevelChange,\n nextIcon,\n previousIcon,\n date,\n defaultDate,\n onDateChange,\n numberOfColumns,\n columnsToScroll,\n ariaLabels,\n nextLabel,\n previousLabel,\n onYearSelect,\n onMonthSelect,\n onYearMouseEnter,\n onMonthMouseEnter,\n onNextMonth,\n onPreviousMonth,\n onNextYear,\n onPreviousYear,\n onNextDecade,\n onPreviousDecade,\n withCellSpacing,\n highlightToday,\n __updateDateOnYearSelect,\n __updateDateOnMonthSelect,\n // MonthLevelGroup props\n firstDayOfWeek,\n weekdayFormat,\n weekendDays,\n getDayProps,\n excludeDate,\n renderDay,\n hideOutsideDates,\n hideWeekdays,\n getDayAriaLabel,\n monthLabelFormat,\n // YearLevelGroup props\n monthsListFormat,\n getMonthControlProps,\n yearLabelFormat,\n // DecadeLevelGroup props\n yearsListFormat,\n getYearControlProps,\n decadeLabelFormat,\n // External picker props\n allowSingleDateInRange,\n allowDeselect,\n // Other props\n minDate,\n maxDate,\n locale,\n ...others\n } = props;\n return {\n calendarProps: {\n maxLevel,\n minLevel,\n defaultLevel,\n level,\n onLevelChange,\n nextIcon,\n previousIcon,\n date,\n defaultDate,\n onDateChange,\n numberOfColumns,\n columnsToScroll,\n ariaLabels,\n nextLabel,\n previousLabel,\n onYearSelect,\n onMonthSelect,\n onYearMouseEnter,\n onMonthMouseEnter,\n onNextMonth,\n onPreviousMonth,\n onNextYear,\n onPreviousYear,\n onNextDecade,\n onPreviousDecade,\n withCellSpacing,\n highlightToday,\n __updateDateOnYearSelect,\n __updateDateOnMonthSelect,\n // MonthLevelGroup props\n firstDayOfWeek,\n weekdayFormat,\n weekendDays,\n getDayProps,\n excludeDate,\n renderDay,\n hideOutsideDates,\n hideWeekdays,\n getDayAriaLabel,\n monthLabelFormat,\n // YearLevelGroup props\n monthsListFormat,\n getMonthControlProps,\n yearLabelFormat,\n // DecadeLevelGroup props\n yearsListFormat,\n getYearControlProps,\n decadeLabelFormat,\n // External picker props\n allowSingleDateInRange,\n allowDeselect,\n // Other props\n minDate,\n maxDate,\n locale\n },\n others\n };\n}\n\nexport { pickCalendarProps };\n//# sourceMappingURL=pick-calendar-levels-props.mjs.map\n","'use client';\nimport dayjs from 'dayjs';\n\nfunction isInRange(date, range) {\n const _range = [...range].sort((a, b) => a.getTime() - b.getTime());\n return dayjs(_range[0]).startOf(\"day\").subtract(1, \"ms\").isBefore(date) && dayjs(_range[1]).endOf(\"day\").add(1, \"ms\").isAfter(date);\n}\n\nexport { isInRange };\n//# sourceMappingURL=is-in-range.mjs.map\n","'use client';\nimport dayjs from 'dayjs';\nimport { useState, useEffect } from 'react';\nimport { useUncontrolledDates } from '../use-uncontrolled-dates/use-uncontrolled-dates.mjs';\nimport { isInRange } from './is-in-range/is-in-range.mjs';\n\nfunction useDatesState({\n type,\n level,\n value,\n defaultValue,\n onChange,\n allowSingleDateInRange,\n allowDeselect,\n onMouseLeave,\n applyTimezone = true\n}) {\n const [_value, setValue] = useUncontrolledDates({\n type,\n value,\n defaultValue,\n onChange,\n applyTimezone\n });\n const [pickedDate, setPickedDate] = useState(\n type === \"range\" ? _value[0] && !_value[1] ? _value[0] : null : null\n );\n const [hoveredDate, setHoveredDate] = useState(null);\n const onDateChange = (date) => {\n if (type === \"range\") {\n if (pickedDate instanceof Date && !_value[1]) {\n if (dayjs(date).isSame(pickedDate, level) && !allowSingleDateInRange) {\n setPickedDate(null);\n setHoveredDate(null);\n setValue([null, null]);\n return;\n }\n const result = [date, pickedDate];\n result.sort((a, b) => a.getTime() - b.getTime());\n setValue(result);\n setHoveredDate(null);\n setPickedDate(null);\n return;\n }\n if (_value[0] && !_value[1] && dayjs(date).isSame(_value[0], level) && !allowSingleDateInRange) {\n setPickedDate(null);\n setHoveredDate(null);\n setValue([null, null]);\n return;\n }\n setValue([date, null]);\n setHoveredDate(null);\n setPickedDate(date);\n return;\n }\n if (type === \"multiple\") {\n if (_value.some((selected) => dayjs(selected).isSame(date, level))) {\n setValue(_value.filter((selected) => !dayjs(selected).isSame(date, level)));\n } else {\n setValue([..._value, date]);\n }\n return;\n }\n if (_value && allowDeselect && dayjs(date).isSame(_value, level)) {\n setValue(null);\n } else {\n setValue(date);\n }\n };\n const isDateInRange = (date) => {\n if (pickedDate instanceof Date && hoveredDate instanceof Date) {\n return isInRange(date, [hoveredDate, pickedDate]);\n }\n if (_value[0] instanceof Date && _value[1] instanceof Date) {\n return isInRange(date, _value);\n }\n return false;\n };\n const onRootMouseLeave = type === \"range\" ? (event) => {\n onMouseLeave?.(event);\n setHoveredDate(null);\n } : onMouseLeave;\n const isFirstInRange = (date) => {\n if (!(_value[0] instanceof Date)) {\n return false;\n }\n if (dayjs(date).isSame(_value[0], level)) {\n return !(hoveredDate && dayjs(hoveredDate).isBefore(_value[0]));\n }\n return false;\n };\n const isLastInRange = (date) => {\n if (_value[1] instanceof Date) {\n return dayjs(date).isSame(_value[1], level);\n }\n if (!(_value[0] instanceof Date) || !hoveredDate) {\n return false;\n }\n return dayjs(hoveredDate).isBefore(_value[0]) && dayjs(date).isSame(_value[0], level);\n };\n const getControlProps = (date) => {\n if (type === \"range\") {\n return {\n selected: _value.some(\n (selection) => selection && dayjs(selection).isSame(date, level)\n ),\n inRange: isDateInRange(date),\n firstInRange: isFirstInRange(date),\n lastInRange: isLastInRange(date),\n \"data-autofocus\": !!_value[0] && dayjs(_value[0]).isSame(date, level) || void 0\n };\n }\n if (type === \"multiple\") {\n return {\n selected: _value.some(\n (selection) => selection && dayjs(selection).isSame(date, level)\n ),\n \"data-autofocus\": !!_value[0] && dayjs(_value[0]).isSame(date, level) || void 0\n };\n }\n const selected = dayjs(_value).isSame(date, level);\n return { selected, \"data-autofocus\": selected || void 0 };\n };\n const onHoveredDateChange = type === \"range\" && pickedDate ? setHoveredDate : () => {\n };\n useEffect(() => {\n if (type !== \"range\") {\n return;\n }\n const isNeitherSelected = _value[0] == null && _value[1] == null;\n const isBothSelected = _value[0] != null && _value[1] != null;\n if (isNeitherSelected || isBothSelected) {\n setPickedDate(null);\n setHoveredDate(null);\n }\n }, [_value]);\n return {\n onDateChange,\n onRootMouseLeave,\n onHoveredDateChange,\n getControlProps,\n _value,\n setValue\n };\n}\n\nexport { useDatesState };\n//# sourceMappingURL=use-dates-state.mjs.map\n","'use client';\nimport { jsx } from 'react/jsx-runtime';\nimport { factory, useProps, useResolvedStylesApi } from '@mantine/core';\nimport { useDatesState } from '../../hooks/use-dates-state/use-dates-state.mjs';\nimport '@mantine/hooks';\nimport '../DatesProvider/DatesProvider.mjs';\nimport { useDatesContext } from '../DatesProvider/use-dates-context.mjs';\nimport 'dayjs';\nimport { shiftTimezone } from '../../utils/shift-timezone.mjs';\nimport 'react';\nimport { Calendar } from '../Calendar/Calendar.mjs';\n\nconst defaultProps = {\n type: \"default\",\n defaultLevel: \"month\",\n numberOfColumns: 1\n};\nconst DatePicker = factory((_props, ref) => {\n const props = useProps(\"DatePicker\", defaultProps, _props);\n const {\n classNames,\n styles,\n vars,\n type,\n defaultValue,\n value,\n onChange,\n __staticSelector,\n getDayProps,\n allowSingleDateInRange,\n allowDeselect,\n onMouseLeave,\n numberOfColumns,\n hideOutsideDates,\n __onDayMouseEnter,\n __onDayClick,\n __timezoneApplied,\n ...others\n } = props;\n const { onDateChange, onRootMouseLeave, onHoveredDateChange, getControlProps } = useDatesState({\n type,\n level: \"day\",\n allowDeselect,\n allowSingleDateInRange,\n value,\n defaultValue,\n onChange,\n onMouseLeave,\n applyTimezone: !__timezoneApplied\n });\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi({\n classNames,\n styles,\n props\n });\n const ctx = useDatesContext();\n return /* @__PURE__ */ jsx(\n Calendar,\n {\n ref,\n minLevel: \"month\",\n classNames: resolvedClassNames,\n styles: resolvedStyles,\n __staticSelector: __staticSelector || \"DatePicker\",\n onMouseLeave: onRootMouseLeave,\n numberOfColumns,\n hideOutsideDates: hideOutsideDates ?? numberOfColumns !== 1,\n __onDayMouseEnter: (_event, date) => {\n onHoveredDateChange(date);\n __onDayMouseEnter?.(_event, date);\n },\n __onDayClick: (_event, date) => {\n onDateChange(date);\n __onDayClick?.(_event, date);\n },\n getDayProps: (date) => ({\n ...getControlProps(date),\n ...getDayProps?.(date)\n }),\n ...others,\n date: shiftTimezone(\"add\", others.date, ctx.getTimezone(), __timezoneApplied),\n __timezoneApplied: true\n }\n );\n});\nDatePicker.classes = Calendar.classes;\nDatePicker.displayName = \"@mantine/dates/DatePicker\";\n\nexport { DatePicker };\n//# sourceMappingURL=DatePicker.mjs.map\n","'use client';\nvar classes = {\"timeWrapper\":\"m_208d2562\",\"timeInput\":\"m_62ee059\"};\n\nexport { classes as default };\n//# sourceMappingURL=DateTimePicker.module.css.mjs.map\n","'use client';\nimport { jsxs, jsx } from 'react/jsx-runtime';\nimport dayjs from 'dayjs';\nimport { useRef, useState } from 'react';\nimport { factory, useProps, useStyles, useResolvedStylesApi, ActionIcon, CheckIcon } from '@mantine/core';\nimport { useMergedRef, useDisclosure, useDidUpdate } from '@mantine/hooks';\nimport { useUncontrolledDates } from '../../hooks/use-uncontrolled-dates/use-uncontrolled-dates.mjs';\nimport '../DatesProvider/DatesProvider.mjs';\nimport { useDatesContext } from '../DatesProvider/use-dates-context.mjs';\nimport { assignTime } from '../../utils/assign-time/assign-time.mjs';\nimport { shiftTimezone } from '../../utils/shift-timezone.mjs';\nimport '../Calendar/Calendar.mjs';\nimport { pickCalendarProps } from '../Calendar/pick-calendar-levels-props/pick-calendar-levels-props.mjs';\nimport { DatePicker } from '../DatePicker/DatePicker.mjs';\nimport { PickerInputBase } from '../PickerInputBase/PickerInputBase.mjs';\nimport { TimeInput } from '../TimeInput/TimeInput.mjs';\nimport classes from './DateTimePicker.module.css.mjs';\n\nconst defaultProps = {\n dropdownType: \"popover\"\n};\nconst DateTimePicker = factory((_props, ref) => {\n const props = useProps(\"DateTimePicker\", defaultProps, _props);\n const {\n value,\n defaultValue,\n onChange,\n valueFormat,\n locale,\n classNames,\n styles,\n unstyled,\n timeInputProps,\n submitButtonProps,\n withSeconds,\n level,\n defaultLevel,\n size,\n variant,\n dropdownType,\n vars,\n minDate,\n maxDate,\n ...rest\n } = props;\n const getStyles = useStyles({\n name: \"DateTimePicker\",\n classes,\n props,\n classNames,\n styles,\n unstyled,\n vars\n });\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi({\n classNames,\n styles,\n props\n });\n const _valueFormat = valueFormat || (withSeconds ? \"DD/MM/YYYY HH:mm:ss\" : \"DD/MM/YYYY HH:mm\");\n const timeInputRef = useRef();\n const timeInputRefMerged = useMergedRef(timeInputRef, timeInputProps?.ref);\n const {\n calendarProps: { allowSingleDateInRange, ...calendarProps },\n others\n } = pickCalendarProps(rest);\n const ctx = useDatesContext();\n const [_value, setValue] = useUncontrolledDates({\n type: \"default\",\n value,\n defaultValue,\n onChange\n });\n const formatTime = (dateValue) => dateValue ? dayjs(dateValue).format(withSeconds ? \"HH:mm:ss\" : \"HH:mm\") : \"\";\n const [timeValue, setTimeValue] = useState(formatTime(_value));\n const [currentLevel, setCurrentLevel] = useState(level || defaultLevel || \"month\");\n const [dropdownOpened, dropdownHandlers] = useDisclosure(false);\n const formattedValue = _value ? dayjs(_value).locale(ctx.getLocale(locale)).format(_valueFormat) : \"\";\n const handleTimeChange = (event) => {\n timeInputProps?.onChange?.(event);\n const val = event.currentTarget.value;\n setTimeValue(val);\n if (val) {\n const [hours, minutes, seconds] = val.split(\":\").map(Number);\n const timeDate = shiftTimezone(\"add\", /* @__PURE__ */ new Date(), ctx.getTimezone());\n timeDate.setHours(hours);\n timeDate.setMinutes(minutes);\n timeDate.setSeconds(seconds || 0);\n setValue(assignTime(timeDate, _value || shiftTimezone(\"add\", /* @__PURE__ */ new Date(), ctx.getTimezone())));\n }\n };\n const handleDateChange = (date) => {\n if (date) {\n setValue(assignTime(_value, date));\n }\n timeInputRef.current?.focus();\n };\n const handleTimeInputKeyDown = (event) => {\n timeInputProps?.onKeyDown?.(event);\n if (event.key === \"Enter\") {\n event.preventDefault();\n dropdownHandlers.close();\n }\n };\n useDidUpdate(() => {\n if (!dropdownOpened) {\n setTimeValue(formatTime(_value));\n }\n }, [_value, dropdownOpened]);\n useDidUpdate(() => {\n if (dropdownOpened) {\n setCurrentLevel(\"month\");\n }\n }, [dropdownOpened]);\n const minTime = minDate ? dayjs(minDate).format(\"HH:mm:ss\") : null;\n const maxTime = maxDate ? dayjs(maxDate).format(\"HH:mm:ss\") : null;\n const __stopPropagation = dropdownType === \"popover\";\n return /* @__PURE__ */ jsxs(\n PickerInputBase,\n {\n formattedValue,\n dropdownOpened: !rest.disabled ? dropdownOpened : false,\n dropdownHandlers,\n classNames: resolvedClassNames,\n styles: resolvedStyles,\n unstyled,\n ref,\n onClear: () => setValue(null),\n shouldClear: !!_value,\n value: _value,\n size,\n variant,\n dropdownType,\n ...others,\n type: \"default\",\n __staticSelector: \"DateTimePicker\",\n children: [\n /* @__PURE__ */ jsx(\n DatePicker,\n {\n ...calendarProps,\n maxDate,\n minDate,\n size,\n variant,\n type: \"default\",\n value: _value,\n defaultDate: _value,\n onChange: handleDateChange,\n locale,\n classNames: resolvedClassNames,\n styles: resolvedStyles,\n unstyled,\n __staticSelector: \"DateTimePicker\",\n __stopPropagation,\n level,\n defaultLevel,\n onLevelChange: (_level) => {\n setCurrentLevel(_level);\n calendarProps.onLevelChange?.(_level);\n },\n __timezoneApplied: true\n }\n ),\n currentLevel === \"month\" && /* @__PURE__ */ jsxs(\"div\", { ...getStyles(\"timeWrapper\"), children: [\n /* @__PURE__ */ jsx(\n TimeInput,\n {\n value: timeValue,\n withSeconds,\n ref: timeInputRefMerged,\n unstyled,\n minTime: _value && minDate && _value.toDateString() === minDate.toDateString() ? minTime != null ? minTime : void 0 : void 0,\n maxTime: _value && maxDate && _value.toDateString() === maxDate.toDateString() ? maxTime != null ? maxTime : void 0 : void 0,\n ...timeInputProps,\n ...getStyles(\"timeInput\", {\n className: timeInputProps?.className,\n style: timeInputProps?.style\n }),\n onChange: handleTimeChange,\n onKeyDown: handleTimeInputKeyDown,\n size,\n \"data-mantine-stop-propagation\": __stopPropagation || void 0\n }\n ),\n /* @__PURE__ */ jsx(\n ActionIcon,\n {\n variant: \"default\",\n size: `input-${size || \"sm\"}`,\n ...getStyles(\"submitButton\", {\n className: submitButtonProps?.className,\n style: submitButtonProps?.style\n }),\n unstyled,\n \"data-mantine-stop-propagation\": __stopPropagation || void 0,\n children: /* @__PURE__ */ jsx(CheckIcon, { size: \"30%\" }),\n ...submitButtonProps,\n onClick: (event) => {\n submitButtonProps?.onClick?.(event);\n dropdownHandlers.close();\n }\n }\n )\n ] })\n ]\n }\n );\n});\nDateTimePicker.classes = { ...classes, ...PickerInputBase.classes, ...DatePicker.classes };\nDateTimePicker.displayName = \"@mantine/dates/DateTimePicker\";\n\nexport { DateTimePicker };\n//# sourceMappingURL=DateTimePicker.mjs.map\n","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param dateLeft - The first date to compare\n * @param dateRight - The second date to compare\n *\n * @returns The result of the comparison\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport function compareAsc(dateLeft, dateRight) {\n const diff = +toDate(dateLeft) - +toDate(dateRight);\n\n if (diff < 0) return -1;\n else if (diff > 0) return 1;\n\n // Return 0 if diff is 0; return NaN if diff is NaN\n return diff;\n}\n\n// Fallback for modularized imports:\nexport default compareAsc;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarMonths} function options.\n */\n\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of calendar months\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport function differenceInCalendarMonths(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const yearsDiff = laterDate_.getFullYear() - earlierDate_.getFullYear();\n const monthsDiff = laterDate_.getMonth() - earlierDate_.getMonth();\n\n return yearsDiff * 12 + monthsDiff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarMonths;\n","export function getRoundingMethod(method) {\n return (number) => {\n const round = method ? Math[method] : Math.trunc;\n const result = round(number);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n };\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n *\n * @returns The number of milliseconds\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport function differenceInMilliseconds(laterDate, earlierDate) {\n return +toDate(laterDate) - +toDate(earlierDate);\n}\n\n// Fallback for modularized imports:\nexport default differenceInMilliseconds;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfDay} function options.\n */\n\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a day\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport function endOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfDay;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfMonth} function options.\n */\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport function endOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n const month = _date.getMonth();\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfMonth;\n","import { endOfDay } from \"./endOfDay.js\";\nimport { endOfMonth } from \"./endOfMonth.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param date - The date to check\n * @param options - An object with options\n *\n * @returns The date is the last day of a month\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * const result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport function isLastDayOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n return +endOfDay(_date, options) === +endOfMonth(_date, options);\n}\n\n// Fallback for modularized imports:\nexport default isLastDayOfMonth;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { compareAsc } from \"./compareAsc.js\";\nimport { differenceInCalendarMonths } from \"./differenceInCalendarMonths.js\";\nimport { isLastDayOfMonth } from \"./isLastDayOfMonth.js\";\n\n/**\n * The {@link differenceInMonths} function options.\n */\n\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full months\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\nexport function differenceInMonths(laterDate, earlierDate, options) {\n const [laterDate_, workingLaterDate, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n laterDate,\n earlierDate,\n );\n\n const sign = compareAsc(workingLaterDate, earlierDate_);\n const difference = Math.abs(\n differenceInCalendarMonths(workingLaterDate, earlierDate_),\n );\n\n if (difference < 1) return 0;\n\n if (workingLaterDate.getMonth() === 1 && workingLaterDate.getDate() > 27)\n workingLaterDate.setDate(30);\n\n workingLaterDate.setMonth(workingLaterDate.getMonth() - sign * difference);\n\n let isLastMonthNotFull = compareAsc(workingLaterDate, earlierDate_) === -sign;\n\n if (\n isLastDayOfMonth(laterDate_) &&\n difference === 1 &&\n compareAsc(laterDate_, earlierDate_) === 1\n ) {\n isLastMonthNotFull = false;\n }\n\n const result = sign * (difference - +isLastMonthNotFull);\n return result === 0 ? 0 : result;\n}\n\n// Fallback for modularized imports:\nexport default differenceInMonths;\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { differenceInMilliseconds } from \"./differenceInMilliseconds.js\";\n\n/**\n * The {@link differenceInSeconds} function options.\n */\n\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of seconds\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport function differenceInSeconds(laterDate, earlierDate, options) {\n const diff = differenceInMilliseconds(laterDate, earlierDate) / 1000;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInSeconds;\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // [TODO] -- I challenge you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // [TODO] -- I challenge you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // [TODO] I challenge you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { compareAsc } from \"./compareAsc.js\";\nimport { minutesInDay, minutesInMonth } from \"./constants.js\";\nimport { differenceInMonths } from \"./differenceInMonths.js\";\nimport { differenceInSeconds } from \"./differenceInSeconds.js\";\n\n/**\n * The {@link formatDistance} function options.\n */\n\n/**\n * @name formatDistance\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param laterDate - The date\n * @param earlierDate - The date to compare with\n * @param options - An object with options\n *\n * @returns The distance in words\n *\n * @throws `date` must not be Invalid Date\n * @throws `baseDate` must not be Invalid Date\n * @throws `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * const result = formatDistance(new Date(2014, 6, 2), new Date(2015, 0, 1))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * const result = formatDistance(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * { includeSeconds: true }\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * const result = formatDistance(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = formatDistance(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> 'pli ol 1 jaro'\n */\nexport function formatDistance(laterDate, earlierDate, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n const minutesInAlmostTwoDays = 2520;\n\n const comparison = compareAsc(laterDate, earlierDate);\n\n if (isNaN(comparison)) throw new RangeError(\"Invalid time value\");\n\n const localizeOptions = Object.assign({}, options, {\n addSuffix: options?.addSuffix,\n comparison: comparison,\n });\n\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n ...(comparison > 0 ? [earlierDate, laterDate] : [laterDate, earlierDate]),\n );\n\n const seconds = differenceInSeconds(earlierDate_, laterDate_);\n const offsetInSeconds =\n (getTimezoneOffsetInMilliseconds(earlierDate_) -\n getTimezoneOffsetInMilliseconds(laterDate_)) /\n 1000;\n const minutes = Math.round((seconds - offsetInSeconds) / 60);\n let months;\n\n // 0 up to 2 mins\n if (minutes < 2) {\n if (options?.includeSeconds) {\n if (seconds < 5) {\n return locale.formatDistance(\"lessThanXSeconds\", 5, localizeOptions);\n } else if (seconds < 10) {\n return locale.formatDistance(\"lessThanXSeconds\", 10, localizeOptions);\n } else if (seconds < 20) {\n return locale.formatDistance(\"lessThanXSeconds\", 20, localizeOptions);\n } else if (seconds < 40) {\n return locale.formatDistance(\"halfAMinute\", 0, localizeOptions);\n } else if (seconds < 60) {\n return locale.formatDistance(\"lessThanXMinutes\", 1, localizeOptions);\n } else {\n return locale.formatDistance(\"xMinutes\", 1, localizeOptions);\n }\n } else {\n if (minutes === 0) {\n return locale.formatDistance(\"lessThanXMinutes\", 1, localizeOptions);\n } else {\n return locale.formatDistance(\"xMinutes\", minutes, localizeOptions);\n }\n }\n\n // 2 mins up to 0.75 hrs\n } else if (minutes < 45) {\n return locale.formatDistance(\"xMinutes\", minutes, localizeOptions);\n\n // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance(\"aboutXHours\", 1, localizeOptions);\n\n // 1.5 hrs up to 24 hrs\n } else if (minutes < minutesInDay) {\n const hours = Math.round(minutes / 60);\n return locale.formatDistance(\"aboutXHours\", hours, localizeOptions);\n\n // 1 day up to 1.75 days\n } else if (minutes < minutesInAlmostTwoDays) {\n return locale.formatDistance(\"xDays\", 1, localizeOptions);\n\n // 1.75 days up to 30 days\n } else if (minutes < minutesInMonth) {\n const days = Math.round(minutes / minutesInDay);\n return locale.formatDistance(\"xDays\", days, localizeOptions);\n\n // 1 month up to 2 months\n } else if (minutes < minutesInMonth * 2) {\n months = Math.round(minutes / minutesInMonth);\n return locale.formatDistance(\"aboutXMonths\", months, localizeOptions);\n }\n\n months = differenceInMonths(earlierDate_, laterDate_);\n\n // 2 months up to 12 months\n if (months < 12) {\n const nearestMonth = Math.round(minutes / minutesInMonth);\n return locale.formatDistance(\"xMonths\", nearestMonth, localizeOptions);\n\n // 1 year up to max Date\n } else {\n const monthsSinceStartOfYear = months % 12;\n const years = Math.trunc(months / 12);\n\n // N years up to 1 years 3 months\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance(\"aboutXYears\", years, localizeOptions);\n\n // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance(\"overXYears\", years, localizeOptions);\n\n // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance(\"almostXYears\", years + 1, localizeOptions);\n }\n }\n}\n\n// Fallback for modularized imports:\nexport default formatDistance;\n","import { Stack, Text } from '@mantine/core'\nimport { DateTimePicker } from '@mantine/dates'\nimport { useDisclosure } from '@mantine/hooks'\nimport { formatDistance } from 'date-fns'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport ErrorMessage from '@/components/ErrorMessage'\nimport { ConfirmationLoading, ConfirmationReady } from '@/components/Identity/ConfirmModals/utils'\nimport { ELECTIONS_ADDRESS } from '@/constants/blockchain'\nimport OMMAElection from '@/contracts/OMMAElection'\nimport { ContractCall, useChainFunctions } from '@/hooks/useChain'\nimport { l1NativeWagmiConfig } from '@/plugins/auth/config'\n\nimport RootButton from '../../Buttons/RootButton'\nimport ModalSkeleton from '../ModalSkeleton'\n\ninterface StartElectionProps {\n close: () => void\n}\n\nconst StartElection: React.FC = ({ close }) => {\n const { t } = useTranslation()\n const { writeContract } = useChainFunctions(l1NativeWagmiConfig)\n\n // modal\n const [openedConfirmation, { open: openConfirmation, close: closeConfirmation }] = useDisclosure()\n\n // times\n const now = Date.now()\n const defaultStart = new Date(now + 3600 * 1000) // 1 hour from now\n // Round to next hour\n defaultStart.setHours(defaultStart.getHours() + 1)\n defaultStart.setMinutes(0)\n const defaultCampaign = new Date(defaultStart.getTime() + 7 * 24 * 3600 * 1000) // 1 week from start\n const defaultVoting = new Date(defaultCampaign.getTime() + 7 * 24 * 3600 * 1000) // 2 week from campaign\n const defaultEnd = new Date(defaultVoting.getTime() + 7 * 24 * 3600 * 1000) // 2 week from voting\n\n const [startTime, setStartTime] = useState(defaultStart)\n const [campaignTime, setCampaignTime] = useState(defaultCampaign)\n const [votingTime, setVotingTime] = useState(defaultVoting)\n const [endTime, setEndTime] = useState(defaultEnd)\n const [timeError, setTimeError] = useState('')\n\n // Calculate duration between times\n const duration = formatDistance(endTime, startTime)\n\n // ready confirmation\n const [isLoading, setIsLoading] = useState(false)\n const [error, setError] = useState('')\n const [isReady, setIsReady] = useState(false)\n\n const contractCalls: ContractCall[] | undefined = useMemo(() => {\n const startTimestamp = Math.floor(startTime.getTime() / 1000)\n const campaignTimestamp = Math.floor(campaignTime.getTime() / 1000)\n const votingTimestamp = Math.floor(votingTime.getTime() / 1000)\n const endTimestamp = Math.floor(endTime.getTime() / 1000)\n\n return [\n {\n args: {\n address: ELECTIONS_ADDRESS,\n abi: OMMAElection,\n functionName: 'createElection',\n args: [startTimestamp, campaignTimestamp, votingTimestamp, endTimestamp],\n },\n },\n ]\n }, [startTime, campaignTime, votingTime, endTime])\n\n const checkInputs = (start: Date, campaign: Date, voting: Date, end: Date) => {\n // Validate times\n if (campaign <= start) {\n setTimeError('Campaign time must be after start time')\n return\n }\n if (voting <= campaign) {\n setTimeError('Voting time must be after campaign time')\n return\n }\n if (end <= voting) {\n setTimeError('End time must be after voting time')\n return\n }\n setTimeError('')\n }\n\n const handleStartElection = useCallback(async () => {\n if (!(contractCalls && contractCalls.length > 0)) return\n try {\n setIsLoading(true)\n await writeContract(contractCalls[0].args)\n setIsLoading(false)\n setIsReady(true)\n } catch (err: any) {\n console.error(err)\n setIsLoading(false)\n setError(err.message)\n }\n }, [contractCalls, writeContract])\n\n const handleCloseConfirmationCancel = useCallback(() => {\n setError('')\n closeConfirmation()\n }, [closeConfirmation])\n\n const handleCloseConfirmation = useCallback(() => {\n setError('')\n closeConfirmation()\n close()\n }, [closeConfirmation, close])\n\n // Check inputs when change\n useEffect(() => {\n checkInputs(startTime, campaignTime, votingTime, endTime)\n }, [startTime, campaignTime, votingTime, endTime])\n\n return (\n <>\n \n \n date && setStartTime(date)}\n clearable={false}\n withAsterisk\n valueFormat=\"DD MMM YYYY, HH:mm\"\n />\n date && setCampaignTime(date)}\n clearable={false}\n withAsterisk\n valueFormat=\"DD MMM YYYY, HH:mm\"\n />\n date && setVotingTime(date)}\n clearable={false}\n withAsterisk\n valueFormat=\"DD MMM YYYY, HH:mm\"\n />\n date && setEndTime(date)}\n clearable={false}\n withAsterisk\n valueFormat=\"DD MMM YYYY, HH:mm\"\n />\n Duration: {duration}\n {timeError && {timeError}}\n \n\n \n \n {t('components.governance.startElection.close', 'Close')}\n \n \n {t('components.governance.startElection.button', 'Start Election')}\n \n \n \n \n {error && (\n \n )}\n {isLoading && (\n \n )}\n {isReady && !isLoading && !error && (\n \n )}\n {!isReady && !error && !isLoading && (\n <>\n \n {t(\n 'components.governance.modal.startElection.confirmMessage',\n 'You are about to Start an Election. This action is irreversible.'\n )}\n \n \n \n {t('buttons.cancel', 'Cancel')}\n \n \n {t('buttons.confirm', 'Confirm')}\n \n \n \n )}\n \n \n )\n}\n\nexport default StartElection\n","import { Stack, Title, useMantineTheme } from '@mantine/core'\nimport { useDisclosure, useMediaQuery } from '@mantine/hooks'\nimport React, { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { useGovernanceContext } from '@/contexts/GovernanceContext'\nimport { mock } from '@/hooks/useGovernance'\n\nimport RootButton from '../../Buttons/RootButton'\nimport NominationModal from '../../Modals/Governance/NominateModal'\nimport StartElectionModal from '../../Modals/Governance/StartElectionModal'\nimport ModalSkeleton from '../../Modals/ModalSkeleton'\nimport NomineesList from '../GovernanceList/NomineesList'\n\ninterface NominationProps {}\n\nconst Nomination: React.FC = () => {\n const theme = useMantineTheme()\n const { t } = useTranslation()\n const [opened, { open, close }] = useDisclosure()\n const [openedElection, { open: openElection, close: closeElection }] = useDisclosure()\n const isDownMd = useMediaQuery(`(max-width: ${theme.breakpoints.md})`)\n const isMobile = useMediaQuery(`(max-width: ${theme.breakpoints.sm})`)\n\n // Governance data\n const {\n // User\n hasNominated,\n isAdmin,\n // Election data\n electionData,\n nominationData,\n } = useGovernanceContext()\n\n // Modals\n const NominateModal = useMemo(\n () => (\n \n \n \n ),\n [close, opened, t]\n )\n\n const ElectionModal = useMemo(\n () => (\n \n \n \n ),\n [closeElection, openedElection, t]\n )\n\n // Check if an election can be started\n // If there is no election queued or the current election has ended\n const canStartElection = useMemo(\n () => electionData.idx === 0 || electionData.endTime < new Date().getTime() / 1000,\n [electionData]\n )\n\n // Has nomination period started\n const nominationStarted = useMemo(\n () => electionData.idx > 0 && electionData.nominationTime < new Date().getTime() / 1000,\n [electionData]\n )\n\n // Is nomination period active\n const nominationActive = useMemo(() => {\n const now = new Date().getTime() / 1000\n return electionData.nominationTime < now && electionData.campaignTime > now\n }, [electionData])\n\n return (\n \n {isAdmin && canStartElection && (\n \n {t('components.governance.startElection.button', 'Start Election')}\n \n )}\n {ElectionModal}\n {!nominationStarted && !mock ? (\n \n {t('components.governance.nomination.notStarted', 'Election not active yet')}\n \n ) : (\n <>\n \n {t('buttons.nominate', 'Nominate {{candidate}}', {\n candidate: isMobile ? '' : 'Candidate',\n })}\n \n )\n }\n />\n {NominateModal}\n \n )}\n \n )\n}\n\nexport default Nomination\n","import { AreaChart, getFilteredChartTooltipPayload } from '@mantine/charts'\nimport { Paper, Stack, Text, Title, useMantineTheme } from '@mantine/core'\nimport { useMediaQuery } from '@mantine/hooks'\nimport { IconLaurelWreath1 } from '@tabler/icons-react'\nimport confetti from 'canvas-confetti'\nimport React, { useCallback, useMemo, useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport NoData from '@/components/NoData'\nimport ProfilesCard from '@/components/Profile/ProfilesCard'\nimport { useGovernanceContext } from '@/contexts/GovernanceContext'\nimport { generateColor, shortenHash } from '@/utils/utils'\n\nimport NominatedBy from '../GovernanceList/NominatedBy'\nimport NomineesList from '../GovernanceList/NomineesList'\nimport VotesCard from '../GovernanceList/VotesCard'\n\ninterface ChartTooltipProps {\n label: string\n payload: Record[] | undefined\n}\n\nfunction ChartTooltip({ label, payload }: ChartTooltipProps) {\n const theme = useMantineTheme()\n if (!payload) return null\n\n return (\n \n \n {label}\n \n {getFilteredChartTooltipPayload(payload)\n .sort((a, b) => b.value - a.value)\n .map((item: any) => (\n \n {shortenHash(item.name)}: {new Intl.NumberFormat('en-US').format(item.value)}\n \n ))}\n \n )\n}\n\nconst mockResults = [\n [6, 7, 40, 5, 30, 10, 22, 15, 33, 21, 15, 10],\n [24, 34, 43, 14, 46, 12, 32, 20, 40, 30, 20, 15],\n [57, 45, 47, 31, 49, 27, 37, 25, 47, 35, 25, 20],\n [70, 50, 67, 40, 80, 30, 50, 30, 60, 40, 30, 25],\n [100, 55, 90, 45, 85, 50, 70, 40, 70, 50, 40, 30],\n [120, 67, 97, 48, 89, 55, 75, 45, 75, 55, 45, 35],\n]\n\ninterface ResultsProps {}\n\nconst Results: React.FC = () => {\n const { t } = useTranslation()\n const theme = useMantineTheme()\n const isBreakpoint = useMediaQuery(`(max-width: ${theme.breakpoints.md})`)\n // Reference to the parent element of the Item Card\n const parentRef = useRef(null)\n\n // Governance data\n const { nominationData } = useGovernanceContext()\n\n const confettiRan = useRef(false)\n\n const mockData = useMemo(() => {\n const mockDat: Record[] = [\n {\n date: 'Mar 22',\n },\n {\n date: 'Mar 23',\n },\n {\n date: 'Mar 24',\n },\n {\n date: 'Mar 25',\n },\n {\n date: 'Mar 26',\n },\n {\n date: 'Mar 27',\n },\n ]\n // Add results to the mock data\n mockDat.forEach((_, index) => {\n nominationData.forEach((nomination, i) => {\n let votes = 0\n if (i > mockResults[index].length) {\n votes = mockResults[index][mockResults[index].length - 1]\n } else {\n votes = mockResults[index][i]\n }\n mockDat[index][nomination.nominee] = votes\n })\n })\n return mockDat\n }, [nominationData])\n\n const runConfetti = useCallback(() => {\n if (confettiRan.current) {\n return\n }\n confettiRan.current = true\n confetti({\n particleCount: 1550,\n spread: 1400,\n })\n // launch a few confetti from the left edge\n confetti({\n particleCount: 117,\n angle: 60,\n spread: 55,\n origin: { x: 0 },\n })\n // and launch a few from the right edge\n confetti({\n particleCount: 117,\n angle: 120,\n spread: 55,\n origin: { x: 1 },\n })\n }, [confetti, confettiRan])\n\n return (\n <>\n {nominationData.length > 0 ? (\n \n \n {t('components.governance.results.winner', 'Election Winner')}\n\n \n \n {\n confettiRan.current = false\n runConfetti()\n }}\n >\n \n }\n />\n \n \n \n \n \n \n \n \n \n \n \n {t('components.governance.results.title', 'Voting Results')}\n ({\n label: shortenHash(nomination.nominee),\n name: nomination.nominee,\n color: generateColor(nomination.nominee),\n }))}\n tooltipProps={{\n content: ChartTooltip as any,\n }}\n withLegend\n legendProps={{\n verticalAlign: 'bottom',\n height: 120,\n wrapperStyle: { color: theme.colors.textAndIcon[0] },\n }}\n curveType=\"natural\"\n tickLine=\"x\"\n xAxisLabel=\"Date\"\n yAxisLabel=\"Votes\"\n />\n \n \n ) : (\n \n )}\n \n )\n}\n\nexport default Results\n","import { ScrollArea, Stack, Text, Title, useMantineTheme } from '@mantine/core'\nimport { useDisclosure, useMediaQuery } from '@mantine/hooks'\nimport { signMessage } from '@wagmi/core'\nimport React, { useCallback, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { keccak256, parseUnits, toBytes } from 'viem'\n\nimport RootButton from '@/components/Buttons/RootButton'\nimport { Amount } from '@/components/CurrencyInput'\nimport UserDetails from '@/components/Details/UserDetails/UserDetails'\nimport classes from '@/components/Discover/Feed/MembersList.module.css'\nimport ModalSkeleton from '@/components/Modals/ModalSkeleton'\nimport { STUDIO_BOT } from '@/constants/blockchain'\nimport { useGovernanceContext } from '@/contexts/GovernanceContext'\nimport useSpacesAuth from '@/hooks/useSpacesAuth'\nimport { useAuth } from '@/plugins/auth'\nimport { getWagmiConfig } from '@/plugins/auth/config'\nimport { post } from '@/utils/utils'\n\nimport NomineesList from '../GovernanceList/NomineesList'\n\ninterface VotingProps {}\n\ntype Vote = {\n candidate: string\n amount: BigInt\n}\n\nconst splitVotes = (vtes: { [key: string]: Amount }): Vote[] => {\n // integer bigger than 1\n const minSplits = 2\n // integer lower than 100 divided by increment\n const maxSplits = 5\n\n const splitVotesArray: Vote[] = []\n\n Object.entries(vtes).forEach(([candidate, v]) => {\n const totalAmount = Number(v.value)\n const splits = Math.floor(Math.random() * (maxSplits - minSplits + 1)) + minSplits\n\n // Generate random split percentages that sum to 100%\n const splitPercentages = Array.from({ length: splits }, () => Math.random())\n const sumOfSplitPercentages = splitPercentages.reduce((acc, curr) => acc + curr, 0)\n const normalizedSplitPercentages = splitPercentages.map(\n percentage => percentage / sumOfSplitPercentages\n )\n\n let remainingAmount = parseUnits(totalAmount.toString(), 18)\n for (let i = 0; i < splits - 1; i++) {\n const splitAmount = totalAmount * normalizedSplitPercentages[i]\n const splitAmountBigInt = parseUnits(splitAmount.toString(), 18)\n splitVotesArray.push({ candidate, amount: splitAmountBigInt })\n remainingAmount -= splitAmountBigInt\n }\n\n splitVotesArray.push({ candidate, amount: remainingAmount })\n })\n\n return splitVotesArray\n}\n\nconst hashVotes = (votesArray: Vote[]): string => {\n const bytesArray = votesArray\n .flatMap(({ candidate, amount }) => [toBytes(candidate), toBytes(amount.toString())])\n .reduce((acc, val) => {\n const tempArray = new Uint8Array(acc.length + val.length)\n tempArray.set(acc)\n tempArray.set(val, acc.length)\n return tempArray\n }, new Uint8Array())\n\n return keccak256(bytesArray)\n}\n\nconst Voting: React.FC = () => {\n const { t } = useTranslation()\n const { address } = useAuth()\n const theme = useMantineTheme()\n const { vote } = useGovernanceContext()\n const isMobile = useMediaQuery(`(max-width: ${theme.breakpoints.sm})`)\n const [opened, { open, close }] = useDisclosure()\n\n // Governance data\n const { nominationData } = useGovernanceContext()\n const [votes, setVotes] = useState<{ [key: string]: Amount }>({})\n\n // Hooks\n const { token } = useSpacesAuth()\n\n const voteAction = useCallback(async () => {\n if (!token) return\n\n const splitVotesArray = splitVotes(votes)\n console.log('splitVotesArray', splitVotesArray)\n const votesHash = hashVotes(splitVotesArray)\n console.log('votesHash', votesHash)\n // Prompt user to sign the hash of the votes\n const signature = await signMessage(getWagmiConfig(), {\n message: `I want to cast votes with the following hash: ${votesHash}`,\n })\n console.log('signature', signature)\n if (signature) {\n const payload = {\n votes: splitVotesArray,\n signature,\n }\n\n const retval = post(`${STUDIO_BOT}/elections/vote`, JSON.stringify(payload), token)\n\n if (!retval) {\n // handle error\n }\n close()\n }\n }, [token, votes, signMessage, splitVotes, hashVotes])\n\n return (\n <>\n \n \n Balance: {vote.fullDisplay} VOTE\n \n Number(v.value) > 0) ||\n Object.values(votes).every(v => Number(v.value) === 0) ||\n Object.values(votes).some(v => v.error)\n }\n >\n {t('buttons.vote', 'Vote')}\n \n \n }\n votes={votes}\n setVotes={setVotes}\n />\n \n \n \n Are you sure you want to cast these VOTE tokens for these candidates? This action cannot\n be undone for this election.\n \n {/* go through votes amounts */}\n \n \n {Object.entries(votes)\n .filter(([, v]) => Number(v.value) > 0)\n .sort(([, a], [, b]) => Number(b.value) - Number(a.value))\n .map(([nominee, v]) => (\n \n \n \n \n \n {v.value}\n Votes\n \n \n ))}\n \n \n \n \n Close\n \n \n Confirm\n \n \n \n \n \n )\n}\n\nexport default Voting\n","import { Stack, Stepper, Title, Tooltip, useMantineTheme } from '@mantine/core'\nimport { useMediaQuery } from '@mantine/hooks'\nimport {\n IconCheckbox,\n IconPointFilled,\n IconReportAnalytics,\n IconSpeakerphone,\n IconUsers,\n} from '@tabler/icons-react'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport Timer from '@/components/Timer'\nimport { testAllElectionPhases } from '@/constants/blockchain'\nimport { useGovernanceContext } from '@/contexts/GovernanceContext'\nimport { ElectionData, mock } from '@/hooks/useGovernance'\n\nimport GovInfo from '../GovInfo'\nimport Campaign from './Campaign'\nimport Nomination from './Nomination'\nimport Results from './Results'\nimport Voting from './Voting'\n\nconst ELECTION_PHASES = ['Nomination', 'Campaign', 'Voting', 'Results']\n// const currentPhase = ELECTION_PHASES[1]\n\ninterface StepProps {\n children: React.ReactNode\n step: number\n active: number\n currentPhase: string\n onStepClick: (step: number) => void\n}\n\nconst timeToPhase = (now: number, electionTime: ElectionData): string => {\n const { idx, nominationTime, campaignTime, votingTime, endTime } = electionTime\n const [NOMINATION, CAMPAIGN, VOTING, RESULTS] = ELECTION_PHASES\n let electionPhase = NOMINATION\n if (idx === 0 || now < nominationTime) {\n // Not started (reuse nominate for now)\n electionPhase = NOMINATION\n } else if (now < campaignTime) {\n // Nomination\n electionPhase = NOMINATION\n } else if (now < votingTime) {\n // Campaign\n electionPhase = CAMPAIGN\n } else if (now < endTime) {\n // Voting\n electionPhase = VOTING\n } else {\n // Results\n electionPhase = RESULTS\n }\n return electionPhase\n}\n\nconst Step: React.FC = ({ children, step, active, onStepClick, currentPhase }) => {\n const { t } = useTranslation()\n const theme = useMantineTheme()\n const isMobile = useMediaQuery(`(max-width: ${theme.breakpoints.sm})`)\n const icons = [\n ,\n ,\n ,\n ,\n ]\n\n const labelColor = useMemo(\n () => () =>\n active > step\n ? theme.colors.l1Primary[0]\n : ELECTION_PHASES.indexOf(currentPhase) < step\n ? theme.colors.textAndIcon[0]\n : theme.colors.title[0],\n [currentPhase, active]\n )\n\n const borderColor = useMemo(\n () => () =>\n active >= step\n ? theme.colors.l1Primary[0]\n : ELECTION_PHASES.indexOf(currentPhase) < step\n ? theme.colors.textAndIcon[0]\n : theme.colors.title[0],\n [currentPhase, active]\n )\n\n return (\n onStepClick(step)}\n >\n onStepClick(step)}\n >\n {children}\n \n \n \n {ELECTION_PHASES[step]}\n \n \n \n \n \n \n )\n}\n\nconst GovernanceStepper: React.FC = () => {\n const { t } = useTranslation()\n const theme = useMantineTheme()\n const isMobile = useMediaQuery(`(max-width: ${theme.breakpoints.sm})`)\n const now = useMemo(() => Math.floor(Date.now() / 1000), [])\n\n // Governance data\n const { electionData } = useGovernanceContext()\n // mock election time\n const startTimeRef = useRef(now)\n const mockElectionTime = useMemo(() => {\n const nominationSeconds = 5\n const campaignSeconds = 5\n const votingSeconds = 5\n const endSeconds = 100000\n const timeToStart = startTimeRef.current\n\n return {\n idx: 1,\n nominationTime: timeToStart + nominationSeconds,\n campaignTime: timeToStart + nominationSeconds + campaignSeconds,\n votingTime: timeToStart + nominationSeconds + campaignSeconds + votingSeconds,\n endTime: timeToStart + nominationSeconds + campaignSeconds + votingSeconds + endSeconds,\n }\n }, [startTimeRef])\n const electionTime = useMemo(() => (mock ? mockElectionTime : electionData), [electionData, mock])\n\n const initialPhase = useMemo(\n () => (testAllElectionPhases ? ELECTION_PHASES.length - 1 : 0),\n [testAllElectionPhases]\n )\n const [currentPhase, setCurrentPhase] = useState(ELECTION_PHASES[initialPhase])\n const [active, setActive] = useState(0)\n const [changePhase, setChangePhase] = useState(false)\n\n // Timer timeout\n const timeout = useCallback(() => {\n setTimeout(() => {\n setChangePhase(prev => !prev)\n }, 500) // process change 500ms after to allow time to be after the required expiry\n }, [])\n\n const handleStepClick = useCallback(\n (step: number) => {\n if (step <= ELECTION_PHASES.indexOf(currentPhase)) {\n setActive(step)\n }\n },\n [currentPhase]\n )\n\n // Times for election stages\n const expiryTimestamp = useMemo(() => {\n const { nominationTime, campaignTime, votingTime, endTime } = electionTime\n switch (currentPhase) {\n case ELECTION_PHASES[0]:\n // On nomination need to return nominationTime if higher than current time\n return Math.floor(Date.now() / 1000) < nominationTime ? nominationTime : campaignTime\n case ELECTION_PHASES[1]:\n return votingTime\n case ELECTION_PHASES[2]:\n return endTime\n default:\n return 0\n }\n }, [currentPhase, electionTime, changePhase])\n\n useEffect(() => {\n if (testAllElectionPhases) return\n const electionPhase = timeToPhase(Math.floor(Date.now() / 1000), electionTime)\n setCurrentPhase(electionPhase)\n setActive(ELECTION_PHASES.indexOf(electionPhase))\n }, [electionTime, changePhase, testAllElectionPhases])\n\n return (\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\nexport default GovernanceStepper\n","import { Stack, Text, Title, useMantineTheme } from '@mantine/core'\nimport { useMediaQuery } from '@mantine/hooks'\nimport { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { BodyStack } from '@/styled/components'\n\nimport HelpDrawer from '../HelpDrawer/HelpDrawer'\nimport PageSelector from '../PageSelector'\nimport GovernanceStepper from './GovernanceSteps/GovernanceStepper'\n\nconst CommingSoon: React.FC = () => {\n const theme = useMantineTheme()\n const isMobile = useMediaQuery(`(max-width: ${theme.breakpoints.sm})`)\n const { t } = useTranslation()\n return (\n \n \n {t('components.governance.commingSoon', 'OMAC Elections')}\n \n \n {t(\n 'components.governance.commingSoonDescription',\n 'The Open Metaverse Arts Council (OMAC) will be holding its first community seat election in Q2 2025. Stay tuned for more information.'\n )}\n \n \n )\n}\n\nconst Component: React.FC = () => {\n const { t } = useTranslation()\n const theme = useMantineTheme()\n const isMobile = useMediaQuery(`(max-width: ${theme.breakpoints.sm})`)\n const [council, setCouncil] = useState('OMMA')\n return (\n \n {t('components.elections.title', 'Elections')}\n \n \n setCouncil('OMMA')}\n bold\n />\n setCouncil('OMAC')}\n bold\n />\n \n \n \n {council === 'OMMA' && }\n {council === 'OMAC' && }\n \n \n )\n}\n\nComponent.displayName = 'Governance'\n\n// eslint-disable-next-line import/prefer-default-export\nexport { Component }\n"],"names":["memoize","func","cache","args","key","result","getAutoHeightDuration","height","constant","getElementHeight","el","raf","useCollapse","transitionDuration","transitionTimingFunction","onTransitionEnd","opened","useRef","collapsedHeight","collapsedStyles","styles","setStylesRaw","useState","setStyles","newStyles","flushSync","mergeStyles","oldStyles","getTransitionStyles","_duration","useDidUpdate","handleTransitionEnd","e","getCollapseProps","style","refKey","rest","theirRef","mergeRefs","defaultProps","Collapse","factory","props","ref","children","animateOpacity","others","useProps","theme","useMantineTheme","shouldReduceMotion","useReducedMotion","duration","jsx","Box","getStyleObject","classes","varsResolver","createVarsResolver","_","radius","size","getRadius","rem","ColorSwatch","polymorphicFactory","_props","classNames","className","unstyled","vars","color","withShadow","variant","getStyles","useStyles","jsxs","getValuesRange","anchor","value","flatValues","anchorIndex","valueIndex","start","end","TreeNode","node","rootIndex","controller","expandOnClick","selectOnClick","isSubtree","level","renderNode","allowRangeSelection","expandOnSpace","nested","child","handleKeyDown","event","_a","_b","findElementAncestor","root","nodes","index","nextIndex","_c","selectNode","handleNodeClick","selected","elementProps","getAllCheckedNodes","data","checkedState","acc","currentTreeChecked","innerChecked","isChecked","item2","item","findTreeNode","childNode","getChildrenNodesValues","getAllChildrenNodes","isNodeChecked","memoizedIsNodeChecked","isNodeIndeterminate","memoizedIsNodeIndeterminate","getInitialTreeExpandedState","initialState","getTreeExpandedState","expandedNodesValues","state","getInitialCheckedState","useTree","initialSelectedState","initialCheckedState","initialExpandedState","multiple","onNodeCollapse","onNodeExpand","setData","expandedState","setExpandedState","selectedState","setSelectedState","setCheckedState","anchorNode","setAnchorNode","hoveredNode","setHoveredNode","initialize","useCallback","_data","current","toggleExpanded","nextState","collapse","expand","expandAllNodes","next","collapseAllNodes","toggleSelected","select","deselect","clearSelected","checkNode","checkedNodes","uncheckNode","checkAllNodes","uncheckAllNodes","getFlatValues","_theme","levelOffset","getSpacing","Tree","tree","clearSelectionOnOutsideClick","defaultController","clickOutsideRef","useClickOutside","mergedRef","useMergedRef","useMemo","useEffect","IconCheckbox","createReactComponent","IconChecklist","IconLaurelWreath1","IconLaurelWreath2","IconLaurelWreath3","IconLoader","IconReportAnalytics","IconSpeakerphone","IconUsers","IconPointFilled","updateChartLegendPayload","payload","newDataKey","getFilteredChartLegendPayload","ChartLegend","onHighlight","legendPosition","mod","series","showColor","centered","filteredPayload","labels","getSeriesLabels","items","getEveryNthWithCondition","array","n","isValid","i","getAngledTickWidth","contentSize","unitSize","angle","getAngledRectangleWidth","getTickBoundaries","viewBox","sign","sizeKey","isWidth","x","y","width","isVisible","tickPosition","getSize","getNumberIntervalTicks","ticks","interval","getEquidistantTicks","boundaries","getTickSize","minTickGap","initialStart","stepsize","_loop","entry","tickCoord","isShow","_ret","_typeof","o","ownKeys","r","t","_objectSpread","_defineProperty","obj","_toPropertyKey","_toPrimitive","getTicksEnd","len","gap","getTicksStart","preserveEnd","tail","tailSize","tailGap","isTailShow","count","_loop2","getTicks","fontSize","letterSpacing","tick","orientation","tickFormatter","unit","isNumber","Global","candidates","getStringSize","content","isFunction","mathSign","_excluded","_excluded2","_excluded3","_extends","target","source","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_createClass","protoProps","staticProps","_callSuper","_getPrototypeOf","_possibleConstructorReturn","_isNativeReflectConstruct","self","call","_assertThisInitialized","_inherits","subClass","superClass","_setPrototypeOf","p","CartesianAxis","_Component","_this","_ref","restProps","_this$props","viewBoxOld","restPropsOld","shallowEqual","htmlLayer","_this$props2","tickSize","mirror","tickMargin","x1","x2","y1","y2","tx","ty","finalTickSize","_this$props3","textAnchor","_this$props4","verticalAnchor","_this$props5","axisLine","filterProps","needHeight","needWidth","React","clsx","get","_this2","_this$props6","tickLine","stroke","finalTicks","axisProps","customTickProps","tickLineProps","_this2$getTickLineCoo","lineCoord","tickProps","Layer","adaptEventsOfChild","_this3","_this$props7","ticksGenerator","hide","_this$props8","noTicksProps","_ref2","Label","option","tickItem","Text","Component","Background","fill","fillOpacity","ry","renderLineItem","lineItem","_filterProps","restOfFilteredProps","HorizontalGridLines","_props$horizontal","horizontal","horizontalPoints","lineItemProps","VerticalGridLines","_props$vertical","vertical","verticalPoints","HorizontalStripes","horizontalFill","_props$horizontal2","roundedSortedHorizontalPoints","a","b","lastStripe","lineHeight","colorIndex","VerticalStripes","_props$vertical2","verticalFill","roundedSortedVerticalPoints","lineWidth","defaultVerticalCoordinatesGenerator","syncWithTicks","xAxis","offset","getCoordinatesOfGrid","getTicksOfAxis","defaultHorizontalCoordinatesGenerator","yAxis","CartesianGrid","_props$stroke","_props$fill","_props$horizontal3","_props$horizontalFill","_props$vertical3","_props$verticalFill","chartWidth","useChartWidth","chartHeight","useChartHeight","useOffset","propsIncludingDefaults","horizontalValues","verticalValues","useArbitraryXAxis","useYAxisWithFiniteDomainOrRandom","verticalCoordinatesGenerator","horizontalCoordinatesGenerator","isHorizontalValues","generatorResult","warn","isVerticalValues","_generatorResult","_Area","Area","_PureComponent","_len","_key","uniqueId","onAnimationEnd","onAnimationStart","needClip","clipDot","clipPathId","isAnimationActive","isAnimationFinished","dot","points","dataKey","areaProps","customDotProps","dots","dotProps","dotsProps","alpha","baseLine","strokeWidth","startX","endX","maxY","max","startY","endY","maxX","layout","type","connectNulls","isRange","Curve","animationBegin","animationDuration","animationEasing","animationId","_this$state","prevPoints","prevBaseLine","Animate","prevPointsDiffFactor","stepPoints","prevPointIndex","prev","interpolatorX","interpolateNumber","interpolatorY","stepBaseLine","interpolator","isNil","isNan","_interpolator","_this$state2","totalLength","isEqual","top","left","id","hasSinglePoint","layerClass","needClipX","needClipY","_ref2$r","_ref2$strokeWidth","_ref3","hasClipDot","_ref3$clipDot","dotSize","LabelList","nextProps","prevState","PureComponent","chartBaseValue","itemBaseValue","baseValue","numericAxis","domain","domainMax","domainMin","_ref4","xAxisTicks","yAxisTicks","bandSize","stackedData","dataStartIndex","displayedData","hasStack","isHorizontalLayout","getValueByDataKey","isBreakPoint","getCateCoordinateOfLine","dotItem","Dot","XAxisImpl","xAxisId","axisOptions","useXAxisOrThrow","axis","XAxis","_React$Component","YAxisImpl","yAxisId","useYAxisOrThrow","YAxis","AreaChart","generateCategoricalChart","formatAxisMap","PointLabel","valueFormatter","AreaGradient","withGradient","Fragment","AreaSplit","colors","getThemeColor","getSplitOffset","dataMax","dataMin","getDefaultSplitOffset","valueToPercent","textColor","gridColor","withXAxis","withYAxis","curveType","gridProps","withDots","strokeDasharray","gridAxis","yAxisProps","xAxisProps","activeDotProps","tooltipAnimationDuration","legendProps","tooltipProps","withLegend","withTooltip","areaChartProps","splitColors","splitOffset","onMouseLeave","referenceLines","dir","xAxisLabel","yAxisLabel","withRightYAxis","rightYAxisLabel","rightYAxisProps","withPointLabels","baseId","useId","splitId","withXTickLine","withYTickLine","_withGradient","stacked","highlightedArea","setHighlightedArea","shouldHighlight","handleMouseLeave","resolvedClassNames","resolvedStyles","useResolvedStylesApi","dotsAreas","dimmed","createElement","areas","referenceLinesItems","line","ReferenceLine","sharedYAxisProps","ResponsiveContainer","AreaChart$1","Legend","Tooltip","label","ChartTooltip","GovInfo","language","useTranslation","errorMessages","useErrorMessages","title","setTitle","useSessionStorage","body","setBody","isLoading","setIsLoading","error","setError","client","GOV_INFO_CONTENT_TYPE","response","_d","err","CustomAlert","IconInfoCircle","Loading","ErrorMessage","ParseRichText","CampaignAction","isBreakpoint","nomineeLink","loading","handleDiscordRedirect","Stack","RootButton","IconBrandDiscord","NominationStatus","status","text","icon","IconCheck","IconX","NominationAction","nominee","isMobile","address","useAuth","navigate","useNavigate","openedReject","openReject","closeReject","useDisclosure","handleOpenReject","nomineeApplication","useGovernanceContext","openedApplication","openApplication","closeApplication","hasApplication","IconClipboardText","ModalSkeleton","ActionNomination","ViewApplicationModal","VoteInput","totalVotes","votes","setVotes","vote","handleVoteChange","NumberInput","VotingAction","curr","PodiumIcon","silverColor","bronzeColor","Title","ListNumber","phase","results","NominatedBy","nominator","useMediaQuery","isNominatedByMe","cand","nom","UserDetails","NomineeCard","action","nomination","campaign","voting","profilePath","useProfilePath","module","require$$0","this","CryptoJS","undefined","C","C_lib","Base","X32WordArray","C_x64","high","low","words","sigBytes","x64Words","x64WordsLength","x32Words","x64Word","clone","wordsLength","WordArray","superInit","subInit","typedArray","typedArrayByteLength","C_enc","wordArray","utf16Chars","codePoint","utf16Str","utf16StrLength","swapEndian","word","map","base64Chars","byte1","byte2","byte3","triplet","j","paddingChar","base64Str","base64StrLength","reverseMap","paddingIndex","parseLoop","nBytes","bits1","bits2","bitsCombined","urlSafe","Math","Hasher","C_algo","T","MD5","M","offset_i","M_offset_i","H","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","c","d","FF","GG","HH","II","dataWords","nBitsTotal","nBitsLeft","nBitsTotalH","nBitsTotalL","hash","H_i","s","W","SHA1","undef","require$$1","SHA256","SHA224","X64Word","X64WordArray","X64Word_create","K","SHA512","H0","H1","H2","H3","H4","H5","H6","H7","H0h","H0l","H1h","H1l","H2h","H2l","H3h","H3l","H4h","H4l","H5h","H5l","H6h","H6l","H7h","H7l","ah","al","bh","bl","ch","cl","dh","dl","eh","fh","fl","gh","gl","hh","hl","Wil","Wih","Wi","gamma0x","gamma0xh","gamma0xl","gamma0h","gamma0l","gamma1x","gamma1xh","gamma1xl","gamma1h","gamma1l","Wi7","Wi7h","Wi7l","Wi16","Wi16h","Wi16l","chh","chl","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Ki","Kih","Kil","t1l","t1h","t2l","t2h","require$$2","SHA384","RHO_OFFSETS","PI_INDEXES","ROUND_CONSTANTS","newX","newY","LFSR","roundConstantMsw","roundConstantLsw","bitPosition","SHA3","nBlockSizeLanes","M2i","M2i1","lane","round","tMsw","tLsw","Tx","Tx4","Tx1","Tx1Msw","Tx1Lsw","laneIndex","laneMsw","laneLsw","rhoOffset","TPiLane","T0","state0","TLane","Tx1Lane","Tx2Lane","roundConstant","blockSizeBits","outputLengthBytes","outputLengthLanes","hashWords","_zl","_zr","_sl","_sr","_hl","_hr","RIPEMD160","hr","zl","zr","sl","sr","ar","br","cr","dr","er","f1","f2","f3","f4","f5","rotl","z","Utf8","hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","iKey","oKeyWords","iKeyWords","messageUpdate","innerHash","hmac","HMAC","PBKDF2","cfg","password","salt","derivedKey","blockIndex","derivedKeyWords","blockIndexWords","keySize","iterations","block","blockWords","blockWordsLength","intermediate","intermediateWords","EvpKDF","BufferedBlockAlgorithm","Base64","Cipher","xformMode","dataUpdate","finalProcessedData","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","cipher","message","ciphertext","finalProcessedBlocks","C_mode","BlockCipherMode","iv","CBC","blockSize","xorBlock","thisBlock","C_pad","Pkcs7","blockSizeBytes","nPaddingBytes","paddingWord","paddingWords","padding","modeCreator","mode","CipherParams","cipherParams","formatter","C_format","OpenSSLFormatter","openSSLStr","ciphertextWords","encryptor","cipherCfg","plaintext","format","C_kdf","OpenSSLKdf","ivSize","derivedParams","CFB","generateKeystreamAndEncrypt","keystream","CTR","Encryptor","counter","CTRGladman","incWord","b1","b2","b3","incCounter","OFB","ECB","dataSigBytes","lastBytePos","Hex","input","require$$3","require$$4","BlockCipher","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","xi","sx","x4","x8","RCON","AES","keyWords","nRounds","ksRows","keySchedule","ksRow","invKeySchedule","invKsRow","s0","s1","s2","s3","t0","t1","t2","t3","PC1","PC2","BIT_SHIFTS","SBOX_P","SBOX_MASK","DES","keyBits","keyBitPos","subKeys","nSubKey","subKey","bitShift","invSubKeys","exchangeLR","exchangeRL","lBlock","rBlock","f","mask","TripleDES","key1","key2","key3","StreamCipher","RC4","keySigBytes","S","keyByteIndex","keyByte","generateKeystreamWord","keystreamWord","RC4Drop","C_","G","Rabbit","X","IV","IV_0","IV_1","i0","i2","i1","i3","gx","ga","gb","RabbitLegacy","N","ORIG_P","ORIG_S","BLOWFISH_CTX","F","ctx","BlowFish_Encrypt","right","Xl","Xr","temp","BlowFish_Decrypt","BlowFishInit","keysize","Row","Col","keyIndex","Data1","Data2","res","Blowfish","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","require$$26","require$$27","require$$28","require$$29","require$$30","require$$31","require$$32","require$$33","require$$34","bufferReverse","src","buffer","Buffer","makePrefix","last","str","filterKeys","hideFunctions","keys","branch","growBranch","lastStates","showValues","callback","lastKey","circular","lastStatesCopy","lastState","idx","Treeify","lineCallback","hideFunctionsArg","__importDefault","Base_1","buffer_1","crypto_js_1","element","isSorted","eqChecker","buffer1","buffer2","compareFunction","mid","ordering","hexString","paddedHexString","v","withPrefix","hexStr","length","bufferArray","targetBuffer","MerkleTree_1","buffer_reverse_1","sha256_1","treeify_1","MerkleTree","leaves","hashFn","options","layerIndex","layerLimit","combined","leaf","shouldHash","values","jsonStr","parsed","layer","layers","proof","isRightNode","pairIndex","proofs","currentLayer","pushed","leftchildIndex","rightchildIndex","json","treeIndices","depth","leafCount","maximalIndices","redundantIndices","sortedLeafIndices","leavesCount","unevenLayers","proofIndices","layerNodes","proofNodeIndices","unevenLayer","indices","els","ids","hashes","nextIds","pairElement","proofHashes","currentLayerIndices","treeLayer","siblings","uniqueIndices","proofBufs","tested","flags","proofUsed","targetNode","isLeftNode","buffers","proofLeaves","proofitem","indexqueue","pair","proofFlag","leavesLen","totalHashes","leafPos","hashPos","proofPos","bufA","bufB","computedRoot","objs","arr","akey","bkey","pairIdx","treeLayers","leafIndices","leafHashes","totalLeavesCount","leafTuples","indexA","indexB","leafTupleIndices","nextSliceStart","proofTuplesByLayers","sliceStart","parentIndices","parentLayer","parentNodeTreeIndex","MerkleMountainRange_1","MerkleMountainRange","hashLeafFn","peakBaggingFn","hashBranchFn","dataHash","dataHashHex","peakIndexes","peaks","numPeaks","bits","num","reducedIndex","peakIndex","peakBagging","cursor","targetPeak","path","peakMap","bitIndex","peakRef","arrLength","prevPeakMap","itemHash","nextPeakMap","newWidth","cursorIndex","cursorNode","prevPeakExist","nextPeakExist","obtained","itemHashes","tmpWidth","tmpPeakMap","leftIndex","rightIndex","leftHash","rightHash","IncrementalMerkleTree_1","IncrementalMerkleTree","zeroValue","position","levelStartIndex","levelEndIndex","newLeaf","list","pathIndices","leafIndex","MerkleSumTree_1","Bucket","hashed","Leaf","rng","ProofStep","bucket","MerkleSumTree","l","buckets","newBuckets","buf","total","step","MerkleRadixTree_1","MerkleRadixNode","MerkleRadixTree","commonPrefixLength","commonPrefix","childSuffix","newNode","suffix","str1","str2","rootHash","currentHash","concatenatedHash","sibling","exports","oldStyleAddressToAddress32","treeHash","treeHashFn","getTreeKey","treeIndex","subIndex","indexBuffer","stem","getTreeKeyForBasicData","getTreeKeyForCodeHash","getTreeKeyForStorageSlot","storageKey","pos","getTreeKeyForCodeChunk","chunkId","chunkifyCode","code","remainder","bytesToExecData","opcode","pushdataBytes","chunks","prefix","chunk","StemNode","InternalNode","UnifiedBinaryTree","stemBits","existingStemBits","byte","bytes","zero64","zero32","computeMerkle","val","newLevel","entries","serializeNode","deserializeNode","newInternal","bit","newStem","UnifiedBinaryTree_1","RenderNode","markLastBranchLeafs","lastBranchLeafs","nd","isCurrentLastBranchLeaf","Group","mockTreeData","ProofModal","close","setValidVotes","token","useSpacesAuth","electionData","post","STUDIO_BOT","validVotes","candidate","amount","signature","publicViemClient","renderTreeRow","rows","Table","shortenHash","row","ActionIcon","mtree","badLeaves","badTree","badLeaf","badProof","ScrollArea","VotesCard","onClick","openProofModal","openedProof","openProof","closeProof","handleOpenProof","TooltipText","NomineesList","button","electionId","openedViewMore","toggle","acceptedCandidates","randomizedAcceptedCandidates","randCands","sortedCandidates","userCandidate","acceptedCandidatesNoApp","pendingCandidates","rejectedCandidates","campaignLinks","setCampaignLinks","sessionCampaingLinksKey","loadingCampaignLinks","setLoadingCampaignLinks","campaignLinkKeyCondition","fetchDiscordLinks","candidateMap","l1SignBotEndpoint","ELECTIONS_ADDRESS","sessionCampaignLinks","getCampaignLink","prevVotes","showCollapse","List","NoData","Campaign","nominationData","NominateModal","writeContract","useChainFunctions","l1NativeWagmiConfig","getL1nsName","getL1nsAddress","useL1NS","hasBeenNominated","minVoteBalance","canNominate","openedConfirmation","openConfirmation","closeConfirmation","destinationAddress","setDestinationAddress","recipientAddressRef","validSendAddress","setValidSendAddress","isHandle","setIsHandle","handleCheckStatus","setHandleCheckStatus","isReady","setIsReady","confirmCheckbox","setConfirmCheckbox","isAddressNeedsConfirmation","contractCalls","OMMAElection","handleNominate","iconLeft","CheckedIcon","InvalidIcon","AtIcon","handleCheckStatusAction","reverseAddress","BLANK_ADDRESS","reverseName","beenNominated","sendTransaction","resetDestinationHandle","handleDestinationChange","isAddress","destinationError","checkInputHandleAddress","handleCloseConfirmationCancel","handleCloseConfirmation","handler","DEBOUNCE_USERNAME_RESOLVE_TIME","SpecialInputText","Checkbox","ConfirmationLoading","ConfirmationReady","u","h","$","m","g","w","O","D","k","getNextIndex","direction","levelIndex","rowIndex","cellIndex","focusOnNextFocusableControl","controlsRef","controlToFocus","getDirection","getControlsSize","column","handleControlKeyDown","assignTime","originalDate","resultDate","hours","minutes","seconds","ms","dayjs","utcPlugin","timezonePlugin","getTimezoneOffset","date","timezone","updateTimezone","shiftTimezone","disabled","DATES_PROVIDER_DEFAULT_SETTINGS","DatesProviderContext","createContext","useDatesContext","useContext","getLocale","getTimezone","getFirstDayOfWeek","getWeekendDays","getLabelSeparator","formatValue","formatDateWithTimezone","startDate","endDate","HiddenDatesInput","name","form","TimeInput","withSeconds","minTime","maxTime","onChange","checkIfTimeLimitExceeded","minHours","minMinutes","minSeconds","maxHours","maxMinutes","maxSeconds","onTimeBlur","check","InputBase","cx","Day","__staticSelector","weekend","outside","renderDay","inRange","firstInRange","lastInRange","hidden","isStatic","highlightToday","UnstyledButton","getWeekdayNames","locale","firstDayOfWeek","baseDate","getFontSize","WeekdaysRow","weekdayFormat","CellComponent","weekdays","weekday","getEndOfWeek","lastDayOfWeek","getStartOfWeek","getMonthDays","month","consistentWeeks","currentMonth","startOfMonth","endOfMonth","weeks","days","lastWeek","lastDay","nextDay","isSameMonth","comparison","isAfterMinDate","minDate","isBeforeMaxDate","maxDate","getDateInTabOrder","dates","getDateControlProps","excludeDate","hideOutsideDates","enabledDates","selectedDate","currentDate","Month","weekendDays","getDayProps","hideWeekdays","getDayAriaLabel","__getDayRef","__onDayKeyDown","__onDayClick","__onDayMouseEnter","__preventFocus","__stopPropagation","withCellSpacing","dateInTabOrder","cells","ariaLabel","dayProps","isDateInTabOrder","PickerControl","isYearDisabled","year","getYearInTabOrder","years","getYearControlProps","enabledYears","selectedYear","currentYear","getYearsData","decade","rounded","currentYearIndex","YearsList","yearsListFormat","__getControlRef","__onControlKeyDown","__onControlClick","__onControlMouseEnter","yearInTabOrder","yearsRow","controlProps","isYearInTabOrder","isMonthDisabled","getMonthInTabOrder","months","getMonthControlProps","enabledMonths","selectedMonth","getMonthsData","startOfYear","currentMonthIndex","MonthsList","monthsListFormat","monthInTabOrder","monthsRow","isMonthInTabOrder","CalendarHeader","nextIcon","previousIcon","nextLabel","previousLabel","onNext","onPrevious","onLevelClick","nextDisabled","previousDisabled","hasNextLevel","levelControlAriaLabel","withNext","withPrevious","preventFocus","AccordionChevron","getDecadeRange","DecadeLevel","decadeLabelFormat","startOfDecade","endOfDecade","stylesApiProps","_nextDisabled","_previousDisabled","formatDecade","YearLevel","yearLabelFormat","MonthLevel","monthLabelFormat","LevelsGroup","DecadeLevelGroup","numberOfColumns","decades","decadeIndex","currentDecade","YearLevelGroup","yearIndex","MonthLevelGroup","daysRefs","monthIndex","PickerInputBase","inputProps","wrapperProps","placeholder","popoverProps","modalProps","dropdownType","formattedValue","dropdownHandlers","dropdownOpened","clearable","onClear","clearButtonProps","rightSection","shouldClear","readOnly","useInputProps","_rightSection","CloseButton","handleClose","Modal","Input","Popover","_opened","getEmptyValue","useUncontrolledDates","defaultValue","applyTimezone","storedType","_value","_setValue","controlled","useUncontrolled","newDate","_finalValue","levelToNumber","fallback","levelNumberToLevel","levelNumber","clampLevel","minLevel","maxLevel","clamp","Calendar","defaultLevel","onLevelChange","defaultDate","onDateChange","columnsToScroll","ariaLabels","onYearSelect","onMonthSelect","onYearMouseEnter","onMonthMouseEnter","__updateDateOnYearSelect","__updateDateOnMonthSelect","onNextDecade","onPreviousDecade","onNextYear","onPreviousYear","onNextMonth","onPreviousMonth","__timezoneApplied","_level","setLevel","_date","setDate","_columnsToScroll","now","fallbackDate","handleNextMonth","nextDate","handlePreviousMonth","handleNextYear","handlePreviousYear","handleNextDecade","handlePreviousDecade","_event","pickCalendarProps","allowSingleDateInRange","allowDeselect","isInRange","range","_range","useDatesState","setValue","pickedDate","setPickedDate","hoveredDate","setHoveredDate","isDateInRange","onRootMouseLeave","isFirstInRange","isLastInRange","getControlProps","selection","onHoveredDateChange","isNeitherSelected","isBothSelected","DatePicker","DateTimePicker","valueFormat","timeInputProps","submitButtonProps","_valueFormat","timeInputRef","timeInputRefMerged","calendarProps","formatTime","dateValue","timeValue","setTimeValue","currentLevel","setCurrentLevel","handleTimeChange","timeDate","handleDateChange","handleTimeInputKeyDown","CheckIcon","minutesInMonth","minutesInDay","constructFromSymbol","constructFrom","toDate","argument","context","defaultOptions","getDefaultOptions","getTimezoneOffsetInMilliseconds","utcDate","normalizeDates","normalize","compareAsc","dateLeft","dateRight","diff","differenceInCalendarMonths","laterDate","earlierDate","laterDate_","earlierDate_","yearsDiff","monthsDiff","getRoundingMethod","method","number","differenceInMilliseconds","endOfDay","isLastDayOfMonth","differenceInMonths","workingLaterDate","difference","isLastMonthNotFull","differenceInSeconds","formatDistanceLocale","formatDistance","tokenValue","buildFormatLongFn","dateFormats","timeFormats","dateTimeFormats","formatLong","formatRelativeLocale","formatRelative","_baseDate","_options","buildLocalizeFn","valuesArray","defaultWidth","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","rem100","localize","quarter","buildMatchFn","string","matchPattern","matchResult","matchedString","parsePatterns","findIndex","pattern","findKey","object","predicate","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","enUS","defaultLocale","minutesInAlmostTwoDays","localizeOptions","offsetInSeconds","nearestMonth","monthsSinceStartOfYear","StartElection","defaultStart","defaultCampaign","defaultVoting","defaultEnd","startTime","setStartTime","campaignTime","setCampaignTime","votingTime","setVotingTime","endTime","setEndTime","timeError","setTimeError","startTimestamp","campaignTimestamp","votingTimestamp","endTimestamp","checkInputs","handleStartElection","Nomination","open","openedElection","openElection","closeElection","isDownMd","hasNominated","isAdmin","NominationModal","ElectionModal","StartElectionModal","canStartElection","nominationStarted","nominationActive","mock","Paper","getFilteredChartTooltipPayload","mockResults","Results","parentRef","confettiRan","mockData","mockDat","runConfetti","confetti","ProfilesCard","generateColor","splitVotes","vtes","splitVotesArray","totalAmount","splits","splitPercentages","sumOfSplitPercentages","normalizedSplitPercentages","percentage","remainingAmount","parseUnits","splitAmount","splitAmountBigInt","hashVotes","votesArray","bytesArray","toBytes","tempArray","keccak256","Voting","voteAction","votesHash","signMessage","getWagmiConfig","ELECTION_PHASES","timeToPhase","electionTime","nominationTime","NOMINATION","CAMPAIGN","VOTING","RESULTS","electionPhase","Step","active","onStepClick","currentPhase","icons","labelColor","borderColor","Stepper","GovernanceStepper","startTimeRef","timeToStart","initialPhase","testAllElectionPhases","setCurrentPhase","setActive","changePhase","setChangePhase","timeout","handleStepClick","expiryTimestamp","Timer","CommingSoon","council","setCouncil","BodyStack","PageSelector","HelpDrawer"],"mappings":"y0EACA,SAASA,GAAQC,EAAM,CACrB,MAAMC,EAAwB,IAAI,IAClC,MAAO,IAAIC,IAAS,CAClB,MAAMC,EAAM,KAAK,UAAUD,CAAI,EAC/B,GAAID,EAAM,IAAIE,CAAG,EACf,OAAOF,EAAM,IAAIE,CAAG,EAEtB,MAAMC,EAASJ,EAAK,GAAGE,CAAI,EAC3B,OAAAD,EAAM,IAAIE,EAAKC,CAAM,EACdA,CACX,CACA,CCPA,SAASC,GAAsBC,EAAQ,CACrC,GAAI,CAACA,GAAU,OAAOA,GAAW,SAC/B,MAAO,GAET,MAAMC,EAAWD,EAAS,GAC1B,OAAO,KAAK,OAAO,EAAI,GAAKC,GAAY,IAAOA,EAAW,GAAK,EAAE,CACnE,CACA,SAASC,GAAiBC,EAAI,CAC5B,OAAOA,GAAA,MAAAA,EAAI,QAAUA,EAAG,QAAQ,aAAe,MACjD,CACA,MAAMC,GAAM,OAAO,OAAW,KAAe,OAAO,sBACpD,SAASC,GAAY,CACnB,mBAAAC,EACA,yBAAAC,EAA2B,OAC3B,gBAAAC,EAAkB,IAAM,CACvB,EACD,OAAAC,CACF,EAAG,CACD,MAAMN,EAAKO,SAAO,IAAI,EAChBC,EAAkB,EAClBC,EAAkB,CACtB,QAAS,OACT,OAAQ,EACR,SAAU,QACd,EACQ,CAACC,EAAQC,CAAY,EAAIC,EAAQ,SAACN,EAAS,CAAA,EAAKG,CAAe,EAC/DI,EAAaC,GAAc,CAC/BC,GAAAA,UAAU,IAAMJ,EAAaG,CAAS,CAAC,CAC3C,EACQE,EAAeF,GAAc,CACjCD,EAAWI,IAAe,CAAE,GAAGA,EAAW,GAAGH,CAAW,EAAC,CAC7D,EACE,SAASI,EAAoBrB,EAAQ,CACnC,MAAMsB,EAAYhB,GAAsBP,GAAsBC,CAAM,EACpE,MAAO,CACL,WAAY,UAAUsB,CAAS,MAAMf,CAAwB,aAAae,CAAS,MAAMf,CAAwB,EACvH,CACG,CACDgB,GAAa,IAAM,CACb,OAAOnB,IAAQ,YAEfA,GADEK,EACE,IAAM,CACRU,EAAY,CAAE,WAAY,SAAU,QAAS,QAAS,SAAU,QAAQ,CAAE,EAC1Ef,GAAI,IAAM,CACR,MAAMJ,EAASE,GAAiBC,CAAE,EAClCgB,EAAY,CAAE,GAAGE,EAAoBrB,CAAM,EAAG,OAAAA,CAAQ,CAAA,CAClE,CAAW,CACX,EAEY,IAAM,CACR,MAAMA,EAASE,GAAiBC,CAAE,EAClCgB,EAAY,CAAE,GAAGE,EAAoBrB,CAAM,EAAG,WAAY,SAAU,OAAAA,CAAM,CAAE,EAC5EI,GAAI,IAAMe,EAAY,CAAE,OAAQR,EAAiB,SAAU,QAAU,CAAA,CAAC,CAChF,CANS,CAST,EAAK,CAACF,CAAM,CAAC,EACX,MAAMe,EAAuBC,GAAM,CACjC,GAAI,EAAAA,EAAE,SAAWtB,EAAG,SAAWsB,EAAE,eAAiB,UAGlD,GAAIhB,EAAQ,CACV,MAAMT,EAASE,GAAiBC,CAAE,EAC9BH,IAAWa,EAAO,OACpBG,EAAU,CAAE,CAAA,EAEZG,EAAY,CAAE,OAAAnB,CAAM,CAAE,EAExBQ,GACN,MAAeK,EAAO,SAAWF,IAC3BK,EAAUJ,CAAe,EACzBJ,IAEN,EACE,SAASkB,EAAiB,CAAE,MAAAC,EAAQ,CAAE,EAAE,OAAAC,EAAS,MAAO,GAAGC,CAAM,EAAG,GAAI,CACtE,MAAMC,EAAWD,EAAKD,CAAM,EAC5B,MAAO,CACL,cAAe,CAACnB,EAChB,GAAGoB,EACH,CAACD,CAAM,EAAGG,GAAU5B,EAAI2B,CAAQ,EAChC,gBAAiBN,EACjB,MAAO,CAAE,UAAW,aAAc,GAAGG,EAAO,GAAGd,CAAQ,CAC7D,CACG,CACD,OAAOa,CACT,CCzEA,MAAMM,GAAe,CACnB,mBAAoB,IACpB,yBAA0B,OAC1B,eAAgB,EAClB,EACMC,GAAWC,GAAQ,CAACC,EAAOC,IAAQ,CACvC,KAAM,CACJ,SAAAC,EACA,GAAI5B,EACJ,mBAAAH,EACA,yBAAAC,EACA,MAAAoB,EACA,gBAAAnB,EACA,eAAA8B,EACA,GAAGC,CACJ,EAAGC,GAAS,WAAYR,GAAcG,CAAK,EACtCM,EAAQC,KACRC,EAAqBC,KAErBC,GADeJ,EAAM,qBAAuBE,EAAqB,IACvC,EAAIrC,EAC9BoB,EAAmBrB,GAAY,CACnC,OAAAI,EACA,mBAAoBoC,EACpB,yBAAAtC,EACA,gBAAAC,CACJ,CAAG,EACD,OAAIqC,IAAa,EACRpC,EAAyBqC,EAAG,IAACC,GAAK,CAAE,GAAGR,EAAQ,SAAAF,CAAQ,CAAE,EAAI,KAE/CS,EAAG,IACxBC,GACA,CACE,GAAGrB,EAAiB,CAClB,MAAO,CACL,QAASjB,GAAU,CAAC6B,EAAiB,EAAI,EACzC,WAAYA,EAAiB,WAAWO,CAAQ,MAAMtC,CAAwB,GAAK,OACnF,GAAGyC,GAAerB,EAAOc,CAAK,CAC/B,EACD,IAAAL,EACA,GAAGG,CACX,CAAO,EACD,SAAAF,CACD,CACL,CACA,CAAC,EACDJ,GAAS,YAAc,yBC7DvB,IAAIgB,GAAU,CAAC,KAAO,aAAa,aAAe,aAAa,cAAgB,aAAa,aAAe,aAAa,gBAAkB,WAAW,ECmBrJ,MAAMjB,GAAe,CACnB,WAAY,EACd,EACMkB,GAAeC,GAAmB,CAACC,EAAG,CAAE,OAAAC,EAAQ,KAAAC,CAAI,KAAQ,CAChE,KAAM,CACJ,cAAeD,IAAW,OAAS,OAASE,GAAUF,CAAM,EAC5D,YAAaG,GAAIF,CAAI,CACtB,CACH,EAAE,EACIG,GAAcC,GAAmB,CAACC,EAAQvB,IAAQ,CACtD,MAAMD,EAAQK,GAAS,cAAeR,GAAc2B,CAAM,EACpD,CACJ,WAAAC,EACA,UAAAC,EACA,MAAAlC,EACA,OAAAd,EACA,SAAAiD,EACA,KAAAC,EACA,MAAAC,EACA,KAAAV,EACA,OAAAD,EACA,WAAAY,EACA,SAAA5B,EACA,QAAA6B,EACA,GAAG3B,CACJ,EAAGC,GAAS,cAAeR,GAAcG,CAAK,EACzCgC,EAAYC,GAAU,CAC1B,KAAM,cACN,MAAAjC,EACJ,QAAIc,GACA,UAAAY,EACA,MAAAlC,EACA,WAAAiC,EACA,OAAA/C,EACA,SAAAiD,EACA,KAAAC,EACJ,aAAIb,EACJ,CAAG,EACD,OAAuBmB,EAAI,KACzBtB,GACA,CACE,IAAAX,EACA,QAAA8B,EACA,KAAAZ,EACA,GAAGa,EAAU,OAAQ,CAAE,UAAW,EAAI,CAAE,EACxC,GAAG5B,EACH,SAAU,CACQO,EAAAA,IAAI,OAAQ,CAAE,GAAGqB,EAAU,cAAc,CAAC,CAAE,EAC5DF,GAA8BnB,EAAG,IAAC,OAAQ,CAAE,GAAGqB,EAAU,eAAe,EAAG,EAC3DrB,EAAAA,IAAI,OAAQ,CAAE,GAAGqB,EAAU,eAAgB,CAAE,MAAO,CAAE,gBAAiBH,CAAO,CAAA,CAAE,CAAC,CAAE,EACnFlB,EAAG,IAAC,OAAQ,CAAE,GAAGqB,EAAU,iBAAiB,EAAG,SAAA9B,EAAU,CAC1E,CACF,CACL,CACA,CAAC,EACDoB,GAAY,QAAUR,GACtBQ,GAAY,YAAc,4BC9D1B,SAASa,GAAeC,EAAQC,EAAOC,EAAY,CACjD,GAAI,CAACF,GAAU,CAACC,EACd,MAAO,GAET,MAAME,EAAcD,EAAW,QAAQF,CAAM,EACvCI,EAAaF,EAAW,QAAQD,CAAK,EACrCI,EAAQ,KAAK,IAAIF,EAAaC,CAAU,EACxCE,EAAM,KAAK,IAAIH,EAAaC,CAAU,EAC5C,OAAOF,EAAW,MAAMG,EAAOC,EAAM,CAAC,CACxC,CACA,SAASC,GAAS,CAChB,KAAAC,EACA,UAAAZ,EACA,UAAAa,EACA,WAAAC,EACA,cAAAC,EACA,cAAAC,EACA,UAAAC,EACA,MAAAC,EAAQ,EACR,WAAAC,EACA,WAAAb,EACA,oBAAAc,EACA,cAAAC,CACF,EAAG,CACD,MAAMpD,EAAM1B,SAAO,IAAI,EACjB+E,GAAUV,EAAK,UAAY,CAAA,GAAI,IAAKW,GAA0B5C,EAAG,IACrEgC,GACA,CACE,KAAMY,EACN,WAAAjB,EACA,UAAAN,EACA,UAAW,OACX,MAAOkB,EAAQ,EACf,WAAAJ,EACA,cAAAC,EACA,UAAW,GACX,WAAAI,EACA,cAAAH,EACA,oBAAAI,EACA,cAAAC,CACD,EACDE,EAAM,KACV,CAAG,EACKC,EAAiBC,GAAU,WAmB/B,GAlBIA,EAAM,YAAY,OAAS,eAC7BA,EAAM,gBAAe,EACrBA,EAAM,eAAc,EAChBX,EAAW,cAAcF,EAAK,KAAK,GACrCc,EAAAD,EAAM,cAAc,cAAc,iBAAiB,IAAnD,MAAAC,EAAsD,QAEtDZ,EAAW,OAAOF,EAAK,KAAK,GAG5Ba,EAAM,YAAY,OAAS,cAC7BA,EAAM,gBAAe,EACrBA,EAAM,eAAc,EAChBX,EAAW,cAAcF,EAAK,KAAK,IAAMA,EAAK,UAAY,CAAA,GAAI,OAAS,EACzEE,EAAW,SAASF,EAAK,KAAK,EACrBK,KACTU,EAAAC,GAAoBH,EAAM,cAAe,iBAAiB,IAA1D,MAAAE,EAA6D,UAG7DF,EAAM,YAAY,OAAS,aAAeA,EAAM,YAAY,OAAS,UAAW,CAClF,MAAMI,EAAOD,GAAoBH,EAAM,cAAe,kBAAkB,EACxE,GAAI,CAACI,EACH,OAEFJ,EAAM,gBAAe,EACrBA,EAAM,eAAc,EACpB,MAAMK,EAAQ,MAAM,KAAKD,EAAK,iBAAiB,iBAAiB,CAAC,EAC3DE,EAAQD,EAAM,QAAQL,EAAM,aAAa,EAC/C,GAAIM,IAAU,GACZ,OAEF,MAAMC,EAAYP,EAAM,YAAY,OAAS,YAAcM,EAAQ,EAAIA,EAAQ,EAE/E,IADAE,EAAAH,EAAME,CAAS,IAAf,MAAAC,EAAkB,QACdR,EAAM,SAAU,CAClB,MAAMS,EAAaJ,EAAME,CAAS,EAC9BE,GACFpB,EAAW,iBACTX,GAAeW,EAAW,WAAYoB,EAAW,QAAQ,MAAO5B,CAAU,CACtF,CAEO,CACF,CACGmB,EAAM,YAAY,OAAS,SAAWJ,IACxCI,EAAM,gBAAe,EACrBA,EAAM,eAAc,EACpBX,EAAW,eAAeF,EAAK,KAAK,EAE1C,EACQuB,EAAmBV,GAAU,SACjCA,EAAM,gBAAe,EACjBL,GAAuBK,EAAM,UAAYX,EAAW,YACtDA,EAAW,iBAAiBX,GAAeW,EAAW,WAAYF,EAAK,MAAON,CAAU,CAAC,GACzFoB,EAAAzD,EAAI,UAAJ,MAAAyD,EAAa,UAEbX,GAAiBD,EAAW,eAAeF,EAAK,KAAK,EACrDI,GAAiBF,EAAW,OAAOF,EAAK,KAAK,GAC7Ce,EAAA1D,EAAI,UAAJ,MAAA0D,EAAa,QAEnB,EACQS,EAAWtB,EAAW,cAAc,SAASF,EAAK,KAAK,EACvDyB,EAAe,CACnB,GAAGrC,EAAU,OAAO,EACpB,QAASmC,EACT,gBAAiBC,GAAY,OAC7B,aAAcxB,EAAK,MACnB,eAAgBE,EAAW,cAAgBF,EAAK,OAAS,MAC7D,EACE,OAAuBV,EAAI,KACzB,KACA,CACE,GAAGF,EAAU,OAAQ,CACnB,MAAO,CAAE,iBAAkB,8BAA8BkB,EAAQ,CAAC,GAAK,CAC/E,CAAO,EACD,KAAM,WACN,gBAAiBkB,EACjB,aAAcxB,EAAK,MACnB,gBAAiBwB,GAAY,OAC7B,eAAgBtB,EAAW,cAAgBF,EAAK,OAAS,OACzD,aAAcM,EACd,SAAUL,IAAc,EAAI,EAAI,GAChC,UAAWW,EACX,IAAAvD,EACA,YAAcwD,GAAU,CACtBA,EAAM,gBAAe,EACrBX,EAAW,eAAeF,EAAK,KAAK,CACrC,EACD,aAAea,GAAU,CACvBA,EAAM,gBAAe,EACrBX,EAAW,eAAe,IAAI,CAC/B,EACD,SAAU,CACR,OAAOK,GAAe,WAAaA,EAAW,CAC5C,KAAAP,EACA,MAAAM,EACA,SAAAkB,EACA,KAAMtB,EACN,SAAUA,EAAW,cAAcF,EAAK,KAAK,GAAK,GAClD,YAAa,MAAM,QAAQA,EAAK,QAAQ,GAAKA,EAAK,SAAS,OAAS,EACpE,aAAAyB,CACV,CAAS,EAAoB1D,EAAAA,IAAI,MAAO,CAAE,GAAG0D,EAAc,SAAUzB,EAAK,MAAO,EACzEE,EAAW,cAAcF,EAAK,KAAK,GAAKU,EAAO,OAAS,GAAqB3C,EAAAA,IAAI,KAAM,CAAE,KAAM,QAAS,GAAGqB,EAAU,SAAS,EAAG,aAAckB,EAAO,SAAUI,EAAQ,CACzK,CACF,CACL,CACA,CACAX,GAAS,YAAc,yBCjKvB,SAAS2B,GAAmBC,EAAMC,EAAcC,EAAM,CAAA,EAAI,CACxD,MAAMC,EAAqB,CAAA,EAC3B,UAAW9B,KAAQ2B,EACjB,GAAI,MAAM,QAAQ3B,EAAK,QAAQ,GAAKA,EAAK,SAAS,OAAS,EAAG,CAC5D,MAAM+B,EAAeL,GAAmB1B,EAAK,SAAU4B,EAAcC,CAAG,EACxE,GAAIE,EAAa,mBAAmB,SAAW/B,EAAK,SAAS,OAAQ,CACnE,MAAMgC,EAAYD,EAAa,mBAAmB,MAAOE,GAAUA,EAAM,OAAO,EAC1EC,EAAO,CACX,QAASF,EACT,cAAe,CAACA,EAChB,MAAOhC,EAAK,MACZ,YAAa,EACvB,EACQ8B,EAAmB,KAAKI,CAAI,EAC5BL,EAAI,KAAKK,CAAI,CACd,SAAUH,EAAa,mBAAmB,OAAS,EAAG,CACrD,MAAMG,EAAO,CAAE,QAAS,GAAO,cAAe,GAAM,MAAOlC,EAAK,MAAO,YAAa,EAAI,EACxF8B,EAAmB,KAAKI,CAAI,EAC5BL,EAAI,KAAKK,CAAI,CACd,CACF,SAAUN,EAAa,SAAS5B,EAAK,KAAK,EAAG,CAC5C,MAAMkC,EAAO,CACX,QAAS,GACT,cAAe,GACf,MAAOlC,EAAK,MACZ,YAAa,EACrB,EACM8B,EAAmB,KAAKI,CAAI,EAC5BL,EAAI,KAAKK,CAAI,CACd,CAEH,MAAO,CAAE,OAAQL,EAAK,mBAAAC,EACxB,CChCA,SAASK,GAAa1C,EAAOkC,EAAM,CACjC,UAAW3B,KAAQ2B,EAAM,CACvB,GAAI3B,EAAK,QAAUP,EACjB,OAAOO,EAET,GAAI,MAAM,QAAQA,EAAK,QAAQ,EAAG,CAChC,MAAMoC,EAAYD,GAAa1C,EAAOO,EAAK,QAAQ,EACnD,GAAIoC,EACF,OAAOA,CAEV,CACF,CACD,OAAO,IACT,CACA,SAASC,GAAuB5C,EAAOkC,EAAME,EAAM,CAAA,EAAI,CACrD,MAAM7B,EAAOmC,GAAa1C,EAAOkC,CAAI,EACrC,OAAK3B,EAGD,CAAC,MAAM,QAAQA,EAAK,QAAQ,GAAKA,EAAK,SAAS,SAAW,EACrD,CAACA,EAAK,KAAK,GAEpBA,EAAK,SAAS,QAASW,GAAU,CAC3B,MAAM,QAAQA,EAAM,QAAQ,GAAKA,EAAM,SAAS,OAAS,EAC3D0B,GAAuB1B,EAAM,MAAOgB,EAAME,CAAG,EAE7CA,EAAI,KAAKlB,EAAM,KAAK,CAE1B,CAAG,EACMkB,GAZEA,CAaX,CACA,SAASS,GAAoBX,EAAM,CACjC,OAAOA,EAAK,OAAO,CAACE,EAAK7B,KACnB,MAAM,QAAQA,EAAK,QAAQ,GAAKA,EAAK,SAAS,OAAS,EACzD6B,EAAI,KAAK,GAAGS,GAAoBtC,EAAK,QAAQ,CAAC,EAE9C6B,EAAI,KAAK7B,EAAK,KAAK,EAEd6B,GACN,CAAE,CAAA,CACP,CC1BA,SAASU,GAAc9C,EAAOkC,EAAMC,EAAc,CAChD,OAAIA,EAAa,SAAW,EACnB,GAELA,EAAa,SAASnC,CAAK,EACtB,GAEYiC,GAAmBC,EAAMC,CAAY,EAAE,OACxC,KAAM5B,GAASA,EAAK,QAAUP,GAASO,EAAK,OAAO,CACzE,CACA,MAAMwC,GAAwB9H,GAAQ6H,EAAa,ECVnD,SAASE,GAAoBhD,EAAOkC,EAAMC,EAAc,CACtD,OAAIA,EAAa,SAAW,EACnB,GAEYF,GAAmBC,EAAMC,CAAY,EAAE,OACxC,KAAM5B,GAASA,EAAK,QAAUP,GAASO,EAAK,aAAa,CAC/E,CACA,MAAM0C,GAA8BhI,GAAQ+H,EAAmB,ECf/D,SAASE,GAA4BC,EAAcjB,EAAMlC,EAAOoC,EAAM,CAAA,EAAI,CACxE,OAAAF,EAAK,QAAS3B,GAAS,CACrB6B,EAAI7B,EAAK,KAAK,EAAIA,EAAK,SAAS4C,EAAeA,EAAa5C,EAAK,KAAK,EAAIA,EAAK,QAAUP,EACrF,MAAM,QAAQO,EAAK,QAAQ,GAC7B2C,GAA4BC,EAAc5C,EAAK,SAAUP,EAAOoC,CAAG,CAEzE,CAAG,EACMA,CACT,CACA,SAASgB,GAAqBlB,EAAMmB,EAAqB,CACvD,MAAMC,EAAQJ,GAA4B,CAAE,EAAEhB,EAAM,CAAE,CAAA,EAEpD,OAAO,OAAO,KAAKoB,CAAK,EAAE,OAAO,CAAClB,EAAK/G,KAAS,CAAE,GAAG+G,EAAK,CAAC/G,CAAG,EAAG,EAAI,GAAK,CAAE,CAAA,CAMhF,CACA,SAASkI,GAAuBJ,EAAcjB,EAAM,CAClD,MAAME,EAAM,CAAA,EACZ,OAAAe,EAAa,QAAS5C,GAAS6B,EAAI,KAAK,GAAGQ,GAAuBrC,EAAM2B,CAAI,CAAC,CAAC,EACvE,MAAM,KAAK,IAAI,IAAIE,CAAG,CAAC,CAChC,CACA,SAASoB,GAAQ,CACf,qBAAAC,EAAuB,CAAE,EACzB,oBAAAC,EAAsB,CAAE,EACxB,qBAAAC,EAAuB,CAAE,EACzB,SAAAC,EAAW,GACX,eAAAC,EACA,aAAAC,CACF,EAAI,GAAI,CACN,KAAM,CAAC5B,EAAM6B,CAAO,EAAIxH,EAAQ,SAAC,CAAE,CAAA,EAC7B,CAACyH,EAAeC,CAAgB,EAAI1H,EAAQ,SAACoH,CAAoB,EACjE,CAACO,EAAeC,CAAgB,EAAI5H,EAAQ,SAACkH,CAAoB,EACjE,CAACtB,EAAciC,CAAe,EAAI7H,EAAQ,SAACmH,CAAmB,EAC9D,CAACW,EAAYC,CAAa,EAAI/H,EAAQ,SAAC,IAAI,EAC3C,CAACgI,EAAaC,CAAc,EAAIjI,EAAQ,SAAC,IAAI,EAC7CkI,EAAaC,EAAW,YAC3BC,GAAU,CACTV,EAAkBW,GAAY1B,GAA4B0B,EAASD,EAAOT,CAAa,CAAC,EACxFE,EAAiBQ,GAAYrB,GAAuBqB,EAASD,CAAK,CAAC,EACnEZ,EAAQY,CAAK,CACd,EACD,CAACT,EAAe/B,CAAY,CAChC,EACQ0C,EAAiBH,EAAW,YAC/B1E,GAAU,CACTiE,EAAkBW,GAAY,CAC5B,MAAME,EAAY,CAAE,GAAGF,EAAS,CAAC5E,CAAK,EAAG,CAAC4E,EAAQ5E,CAAK,GACvD,OAAA8E,EAAU9E,CAAK,EAAI8D,GAAA,MAAAA,EAAe9D,GAAS6D,GAAA,MAAAA,EAAiB7D,GACrD8E,CACf,CAAO,CACF,EACD,CAACjB,EAAgBC,CAAY,CACjC,EACQiB,EAAWL,EAAW,YACzB1E,GAAU,CACTiE,EAAkBW,IACZA,EAAQ5E,CAAK,IAAM,KACrB6D,GAAA,MAAAA,EAAiB7D,IAEZ,CAAE,GAAG4E,EAAS,CAAC5E,CAAK,EAAG,EAAK,EACpC,CACF,EACD,CAAC6D,CAAc,CACnB,EACQmB,EAASN,EAAW,YACvB1E,GAAU,CACTiE,EAAkBW,IACZA,EAAQ5E,CAAK,IAAM,KACrB8D,GAAA,MAAAA,EAAe9D,IAEV,CAAE,GAAG4E,EAAS,CAAC5E,CAAK,EAAG,EAAI,EACnC,CACF,EACD,CAAC8D,CAAY,CACjB,EACQmB,EAAiBP,EAAAA,YAAY,IAAM,CACvCT,EAAkBW,GAAY,CAC5B,MAAMM,EAAO,CAAE,GAAGN,GAClB,cAAO,KAAKM,CAAI,EAAE,QAAS7J,GAAQ,CACjC6J,EAAK7J,CAAG,EAAI,EACpB,CAAO,EACM6J,CACb,CAAK,CACF,EAAE,CAAE,CAAA,EACCC,EAAmBT,EAAAA,YAAY,IAAM,CACzCT,EAAkBW,GAAY,CAC5B,MAAMM,EAAO,CAAE,GAAGN,GAClB,cAAO,KAAKM,CAAI,EAAE,QAAS7J,GAAQ,CACjC6J,EAAK7J,CAAG,EAAI,EACpB,CAAO,EACM6J,CACb,CAAK,CACF,EAAE,CAAE,CAAA,EACCE,EAAiBV,EAAW,YAC/B1E,GAAUmE,EAAkBS,GACtBhB,EAQDgB,EAAQ,SAAS5E,CAAK,GACxBsE,EAAc,IAAI,EACXM,EAAQ,OAAQnC,GAASA,IAASzC,CAAK,IAEhDsE,EAActE,CAAK,EACZ,CAAC,GAAG4E,EAAS5E,CAAK,GAZnB4E,EAAQ,SAAS5E,CAAK,GACxBsE,EAAc,IAAI,EACX,KAETA,EAActE,CAAK,EACZ,CAACA,CAAK,EAQhB,EACD,CAAE,CACN,EACQqF,EAASX,cAAa1E,GAAU,CACpCsE,EAActE,CAAK,EACnBmE,EACGS,GAAYhB,EAAWgB,EAAQ,SAAS5E,CAAK,EAAI4E,EAAU,CAAC,GAAGA,EAAS5E,CAAK,EAAI,CAACA,CAAK,CAC9F,CACG,EAAE,CAAE,CAAA,EACCsF,EAAWZ,cAAa1E,GAAU,CACtCqE,IAAerE,GAASsE,EAAc,IAAI,EAC1CH,EAAkBS,GAAYA,EAAQ,OAAQnC,GAASA,IAASzC,CAAK,CAAC,CACvE,EAAE,CAAE,CAAA,EACCuF,EAAgBb,EAAAA,YAAY,IAAM,CACtCP,EAAiB,CAAE,CAAA,EACnBG,EAAc,IAAI,CACnB,EAAE,CAAE,CAAA,EACCkB,EAAYd,EAAW,YAC1B1E,GAAU,CACT,MAAMyF,EAAe7C,GAAuB5C,EAAOkC,CAAI,EACvDkC,EAAiBQ,GAAY,MAAM,KAAqB,IAAI,IAAI,CAAC,GAAGA,EAAS,GAAGa,CAAY,CAAC,CAAC,CAAC,CAChG,EACD,CAACvD,CAAI,CACT,EACQwD,EAAchB,EAAW,YAC5B1E,GAAU,CACT,MAAMyF,EAAe7C,GAAuB5C,EAAOkC,CAAI,EACvDkC,EAAiBQ,GAAYA,EAAQ,OAAQnC,GAAS,CAACgD,EAAa,SAAShD,CAAI,CAAC,CAAC,CACpF,EACD,CAACP,CAAI,CACT,EACQyD,EAAgBjB,EAAAA,YAAY,IAAM,CACtCN,EAAgB,IAAMvB,GAAoBX,CAAI,CAAC,CACnD,EAAK,CAACA,CAAI,CAAC,EACH0D,EAAkBlB,EAAAA,YAAY,IAAM,CACxCN,EAAgB,CAAE,CAAA,CACnB,EAAE,CAAE,CAAA,EAIL,MAAO,CACL,SAAAR,EACA,cAAAI,EACA,cAAAE,EACA,aAAA/B,EACA,WAAAkC,EACA,WAAAI,EACA,eAAAI,EACA,SAAAE,EACA,OAAAC,EACA,eAAAC,EACA,iBAAAE,EACA,iBAAAlB,EACA,UAAAuB,EACA,YAAAE,EACA,cAAAC,EACA,gBAAAC,EACA,gBAAAxB,EACA,eAAAgB,EACA,OAAAC,EACA,SAAAC,EACA,cAAAC,EACA,iBAAApB,EACA,YAAAI,EACA,eAAAC,EACA,gBA5BsB,IAAMvC,GAAmBC,EAAMC,CAAY,EAAE,OA6BnE,cA5BqBnC,GAAU+C,GAAsB/C,EAAOkC,EAAMC,CAAY,EA6B9E,oBA5B2BnC,GAAUiD,GAA4BjD,EAAOkC,EAAMC,CAAY,CA6B9F,CACA,CC3LA,IAAI1D,GAAU,CAAC,KAAO,aAAa,QAAU,YAAY,KAAO,aAAa,MAAQ,YAAY,ECoBjG,SAASoH,GAAc3D,EAAM,CAC3B,OAAOA,EAAK,OAAO,CAACE,EAAKK,KACvBL,EAAI,KAAKK,EAAK,KAAK,EACfA,EAAK,UACPL,EAAI,KAAK,GAAGyD,GAAcpD,EAAK,QAAQ,CAAC,EAEnCL,GACN,CAAE,CAAA,CACP,CACA,MAAM5E,GAAe,CACnB,cAAe,GACf,oBAAqB,GACrB,cAAe,EACjB,EACMkB,GAAeC,GAAmB,CAACmH,EAAQ,CAAE,YAAAC,CAAW,KAAQ,CACpE,KAAM,CACJ,iBAAkBC,GAAWD,CAAW,CACzC,CACH,EAAE,EACIE,GAAOvI,GAAQ,CAACyB,EAAQvB,IAAQ,CACpC,MAAMD,EAAQK,GAAS,OAAQR,GAAc2B,CAAM,EAC7C,CACJ,WAAAC,EACA,UAAAC,EACA,MAAAlC,EACA,OAAAd,EACA,SAAAiD,EACA,KAAAC,EACA,KAAA2C,EACA,cAAAxB,EACA,KAAAwF,EACA,WAAApF,EACA,cAAAH,EACA,6BAAAwF,EACA,oBAAApF,EACA,cAAAC,EACA,YAAA+E,EACA,GAAGhI,CACJ,EAAGJ,EACEyI,EAAoB5C,KACpB/C,EAAayF,GAAQE,EACrBzG,EAAYC,GAAU,CAC1B,KAAM,OACV,QAAInB,GACA,MAAAd,EACA,UAAA0B,EACA,MAAAlC,EACA,WAAAiC,EACA,OAAA/C,EACA,SAAAiD,EACA,KAAAC,EACJ,aAAIb,EACJ,CAAG,EACK2H,EAAkBC,GACtB,IAAMH,GAAgC1F,EAAW,cAAe,CACpE,EACQ8F,EAAYC,GAAa5I,EAAKyI,CAAe,EAC7CpG,EAAawG,EAAAA,QAAQ,IAAMZ,GAAc3D,CAAI,EAAG,CAACA,CAAI,CAAC,EAC5DwE,EAAAA,UAAU,IAAM,CACdjG,EAAW,WAAWyB,CAAI,CAC9B,EAAK,CAACA,CAAI,CAAC,EACT,MAAMT,EAAQS,EAAK,IAAI,CAAC3B,EAAMmB,IAA0BpD,EAAG,IACzDgC,GACA,CACE,KAAAC,EACA,UAAAZ,EACA,UAAW+B,EACX,cAAAhB,EACA,cAAAC,EACA,WAAAF,EACA,WAAAK,EACA,WAAAb,EACA,oBAAAc,EACA,cAAAC,CACD,EACDT,EAAK,KACT,CAAG,EACD,OAAuBjC,EAAG,IACxBC,GACA,CACE,UAAW,KACX,IAAKgI,EACL,GAAG5G,EAAU,MAAM,EACnB,GAAG5B,EACH,KAAM,OACN,uBAAwB0C,EAAW,SACnC,iBAAkB,GAClB,SAAUgB,CACX,CACL,CACA,CAAC,EACDwE,GAAK,YAAc,qBACnBA,GAAK,QAAUxH,GCjHf;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,IAAIkI,GAAeC,GAAqB,UAAW,WAAY,eAAgB,CAAC,CAAC,OAAQ,CAAE,EAAK,iBAAkB,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,mEAAoE,IAAO,OAAS,CAAA,CAAC,CAAC,ECT3O;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,IAAIC,GAAgBD,GAAqB,UAAW,YAAa,gBAAiB,CAAC,CAAC,OAAQ,CAAE,EAAK,wEAAyE,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,kBAAmB,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,SAAU,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,UAAW,IAAO,OAAS,CAAA,CAAC,CAAC,ECT/U;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,IAAIE,GAAoBF,GAAqB,UAAW,kBAAmB,oBAAqB,CAAC,CAAC,OAAQ,CAAE,EAAK,8GAA+G,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,0CAA2C,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,kIAAmI,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,mIAAoI,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,uIAAwI,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,sIAAuI,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,mIAAoI,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,iIAAkI,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,eAAgB,IAAO,OAAS,CAAA,CAAC,CAAC,ECTj2C;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,IAAIG,GAAoBH,GAAqB,UAAW,kBAAmB,oBAAqB,CAAC,CAAC,OAAQ,CAAE,EAAK,8GAA+G,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,0CAA2C,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,kIAAmI,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,mIAAoI,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,uIAAwI,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,sIAAuI,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,mIAAoI,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,iIAAkI,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,+EAAgF,IAAO,OAAS,CAAA,CAAC,CAAC,ECTj6C;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,IAAII,GAAoBJ,GAAqB,UAAW,kBAAmB,oBAAqB,CAAC,CAAC,OAAQ,CAAE,EAAK,8GAA+G,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,0CAA2C,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,kIAAmI,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,mIAAoI,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,uIAAwI,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,sIAAuI,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,mIAAoI,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,iIAAkI,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,4DAA6D,IAAO,OAAS,CAAA,CAAC,CAAC,ECT94C;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,IAAIK,GAAaL,GAAqB,UAAW,SAAU,aAAc,CAAC,CAAC,OAAQ,CAAE,EAAK,aAAc,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,yBAA0B,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,aAAc,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,yBAA0B,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,aAAc,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,yBAA0B,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,aAAc,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,yBAA0B,IAAO,OAAO,CAAE,CAAC,CAAC,ECTjgB;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,IAAIM,GAAsBN,GAAqB,UAAW,mBAAoB,sBAAuB,CAAC,CAAC,OAAQ,CAAE,EAAK,mFAAoF,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,+EAAgF,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,WAAY,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,YAAa,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,YAAa,IAAO,OAAS,CAAA,CAAC,CAAC,ECT9d;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,IAAIO,GAAmBP,GAAqB,UAAW,eAAgB,mBAAoB,CAAC,CAAC,OAAQ,CAAE,EAAK,sBAAuB,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,gDAAiD,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,gIAAiI,IAAO,OAAO,CAAE,CAAC,CAAC,ECT7Y;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,IAAIQ,GAAYR,GAAqB,UAAW,QAAS,YAAa,CAAC,CAAC,OAAQ,CAAE,EAAK,yCAA0C,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,4CAA6C,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,4BAA6B,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,+BAAgC,IAAO,OAAS,CAAA,CAAC,CAAC,ECTtW;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,IAAIS,GAAkBT,GAAqB,SAAU,eAAgB,kBAAmB,CAAC,CAAC,OAAQ,CAAE,EAAK,8EAA+E,IAAO,OAAO,CAAE,CAAC,CAAC,ECRtMnI,GAAU,CAAC,OAAS,WAAW,WAAa,aAAa,gBAAkB,aAAa,eAAiB,YAAY,ECKzH,SAAS6I,GAAyBC,EAAS,CACzC,OAAOA,EAAQ,IAAK9E,GAAS,OAC3B,MAAM+E,GAAanG,EAAAoB,EAAK,UAAL,YAAApB,EAAc,MAAM,KAAK,MAC5C,MAAO,CACL,GAAGoB,EACH,QAAS+E,EACT,QAAS,CACP,GAAG/E,EAAK,QACR,KAAM+E,EACN,QAASA,CACV,CACP,CACA,CAAG,CACH,CACA,SAASC,GAA8BF,EAAS,CAC9C,OAAOD,GAAyBC,EAAQ,OAAQ9E,GAASA,EAAK,QAAU,MAAM,CAAC,CACjF,CACA,MAAMjF,GAAe,CAAA,EACfkK,GAAchK,GAAQ,CAACyB,EAAQvB,IAAQ,CAC3C,MAAMD,EAAQK,GAAS,cAAeR,GAAc2B,CAAM,EACpD,CACJ,WAAAC,EACA,UAAAC,EACA,MAAAlC,EACA,OAAAd,EACA,SAAAiD,EACA,KAAAC,EACA,QAAAgI,EACA,YAAAI,EACA,eAAAC,EACA,IAAAC,EACA,OAAAC,EACA,UAAAC,EACA,SAAAC,EACA,GAAGjK,CACJ,EAAGJ,EACEgC,EAAYC,GAAU,CAC1B,KAAM,cACV,QAAInB,GACA,MAAAd,EACA,UAAA0B,EACA,MAAAlC,EACA,WAAAiC,EACA,OAAA/C,EACA,SAAAiD,CACJ,CAAG,EACD,GAAI,CAACiI,EACH,OAAO,KAET,MAAMU,EAAkBR,GAA8BF,CAAO,EACvDW,EAASC,GAAgBL,CAAM,EAC/BM,EAAQH,EAAgB,IAAI,CAACxF,EAAMf,IAA0B7B,EAAI,KACrE,MACA,CACE,GAAGF,EAAU,YAAY,EACzB,aAAc,IAAMgI,EAAYlF,EAAK,OAAO,EAC5C,aAAc,IAAMkF,EAAY,IAAI,EACpC,qBAAsBI,IAAc,IAAS,OAC7C,SAAU,CACQzJ,EAAG,IACjBW,GACA,CACE,MAAOwD,EAAK,MACZ,KAAM,GACN,GAAG9C,EAAU,iBAAiB,EAC9B,WAAY,EACb,CACF,EACerB,EAAAA,IAAI,IAAK,CAAE,GAAGqB,EAAU,gBAAgB,EAAG,SAAUuI,EAAOzF,EAAK,OAAO,GAAKA,EAAK,OAAO,CAAE,CAC5G,CACF,EACDf,CACJ,CAAG,EACD,OAAuBpD,EAAG,IACxBC,GACA,CACE,IAAAX,EACA,IAAK,CAAC,CAAE,SAAUgK,EAAgB,SAAAI,CAAQ,EAAIH,CAAG,EACjD,GAAGlI,EAAU,QAAQ,EACrB,GAAG5B,EACH,SAAUqK,CACX,CACL,CACA,CAAC,EACDV,GAAY,YAAc,8BCjFnB,SAASW,GAAyBC,EAAOC,EAAGC,EAAS,CAC1D,GAAID,EAAI,EACN,MAAO,GAET,GAAIA,IAAM,GAAKC,IAAY,OACzB,OAAOF,EAGT,QADIhN,EAAS,CAAA,EACJmN,EAAI,EAAGA,EAAIH,EAAM,OAAQG,GAAKF,EAEnCjN,EAAO,KAAKgN,EAAMG,CAAC,CAAC,EAKxB,OAAOnN,CACT,CCvBO,SAASoN,GAAmBC,EAAaC,EAAUC,EAAO,CAC/D,IAAI/J,EAAO,CACT,MAAO6J,EAAY,MAAQC,EAAS,MACpC,OAAQD,EAAY,OAASC,EAAS,MAC1C,EACE,OAAOE,GAAwBhK,EAAM+J,CAAK,CAC5C,CACO,SAASE,GAAkBC,EAASC,EAAMC,EAAS,CACxD,IAAIC,EAAUD,IAAY,QACtBE,EAAIJ,EAAQ,EACdK,EAAIL,EAAQ,EACZM,EAAQN,EAAQ,MAChBxN,EAASwN,EAAQ,OACnB,OAAIC,IAAS,EACJ,CACL,MAAOE,EAAUC,EAAIC,EACrB,IAAKF,EAAUC,EAAIE,EAAQD,EAAI7N,CACrC,EAES,CACL,MAAO2N,EAAUC,EAAIE,EAAQD,EAAI7N,EACjC,IAAK2N,EAAUC,EAAIC,CACvB,CACA,CACO,SAASE,GAAUN,EAAMO,EAAcC,EAASrJ,EAAOC,EAAK,CAGjE,GAAI4I,EAAOO,EAAeP,EAAO7I,GAAS6I,EAAOO,EAAeP,EAAO5I,EACrE,MAAO,GAET,IAAIvB,EAAO2K,IACX,OAAOR,GAAQO,EAAeP,EAAOnK,EAAO,EAAIsB,IAAU,GAAK6I,GAAQO,EAAeP,EAAOnK,EAAO,EAAIuB,IAAQ,CAClH,CACO,SAASqJ,GAAuBC,EAAOC,EAAU,CACtD,OAAOvB,GAAyBsB,EAAOC,EAAW,CAAC,CACrD,CCnCO,SAASC,GAAoBZ,EAAMa,EAAYC,EAAaJ,EAAOK,EAAY,CA+CpF,QA9CI1O,GAAUqO,GAAS,CAAE,GAAE,MAAK,EAC5BM,EAAeH,EAAW,MAC5BzJ,EAAMyJ,EAAW,IACfpI,EAAQ,EAGRwI,EAAW,EACX9J,EAAQ6J,EACRE,EAAQ,UAAiB,CAIzB,IAAIC,EAAQT,GAAU,KAA2B,OAASA,EAAMjI,CAAK,EAGrE,GAAI0I,IAAU,OACZ,MAAO,CACL,EAAG/B,GAAyBsB,EAAOO,CAAQ,CACrD,EAIM,IAAIzB,EAAI/G,EACJ5C,EACA2K,EAAU,UAAmB,CAC/B,OAAI3K,IAAS,SACXA,EAAOiL,EAAYK,EAAO3B,CAAC,GAEtB3J,CACf,EACUuL,EAAYD,EAAM,WAElBE,EAAS5I,IAAU,GAAK6H,GAAUN,EAAMoB,EAAWZ,EAASrJ,EAAOC,CAAG,EACrEiK,IAEH5I,EAAQ,EACRtB,EAAQ6J,EACRC,GAAY,GAEVI,IAEFlK,EAAQiK,EAAYpB,GAAQQ,EAAO,EAAK,EAAIO,GAC5CtI,GAASwI,EAEZ,EACDK,EACKL,GAAY5O,EAAO,QAExB,GADAiP,EAAOJ,EAAK,EACRI,EAAM,OAAOA,EAAK,EAExB,MAAO,EACT,CCtDA,SAASC,GAAQC,EAAG,CAAE,0BAA2B,OAAOD,GAAwB,OAAO,QAArB,YAA2C,OAAO,OAAO,UAA1B,SAAqC,SAAUC,EAAG,CAAE,OAAO,OAAOA,GAAO,SAAUA,EAAG,CAAE,OAAOA,GAAmB,OAAO,QAArB,YAA+BA,EAAE,cAAgB,QAAUA,IAAM,OAAO,UAAY,SAAW,OAAOA,CAAE,EAAID,GAAQC,CAAC,CAAI,CAC9T,SAASC,GAAQzN,EAAG0N,EAAG,CAAE,IAAIC,EAAI,OAAO,KAAK3N,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIwN,EAAI,OAAO,sBAAsBxN,CAAC,EAAG0N,IAAMF,EAAIA,EAAE,OAAO,SAAUE,EAAG,CAAE,OAAO,OAAO,yBAAyB1N,EAAG0N,CAAC,EAAE,UAAW,CAAE,GAAIC,EAAE,KAAK,MAAMA,EAAGH,CAAC,CAAE,CAAG,OAAOG,CAAI,CAC/P,SAASC,GAAc5N,EAAG,CAAE,QAAS0N,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIC,EAAY,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAID,GAAQ,OAAOE,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAUD,EAAG,CAAEG,GAAgB7N,EAAG0N,EAAGC,EAAED,CAAC,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiB1N,EAAG,OAAO,0BAA0B2N,CAAC,CAAC,EAAIF,GAAQ,OAAOE,CAAC,CAAC,EAAE,QAAQ,SAAUD,EAAG,CAAE,OAAO,eAAe1N,EAAG0N,EAAG,OAAO,yBAAyBC,EAAGD,CAAC,CAAC,CAAE,CAAE,CAAI,CAAC,OAAO1N,CAAI,CACvb,SAAS6N,GAAgBC,EAAK1P,EAAK2E,EAAO,CAAE,OAAA3E,EAAM2P,GAAe3P,CAAG,EAAOA,KAAO0P,EAAO,OAAO,eAAeA,EAAK1P,EAAK,CAAE,MAAO2E,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAY+K,EAAI1P,CAAG,EAAI2E,EAAgB+K,CAAM,CAC5O,SAASC,GAAeJ,EAAG,CAAE,IAAInC,EAAIwC,GAAaL,EAAG,QAAQ,EAAG,OAAmBJ,GAAQ/B,CAAC,GAArB,SAAyBA,EAAIA,EAAI,EAAK,CAC7G,SAASwC,GAAaL,EAAGD,EAAG,CAAE,GAAgBH,GAAQI,CAAC,GAArB,UAA0B,CAACA,EAAG,OAAOA,EAAG,IAAI3N,EAAI2N,EAAE,OAAO,WAAW,EAAG,GAAe3N,IAAX,OAAc,CAAE,IAAIwL,EAAIxL,EAAE,KAAK2N,EAAGD,GAAK,SAAS,EAAG,GAAgBH,GAAQ/B,CAAC,GAArB,SAAwB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAqBkC,IAAb,SAAiB,OAAS,QAAQC,CAAC,CAAI,CAO5T,SAASM,GAAYjC,EAAMa,EAAYC,EAAaJ,EAAOK,EAAY,CAgCrE,QA/BI1O,GAAUqO,GAAS,CAAE,GAAE,MAAK,EAC5BwB,EAAM7P,EAAO,OACb8E,EAAQ0J,EAAW,MACnBzJ,EAAMyJ,EAAW,IACjBK,EAAQ,SAAe1B,EAAG,CAC5B,IAAI2B,EAAQ9O,EAAOmN,CAAC,EAChB3J,EACA2K,EAAU,UAAmB,CAC/B,OAAI3K,IAAS,SACXA,EAAOiL,EAAYK,EAAO3B,CAAC,GAEtB3J,CACb,EACI,GAAI2J,IAAM0C,EAAM,EAAG,CACjB,IAAIC,EAAMnC,GAAQmB,EAAM,WAAanB,EAAOQ,EAAS,EAAG,EAAIpJ,GAC5D/E,EAAOmN,CAAC,EAAI2B,EAAQS,GAAcA,GAAc,CAAE,EAAET,CAAK,EAAG,GAAI,CAC9D,UAAWgB,EAAM,EAAIhB,EAAM,WAAagB,EAAMnC,EAAOmB,EAAM,UACnE,CAAO,CACP,MACM9O,EAAOmN,CAAC,EAAI2B,EAAQS,GAAcA,GAAc,CAAE,EAAET,CAAK,EAAG,GAAI,CAC9D,UAAWA,EAAM,UACzB,CAAO,EAEH,IAAIE,EAASf,GAAUN,EAAMmB,EAAM,UAAWX,EAASrJ,EAAOC,CAAG,EAC7DiK,IACFjK,EAAM+J,EAAM,UAAYnB,GAAQQ,IAAY,EAAIO,GAChD1O,EAAOmN,CAAC,EAAIoC,GAAcA,GAAc,GAAIT,CAAK,EAAG,GAAI,CACtD,OAAQ,EAChB,CAAO,EAEP,EACW3B,EAAI0C,EAAM,EAAG1C,GAAK,EAAGA,IAC5B0B,EAAM1B,CAAC,EAET,OAAOnN,CACT,CACA,SAAS+P,GAAcpC,EAAMa,EAAYC,EAAaJ,EAAOK,EAAYsB,EAAa,CACpF,IAAIhQ,GAAUqO,GAAS,CAAE,GAAE,MAAK,EAC5BwB,EAAM7P,EAAO,OACb8E,EAAQ0J,EAAW,MACrBzJ,EAAMyJ,EAAW,IACnB,GAAIwB,EAAa,CAEf,IAAIC,EAAO5B,EAAMwB,EAAM,CAAC,EACpBK,EAAWzB,EAAYwB,EAAMJ,EAAM,CAAC,EACpCM,EAAUxC,GAAQsC,EAAK,WAAatC,EAAOuC,EAAW,EAAInL,GAC9D/E,EAAO6P,EAAM,CAAC,EAAII,EAAOV,GAAcA,GAAc,CAAE,EAAEU,CAAI,EAAG,GAAI,CAClE,UAAWE,EAAU,EAAIF,EAAK,WAAaE,EAAUxC,EAAOsC,EAAK,UACvE,CAAK,EACD,IAAIG,EAAanC,GAAUN,EAAMsC,EAAK,UAAW,UAAY,CAC3D,OAAOC,CACb,EAAOpL,EAAOC,CAAG,EACTqL,IACFrL,EAAMkL,EAAK,UAAYtC,GAAQuC,EAAW,EAAIxB,GAC9C1O,EAAO6P,EAAM,CAAC,EAAIN,GAAcA,GAAc,CAAE,EAAEU,CAAI,EAAG,GAAI,CAC3D,OAAQ,EAChB,CAAO,EAEJ,CA6BD,QA5BII,EAAQL,EAAcH,EAAM,EAAIA,EAChCS,EAAS,SAAgBnD,EAAG,CAC9B,IAAI2B,EAAQ9O,EAAOmN,CAAC,EAChB3J,EACA2K,EAAU,UAAmB,CAC/B,OAAI3K,IAAS,SACXA,EAAOiL,EAAYK,EAAO3B,CAAC,GAEtB3J,CACb,EACI,GAAI2J,IAAM,EAAG,CACX,IAAI2C,EAAMnC,GAAQmB,EAAM,WAAanB,EAAOQ,EAAS,EAAG,EAAIrJ,GAC5D9E,EAAOmN,CAAC,EAAI2B,EAAQS,GAAcA,GAAc,CAAE,EAAET,CAAK,EAAG,GAAI,CAC9D,UAAWgB,EAAM,EAAIhB,EAAM,WAAagB,EAAMnC,EAAOmB,EAAM,UACnE,CAAO,CACP,MACM9O,EAAOmN,CAAC,EAAI2B,EAAQS,GAAcA,GAAc,CAAE,EAAET,CAAK,EAAG,GAAI,CAC9D,UAAWA,EAAM,UACzB,CAAO,EAEH,IAAIE,EAASf,GAAUN,EAAMmB,EAAM,UAAWX,EAASrJ,EAAOC,CAAG,EAC7DiK,IACFlK,EAAQgK,EAAM,UAAYnB,GAAQQ,IAAY,EAAIO,GAClD1O,EAAOmN,CAAC,EAAIoC,GAAcA,GAAc,GAAIT,CAAK,EAAG,GAAI,CACtD,OAAQ,EAChB,CAAO,EAEP,EACW3B,EAAI,EAAGA,EAAIkD,EAAOlD,IACzBmD,EAAOnD,CAAC,EAEV,OAAOnN,CACT,CACO,SAASuQ,GAASlO,EAAOmO,EAAUC,EAAe,CACvD,IAAIC,EAAOrO,EAAM,KACfgM,EAAQhM,EAAM,MACdqL,EAAUrL,EAAM,QAChBqM,EAAarM,EAAM,WACnBsO,EAActO,EAAM,YACpBiM,EAAWjM,EAAM,SACjBuO,EAAgBvO,EAAM,cACtBwO,EAAOxO,EAAM,KACbkL,EAAQlL,EAAM,MAChB,GAAI,CAACgM,GAAS,CAACA,EAAM,QAAU,CAACqC,EAC9B,MAAO,GAET,GAAII,GAASxC,CAAQ,GAAKyC,GAAO,MAC/B,OAAO3C,GAAuBC,EAAO,OAAOC,GAAa,UAAYwC,GAASxC,CAAQ,EAAIA,EAAW,CAAC,EAExG,IAAI0C,EAAa,CAAA,EACbpD,EAAU+C,IAAgB,OAASA,IAAgB,SAAW,QAAU,SACxErD,EAAWuD,GAAQjD,IAAY,QAAUqD,GAAcJ,EAAM,CAC/D,SAAUL,EACV,cAAeC,CACnB,CAAG,EAAI,CACH,MAAO,EACP,OAAQ,CACZ,EACMhC,EAAc,SAAqByC,EAAS9K,EAAO,CACrD,IAAI1B,EAAQyM,GAAWP,CAAa,EAAIA,EAAcM,EAAQ,MAAO9K,CAAK,EAAI8K,EAAQ,MAEtF,OAAOtD,IAAY,QAAUR,GAAmB6D,GAAcvM,EAAO,CACnE,SAAU8L,EACV,cAAeC,CAChB,CAAA,EAAGnD,EAAUC,CAAK,EAAI0D,GAAcvM,EAAO,CAC1C,SAAU8L,EACV,cAAeC,CACrB,CAAK,EAAE7C,CAAO,CACd,EACMD,EAAOU,EAAM,QAAU,EAAI+C,GAAS/C,EAAM,CAAC,EAAE,WAAaA,EAAM,CAAC,EAAE,UAAU,EAAI,EACjFG,EAAaf,GAAkBC,EAASC,EAAMC,CAAO,EACzD,OAAIU,IAAa,2BACRC,GAAoBZ,EAAMa,EAAYC,EAAaJ,EAAOK,CAAU,GAEzEJ,IAAa,iBAAmBA,IAAa,mBAC/C0C,EAAajB,GAAcpC,EAAMa,EAAYC,EAAaJ,EAAOK,EAAYJ,IAAa,kBAAkB,EAE5G0C,EAAapB,GAAYjC,EAAMa,EAAYC,EAAaJ,EAAOK,CAAU,EAEpEsC,EAAW,OAAO,SAAUlC,EAAO,CACxC,OAAOA,EAAM,MACjB,CAAG,EACH,CC1JA,IAAIuC,GAAY,CAAC,SAAS,EACxBC,GAAa,CAAC,SAAS,EACvBC,GAAa,CAAC,OAAO,EACvB,SAASrC,GAAQC,EAAG,CAAE,0BAA2B,OAAOD,GAAwB,OAAO,QAArB,YAA2C,OAAO,OAAO,UAA1B,SAAqC,SAAUC,EAAG,CAAE,OAAO,OAAOA,GAAO,SAAUA,EAAG,CAAE,OAAOA,GAAmB,OAAO,QAArB,YAA+BA,EAAE,cAAgB,QAAUA,IAAM,OAAO,UAAY,SAAW,OAAOA,CAAE,EAAID,GAAQC,CAAC,CAAI,CAC9T,SAASqC,IAAW,CAAEA,OAAAA,GAAW,OAAO,OAAS,OAAO,OAAO,KAAM,EAAG,SAAUC,EAAQ,CAAE,QAAStE,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIuE,EAAS,UAAUvE,CAAC,EAAG,QAASpN,KAAO2R,EAAc,OAAO,UAAU,eAAe,KAAKA,EAAQ3R,CAAG,IAAK0R,EAAO1R,CAAG,EAAI2R,EAAO3R,CAAG,GAAS,OAAO0R,CAAS,EAASD,GAAS,MAAM,KAAM,SAAS,CAAI,CACnV,SAASpC,GAAQzN,EAAG0N,EAAG,CAAE,IAAIC,EAAI,OAAO,KAAK3N,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIwN,EAAI,OAAO,sBAAsBxN,CAAC,EAAG0N,IAAMF,EAAIA,EAAE,OAAO,SAAUE,EAAG,CAAE,OAAO,OAAO,yBAAyB1N,EAAG0N,CAAC,EAAE,UAAW,CAAE,GAAIC,EAAE,KAAK,MAAMA,EAAGH,CAAC,CAAE,CAAG,OAAOG,CAAI,CAC/P,SAASC,GAAc5N,EAAG,CAAE,QAAS0N,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIC,EAAY,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAID,GAAQ,OAAOE,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAUD,EAAG,CAAEG,GAAgB7N,EAAG0N,EAAGC,EAAED,CAAC,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiB1N,EAAG,OAAO,0BAA0B2N,CAAC,CAAC,EAAIF,GAAQ,OAAOE,CAAC,CAAC,EAAE,QAAQ,SAAUD,EAAG,CAAE,OAAO,eAAe1N,EAAG0N,EAAG,OAAO,yBAAyBC,EAAGD,CAAC,CAAC,CAAE,CAAE,CAAI,CAAC,OAAO1N,CAAI,CACvb,SAASgQ,GAAyBD,EAAQE,EAAU,CAAE,GAAIF,GAAU,KAAM,MAAO,GAAI,IAAID,EAASI,GAA8BH,EAAQE,CAAQ,EAAO7R,EAAKoN,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAI2E,EAAmB,OAAO,sBAAsBJ,CAAM,EAAG,IAAKvE,EAAI,EAAGA,EAAI2E,EAAiB,OAAQ3E,IAAOpN,EAAM+R,EAAiB3E,CAAC,EAAO,EAAAyE,EAAS,QAAQ7R,CAAG,GAAK,IAAkB,OAAO,UAAU,qBAAqB,KAAK2R,EAAQ3R,CAAG,IAAa0R,EAAO1R,CAAG,EAAI2R,EAAO3R,CAAG,EAAI,CAAG,OAAO0R,CAAS,CAC5e,SAASI,GAA8BH,EAAQE,EAAU,CAAE,GAAIF,GAAU,KAAM,MAAO,CAAA,EAAI,IAAID,EAAS,CAAE,EAAE,QAAS1R,KAAO2R,EAAU,GAAI,OAAO,UAAU,eAAe,KAAKA,EAAQ3R,CAAG,EAAG,CAAE,GAAI6R,EAAS,QAAQ7R,CAAG,GAAK,EAAG,SAAU0R,EAAO1R,CAAG,EAAI2R,EAAO3R,CAAG,EAAO,OAAO0R,CAAS,CACvR,SAASM,GAAgBC,EAAUC,EAAa,CAAE,GAAI,EAAED,aAAoBC,GAAgB,MAAM,IAAI,UAAU,mCAAmC,CAAM,CACzJ,SAASC,GAAkBT,EAAQpP,EAAO,CAAE,QAAS8K,EAAI,EAAGA,EAAI9K,EAAM,OAAQ8K,IAAK,CAAE,IAAIgF,EAAa9P,EAAM8K,CAAC,EAAGgF,EAAW,WAAaA,EAAW,YAAc,GAAOA,EAAW,aAAe,GAAU,UAAWA,IAAYA,EAAW,SAAW,IAAM,OAAO,eAAeV,EAAQ/B,GAAeyC,EAAW,GAAG,EAAGA,CAAU,EAAM,CAC7U,SAASC,GAAaH,EAAaI,EAAYC,EAAa,CAAE,OAAID,GAAYH,GAAkBD,EAAY,UAAWI,CAAU,EAAOC,GAAaJ,GAAkBD,EAAaK,CAAW,EAAG,OAAO,eAAeL,EAAa,YAAa,CAAE,SAAU,EAAO,CAAA,EAAUA,CAAc,CAC7R,SAASM,GAAWjD,EAAGH,EAAGxN,EAAG,CAAE,OAAOwN,EAAIqD,GAAgBrD,CAAC,EAAGsD,GAA2BnD,EAAGoD,GAA2B,EAAG,QAAQ,UAAUvD,EAAGxN,GAAK,CAAA,EAAI6Q,GAAgBlD,CAAC,EAAE,WAAW,EAAIH,EAAE,MAAMG,EAAG3N,CAAC,CAAC,CAAI,CAC3M,SAAS8Q,GAA2BE,EAAMC,EAAM,CAAE,GAAIA,IAAS1D,GAAQ0D,CAAI,IAAM,UAAY,OAAOA,GAAS,YAAe,OAAOA,EAAa,GAAIA,IAAS,OAAU,MAAM,IAAI,UAAU,0DAA0D,EAAK,OAAOC,GAAuBF,CAAI,CAAI,CAChS,SAASE,GAAuBF,EAAM,CAAE,GAAIA,IAAS,OAAU,MAAM,IAAI,eAAe,2DAA2D,EAAK,OAAOA,CAAO,CACtK,SAASD,IAA4B,CAAE,GAAI,CAAE,IAAIpD,EAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,QAAS,CAAA,EAAI,UAAY,EAAE,CAAC,CAAE,MAAa,CAAA,CAAG,OAAQoD,GAA4B,UAAqC,CAAE,MAAO,CAAC,CAACpD,CAAE,GAAK,CAAG,CACnP,SAASkD,GAAgBrD,EAAG,CAAEqD,OAAAA,GAAkB,OAAO,eAAiB,OAAO,eAAe,OAAS,SAAyBrD,EAAG,CAAE,OAAOA,EAAE,WAAa,OAAO,eAAeA,CAAC,CAAE,EAAWqD,GAAgBrD,CAAC,CAAI,CACpN,SAAS2D,GAAUC,EAAUC,EAAY,CAAE,GAAI,OAAOA,GAAe,YAAcA,IAAe,KAAQ,MAAM,IAAI,UAAU,oDAAoD,EAAKD,EAAS,UAAY,OAAO,OAAOC,GAAcA,EAAW,UAAW,CAAE,YAAa,CAAE,MAAOD,EAAU,SAAU,GAAM,aAAc,EAAI,EAAI,EAAG,OAAO,eAAeA,EAAU,YAAa,CAAE,SAAU,EAAK,CAAE,EAAOC,GAAYC,GAAgBF,EAAUC,CAAU,CAAI,CACpc,SAASC,GAAgB9D,EAAG+D,EAAG,CAAED,OAAAA,GAAkB,OAAO,eAAiB,OAAO,eAAe,KAAM,EAAG,SAAyB9D,EAAG+D,EAAG,CAAE,OAAA/D,EAAE,UAAY+D,EAAU/D,CAAI,EAAS8D,GAAgB9D,EAAG+D,CAAC,CAAI,CACxM,SAAS1D,GAAgBC,EAAK1P,EAAK2E,EAAO,CAAE,OAAA3E,EAAM2P,GAAe3P,CAAG,EAAOA,KAAO0P,EAAO,OAAO,eAAeA,EAAK1P,EAAK,CAAE,MAAO2E,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAY+K,EAAI1P,CAAG,EAAI2E,EAAgB+K,CAAM,CAC5O,SAASC,GAAeJ,EAAG,CAAE,IAAInC,EAAIwC,GAAaL,EAAG,QAAQ,EAAG,OAAmBJ,GAAQ/B,CAAC,GAArB,SAAyBA,EAAIA,EAAI,EAAK,CAC7G,SAASwC,GAAaL,EAAGD,EAAG,CAAE,GAAgBH,GAAQI,CAAC,GAArB,UAA0B,CAACA,EAAG,OAAOA,EAAG,IAAI3N,EAAI2N,EAAE,OAAO,WAAW,EAAG,GAAe3N,IAAX,OAAc,CAAE,IAAIwL,EAAIxL,EAAE,KAAK2N,EAAGD,GAAK,SAAS,EAAG,GAAgBH,GAAQ/B,CAAC,GAArB,SAAwB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAqBkC,IAAb,SAAiB,OAAS,QAAQC,CAAC,CAAI,CAuBrT,IAAI6D,GAA6B,SAAUC,EAAY,CAC5D,SAASD,EAAc9Q,EAAO,CAC5B,IAAIgR,EACJtB,OAAAA,GAAgB,KAAMoB,CAAa,EACnCE,EAAQd,GAAW,KAAMY,EAAe,CAAC9Q,CAAK,CAAC,EAC/CgR,EAAM,MAAQ,CACZ,SAAU,GACV,cAAe,EACrB,EACWA,CACR,CACDP,OAAAA,GAAUK,EAAeC,CAAU,EAC5BhB,GAAae,EAAe,CAAC,CAClC,IAAK,wBACL,MAAO,SAA+BG,EAAM9J,EAAW,CACrD,IAAIkE,EAAU4F,EAAK,QACjBC,EAAY5B,GAAyB2B,EAAMjC,EAAS,EAGlDmC,EAAc,KAAK,MACrBC,EAAaD,EAAY,QACzBE,EAAe/B,GAAyB6B,EAAalC,EAAU,EACjE,MAAO,CAACqC,GAAajG,EAAS+F,CAAU,GAAK,CAACE,GAAaJ,EAAWG,CAAY,GAAK,CAACC,GAAanK,EAAW,KAAK,KAAK,CAC3H,CACL,EAAK,CACD,IAAK,oBACL,MAAO,UAA6B,CAClC,IAAIoK,EAAY,KAAK,eACrB,GAAKA,EACL,KAAIlD,EAAOkD,EAAU,uBAAuB,oCAAoC,EAAE,CAAC,EAC/ElD,GACF,KAAK,SAAS,CACZ,SAAU,OAAO,iBAAiBA,CAAI,EAAE,SACxC,cAAe,OAAO,iBAAiBA,CAAI,EAAE,aACvD,CAAS,EAEJ,CAQL,EAAK,CACD,IAAK,mBACL,MAAO,SAA0B9J,EAAM,CACrC,IAAIiN,EAAe,KAAK,MACtB/F,EAAI+F,EAAa,EACjB9F,EAAI8F,EAAa,EACjB7F,EAAQ6F,EAAa,MACrB3T,EAAS2T,EAAa,OACtBlD,EAAckD,EAAa,YAC3BC,EAAWD,EAAa,SACxBE,EAASF,EAAa,OACtBG,EAAaH,EAAa,WACxBI,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EACpB3G,EAAOoG,EAAS,GAAK,EACrBQ,EAAgB3N,EAAK,UAAYkN,EACjC/E,EAAY+B,GAASlK,EAAK,SAAS,EAAIA,EAAK,UAAYA,EAAK,WACjE,OAAQ+J,EAAW,CACjB,IAAK,MACHsD,EAAKC,EAAKtN,EAAK,WACfwN,EAAKrG,GAAI,CAAC,CAACgG,EAAS7T,EACpBiU,EAAKC,EAAKzG,EAAO4G,EACjBD,EAAKH,EAAKxG,EAAOqG,EACjBK,EAAKtF,EACL,MACF,IAAK,OACHoF,EAAKC,EAAKxN,EAAK,WACfsN,EAAKpG,GAAI,CAAC,CAACiG,EAAS/F,EACpBiG,EAAKC,EAAKvG,EAAO4G,EACjBF,EAAKJ,EAAKtG,EAAOqG,EACjBM,EAAKvF,EACL,MACF,IAAK,QACHoF,EAAKC,EAAKxN,EAAK,WACfsN,EAAKpG,GAAI,CAACiG,EAAS/F,EACnBiG,EAAKC,EAAKvG,EAAO4G,EACjBF,EAAKJ,EAAKtG,EAAOqG,EACjBM,EAAKvF,EACL,MACF,QACEkF,EAAKC,EAAKtN,EAAK,WACfwN,EAAKrG,GAAI,CAACgG,EAAS7T,EACnBiU,EAAKC,EAAKzG,EAAO4G,EACjBD,EAAKH,EAAKxG,EAAOqG,EACjBK,EAAKtF,EACL,KACH,CACD,MAAO,CACL,KAAM,CACJ,GAAIkF,EACJ,GAAIE,EACJ,GAAID,EACJ,GAAIE,CACL,EACD,KAAM,CACJ,EAAGC,EACH,EAAGC,CACJ,CACT,CACK,CACL,EAAK,CACD,IAAK,oBACL,MAAO,UAA6B,CAClC,IAAIE,EAAe,KAAK,MACtB7D,EAAc6D,EAAa,YAC3BT,EAASS,EAAa,OACpBC,EACJ,OAAQ9D,EAAW,CACjB,IAAK,OACH8D,EAAaV,EAAS,QAAU,MAChC,MACF,IAAK,QACHU,EAAaV,EAAS,MAAQ,QAC9B,MACF,QACEU,EAAa,SACb,KACH,CACD,OAAOA,CACR,CACL,EAAK,CACD,IAAK,wBACL,MAAO,UAAiC,CACtC,IAAIC,EAAe,KAAK,MACtB/D,EAAc+D,EAAa,YAC3BX,EAASW,EAAa,OACpBC,EAAiB,MACrB,OAAQhE,EAAW,CACjB,IAAK,OACL,IAAK,QACHgE,EAAiB,SACjB,MACF,IAAK,MACHA,EAAiBZ,EAAS,QAAU,MACpC,MACF,QACEY,EAAiBZ,EAAS,MAAQ,QAClC,KACH,CACD,OAAOY,CACR,CACL,EAAK,CACD,IAAK,iBACL,MAAO,UAA0B,CAC/B,IAAIC,EAAe,KAAK,MACtB9G,EAAI8G,EAAa,EACjB7G,EAAI6G,EAAa,EACjB5G,EAAQ4G,EAAa,MACrB1U,EAAS0U,EAAa,OACtBjE,EAAciE,EAAa,YAC3Bb,EAASa,EAAa,OACtBC,EAAWD,EAAa,SACtBvS,EAAQkN,GAAcA,GAAcA,GAAc,CAAA,EAAIuF,GAAY,KAAK,MAAO,EAAK,CAAC,EAAGA,GAAYD,EAAU,EAAK,CAAC,EAAG,GAAI,CAC5H,KAAM,MACd,CAAO,EACD,GAAIlE,IAAgB,OAASA,IAAgB,SAAU,CACrD,IAAIoE,EAAa,EAAEpE,IAAgB,OAAS,CAACoD,GAAUpD,IAAgB,UAAYoD,GACnF1R,EAAQkN,GAAcA,GAAc,CAAE,EAAElN,CAAK,EAAG,CAAA,EAAI,CAClD,GAAIyL,EACJ,GAAIC,EAAIgH,EAAa7U,EACrB,GAAI4N,EAAIE,EACR,GAAID,EAAIgH,EAAa7U,CAC/B,CAAS,CACT,KAAa,CACL,IAAI8U,EAAY,EAAErE,IAAgB,QAAU,CAACoD,GAAUpD,IAAgB,SAAWoD,GAClF1R,EAAQkN,GAAcA,GAAc,CAAE,EAAElN,CAAK,EAAG,CAAA,EAAI,CAClD,GAAIyL,EAAIkH,EAAYhH,EACpB,GAAID,EACJ,GAAID,EAAIkH,EAAYhH,EACpB,GAAID,EAAI7N,CAClB,CAAS,CACF,CACD,OAAoB+U,EAAM,cAAc,OAAQzD,GAAS,CAAA,EAAInP,EAAO,CAClE,UAAW6S,GAAK,+BAAgCC,GAAIN,EAAU,WAAW,CAAC,CAC3E,CAAA,CAAC,CACH,CACL,EAAK,CACD,IAAK,cACL,MAQA,SAAqBxG,EAAOmC,EAAUC,EAAe,CACnD,IAAI2E,EAAS,KACTC,EAAe,KAAK,MACtBC,EAAWD,EAAa,SACxBE,EAASF,EAAa,OACtB3E,EAAO2E,EAAa,KACpBzE,EAAgByE,EAAa,cAC7BxE,EAAOwE,EAAa,KAClBG,EAAajF,GAAShB,GAAcA,GAAc,CAAA,EAAI,KAAK,KAAK,EAAG,GAAI,CACzE,MAAOlB,CACf,CAAO,EAAGmC,EAAUC,CAAa,EACvBgE,EAAa,KAAK,oBAClBE,EAAiB,KAAK,wBACtBc,EAAYX,GAAY,KAAK,MAAO,EAAK,EACzCY,EAAkBZ,GAAYpE,EAAM,EAAK,EACzCiF,EAAgBpG,GAAcA,GAAc,CAAA,EAAIkG,CAAS,EAAG,GAAI,CAClE,KAAM,MACP,EAAEX,GAAYQ,EAAU,EAAK,CAAC,EAC3BxI,EAAQ0I,EAAW,IAAI,SAAU1G,EAAO3B,EAAG,CAC7C,IAAIyI,EAAwBR,EAAO,iBAAiBtG,CAAK,EACvD+G,EAAYD,EAAsB,KAClC7G,EAAY6G,EAAsB,KAChCE,EAAYvG,GAAcA,GAAcA,GAAcA,GAAc,CACtE,WAAYkF,EACZ,eAAgBE,CAC1B,EAAWc,CAAS,EAAG,GAAI,CACjB,OAAQ,OACR,KAAMF,CACP,EAAEG,CAAe,EAAG3G,CAAS,EAAG,GAAI,CACnC,MAAO5B,EACP,QAAS2B,EACT,kBAAmB0G,EAAW,OAC9B,cAAe5E,CACzB,CAAS,EACD,OAAoBqE,EAAM,cAAcc,GAAOvE,GAAS,CACtD,UAAW,+BACX,IAAK,QAAQ,OAAO1C,EAAM,MAAO,GAAG,EAAE,OAAOA,EAAM,WAAY,GAAG,EAAE,OAAOA,EAAM,SAAS,CACpG,EAAWkH,GAAmBZ,EAAO,MAAOtG,EAAO3B,CAAC,CAAC,EAAGmI,GAAyBL,EAAM,cAAc,OAAQzD,GAAS,CAAA,EAAImE,EAAeE,EAAW,CAC1I,UAAWX,GAAK,oCAAqCC,GAAIG,EAAU,WAAW,CAAC,CAChF,CAAA,CAAC,EAAG5E,GAAQyC,EAAc,eAAezC,EAAMoF,EAAW,GAAG,OAAO3E,GAAWP,CAAa,EAAIA,EAAc9B,EAAM,MAAO3B,CAAC,EAAI2B,EAAM,KAAK,EAAE,OAAO+B,GAAQ,EAAE,CAAC,CAAC,CACzK,CAAO,EACD,OAAoBoE,EAAM,cAAc,IAAK,CAC3C,UAAW,+BACZ,EAAEnI,CAAK,CACT,CACL,EAAK,CACD,IAAK,SACL,MAAO,UAAkB,CACvB,IAAImJ,EAAS,KACTC,EAAe,KAAK,MACtBrB,EAAWqB,EAAa,SACxBlI,EAAQkI,EAAa,MACrBhW,EAASgW,EAAa,OACtBC,EAAiBD,EAAa,eAC9BnS,EAAYmS,EAAa,UACzBE,EAAOF,EAAa,KACtB,GAAIE,EACF,OAAO,KAET,IAAIC,EAAe,KAAK,MACtBhI,EAAQgI,EAAa,MACrBC,EAAe3E,GAAyB0E,EAAc9E,EAAU,EAC9DiE,EAAanH,EAIjB,OAHI8C,GAAWgF,CAAc,IAC3BX,EAAanH,GAASA,EAAM,OAAS,EAAI8H,EAAe,KAAK,KAAK,EAAIA,EAAeG,CAAY,GAE/FtI,GAAS,GAAK9N,GAAU,GAAK,CAACsV,GAAc,CAACA,EAAW,OACnD,KAEWP,EAAM,cAAcc,GAAO,CAC7C,UAAWb,GAAK,0BAA2BnR,CAAS,EACpD,IAAK,SAAawS,EAAO,CACvBN,EAAO,eAAiBM,CACzB,CACT,EAAS1B,GAAY,KAAK,eAAgB,EAAE,KAAK,YAAYW,EAAY,KAAK,MAAM,SAAU,KAAK,MAAM,aAAa,EAAGgB,GAAM,mBAAmB,KAAK,KAAK,CAAC,CACxJ,CACF,CAAA,EAAG,CAAC,CACH,IAAK,iBACL,MAAO,SAAwBC,EAAQpU,EAAOqC,EAAO,CACnD,IAAIgS,EACJ,OAAkBzB,EAAM,eAAewB,CAAM,EAC3CC,EAAwBzB,EAAM,aAAawB,EAAQpU,CAAK,EAC/C8O,GAAWsF,CAAM,EAC1BC,EAAWD,EAAOpU,CAAK,EAEvBqU,EAAwBzB,EAAM,cAAc0B,GAAMnF,GAAS,CAAE,EAAEnP,EAAO,CACpE,UAAW,oCACrB,CAAS,EAAGqC,CAAK,EAEJgS,CACR,CACF,CAAA,CAAC,CACJ,EAAEE,EAAS,SAAA,EACXpH,GAAgB2D,GAAe,cAAe,eAAe,EAC7D3D,GAAgB2D,GAAe,eAAgB,CAC7C,EAAG,EACH,EAAG,EACH,MAAO,EACP,OAAQ,EACR,QAAS,CACP,EAAG,EACH,EAAG,EACH,MAAO,EACP,OAAQ,CACT,EAED,YAAa,SAEb,MAAO,CAAE,EACT,OAAQ,OACR,SAAU,GACV,SAAU,GACV,KAAM,GACN,OAAQ,GACR,WAAY,EAEZ,SAAU,EACV,WAAY,EACZ,SAAU,aACZ,CAAC,EChWD,IAAI9B,GAAY,CAAC,KAAM,KAAM,KAAM,KAAM,KAAK,EAC5CC,GAAa,CAAC,QAAQ,EACxB,SAASpC,GAAQC,EAAG,CAAE,0BAA2B,OAAOD,GAAwB,OAAO,QAArB,YAA2C,OAAO,OAAO,UAA1B,SAAqC,SAAUC,EAAG,CAAE,OAAO,OAAOA,GAAO,SAAUA,EAAG,CAAE,OAAOA,GAAmB,OAAO,QAArB,YAA+BA,EAAE,cAAgB,QAAUA,IAAM,OAAO,UAAY,SAAW,OAAOA,CAAE,EAAID,GAAQC,CAAC,CAAI,CAC9T,SAASC,GAAQzN,EAAG0N,EAAG,CAAE,IAAIC,EAAI,OAAO,KAAK3N,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIwN,EAAI,OAAO,sBAAsBxN,CAAC,EAAG0N,IAAMF,EAAIA,EAAE,OAAO,SAAUE,EAAG,CAAE,OAAO,OAAO,yBAAyB1N,EAAG0N,CAAC,EAAE,UAAW,CAAE,GAAIC,EAAE,KAAK,MAAMA,EAAGH,CAAC,CAAE,CAAG,OAAOG,CAAI,CAC/P,SAASC,GAAc5N,EAAG,CAAE,QAAS0N,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIC,EAAY,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAID,GAAQ,OAAOE,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAUD,EAAG,CAAEG,GAAgB7N,EAAG0N,EAAGC,EAAED,CAAC,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiB1N,EAAG,OAAO,0BAA0B2N,CAAC,CAAC,EAAIF,GAAQ,OAAOE,CAAC,CAAC,EAAE,QAAQ,SAAUD,EAAG,CAAE,OAAO,eAAe1N,EAAG0N,EAAG,OAAO,yBAAyBC,EAAGD,CAAC,CAAC,CAAE,CAAE,CAAI,CAAC,OAAO1N,CAAI,CACvb,SAAS6N,GAAgBC,EAAK1P,EAAK2E,EAAO,CAAE,OAAA3E,EAAM2P,GAAe3P,CAAG,EAAOA,KAAO0P,EAAO,OAAO,eAAeA,EAAK1P,EAAK,CAAE,MAAO2E,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAY+K,EAAI1P,CAAG,EAAI2E,EAAgB+K,CAAM,CAC5O,SAASC,GAAeJ,EAAG,CAAE,IAAInC,EAAIwC,GAAaL,EAAG,QAAQ,EAAG,OAAmBJ,GAAQ/B,CAAC,GAArB,SAAyBA,EAAIA,EAAI,EAAK,CAC7G,SAASwC,GAAaL,EAAGD,EAAG,CAAE,GAAgBH,GAAQI,CAAC,GAArB,UAA0B,CAACA,EAAG,OAAOA,EAAG,IAAI3N,EAAI2N,EAAE,OAAO,WAAW,EAAG,GAAe3N,IAAX,OAAc,CAAE,IAAIwL,EAAIxL,EAAE,KAAK2N,EAAGD,GAAK,SAAS,EAAG,GAAgBH,GAAQ/B,CAAC,GAArB,SAAwB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAqBkC,IAAb,SAAiB,OAAS,QAAQC,CAAC,CAAI,CAC5T,SAASkC,IAAW,CAAEA,OAAAA,GAAW,OAAO,OAAS,OAAO,OAAO,KAAM,EAAG,SAAUC,EAAQ,CAAE,QAAStE,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIuE,EAAS,UAAUvE,CAAC,EAAG,QAASpN,KAAO2R,EAAc,OAAO,UAAU,eAAe,KAAKA,EAAQ3R,CAAG,IAAK0R,EAAO1R,CAAG,EAAI2R,EAAO3R,CAAG,GAAS,OAAO0R,CAAS,EAASD,GAAS,MAAM,KAAM,SAAS,CAAI,CACnV,SAASG,GAAyBD,EAAQE,EAAU,CAAE,GAAIF,GAAU,KAAM,MAAO,GAAI,IAAID,EAASI,GAA8BH,EAAQE,CAAQ,EAAO7R,EAAKoN,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAI2E,EAAmB,OAAO,sBAAsBJ,CAAM,EAAG,IAAKvE,EAAI,EAAGA,EAAI2E,EAAiB,OAAQ3E,IAAOpN,EAAM+R,EAAiB3E,CAAC,EAAO,EAAAyE,EAAS,QAAQ7R,CAAG,GAAK,IAAkB,OAAO,UAAU,qBAAqB,KAAK2R,EAAQ3R,CAAG,IAAa0R,EAAO1R,CAAG,EAAI2R,EAAO3R,CAAG,EAAI,CAAG,OAAO0R,CAAS,CAC5e,SAASI,GAA8BH,EAAQE,EAAU,CAAE,GAAIF,GAAU,KAAM,MAAO,CAAA,EAAI,IAAID,EAAS,CAAE,EAAE,QAAS1R,KAAO2R,EAAU,GAAI,OAAO,UAAU,eAAe,KAAKA,EAAQ3R,CAAG,EAAG,CAAE,GAAI6R,EAAS,QAAQ7R,CAAG,GAAK,EAAG,SAAU0R,EAAO1R,CAAG,EAAI2R,EAAO3R,CAAG,EAAO,OAAO0R,CAAS,CAkBvR,IAAIoF,GAAa,SAAoBxU,EAAO,CAC1C,IAAIyU,EAAOzU,EAAM,KACjB,GAAI,CAACyU,GAAQA,IAAS,OACpB,OAAO,KAET,IAAIC,EAAc1U,EAAM,YACtByL,EAAIzL,EAAM,EACV0L,EAAI1L,EAAM,EACV2L,EAAQ3L,EAAM,MACdnC,EAASmC,EAAM,OACf2U,EAAK3U,EAAM,GACb,OAAoB4S,EAAM,cAAc,OAAQ,CAC9C,EAAGnH,EACH,EAAGC,EACH,GAAIiJ,EACJ,MAAOhJ,EACP,OAAQ9N,EACR,OAAQ,OACR,KAAM4W,EACN,YAAaC,EACb,UAAW,4BACf,CAAG,CACH,EACA,SAASE,GAAeR,EAAQpU,EAAO,CACrC,IAAI6U,EACJ,GAAkBjC,EAAM,eAAewB,CAAM,EAE3CS,EAAwBjC,EAAM,aAAawB,EAAQpU,CAAK,UAC/C8O,GAAWsF,CAAM,EAC1BS,EAAWT,EAAOpU,CAAK,MAClB,CACL,IAAI4R,EAAK5R,EAAM,GACb8R,EAAK9R,EAAM,GACX6R,EAAK7R,EAAM,GACX+R,EAAK/R,EAAM,GACXtC,EAAMsC,EAAM,IACZI,EAASkP,GAAyBtP,EAAOgP,EAAS,EAChD8F,EAAerC,GAAYrS,EAAQ,EAAK,EACrC0U,EAAa,OACxB,IAAMC,EAAsBzF,GAAyBwF,EAAc7F,EAAU,EACzE4F,EAAwBjC,EAAM,cAAc,OAAQzD,GAAS,CAAE,EAAE4F,EAAqB,CACpF,GAAInD,EACJ,GAAIE,EACJ,GAAID,EACJ,GAAIE,EACJ,KAAM,OACN,IAAKrU,CACN,CAAA,CAAC,CACH,CACD,OAAOmX,CACT,CACA,SAASG,GAAoBhV,EAAO,CAClC,IAAIyL,EAAIzL,EAAM,EACZ2L,EAAQ3L,EAAM,MACdiV,EAAoBjV,EAAM,WAC1BkV,EAAaD,IAAsB,OAAS,GAAOA,EACnDE,EAAmBnV,EAAM,iBAC3B,GAAI,CAACkV,GAAc,CAACC,GAAoB,CAACA,EAAiB,OACxD,OAAO,KAET,IAAI1K,EAAQ0K,EAAiB,IAAI,SAAU1I,EAAO3B,EAAG,CACnD,IAAIsK,EAAgBlI,GAAcA,GAAc,CAAA,EAAIlN,CAAK,EAAG,GAAI,CAC9D,GAAIyL,EACJ,GAAIgB,EACJ,GAAIhB,EAAIE,EACR,GAAIc,EACJ,IAAK,QAAQ,OAAO3B,CAAC,EACrB,MAAOA,CACb,CAAK,EACD,OAAO8J,GAAeM,EAAYE,CAAa,CACnD,CAAG,EACD,OAAoBxC,EAAM,cAAc,IAAK,CAC3C,UAAW,oCACZ,EAAEnI,CAAK,CACV,CACA,SAAS4K,GAAkBrV,EAAO,CAChC,IAAI0L,EAAI1L,EAAM,EACZnC,EAASmC,EAAM,OACfsV,EAAkBtV,EAAM,SACxBuV,EAAWD,IAAoB,OAAS,GAAOA,EAC/CE,EAAiBxV,EAAM,eACzB,GAAI,CAACuV,GAAY,CAACC,GAAkB,CAACA,EAAe,OAClD,OAAO,KAET,IAAI/K,EAAQ+K,EAAe,IAAI,SAAU/I,EAAO3B,EAAG,CACjD,IAAIsK,EAAgBlI,GAAcA,GAAc,CAAA,EAAIlN,CAAK,EAAG,GAAI,CAC9D,GAAIyM,EACJ,GAAIf,EACJ,GAAIe,EACJ,GAAIf,EAAI7N,EACR,IAAK,QAAQ,OAAOiN,CAAC,EACrB,MAAOA,CACb,CAAK,EACD,OAAO8J,GAAeW,EAAUH,CAAa,CACjD,CAAG,EACD,OAAoBxC,EAAM,cAAc,IAAK,CAC3C,UAAW,kCACZ,EAAEnI,CAAK,CACV,CACA,SAASgL,GAAkBzV,EAAO,CAChC,IAAI0V,EAAiB1V,EAAM,eACzB0U,EAAc1U,EAAM,YACpByL,EAAIzL,EAAM,EACV0L,EAAI1L,EAAM,EACV2L,EAAQ3L,EAAM,MACdnC,EAASmC,EAAM,OACfmV,EAAmBnV,EAAM,iBACzB2V,EAAqB3V,EAAM,WAC3BkV,EAAaS,IAAuB,OAAS,GAAOA,EACtD,GAAI,CAACT,GAAc,CAACQ,GAAkB,CAACA,EAAe,OACpD,OAAO,KAIT,IAAIE,EAAgCT,EAAiB,IAAI,SAAU7V,EAAG,CACpE,OAAO,KAAK,MAAMA,EAAIoM,EAAIA,CAAC,CAC5B,CAAA,EAAE,KAAK,SAAUmK,EAAGC,EAAG,CACtB,OAAOD,EAAIC,CACf,CAAG,EAEGpK,IAAMkK,EAA8B,CAAC,GACvCA,EAA8B,QAAQ,CAAC,EAEzC,IAAInL,EAAQmL,EAA8B,IAAI,SAAUnJ,EAAO3B,EAAG,CAEhE,IAAIiL,EAAa,CAACH,EAA8B9K,EAAI,CAAC,EACjDkL,EAAaD,EAAarK,EAAI7N,EAAS4O,EAAQmJ,EAA8B9K,EAAI,CAAC,EAAI2B,EAC1F,GAAIuJ,GAAc,EAChB,OAAO,KAET,IAAIC,EAAanL,EAAI4K,EAAe,OACpC,OAAoB9C,EAAM,cAAc,OAAQ,CAC9C,IAAK,SAAS,OAAO9H,CAAC,EAEtB,EAAG2B,EACH,EAAGhB,EACH,OAAQuK,EACR,MAAOrK,EACP,OAAQ,OACR,KAAM+J,EAAeO,CAAU,EAC/B,YAAavB,EACb,UAAW,4BACjB,CAAK,CACL,CAAG,EACD,OAAoB9B,EAAM,cAAc,IAAK,CAC3C,UAAW,2CACZ,EAAEnI,CAAK,CACV,CACA,SAASyL,GAAgBlW,EAAO,CAC9B,IAAImW,EAAmBnW,EAAM,SAC3BuV,EAAWY,IAAqB,OAAS,GAAOA,EAChDC,EAAepW,EAAM,aACrB0U,EAAc1U,EAAM,YACpByL,EAAIzL,EAAM,EACV0L,EAAI1L,EAAM,EACV2L,EAAQ3L,EAAM,MACdnC,EAASmC,EAAM,OACfwV,EAAiBxV,EAAM,eACzB,GAAI,CAACuV,GAAY,CAACa,GAAgB,CAACA,EAAa,OAC9C,OAAO,KAET,IAAIC,EAA8Bb,EAAe,IAAI,SAAUlW,EAAG,CAChE,OAAO,KAAK,MAAMA,EAAImM,EAAIA,CAAC,CAC5B,CAAA,EAAE,KAAK,SAAUoK,EAAGC,EAAG,CACtB,OAAOD,EAAIC,CACf,CAAG,EACGrK,IAAM4K,EAA4B,CAAC,GACrCA,EAA4B,QAAQ,CAAC,EAEvC,IAAI5L,EAAQ4L,EAA4B,IAAI,SAAU5J,EAAO3B,EAAG,CAC9D,IAAIiL,EAAa,CAACM,EAA4BvL,EAAI,CAAC,EAC/CwL,EAAYP,EAAatK,EAAIE,EAAQc,EAAQ4J,EAA4BvL,EAAI,CAAC,EAAI2B,EACtF,GAAI6J,GAAa,EACf,OAAO,KAET,IAAIL,EAAanL,EAAIsL,EAAa,OAClC,OAAoBxD,EAAM,cAAc,OAAQ,CAC9C,IAAK,SAAS,OAAO9H,CAAC,EAEtB,EAAG2B,EACH,EAAGf,EACH,MAAO4K,EACP,OAAQzY,EACR,OAAQ,OACR,KAAMuY,EAAaH,CAAU,EAC7B,YAAavB,EACb,UAAW,4BACjB,CAAK,CACL,CAAG,EACD,OAAoB9B,EAAM,cAAc,IAAK,CAC3C,UAAW,yCACZ,EAAEnI,CAAK,CACV,CACA,IAAI8L,GAAsC,SAA6CtF,EAAMuF,EAAe,CAC1G,IAAIC,EAAQxF,EAAK,MACftF,EAAQsF,EAAK,MACbpT,EAASoT,EAAK,OACdyF,EAASzF,EAAK,OAChB,OAAO0F,GAAqBzI,GAAShB,GAAcA,GAAcA,GAAc,GAAI4D,GAAc,YAAY,EAAG2F,CAAK,EAAG,CAAA,EAAI,CAC1H,MAAOG,GAAeH,EAAO,EAAI,EACjC,QAAS,CACP,EAAG,EACH,EAAG,EACH,MAAO9K,EACP,OAAQ9N,CACT,CACL,CAAG,CAAC,EAAG6Y,EAAO,KAAMA,EAAO,KAAOA,EAAO,MAAOF,CAAa,CAC7D,EACIK,GAAwC,SAA+C3C,EAAOsC,EAAe,CAC/G,IAAIM,EAAQ5C,EAAM,MAChBvI,EAAQuI,EAAM,MACdrW,EAASqW,EAAM,OACfwC,EAASxC,EAAM,OACjB,OAAOyC,GAAqBzI,GAAShB,GAAcA,GAAcA,GAAc,GAAI4D,GAAc,YAAY,EAAGgG,CAAK,EAAG,CAAA,EAAI,CAC1H,MAAOF,GAAeE,EAAO,EAAI,EACjC,QAAS,CACP,EAAG,EACH,EAAG,EACH,MAAOnL,EACP,OAAQ9N,CACT,CACL,CAAG,CAAC,EAAG6Y,EAAO,IAAKA,EAAO,IAAMA,EAAO,OAAQF,CAAa,CAC5D,EACI3W,GAAe,CACjB,WAAY,GACZ,SAAU,GAEV,iBAAkB,CAAE,EAEpB,eAAgB,CAAE,EAClB,OAAQ,OACR,KAAM,OAEN,aAAc,CAAE,EAChB,eAAgB,CAAE,CACpB,EACO,SAASkX,GAAc/W,EAAO,CACnC,IAAIgX,EAAeC,EAAaC,EAAoBC,EAAuBC,EAAkBC,EACzFC,EAAaC,KACbC,EAAcC,KACdf,EAASgB,KACTC,EAAyBzK,GAAcA,GAAc,CAAA,EAAIlN,CAAK,EAAG,GAAI,CACvE,QAASgX,EAAgBhX,EAAM,UAAY,MAAQgX,IAAkB,OAASA,EAAgBnX,GAAa,OAC3G,MAAOoX,EAAcjX,EAAM,QAAU,MAAQiX,IAAgB,OAASA,EAAcpX,GAAa,KACjG,YAAaqX,EAAqBlX,EAAM,cAAgB,MAAQkX,IAAuB,OAASA,EAAqBrX,GAAa,WAClI,gBAAiBsX,EAAwBnX,EAAM,kBAAoB,MAAQmX,IAA0B,OAASA,EAAwBtX,GAAa,eACnJ,UAAWuX,EAAmBpX,EAAM,YAAc,MAAQoX,IAAqB,OAASA,EAAmBvX,GAAa,SACxH,cAAewX,EAAsBrX,EAAM,gBAAkB,MAAQqX,IAAwB,OAASA,EAAsBxX,GAAa,aACzI,EAAG4O,GAASzO,EAAM,CAAC,EAAIA,EAAM,EAAI0W,EAAO,KACxC,EAAGjI,GAASzO,EAAM,CAAC,EAAIA,EAAM,EAAI0W,EAAO,IACxC,MAAOjI,GAASzO,EAAM,KAAK,EAAIA,EAAM,MAAQ0W,EAAO,MACpD,OAAQjI,GAASzO,EAAM,MAAM,EAAIA,EAAM,OAAS0W,EAAO,MAC3D,CAAG,EACGjL,EAAIkM,EAAuB,EAC7BjM,EAAIiM,EAAuB,EAC3BhM,EAAQgM,EAAuB,MAC/B9Z,EAAS8Z,EAAuB,OAChCnB,EAAgBmB,EAAuB,cACvCC,EAAmBD,EAAuB,iBAC1CE,EAAiBF,EAAuB,eAGtClB,EAAQqB,KAERhB,EAAQiB,KACZ,GAAI,CAACtJ,GAAS9C,CAAK,GAAKA,GAAS,GAAK,CAAC8C,GAAS5Q,CAAM,GAAKA,GAAU,GAAK,CAAC4Q,GAAShD,CAAC,GAAKA,IAAM,CAACA,GAAK,CAACgD,GAAS/C,CAAC,GAAKA,IAAM,CAACA,EAC3H,OAAO,KAUT,IAAIsM,EAA+BL,EAAuB,8BAAgCpB,GACtF0B,EAAiCN,EAAuB,gCAAkCd,GAC1F1B,EAAmBwC,EAAuB,iBAC5CnC,EAAiBmC,EAAuB,eAG1C,IAAK,CAACxC,GAAoB,CAACA,EAAiB,SAAWrG,GAAWmJ,CAA8B,EAAG,CACjG,IAAIC,EAAqBN,GAAoBA,EAAiB,OAC1DO,EAAkBF,EAA+B,CACnD,MAAOnB,EAAQ5J,GAAcA,GAAc,CAAA,EAAI4J,CAAK,EAAG,GAAI,CACzD,MAAOoB,EAAqBN,EAAmBd,EAAM,KACtD,CAAA,EAAI,OACL,MAAOQ,EACP,OAAQE,EACR,OAAQd,CACd,EAAOwB,EAAqB,GAAO1B,CAAa,EAC5C4B,GAAK,MAAM,QAAQD,CAAe,EAAG,+EAA+E,OAAOtL,GAAQsL,CAAe,EAAG,GAAG,CAAC,EACrJ,MAAM,QAAQA,CAAe,IAC/BhD,EAAmBgD,EAEtB,CAGD,IAAK,CAAC3C,GAAkB,CAACA,EAAe,SAAW1G,GAAWkJ,CAA4B,EAAG,CAC3F,IAAIK,EAAmBR,GAAkBA,EAAe,OACpDS,EAAmBN,EAA6B,CAClD,MAAOvB,EAAQvJ,GAAcA,GAAc,CAAA,EAAIuJ,CAAK,EAAG,GAAI,CACzD,MAAO4B,EAAmBR,EAAiBpB,EAAM,KAClD,CAAA,EAAI,OACL,MAAOa,EACP,OAAQE,EACR,OAAQd,CACd,EAAO2B,EAAmB,GAAO7B,CAAa,EAC1C4B,GAAK,MAAM,QAAQE,CAAgB,EAAG,6EAA6E,OAAOzL,GAAQyL,CAAgB,EAAG,GAAG,CAAC,EACrJ,MAAM,QAAQA,CAAgB,IAChC9C,EAAiB8C,EAEpB,CACD,OAAoB1F,EAAM,cAAc,IAAK,CAC3C,UAAW,yBACf,EAAkBA,EAAM,cAAc4B,GAAY,CAC9C,KAAMmD,EAAuB,KAC7B,YAAaA,EAAuB,YACpC,EAAGA,EAAuB,EAC1B,EAAGA,EAAuB,EAC1B,MAAOA,EAAuB,MAC9B,OAAQA,EAAuB,OAC/B,GAAIA,EAAuB,EAC/B,CAAG,EAAgB/E,EAAM,cAAcoC,GAAqB7F,GAAS,CAAE,EAAEwI,EAAwB,CAC7F,OAAQjB,EACR,iBAAkBvB,EAClB,MAAOsB,EACP,MAAOK,CACX,CAAG,CAAC,EAAgBlE,EAAM,cAAcyC,GAAmBlG,GAAS,CAAE,EAAEwI,EAAwB,CAC5F,OAAQjB,EACR,eAAgBlB,EAChB,MAAOiB,EACP,MAAOK,CACX,CAAG,CAAC,EAAgBlE,EAAM,cAAc6C,GAAmBtG,GAAS,CAAE,EAAEwI,EAAwB,CAC5F,iBAAkBxC,CACtB,CAAG,CAAC,EAAgBvC,EAAM,cAAcsD,GAAiB/G,GAAS,CAAE,EAAEwI,EAAwB,CAC1F,eAAgBnC,CACjB,CAAA,CAAC,CAAC,CACL,CACAuB,GAAc,YAAc,gBChX5B,IAAI/H,GAAY,CAAC,SAAU,OAAQ,SAAU,eAAgB,UAAW,KAAK,EAC3EC,GAAa,CAAC,KAAK,EACjBsJ,GACJ,SAAS1L,GAAQC,EAAG,CAAE,0BAA2B,OAAOD,GAAwB,OAAO,QAArB,YAA2C,OAAO,OAAO,UAA1B,SAAqC,SAAUC,EAAG,CAAE,OAAO,OAAOA,GAAO,SAAUA,EAAG,CAAE,OAAOA,GAAmB,OAAO,QAArB,YAA+BA,EAAE,cAAgB,QAAUA,IAAM,OAAO,UAAY,SAAW,OAAOA,CAAE,EAAID,GAAQC,CAAC,CAAI,CAC9T,SAASwC,GAAyBD,EAAQE,EAAU,CAAE,GAAIF,GAAU,KAAM,MAAO,GAAI,IAAID,EAASI,GAA8BH,EAAQE,CAAQ,EAAO7R,EAAKoN,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAI2E,EAAmB,OAAO,sBAAsBJ,CAAM,EAAG,IAAKvE,EAAI,EAAGA,EAAI2E,EAAiB,OAAQ3E,IAAOpN,EAAM+R,EAAiB3E,CAAC,EAAO,EAAAyE,EAAS,QAAQ7R,CAAG,GAAK,IAAkB,OAAO,UAAU,qBAAqB,KAAK2R,EAAQ3R,CAAG,IAAa0R,EAAO1R,CAAG,EAAI2R,EAAO3R,CAAG,EAAI,CAAG,OAAO0R,CAAS,CAC5e,SAASI,GAA8BH,EAAQE,EAAU,CAAE,GAAIF,GAAU,KAAM,MAAO,CAAA,EAAI,IAAID,EAAS,CAAE,EAAE,QAAS1R,KAAO2R,EAAU,GAAI,OAAO,UAAU,eAAe,KAAKA,EAAQ3R,CAAG,EAAG,CAAE,GAAI6R,EAAS,QAAQ7R,CAAG,GAAK,EAAG,SAAU0R,EAAO1R,CAAG,EAAI2R,EAAO3R,CAAG,EAAO,OAAO0R,CAAS,CACvR,SAASD,IAAW,CAAEA,OAAAA,GAAW,OAAO,OAAS,OAAO,OAAO,KAAM,EAAG,SAAUC,EAAQ,CAAE,QAAStE,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIuE,EAAS,UAAUvE,CAAC,EAAG,QAASpN,KAAO2R,EAAc,OAAO,UAAU,eAAe,KAAKA,EAAQ3R,CAAG,IAAK0R,EAAO1R,CAAG,EAAI2R,EAAO3R,CAAG,GAAS,OAAO0R,CAAS,EAASD,GAAS,MAAM,KAAM,SAAS,CAAI,CACnV,SAASpC,GAAQzN,EAAG0N,EAAG,CAAE,IAAIC,EAAI,OAAO,KAAK3N,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIwN,EAAI,OAAO,sBAAsBxN,CAAC,EAAG0N,IAAMF,EAAIA,EAAE,OAAO,SAAUE,EAAG,CAAE,OAAO,OAAO,yBAAyB1N,EAAG0N,CAAC,EAAE,UAAW,CAAE,GAAIC,EAAE,KAAK,MAAMA,EAAGH,CAAC,CAAE,CAAG,OAAOG,CAAI,CAC/P,SAASC,GAAc5N,EAAG,CAAE,QAAS0N,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIC,EAAY,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAID,GAAQ,OAAOE,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAUD,EAAG,CAAEG,GAAgB7N,EAAG0N,EAAGC,EAAED,CAAC,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiB1N,EAAG,OAAO,0BAA0B2N,CAAC,CAAC,EAAIF,GAAQ,OAAOE,CAAC,CAAC,EAAE,QAAQ,SAAUD,EAAG,CAAE,OAAO,eAAe1N,EAAG0N,EAAG,OAAO,yBAAyBC,EAAGD,CAAC,CAAC,CAAE,CAAE,CAAI,CAAC,OAAO1N,CAAI,CACvb,SAASoQ,GAAgBC,EAAUC,EAAa,CAAE,GAAI,EAAED,aAAoBC,GAAgB,MAAM,IAAI,UAAU,mCAAmC,CAAM,CACzJ,SAASC,GAAkBT,EAAQpP,EAAO,CAAE,QAAS8K,EAAI,EAAGA,EAAI9K,EAAM,OAAQ8K,IAAK,CAAE,IAAIgF,EAAa9P,EAAM8K,CAAC,EAAGgF,EAAW,WAAaA,EAAW,YAAc,GAAOA,EAAW,aAAe,GAAU,UAAWA,IAAYA,EAAW,SAAW,IAAM,OAAO,eAAeV,EAAQ/B,GAAeyC,EAAW,GAAG,EAAGA,CAAU,EAAM,CAC7U,SAASC,GAAaH,EAAaI,EAAYC,EAAa,CAAE,OAAID,GAAYH,GAAkBD,EAAY,UAAWI,CAAU,EAAOC,GAAaJ,GAAkBD,EAAaK,CAAW,EAAG,OAAO,eAAeL,EAAa,YAAa,CAAE,SAAU,EAAO,CAAA,EAAUA,CAAc,CAC7R,SAASM,GAAWjD,EAAGH,EAAGxN,EAAG,CAAE,OAAOwN,EAAIqD,GAAgBrD,CAAC,EAAGsD,GAA2BnD,EAAGoD,GAA2B,EAAG,QAAQ,UAAUvD,EAAGxN,GAAK,CAAA,EAAI6Q,GAAgBlD,CAAC,EAAE,WAAW,EAAIH,EAAE,MAAMG,EAAG3N,CAAC,CAAC,CAAI,CAC3M,SAAS8Q,GAA2BE,EAAMC,EAAM,CAAE,GAAIA,IAAS1D,GAAQ0D,CAAI,IAAM,UAAY,OAAOA,GAAS,YAAe,OAAOA,EAAa,GAAIA,IAAS,OAAU,MAAM,IAAI,UAAU,0DAA0D,EAAK,OAAOC,GAAuBF,CAAI,CAAI,CAChS,SAASE,GAAuBF,EAAM,CAAE,GAAIA,IAAS,OAAU,MAAM,IAAI,eAAe,2DAA2D,EAAK,OAAOA,CAAO,CACtK,SAASD,IAA4B,CAAE,GAAI,CAAE,IAAIpD,EAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,QAAS,CAAA,EAAI,UAAY,EAAE,CAAC,CAAE,MAAa,CAAA,CAAG,OAAQoD,GAA4B,UAAqC,CAAE,MAAO,CAAC,CAACpD,CAAE,GAAK,CAAG,CACnP,SAASkD,GAAgBrD,EAAG,CAAEqD,OAAAA,GAAkB,OAAO,eAAiB,OAAO,eAAe,OAAS,SAAyBrD,EAAG,CAAE,OAAOA,EAAE,WAAa,OAAO,eAAeA,CAAC,CAAE,EAAWqD,GAAgBrD,CAAC,CAAI,CACpN,SAAS2D,GAAUC,EAAUC,EAAY,CAAE,GAAI,OAAOA,GAAe,YAAcA,IAAe,KAAQ,MAAM,IAAI,UAAU,oDAAoD,EAAKD,EAAS,UAAY,OAAO,OAAOC,GAAcA,EAAW,UAAW,CAAE,YAAa,CAAE,MAAOD,EAAU,SAAU,GAAM,aAAc,EAAI,EAAI,EAAG,OAAO,eAAeA,EAAU,YAAa,CAAE,SAAU,EAAK,CAAE,EAAOC,GAAYC,GAAgBF,EAAUC,CAAU,CAAI,CACpc,SAASC,GAAgB9D,EAAG+D,EAAG,CAAED,OAAAA,GAAkB,OAAO,eAAiB,OAAO,eAAe,KAAM,EAAG,SAAyB9D,EAAG+D,EAAG,CAAE,OAAA/D,EAAE,UAAY+D,EAAU/D,CAAI,EAAS8D,GAAgB9D,EAAG+D,CAAC,CAAI,CACxM,SAAS1D,GAAgBC,EAAK1P,EAAK2E,EAAO,CAAE,OAAA3E,EAAM2P,GAAe3P,CAAG,EAAOA,KAAO0P,EAAO,OAAO,eAAeA,EAAK1P,EAAK,CAAE,MAAO2E,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAY+K,EAAI1P,CAAG,EAAI2E,EAAgB+K,CAAM,CAC5O,SAASC,GAAeJ,EAAG,CAAE,IAAInC,EAAIwC,GAAaL,EAAG,QAAQ,EAAG,OAAmBJ,GAAQ/B,CAAC,GAArB,SAAyBA,EAAIA,EAAI,EAAK,CAC7G,SAASwC,GAAaL,EAAGD,EAAG,CAAE,GAAgBH,GAAQI,CAAC,GAArB,UAA0B,CAACA,EAAG,OAAOA,EAAG,IAAI3N,EAAI2N,EAAE,OAAO,WAAW,EAAG,GAAe3N,IAAX,OAAc,CAAE,IAAIwL,EAAIxL,EAAE,KAAK2N,EAAGD,GAAK,SAAS,EAAG,GAAgBH,GAAQ/B,CAAC,GAArB,SAAwB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAqBkC,IAAb,SAAiB,OAAS,QAAQC,CAAC,CAAI,CAoBrT,IAAIuL,GAAoB,SAAUC,EAAgB,CACvD,SAASD,GAAO,CACd,IAAIxH,EACJtB,GAAgB,KAAM8I,CAAI,EAC1B,QAASE,EAAO,UAAU,OAAQjb,EAAO,IAAI,MAAMib,CAAI,EAAGC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Elb,EAAKkb,CAAI,EAAI,UAAUA,CAAI,EAE7B,OAAA3H,EAAQd,GAAW,KAAMsI,EAAM,CAAA,EAAG,OAAO/a,CAAI,CAAC,EAC9C0P,GAAgB6D,EAAO,QAAS,CAC9B,oBAAqB,EAC3B,CAAK,EACD7D,GAAgB6D,EAAO,KAAM4H,GAAS,gBAAgB,CAAC,EACvDzL,GAAgB6D,EAAO,qBAAsB,UAAY,CACvD,IAAI6H,EAAiB7H,EAAM,MAAM,eACjCA,EAAM,SAAS,CACb,oBAAqB,EAC7B,CAAO,EACGlC,GAAW+J,CAAc,GAC3BA,GAER,CAAK,EACD1L,GAAgB6D,EAAO,uBAAwB,UAAY,CACzD,IAAI8H,EAAmB9H,EAAM,MAAM,iBACnCA,EAAM,SAAS,CACb,oBAAqB,EAC7B,CAAO,EACGlC,GAAWgK,CAAgB,GAC7BA,GAER,CAAK,EACM9H,CACR,CACDP,OAAAA,GAAU+H,EAAMC,CAAc,EACvB1I,GAAayI,EAAM,CAAC,CACzB,IAAK,aACL,MAAO,SAAoBO,EAAUC,EAASC,EAAY,CACxD,IAAIC,EAAoB,KAAK,MAAM,kBAC/BC,EAAsB,KAAK,MAAM,oBACrC,GAAID,GAAqB,CAACC,EACxB,OAAO,KAET,IAAIhI,EAAc,KAAK,MACrBiI,EAAMjI,EAAY,IAClBkI,EAASlI,EAAY,OACrBmI,EAAUnI,EAAY,QACpBoI,EAAY9G,GAAY,KAAK,MAAO,EAAK,EACzC+G,EAAiB/G,GAAY2G,EAAK,EAAI,EACtCK,EAAOJ,EAAO,IAAI,SAAU5M,EAAO3B,EAAG,CACxC,IAAI4O,EAAWxM,GAAcA,GAAcA,GAAc,CACvD,IAAK,OAAO,OAAOpC,CAAC,EACpB,EAAG,CACJ,EAAEyO,CAAS,EAAGC,CAAc,EAAG,GAAI,CAClC,MAAO1O,EACP,GAAI2B,EAAM,EACV,GAAIA,EAAM,EACV,QAAS6M,EACT,MAAO7M,EAAM,MACb,QAASA,EAAM,QACf,OAAQ4M,CAClB,CAAS,EACD,OAAOb,EAAK,cAAcY,EAAKM,CAAQ,CAC/C,CAAO,EACGC,EAAY,CACd,SAAUZ,EAAW,iBAAiB,OAAOC,EAAU,GAAK,OAAO,EAAE,OAAOC,EAAY,GAAG,EAAI,IACvG,EACM,OAAoBrG,EAAM,cAAcc,GAAOvE,GAAS,CACtD,UAAW,oBACnB,EAASwK,CAAS,EAAGF,CAAI,CACpB,CACL,EAAK,CACD,IAAK,uBACL,MAAO,SAA8BG,EAAO,CAC1C,IAAIpI,EAAe,KAAK,MACtBqI,EAAWrI,EAAa,SACxB6H,EAAS7H,EAAa,OACtBsI,EAActI,EAAa,YACzBuI,EAASV,EAAO,CAAC,EAAE,EACnBW,EAAOX,EAAOA,EAAO,OAAS,CAAC,EAAE,EACjC1N,EAAQiO,EAAQ,KAAK,IAAIG,EAASC,CAAI,EACtCC,EAAOC,GAAIb,EAAO,IAAI,SAAU5M,EAAO,CACzC,OAAOA,EAAM,GAAK,CACnB,CAAA,CAAC,EAQF,OAPIgC,GAASoL,CAAQ,GAAK,OAAOA,GAAa,SAC5CI,EAAO,KAAK,IAAIJ,EAAUI,CAAI,EACrBJ,GAAY,MAAM,QAAQA,CAAQ,GAAKA,EAAS,SACzDI,EAAO,KAAK,IAAIC,GAAIL,EAAS,IAAI,SAAUpN,EAAO,CAChD,OAAOA,EAAM,GAAK,CAC5B,CAAS,CAAC,EAAGwN,CAAI,GAEPxL,GAASwL,CAAI,EACKrH,EAAM,cAAc,OAAQ,CAC9C,EAAGmH,EAASC,EAAOD,EAASA,EAASpO,EACrC,EAAG,EACH,MAAOA,EACP,OAAQ,KAAK,MAAMsO,GAAQH,EAAc,SAAS,GAAG,OAAOA,CAAW,EAAG,EAAE,EAAI,EAAE,CAC5F,CAAS,EAEI,IACR,CACL,EAAK,CACD,IAAK,qBACL,MAAO,SAA4BF,EAAO,CACxC,IAAIzH,EAAe,KAAK,MACtB0H,EAAW1H,EAAa,SACxBkH,EAASlH,EAAa,OACtB2H,EAAc3H,EAAa,YACzBgI,EAASd,EAAO,CAAC,EAAE,EACnBe,EAAOf,EAAOA,EAAO,OAAS,CAAC,EAAE,EACjCxb,EAAS+b,EAAQ,KAAK,IAAIO,EAASC,CAAI,EACvCC,EAAOH,GAAIb,EAAO,IAAI,SAAU5M,EAAO,CACzC,OAAOA,EAAM,GAAK,CACnB,CAAA,CAAC,EAQF,OAPIgC,GAASoL,CAAQ,GAAK,OAAOA,GAAa,SAC5CQ,EAAO,KAAK,IAAIR,EAAUQ,CAAI,EACrBR,GAAY,MAAM,QAAQA,CAAQ,GAAKA,EAAS,SACzDQ,EAAO,KAAK,IAAIH,GAAIL,EAAS,IAAI,SAAUpN,EAAO,CAChD,OAAOA,EAAM,GAAK,CAC5B,CAAS,CAAC,EAAG4N,CAAI,GAEP5L,GAAS4L,CAAI,EACKzH,EAAM,cAAc,OAAQ,CAC9C,EAAG,EACH,EAAGuH,EAASC,EAAOD,EAASA,EAAStc,EACrC,MAAOwc,GAAQP,EAAc,SAAS,GAAG,OAAOA,CAAW,EAAG,EAAE,EAAI,GACpE,OAAQ,KAAK,MAAMjc,CAAM,CACnC,CAAS,EAEI,IACR,CACL,EAAK,CACD,IAAK,iBACL,MAAO,SAAwB+b,EAAO,CACpC,IAAIU,EAAS,KAAK,MAAM,OACxB,OAAIA,IAAW,WACN,KAAK,mBAAmBV,CAAK,EAE/B,KAAK,qBAAqBA,CAAK,CACvC,CACL,EAAK,CACD,IAAK,uBACL,MAAO,SAA8BP,EAAQQ,EAAUd,EAAUE,EAAY,CACxE,IAAC5G,EAAe,KAAK,MACtBiI,EAASjI,EAAa,OACtBkI,EAAOlI,EAAa,KACpBa,EAASb,EAAa,OACtBmI,EAAenI,EAAa,aAC5BoI,EAAUpI,EAAa,QACjBA,EAAa,IAC3B,IAAQjS,EAASkP,GAAyB+C,EAAcrD,EAAS,EAC3D,OAAoB4D,EAAM,cAAcc,GAAO,CAC7C,SAAUqF,EAAW,iBAAiB,OAAOE,EAAY,GAAG,EAAI,IACxE,EAAsBrG,EAAM,cAAc8H,GAAOvL,GAAS,CAAA,EAAIsD,GAAYrS,EAAQ,EAAI,EAAG,CACjF,OAAQiZ,EACR,aAAcmB,EACd,KAAMD,EACN,SAAUV,EACV,OAAQS,EACR,OAAQ,OACR,UAAW,oBACZ,CAAA,CAAC,EAAGpH,IAAW,QAAuBN,EAAM,cAAc8H,GAAOvL,GAAS,CAAE,EAAEsD,GAAY,KAAK,MAAO,EAAK,EAAG,CAC7G,UAAW,sBACX,OAAQ6H,EACR,KAAMC,EACN,aAAcC,EACd,KAAM,OACN,OAAQnB,CACT,CAAA,CAAC,EAAGnG,IAAW,QAAUuH,GAAwB7H,EAAM,cAAc8H,GAAOvL,GAAS,CAAE,EAAEsD,GAAY,KAAK,MAAO,EAAK,EAAG,CACxH,UAAW,sBACX,OAAQ6H,EACR,KAAMC,EACN,aAAcC,EACd,KAAM,OACN,OAAQX,CACT,CAAA,CAAC,CAAC,CACJ,CACL,EAAK,CACD,IAAK,0BACL,MAAO,SAAiCd,EAAUE,EAAY,CAC5D,IAAIlG,EAAS,KACTR,EAAe,KAAK,MACtB8G,EAAS9G,EAAa,OACtBsH,EAAWtH,EAAa,SACxB2G,EAAoB3G,EAAa,kBACjCoI,EAAiBpI,EAAa,eAC9BqI,EAAoBrI,EAAa,kBACjCsI,EAAkBtI,EAAa,gBAC/BuI,EAAcvI,EAAa,YACzBwI,EAAc,KAAK,MACrBC,EAAaD,EAAY,WACzBE,EAAeF,EAAY,aAG7B,OAAoBnI,EAAM,cAAcsI,GAAS,CAC/C,MAAOP,EACP,SAAUC,EACV,SAAU1B,EACV,OAAQ2B,EACR,KAAM,CACJ,EAAG,CACJ,EACD,GAAI,CACF,EAAG,CACJ,EACD,IAAK,QAAQ,OAAOC,CAAW,EAC/B,eAAgB,KAAK,mBACrB,iBAAkB,KAAK,oBACxB,EAAE,SAAU7J,EAAM,CACjB,IAAIhE,EAAIgE,EAAK,EACb,GAAI+J,EAAY,CACd,IAAIG,EAAuBH,EAAW,OAAS3B,EAAO,OAElD+B,EAAa/B,EAAO,IAAI,SAAU5M,EAAO1I,EAAO,CAClD,IAAIsX,EAAiB,KAAK,MAAMtX,EAAQoX,CAAoB,EAC5D,GAAIH,EAAWK,CAAc,EAAG,CAC9B,IAAIC,EAAON,EAAWK,CAAc,EAChCE,EAAgBC,GAAkBF,EAAK,EAAG7O,EAAM,CAAC,EACjDgP,EAAgBD,GAAkBF,EAAK,EAAG7O,EAAM,CAAC,EACrD,OAAOS,GAAcA,GAAc,CAAE,EAAET,CAAK,EAAG,CAAA,EAAI,CACjD,EAAG8O,EAActO,CAAC,EAClB,EAAGwO,EAAcxO,CAAC,CAClC,CAAe,CACF,CACD,OAAOR,CACnB,CAAW,EACGiP,EACJ,GAAIjN,GAASoL,CAAQ,GAAK,OAAOA,GAAa,SAAU,CACtD,IAAI8B,EAAeH,GAAkBP,EAAcpB,CAAQ,EAC3D6B,EAAeC,EAAa1O,CAAC,CAC9B,SAAU2O,GAAM/B,CAAQ,GAAKgC,GAAMhC,CAAQ,EAAG,CAC7C,IAAIiC,EAAgBN,GAAkBP,EAAc,CAAC,EACrDS,EAAeI,EAAc7O,CAAC,CAC1C,MACYyO,EAAe7B,EAAS,IAAI,SAAUpN,EAAO1I,EAAO,CAClD,IAAIsX,EAAiB,KAAK,MAAMtX,EAAQoX,CAAoB,EAC5D,GAAIF,EAAaI,CAAc,EAAG,CAChC,IAAIC,EAAOL,EAAaI,CAAc,EAClCE,EAAgBC,GAAkBF,EAAK,EAAG7O,EAAM,CAAC,EACjDgP,EAAgBD,GAAkBF,EAAK,EAAG7O,EAAM,CAAC,EACrD,OAAOS,GAAcA,GAAc,CAAE,EAAET,CAAK,EAAG,CAAA,EAAI,CACjD,EAAG8O,EAActO,CAAC,EAClB,EAAGwO,EAAcxO,CAAC,CACpC,CAAiB,CACF,CACD,OAAOR,CACrB,CAAa,EAEH,OAAOsG,EAAO,qBAAqBqI,EAAYM,EAAc3C,EAAUE,CAAU,CAClF,CACD,OAAoBrG,EAAM,cAAcc,GAAO,KAAmBd,EAAM,cAAc,OAAQ,KAAmBA,EAAM,cAAc,WAAY,CAC/I,GAAI,qBAAqB,OAAOqG,CAAU,CACpD,EAAWlG,EAAO,eAAe9F,CAAC,CAAC,CAAC,EAAgB2F,EAAM,cAAcc,GAAO,CACrE,SAAU,0BAA0B,OAAOuF,EAAY,GAAG,CACpE,EAAWlG,EAAO,qBAAqBsG,EAAQQ,EAAUd,EAAUE,CAAU,CAAC,CAAC,CAC/E,CAAO,CACF,CACL,EAAK,CACD,IAAK,aACL,MAAO,SAAoBF,EAAUE,EAAY,CAC/C,IAAIjG,EAAe,KAAK,MACtBqG,EAASrG,EAAa,OACtB6G,EAAW7G,EAAa,SACxBkG,EAAoBlG,EAAa,kBAC/B+I,EAAe,KAAK,MACtBf,EAAae,EAAa,WAC1Bd,EAAec,EAAa,aAC5BC,EAAcD,EAAa,YAC7B,OAAI7C,GAAqBG,GAAUA,EAAO,SAAW,CAAC2B,GAAcgB,EAAc,GAAK,CAACC,GAAQjB,EAAY3B,CAAM,GAAK,CAAC4C,GAAQhB,EAAcpB,CAAQ,GAC7I,KAAK,wBAAwBd,EAAUE,CAAU,EAEnD,KAAK,qBAAqBI,EAAQQ,EAAUd,EAAUE,CAAU,CACxE,CACL,EAAK,CACD,IAAK,SACL,MAAO,UAAkB,CACvB,IAAInE,EACAjB,EAAe,KAAK,MACtBE,EAAOF,EAAa,KACpBuF,EAAMvF,EAAa,IACnBwF,EAASxF,EAAa,OACtBnS,EAAYmS,EAAa,UACzBqI,EAAMrI,EAAa,IACnBsI,EAAOtI,EAAa,KACpB4C,EAAQ5C,EAAa,MACrBiD,EAAQjD,EAAa,MACrBlI,EAAQkI,EAAa,MACrBhW,EAASgW,EAAa,OACtBqF,EAAoBrF,EAAa,kBACjCuI,EAAKvI,EAAa,GACpB,GAAIE,GAAQ,CAACsF,GAAU,CAACA,EAAO,OAC7B,OAAO,KAET,IAAIF,EAAsB,KAAK,MAAM,oBACjCkD,EAAiBhD,EAAO,SAAW,EACnCiD,EAAazJ,GAAK,gBAAiBnR,CAAS,EAC5C6a,EAAY9F,GAASA,EAAM,kBAC3B+F,EAAY1F,GAASA,EAAM,kBAC3BiC,EAAWwD,GAAaC,EACxBvD,EAAa2C,GAAMQ,CAAE,EAAI,KAAK,GAAKA,EACnClI,GAASY,EAAerC,GAAY2G,EAAK,EAAK,KAAO,MAAQtE,IAAiB,OAASA,EAAe,CACtG,EAAG,EACH,YAAa,CACd,EACD2H,EAAUvI,EAAM,EAChBlH,EAAIyP,IAAY,OAAS,EAAIA,EAC7BC,EAAoBxI,EAAM,YAC1B4F,EAAc4C,IAAsB,OAAS,EAAIA,EAC/CC,EAAQC,GAAWxD,CAAG,EAAIA,EAAM,CAAE,EACpCyD,EAAgBF,EAAM,QACtB3D,EAAU6D,IAAkB,OAAS,GAAOA,EAC1CC,EAAU9P,EAAI,EAAI8M,EACtB,OAAoBlH,EAAM,cAAcc,GAAO,CAC7C,UAAW4I,CACnB,EAASC,GAAaC,EAAyB5J,EAAM,cAAc,OAAQ,KAAmBA,EAAM,cAAc,WAAY,CACtH,GAAI,YAAY,OAAOqG,CAAU,CACzC,EAAsBrG,EAAM,cAAc,OAAQ,CAC1C,EAAG2J,EAAYJ,EAAOA,EAAOxQ,EAAQ,EACrC,EAAG6Q,EAAYN,EAAMA,EAAMre,EAAS,EACpC,MAAO0e,EAAY5Q,EAAQA,EAAQ,EACnC,OAAQ6Q,EAAY3e,EAASA,EAAS,CACvC,CAAA,CAAC,EAAG,CAACmb,GAAwBpG,EAAM,cAAc,WAAY,CAC5D,GAAI,iBAAiB,OAAOqG,CAAU,CAC9C,EAAsBrG,EAAM,cAAc,OAAQ,CAC1C,EAAGuJ,EAAOW,EAAU,EACpB,EAAGZ,EAAMY,EAAU,EACnB,MAAOnR,EAAQmR,EACf,OAAQjf,EAASif,CAClB,CAAA,CAAC,CAAC,EAAI,KAAOT,EAAyD,KAAxC,KAAK,WAAWtD,EAAUE,CAAU,GAAWG,GAAOiD,IAAmB,KAAK,WAAWtD,EAAUC,EAASC,CAAU,GAAI,CAACC,GAAqBC,IAAwB4D,GAAU,mBAAmB,KAAK,MAAO1D,CAAM,CAAC,CACxP,CACF,CAAA,EAAG,CAAC,CACH,IAAK,2BACL,MAAO,SAAkC2D,EAAWC,EAAW,CAC7D,OAAID,EAAU,cAAgBC,EAAU,gBAC/B,CACL,gBAAiBD,EAAU,YAC3B,UAAWA,EAAU,OACrB,YAAaA,EAAU,SACvB,WAAYC,EAAU,UACtB,aAAcA,EAAU,WAClC,EAEUD,EAAU,SAAWC,EAAU,WAAaD,EAAU,WAAaC,EAAU,YACxE,CACL,UAAWD,EAAU,OACrB,YAAaA,EAAU,QACjC,EAEa,IACR,CACF,CAAA,CAAC,CACJ,EAAEE,EAAa,aAAA,EACf3E,GAAQC,GACRrL,GAAgBqL,GAAM,cAAe,MAAM,EAC3CrL,GAAgBqL,GAAM,eAAgB,CACpC,OAAQ,UACR,KAAM,UACN,YAAa,GACb,QAAS,EACT,QAAS,EACT,WAAY,OACZ,aAAc,GAEd,OAAQ,CAAE,EACV,IAAK,GACL,UAAW,GACX,KAAM,GACN,kBAAmB,CAAC9J,GAAO,MAC3B,eAAgB,EAChB,kBAAmB,KACnB,gBAAiB,MACnB,CAAC,EACDvB,GAAgBqL,GAAM,eAAgB,SAAUxY,EAAO8E,EAAM2R,EAAOK,EAAO,CACzE,IAAIwD,EAASta,EAAM,OACjBmd,EAAiBnd,EAAM,UACrBod,EAAgBtY,EAAK,MAAM,UAI3BuY,EAAYD,GAAqED,EACrF,GAAI1O,GAAS4O,CAAS,GAAK,OAAOA,GAAc,SAC9C,OAAOA,EAET,IAAIC,EAAchD,IAAW,aAAexD,EAAQL,EAChD8G,EAASD,EAAY,MAAM,OAAM,EACrC,GAAIA,EAAY,OAAS,SAAU,CACjC,IAAIE,EAAY,KAAK,IAAID,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,EACzCE,EAAY,KAAK,IAAIF,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,EAC7C,OAAIF,IAAc,UACTI,EAELJ,IAAc,WAGXG,EAAY,EAFVA,EAE0B,KAAK,IAAI,KAAK,IAAID,EAAO,CAAC,EAAGA,EAAO,CAAC,CAAC,EAAG,CAAC,CAC9E,CACD,OAAIF,IAAc,UACTE,EAAO,CAAC,EAEbF,IAAc,UACTE,EAAO,CAAC,EAEVA,EAAO,CAAC,CACjB,CAAC,EACDpQ,GAAgBqL,GAAM,kBAAmB,SAAUkF,EAAO,CACxD,IAAI1d,EAAQ0d,EAAM,MAChB5Y,EAAO4Y,EAAM,KACbjH,EAAQiH,EAAM,MACd5G,EAAQ4G,EAAM,MACdC,EAAaD,EAAM,WACnBE,EAAaF,EAAM,WACnBG,EAAWH,EAAM,SACjBpE,EAAUoE,EAAM,QAChBI,EAAcJ,EAAM,YACpBK,EAAiBL,EAAM,eACvBM,EAAgBN,EAAM,cACtBhH,EAASgH,EAAM,OACbpD,EAASta,EAAM,OACfie,EAAWH,GAAeA,EAAY,OACtCT,EAAY9E,GAAM,aAAavY,EAAO8E,EAAM2R,EAAOK,CAAK,EACxDoH,EAAqB5D,IAAW,aAChCG,EAAU,GACVpB,EAAS2E,EAAc,IAAI,SAAUvR,EAAO1I,EAAO,CACrD,IAAI1B,EACA4b,EACF5b,EAAQyb,EAAYC,EAAiBha,CAAK,GAE1C1B,EAAQ8b,GAAkB1R,EAAO6M,CAAO,EACnC,MAAM,QAAQjX,CAAK,EAGtBoY,EAAU,GAFVpY,EAAQ,CAACgb,EAAWhb,CAAK,GAK7B,IAAI+b,EAAe/b,EAAM,CAAC,GAAK,MAAQ4b,GAAYE,GAAkB1R,EAAO6M,CAAO,GAAK,KACxF,OAAI4E,EACK,CACL,EAAGG,GAAwB,CACzB,KAAM5H,EACN,MAAOkH,EACP,SAAUE,EACV,MAAOpR,EACP,MAAO1I,CACjB,CAAS,EACD,EAAGqa,EAAe,KAAOtH,EAAM,MAAMzU,EAAM,CAAC,CAAC,EAC7C,MAAOA,EACP,QAASoK,CACjB,EAEW,CACL,EAAG2R,EAAe,KAAO3H,EAAM,MAAMpU,EAAM,CAAC,CAAC,EAC7C,EAAGgc,GAAwB,CACzB,KAAMvH,EACN,MAAO8G,EACP,SAAUC,EACV,MAAOpR,EACP,MAAO1I,CACf,CAAO,EACD,MAAO1B,EACP,QAASoK,CACf,CACA,CAAG,EACGoN,EACJ,OAAIoE,GAAYxD,EACdZ,EAAWR,EAAO,IAAI,SAAU5M,EAAO,CACrC,IAAIhB,EAAI,MAAM,QAAQgB,EAAM,KAAK,EAAIA,EAAM,MAAM,CAAC,EAAI,KACtD,OAAIyR,EACK,CACL,EAAGzR,EAAM,EACT,EAAGhB,GAAK,MAAQgB,EAAM,GAAK,KAAOqK,EAAM,MAAMrL,CAAC,EAAI,IAC7D,EAEa,CACL,EAAGA,GAAK,KAAOgL,EAAM,MAAMhL,CAAC,EAAI,KAChC,EAAGgB,EAAM,CACjB,CACA,CAAK,EAEDoN,EAAWqE,EAAqBpH,EAAM,MAAMuG,CAAS,EAAI5G,EAAM,MAAM4G,CAAS,EAEzEnQ,GAAc,CACnB,OAAQmM,EACR,SAAUQ,EACV,OAAQS,EACR,QAASG,CACV,EAAE/D,CAAM,CACX,CAAC,EACDvJ,GAAgBqL,GAAM,gBAAiB,SAAUpE,EAAQpU,EAAO,CAC9D,IAAIse,EACJ,GAAkB1L,EAAM,eAAewB,CAAM,EAC3CkK,EAAuB1L,EAAM,aAAawB,EAAQpU,CAAK,UAC9C8O,GAAWsF,CAAM,EAC1BkK,EAAUlK,EAAOpU,CAAK,MACjB,CACL,IAAI0B,EAAYmR,GAAK,oBAAqB,OAAOuB,GAAW,UAAYA,EAAO,UAAY,EAAE,EACzF1W,EAAMsC,EAAM,IACdN,EAAO4P,GAAyBtP,EAAOiP,EAAU,EACnDqP,EAAuB1L,EAAM,cAAc2L,GAAKpP,GAAS,CAAE,EAAEzP,EAAM,CACjE,IAAKhC,EACL,UAAWgE,CACZ,CAAA,CAAC,CACH,CACD,OAAO4c,CACT,CAAC,EC9hBD,SAASzR,GAAQC,EAAG,CAAE,0BAA2B,OAAOD,GAAwB,OAAO,QAArB,YAA2C,OAAO,OAAO,UAA1B,SAAqC,SAAUC,EAAG,CAAE,OAAO,OAAOA,GAAO,SAAUA,EAAG,CAAE,OAAOA,GAAmB,OAAO,QAArB,YAA+BA,EAAE,cAAgB,QAAUA,IAAM,OAAO,UAAY,SAAW,OAAOA,CAAE,EAAID,GAAQC,CAAC,CAAI,CAC9T,SAAS4C,GAAgBC,EAAUC,EAAa,CAAE,GAAI,EAAED,aAAoBC,GAAgB,MAAM,IAAI,UAAU,mCAAmC,CAAM,CACzJ,SAASC,GAAkBT,EAAQpP,EAAO,CAAE,QAAS8K,EAAI,EAAGA,EAAI9K,EAAM,OAAQ8K,IAAK,CAAE,IAAIgF,EAAa9P,EAAM8K,CAAC,EAAGgF,EAAW,WAAaA,EAAW,YAAc,GAAOA,EAAW,aAAe,GAAU,UAAWA,IAAYA,EAAW,SAAW,IAAM,OAAO,eAAeV,EAAQ/B,GAAeyC,EAAW,GAAG,EAAGA,CAAU,EAAM,CAC7U,SAASC,GAAaH,EAAaI,EAAYC,EAAa,CAAE,OAAID,GAAYH,GAAkBD,EAAY,UAAWI,CAAU,EAAiE,OAAO,eAAeJ,EAAa,YAAa,CAAE,SAAU,GAAO,EAAUA,CAAc,CAC7R,SAASM,GAAWjD,EAAGH,EAAGxN,EAAG,CAAE,OAAOwN,EAAIqD,GAAgBrD,CAAC,EAAGsD,GAA2BnD,EAAGoD,GAA2B,EAAG,QAAQ,UAAUvD,EAAGxN,GAAK,CAAA,EAAI6Q,GAAgBlD,CAAC,EAAE,WAAW,EAAIH,EAAE,MAAMG,EAAG3N,CAAC,CAAC,CAAI,CAC3M,SAAS8Q,GAA2BE,EAAMC,EAAM,CAAE,GAAIA,IAAS1D,GAAQ0D,CAAI,IAAM,UAAY,OAAOA,GAAS,YAAe,OAAOA,EAAa,GAAIA,IAAS,OAAU,MAAM,IAAI,UAAU,0DAA0D,EAAK,OAAOC,GAAuBF,CAAI,CAAI,CAChS,SAASE,GAAuBF,EAAM,CAAE,GAAIA,IAAS,OAAU,MAAM,IAAI,eAAe,2DAA2D,EAAK,OAAOA,CAAO,CACtK,SAASD,IAA4B,CAAE,GAAI,CAAE,IAAIpD,EAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,QAAS,CAAA,EAAI,UAAY,EAAE,CAAC,CAAE,MAAa,CAAA,CAAG,OAAQoD,GAA4B,UAAqC,CAAE,MAAO,CAAC,CAACpD,CAAE,GAAK,CAAG,CACnP,SAASkD,GAAgBrD,EAAG,CAAEqD,OAAAA,GAAkB,OAAO,eAAiB,OAAO,eAAe,OAAS,SAAyBrD,EAAG,CAAE,OAAOA,EAAE,WAAa,OAAO,eAAeA,CAAC,CAAE,EAAWqD,GAAgBrD,CAAC,CAAI,CACpN,SAAS2D,GAAUC,EAAUC,EAAY,CAAE,GAAI,OAAOA,GAAe,YAAcA,IAAe,KAAQ,MAAM,IAAI,UAAU,oDAAoD,EAAKD,EAAS,UAAY,OAAO,OAAOC,GAAcA,EAAW,UAAW,CAAE,YAAa,CAAE,MAAOD,EAAU,SAAU,GAAM,aAAc,EAAI,EAAI,EAAG,OAAO,eAAeA,EAAU,YAAa,CAAE,SAAU,EAAK,CAAE,EAAOC,GAAYC,GAAgBF,EAAUC,CAAU,CAAI,CACpc,SAASC,GAAgB9D,EAAG+D,EAAG,CAAED,OAAAA,GAAkB,OAAO,eAAiB,OAAO,eAAe,KAAM,EAAG,SAAyB9D,EAAG+D,EAAG,CAAE,OAAA/D,EAAE,UAAY+D,EAAU/D,CAAI,EAAS8D,GAAgB9D,EAAG+D,CAAC,CAAI,CACxM,SAAS1D,GAAgBC,EAAK1P,EAAK2E,EAAO,CAAE,OAAA3E,EAAM2P,GAAe3P,CAAG,EAAOA,KAAO0P,EAAO,OAAO,eAAeA,EAAK1P,EAAK,CAAE,MAAO2E,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAY+K,EAAI1P,CAAG,EAAI2E,EAAgB+K,CAAM,CAC5O,SAASC,GAAeJ,EAAG,CAAE,IAAInC,EAAIwC,GAAaL,EAAG,QAAQ,EAAG,OAAmBJ,GAAQ/B,CAAC,GAArB,SAAyBA,EAAIA,EAAI,EAAK,CAC7G,SAASwC,GAAaL,EAAGD,EAAG,CAAE,GAAgBH,GAAQI,CAAC,GAArB,UAA0B,CAACA,EAAG,OAAOA,EAAG,IAAI3N,EAAI2N,EAAE,OAAO,WAAW,EAAG,GAAe3N,IAAX,OAAc,CAAE,IAAIwL,EAAIxL,EAAE,KAAK2N,EAAGD,GAAK,SAAS,EAAG,GAAgBH,GAAQ/B,CAAC,GAArB,SAAwB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAqBkC,IAAb,SAAiB,OAAS,QAAQC,CAAC,CAAI,CAC5T,SAASkC,IAAW,CAAEA,OAAAA,GAAW,OAAO,OAAS,OAAO,OAAO,KAAM,EAAG,SAAUC,EAAQ,CAAE,QAAStE,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIuE,EAAS,UAAUvE,CAAC,EAAG,QAASpN,KAAO2R,EAAc,OAAO,UAAU,eAAe,KAAKA,EAAQ3R,CAAG,IAAK0R,EAAO1R,CAAG,EAAI2R,EAAO3R,CAAG,GAAS,OAAO0R,CAAS,EAASD,GAAS,MAAM,KAAM,SAAS,CAAI,CAYnV,SAASqP,GAAUvN,EAAM,CACvB,IAAIwN,EAAUxN,EAAK,QACftF,EAAQ4L,KACR1Z,EAAS4Z,KACTiH,EAAcC,GAAgBF,CAAO,EACzC,OAAIC,GAAe,KACV,KAKP9L,EAAM,cAAc9B,GAAe3B,GAAS,CAAA,EAAIuP,EAAa,CAC3D,UAAW7L,GAAK,YAAY,OAAO6L,EAAY,SAAU,GAAG,EAAE,OAAOA,EAAY,QAAQ,EAAGA,EAAY,SAAS,EACjH,QAAS,CACP,EAAG,EACH,EAAG,EACH,MAAO/S,EACP,OAAQ9N,CACT,EACD,eAAgB,SAAwB+gB,EAAM,CAC5C,OAAOhI,GAAegI,EAAM,EAAI,CACjC,CACP,CAAK,CAAC,CAEN,CAGO,IAAIC,GAAqB,SAAUC,EAAkB,CAC1D,SAASD,GAAQ,CACfnP,OAAAA,GAAgB,KAAMmP,CAAK,EACpB3O,GAAW,KAAM2O,EAAO,SAAS,CACzC,CACDpO,OAAAA,GAAUoO,EAAOC,CAAgB,EAC1B/O,GAAa8O,EAAO,CAAC,CAC1B,IAAK,SACL,MAAO,UAAkB,CACvB,OAAoBjM,EAAM,cAAc4L,GAAW,KAAK,KAAK,CAC9D,CACF,CAAA,CAAC,CACJ,EAAE5L,EAAM,SAAS,EACjBzF,GAAgB0R,GAAO,cAAe,OAAO,EAC7C1R,GAAgB0R,GAAO,eAAgB,CACrC,cAAe,GACf,KAAM,GACN,YAAa,SACb,MAAO,EACP,OAAQ,GACR,OAAQ,GACR,QAAS,EACT,UAAW,EACX,KAAM,WACN,QAAS,CACP,KAAM,EACN,MAAO,CACR,EACD,kBAAmB,GACnB,MAAO,OACP,SAAU,GACV,wBAAyB,EAC3B,CAAC,ECrFD,SAAShS,GAAQC,EAAG,CAAE,0BAA2B,OAAOD,GAAwB,OAAO,QAArB,YAA2C,OAAO,OAAO,UAA1B,SAAqC,SAAUC,EAAG,CAAE,OAAO,OAAOA,GAAO,SAAUA,EAAG,CAAE,OAAOA,GAAmB,OAAO,QAArB,YAA+BA,EAAE,cAAgB,QAAUA,IAAM,OAAO,UAAY,SAAW,OAAOA,CAAE,EAAID,GAAQC,CAAC,CAAI,CAC9T,SAAS4C,GAAgBC,EAAUC,EAAa,CAAE,GAAI,EAAED,aAAoBC,GAAgB,MAAM,IAAI,UAAU,mCAAmC,CAAM,CACzJ,SAASC,GAAkBT,EAAQpP,EAAO,CAAE,QAAS8K,EAAI,EAAGA,EAAI9K,EAAM,OAAQ8K,IAAK,CAAE,IAAIgF,EAAa9P,EAAM8K,CAAC,EAAGgF,EAAW,WAAaA,EAAW,YAAc,GAAOA,EAAW,aAAe,GAAU,UAAWA,IAAYA,EAAW,SAAW,IAAM,OAAO,eAAeV,EAAQ/B,GAAeyC,EAAW,GAAG,EAAGA,CAAU,EAAM,CAC7U,SAASC,GAAaH,EAAaI,EAAYC,EAAa,CAAE,OAAID,GAAYH,GAAkBD,EAAY,UAAWI,CAAU,EAAiE,OAAO,eAAeJ,EAAa,YAAa,CAAE,SAAU,GAAO,EAAUA,CAAc,CAC7R,SAASM,GAAWjD,EAAGH,EAAGxN,EAAG,CAAE,OAAOwN,EAAIqD,GAAgBrD,CAAC,EAAGsD,GAA2BnD,EAAGoD,GAA2B,EAAG,QAAQ,UAAUvD,EAAGxN,GAAK,CAAA,EAAI6Q,GAAgBlD,CAAC,EAAE,WAAW,EAAIH,EAAE,MAAMG,EAAG3N,CAAC,CAAC,CAAI,CAC3M,SAAS8Q,GAA2BE,EAAMC,EAAM,CAAE,GAAIA,IAAS1D,GAAQ0D,CAAI,IAAM,UAAY,OAAOA,GAAS,YAAe,OAAOA,EAAa,GAAIA,IAAS,OAAU,MAAM,IAAI,UAAU,0DAA0D,EAAK,OAAOC,GAAuBF,CAAI,CAAI,CAChS,SAASE,GAAuBF,EAAM,CAAE,GAAIA,IAAS,OAAU,MAAM,IAAI,eAAe,2DAA2D,EAAK,OAAOA,CAAO,CACtK,SAASD,IAA4B,CAAE,GAAI,CAAE,IAAIpD,EAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,QAAS,CAAA,EAAI,UAAY,EAAE,CAAC,CAAE,MAAa,CAAA,CAAG,OAAQoD,GAA4B,UAAqC,CAAE,MAAO,CAAC,CAACpD,CAAE,GAAK,CAAG,CACnP,SAASkD,GAAgBrD,EAAG,CAAE,OAAAqD,GAAkB,OAAO,eAAiB,OAAO,eAAe,OAAS,SAAyBrD,EAAG,CAAE,OAAOA,EAAE,WAAa,OAAO,eAAeA,CAAC,CAAE,EAAWqD,GAAgBrD,CAAC,CAAI,CACpN,SAAS2D,GAAUC,EAAUC,EAAY,CAAE,GAAI,OAAOA,GAAe,YAAcA,IAAe,KAAQ,MAAM,IAAI,UAAU,oDAAoD,EAAKD,EAAS,UAAY,OAAO,OAAOC,GAAcA,EAAW,UAAW,CAAE,YAAa,CAAE,MAAOD,EAAU,SAAU,GAAM,aAAc,EAAI,EAAI,EAAG,OAAO,eAAeA,EAAU,YAAa,CAAE,SAAU,EAAK,CAAE,EAAOC,GAAYC,GAAgBF,EAAUC,CAAU,CAAI,CACpc,SAASC,GAAgB9D,EAAG+D,EAAG,CAAE,OAAAD,GAAkB,OAAO,eAAiB,OAAO,eAAe,KAAM,EAAG,SAAyB9D,EAAG+D,EAAG,CAAE,OAAA/D,EAAE,UAAY+D,EAAU/D,CAAI,EAAS8D,GAAgB9D,EAAG+D,CAAC,CAAI,CACxM,SAAS1D,GAAgBC,EAAK1P,EAAK2E,EAAO,CAAE,OAAA3E,EAAM2P,GAAe3P,CAAG,EAAOA,KAAO0P,EAAO,OAAO,eAAeA,EAAK1P,EAAK,CAAE,MAAO2E,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAY+K,EAAI1P,CAAG,EAAI2E,EAAgB+K,CAAM,CAC5O,SAASC,GAAeJ,EAAG,CAAE,IAAInC,EAAIwC,GAAaL,EAAG,QAAQ,EAAG,OAAmBJ,GAAQ/B,CAAC,GAArB,SAAyBA,EAAIA,EAAI,EAAK,CAC7G,SAASwC,GAAaL,EAAGD,EAAG,CAAE,GAAgBH,GAAQI,CAAC,GAArB,UAA0B,CAACA,EAAG,OAAOA,EAAG,IAAI3N,EAAI2N,EAAE,OAAO,WAAW,EAAG,GAAe3N,IAAX,OAAc,CAAE,IAAIwL,EAAIxL,EAAE,KAAK2N,EAAGD,GAAK,SAAS,EAAG,GAAgBH,GAAQ/B,CAAC,GAArB,SAAwB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAqBkC,IAAb,SAAiB,OAAS,QAAQC,CAAC,CAAI,CAC5T,SAASkC,IAAW,CAAE,OAAAA,GAAW,OAAO,OAAS,OAAO,OAAO,KAAM,EAAG,SAAUC,EAAQ,CAAE,QAAStE,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIuE,EAAS,UAAUvE,CAAC,EAAG,QAASpN,KAAO2R,EAAc,OAAO,UAAU,eAAe,KAAKA,EAAQ3R,CAAG,IAAK0R,EAAO1R,CAAG,EAAI2R,EAAO3R,CAAG,GAAS,OAAO0R,CAAS,EAASD,GAAS,MAAM,KAAM,SAAS,CAAI,CASnV,IAAI4P,GAAY,SAAmB9N,EAAM,CACvC,IAAI+N,EAAU/N,EAAK,QACftF,EAAQ4L,KACR1Z,EAAS4Z,KACTiH,EAAcO,GAAgBD,CAAO,EACzC,OAAIN,GAAe,KACV,KAKP9L,EAAM,cAAc9B,GAAe3B,GAAS,CAAA,EAAIuP,EAAa,CAC3D,UAAW7L,GAAK,YAAY,OAAO6L,EAAY,SAAU,GAAG,EAAE,OAAOA,EAAY,QAAQ,EAAGA,EAAY,SAAS,EACjH,QAAS,CACP,EAAG,EACH,EAAG,EACH,MAAO/S,EACP,OAAQ9N,CACT,EACD,eAAgB,SAAwB+gB,EAAM,CAC5C,OAAOhI,GAAegI,EAAM,EAAI,CACjC,CACP,CAAK,CAAC,CAEN,EAGWM,GAAqB,SAAUJ,EAAkB,CAC1D,SAASI,GAAQ,CACf,OAAAxP,GAAgB,KAAMwP,CAAK,EACpBhP,GAAW,KAAMgP,EAAO,SAAS,CACzC,CACD,OAAAzO,GAAUyO,EAAOJ,CAAgB,EAC1B/O,GAAamP,EAAO,CAAC,CAC1B,IAAK,SACL,MAAO,UAAkB,CACvB,OAAoBtM,EAAM,cAAcmM,GAAW,KAAK,KAAK,CAC9D,CACF,CAAA,CAAC,CACJ,EAAEnM,EAAM,SAAS,EACjBzF,GAAgB+R,GAAO,cAAe,OAAO,EAC7C/R,GAAgB+R,GAAO,eAAgB,CACrC,wBAAyB,GACzB,cAAe,GACf,KAAM,GACN,YAAa,OACb,MAAO,GACP,OAAQ,EACR,OAAQ,GACR,QAAS,EACT,UAAW,EACX,KAAM,SACN,QAAS,CACP,IAAK,EACL,OAAQ,CACT,EACD,kBAAmB,GACnB,MAAO,OACP,SAAU,EACZ,CAAC,EC1EM,IAAIC,GAAYC,GAAyB,CAC9C,UAAW,YACX,eAAgB5G,GAChB,eAAgB,CAAC,CACf,SAAU,QACV,SAAUqG,EACd,EAAK,CACD,SAAU,QACV,SAAUK,EACd,CAAG,EACD,cAAeG,EACjB,CAAC,EChBD,SAASC,GAAW,CAAE,EAAA7T,EAAG,EAAAC,EAAG,MAAArJ,EAAO,eAAAkd,CAAc,EAAI,CACnD,OAAuB5e,MAAI,IAAK,CAAE,UAAW,aAAa8K,CAAC,IAAIC,CAAC,IAAK,SAA0B/K,EAAG,IAChG,OACA,CACE,EAAG,EACH,EAAG,EACH,GAAI,GACJ,GAAI,IACJ,WAAY,MACZ,KAAM,uDACN,SAAU,EACV,SAAU4e,EAAiBA,EAAeld,CAAK,EAAIA,CACpD,CACF,CAAA,CAAE,CACL,CCdA,SAASmd,GAAa,CAAE,MAAA3d,EAAO,GAAAua,EAAI,aAAAqD,EAAc,YAAA/K,CAAW,EAAI,CAC9D,OAAuB/T,EAAAA,IAAI+e,EAAAA,SAAU,CAAE,SAAUD,EAA+Bvd,EAAI,KAAC,iBAAkB,CAAE,GAAAka,EAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,SAAU,CACzIzb,MAAI,OAAQ,CAAE,OAAQ,KAAM,UAAWkB,EAAO,YAAa6S,EAAa,EACxE/T,MAAI,OAAQ,CAAE,OAAQ,OAAQ,UAAWkB,EAAO,YAAa,IAAM,CACpF,CAAA,CAAE,EAAoBlB,EAAAA,IAAI,iBAAkB,CAAE,GAAAyb,EAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,SAA0Bzb,EAAG,IAAC,OAAQ,CAAE,UAAWkB,EAAO,YAAa6S,GAAe,EAAG,CAAE,CAAG,CAAA,CAAG,CAAA,CAC1L,CACA8K,GAAa,YAAc,+BCL3B,SAASG,GAAU,CAAE,OAAAjJ,EAAQ,GAAA0F,EAAI,OAAAwD,EAAQ,YAAAlL,CAAW,EAAI,CACtD,MAAMpU,EAAQC,KACd,OAAuB2B,EAAI,KAAC,iBAAkB,CAAE,GAAAka,EAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,SAAU,CAChFzb,EAAG,IACjB,OACA,CACE,OAAA+V,EACA,UAAWmJ,GAAcD,EAAO,CAAC,EAAGtf,CAAK,EACzC,YAAaoU,GAAe,EAC7B,CACF,EACe/T,EAAG,IACjB,OACA,CACE,OAAA+V,EACA,UAAWmJ,GAAcD,EAAO,CAAC,EAAGtf,CAAK,EACzC,YAAaoU,GAAe,EAC7B,CACF,CACF,CAAA,CAAE,CACL,CACAiL,GAAU,YAAc,4BCxBxB,SAASG,GAAe,CAAE,KAAAvb,EAAM,QAAA+U,GAAW,CACzC,MAAMyG,EAAU,KAAK,IAAI,GAAGxb,EAAK,IAAKO,GAASA,EAAKwU,CAAO,CAAC,CAAC,EACvD0G,EAAU,KAAK,IAAI,GAAGzb,EAAK,IAAKO,GAASA,EAAKwU,CAAO,CAAC,CAAC,EAC7D,OAAIyG,GAAW,EACN,EAELC,GAAW,EACN,EAEFD,GAAWA,EAAUC,EAC9B,CACA,SAASC,GAAsB,CAAE,KAAA1b,EAAM,OAAA4F,GAAU,CAC/C,GAAIA,EAAO,SAAW,EAAG,CACvB,MAAMmP,EAAUnP,EAAO,CAAC,EAAE,KAC1B,OAAO2V,GAAe,CAAE,KAAAvb,EAAM,QAAA+U,CAAS,CAAA,CACxC,CACD,MAAO,GACT,CCjBA,IAAIxY,GAAU,CAAC,KAAO,aAAa,UAAY,aAAa,KAAO,aAAa,KAAO,aAAa,UAAY,aAAa,QAAU,YAAY,ECYnJ,SAASof,GAAe7d,EAAO,CAC7B,MAAO,IAAIA,EAAQ,KAAK,QAAQ,CAAC,CAAC,GACpC,CACA,MAAMxC,GAAe,CACnB,UAAW,GACX,UAAW,GACX,SAAU,GACV,YAAa,GACb,aAAc,GACd,YAAa,EACb,yBAA0B,EAC1B,YAAa,GACb,SAAU,IACV,gBAAiB,MACjB,UAAW,WACX,SAAU,IACV,KAAM,UACN,YAAa,CAAC,UAAW,OAAO,EAChC,YAAa,YACf,EACMkB,GAAeC,GAAmB,CAACV,EAAO,CAAE,UAAA6f,EAAW,UAAAC,CAAS,KAAQ,CAC5E,KAAM,CACJ,qBAAsBD,EAAYN,GAAcM,EAAW7f,CAAK,EAAI,OACpE,qBAAsB8f,EAAYP,GAAcO,EAAW9f,CAAK,EAAI,MACrE,CACH,EAAE,EACI6e,GAAYpf,GAAQ,CAACyB,EAAQvB,IAAQ,CACzC,MAAMD,EAAQK,GAAS,YAAaR,GAAc2B,CAAM,EAClD,CACJ,WAAAC,EACA,UAAAC,EACA,MAAAlC,EACA,OAAAd,EACA,SAAAiD,EACA,KAAAC,EACA,KAAA2C,EACA,OAAA4F,EACA,aAAAsV,EACA,QAAAnG,EACA,UAAA+G,EACA,UAAAC,EACA,UAAAC,EACA,UAAAC,EACA,SAAAC,EACA,SAAAxN,EACA,gBAAAyN,EACA,SAAAC,EACA,KAAAnS,EACA,WAAAoS,EACA,WAAAC,EACA,SAAAnH,EACA,eAAAoH,EACA,YAAAhH,EACA,yBAAAiH,EACA,KAAAxG,EACA,YAAAyG,EACA,aAAAC,EACA,WAAAC,EACA,YAAAC,EACA,eAAAC,EACA,YAAA1M,EACA,YAAA2M,EACA,YAAAC,EACA,aAAA9G,EACA,aAAA+G,EACA,YAAAjT,EACA,eAAAkT,EACA,IAAAC,EACA,eAAAlC,EACA,SAAArf,GACA,UAAAqZ,EACA,WAAAmI,GACA,WAAAC,EACA,eAAAC,GACA,gBAAAC,EACA,gBAAAC,EACA,gBAAAC,EACA,GAAG3hB,EACJ,EAAGJ,EACEM,GAAQC,KACRyhB,GAASC,EAAAA,QACTC,GAAU,GAAGF,EAAM,SACnBG,GAAgBxB,IAAa,SAAW1N,IAAa,KAAOA,IAAa,MACzEmP,GAAgBzB,IAAa,SAAW1N,IAAa,KAAOA,IAAa,MACzEiG,IAAqB6H,GAA4B,GAAK,EACtDsB,GAAgB,OAAO5C,GAAiB,UAAYA,EAAelF,IAAS,UAC5E+H,GAAU/H,IAAS,WAAaA,IAAS,UACzC,CAACgI,GAAiBC,EAAkB,EAAI5jB,EAAQ,SAAC,IAAI,EACrD6jB,GAAkBF,KAAoB,KACtCG,GAAoBjf,IAAU,CAClC+e,GAAmB,IAAI,EACvBjB,GAAA,MAAAA,EAAe9d,GACnB,EACQ,CAAE,mBAAAkf,GAAoB,eAAAC,EAAgB,EAAGC,GAAqB,CAClE,WAAAphB,EACA,OAAA/C,EACA,MAAAsB,CACJ,CAAG,EACKgC,GAAYC,GAAU,CAC1B,KAAM,YACV,QAAInB,GACA,MAAAd,EACA,UAAA0B,EACA,MAAAlC,EACA,WAAAiC,EACA,OAAA/C,EACA,SAAAiD,EACA,KAAAC,EACJ,aAAIb,EACJ,CAAG,EACK+hB,GAAY3Y,EAAO,IAAKrF,IAAS,CACrC,MAAMjD,GAAQge,GAAc/a,GAAK,MAAOxE,EAAK,EACvCyiB,GAASN,IAAmBF,KAAoBzd,GAAK,KAC3D,OAAuBke,EAAa,cAClCxK,GACA,CACE,GAAGxW,GAAU,MAAM,EACnB,UAAW,CAAE,KAAM1B,GAAM,MAAO,OAAQuB,GAAO,YAAa,EAAG,EAAG,EAAG,GAAGif,CAAgB,EACxF,IAAK,CAAE,KAAMjf,GAAO,YAAakhB,GAAS,EAAI,EAAG,YAAa,EAAG,EAAG,EAAG,GAAGrJ,CAAU,EACpF,IAAK5U,GAAK,KACV,KAAMA,GAAK,KACX,KAAMyb,EACN,QAASzb,GAAK,KACd,KAAM,OACN,YAAAgV,EACA,OAAQ,OACR,kBAAmB,GACnB,aAAAU,EACA,QAAS8H,GAAU,aAAe,OAClC,QAASxd,GAAK,SAAW,OACzB,GAAG,OAAOyU,GAAc,WAAaA,EAAUzU,EAAI,EAAIyU,CACxD,CACP,CACA,CAAG,EACK0J,GAAQ9Y,EAAO,IAAKrF,IAAS,CACjC,MAAMsX,GAAK,GAAG4F,EAAM,IAAIld,GAAK,MAAM,QAAQ,gBAAiB,EAAE,CAAC,GACzDjD,GAAQge,GAAc/a,GAAK,MAAOxE,EAAK,EACvCyiB,GAASN,IAAmBF,KAAoBzd,GAAK,KAC3D,OAAuB5C,EAAI,KAACwd,WAAU,CAAE,SAAU,CAChC/e,MAAI,OAAQ,CAAE,SAA0BA,EAAG,IACzD6e,GACA,CACE,MAAA3d,GACA,aAAcwgB,GACd,GAAAjG,GACA,YAAA1H,CACD,CACT,EAAS,EACa/T,EAAG,IACjB6X,GACA,CACE,GAAGxW,GAAU,MAAM,EACnB,UAAW,GACX,IAAK,GACL,KAAM8C,GAAK,KACX,KAAMyb,EACN,QAASzb,GAAK,KACd,KAAMyV,IAAS,QAAU,QAAQ2H,EAAO,IAAM,QAAQ9F,EAAE,IACxD,YAAAtC,EACA,OAAQjY,GACR,kBAAmB,GACnB,aAAA2Y,EACA,QAAS8H,GAAU,QAAU,OAC7B,YAAaS,GAAS,EAAI,EAC1B,cAAeA,GAAS,GAAM,EAC9B,gBAAiBje,GAAK,gBACtB,QAASA,GAAK,SAAW,OACzB,MAAOid,EAAkCphB,MAAI2e,GAAY,CAAE,eAAAC,CAAc,CAAE,EAAI,OAC/E,GAAG,OAAOhG,GAAc,WAAaA,EAAUzU,EAAI,EAAIyU,CACxD,CACF,CACP,GAASzU,GAAK,IAAI,CAClB,CAAG,EACKoe,GAAsB1B,GAAA,YAAAA,EAAgB,IAAI,CAAC2B,GAAMpf,KAAU,CAC/D,MAAMlC,GAAQge,GAAcsD,GAAK,MAAO7iB,EAAK,EAC7C,OAAuBK,EAAG,IACxByiB,GACA,CACE,OAAQD,GAAK,MAAQthB,GAAQ,0BAC7B,YAAa,EACb,QAASshB,GAAK,SAAW,OACzB,GAAGA,GACH,MAAO,CACL,MAAOA,GAAK,MACZ,KAAMA,GAAK,MAAQthB,GAAQ,eAC3B,SAAU,GACV,SAAUshB,GAAK,eAAiB,kBACjC,EACD,GAAGnhB,GAAU,eAAe,CAC7B,EACD+B,EACN,CACA,GACQwK,GAAgBgM,IAAS,UAAY2F,GAAiBX,EACtD8D,GAAmB,CACvB,SAAU,GACV,GAAG/U,IAAgB,WAAa,CAAE,QAAAgL,EAAS,KAAM,UAAY,EAAG,CAAE,KAAM,QAAU,EAClF,SAAU8I,GAAgB,CAAE,OAAQ,cAAgB,EAAG,GACvD,cAAe,GACf,KAAA5T,EACA,cAAeF,IAAgB,WAAa,OAASC,GACrD,GAAGvM,GAAU,MAAM,CACvB,EACE,OAAuBrB,EAAG,IACxBC,GACA,CACE,IAAAX,EACA,GAAG+B,GAAU,MAAM,EACnB,aAAc0gB,GACd,IAAKjB,GAAO,MACZ,GAAGrhB,GACH,SAA0BO,EAAG,IAAC2iB,GAAqB,CAAE,GAAGthB,GAAU,WAAW,EAAG,SAA0BE,EAAI,KAC5GqhB,GACA,CACE,KAAAhf,EACA,YAAagW,IAAS,UAAY,SAAW,OAC7C,OAAQjM,EACR,OAAQ,CACN,OAAQoT,GAAa,GAAK,OAC1B,KAAMC,EAAa,GAAK,OACxB,MAAOA,EAAa,EAAI,MACzB,EACD,GAAGP,EACH,SAAU,CACR8B,GACAhC,GAA8BvgB,EAAG,IAC/B6iB,GACA,CACE,cAAe,MACf,QAAU5Z,IAA4BjJ,EAAG,IACvCoJ,GACA,CACE,QAASH,GAAQ,QACjB,YAAa4Y,GACb,gBAAgBxB,GAAA,YAAAA,EAAa,gBAAiB,MAC9C,WAAY2B,GACZ,OAAQC,GACR,OAAAzY,CACD,CACF,EACD,GAAG6W,CACJ,CACF,EACergB,EAAG,IACjBoW,GACA,CACE,gBAAA2J,EACA,SAAUC,IAAa,KAAOA,IAAa,KAC3C,WAAYA,IAAa,KAAOA,IAAa,KAC7C,GAAG3e,GAAU,MAAM,EACnB,GAAGwe,CACJ,CACF,EACete,EAAI,KAClB2c,GACA,CACE,KAAM,CAACwB,EACP,GAAG/R,IAAgB,WAAa,CAAE,KAAM,QAAQ,EAAK,CAAE,QAAAgL,CAAS,EAChE,KAAM,CAAE,UAAW,mBAAoB,SAAU,GAAI,KAAM,cAAgB,EAC3E,OAAQ,GACR,SAAU,mBACV,SAAU6I,GAAgB,CAAE,OAAQ,cAAgB,EAAG,GACvD,WAAY,EACZ,cAAe7T,IAAgB,WAAaC,GAAgB,OAC5D,GAAGvM,GAAU,MAAM,EACnB,GAAG6e,EACH,SAAU,CACRa,IAA8B/gB,EAAG,IAACwT,GAAO,CAAE,SAAU,eAAgB,OAAQ,IAAK,SAAU,GAAI,GAAGnS,GAAU,WAAW,EAAG,SAAU0f,GAAY,EACjJb,GAAA,YAAAA,EAAY,QACb,CACF,CACF,EACe3e,EAAI,KAClBgd,GACA,CACE,QAAS,OACT,YAAa,OACb,KAAM,CAAE,UAAW,oBAAqB,SAAU,GAAI,KAAM,cAAgB,EAC5E,KAAM,CAACoB,EACP,GAAG+C,GACH,GAAGzC,EACH,SAAU,CACRe,GAA8BhhB,EAAG,IAC/BwT,GACA,CACE,SAAU,aACV,MAAO,IACP,WAAY,SACZ,SAAU,GACV,OAAQ,GACR,GAAGnS,GAAU,WAAW,EACxB,SAAU2f,CACX,CACF,EACDf,GAAA,YAAAA,EAAY,QACb,CACF,CACF,EACe1e,EAAI,KAClBgd,GACA,CACE,QAAS,QACT,YAAa,QACb,KAAM,CAAE,UAAW,mBAAoB,SAAU,GAAI,KAAM,cAAgB,EAC3E,KAAM,CAAC0C,GACP,GAAGyB,GACH,GAAGvB,EACH,SAAU,CACRD,GAAmClhB,EAAG,IACpCwT,GACA,CACE,SAAU,cACV,MAAO,GACP,WAAY,SACZ,SAAU,GACV,OAAQ,GACR,GAAGnS,GAAU,WAAW,EACxB,SAAU6f,CACX,CACF,EACDjB,GAAA,YAAAA,EAAY,QACb,CACF,CACF,EACDO,GAA+BxgB,EAAG,IAChC8iB,GACA,CACE,kBAAmB1C,EACnB,kBAAA7H,GACA,SAAU5K,IAAgB,WAAa,CAAE,EAAG,CAAE,EAAG,CAAG,EACpD,OAAQ,CACN,OAAQ,0BACR,YAAa,EACb,gBAAAoS,CACD,EACD,QAAS,CAAC,CAAE,MAAAgD,GAAO,QAAA9Z,EAAS,IAAqBjJ,EAAG,IAClDgjB,GACA,CACE,MAAAD,GACA,QAAA9Z,GACA,KAAA4E,EACA,WAAYmU,GACZ,OAAQC,GACR,OAAAzY,EACA,eAAAoV,CACD,CACF,EACD,GAAG0B,CACJ,CACF,EACD1G,IAAS,SAA2B5Z,EAAAA,IAAI,OAAQ,CAAE,SAA0BA,EAAG,IAC7Egf,GACA,CACE,OAAQ0B,EACR,GAAIa,GACJ,OAAQZ,GAAerB,GAAsB,CAAE,KAAA1b,EAAM,OAAA4F,CAAM,CAAE,EAC7D,YAAAuK,CACD,CACf,EAAe,EACHuO,GACAxC,GAAYqC,GACZ5iB,EACD,CACF,CACT,EAAS,CACJ,CACL,CACA,CAAC,EACDif,GAAU,QAAUre,GACpBqe,GAAU,YAAc,4BC7WxB,MAAMyE,GAAkC,IAAM,CAC5C,MAAMtjB,EAAQC,KACR,CACJ,EAAA0M,EACA,KAAM,CAAE,SAAA4W,CAAS,GACfC,GAAe,EACbC,EAAgBC,KAChB,CAACC,EAAOC,CAAQ,EAAIC,GAA0B,gBAAgBN,CAAQ,EAAE,EACxE,CAACO,EAAMC,CAAO,EAAIF,GAA4B,eAAeN,CAAQ,EAAE,EACvE,CAACS,EAAWC,CAAY,EAAI3lB,WAAkB,EAAK,EACnD,CAAC4lB,EAAOC,CAAQ,EAAI7lB,WAAiB,EAAE,EAC7CmK,OAAAA,EAAAA,UAAU,IAAM,CACV,CAACqb,GAAQ,CAACH,IACZM,EAAa,EAAI,EACjBG,GACG,WAAW,CACV,aAAcC,GACd,OAAQd,CAAA,CACT,EACA,KAAiBe,GAAA,aAChBV,GAASvgB,GAAAD,EAAAkhB,GAAA,YAAAA,EAAU,MAAM,KAAhB,YAAAlhB,EAAoB,SAApB,YAAAC,EAA4B,KAAe,EACpD0gB,GAAQQ,GAAA5gB,EAAA2gB,GAAA,YAAAA,EAAU,MAAM,KAAhB,YAAA3gB,EAAoB,SAApB,YAAA4gB,EAA4B,IAAgB,CAAA,CACrD,EACA,MAAaC,GAAA,CACZ,QAAQ,KAAKA,CAAG,EAChBL,EAASK,EAAI,OAAO,CAAA,CACrB,EACA,QAAQ,IAAM,CACbP,EAAa,EAAK,CAAA,CACnB,EACL,EACC,CAACH,EAAMH,EAAOC,EAAUG,EAASpX,EAAG4W,CAAQ,CAAC,EAE9CO,GACEliB,EAAA,KAAC6iB,GAAA,CACC,MAAO,CAAE,IAAK,OAAQ,QAAS,UAAW,EAC1C,MAAOd,GAAS,GAChB,MAAO3jB,EAAM,OAAO,MAAM,CAAC,EAC3B,KAAMK,EAAAA,IAACqkB,GAAe,CAAA,KAAM,EAAI,CAAA,EAE/B,SAAA,CAAAV,SAAcW,GAAQ,EAAA,EACtBT,GAAU7jB,EAAAA,IAAAukB,GAAA,CAAa,QAASnB,EAAc,cAAe,QAASS,EAAO,EAC7E,CAACF,GAAa,CAACE,SAAUW,GAAc,CAAA,SAAUf,EAAM,iBAAgB,GAAC,CAAA,CAAA,CAAA,CAIjF,EClDMgB,GAAgD,CAAC,CAAE,aAAAC,EAAc,YAAAC,EAAa,QAAAC,KAAc,CAC1F,KAAA,CAAE,GAAMzB,KACRxjB,EAAQC,KAERilB,EAAwBze,EAAAA,YAAY,IAAM,CACzCue,GACE,OAAA,KAAKA,EAAa,QAAQ,CAAA,EAChC,CAACA,CAAW,CAAC,EAGd,OAAA3kB,EAAA,IAAC8kB,EAAM,CAAA,MAAO,CAAE,cAAe,MAAO,eAAgBJ,EAAe,SAAW,UAC9E,EAAA,SAAA1kB,EAAA,IAAC+kB,GAAA,CACC,OAAQL,EACR,QAASG,EACT,OAAQ,GACR,YAAc7kB,EAAA,IAAAglB,GAAA,CAAiB,KAAK,OAAO,MAAOrlB,EAAM,OAAO,WAAW,CAAC,CAAG,CAAA,EAC9E,QAAAilB,EACA,SAAU,CAACD,EAEV,SAAA,EAAE,mDAAoD,eAAe,CAAA,CAE1E,CAAA,CAAA,CAEJ,EClBMM,GAAoD,CAAC,CAAE,OAAAC,KAAa,CACxE,MAAMvlB,EAAQC,KACRulB,EAAOhd,EAAAA,QAAQ,IAAM,CACzB,OAAQ+c,EAAQ,CACd,IAAK,UACI,MAAA,qBACT,IAAK,WACI,MAAA,sBACT,IAAK,WACI,MAAA,sBACT,QACS,MAAA,EACX,CAAA,EACC,CAACA,CAAM,CAAC,EACLE,EAAOjd,EAAAA,QAAQ,IAAM,CACzB,OAAQ+c,EAAQ,CACd,IAAK,UACH,aAAQvc,GAAW,CAAA,MAAOhJ,EAAM,OAAO,YAAY,CAAC,CAAG,CAAA,EACzD,IAAK,WACH,aAAQ0lB,GAAU,CAAA,MAAO1lB,EAAM,OAAO,YAAY,CAAC,CAAG,CAAA,EACxD,IAAK,WACH,aAAQ2lB,GAAM,CAAA,MAAO3lB,EAAM,OAAO,YAAY,CAAC,CAAG,CAAA,EACpD,QACS,OAAA,IACX,GACC,CAACulB,EAAQvlB,EAAM,OAAO,WAAW,CAAC,EACrC,OACG4B,EAAA,KAAAujB,EAAA,CAAM,MAAO,CAAE,cAAe,MAAO,IAAK,MAAO,WAAY,SAAU,WAAY,QAAA,EAClF,SAAA,CAAA9kB,EAAAA,IAAC2T,IAAM,SAAKwR,CAAA,CAAA,EACXC,CACH,CAAA,CAAA,CAEJ,EASMG,GAAoD,CAAC,CACzD,QAAAC,EACA,OAAAN,EACA,SAAAO,EACA,aAAAf,CACF,IAAM,CACE,KAAA,CAAE,QAAAgB,GAAYC,KACd,CAAE,EAAArZ,GAAM6W,KACRyC,EAAWC,KACX,CAACC,EAAc,CAAE,KAAMC,EAAY,MAAOC,CAAA,CAAa,EAAIC,KAC3DC,EAAoBvnB,GAAuD,CAC/EA,EAAE,gBAAgB,EACPonB,GAAA,EAGP,CAAE,mBAAAI,GAAuBC,KACzB,CAACC,EAAmB,CAAE,KAAMC,EAAiB,MAAOC,EAAkB,EAC1EN,GAAc,EAAK,EACfO,EAAiBre,EAAA,QACrB,IAAMge,EAAmBX,CAAO,IAAM,GACtC,CAACW,EAAoBX,CAAO,CAAA,EAG9B,OAEKjkB,EAAA,KAAAwd,WAAA,CAAA,SAAA,CAAAmG,IAAW,UACVllB,EAAA,IAAC8kB,EAAA,CACC,MAAO,CAAE,cAAe,MAAO,eAAgBJ,EAAe,SAAW,UAAW,EAEnF,aAAYc,EACXjkB,EAAA,KAACujB,EAAA,CACC,MAAO,CACL,cAAe,MACf,MAAOJ,EAAe,OAAS,OACjC,EAEA,SAAA,CAACnjB,EAAAA,KAAAwjB,GAAA,CAAW,MAAK,GAAC,OAAQ,GAAO,QAASmB,EAAkB,OAAM,GAAC,SAAA,CAAA,UACzD,CAACT,GAAY,YAAA,EACvB,EACAlkB,EAAAA,KAACwjB,GAAW,CAAA,OAAM,GAAC,OAAQ,GAAO,QAAS,IAAMa,EAAS,cAAc,EAAG,SAAA,CAAA,UACjE,CAACH,GAAY,YAAA,EACvB,CAAA,CAAA,CACF,EAECzlB,MAAAilB,GAAA,CAAiB,OAAAC,EAAgB,CAAA,CAAA,EAItC3jB,EAAA,KAACujB,EAAA,CACC,MAAO,CACL,cAAeJ,EAAe,SAAW,MACzC,IAAK,OACL,WAAY,SACZ,MAAO,OACP,eAAgB,UAClB,EAEA,SAAA,CAACnjB,EAAAA,KAAAujB,EAAA,CAAM,MAAO,CAAE,cAAe,MAAO,MAAO,OAAQ,eAAgB,UAAA,EAClE,SAAA,CAAA,CAAC0B,GAAkBd,IAAYF,GAAWN,IAAW,YACpDllB,EAAA,IAAC+kB,GAAA,CACC,OAAQL,EACR,OAAQ,GACR,YAAa1kB,EAAAA,IAACymB,GAAkB,CAAA,KAAM,EAAI,CAAA,EAC1C,QAAS,IAAMb,EAAS,cAAc,EACvC,SAAA,kBAAA,CAED,EAEDY,GACCjlB,EAAA,KAACwjB,GAAA,CACC,OAAQL,EACR,OAAQ,GACR,QAAS4B,EACT,YAAatmB,EAAAA,IAACymB,GAAkB,CAAA,KAAM,EAAI,CAAA,EAEzC,SAAA,CAAAf,IAAYF,EAAU,OAAS,OAAO,cAAA,CAAA,CACzC,CAAA,EAEJ,EACAxlB,MAACilB,IAAiB,OAAAC,EAA2C,CAAA,CAAA,CAC/D,QAEDwB,GAAc,CAAA,OAAQZ,EAAc,QAASE,EAAa,MAAM,oBAC/D,SAAChmB,EAAA,IAAA2mB,GAAA,CAAiB,MAAOX,EAAa,OAAO,SAAS,UAAWR,CAAS,CAAA,EAC5E,EACAxlB,EAAA,IAAC0mB,GAAA,CACC,MAAOpa,EAAE,qDAAsD,kBAAkB,EACjF,QAASia,EACT,OAAQF,EAER,SAACrmB,EAAA,IAAA4mB,GAAA,CAAqB,QAAApB,EAAkB,MAAOe,EAAkB,CAAA,CACnE,CACF,CAAA,CAAA,CAEJ,EC5IMM,GAAuC,CAAC,CAAE,aAAAnC,EAAc,WAAAoC,EAAY,MAAAC,EAAO,SAAAC,KAAe,CACxF,KAAA,CAAE,KAAAC,GAASb,KAEXc,EAAmB9gB,EAAA,YACtB1E,GAA2B,CACtBolB,EAAa,OAAOplB,CAAK,EAAI,OAAOqlB,EAAM,KAAK,EAAI,OAAOE,EAAK,SAAS,EACjED,EAAA,CAAE,MAAO,GAAGtlB,CAAK,GAAI,QAAS,GAAM,MAAO,oCAAA,CAAsC,EAEjFslB,EAAA,CAAE,MAAO,GAAGtlB,CAAK,GAAI,QAAS,GAAM,MAAO,EAAA,CAAI,CAE5D,EACA,CAAColB,EAAYG,CAAI,CAAA,EAIjB,OAAAjnB,EAAA,IAAC8kB,EAAA,CACC,QAAcnmB,GAAAA,EAAE,gBAAgB,EAChC,MAAO,CACL,cAAe,MACf,IAAK,OACL,WAAY,SACZ,MAAO+lB,EAAe,OAAS,EACjC,EAEA,SAAA1kB,EAAA,IAACmnB,GAAA,CACC,MAAOJ,EAAM,MACb,SAAUG,EACV,YAAY,IACZ,OAAQ,CACN,KAAM,CACJ,MAAOxC,EAAe,OAAS,EACjC,EACA,MAAO,CACL,aAAc,YACd,WAAY,OACZ,YAAa,OACb,UAAW,OACX,aAAc,EACd,OAAQ,EACV,CACF,EACA,IAAK,EACL,IAAK,OAAOuC,EAAK,KAAK,EACtB,aACEjnB,EAAA,IAAC2T,GAAA,CACC,MAAO,CAAE,eAAgB,WAAY,EACrC,QAAS,IAAMuT,EAAiB,OAAOD,EAAK,SAAS,CAAC,EACvD,SAAA,KAAA,CAED,EAEF,SAAQ,GACR,MAAOF,EAAM,KAAA,CACf,CAAA,CAAA,CAGN,ECxDMK,GAA4C,CAAC,CAAE,aAAA1C,EAAc,MAAAqC,EAAO,QAAAvB,EAAS,SAAAwB,KAAe,CAChG,MAAMF,EAAa3e,EAAA,QACjB,IAAM,OAAO,OAAO4e,CAAK,EAAE,OAAO,CAACjjB,EAAKujB,IAASvjB,EAAM,OAAOujB,EAAK,KAAK,EAAG,CAAC,EAC5E,CAACN,CAAK,CAAA,EAGN,OAAA/mB,EAAA,IAAC6mB,GAAA,CACC,aAAAnC,EACA,WAAAoC,EACA,MAAOC,EAAMvB,CAAO,GAAK,CAAE,MAAO,GAAI,QAAS,GAAO,MAAO,EAAG,EAChE,SAAAwB,CAAA,CAAA,CAGN,EChBMM,GAAwC,CAAC,CAAE,MAAAlkB,KAAY,CAC3D,MAAMzD,EAAQC,KAEd,OAAIwD,IAAU,QACJoF,GAAkB,CAAA,MAAO7I,EAAM,OAAO,eAAe,CAAC,CAAG,CAAA,EAE/DyD,IAAU,EACLpD,EAAA,IAACyI,GAAkB,CAAA,MAAO8e,EAAa,CAAA,EAE5CnkB,IAAU,EACLpD,EAAA,IAAC0I,GAAkB,CAAA,MAAO8e,EAAa,CAAA,EAEzCjmB,EAAA,KAACkmB,GAAM,CAAA,MAAO,EAAI,SAAA,CAAQrkB,EAAA,EAAE,GAAC,CAAA,CAAA,CACtC,ECVMskB,GAAwC,CAAC,CAAE,SAAAjC,EAAU,MAAAriB,EAAO,MAAAukB,KAAY,CAC5E,MAAMhoB,EAAQC,KACRgoB,EAAUzf,EAAAA,QAAQ,IAAMwf,IAAU,UAAW,CAACA,CAAK,CAAC,EAGxD,OAAA3nB,EAAA,IAAC8kB,EAAA,CACC,UAAW3kB,GAAQ,cACnB,MAAO,CACL,MAAOslB,EAAW,OAAS,OAC3B,WAAY,SACZ,eAAgB,SAChB,YACEmC,GAAWxkB,IAAU,EACjBzD,EAAM,OAAO,eAAe,CAAC,EAC7BioB,GAAWxkB,IAAU,EACnBmkB,GACAK,GAAWxkB,IAAU,EACnBokB,GACA,EACZ,EAEC,SAAAI,QAAWN,GAAW,CAAA,MAAAlkB,CAAA,CAAc,EAAM7B,EAAAA,KAAAkmB,GAAA,CAAM,MAAO,EAAI,SAAA,CAAQrkB,EAAA,EAAE,GAAA,EAAC,CAAA,CAAA,CAG7E,ECtBMykB,GAA0C,CAAC,CAAE,WAAA7Z,EAAY,QAAAwX,EAAS,UAAAsC,KAAgB,CAChF,KAAA,CAAE,QAAApC,GAAYC,KACdhmB,EAAQC,KACR,CAAE,EAAA0M,GAAM6W,KACRsC,EAAWsC,GAAc,eAAepoB,EAAM,YAAY,EAAE,GAAG,EAG/DqoB,EAAkB7f,EAAAA,QAAQ,IACzBud,EAGiB1X,EAAW,UACvBia,EAAK,UAAU,YAAY,IAAMvC,EAAQ,YAAY,CAAA,EAI1C,KAAYwC,GAAAA,EAAI,QAAQ,gBAAkB1C,EAAQ,YAAA,CAAa,EAR/D,GASpB,CAACxX,EAAYwX,EAASE,CAAO,CAAC,EAG/B,OAAAnkB,EAAA,KAACujB,EAAA,CACC,MAAO,CACL,cAAe,MACf,IAAK,MACL,WAAY,SACZ,MAAO,aACT,EAEA,SAAA,CAAC9kB,EAAAA,IAAA2T,GAAA,CAAK,MAAO,CAAE,SAAU,UACtB,SAAArH,EAAE,gDAAiD,eAAe,CACrE,CAAA,EAEE0b,EAQAhoB,EAAA,IAAC2T,GAAK,CAAA,MAAO,CAAE,MAAOhU,EAAM,OAAO,eAAe,CAAC,CAAE,EAAG,SAAG,KAAA,CAAA,EAP3DK,EAAA,IAACmoB,GAAA,CACC,QAAO,GACP,OAAQL,EACR,gBAAe,GACf,MAAOrC,EAAW,OAAS,OAAA,CAG7B,CAA2D,CAAA,CAAA,CAInE,EC9BM2C,GAA0C,CAAC,CAC/C,WAAApa,EACA,QAAAwX,EACA,UAAAsC,EACA,MAAAH,EACA,MAAAvkB,EACA,aAAAshB,EACA,SAAAe,EACA,OAAA4C,CACF,IAAM,CACJ,MAAM1oB,EAAQC,KACR,CAAE,QAAA8lB,GAAYC,KACd2C,EAAangB,EAAAA,QAAQ,IAAMwf,IAAU,aAAc,CAACA,CAAK,CAAC,EAC1DY,EAAWpgB,EAAAA,QAAQ,IAAMwf,IAAU,WAAY,CAACA,CAAK,CAAC,EACtDa,EAASrgB,EAAAA,QAAQ,IAAMwf,IAAU,SAAU,CAACA,CAAK,CAAC,EAClDC,EAAUzf,EAAAA,QAAQ,IAAMwf,IAAU,UAAW,CAACA,CAAK,CAAC,EACpDc,EAAcC,GAAelD,CAAO,EACpCI,EAAWC,KAEjB,OAEI7lB,MAAA+e,EAAAA,SAAA,CAAA,SAAAxd,EAAA,KAACujB,EAAA,CACC,UAAW3kB,GAAQ,OACnB,MAAO,CACL,OAAQ,UACR,MAAO,OACP,eAAgB,gBAChB,cAAeukB,IAAiB8D,GAAUF,GAAcC,GAAY,SAAW,MAC/E,WAAY7D,IAAiB8D,GAAUF,GAAcC,GAAY,aAAe,SAChF,YACEX,GAAWxkB,IAAU,EACjBzD,EAAM,OAAO,eAAe,CAAC,EAC7BioB,GAAWxkB,IAAU,EACnBmkB,GACAK,GAAWxkB,IAAU,EACnBokB,GACA9B,IAAYF,EACV7lB,EAAM,OAAO,UAAU,CAAC,EACxB,GACZ,gBAAiBioB,GAAWxkB,IAAU,EAAI,yBAA2B,EACvE,EACA,QAAS,IAAMwiB,EAAS6C,CAAW,EAEnC,SAAA,CAAAzoB,EAAA,IAACmoB,GAAA,CACC,QAAQ,OACR,OAAQ3C,EACR,gBAAe,GACf,MAAOC,EAAW,QAAU,QAC5B,QAASzlB,EAAA,IAAC6nB,GAAY,CAAA,WAAA7Z,EAAwB,QAAAwX,EAAkB,UAAAsC,EAAsB,CAAA,CACxF,EACC9nB,EAAA,IAAA,MAAA,CAAI,MAAO,CAAE,MAAO,MAAO,EAAG,QAASrB,GAAKA,EAAE,gBAAgB,EAC5D,SAAU0pB,GAAAA,EAAOV,CAAK,EACzB,CAAA,CAAA,CAEJ,CAAA,CAAA,CAEJ,uFCrFE,SAAUzkB,EAAM9D,EAAS,CAGzBupB,UAA2BvpB,EAAQwpB,GAAiB,CAAA,CAUtD,GAAEC,EAAM,SAAUC,EAAU,CAE3B,OAAC,SAAUC,EAAW,CAElB,IAAIC,EAAIF,EACJG,EAAQD,EAAE,IACVE,EAAOD,EAAM,KACbE,EAAeF,EAAM,UAKrBG,EAAQJ,EAAE,IAAM,GAKNI,EAAM,KAAOF,EAAK,OAAO,CAWnC,KAAM,SAAUG,EAAMC,EAAK,CACvB,KAAK,KAAOD,EACZ,KAAK,IAAMC,CACd,CAsKV,CAAM,EAQkBF,EAAM,UAAYF,EAAK,OAAO,CAqB7C,KAAM,SAAUK,EAAOC,EAAU,CAC7BD,EAAQ,KAAK,MAAQA,GAAS,CAAA,EAE1BC,GAAYT,EACZ,KAAK,SAAWS,EAEhB,KAAK,SAAWD,EAAM,OAAS,CAEtC,EAWD,MAAO,UAAY,CAOf,QALIE,EAAW,KAAK,MAChBC,EAAiBD,EAAS,OAG1BE,EAAW,CAAA,EACNxf,EAAI,EAAGA,EAAIuf,EAAgBvf,IAAK,CACrC,IAAIyf,EAAUH,EAAStf,CAAC,EACxBwf,EAAS,KAAKC,EAAQ,IAAI,EAC1BD,EAAS,KAAKC,EAAQ,GAAG,CAC5B,CAED,OAAOT,EAAa,OAAOQ,EAAU,KAAK,QAAQ,CACrD,EAWD,MAAO,UAAY,CAQf,QAPIE,EAAQX,EAAK,MAAM,KAAK,IAAI,EAG5BK,EAAQM,EAAM,MAAQ,KAAK,MAAM,MAAM,CAAC,EAGxCC,EAAcP,EAAM,OACfpf,EAAI,EAAGA,EAAI2f,EAAa3f,IAC7Bof,EAAMpf,CAAC,EAAIof,EAAMpf,CAAC,EAAE,MAAK,EAG7B,OAAO0f,CACV,CACV,CAAM,CACN,IAGQf,CAER,CAAC,wFC/SC,SAAU5lB,EAAM9D,EAAS,CAGzBupB,UAA2BvpB,EAAQwpB,GAAiB,CAAA,CAUtD,GAAEC,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,GAAI,OAAO,aAAe,WAK1B,KAAIE,EAAIF,EACJG,EAAQD,EAAE,IACVe,EAAYd,EAAM,UAGlBe,EAAYD,EAAU,KAGtBE,EAAUF,EAAU,KAAO,SAAUG,EAAY,CAqBjD,GAnBIA,aAAsB,cACtBA,EAAa,IAAI,WAAWA,CAAU,IAKtCA,aAAsB,WACrB,OAAO,kBAAsB,KAAeA,aAAsB,mBACnEA,aAAsB,YACtBA,aAAsB,aACtBA,aAAsB,YACtBA,aAAsB,aACtBA,aAAsB,cACtBA,aAAsB,gBAEtBA,EAAa,IAAI,WAAWA,EAAW,OAAQA,EAAW,WAAYA,EAAW,UAAU,GAI3FA,aAAsB,WAAY,CAMlC,QAJIC,EAAuBD,EAAW,WAGlCX,EAAQ,CAAA,EACHpf,EAAI,EAAGA,EAAIggB,EAAsBhgB,IACtCof,EAAMpf,IAAM,CAAC,GAAK+f,EAAW/f,CAAC,GAAM,GAAMA,EAAI,EAAK,EAIvD6f,EAAU,KAAK,KAAMT,EAAOY,CAAoB,CAC7D,MAEaH,EAAU,MAAM,KAAM,SAAS,CAE5C,EAEKC,EAAQ,UAAYF,EACzB,IAGQjB,EAAS,IAAI,SAErB,CAAC,wFC3EC,SAAU5lB,EAAM9D,EAAS,CAGzBupB,UAA2BvpB,EAAQwpB,GAAiB,CAAA,CAUtD,GAAEC,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIE,EAAIF,EACJG,EAAQD,EAAE,IACVe,EAAYd,EAAM,UAClBmB,EAAQpB,EAAE,IAKAoB,EAAM,MAAQA,EAAM,QAAU,CAcxC,UAAW,SAAUC,EAAW,CAO5B,QALId,EAAQc,EAAU,MAClBb,EAAWa,EAAU,SAGrBC,EAAa,CAAA,EACRngB,EAAI,EAAGA,EAAIqf,EAAUrf,GAAK,EAAG,CAClC,IAAIogB,EAAahB,EAAMpf,IAAM,CAAC,IAAO,GAAMA,EAAI,EAAK,EAAM,MAC1DmgB,EAAW,KAAK,OAAO,aAAaC,CAAS,CAAC,CACjD,CAED,OAAOD,EAAW,KAAK,EAAE,CAC5B,EAeD,MAAO,SAAUE,EAAU,CAMvB,QAJIC,EAAiBD,EAAS,OAG1BjB,EAAQ,CAAA,EACHpf,EAAI,EAAGA,EAAIsgB,EAAgBtgB,IAChCof,EAAMpf,IAAM,CAAC,GAAKqgB,EAAS,WAAWrgB,CAAC,GAAM,GAAMA,EAAI,EAAK,GAGhE,OAAO4f,EAAU,OAAOR,EAAOkB,EAAiB,CAAC,CACpD,CACH,EAKFL,EAAM,QAAU,CAcZ,UAAW,SAAUC,EAAW,CAO5B,QALId,EAAQc,EAAU,MAClBb,EAAWa,EAAU,SAGrBC,EAAa,CAAA,EACRngB,EAAI,EAAGA,EAAIqf,EAAUrf,GAAK,EAAG,CAClC,IAAIogB,EAAYG,EAAYnB,EAAMpf,IAAM,CAAC,IAAO,GAAMA,EAAI,EAAK,EAAM,KAAM,EAC3EmgB,EAAW,KAAK,OAAO,aAAaC,CAAS,CAAC,CACjD,CAED,OAAOD,EAAW,KAAK,EAAE,CAC5B,EAeD,MAAO,SAAUE,EAAU,CAMvB,QAJIC,EAAiBD,EAAS,OAG1BjB,EAAQ,CAAA,EACHpf,EAAI,EAAGA,EAAIsgB,EAAgBtgB,IAChCof,EAAMpf,IAAM,CAAC,GAAKugB,EAAWF,EAAS,WAAWrgB,CAAC,GAAM,GAAMA,EAAI,EAAK,EAAG,EAG9E,OAAO4f,EAAU,OAAOR,EAAOkB,EAAiB,CAAC,CACpD,CACV,EAEK,SAASC,EAAWC,EAAM,CACtB,OAASA,GAAQ,EAAK,WAAgBA,IAAS,EAAK,QACvD,CACN,IAGQ7B,EAAS,IAAI,KAErB,CAAC,wFCpJC,SAAU5lB,EAAM9D,EAAS,CAGzBupB,UAA2BvpB,EAAQwpB,GAAiB,CAAA,CAUtD,GAAEC,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIE,EAAIF,EACJG,EAAQD,EAAE,IACVe,EAAYd,EAAM,UAClBmB,EAAQpB,EAAE,IAKDoB,EAAM,OAAS,CAcxB,UAAW,SAAUC,EAAW,CAE5B,IAAId,EAAQc,EAAU,MAClBb,EAAWa,EAAU,SACrBO,EAAM,KAAK,KAGfP,EAAU,MAAK,EAIf,QADIQ,EAAc,CAAA,EACT1gB,EAAI,EAAGA,EAAIqf,EAAUrf,GAAK,EAO/B,QANI2gB,EAASvB,EAAMpf,IAAM,CAAC,IAAa,GAAMA,EAAI,EAAK,EAAY,IAC9D4gB,EAASxB,EAAOpf,EAAI,IAAO,CAAC,IAAO,IAAOA,EAAI,GAAK,EAAK,EAAM,IAC9D6gB,EAASzB,EAAOpf,EAAI,IAAO,CAAC,IAAO,IAAOA,EAAI,GAAK,EAAK,EAAM,IAE9D8gB,EAAWH,GAAS,GAAOC,GAAS,EAAKC,EAEpCE,EAAI,EAAIA,EAAI,GAAO/gB,EAAI+gB,EAAI,IAAO1B,EAAW0B,IAClDL,EAAY,KAAKD,EAAI,OAAQK,IAAa,GAAK,EAAIC,GAAO,EAAI,CAAC,EAKvE,IAAIC,EAAcP,EAAI,OAAO,EAAE,EAC/B,GAAIO,EACA,KAAON,EAAY,OAAS,GACxBA,EAAY,KAAKM,CAAW,EAIpC,OAAON,EAAY,KAAK,EAAE,CAC7B,EAeD,MAAO,SAAUO,EAAW,CAExB,IAAIC,EAAkBD,EAAU,OAC5BR,EAAM,KAAK,KACXU,EAAa,KAAK,YAEtB,GAAI,CAACA,EAAY,CACTA,EAAa,KAAK,YAAc,GAChC,QAASJ,EAAI,EAAGA,EAAIN,EAAI,OAAQM,IAC5BI,EAAWV,EAAI,WAAWM,CAAC,CAAC,EAAIA,CAE3C,CAGD,IAAIC,EAAcP,EAAI,OAAO,EAAE,EAC/B,GAAIO,EAAa,CACb,IAAII,EAAeH,EAAU,QAAQD,CAAW,EAC5CI,IAAiB,KACjBF,EAAkBE,EAEzB,CAGD,OAAOC,EAAUJ,EAAWC,EAAiBC,CAAU,CAE1D,EAED,KAAM,mEACR,EAEF,SAASE,EAAUJ,EAAWC,EAAiBC,EAAY,CAGzD,QAFI/B,EAAQ,CAAA,EACRkC,EAAS,EACJthB,EAAI,EAAGA,EAAIkhB,EAAiBlhB,IACjC,GAAIA,EAAI,EAAG,CACP,IAAIuhB,EAAQJ,EAAWF,EAAU,WAAWjhB,EAAI,CAAC,CAAC,GAAOA,EAAI,EAAK,EAC9DwhB,EAAQL,EAAWF,EAAU,WAAWjhB,CAAC,CAAC,IAAO,EAAKA,EAAI,EAAK,EAC/DyhB,EAAeF,EAAQC,EAC3BpC,EAAMkC,IAAW,CAAC,GAAKG,GAAiB,GAAMH,EAAS,EAAK,EAC5DA,GACH,CAEL,OAAO1B,EAAU,OAAOR,EAAOkC,CAAM,CACtC,CACN,IAGQ3C,EAAS,IAAI,MAErB,CAAC,wFCvIC,SAAU5lB,EAAM9D,EAAS,CAGzBupB,UAA2BvpB,EAAQwpB,GAAiB,CAAA,CAUtD,GAAEC,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIE,EAAIF,EACJG,EAAQD,EAAE,IACVe,EAAYd,EAAM,UAClBmB,EAAQpB,EAAE,IAKEoB,EAAM,UAAY,CAgB9B,UAAW,SAAUC,EAAWwB,EAAS,CACjCA,IAAY,SACZA,EAAU,IAGd,IAAItC,EAAQc,EAAU,MAClBb,EAAWa,EAAU,SACrBO,EAAMiB,EAAU,KAAK,UAAY,KAAK,KAG1CxB,EAAU,MAAK,EAIf,QADIQ,EAAc,CAAA,EACT1gB,EAAI,EAAGA,EAAIqf,EAAUrf,GAAK,EAO/B,QANI2gB,EAASvB,EAAMpf,IAAM,CAAC,IAAa,GAAMA,EAAI,EAAK,EAAY,IAC9D4gB,EAASxB,EAAOpf,EAAI,IAAO,CAAC,IAAO,IAAOA,EAAI,GAAK,EAAK,EAAM,IAC9D6gB,EAASzB,EAAOpf,EAAI,IAAO,CAAC,IAAO,IAAOA,EAAI,GAAK,EAAK,EAAM,IAE9D8gB,EAAWH,GAAS,GAAOC,GAAS,EAAKC,EAEpCE,EAAI,EAAIA,EAAI,GAAO/gB,EAAI+gB,EAAI,IAAO1B,EAAW0B,IAClDL,EAAY,KAAKD,EAAI,OAAQK,IAAa,GAAK,EAAIC,GAAO,EAAI,CAAC,EAKvE,IAAIC,EAAcP,EAAI,OAAO,EAAE,EAC/B,GAAIO,EACA,KAAON,EAAY,OAAS,GACxBA,EAAY,KAAKM,CAAW,EAIpC,OAAON,EAAY,KAAK,EAAE,CAC7B,EAiBD,MAAO,SAAUO,EAAWS,EAAS,CAC7BA,IAAY,SACZA,EAAU,IAId,IAAIR,EAAkBD,EAAU,OAC5BR,EAAMiB,EAAU,KAAK,UAAY,KAAK,KACtCP,EAAa,KAAK,YAEtB,GAAI,CAACA,EAAY,CACbA,EAAa,KAAK,YAAc,GAChC,QAASJ,EAAI,EAAGA,EAAIN,EAAI,OAAQM,IAC5BI,EAAWV,EAAI,WAAWM,CAAC,CAAC,EAAIA,CAEvC,CAGD,IAAIC,EAAcP,EAAI,OAAO,EAAE,EAC/B,GAAIO,EAAa,CACb,IAAII,EAAeH,EAAU,QAAQD,CAAW,EAC5CI,IAAiB,KACjBF,EAAkBE,EAEzB,CAGD,OAAOC,EAAUJ,EAAWC,EAAiBC,CAAU,CAE1D,EAED,KAAM,oEACN,UAAW,kEACb,EAEF,SAASE,EAAUJ,EAAWC,EAAiBC,EAAY,CAGvD,QAFI/B,EAAQ,CAAA,EACRkC,EAAS,EACJthB,EAAI,EAAGA,EAAIkhB,EAAiBlhB,IACjC,GAAIA,EAAI,EAAG,CACP,IAAIuhB,EAAQJ,EAAWF,EAAU,WAAWjhB,EAAI,CAAC,CAAC,GAAOA,EAAI,EAAK,EAC9DwhB,EAAQL,EAAWF,EAAU,WAAWjhB,CAAC,CAAC,IAAO,EAAKA,EAAI,EAAK,EAC/DyhB,EAAeF,EAAQC,EAC3BpC,EAAMkC,IAAW,CAAC,GAAKG,GAAiB,GAAMH,EAAS,EAAK,EAC5DA,GACH,CAEL,OAAO1B,EAAU,OAAOR,EAAOkC,CAAM,CACxC,CACN,IAGQ3C,EAAS,IAAI,SAErB,CAAC,wFCnJC,SAAU5lB,EAAM9D,EAAS,CAGzBupB,UAA2BvpB,EAAQwpB,GAAiB,CAAA,CAUtD,GAAEC,EAAM,SAAUC,EAAU,CAE3B,OAAC,SAAUgD,EAAM,CAEb,IAAI9C,EAAIF,EACJG,EAAQD,EAAE,IACVe,EAAYd,EAAM,UAClB8C,EAAS9C,EAAM,OACf+C,EAAShD,EAAE,KAGXiD,EAAI,CAAA,GAGP,UAAY,CACT,QAAS9hB,EAAI,EAAGA,EAAI,GAAIA,IACpB8hB,EAAE9hB,CAAC,EAAK2hB,EAAK,IAAIA,EAAK,IAAI3hB,EAAI,CAAC,CAAC,EAAI,WAAe,CAEhE,KAKK,IAAI+hB,EAAMF,EAAO,IAAMD,EAAO,OAAO,CACjC,SAAU,UAAY,CAClB,KAAK,MAAQ,IAAIhC,EAAU,KAAK,CAC5B,WAAY,WACZ,WAAY,SAC7B,CAAc,CACJ,EAED,gBAAiB,SAAUoC,EAAGpW,EAAQ,CAElC,QAAS5L,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAEzB,IAAIiiB,EAAWrW,EAAS5L,EACpBkiB,EAAaF,EAAEC,CAAQ,EAE3BD,EAAEC,CAAQ,GACHC,GAAc,EAAOA,IAAe,IAAO,UAC3CA,GAAc,GAAOA,IAAe,GAAO,UAErD,CAGD,IAAIC,EAAI,KAAK,MAAM,MAEfC,EAAcJ,EAAEpW,EAAS,CAAC,EAC1ByW,EAAcL,EAAEpW,EAAS,CAAC,EAC1B0W,EAAcN,EAAEpW,EAAS,CAAC,EAC1B2W,EAAcP,EAAEpW,EAAS,CAAC,EAC1B4W,EAAcR,EAAEpW,EAAS,CAAC,EAC1B6W,EAAcT,EAAEpW,EAAS,CAAC,EAC1B8W,EAAcV,EAAEpW,EAAS,CAAC,EAC1B+W,EAAcX,EAAEpW,EAAS,CAAC,EAC1BgX,EAAcZ,EAAEpW,EAAS,CAAC,EAC1BiX,EAAcb,EAAEpW,EAAS,CAAC,EAC1BkX,EAAcd,EAAEpW,EAAS,EAAE,EAC3BmX,EAAcf,EAAEpW,EAAS,EAAE,EAC3BoX,EAAchB,EAAEpW,EAAS,EAAE,EAC3BqX,EAAcjB,EAAEpW,EAAS,EAAE,EAC3BsX,EAAclB,EAAEpW,EAAS,EAAE,EAC3BuX,EAAcnB,EAAEpW,EAAS,EAAE,EAG3Bb,EAAIoX,EAAE,CAAC,EACPnX,EAAImX,EAAE,CAAC,EACPiB,EAAIjB,EAAE,CAAC,EACPkB,EAAIlB,EAAE,CAAC,EAGXpX,EAAIuY,EAAGvY,EAAGC,EAAGoY,EAAGC,EAAGjB,EAAa,EAAIN,EAAE,CAAC,CAAC,EACxCuB,EAAIC,EAAGD,EAAGtY,EAAGC,EAAGoY,EAAGf,EAAa,GAAIP,EAAE,CAAC,CAAC,EACxCsB,EAAIE,EAAGF,EAAGC,EAAGtY,EAAGC,EAAGsX,EAAa,GAAIR,EAAE,CAAC,CAAC,EACxC9W,EAAIsY,EAAGtY,EAAGoY,EAAGC,EAAGtY,EAAGwX,EAAa,GAAIT,EAAE,CAAC,CAAC,EACxC/W,EAAIuY,EAAGvY,EAAGC,EAAGoY,EAAGC,EAAGb,EAAa,EAAIV,EAAE,CAAC,CAAC,EACxCuB,EAAIC,EAAGD,EAAGtY,EAAGC,EAAGoY,EAAGX,EAAa,GAAIX,EAAE,CAAC,CAAC,EACxCsB,EAAIE,EAAGF,EAAGC,EAAGtY,EAAGC,EAAG0X,EAAa,GAAIZ,EAAE,CAAC,CAAC,EACxC9W,EAAIsY,EAAGtY,EAAGoY,EAAGC,EAAGtY,EAAG4X,EAAa,GAAIb,EAAE,CAAC,CAAC,EACxC/W,EAAIuY,EAAGvY,EAAGC,EAAGoY,EAAGC,EAAGT,EAAa,EAAId,EAAE,CAAC,CAAC,EACxCuB,EAAIC,EAAGD,EAAGtY,EAAGC,EAAGoY,EAAGP,EAAa,GAAIf,EAAE,CAAC,CAAC,EACxCsB,EAAIE,EAAGF,EAAGC,EAAGtY,EAAGC,EAAG8X,EAAa,GAAIhB,EAAE,EAAE,CAAC,EACzC9W,EAAIsY,EAAGtY,EAAGoY,EAAGC,EAAGtY,EAAGgY,EAAa,GAAIjB,EAAE,EAAE,CAAC,EACzC/W,EAAIuY,EAAGvY,EAAGC,EAAGoY,EAAGC,EAAGL,EAAa,EAAIlB,EAAE,EAAE,CAAC,EACzCuB,EAAIC,EAAGD,EAAGtY,EAAGC,EAAGoY,EAAGH,EAAa,GAAInB,EAAE,EAAE,CAAC,EACzCsB,EAAIE,EAAGF,EAAGC,EAAGtY,EAAGC,EAAGkY,EAAa,GAAIpB,EAAE,EAAE,CAAC,EACzC9W,EAAIsY,EAAGtY,EAAGoY,EAAGC,EAAGtY,EAAGoY,EAAa,GAAIrB,EAAE,EAAE,CAAC,EAEzC/W,EAAIwY,EAAGxY,EAAGC,EAAGoY,EAAGC,EAAGhB,EAAa,EAAIP,EAAE,EAAE,CAAC,EACzCuB,EAAIE,EAAGF,EAAGtY,EAAGC,EAAGoY,EAAGV,EAAa,EAAIZ,EAAE,EAAE,CAAC,EACzCsB,EAAIG,EAAGH,EAAGC,EAAGtY,EAAGC,EAAG+X,EAAa,GAAIjB,EAAE,EAAE,CAAC,EACzC9W,EAAIuY,EAAGvY,EAAGoY,EAAGC,EAAGtY,EAAGqX,EAAa,GAAIN,EAAE,EAAE,CAAC,EACzC/W,EAAIwY,EAAGxY,EAAGC,EAAGoY,EAAGC,EAAGZ,EAAa,EAAIX,EAAE,EAAE,CAAC,EACzCuB,EAAIE,EAAGF,EAAGtY,EAAGC,EAAGoY,EAAGN,EAAa,EAAIhB,EAAE,EAAE,CAAC,EACzCsB,EAAIG,EAAGH,EAAGC,EAAGtY,EAAGC,EAAGmY,EAAa,GAAIrB,EAAE,EAAE,CAAC,EACzC9W,EAAIuY,EAAGvY,EAAGoY,EAAGC,EAAGtY,EAAGyX,EAAa,GAAIV,EAAE,EAAE,CAAC,EACzC/W,EAAIwY,EAAGxY,EAAGC,EAAGoY,EAAGC,EAAGR,EAAa,EAAIf,EAAE,EAAE,CAAC,EACzCuB,EAAIE,EAAGF,EAAGtY,EAAGC,EAAGoY,EAAGF,EAAa,EAAIpB,EAAE,EAAE,CAAC,EACzCsB,EAAIG,EAAGH,EAAGC,EAAGtY,EAAGC,EAAGuX,EAAa,GAAIT,EAAE,EAAE,CAAC,EACzC9W,EAAIuY,EAAGvY,EAAGoY,EAAGC,EAAGtY,EAAG6X,EAAa,GAAId,EAAE,EAAE,CAAC,EACzC/W,EAAIwY,EAAGxY,EAAGC,EAAGoY,EAAGC,EAAGJ,EAAa,EAAInB,EAAE,EAAE,CAAC,EACzCuB,EAAIE,EAAGF,EAAGtY,EAAGC,EAAGoY,EAAGd,EAAa,EAAIR,EAAE,EAAE,CAAC,EACzCsB,EAAIG,EAAGH,EAAGC,EAAGtY,EAAGC,EAAG2X,EAAa,GAAIb,EAAE,EAAE,CAAC,EACzC9W,EAAIuY,EAAGvY,EAAGoY,EAAGC,EAAGtY,EAAGiY,EAAa,GAAIlB,EAAE,EAAE,CAAC,EAEzC/W,EAAIyY,EAAGzY,EAAGC,EAAGoY,EAAGC,EAAGZ,EAAa,EAAIX,EAAE,EAAE,CAAC,EACzCuB,EAAIG,EAAGH,EAAGtY,EAAGC,EAAGoY,EAAGR,EAAa,GAAId,EAAE,EAAE,CAAC,EACzCsB,EAAII,EAAGJ,EAAGC,EAAGtY,EAAGC,EAAG+X,EAAa,GAAIjB,EAAE,EAAE,CAAC,EACzC9W,EAAIwY,EAAGxY,EAAGoY,EAAGC,EAAGtY,EAAGmY,EAAa,GAAIpB,EAAE,EAAE,CAAC,EACzC/W,EAAIyY,EAAGzY,EAAGC,EAAGoY,EAAGC,EAAGhB,EAAa,EAAIP,EAAE,EAAE,CAAC,EACzCuB,EAAIG,EAAGH,EAAGtY,EAAGC,EAAGoY,EAAGZ,EAAa,GAAIV,EAAE,EAAE,CAAC,EACzCsB,EAAII,EAAGJ,EAAGC,EAAGtY,EAAGC,EAAG2X,EAAa,GAAIb,EAAE,EAAE,CAAC,EACzC9W,EAAIwY,EAAGxY,EAAGoY,EAAGC,EAAGtY,EAAG+X,EAAa,GAAIhB,EAAE,EAAE,CAAC,EACzC/W,EAAIyY,EAAGzY,EAAGC,EAAGoY,EAAGC,EAAGJ,EAAa,EAAInB,EAAE,EAAE,CAAC,EACzCuB,EAAIG,EAAGH,EAAGtY,EAAGC,EAAGoY,EAAGhB,EAAa,GAAIN,EAAE,EAAE,CAAC,EACzCsB,EAAII,EAAGJ,EAAGC,EAAGtY,EAAGC,EAAGuX,EAAa,GAAIT,EAAE,EAAE,CAAC,EACzC9W,EAAIwY,EAAGxY,EAAGoY,EAAGC,EAAGtY,EAAG2X,EAAa,GAAIZ,EAAE,EAAE,CAAC,EACzC/W,EAAIyY,EAAGzY,EAAGC,EAAGoY,EAAGC,EAAGR,EAAa,EAAIf,EAAE,EAAE,CAAC,EACzCuB,EAAIG,EAAGH,EAAGtY,EAAGC,EAAGoY,EAAGJ,EAAa,GAAIlB,EAAE,EAAE,CAAC,EACzCsB,EAAII,EAAGJ,EAAGC,EAAGtY,EAAGC,EAAGmY,EAAa,GAAIrB,EAAE,EAAE,CAAC,EACzC9W,EAAIwY,EAAGxY,EAAGoY,EAAGC,EAAGtY,EAAGuX,EAAa,GAAIR,EAAE,EAAE,CAAC,EAEzC/W,EAAI0Y,EAAG1Y,EAAGC,EAAGoY,EAAGC,EAAGjB,EAAa,EAAIN,EAAE,EAAE,CAAC,EACzCuB,EAAII,EAAGJ,EAAGtY,EAAGC,EAAGoY,EAAGT,EAAa,GAAIb,EAAE,EAAE,CAAC,EACzCsB,EAAIK,EAAGL,EAAGC,EAAGtY,EAAGC,EAAGkY,EAAa,GAAIpB,EAAE,EAAE,CAAC,EACzC9W,EAAIyY,EAAGzY,EAAGoY,EAAGC,EAAGtY,EAAG0X,EAAa,GAAIX,EAAE,EAAE,CAAC,EACzC/W,EAAI0Y,EAAG1Y,EAAGC,EAAGoY,EAAGC,EAAGL,EAAa,EAAIlB,EAAE,EAAE,CAAC,EACzCuB,EAAII,EAAGJ,EAAGtY,EAAGC,EAAGoY,EAAGb,EAAa,GAAIT,EAAE,EAAE,CAAC,EACzCsB,EAAIK,EAAGL,EAAGC,EAAGtY,EAAGC,EAAG8X,EAAa,GAAIhB,EAAE,EAAE,CAAC,EACzC9W,EAAIyY,EAAGzY,EAAGoY,EAAGC,EAAGtY,EAAGsX,EAAa,GAAIP,EAAE,EAAE,CAAC,EACzC/W,EAAI0Y,EAAG1Y,EAAGC,EAAGoY,EAAGC,EAAGT,EAAa,EAAId,EAAE,EAAE,CAAC,EACzCuB,EAAII,EAAGJ,EAAGtY,EAAGC,EAAGoY,EAAGD,EAAa,GAAIrB,EAAE,EAAE,CAAC,EACzCsB,EAAIK,EAAGL,EAAGC,EAAGtY,EAAGC,EAAG0X,EAAa,GAAIZ,EAAE,EAAE,CAAC,EACzC9W,EAAIyY,EAAGzY,EAAGoY,EAAGC,EAAGtY,EAAGkY,EAAa,GAAInB,EAAE,EAAE,CAAC,EACzC/W,EAAI0Y,EAAG1Y,EAAGC,EAAGoY,EAAGC,EAAGb,EAAa,EAAIV,EAAE,EAAE,CAAC,EACzCuB,EAAII,EAAGJ,EAAGtY,EAAGC,EAAGoY,EAAGL,EAAa,GAAIjB,EAAE,EAAE,CAAC,EACzCsB,EAAIK,EAAGL,EAAGC,EAAGtY,EAAGC,EAAGsX,EAAa,GAAIR,EAAE,EAAE,CAAC,EACzC9W,EAAIyY,EAAGzY,EAAGoY,EAAGC,EAAGtY,EAAG8X,EAAa,GAAIf,EAAE,EAAE,CAAC,EAGzCK,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAIpX,EAAK,EACpBoX,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAInX,EAAK,EACpBmX,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAIiB,EAAK,EACpBjB,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAIkB,EAAK,CACvB,EAED,YAAa,UAAY,CAErB,IAAI5pB,EAAO,KAAK,MACZiqB,EAAYjqB,EAAK,MAEjBkqB,EAAa,KAAK,YAAc,EAChCC,EAAYnqB,EAAK,SAAW,EAGhCiqB,EAAUE,IAAc,CAAC,GAAK,KAAS,GAAKA,EAAY,GAExD,IAAIC,EAAclC,EAAK,MAAMgC,EAAa,UAAW,EACjDG,EAAcH,EAClBD,GAAaE,EAAY,KAAQ,GAAM,GAAK,EAAE,GACvCC,GAAe,EAAOA,IAAgB,IAAO,UAC7CA,GAAe,GAAOA,IAAgB,GAAO,WAEpDH,GAAaE,EAAY,KAAQ,GAAM,GAAK,EAAE,GACvCE,GAAe,EAAOA,IAAgB,IAAO,UAC7CA,GAAe,GAAOA,IAAgB,GAAO,WAGpDrqB,EAAK,UAAYiqB,EAAU,OAAS,GAAK,EAGzC,KAAK,SAAQ,EAOb,QAJIK,EAAO,KAAK,MACZ5B,EAAI4B,EAAK,MAGJ/jB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAExB,IAAIgkB,EAAM7B,EAAEniB,CAAC,EAEbmiB,EAAEniB,CAAC,GAAOgkB,GAAO,EAAOA,IAAQ,IAAO,UAC7BA,GAAO,GAAOA,IAAQ,GAAO,UAC1C,CAGD,OAAOD,CACV,EAED,MAAO,UAAY,CACf,IAAIrE,EAAQkC,EAAO,MAAM,KAAK,IAAI,EAClC,OAAAlC,EAAM,MAAQ,KAAK,MAAM,MAAK,EAEvBA,CACV,CACV,CAAM,EAED,SAAS4D,EAAGvY,EAAGC,EAAGoY,EAAGC,EAAG1iB,EAAGsjB,EAAG9hB,EAAG,CAC7B,IAAIrC,EAAIiL,GAAMC,EAAIoY,EAAM,CAACpY,EAAIqY,GAAM1iB,EAAIwB,EACvC,OAASrC,GAAKmkB,EAAMnkB,IAAO,GAAKmkB,GAAOjZ,CAC1C,CAED,SAASuY,EAAGxY,EAAGC,EAAGoY,EAAGC,EAAG1iB,EAAGsjB,EAAG9hB,EAAG,CAC7B,IAAIrC,EAAIiL,GAAMC,EAAIqY,EAAMD,EAAI,CAACC,GAAM1iB,EAAIwB,EACvC,OAASrC,GAAKmkB,EAAMnkB,IAAO,GAAKmkB,GAAOjZ,CAC1C,CAED,SAASwY,EAAGzY,EAAGC,EAAGoY,EAAGC,EAAG1iB,EAAGsjB,EAAG9hB,EAAG,CAC7B,IAAIrC,EAAIiL,GAAKC,EAAIoY,EAAIC,GAAK1iB,EAAIwB,EAC9B,OAASrC,GAAKmkB,EAAMnkB,IAAO,GAAKmkB,GAAOjZ,CAC1C,CAED,SAASyY,EAAG1Y,EAAGC,EAAGoY,EAAGC,EAAG1iB,EAAGsjB,EAAG9hB,EAAG,CAC7B,IAAIrC,EAAIiL,GAAKqY,GAAKpY,EAAI,CAACqY,IAAM1iB,EAAIwB,EACjC,OAASrC,GAAKmkB,EAAMnkB,IAAO,GAAKmkB,GAAOjZ,CAC1C,CAgBD6T,EAAE,IAAM+C,EAAO,cAAcG,CAAG,EAgBhClD,EAAE,QAAU+C,EAAO,kBAAkBG,CAAG,CAC3C,EAAC,IAAI,EAGCpD,EAAS,GAEjB,CAAC,wFC3QC,SAAU5lB,EAAM9D,EAAS,CAGzBupB,UAA2BvpB,EAAQwpB,GAAiB,CAAA,CAUtD,GAAEC,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIE,EAAIF,EACJG,EAAQD,EAAE,IACVe,EAAYd,EAAM,UAClB8C,EAAS9C,EAAM,OACf+C,EAAShD,EAAE,KAGXqF,EAAI,CAAA,EAKJC,EAAOtC,EAAO,KAAOD,EAAO,OAAO,CACnC,SAAU,UAAY,CAClB,KAAK,MAAQ,IAAIhC,EAAU,KAAK,CAC5B,WAAY,WACZ,WAAY,UACZ,UACjB,CAAc,CACJ,EAED,gBAAiB,SAAUoC,EAAGpW,EAAQ,CAYlC,QAVIuW,EAAI,KAAK,MAAM,MAGfpX,EAAIoX,EAAE,CAAC,EACPnX,EAAImX,EAAE,CAAC,EACPiB,EAAIjB,EAAE,CAAC,EACP,EAAIA,EAAE,CAAC,EACP3tB,EAAI2tB,EAAE,CAAC,EAGFniB,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,GAAIA,EAAI,GACJkkB,EAAElkB,CAAC,EAAIgiB,EAAEpW,EAAS5L,CAAC,EAAI,MACpB,CACH,IAAIF,EAAIokB,EAAElkB,EAAI,CAAC,EAAIkkB,EAAElkB,EAAI,CAAC,EAAIkkB,EAAElkB,EAAI,EAAE,EAAIkkB,EAAElkB,EAAI,EAAE,EAClDkkB,EAAElkB,CAAC,EAAKF,GAAK,EAAMA,IAAM,EAC5B,CAED,IAAIqC,GAAM4I,GAAK,EAAMA,IAAM,IAAOvW,EAAI0vB,EAAElkB,CAAC,EACrCA,EAAI,GACJmC,IAAO6I,EAAIoY,EAAM,CAACpY,EAAI,GAAM,WACrBhL,EAAI,GACXmC,IAAM6I,EAAIoY,EAAI,GAAK,WACZpjB,EAAI,GACXmC,IAAO6I,EAAIoY,EAAMpY,EAAI,EAAMoY,EAAI,GAAM,WAErCjhB,IAAM6I,EAAIoY,EAAI,GAAK,UAGvB5uB,EAAI,EACJ,EAAI4uB,EACJA,EAAKpY,GAAK,GAAOA,IAAM,EACvBA,EAAID,EACJA,EAAI5I,CACP,CAGDggB,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAIpX,EAAK,EACpBoX,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAInX,EAAK,EACpBmX,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAIiB,EAAK,EACpBjB,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI,EAAK,EACpBA,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI3tB,EAAK,CACvB,EAED,YAAa,UAAY,CAErB,IAAIiF,EAAO,KAAK,MACZiqB,EAAYjqB,EAAK,MAEjBkqB,EAAa,KAAK,YAAc,EAChCC,EAAYnqB,EAAK,SAAW,EAGhC,OAAAiqB,EAAUE,IAAc,CAAC,GAAK,KAAS,GAAKA,EAAY,GACxDF,GAAaE,EAAY,KAAQ,GAAM,GAAK,EAAE,EAAI,KAAK,MAAMD,EAAa,UAAW,EACrFD,GAAaE,EAAY,KAAQ,GAAM,GAAK,EAAE,EAAID,EAClDlqB,EAAK,SAAWiqB,EAAU,OAAS,EAGnC,KAAK,SAAQ,EAGN,KAAK,KACf,EAED,MAAO,UAAY,CACf,IAAIhE,EAAQkC,EAAO,MAAM,KAAK,IAAI,EAClC,OAAAlC,EAAM,MAAQ,KAAK,MAAM,MAAK,EAEvBA,CACV,CACV,CAAM,EAgBDb,EAAE,KAAO+C,EAAO,cAAcuC,CAAI,EAgBlCtF,EAAE,SAAW+C,EAAO,kBAAkBuC,CAAI,CAC/C,IAGQxF,EAAS,IAEjB,CAAC,wFCrJC,SAAU5lB,EAAM9D,EAASmvB,EAAO,CAGhC5F,EAAA,QAA2BvpB,EAAQwpB,GAAiB,EAAE4F,EAAmB,CAU3E,GAAE3F,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIE,EAAIF,EACJG,EAAQD,EAAE,IACVe,EAAYd,EAAM,UAClB+C,EAAShD,EAAE,KACXyF,EAASzC,EAAO,OAKhB0C,EAAS1C,EAAO,OAASyC,EAAO,OAAO,CACvC,SAAU,UAAY,CAClB,KAAK,MAAQ,IAAI1E,EAAU,KAAK,CAC5B,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACrD,CAAc,CACJ,EAED,YAAa,UAAY,CACrB,IAAImE,EAAOO,EAAO,YAAY,KAAK,IAAI,EAEvC,OAAAP,EAAK,UAAY,EAEVA,CACV,CACV,CAAM,EAgBDlF,EAAE,OAASyF,EAAO,cAAcC,CAAM,EAgBtC1F,EAAE,WAAayF,EAAO,kBAAkBC,CAAM,CACnD,IAGQ5F,EAAS,MAEjB,CAAC,wFC/EC,SAAU5lB,EAAM9D,EAASmvB,EAAO,CAGhC5F,EAAA,QAA2BvpB,EAAQwpB,GAAiB,EAAE4F,GAAqB,CAAA,CAU7E,GAAE3F,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIE,EAAIF,EACJG,EAAQD,EAAE,IACV+C,EAAS9C,EAAM,OACfG,EAAQJ,EAAE,IACV2F,EAAUvF,EAAM,KAChBwF,EAAexF,EAAM,UACrB4C,EAAShD,EAAE,KAEf,SAAS6F,GAAiB,CACtB,OAAOF,EAAQ,OAAO,MAAMA,EAAS,SAAS,CACjD,CAGD,IAAIG,EAAI,CACJD,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,SAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,UAAY,UAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,SAAU,EAC7EA,EAAe,WAAY,SAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,SAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,UAAY,UAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,SAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,UAAY,SAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,UAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,SAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,SAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,UAAY,SAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,UAAY,UAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,UAAY,UAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,SAAU,EAC7EA,EAAe,WAAY,SAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,SAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,UAAY,UAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,UAAY,SAAU,EAC7EA,EAAe,UAAY,SAAU,EAAGA,EAAe,UAAY,UAAU,EAC7EA,EAAe,WAAY,SAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,SAAU,EAAGA,EAAe,WAAY,UAAU,CACtF,EAGSR,EAAI,CAAA,GACP,UAAY,CACT,QAASlkB,EAAI,EAAGA,EAAI,GAAIA,IACpBkkB,EAAElkB,CAAC,EAAI0kB,GAEpB,KAKK,IAAIE,EAAS/C,EAAO,OAASD,EAAO,OAAO,CACvC,SAAU,UAAY,CAClB,KAAK,MAAQ,IAAI6C,EAAa,KAAK,CAC/B,IAAID,EAAQ,KAAK,WAAY,UAAU,EAAG,IAAIA,EAAQ,KAAK,WAAY,UAAU,EACjF,IAAIA,EAAQ,KAAK,WAAY,UAAU,EAAG,IAAIA,EAAQ,KAAK,WAAY,UAAU,EACjF,IAAIA,EAAQ,KAAK,WAAY,UAAU,EAAG,IAAIA,EAAQ,KAAK,WAAY,SAAU,EACjF,IAAIA,EAAQ,KAAK,UAAY,UAAU,EAAG,IAAIA,EAAQ,KAAK,WAAY,SAAU,CAClG,CAAc,CACJ,EAED,gBAAiB,SAAUxC,EAAGpW,EAAQ,CAiDlC,QA/CIuW,EAAI,KAAK,MAAM,MAEf0C,EAAK1C,EAAE,CAAC,EACR2C,EAAK3C,EAAE,CAAC,EACR4C,EAAK5C,EAAE,CAAC,EACR6C,EAAK7C,EAAE,CAAC,EACR8C,EAAK9C,EAAE,CAAC,EACR+C,EAAK/C,EAAE,CAAC,EACRgD,EAAKhD,EAAE,CAAC,EACRiD,EAAKjD,EAAE,CAAC,EAERkD,EAAMR,EAAG,KACTS,EAAMT,EAAG,IACTU,EAAMT,EAAG,KACTU,EAAMV,EAAG,IACTW,EAAMV,EAAG,KACTW,EAAMX,EAAG,IACTY,EAAMX,EAAG,KACTY,EAAMZ,EAAG,IACTa,EAAMZ,EAAG,KACTa,EAAMb,EAAG,IACTc,EAAMb,EAAG,KACTc,EAAMd,EAAG,IACTe,EAAMd,EAAG,KACTe,EAAMf,EAAG,IACTgB,EAAMf,EAAG,KACTgB,EAAMhB,EAAG,IAGTiB,EAAKhB,EACLiB,EAAKhB,EACLiB,GAAKhB,EACLiB,EAAKhB,EACLiB,GAAKhB,EACLiB,EAAKhB,EACLiB,GAAKhB,EACLiB,EAAKhB,EACLiB,EAAKhB,EACL3yB,EAAK4yB,EACLgB,GAAKf,EACLgB,GAAKf,EACLgB,GAAKf,EACLgB,GAAKf,EACLgB,GAAKf,EACLgB,GAAKf,EAGApmB,GAAI,EAAGA,GAAI,GAAIA,KAAK,CACzB,IAAIonB,GACAC,GAGAC,GAAKpD,EAAElkB,EAAC,EAGZ,GAAIA,GAAI,GACJqnB,GAAMC,GAAG,KAAOtF,EAAEpW,EAAS5L,GAAI,CAAC,EAAQ,EACxConB,GAAME,GAAG,IAAOtF,EAAEpW,EAAS5L,GAAI,EAAI,CAAC,EAAI,MACrC,CAEH,IAAIunB,GAAWrD,EAAElkB,GAAI,EAAE,EACnBwnB,GAAWD,GAAQ,KACnBE,GAAWF,GAAQ,IACnBG,IAAaF,KAAa,EAAMC,IAAY,KAASD,KAAa,EAAMC,IAAY,IAAQD,KAAa,EACzGG,IAAaF,KAAa,EAAMD,IAAY,KAASC,KAAa,EAAMD,IAAY,KAASC,KAAa,EAAMD,IAAY,IAG5HI,GAAW1D,EAAElkB,GAAI,CAAC,EAClB6nB,GAAWD,GAAQ,KACnBE,GAAWF,GAAQ,IACnBG,IAAaF,KAAa,GAAOC,IAAY,KAASD,IAAY,EAAMC,KAAa,IAAQD,KAAa,EAC1GG,IAAaF,KAAa,GAAOD,IAAY,KAASC,IAAY,EAAMD,KAAa,KAASC,KAAa,EAAMD,IAAY,IAG7HI,GAAO/D,EAAElkB,GAAI,CAAC,EACdkoB,GAAOD,GAAI,KACXE,GAAOF,GAAI,IAEXG,GAAQlE,EAAElkB,GAAI,EAAE,EAChBqoB,GAAQD,GAAK,KACbE,GAAQF,GAAK,IAEjBhB,GAAMO,GAAUQ,GAChBd,GAAMK,GAAUQ,IAASd,KAAQ,EAAMO,KAAY,EAAK,EAAI,GAC5DP,GAAMA,GAAMY,GACZX,GAAMA,GAAMU,IAAYX,KAAQ,EAAMY,KAAY,EAAK,EAAI,GAC3DZ,GAAMA,GAAMkB,GACZjB,GAAMA,GAAMgB,IAAUjB,KAAQ,EAAMkB,KAAU,EAAK,EAAI,GAEvDhB,GAAG,KAAOD,GACVC,GAAG,IAAOF,EACb,CAED,IAAImB,GAAQ1B,EAAKC,GAAO,CAACD,EAAKG,GAC1BwB,GAAQt1B,EAAK6zB,GAAO,CAAC7zB,EAAK+zB,GAC1BwB,GAAQpC,EAAKE,GAAOF,EAAKI,GAAOF,GAAKE,GACrCiC,GAAQpC,EAAKE,EAAOF,EAAKI,EAAOF,EAAKE,EAErCiC,IAAYtC,IAAO,GAAOC,GAAM,IAASD,GAAM,GAAQC,IAAO,IAAQD,GAAM,GAAOC,IAAO,GAC1FsC,IAAYtC,IAAO,GAAOD,GAAM,IAASC,GAAM,GAAQD,IAAO,IAAQC,GAAM,GAAOD,IAAO,GAC1FwC,IAAYhC,IAAO,GAAO3zB,GAAM,KAAS2zB,IAAO,GAAO3zB,GAAM,KAAS2zB,GAAM,GAAO3zB,IAAO,GAC1F41B,IAAY51B,IAAO,GAAO2zB,GAAM,KAAS3zB,IAAO,GAAO2zB,GAAM,KAAS3zB,GAAM,GAAO2zB,IAAO,GAG1FkC,GAAMpE,EAAE3kB,EAAC,EACTgpB,GAAMD,GAAG,KACTE,GAAMF,GAAG,IAETG,GAAM/B,GAAK2B,GACXK,GAAMjC,GAAK2B,IAAYK,KAAQ,EAAM/B,KAAO,EAAK,EAAI,GACrD+B,GAAMA,GAAMV,GACZW,GAAMA,GAAMZ,IAAQW,KAAQ,EAAMV,KAAQ,EAAK,EAAI,GACnDU,GAAMA,GAAMD,GACZE,GAAMA,GAAMH,IAAQE,KAAQ,EAAMD,KAAQ,EAAK,EAAI,GACnDC,GAAMA,GAAM9B,GACZ+B,GAAMA,GAAM9B,IAAQ6B,KAAQ,EAAM9B,KAAQ,EAAK,EAAI,GAGnDgC,GAAMR,GAAUF,GAChBW,GAAMV,GAAUF,IAASW,KAAQ,EAAMR,KAAY,EAAK,EAAI,GAGhE1B,GAAKF,GACLG,GAAKF,GACLD,GAAKF,GACLG,GAAKF,GACLD,GAAKD,EACLE,GAAK7zB,EACLA,EAAM0zB,EAAKsC,GAAO,EAClBrC,EAAMF,GAAKwC,IAAQj2B,IAAO,EAAM0zB,IAAO,EAAK,EAAI,GAAM,EACtDD,GAAKF,GACLG,EAAKF,EACLD,GAAKF,GACLG,EAAKF,EACLD,GAAKF,EACLG,EAAKF,EACLA,EAAM4C,GAAME,GAAO,EACnB/C,EAAM8C,GAAME,IAAQ/C,IAAO,EAAM4C,KAAQ,EAAK,EAAI,GAAM,CAC3D,CAGD5D,EAAMT,EAAG,IAAQS,EAAMgB,EACvBzB,EAAG,KAAQQ,EAAMgB,GAAOf,IAAQ,EAAMgB,IAAO,EAAK,EAAI,GACtDd,EAAMV,EAAG,IAAQU,EAAMgB,EACvB1B,EAAG,KAAQS,EAAMgB,IAAOf,IAAQ,EAAMgB,IAAO,EAAK,EAAI,GACtDd,EAAMX,EAAG,IAAQW,EAAMgB,EACvB3B,EAAG,KAAQU,EAAMgB,IAAOf,IAAQ,EAAMgB,IAAO,EAAK,EAAI,GACtDd,EAAMZ,EAAG,IAAQY,EAAMgB,EACvB5B,EAAG,KAAQW,EAAMgB,IAAOf,IAAQ,EAAMgB,IAAO,EAAK,EAAI,GACtDd,EAAMb,EAAG,IAAQa,EAAM5yB,EACvB+xB,EAAG,KAAQY,EAAMgB,GAAOf,IAAQ,EAAM5yB,IAAO,EAAK,EAAI,GACtD8yB,EAAMd,EAAG,IAAQc,EAAMe,GACvB7B,EAAG,KAAQa,EAAMe,IAAOd,IAAQ,EAAMe,KAAO,EAAK,EAAI,GACtDb,EAAMf,EAAG,IAAQe,EAAMe,GACvB9B,EAAG,KAAQc,EAAMe,IAAOd,IAAQ,EAAMe,KAAO,EAAK,EAAI,GACtDb,EAAMhB,EAAG,IAAQgB,EAAMe,GACvB/B,EAAG,KAAQe,EAAMe,IAAOd,IAAQ,EAAMe,KAAO,EAAK,EAAI,EACzD,EAED,YAAa,UAAY,CAErB,IAAI1tB,EAAO,KAAK,MACZiqB,EAAYjqB,EAAK,MAEjBkqB,EAAa,KAAK,YAAc,EAChCC,EAAYnqB,EAAK,SAAW,EAGhCiqB,EAAUE,IAAc,CAAC,GAAK,KAAS,GAAKA,EAAY,GACxDF,GAAaE,EAAY,MAAS,IAAO,GAAK,EAAE,EAAI,KAAK,MAAMD,EAAa,UAAW,EACvFD,GAAaE,EAAY,MAAS,IAAO,GAAK,EAAE,EAAID,EACpDlqB,EAAK,SAAWiqB,EAAU,OAAS,EAGnC,KAAK,SAAQ,EAGb,IAAIK,EAAO,KAAK,MAAM,MAAK,EAG3B,OAAOA,CACV,EAED,MAAO,UAAY,CACf,IAAIrE,EAAQkC,EAAO,MAAM,KAAK,IAAI,EAClC,OAAAlC,EAAM,MAAQ,KAAK,MAAM,MAAK,EAEvBA,CACV,EAED,UAAW,KAAK,EACzB,CAAM,EAgBDb,EAAE,OAAS+C,EAAO,cAAcgD,CAAM,EAgBtC/F,EAAE,WAAa+C,EAAO,kBAAkBgD,CAAM,CACnD,IAGQjG,EAAS,MAEjB,CAAC,wFCrUC,SAAU5lB,EAAM9D,EAASmvB,EAAO,CAGhC5F,EAAA,QAA2BvpB,EAAQwpB,GAAiB,EAAE4F,GAAqB,EAAEiF,GAAmB,CAAA,CAUlG,GAAE5K,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIE,EAAIF,EACJM,EAAQJ,EAAE,IACV2F,EAAUvF,EAAM,KAChBwF,EAAexF,EAAM,UACrB4C,EAAShD,EAAE,KACX+F,EAAS/C,EAAO,OAKhB0H,EAAS1H,EAAO,OAAS+C,EAAO,OAAO,CACvC,SAAU,UAAY,CAClB,KAAK,MAAQ,IAAIH,EAAa,KAAK,CAC/B,IAAID,EAAQ,KAAK,WAAY,UAAU,EAAG,IAAIA,EAAQ,KAAK,WAAY,SAAU,EACjF,IAAIA,EAAQ,KAAK,WAAY,SAAU,EAAG,IAAIA,EAAQ,KAAK,UAAY,UAAU,EACjF,IAAIA,EAAQ,KAAK,WAAY,UAAU,EAAG,IAAIA,EAAQ,KAAK,WAAY,UAAU,EACjF,IAAIA,EAAQ,KAAK,WAAY,UAAU,EAAG,IAAIA,EAAQ,KAAK,WAAY,UAAU,CAClG,CAAc,CACJ,EAED,YAAa,UAAY,CACrB,IAAIT,EAAOa,EAAO,YAAY,KAAK,IAAI,EAEvC,OAAAb,EAAK,UAAY,GAEVA,CACV,CACV,CAAM,EAgBDlF,EAAE,OAAS+F,EAAO,cAAc2E,CAAM,EAgBtC1K,EAAE,WAAa+F,EAAO,kBAAkB2E,CAAM,CACnD,IAGQ5K,EAAS,MAEjB,CAAC,wFClFC,SAAU5lB,EAAM9D,EAASmvB,EAAO,CAGhC5F,EAAA,QAA2BvpB,EAAQwpB,GAAiB,EAAE4F,GAAqB,CAAA,CAU7E,GAAE3F,EAAM,SAAUC,EAAU,CAE3B,OAAC,SAAUgD,EAAM,CAEb,IAAI9C,EAAIF,EACJG,EAAQD,EAAE,IACVe,EAAYd,EAAM,UAClB8C,EAAS9C,EAAM,OACfG,EAAQJ,EAAE,IACV2F,EAAUvF,EAAM,KAChB4C,EAAShD,EAAE,KAGX2K,EAAc,CAAA,EACdC,EAAc,CAAA,EACdC,EAAkB,CAAA,GAGrB,UAAY,CAGT,QADI/oB,EAAI,EAAGC,EAAI,EACNuB,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzBqnB,EAAY7oB,EAAI,EAAIC,CAAC,GAAMuB,EAAI,IAAMA,EAAI,GAAK,EAAK,GAEnD,IAAIwnB,EAAO/oB,EAAI,EACXgpB,GAAQ,EAAIjpB,EAAI,EAAIC,GAAK,EAC7BD,EAAIgpB,EACJ/oB,EAAIgpB,CACP,CAGD,QAASjpB,EAAI,EAAGA,EAAI,EAAGA,IACnB,QAASC,EAAI,EAAGA,EAAI,EAAGA,IACnB6oB,EAAW9oB,EAAI,EAAIC,CAAC,EAAIA,GAAM,EAAID,EAAI,EAAIC,GAAK,EAAK,EAM5D,QADIipB,EAAO,EACF7pB,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAIzB,QAHI8pB,EAAmB,EACnBC,EAAmB,EAEdhJ,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,GAAI8I,EAAO,EAAM,CACb,IAAIG,GAAe,GAAKjJ,GAAK,EACzBiJ,EAAc,GACdD,GAAoB,GAAKC,EAEzBF,GAAoB,GAAME,EAAc,EAE/C,CAGGH,EAAO,IAEPA,EAAQA,GAAQ,EAAK,IAErBA,IAAS,CAEhB,CAEDH,EAAgB1pB,CAAC,EAAIwkB,EAAQ,OAAOsF,EAAkBC,CAAgB,CACzE,CACV,KAGK,IAAIjI,EAAI,CAAA,GACP,UAAY,CACT,QAAS9hB,EAAI,EAAGA,EAAI,GAAIA,IACpB8hB,EAAE9hB,CAAC,EAAIwkB,EAAQ,OAAM,CAElC,KAKK,IAAIyF,EAAOpI,EAAO,KAAOD,EAAO,OAAO,CASnC,IAAKA,EAAO,IAAI,OAAO,CACnB,aAAc,GAC3B,CAAU,EAED,SAAU,UAAY,CAElB,QADI/mB,EAAQ,KAAK,OAAS,CAAE,EACnBmF,EAAI,EAAGA,EAAI,GAAIA,IACpBnF,EAAMmF,CAAC,EAAI,IAAIwkB,EAAQ,KAG3B,KAAK,WAAa,KAAO,EAAI,KAAK,IAAI,cAAgB,EACzD,EAED,gBAAiB,SAAUxC,EAAGpW,EAAQ,CAMlC,QAJI/Q,EAAQ,KAAK,OACbqvB,EAAkB,KAAK,UAAY,EAG9BlqB,EAAI,EAAGA,EAAIkqB,EAAiBlqB,IAAK,CAEtC,IAAImqB,EAAOnI,EAAEpW,EAAS,EAAI5L,CAAC,EACvBoqB,EAAOpI,EAAEpW,EAAS,EAAI5L,EAAI,CAAC,EAG/BmqB,GACOA,GAAO,EAAOA,IAAQ,IAAO,UAC7BA,GAAO,GAAOA,IAAQ,GAAO,WAEpCC,GACOA,GAAQ,EAAOA,IAAS,IAAO,UAC/BA,GAAQ,GAAOA,IAAS,GAAO,WAItC,IAAIC,EAAOxvB,EAAMmF,CAAC,EAClBqqB,EAAK,MAAQD,EACbC,EAAK,KAAQF,CAChB,CAGD,QAASG,EAAQ,EAAGA,EAAQ,GAAIA,IAAS,CAErC,QAAS3pB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAGxB,QADI4pB,EAAO,EAAGC,EAAO,EACZ5pB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAIypB,EAAOxvB,EAAM8F,EAAI,EAAIC,CAAC,EAC1B2pB,GAAQF,EAAK,KACbG,GAAQH,EAAK,GAChB,CAGD,IAAII,EAAK3I,EAAEnhB,CAAC,EACZ8pB,EAAG,KAAOF,EACVE,EAAG,IAAOD,CACb,CACD,QAAS7pB,EAAI,EAAGA,EAAI,EAAGA,IAUnB,QARI+pB,EAAM5I,GAAGnhB,EAAI,GAAK,CAAC,EACnBgqB,EAAM7I,GAAGnhB,EAAI,GAAK,CAAC,EACnBiqB,EAASD,EAAI,KACbE,EAASF,EAAI,IAGbJ,EAAOG,EAAI,MAASE,GAAU,EAAMC,IAAW,IAC/CL,EAAOE,EAAI,KAASG,GAAU,EAAMD,IAAW,IAC1ChqB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAIypB,EAAOxvB,EAAM8F,EAAI,EAAIC,CAAC,EAC1BypB,EAAK,MAAQE,EACbF,EAAK,KAAQG,CAChB,CAIL,QAASM,EAAY,EAAGA,EAAY,GAAIA,IAAa,CACjD,IAAIP,EACAC,EAGAH,EAAOxvB,EAAMiwB,CAAS,EACtBC,EAAUV,EAAK,KACfW,EAAUX,EAAK,IACfY,EAAYzB,EAAYsB,CAAS,EAGjCG,EAAY,IACZV,EAAQQ,GAAWE,EAAcD,IAAa,GAAKC,EACnDT,EAAQQ,GAAWC,EAAcF,IAAa,GAAKE,IAEnDV,EAAQS,GAAYC,EAAY,GAAQF,IAAa,GAAKE,EAC1DT,EAAQO,GAAYE,EAAY,GAAQD,IAAa,GAAKC,GAI9D,IAAIC,EAAUpJ,EAAE2H,EAAWqB,CAAS,CAAC,EACrCI,EAAQ,KAAOX,EACfW,EAAQ,IAAOV,CAClB,CAGD,IAAIW,EAAKrJ,EAAE,CAAC,EACRsJ,EAASvwB,EAAM,CAAC,EACpBswB,EAAG,KAAOC,EAAO,KACjBD,EAAG,IAAOC,EAAO,IAGjB,QAASzqB,EAAI,EAAGA,EAAI,EAAGA,IACnB,QAASC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAExB,IAAIkqB,EAAYnqB,EAAI,EAAIC,EACpBypB,EAAOxvB,EAAMiwB,CAAS,EACtBO,EAAQvJ,EAAEgJ,CAAS,EACnBQ,EAAUxJ,GAAInhB,EAAI,GAAK,EAAK,EAAIC,CAAC,EACjC2qB,GAAUzJ,GAAInhB,EAAI,GAAK,EAAK,EAAIC,CAAC,EAGrCypB,EAAK,KAAOgB,EAAM,KAAQ,CAACC,EAAQ,KAAOC,GAAQ,KAClDlB,EAAK,IAAOgB,EAAM,IAAQ,CAACC,EAAQ,IAAOC,GAAQ,GACrD,CAIL,IAAIlB,EAAOxvB,EAAM,CAAC,EACd2wB,EAAgB9B,EAAgBY,CAAK,EACzCD,EAAK,MAAQmB,EAAc,KAC3BnB,EAAK,KAAQmB,EAAc,GAC9B,CACJ,EAED,YAAa,UAAY,CAErB,IAAI/xB,EAAO,KAAK,MACZiqB,EAAYjqB,EAAK,MACJ,KAAK,YAAc,EACpC,IAAImqB,EAAYnqB,EAAK,SAAW,EAC5BgyB,EAAgB,KAAK,UAAY,GAGrC/H,EAAUE,IAAc,CAAC,GAAK,GAAQ,GAAKA,EAAY,GACvDF,GAAY/B,EAAK,MAAMiC,EAAY,GAAK6H,CAAa,EAAIA,IAAmB,GAAK,CAAC,GAAK,IACvFhyB,EAAK,SAAWiqB,EAAU,OAAS,EAGnC,KAAK,SAAQ,EASb,QANI7oB,EAAQ,KAAK,OACb6wB,EAAoB,KAAK,IAAI,aAAe,EAC5CC,EAAoBD,EAAoB,EAGxCE,EAAY,CAAA,EACP5rB,EAAI,EAAGA,EAAI2rB,EAAmB3rB,IAAK,CAExC,IAAIqqB,EAAOxvB,EAAMmF,CAAC,EACd+qB,EAAUV,EAAK,KACfW,EAAUX,EAAK,IAGnBU,GACOA,GAAW,EAAOA,IAAY,IAAO,UACrCA,GAAW,GAAOA,IAAY,GAAO,WAE5CC,GACOA,GAAW,EAAOA,IAAY,IAAO,UACrCA,GAAW,GAAOA,IAAY,GAAO,WAI5CY,EAAU,KAAKZ,CAAO,EACtBY,EAAU,KAAKb,CAAO,CACzB,CAGD,OAAO,IAAInL,EAAU,KAAKgM,EAAWF,CAAiB,CACzD,EAED,MAAO,UAAY,CAIf,QAHIhM,EAAQkC,EAAO,MAAM,KAAK,IAAI,EAE9B/mB,EAAQ6kB,EAAM,OAAS,KAAK,OAAO,MAAM,CAAC,EACrC1f,EAAI,EAAGA,EAAI,GAAIA,IACpBnF,EAAMmF,CAAC,EAAInF,EAAMmF,CAAC,EAAE,MAAK,EAG7B,OAAO0f,CACV,CACV,CAAM,EAgBDb,EAAE,KAAO+C,EAAO,cAAcqI,CAAI,EAgBlCpL,EAAE,SAAW+C,EAAO,kBAAkBqI,CAAI,CAC7C,EAAC,IAAI,EAGCtL,EAAS,IAEjB,CAAC,wFCrUC,SAAU5lB,EAAM9D,EAAS,CAGzBupB,UAA2BvpB,EAAQwpB,GAAiB,CAAA,CAUtD,GAAEC,EAAM,SAAUC,EAAU,CAE5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAWC,OAAC,SAAUgD,EAAM,CAEb,IAAI9C,EAAIF,EACJG,EAAQD,EAAE,IACVe,EAAYd,EAAM,UAClB8C,EAAS9C,EAAM,OACf+C,EAAShD,EAAE,KAGXgN,EAAMjM,EAAU,OAAO,CACvB,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3D,EAAI,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAAI,EAAI,EAAI,EAAG,GAAI,GAAK,EAC5D,EAAG,GAAI,GAAK,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAK,EAAG,GAC3D,EAAI,EAAG,GAAI,GAAK,EAAI,EAAG,GAAK,EAAG,GAAK,EAAI,EAAG,GAAI,GAAK,EAAI,EAAI,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAG,GAAI,GAAK,EAAI,EAAI,EAAG,GAAK,EAAG,GAAI,EAAE,CAAC,EAC9DkM,EAAMlM,EAAU,OAAO,CACvB,EAAG,GAAK,EAAI,EAAI,EAAI,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAAI,EAAG,GAAK,EAAG,GAC3D,EAAG,GAAK,EAAI,EAAI,EAAG,GAAK,EAAG,GAAI,GAAI,GAAK,EAAG,GAAK,EAAI,EAAI,EAAI,EAC5D,GAAK,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAAI,EAAG,GAC5D,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAK,EAAI,EAAG,GAAK,EAAG,GAAK,EAAI,EAAG,GAAI,GAC3D,GAAI,GAAI,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAK,EAAI,EAAI,EAAG,EAAE,CAAC,EAC/DmM,EAAMnM,EAAU,OAAO,CACtB,GAAI,GAAI,GAAI,GAAK,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAK,EAAI,EAAI,EAAI,EAC9D,EAAG,EAAK,EAAG,GAAI,GAAK,EAAI,EAAG,GAAK,EAAG,GAAI,GAAK,EAAG,GAAK,EAAG,GAAI,GAC3D,GAAI,GAAK,EAAI,EAAG,GAAK,EAAG,GAAI,GAAI,GAAK,EAAG,GAAK,EAAI,EAAG,GAAK,EAAI,EAC3D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAK,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAG,GAC9D,EAAG,GAAK,EAAG,GAAK,EAAI,EAAG,GAAI,GAAK,EAAG,GAAI,GAAI,GAAI,GAAK,EAAI,EAAI,CAAC,CAAE,EAC/DoM,EAAMpM,EAAU,OAAO,CACvB,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAK,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAK,EAC5D,EAAG,GAAI,GAAK,EAAG,GAAK,EAAI,EAAG,GAAK,EAAI,EAAG,GAAK,EAAI,EAAG,GAAI,GAAI,GAC3D,EAAI,EAAG,GAAI,GAAK,EAAI,EAAI,EAAG,GAAI,GAAI,GAAK,EAAG,GAAI,GAAI,GAAK,EAAI,EAC5D,GAAK,EAAI,EAAG,GAAI,GAAI,GAAK,EAAG,GAAK,EAAI,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAC7D,EAAI,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAAI,EAAG,GAAK,EAAI,EAAG,GAAI,GAAI,GAAI,EAAE,CAAE,EAE/DqM,EAAOrM,EAAU,OAAO,CAAE,EAAY,WAAY,WAAY,WAAY,UAAU,CAAC,EACrFsM,EAAOtM,EAAU,OAAO,CAAE,WAAY,WAAY,WAAY,WAAY,CAAU,CAAC,EAKrFuM,EAAYtK,EAAO,UAAYD,EAAO,OAAO,CAC7C,SAAU,UAAY,CAClB,KAAK,MAAShC,EAAU,OAAO,CAAC,WAAY,WAAY,WAAY,UAAY,UAAU,CAAC,CAC9F,EAED,gBAAiB,SAAUoC,EAAGpW,EAAQ,CAGlC,QAAS5L,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAEzB,IAAIiiB,EAAWrW,EAAS5L,EACpBkiB,EAAaF,EAAEC,CAAQ,EAG3BD,EAAEC,CAAQ,GACHC,GAAc,EAAOA,IAAe,IAAO,UAC3CA,GAAc,GAAOA,IAAe,GAAO,UAErD,CAED,IAAIC,EAAK,KAAK,MAAM,MAChBgF,EAAK8E,EAAI,MACTG,EAAKF,EAAI,MACTG,EAAKR,EAAI,MACTS,EAAKR,EAAI,MACTS,EAAKR,EAAI,MACTS,EAAKR,EAAI,MAGT1F,EAAIE,EAAIE,EAAIE,EAAI1zB,EAChBu5B,EAAIC,EAAIC,EAAIC,EAAIC,GAEpBJ,EAAKnG,EAAKnE,EAAE,CAAC,EACbuK,EAAKlG,EAAKrE,EAAE,CAAC,EACbwK,EAAKjG,EAAKvE,EAAE,CAAC,EACbyK,EAAKhG,EAAKzE,EAAE,CAAC,EACb0K,GAAK35B,EAAKivB,EAAE,CAAC,EAGb,QADIhgB,EACKnC,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACzBmC,EAAKmkB,EAAMtE,EAAEpW,EAAOygB,EAAGrsB,CAAC,CAAC,EAAG,EACxBA,EAAE,GACTmC,GAAM2qB,EAAGtG,EAAGE,EAAGE,CAAE,EAAIO,EAAG,CAAC,EACXnnB,EAAE,GAChBmC,GAAM4qB,EAAGvG,EAAGE,EAAGE,CAAE,EAAIO,EAAG,CAAC,EACXnnB,EAAE,GAChBmC,GAAM6qB,EAAGxG,EAAGE,EAAGE,CAAE,EAAIO,EAAG,CAAC,EACXnnB,EAAE,GAChBmC,GAAM8qB,EAAGzG,EAAGE,EAAGE,CAAE,EAAIO,EAAG,CAAC,EAEzBhlB,GAAM+qB,EAAG1G,EAAGE,EAAGE,CAAE,EAAIO,EAAG,CAAC,EAEtBhlB,EAAIA,EAAE,EACNA,EAAKgrB,EAAKhrB,EAAEoqB,EAAGvsB,CAAC,CAAC,EACjBmC,EAAKA,EAAEjP,EAAI,EACXozB,EAAKpzB,EACLA,EAAK0zB,EACLA,EAAKuG,EAAKzG,EAAI,EAAE,EAChBA,EAAKF,EACLA,EAAKrkB,EAELA,EAAKsqB,EAAKzK,EAAEpW,EAAO0gB,EAAGtsB,CAAC,CAAC,EAAG,EACvBA,EAAE,GACTmC,GAAM+qB,EAAGR,EAAGC,EAAGC,CAAE,EAAIR,EAAG,CAAC,EACXpsB,EAAE,GAChBmC,GAAM8qB,EAAGP,EAAGC,EAAGC,CAAE,EAAIR,EAAG,CAAC,EACXpsB,EAAE,GAChBmC,GAAM6qB,EAAGN,EAAGC,EAAGC,CAAE,EAAIR,EAAG,CAAC,EACXpsB,EAAE,GAChBmC,GAAM4qB,EAAGL,EAAGC,EAAGC,CAAE,EAAIR,EAAG,CAAC,EAEzBjqB,GAAM2qB,EAAGJ,EAAGC,EAAGC,CAAE,EAAIR,EAAG,CAAC,EAEtBjqB,EAAIA,EAAE,EACNA,EAAKgrB,EAAKhrB,EAAEqqB,EAAGxsB,CAAC,CAAC,EACjBmC,EAAKA,EAAE0qB,GAAI,EACXJ,EAAKI,GACLA,GAAKD,EACLA,EAAKO,EAAKR,EAAI,EAAE,EAChBA,EAAKD,EACLA,EAAKvqB,EAGTA,EAAQggB,EAAE,CAAC,EAAIuE,EAAKkG,EAAI,EACxBzK,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAIyE,EAAKiG,GAAI,EACxB1K,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAIjvB,EAAKu5B,EAAI,EACxBtK,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAImE,EAAKoG,EAAI,EACxBvK,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAIqE,EAAKmG,EAAI,EACxBxK,EAAE,CAAC,EAAKhgB,CACX,EAED,YAAa,UAAY,CAErB,IAAI1I,EAAO,KAAK,MACZiqB,EAAYjqB,EAAK,MAEjBkqB,EAAa,KAAK,YAAc,EAChCC,EAAYnqB,EAAK,SAAW,EAGhCiqB,EAAUE,IAAc,CAAC,GAAK,KAAS,GAAKA,EAAY,GACxDF,GAAaE,EAAY,KAAQ,GAAM,GAAK,EAAE,GACvCD,GAAc,EAAOA,IAAe,IAAO,UAC3CA,GAAc,GAAOA,IAAe,GAAO,WAElDlqB,EAAK,UAAYiqB,EAAU,OAAS,GAAK,EAGzC,KAAK,SAAQ,EAOb,QAJIK,EAAO,KAAK,MACZ5B,EAAI4B,EAAK,MAGJ/jB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAExB,IAAIgkB,EAAM7B,EAAEniB,CAAC,EAGbmiB,EAAEniB,CAAC,GAAOgkB,GAAO,EAAOA,IAAQ,IAAO,UAC7BA,GAAO,GAAOA,IAAQ,GAAO,UAC1C,CAGD,OAAOD,CACV,EAED,MAAO,UAAY,CACf,IAAIrE,EAAQkC,EAAO,MAAM,KAAK,IAAI,EAClC,OAAAlC,EAAM,MAAQ,KAAK,MAAM,MAAK,EAEvBA,CACV,CACV,CAAM,EAGD,SAASoN,EAAGnsB,EAAGC,EAAGwsB,EAAG,CACjB,OAASzsB,EAAMC,EAAMwsB,CAExB,CAED,SAASL,EAAGpsB,EAAGC,EAAGwsB,EAAG,CACjB,OAAUzsB,EAAIC,EAAQ,CAACD,EAAIysB,CAC9B,CAED,SAASJ,EAAGrsB,EAAGC,EAAGwsB,EAAG,CACjB,OAAUzsB,EAAM,CAAEC,GAAQwsB,CAC7B,CAED,SAASH,EAAGtsB,EAAGC,EAAGwsB,EAAG,CACjB,OAAUzsB,EAAMysB,EAAQxsB,EAAI,CAAEwsB,CACjC,CAED,SAASF,EAAGvsB,EAAGC,EAAGwsB,EAAG,CACjB,OAASzsB,GAAOC,EAAK,CAAEwsB,EAE1B,CAED,SAASD,EAAKxsB,EAAEb,EAAG,CACf,OAAQa,GAAGb,EAAMa,IAAK,GAAGb,CAC5B,CAiBD+e,EAAE,UAAY+C,EAAO,cAAcuK,CAAS,EAgB5CtN,EAAE,cAAgB+C,EAAO,kBAAkBuK,CAAS,CACvD,EAAK,EAGCxN,EAAS,SAEjB,CAAC,wFC1QC,SAAU5lB,EAAM9D,EAAS,CAGzBupB,UAA2BvpB,EAAQwpB,GAAiB,CAAA,CAUtD,GAAEC,EAAM,SAAUC,EAAU,EAE1B,UAAY,CAET,IAAIE,EAAIF,EACJG,EAAQD,EAAE,IACVE,EAAOD,EAAM,KACbmB,EAAQpB,EAAE,IACVwO,EAAOpN,EAAM,KACb4B,EAAShD,EAAE,KAKJgD,EAAO,KAAO9C,EAAK,OAAO,CAWjC,KAAM,SAAUuO,EAAQ16B,EAAK,CAEzB06B,EAAS,KAAK,QAAU,IAAIA,EAAO,KAG/B,OAAO16B,GAAO,WACdA,EAAMy6B,EAAK,MAAMz6B,CAAG,GAIxB,IAAI26B,EAAkBD,EAAO,UACzBE,EAAuBD,EAAkB,EAGzC36B,EAAI,SAAW46B,IACf56B,EAAM06B,EAAO,SAAS16B,CAAG,GAI7BA,EAAI,MAAK,EAWT,QARI66B,EAAO,KAAK,MAAQ76B,EAAI,MAAK,EAC7B86B,EAAO,KAAK,MAAQ96B,EAAI,MAAK,EAG7B+6B,EAAYF,EAAK,MACjBG,EAAYF,EAAK,MAGZ1tB,EAAI,EAAGA,EAAIutB,EAAiBvtB,IACjC2tB,EAAU3tB,CAAC,GAAK,WAChB4tB,EAAU5tB,CAAC,GAAK,UAEpBytB,EAAK,SAAWC,EAAK,SAAWF,EAGhC,KAAK,MAAK,CACb,EASD,MAAO,UAAY,CAEf,IAAIF,EAAS,KAAK,QAGlBA,EAAO,MAAK,EACZA,EAAO,OAAO,KAAK,KAAK,CAC3B,EAcD,OAAQ,SAAUO,EAAe,CAC7B,YAAK,QAAQ,OAAOA,CAAa,EAG1B,IACV,EAgBD,SAAU,SAAUA,EAAe,CAE/B,IAAIP,EAAS,KAAK,QAGdQ,EAAYR,EAAO,SAASO,CAAa,EAC7CP,EAAO,MAAK,EACZ,IAAIS,EAAOT,EAAO,SAAS,KAAK,MAAM,QAAQ,OAAOQ,CAAS,CAAC,EAE/D,OAAOC,CACV,CACV,CAAM,CACN,IAGA,CAAC,wFC9IC,SAAUh1B,EAAM9D,EAASmvB,EAAO,CAGhC5F,EAAA,QAA2BvpB,EAAQwpB,GAAiB,EAAE4F,GAAqBiF,GAAiB,CAAA,CAU9F,GAAE5K,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIE,EAAIF,EACJG,EAAQD,EAAE,IACVE,EAAOD,EAAM,KACbc,EAAYd,EAAM,UAClB+C,EAAShD,EAAE,KACXyF,EAASzC,EAAO,OAChBmM,EAAOnM,EAAO,KAKdoM,EAASpM,EAAO,OAAS9C,EAAK,OAAO,CAQrC,IAAKA,EAAK,OAAO,CACb,QAAS,IAAI,GACb,OAAQuF,EACR,WAAY,IACzB,CAAU,EAaD,KAAM,SAAU4J,EAAK,CACjB,KAAK,IAAM,KAAK,IAAI,OAAOA,CAAG,CACjC,EAcD,QAAS,SAAUC,EAAUC,EAAM,CAkB/B,QAhBIF,EAAM,KAAK,IAGXH,EAAOC,EAAK,OAAOE,EAAI,OAAQC,CAAQ,EAGvCE,EAAazO,EAAU,SACvB0O,EAAa1O,EAAU,OAAO,CAAC,CAAU,CAAC,EAG1C2O,EAAkBF,EAAW,MAC7BG,EAAkBF,EAAW,MAC7BG,EAAUP,EAAI,QACdQ,EAAaR,EAAI,WAGdK,EAAgB,OAASE,GAAS,CACrC,IAAIE,EAAQZ,EAAK,OAAOK,CAAI,EAAE,SAASE,CAAU,EACjDP,EAAK,MAAK,EAQV,QALIa,EAAaD,EAAM,MACnBE,EAAmBD,EAAW,OAG9BE,EAAeH,EACV3uB,EAAI,EAAGA,EAAI0uB,EAAY1uB,IAAK,CACjC8uB,EAAef,EAAK,SAASe,CAAY,EACzCf,EAAK,MAAK,EAMV,QAHIgB,EAAoBD,EAAa,MAG5B/N,EAAI,EAAGA,EAAI8N,EAAkB9N,IAClC6N,EAAW7N,CAAC,GAAKgO,EAAkBhO,CAAC,CAE3C,CAEDsN,EAAW,OAAOM,CAAK,EACvBH,EAAgB,CAAC,GACpB,CACD,OAAAH,EAAW,SAAWI,EAAU,EAEzBJ,CACV,CACV,CAAM,EAmBDxP,EAAE,OAAS,SAAUsP,EAAUC,EAAMF,EAAK,CACtC,OAAOD,EAAO,OAAOC,CAAG,EAAE,QAAQC,EAAUC,CAAI,CACzD,CACA,IAGQzP,EAAS,MAEjB,CAAC,wFChJC,SAAU5lB,EAAM9D,EAASmvB,EAAO,CAGhC5F,EAAA,QAA2BvpB,EAAQwpB,GAAiB,EAAE4F,GAAiB,EAAEiF,GAAiB,CAAA,CAU5F,GAAE5K,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIE,EAAIF,EACJG,EAAQD,EAAE,IACVE,EAAOD,EAAM,KACbc,EAAYd,EAAM,UAClB+C,EAAShD,EAAE,KACXkD,EAAMF,EAAO,IAMbmN,EAASnN,EAAO,OAAS9C,EAAK,OAAO,CAQrC,IAAKA,EAAK,OAAO,CACb,QAAS,IAAI,GACb,OAAQgD,EACR,WAAY,CACzB,CAAU,EAaD,KAAM,SAAUmM,EAAK,CACjB,KAAK,IAAM,KAAK,IAAI,OAAOA,CAAG,CACjC,EAcD,QAAS,SAAUC,EAAUC,EAAM,CAkB/B,QAjBIO,EAGAT,EAAM,KAAK,IAGXZ,EAASY,EAAI,OAAO,OAAM,EAG1BG,EAAazO,EAAU,SAGvB2O,EAAkBF,EAAW,MAC7BI,EAAUP,EAAI,QACdQ,EAAaR,EAAI,WAGdK,EAAgB,OAASE,GAAS,CACjCE,GACArB,EAAO,OAAOqB,CAAK,EAEvBA,EAAQrB,EAAO,OAAOa,CAAQ,EAAE,SAASC,CAAI,EAC7Cd,EAAO,MAAK,EAGZ,QAASttB,EAAI,EAAGA,EAAI0uB,EAAY1uB,IAC5B2uB,EAAQrB,EAAO,SAASqB,CAAK,EAC7BrB,EAAO,MAAK,EAGhBe,EAAW,OAAOM,CAAK,CAC1B,CACD,OAAAN,EAAW,SAAWI,EAAU,EAEzBJ,CACV,CACV,CAAM,EAmBDxP,EAAE,OAAS,SAAUsP,EAAUC,EAAMF,EAAK,CACtC,OAAOc,EAAO,OAAOd,CAAG,EAAE,QAAQC,EAAUC,CAAI,CACzD,CACA,IAGQzP,EAAS,MAEjB,CAAC,wFCrIC,SAAU5lB,EAAM9D,EAASmvB,EAAO,CAGhC5F,EAAA,QAA2BvpB,EAAQwpB,GAAiB,EAAE4F,GAAmB,CAAA,CAU3E,GAAE3F,EAAM,SAAUC,EAAU,CAK3BA,EAAS,IAAI,QAAW,SAAUC,EAAW,CAEzC,IAAIC,EAAIF,EACJG,EAAQD,EAAE,IACVE,EAAOD,EAAM,KACbc,EAAYd,EAAM,UAClBmQ,EAAyBnQ,EAAM,uBAC/BmB,EAAQpB,EAAE,IACHoB,EAAM,KACjB,IAAIiP,EAASjP,EAAM,OACf4B,EAAShD,EAAE,KACXmQ,EAASnN,EAAO,OAUhBsN,EAASrQ,EAAM,OAASmQ,EAAuB,OAAO,CAMtD,IAAKlQ,EAAK,OAAQ,EAgBlB,gBAAiB,SAAUnsB,EAAKs7B,EAAK,CACjC,OAAO,KAAK,OAAO,KAAK,gBAAiBt7B,EAAKs7B,CAAG,CACpD,EAgBD,gBAAiB,SAAUt7B,EAAKs7B,EAAK,CACjC,OAAO,KAAK,OAAO,KAAK,gBAAiBt7B,EAAKs7B,CAAG,CACpD,EAaD,KAAM,SAAUkB,EAAWx8B,EAAKs7B,EAAK,CAEjC,KAAK,IAAM,KAAK,IAAI,OAAOA,CAAG,EAG9B,KAAK,WAAakB,EAClB,KAAK,KAAOx8B,EAGZ,KAAK,MAAK,CACb,EASD,MAAO,UAAY,CAEfq8B,EAAuB,MAAM,KAAK,IAAI,EAGtC,KAAK,SAAQ,CAChB,EAcD,QAAS,SAAUI,EAAY,CAE3B,YAAK,QAAQA,CAAU,EAGhB,KAAK,UACf,EAgBD,SAAU,SAAUA,EAAY,CAExBA,GACA,KAAK,QAAQA,CAAU,EAI3B,IAAIC,EAAqB,KAAK,cAE9B,OAAOA,CACV,EAED,QAAS,IAAI,GAEb,OAAQ,IAAI,GAEZ,gBAAiB,EAEjB,gBAAiB,EAejB,cAAgB,UAAY,CACxB,SAASC,EAAqB38B,EAAK,CAC/B,OAAI,OAAOA,GAAO,SACP48B,EAEAC,CAEd,CAED,OAAO,SAAUC,EAAQ,CACrB,MAAO,CACH,QAAS,SAAUC,EAAS/8B,EAAKs7B,EAAK,CAClC,OAAOqB,EAAqB38B,CAAG,EAAE,QAAQ88B,EAAQC,EAAS/8B,EAAKs7B,CAAG,CACrE,EAED,QAAS,SAAU0B,EAAYh9B,EAAKs7B,EAAK,CACrC,OAAOqB,EAAqB38B,CAAG,EAAE,QAAQ88B,EAAQE,EAAYh9B,EAAKs7B,CAAG,CACxE,CACtB,CACA,CACA,GACA,CAAM,EAOkBpP,EAAM,aAAeqQ,EAAO,OAAO,CAClD,YAAa,UAAY,CAErB,IAAIU,EAAuB,KAAK,SAAS,EAAS,EAElD,OAAOA,CACV,EAED,UAAW,CACpB,CAAM,EAKD,IAAIC,EAASjR,EAAE,KAAO,GAKlBkR,EAAkBjR,EAAM,gBAAkBC,EAAK,OAAO,CAatD,gBAAiB,SAAU2Q,EAAQM,EAAI,CACnC,OAAO,KAAK,UAAU,OAAON,EAAQM,CAAE,CAC1C,EAcD,gBAAiB,SAAUN,EAAQM,EAAI,CACnC,OAAO,KAAK,UAAU,OAAON,EAAQM,CAAE,CAC1C,EAYD,KAAM,SAAUN,EAAQM,EAAI,CACxB,KAAK,QAAUN,EACf,KAAK,IAAMM,CACd,CACV,CAAM,EAKGC,EAAMH,EAAO,IAAO,UAAY,CAIhC,IAAIG,EAAMF,EAAgB,SAK1BE,EAAI,UAAYA,EAAI,OAAO,CAWvB,aAAc,SAAU7Q,EAAOxT,EAAQ,CAEnC,IAAI8jB,EAAS,KAAK,QACdQ,EAAYR,EAAO,UAGvBS,EAAS,KAAK,KAAM/Q,EAAOxT,EAAQskB,CAAS,EAC5CR,EAAO,aAAatQ,EAAOxT,CAAM,EAGjC,KAAK,WAAawT,EAAM,MAAMxT,EAAQA,EAASskB,CAAS,CAC3D,CACd,CAAU,EAKDD,EAAI,UAAYA,EAAI,OAAO,CAWvB,aAAc,SAAU7Q,EAAOxT,EAAQ,CAEnC,IAAI8jB,EAAS,KAAK,QACdQ,EAAYR,EAAO,UAGnBU,EAAYhR,EAAM,MAAMxT,EAAQA,EAASskB,CAAS,EAGtDR,EAAO,aAAatQ,EAAOxT,CAAM,EACjCukB,EAAS,KAAK,KAAM/Q,EAAOxT,EAAQskB,CAAS,EAG5C,KAAK,WAAaE,CACrB,CACd,CAAU,EAED,SAASD,EAAS/Q,EAAOxT,EAAQskB,EAAW,CACxC,IAAIvB,EAGAqB,EAAK,KAAK,IAGVA,GACArB,EAAQqB,EAGR,KAAK,IAAMpR,GAEX+P,EAAQ,KAAK,WAIjB,QAAS3uB,EAAI,EAAGA,EAAIkwB,EAAWlwB,IAC3Bof,EAAMxT,EAAS5L,CAAC,GAAK2uB,EAAM3uB,CAAC,CAEnC,CAED,OAAOiwB,CACV,EAAA,EAKGI,EAAQxR,EAAE,IAAM,GAKhByR,EAAQD,EAAM,MAAQ,CAatB,IAAK,SAAU52B,EAAMy2B,EAAW,CAY5B,QAVIK,EAAiBL,EAAY,EAG7BM,EAAgBD,EAAiB92B,EAAK,SAAW82B,EAGjDE,EAAeD,GAAiB,GAAOA,GAAiB,GAAOA,GAAiB,EAAKA,EAGrFE,EAAe,CAAA,EACV1wB,EAAI,EAAGA,EAAIwwB,EAAexwB,GAAK,EACpC0wB,EAAa,KAAKD,CAAW,EAEjC,IAAIE,EAAU/Q,EAAU,OAAO8Q,EAAcF,CAAa,EAG1D/2B,EAAK,OAAOk3B,CAAO,CACtB,EAaD,MAAO,SAAUl3B,EAAM,CAEnB,IAAI+2B,EAAgB/2B,EAAK,MAAOA,EAAK,SAAW,IAAO,CAAC,EAAI,IAG5DA,EAAK,UAAY+2B,CACpB,CACV,EAOuB1R,EAAM,YAAcqQ,EAAO,OAAO,CAOhD,IAAKA,EAAO,IAAI,OAAO,CACnB,KAAMc,EACN,QAASK,CACtB,CAAU,EAED,MAAO,UAAY,CACf,IAAIM,EAGJzB,EAAO,MAAM,KAAK,IAAI,EAGtB,IAAIjB,EAAM,KAAK,IACX8B,EAAK9B,EAAI,GACT2C,EAAO3C,EAAI,KAGX,KAAK,YAAc,KAAK,gBACxB0C,EAAcC,EAAK,iBAEnBD,EAAcC,EAAK,gBAEnB,KAAK,eAAiB,GAGtB,KAAK,OAAS,KAAK,MAAM,WAAaD,EACtC,KAAK,MAAM,KAAK,KAAMZ,GAAMA,EAAG,KAAK,GAEpC,KAAK,MAAQY,EAAY,KAAKC,EAAM,KAAMb,GAAMA,EAAG,KAAK,EACxD,KAAK,MAAM,UAAYY,EAE9B,EAED,gBAAiB,SAAUxR,EAAOxT,EAAQ,CACtC,KAAK,MAAM,aAAawT,EAAOxT,CAAM,CACxC,EAED,YAAa,UAAY,CACrB,IAAIikB,EAGAc,EAAU,KAAK,IAAI,QAGvB,OAAI,KAAK,YAAc,KAAK,iBAExBA,EAAQ,IAAI,KAAK,MAAO,KAAK,SAAS,EAGtCd,EAAuB,KAAK,SAAS,EAAS,IAG9CA,EAAuB,KAAK,SAAS,EAAS,EAG9Cc,EAAQ,MAAMd,CAAoB,GAG/BA,CACV,EAED,UAAW,IAAI,EACxB,CAAM,EAeD,IAAIiB,EAAehS,EAAM,aAAeC,EAAK,OAAO,CAoBhD,KAAM,SAAUgS,EAAc,CAC1B,KAAK,MAAMA,CAAY,CAC1B,EAiBD,SAAU,SAAUC,EAAW,CAC3B,OAAQA,GAAa,KAAK,WAAW,UAAU,IAAI,CACtD,CACV,CAAM,EAKGC,EAAWpS,EAAE,OAAS,GAKtBqS,EAAmBD,EAAS,QAAU,CActC,UAAW,SAAUF,EAAc,CAC/B,IAAI7Q,EAGA0P,EAAamB,EAAa,WAC1B3C,EAAO2C,EAAa,KAGxB,OAAI3C,EACAlO,EAAYN,EAAU,OAAO,CAAC,WAAY,UAAU,CAAC,EAAE,OAAOwO,CAAI,EAAE,OAAOwB,CAAU,EAErF1P,EAAY0P,EAGT1P,EAAU,SAASgP,CAAM,CACnC,EAeD,MAAO,SAAUiC,EAAY,CACzB,IAAI/C,EAGAwB,EAAaV,EAAO,MAAMiC,CAAU,EAGpCC,EAAkBxB,EAAW,MAGjC,OAAIwB,EAAgB,CAAC,GAAK,YAAcA,EAAgB,CAAC,GAAK,aAE1DhD,EAAOxO,EAAU,OAAOwR,EAAgB,MAAM,EAAG,CAAC,CAAC,EAGnDA,EAAgB,OAAO,EAAG,CAAC,EAC3BxB,EAAW,UAAY,IAGpBkB,EAAa,OAAO,CAAE,WAAYlB,EAAY,KAAMxB,CAAI,CAAE,CACpE,CACV,EAKSqB,EAAqB3Q,EAAM,mBAAqBC,EAAK,OAAO,CAM5D,IAAKA,EAAK,OAAO,CACb,OAAQmS,CACrB,CAAU,EAoBD,QAAS,SAAUxB,EAAQC,EAAS/8B,EAAKs7B,EAAK,CAE1CA,EAAM,KAAK,IAAI,OAAOA,CAAG,EAGzB,IAAImD,EAAY3B,EAAO,gBAAgB98B,EAAKs7B,CAAG,EAC3C0B,EAAayB,EAAU,SAAS1B,CAAO,EAGvC2B,EAAYD,EAAU,IAG1B,OAAOP,EAAa,OAAO,CACvB,WAAYlB,EACZ,IAAKh9B,EACL,GAAI0+B,EAAU,GACd,UAAW5B,EACX,KAAM4B,EAAU,KAChB,QAASA,EAAU,QACnB,UAAW5B,EAAO,UAClB,UAAWxB,EAAI,MAChC,CAAc,CACJ,EAmBD,QAAS,SAAUwB,EAAQE,EAAYh9B,EAAKs7B,EAAK,CAE7CA,EAAM,KAAK,IAAI,OAAOA,CAAG,EAGzB0B,EAAa,KAAK,OAAOA,EAAY1B,EAAI,MAAM,EAG/C,IAAIqD,EAAY7B,EAAO,gBAAgB98B,EAAKs7B,CAAG,EAAE,SAAS0B,EAAW,UAAU,EAE/E,OAAO2B,CACV,EAiBD,OAAQ,SAAU3B,EAAY4B,EAAQ,CAClC,OAAI,OAAO5B,GAAc,SACd4B,EAAO,MAAM5B,EAAY,IAAI,EAE7BA,CAEd,CACV,CAAM,EAKG6B,EAAQ5S,EAAE,IAAM,GAKhB6S,EAAaD,EAAM,QAAU,CAkB7B,QAAS,SAAUtD,EAAUM,EAASkD,EAAQvD,EAAMd,EAAQ,CAOxD,GALKc,IACDA,EAAOxO,EAAU,OAAO,GAAG,CAAC,GAI3B0N,EAGD,IAAI16B,EAAMo8B,EAAO,OAAO,CAAE,QAASP,EAAUkD,EAAQ,OAAQrE,CAAM,CAAE,EAAE,QAAQa,EAAUC,CAAI,MAF7F,KAAIx7B,EAAMo8B,EAAO,OAAO,CAAE,QAASP,EAAUkD,CAAM,CAAE,EAAE,QAAQxD,EAAUC,CAAI,EAOjF,IAAI4B,EAAKpQ,EAAU,OAAOhtB,EAAI,MAAM,MAAM67B,CAAO,EAAGkD,EAAS,CAAC,EAC9D,OAAA/+B,EAAI,SAAW67B,EAAU,EAGlBqC,EAAa,OAAO,CAAE,IAAKl+B,EAAK,GAAIo9B,EAAI,KAAM5B,CAAI,CAAE,CAC9D,CACV,EAMSoB,EAAsB1Q,EAAM,oBAAsB2Q,EAAmB,OAAO,CAM5E,IAAKA,EAAmB,IAAI,OAAO,CAC/B,IAAKiC,CAClB,CAAU,EAmBD,QAAS,SAAUhC,EAAQC,EAASxB,EAAUD,EAAK,CAE/CA,EAAM,KAAK,IAAI,OAAOA,CAAG,EAGzB,IAAI0D,EAAgB1D,EAAI,IAAI,QAAQC,EAAUuB,EAAO,QAASA,EAAO,OAAQxB,EAAI,KAAMA,EAAI,MAAM,EAGjGA,EAAI,GAAK0D,EAAc,GAGvB,IAAIhC,EAAaH,EAAmB,QAAQ,KAAK,KAAMC,EAAQC,EAASiC,EAAc,IAAK1D,CAAG,EAG9F,OAAA0B,EAAW,MAAMgC,CAAa,EAEvBhC,CACV,EAmBD,QAAS,SAAUF,EAAQE,EAAYzB,EAAUD,EAAK,CAElDA,EAAM,KAAK,IAAI,OAAOA,CAAG,EAGzB0B,EAAa,KAAK,OAAOA,EAAY1B,EAAI,MAAM,EAG/C,IAAI0D,EAAgB1D,EAAI,IAAI,QAAQC,EAAUuB,EAAO,QAASA,EAAO,OAAQE,EAAW,KAAM1B,EAAI,MAAM,EAGxGA,EAAI,GAAK0D,EAAc,GAGvB,IAAIL,EAAY9B,EAAmB,QAAQ,KAAK,KAAMC,EAAQE,EAAYgC,EAAc,IAAK1D,CAAG,EAEhG,OAAOqD,CACV,CACV,CAAM,CACJ,EAAA,CAGF,CAAC,wFC93BC,SAAUx4B,EAAM9D,EAASmvB,EAAO,CAGhC5F,EAAA,QAA2BvpB,EAAQwpB,GAAiB,EAAE4F,GAAwB,CAAA,CAUhF,GAAE3F,EAAM,SAAUC,EAAU,CAK3B,OAAAA,EAAS,KAAK,IAAO,UAAY,CAC7B,IAAIkT,EAAMlT,EAAS,IAAI,gBAAgB,OAAM,EAE7CkT,EAAI,UAAYA,EAAI,OAAO,CACvB,aAAc,SAAUzS,EAAOxT,EAAQ,CAEnC,IAAI8jB,EAAS,KAAK,QACdQ,EAAYR,EAAO,UAEvBoC,EAA4B,KAAK,KAAM1S,EAAOxT,EAAQskB,EAAWR,CAAM,EAGvE,KAAK,WAAatQ,EAAM,MAAMxT,EAAQA,EAASskB,CAAS,CAC3D,CACV,CAAM,EAED2B,EAAI,UAAYA,EAAI,OAAO,CACvB,aAAc,SAAUzS,EAAOxT,EAAQ,CAEnC,IAAI8jB,EAAS,KAAK,QACdQ,EAAYR,EAAO,UAGnBU,EAAYhR,EAAM,MAAMxT,EAAQA,EAASskB,CAAS,EAEtD4B,EAA4B,KAAK,KAAM1S,EAAOxT,EAAQskB,EAAWR,CAAM,EAGvE,KAAK,WAAaU,CACrB,CACV,CAAM,EAED,SAAS0B,EAA4B1S,EAAOxT,EAAQskB,EAAWR,EAAQ,CACnE,IAAIqC,EAGA/B,EAAK,KAAK,IAGVA,GACA+B,EAAY/B,EAAG,MAAM,CAAC,EAGtB,KAAK,IAAM,QAEX+B,EAAY,KAAK,WAErBrC,EAAO,aAAaqC,EAAW,CAAC,EAGhC,QAAS/xB,EAAI,EAAGA,EAAIkwB,EAAWlwB,IAC3Bof,EAAMxT,EAAS5L,CAAC,GAAK+xB,EAAU/xB,CAAC,CAEvC,CAED,OAAO6xB,CACV,EAAA,EAGMlT,EAAS,KAAK,GAEtB,CAAC,wFC/EC,SAAU5lB,EAAM9D,EAASmvB,EAAO,CAGhC5F,EAAA,QAA2BvpB,EAAQwpB,GAAiB,EAAE4F,GAAwB,CAAA,CAUhF,GAAE3F,EAAM,SAAUC,EAAU,CAK3B,OAAAA,EAAS,KAAK,IAAO,UAAY,CAC7B,IAAIqT,EAAMrT,EAAS,IAAI,gBAAgB,OAAM,EAEzCsT,EAAYD,EAAI,UAAYA,EAAI,OAAO,CACvC,aAAc,SAAU5S,EAAOxT,EAAQ,CAEnC,IAAI8jB,EAAS,KAAK,QACdQ,EAAYR,EAAO,UACnBM,EAAK,KAAK,IACVkC,EAAU,KAAK,SAGflC,IACAkC,EAAU,KAAK,SAAWlC,EAAG,MAAM,CAAC,EAGpC,KAAK,IAAM,QAEf,IAAI+B,EAAYG,EAAQ,MAAM,CAAC,EAC/BxC,EAAO,aAAaqC,EAAW,CAAC,EAGhCG,EAAQhC,EAAY,CAAC,EAAKgC,EAAQhC,EAAY,CAAC,EAAI,EAAK,EAGxD,QAASlwB,EAAI,EAAGA,EAAIkwB,EAAWlwB,IAC3Bof,EAAMxT,EAAS5L,CAAC,GAAK+xB,EAAU/xB,CAAC,CAEvC,CACV,CAAM,EAED,OAAAgyB,EAAI,UAAYC,EAETD,CACV,EAAA,EAGMrT,EAAS,KAAK,GAEtB,CAAC,wFCzDC,SAAU5lB,EAAM9D,EAASmvB,EAAO,CAGhC5F,EAAA,QAA2BvpB,EAAQwpB,GAAiB,EAAE4F,GAAwB,CAAA,CAUhF,GAAE3F,EAAM,SAAUC,EAAU,CAE5B;AAAA;AAAA;AAAA;AAAA,GAKC,OAAAA,EAAS,KAAK,WAAc,UAAY,CACpC,IAAIwT,EAAaxT,EAAS,IAAI,gBAAgB,OAAM,EAEvD,SAASyT,EAAQ5R,EACjB,CACC,IAAMA,GAAQ,GAAM,OAAU,IAAM,CACpC,IAAI6R,EAAM7R,GAAQ,GAAI,IAClB8R,EAAM9R,GAAQ,EAAG,IACjB+R,EAAK/R,EAAO,IAEZ6R,IAAO,KAEXA,EAAK,EACDC,IAAO,KAEVA,EAAK,EACDC,IAAO,IAEVA,EAAK,EAIL,EAAEA,GAKH,EAAED,GAKH,EAAED,EAGF7R,EAAO,EACPA,GAAS6R,GAAM,GACf7R,GAAS8R,GAAM,EACf9R,GAAQ+R,CACP,MAGD/R,GAAS,GAAQ,GAEjB,OAAOA,CACP,CAED,SAASgS,EAAWN,EACpB,CACC,OAAKA,EAAQ,CAAC,EAAIE,EAAQF,EAAQ,CAAC,CAAC,KAAO,IAG1CA,EAAQ,CAAC,EAAIE,EAAQF,EAAQ,CAAC,CAAC,GAEzBA,CACP,CAEE,IAAID,EAAYE,EAAW,UAAYA,EAAW,OAAO,CACrD,aAAc,SAAU/S,EAAOxT,EAAQ,CAEnC,IAAI8jB,EAAS,KAAK,QACdQ,EAAYR,EAAO,UACnBM,EAAK,KAAK,IACVkC,EAAU,KAAK,SAGflC,IACAkC,EAAU,KAAK,SAAWlC,EAAG,MAAM,CAAC,EAGpC,KAAK,IAAM,QAGxBwC,EAAWN,CAAO,EAElB,IAAIH,EAAYG,EAAQ,MAAM,CAAC,EACtBxC,EAAO,aAAaqC,EAAW,CAAC,EAGhC,QAAS/xB,EAAI,EAAGA,EAAIkwB,EAAWlwB,IAC3Bof,EAAMxT,EAAS5L,CAAC,GAAK+xB,EAAU/xB,CAAC,CAEvC,CACV,CAAM,EAED,OAAAmyB,EAAW,UAAYF,EAEhBE,CACV,EAAA,EAKMxT,EAAS,KAAK,UAEtB,CAAC,wFCnHC,SAAU5lB,EAAM9D,EAASmvB,EAAO,CAGhC5F,EAAA,QAA2BvpB,EAAQwpB,GAAiB,EAAE4F,GAAwB,CAAA,CAUhF,GAAE3F,EAAM,SAAUC,EAAU,CAK3B,OAAAA,EAAS,KAAK,IAAO,UAAY,CAC7B,IAAI8T,EAAM9T,EAAS,IAAI,gBAAgB,OAAM,EAEzCsT,EAAYQ,EAAI,UAAYA,EAAI,OAAO,CACvC,aAAc,SAAUrT,EAAOxT,EAAQ,CAEnC,IAAI8jB,EAAS,KAAK,QACdQ,EAAYR,EAAO,UACnBM,EAAK,KAAK,IACV+B,EAAY,KAAK,WAGjB/B,IACA+B,EAAY,KAAK,WAAa/B,EAAG,MAAM,CAAC,EAGxC,KAAK,IAAM,QAEfN,EAAO,aAAaqC,EAAW,CAAC,EAGhC,QAAS/xB,EAAI,EAAGA,EAAIkwB,EAAWlwB,IAC3Bof,EAAMxT,EAAS5L,CAAC,GAAK+xB,EAAU/xB,CAAC,CAEvC,CACV,CAAM,EAED,OAAAyyB,EAAI,UAAYR,EAETQ,CACV,EAAA,EAGM9T,EAAS,KAAK,GAEtB,CAAC,wFCrDC,SAAU5lB,EAAM9D,EAASmvB,EAAO,CAGhC5F,EAAA,QAA2BvpB,EAAQwpB,GAAiB,EAAE4F,GAAwB,CAAA,CAUhF,GAAE3F,EAAM,SAAUC,EAAU,CAK3B,OAAAA,EAAS,KAAK,IAAO,UAAY,CAC7B,IAAI+T,EAAM/T,EAAS,IAAI,gBAAgB,OAAM,EAE7C,OAAA+T,EAAI,UAAYA,EAAI,OAAO,CACvB,aAAc,SAAUtT,EAAOxT,EAAQ,CACnC,KAAK,QAAQ,aAAawT,EAAOxT,CAAM,CAC1C,CACV,CAAM,EAED8mB,EAAI,UAAYA,EAAI,OAAO,CACvB,aAAc,SAAUtT,EAAOxT,EAAQ,CACnC,KAAK,QAAQ,aAAawT,EAAOxT,CAAM,CAC1C,CACV,CAAM,EAEM8mB,CACV,EAAA,EAGM/T,EAAS,KAAK,GAEtB,CAAC,wFCvCC,SAAU5lB,EAAM9D,EAASmvB,EAAO,CAGhC5F,EAAA,QAA2BvpB,EAAQwpB,GAAiB,EAAE4F,GAAwB,CAAA,CAUhF,GAAE3F,EAAM,SAAUC,EAAU,CAK3B,OAAAA,EAAS,IAAI,SAAW,CACpB,IAAK,SAAUllB,EAAMy2B,EAAW,CAE5B,IAAIyC,EAAel5B,EAAK,SACpB82B,EAAiBL,EAAY,EAG7BM,EAAgBD,EAAiBoC,EAAepC,EAGhDqC,EAAcD,EAAenC,EAAgB,EAGjD/2B,EAAK,MAAK,EACVA,EAAK,MAAMm5B,IAAgB,CAAC,GAAKpC,GAAkB,GAAMoC,EAAc,EAAK,EAC5En5B,EAAK,UAAY+2B,CACpB,EAED,MAAO,SAAU/2B,EAAM,CAEnB,IAAI+2B,EAAgB/2B,EAAK,MAAOA,EAAK,SAAW,IAAO,CAAC,EAAI,IAG5DA,EAAK,UAAY+2B,CACpB,CACN,EAGQ7R,EAAS,IAAI,QAErB,CAAC,wFChDC,SAAU5lB,EAAM9D,EAASmvB,EAAO,CAGhC5F,EAAA,QAA2BvpB,EAAQwpB,GAAiB,EAAE4F,GAAwB,CAAA,CAUhF,GAAE3F,EAAM,SAAUC,EAAU,CAK3B,OAAAA,EAAS,IAAI,SAAW,CACpB,IAAK,SAAUllB,EAAMy2B,EAAW,CAE5B,IAAIK,EAAiBL,EAAY,EAG7BM,EAAgBD,EAAiB92B,EAAK,SAAW82B,EAGrD92B,EAAK,OAAOklB,EAAS,IAAI,UAAU,OAAO6R,EAAgB,CAAC,CAAC,EACvD,OAAO7R,EAAS,IAAI,UAAU,OAAO,CAAC6R,GAAiB,EAAE,EAAG,CAAC,CAAC,CACtE,EAED,MAAO,SAAU/2B,EAAM,CAEnB,IAAI+2B,EAAgB/2B,EAAK,MAAOA,EAAK,SAAW,IAAO,CAAC,EAAI,IAG5DA,EAAK,UAAY+2B,CACpB,CACN,EAGQ7R,EAAS,IAAI,QAErB,CAAC,wFC3CC,SAAU5lB,EAAM9D,EAASmvB,EAAO,CAGhC5F,EAAA,QAA2BvpB,EAAQwpB,GAAiB,EAAE4F,GAAwB,CAAA,CAUhF,GAAE3F,EAAM,SAAUC,EAAU,CAK3B,OAAAA,EAAS,IAAI,SAAW,CACpB,IAAK,SAAUllB,EAAMy2B,EAAW,CAE5Bz2B,EAAK,OAAOklB,EAAS,IAAI,UAAU,OAAO,CAAC,UAAU,EAAG,CAAC,CAAC,EAG1DA,EAAS,IAAI,YAAY,IAAIllB,EAAMy2B,CAAS,CAC/C,EAED,MAAO,SAAUz2B,EAAM,CAEnBklB,EAAS,IAAI,YAAY,MAAMllB,CAAI,EAGnCA,EAAK,UACR,CACN,EAGQklB,EAAS,IAAI,QAErB,CAAC,wFCvCC,SAAU5lB,EAAM9D,EAASmvB,EAAO,CAGhC5F,EAAA,QAA2BvpB,EAAQwpB,GAAiB,EAAE4F,GAAwB,CAAA,CAUhF,GAAE3F,EAAM,SAAUC,EAAU,CAK3B,OAAAA,EAAS,IAAI,YAAc,CACvB,IAAK,SAAUllB,EAAMy2B,EAAW,CAE5B,IAAIK,EAAiBL,EAAY,EAGjCz2B,EAAK,MAAK,EACVA,EAAK,UAAY82B,GAAmB92B,EAAK,SAAW82B,GAAmBA,EAC1E,EAED,MAAO,SAAU92B,EAAM,CAMnB,QAJIiqB,EAAYjqB,EAAK,MAGjBuG,EAAIvG,EAAK,SAAW,EACfuG,EAAIvG,EAAK,SAAW,EAAGuG,GAAK,EAAGA,IACpC,GAAM0jB,EAAU1jB,IAAM,CAAC,IAAO,GAAMA,EAAI,EAAK,EAAM,IAAO,CACtDvG,EAAK,SAAWuG,EAAI,EACpB,KACH,CAER,CACN,EAGQ2e,EAAS,IAAI,WAErB,CAAC,wFC9CC,SAAU5lB,EAAM9D,EAASmvB,EAAO,CAGhC5F,EAAA,QAA2BvpB,EAAQwpB,GAAiB,EAAE4F,GAAwB,CAAA,CAUhF,GAAE3F,EAAM,SAAUC,EAAU,CAK3B,OAAAA,EAAS,IAAI,UAAY,CACrB,IAAK,UAAY,CAChB,EAED,MAAO,UAAY,CAClB,CACN,EAGQA,EAAS,IAAI,SAErB,CAAC,wFC7BC,SAAU5lB,EAAM9D,EAASmvB,EAAO,CAGhC5F,EAAA,QAA2BvpB,EAAQwpB,GAAiB,EAAE4F,GAAwB,CAAA,CAUhF,GAAE3F,EAAM,SAAUC,EAAU,CAE3B,OAAC,SAAUC,EAAW,CAElB,IAAIC,EAAIF,EACJG,EAAQD,EAAE,IACViS,EAAehS,EAAM,aACrBmB,EAAQpB,EAAE,IACVgU,EAAM5S,EAAM,IACZgR,EAAWpS,EAAE,OAEEoS,EAAS,IAAM,CAc9B,UAAW,SAAUF,EAAc,CAC/B,OAAOA,EAAa,WAAW,SAAS8B,CAAG,CAC9C,EAeD,MAAO,SAAUC,EAAO,CACpB,IAAIlD,EAAaiD,EAAI,MAAMC,CAAK,EAChC,OAAOhC,EAAa,OAAO,CAAE,WAAYlB,CAAY,CAAA,CACxD,CACH,CACP,IAGQjR,EAAS,OAAO,GAExB,CAAC,wFCjEC,SAAU5lB,EAAM9D,EAASmvB,EAAO,CAGhC5F,EAAiB,QAAUvpB,EAAQwpB,KAAmB4F,KAAyBiF,KAAkByJ,KAAqBC,GAAwB,CAAA,CAUhJ,GAAEtU,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIE,EAAIF,EACJG,EAAQD,EAAE,IACVoU,EAAcnU,EAAM,YACpB+C,EAAShD,EAAE,KAGXqU,EAAO,CAAA,EACPC,EAAW,CAAA,EACXC,EAAY,CAAA,EACZC,EAAY,CAAA,EACZC,EAAY,CAAA,EACZC,EAAY,CAAA,EACZC,EAAgB,CAAA,EAChBC,EAAgB,CAAA,EAChBC,EAAgB,CAAA,EAChBC,EAAgB,CAAA,GAGnB,UAAY,CAGT,QADItQ,EAAI,CAAA,EACCrjB,EAAI,EAAGA,EAAI,IAAKA,IACjBA,EAAI,IACJqjB,EAAErjB,CAAC,EAAIA,GAAK,EAEZqjB,EAAErjB,CAAC,EAAKA,GAAK,EAAK,IAO1B,QAFIW,EAAI,EACJizB,EAAK,EACA5zB,EAAI,EAAGA,EAAI,IAAKA,IAAK,CAE1B,IAAI6zB,EAAKD,EAAMA,GAAM,EAAMA,GAAM,EAAMA,GAAM,EAAMA,GAAM,EACzDC,EAAMA,IAAO,EAAMA,EAAK,IAAQ,GAChCX,EAAKvyB,CAAC,EAAIkzB,EACVV,EAASU,CAAE,EAAIlzB,EAGf,IAAIoG,EAAKsc,EAAE1iB,CAAC,EACRmzB,EAAKzQ,EAAEtc,CAAE,EACTgtB,EAAK1Q,EAAEyQ,CAAE,EAGT3xB,EAAKkhB,EAAEwQ,CAAE,EAAI,IAAUA,EAAK,SAChCT,EAAUzyB,CAAC,EAAKwB,GAAK,GAAOA,IAAM,EAClCkxB,EAAU1yB,CAAC,EAAKwB,GAAK,GAAOA,IAAM,GAClCmxB,EAAU3yB,CAAC,EAAKwB,GAAK,EAAOA,IAAM,GAClCoxB,EAAU5yB,CAAC,EAAIwB,EAGf,IAAIA,EAAK4xB,EAAK,SAAcD,EAAK,MAAY/sB,EAAK,IAAUpG,EAAI,SAChE6yB,EAAcK,CAAE,EAAK1xB,GAAK,GAAOA,IAAM,EACvCsxB,EAAcI,CAAE,EAAK1xB,GAAK,GAAOA,IAAM,GACvCuxB,EAAcG,CAAE,EAAK1xB,GAAK,EAAOA,IAAM,GACvCwxB,EAAcE,CAAE,EAAI1xB,EAGfxB,GAGDA,EAAIoG,EAAKsc,EAAEA,EAAEA,EAAE0Q,EAAKhtB,CAAE,CAAC,CAAC,EACxB6sB,GAAMvQ,EAAEA,EAAEuQ,CAAE,CAAC,GAHbjzB,EAAIizB,EAAK,CAKhB,CACV,KAGK,IAAII,EAAO,CAAC,EAAM,EAAM,EAAM,EAAM,EAAM,GAAM,GAAM,GAAM,IAAM,GAAM,EAAI,EAKxEC,EAAMpS,EAAO,IAAMoR,EAAY,OAAO,CACtC,SAAU,UAAY,CAClB,IAAI9wB,EAGJ,GAAI,OAAK,UAAY,KAAK,iBAAmB,KAAK,MAiBlD,SAZIvP,EAAM,KAAK,eAAiB,KAAK,KACjCshC,EAAWthC,EAAI,MACf67B,EAAU77B,EAAI,SAAW,EAGzBuhC,EAAU,KAAK,SAAW1F,EAAU,EAGpC2F,GAAUD,EAAU,GAAK,EAGzBE,EAAc,KAAK,aAAe,GAC7BC,EAAQ,EAAGA,EAAQF,EAAQE,IAC5BA,EAAQ7F,EACR4F,EAAYC,CAAK,EAAIJ,EAASI,CAAK,GAEnCnyB,EAAIkyB,EAAYC,EAAQ,CAAC,EAEnBA,EAAQ7F,EASHA,EAAU,GAAK6F,EAAQ7F,GAAW,IAEzCtsB,EAAK+wB,EAAK/wB,IAAM,EAAE,GAAK,GAAO+wB,EAAM/wB,IAAM,GAAM,GAAI,GAAK,GAAO+wB,EAAM/wB,IAAM,EAAK,GAAI,GAAK,EAAK+wB,EAAK/wB,EAAI,GAAI,IAT5GA,EAAKA,GAAK,EAAMA,IAAM,GAGtBA,EAAK+wB,EAAK/wB,IAAM,EAAE,GAAK,GAAO+wB,EAAM/wB,IAAM,GAAM,GAAI,GAAK,GAAO+wB,EAAM/wB,IAAM,EAAK,GAAI,GAAK,EAAK+wB,EAAK/wB,EAAI,GAAI,EAG5GA,GAAK6xB,EAAMM,EAAQ7F,EAAW,CAAC,GAAK,IAMxC4F,EAAYC,CAAK,EAAID,EAAYC,EAAQ7F,CAAO,EAAItsB,GAM5D,QADIoyB,EAAiB,KAAK,gBAAkB,GACnCC,EAAW,EAAGA,EAAWJ,EAAQI,IAAY,CAClD,IAAIF,EAAQF,EAASI,EAErB,GAAIA,EAAW,EACX,IAAIryB,EAAIkyB,EAAYC,CAAK,MAEzB,KAAInyB,EAAIkyB,EAAYC,EAAQ,CAAC,EAG7BE,EAAW,GAAKF,GAAS,EACzBC,EAAeC,CAAQ,EAAIryB,EAE3BoyB,EAAeC,CAAQ,EAAIhB,EAAcN,EAAK/wB,IAAM,EAAE,CAAC,EAAIsxB,EAAcP,EAAM/wB,IAAM,GAAM,GAAI,CAAC,EACrEuxB,EAAcR,EAAM/wB,IAAM,EAAK,GAAI,CAAC,EAAIwxB,EAAcT,EAAK/wB,EAAI,GAAI,CAAC,CAEtG,EACJ,EAED,aAAc,SAAU6f,EAAGpW,EAAQ,CAC/B,KAAK,cAAcoW,EAAGpW,EAAQ,KAAK,aAAcwnB,EAAWC,EAAWC,EAAWC,EAAWL,CAAI,CACpG,EAED,aAAc,SAAUlR,EAAGpW,EAAQ,CAE/B,IAAIzJ,EAAI6f,EAAEpW,EAAS,CAAC,EACpBoW,EAAEpW,EAAS,CAAC,EAAIoW,EAAEpW,EAAS,CAAC,EAC5BoW,EAAEpW,EAAS,CAAC,EAAIzJ,EAEhB,KAAK,cAAc6f,EAAGpW,EAAQ,KAAK,gBAAiB4nB,EAAeC,EAAeC,EAAeC,EAAeR,CAAQ,EAGxH,IAAIhxB,EAAI6f,EAAEpW,EAAS,CAAC,EACpBoW,EAAEpW,EAAS,CAAC,EAAIoW,EAAEpW,EAAS,CAAC,EAC5BoW,EAAEpW,EAAS,CAAC,EAAIzJ,CACnB,EAED,cAAe,SAAU6f,EAAGpW,EAAQyoB,EAAajB,EAAWC,EAAWC,EAAWC,EAAWL,EAAM,CAc/F,QAZIiB,EAAU,KAAK,SAGfM,EAAKzS,EAAEpW,CAAM,EAAQyoB,EAAY,CAAC,EAClCK,EAAK1S,EAAEpW,EAAS,CAAC,EAAIyoB,EAAY,CAAC,EAClCM,EAAK3S,EAAEpW,EAAS,CAAC,EAAIyoB,EAAY,CAAC,EAClCO,EAAK5S,EAAEpW,EAAS,CAAC,EAAIyoB,EAAY,CAAC,EAGlCC,EAAQ,EAGHhK,EAAQ,EAAGA,EAAQ6J,EAAS7J,IAAS,CAE1C,IAAIuK,EAAKzB,EAAUqB,IAAO,EAAE,EAAIpB,EAAWqB,IAAO,GAAM,GAAI,EAAIpB,EAAWqB,IAAO,EAAK,GAAI,EAAIpB,EAAUqB,EAAK,GAAI,EAAIP,EAAYC,GAAO,EACrIQ,EAAK1B,EAAUsB,IAAO,EAAE,EAAIrB,EAAWsB,IAAO,GAAM,GAAI,EAAIrB,EAAWsB,IAAO,EAAK,GAAI,EAAIrB,EAAUkB,EAAK,GAAI,EAAIJ,EAAYC,GAAO,EACrIS,EAAK3B,EAAUuB,IAAO,EAAE,EAAItB,EAAWuB,IAAO,GAAM,GAAI,EAAItB,EAAWmB,IAAO,EAAK,GAAI,EAAIlB,EAAUmB,EAAK,GAAI,EAAIL,EAAYC,GAAO,EACrIU,EAAK5B,EAAUwB,IAAO,EAAE,EAAIvB,EAAWoB,IAAO,GAAM,GAAI,EAAInB,EAAWoB,IAAO,EAAK,GAAI,EAAInB,EAAUoB,EAAK,GAAI,EAAIN,EAAYC,GAAO,EAGzIG,EAAKI,EACLH,EAAKI,EACLH,EAAKI,EACLH,EAAKI,CACR,CAGD,IAAIH,GAAO3B,EAAKuB,IAAO,EAAE,GAAK,GAAOvB,EAAMwB,IAAO,GAAM,GAAI,GAAK,GAAOxB,EAAMyB,IAAO,EAAK,GAAI,GAAK,EAAKzB,EAAK0B,EAAK,GAAI,GAAKP,EAAYC,GAAO,EAC1IQ,GAAO5B,EAAKwB,IAAO,EAAE,GAAK,GAAOxB,EAAMyB,IAAO,GAAM,GAAI,GAAK,GAAOzB,EAAM0B,IAAO,EAAK,GAAI,GAAK,EAAK1B,EAAKuB,EAAK,GAAI,GAAKJ,EAAYC,GAAO,EAC1IS,GAAO7B,EAAKyB,IAAO,EAAE,GAAK,GAAOzB,EAAM0B,IAAO,GAAM,GAAI,GAAK,GAAO1B,EAAMuB,IAAO,EAAK,GAAI,GAAK,EAAKvB,EAAKwB,EAAK,GAAI,GAAKL,EAAYC,GAAO,EAC1IU,GAAO9B,EAAK0B,IAAO,EAAE,GAAK,GAAO1B,EAAMuB,IAAO,GAAM,GAAI,GAAK,GAAOvB,EAAMwB,IAAO,EAAK,GAAI,GAAK,EAAKxB,EAAKyB,EAAK,GAAI,GAAKN,EAAYC,GAAO,EAG9ItS,EAAEpW,CAAM,EAAQipB,EAChB7S,EAAEpW,EAAS,CAAC,EAAIkpB,EAChB9S,EAAEpW,EAAS,CAAC,EAAImpB,EAChB/S,EAAEpW,EAAS,CAAC,EAAIopB,CACnB,EAED,QAAS,IAAI,EACtB,CAAM,EAUDnW,EAAE,IAAMoU,EAAY,cAAcgB,CAAG,CAC1C,IAGQtV,EAAS,GAEjB,CAAC,wFCzOC,SAAU5lB,EAAM9D,EAASmvB,EAAO,CAGhC5F,EAAiB,QAAUvpB,EAAQwpB,KAAmB4F,KAAyBiF,KAAkByJ,KAAqBC,GAAwB,CAAA,CAUhJ,GAAEtU,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIE,EAAIF,EACJG,EAAQD,EAAE,IACVe,EAAYd,EAAM,UAClBmU,EAAcnU,EAAM,YACpB+C,EAAShD,EAAE,KAGXoW,EAAM,CACN,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAI,EAC5B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAC5B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAC5B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5B,GAAI,GAAI,GAAI,EAAI,GAAI,GAAI,GAAI,GAC5B,GAAI,GAAI,GAAI,EAAI,GAAI,GAAI,GAAI,GAC5B,GAAI,GAAI,GAAI,EAAI,GAAI,GAAI,GAAI,CACrC,EAGSC,EAAM,CACN,GAAI,GAAI,GAAI,GAAI,EAAI,EACpB,EAAI,GAAI,GAAI,EAAI,GAAI,GACpB,GAAI,GAAI,GAAI,EAAI,GAAI,EACpB,GAAI,EAAI,GAAI,GAAI,GAAI,EACpB,GAAI,GAAI,GAAI,GAAI,GAAI,GACpB,GAAI,GAAI,GAAI,GAAI,GAAI,GACpB,GAAI,GAAI,GAAI,GAAI,GAAI,GACpB,GAAI,GAAI,GAAI,GAAI,GAAI,EAC7B,EAGSC,EAAa,CAAC,EAAI,EAAI,EAAI,EAAI,EAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAG5EC,EAAS,CACT,CACI,EAAK,QACL,UAAY,MACZ,UAAY,QACZ,UAAY,EACZ,WAAY,IACZ,WAAY,QACZ,WAAY,QACZ,WAAY,QACZ,WAAY,IACZ,WAAY,QACZ,WAAY,MACZ,WAAY,QACZ,WAAY,MACZ,WAAY,QACZ,WAAY,EACZ,WAAY,MACZ,UAAW,EACX,UAAY,QACZ,UAAY,MACZ,UAAY,MACZ,WAAY,QACZ,WAAY,IACZ,WAAY,QACZ,WAAY,EACZ,WAAY,QACZ,WAAY,MACZ,WAAY,QACZ,WAAY,QACZ,WAAY,QACZ,WAAY,MACZ,WAAY,IACZ,WAAY,QACZ,EAAK,MACL,UAAY,EACZ,UAAY,QACZ,UAAY,QACZ,WAAY,QACZ,WAAY,MACZ,WAAY,IACZ,WAAY,QACZ,WAAY,QACZ,WAAY,QACZ,WAAY,QACZ,WAAY,MACZ,WAAY,IACZ,WAAY,QACZ,WAAY,MACZ,WAAY,EACZ,UAAW,QACX,UAAY,QACZ,UAAY,QACZ,UAAY,IACZ,WAAY,MACZ,WAAY,QACZ,WAAY,EACZ,WAAY,MACZ,WAAY,MACZ,WAAY,QACZ,WAAY,IACZ,WAAY,QACZ,WAAY,QACZ,WAAY,EACZ,WAAY,MACZ,WAAY,OACf,EACD,CACI,EAAK,WACL,SAAW,MACX,SAAW,OACX,SAAW,WACX,SAAW,WACX,SAAW,WACX,UAAW,WACX,UAAW,GACX,UAAW,OACX,UAAW,WACX,UAAW,WACX,UAAW,OACX,UAAW,OACX,UAAW,EACX,UAAW,MACX,UAAW,WACX,QAAU,WACV,SAAW,OACX,SAAW,GACX,SAAW,WACX,SAAW,WACX,SAAW,WACX,UAAW,OACX,UAAW,WACX,UAAW,OACX,UAAW,EACX,UAAW,MACX,UAAW,WACX,UAAW,WACX,UAAW,OACX,UAAW,WACX,UAAW,MACX,UAAY,EACZ,UAAY,WACZ,UAAY,WACZ,UAAY,WACZ,UAAY,WACZ,UAAY,GACZ,UAAY,OACZ,UAAY,MACZ,UAAY,MACZ,UAAY,OACZ,UAAY,OACZ,UAAY,WACZ,UAAY,OACZ,UAAY,WACZ,UAAY,WACZ,UAAY,WACZ,UAAY,OACZ,UAAY,OACZ,UAAY,WACZ,UAAY,MACZ,UAAY,WACZ,UAAY,WACZ,UAAY,GACZ,UAAY,WACZ,UAAY,WACZ,UAAY,WACZ,UAAY,WACZ,UAAY,OACZ,UAAY,EACZ,UAAY,MACZ,UAAY,WACZ,UAAY,MACf,EACD,CACI,EAAK,IACL,QAAU,EACV,QAAU,SACV,QAAU,MACV,QAAU,MACV,QAAU,SACV,QAAU,SACV,QAAU,SACV,QAAU,SACV,QAAU,SACV,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,MACV,SAAU,EACV,SAAU,IACV,OAAS,SACT,QAAU,SACV,QAAU,EACV,QAAU,SACV,QAAU,SACV,QAAU,MACV,QAAU,MACV,QAAU,IACV,QAAU,EACV,QAAU,IACV,SAAU,SACV,SAAU,MACV,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAW,SACX,SAAW,MACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,MACX,SAAW,SACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,EACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,MACX,SAAW,SACX,SAAW,MACX,SAAW,SACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,KACd,EACD,CACI,EAAK,WACL,MAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,EACT,OAAS,QACT,OAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,QACT,OAAS,GACT,OAAS,WACT,OAAS,WACT,OAAS,KACT,OAAS,KACT,OAAS,WACT,MAAQ,WACR,MAAS,GACT,OAAS,WACT,OAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,EACT,OAAS,WACT,OAAS,KACT,OAAS,WACT,OAAS,QACT,OAAS,KACT,OAAS,WACT,OAAS,QACT,OAAS,QACT,QAAS,WACT,QAAU,QACV,QAAU,QACV,QAAU,WACV,QAAU,EACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,QACV,QAAU,WACV,QAAU,QACV,QAAU,GACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,EACV,QAAU,QACV,QAAU,QACV,QAAU,WACV,QAAU,WACV,QAAU,GACV,QAAU,WACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,KACV,QAAU,WACV,QAAU,QACV,QAAU,OACb,EACD,CACI,EAAK,IACL,KAAQ,SACR,KAAQ,OACR,MAAQ,UACR,MAAQ,UACR,MAAQ,SACR,MAAQ,UACR,MAAQ,OACR,MAAQ,SACR,MAAQ,UACR,MAAQ,UACR,MAAQ,UACR,MAAQ,UACR,MAAQ,EACR,MAAQ,SACR,MAAQ,UACR,KAAO,SACP,KAAQ,UACR,MAAQ,IACR,MAAQ,SACR,MAAQ,OACR,MAAQ,UACR,MAAQ,UACR,MAAQ,UACR,MAAQ,UACR,MAAQ,EACR,MAAQ,UACR,MAAQ,SACR,MAAQ,UACR,MAAQ,UACR,MAAQ,SACR,MAAQ,OACR,MAAS,OACT,MAAS,IACT,MAAS,UACT,MAAS,UACT,MAAS,SACT,MAAS,UACT,MAAS,UACT,MAAS,SACT,MAAS,UACT,OAAS,UACT,OAAS,SACT,OAAS,UACT,OAAS,OACT,OAAS,UACT,OAAS,EACT,OAAS,SACT,MAAS,UACT,MAAS,SACT,MAAS,SACT,MAAS,UACT,MAAS,UACT,MAAS,SACT,MAAS,IACT,MAAS,UACT,OAAS,OACT,OAAS,UACT,OAAS,EACT,OAAS,UACT,OAAS,SACT,OAAS,OACT,OAAS,UACT,OAAS,SACZ,EACD,CACI,EAAK,UACL,IAAO,KACP,IAAO,UACP,IAAO,UACP,KAAO,UACP,KAAO,QACP,KAAO,QACP,KAAO,UACP,KAAO,EACP,KAAO,UACP,KAAO,QACP,KAAO,EACP,KAAO,UACP,KAAO,QACP,KAAO,KACP,KAAO,UACP,IAAM,UACN,IAAO,UACP,IAAO,EACP,IAAO,QACP,KAAO,QACP,KAAO,UACP,KAAO,UACP,KAAO,KACP,KAAO,QACP,KAAO,KACP,KAAO,UACP,KAAO,UACP,KAAO,EACP,KAAO,UACP,KAAO,QACP,KAAO,UACP,KAAQ,UACR,KAAQ,UACR,KAAQ,UACR,KAAQ,KACR,KAAQ,QACR,KAAQ,UACR,KAAQ,UACR,KAAQ,QACR,KAAQ,QACR,KAAQ,EACR,KAAQ,EACR,KAAQ,UACR,KAAQ,KACR,KAAQ,UACR,KAAQ,UACR,KAAQ,QACR,KAAQ,EACR,KAAQ,QACR,KAAQ,QACR,KAAQ,UACR,KAAQ,UACR,KAAQ,KACR,KAAQ,UACR,KAAQ,UACR,KAAQ,UACR,KAAQ,UACR,KAAQ,KACR,KAAQ,QACR,KAAQ,QACR,KAAQ,EACR,KAAQ,UACR,KAAQ,SACX,EACD,CACI,EAAK,QACL,GAAM,SACN,GAAM,KACN,GAAM,QACN,GAAM,SACN,GAAM,EACN,GAAM,EACN,IAAM,SACN,IAAM,SACN,IAAM,QACN,IAAM,SACN,IAAM,SACN,IAAM,SACN,IAAM,KACN,IAAM,QACN,IAAM,SACN,EAAK,SACL,GAAM,EACN,GAAM,SACN,GAAM,SACN,GAAM,QACN,GAAM,SACN,IAAM,SACN,IAAM,KACN,IAAM,QACN,IAAM,SACN,IAAM,SACN,IAAM,QACN,IAAM,KACN,IAAM,SACN,IAAM,EACN,IAAM,QACN,IAAO,SACP,IAAO,QACP,IAAO,SACP,IAAO,SACP,IAAO,QACP,IAAO,SACP,IAAO,SACP,IAAO,QACP,IAAO,KACP,IAAO,SACP,IAAO,QACP,IAAO,EACP,IAAO,EACP,IAAO,SACP,IAAO,SACP,IAAO,KACP,IAAO,QACP,IAAO,SACP,IAAO,SACP,IAAO,EACP,IAAO,SACP,IAAO,QACP,IAAO,KACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,EACP,IAAO,SACP,IAAO,QACP,IAAO,KACP,IAAO,SACP,IAAO,OACV,EACD,CACI,EAAK,UACL,EAAK,OACL,EAAK,UACL,EAAK,GACL,EAAK,OACL,EAAK,UACL,EAAK,UACL,EAAK,KACL,EAAK,UACL,EAAK,UACL,GAAK,OACL,GAAK,UACL,GAAK,KACL,GAAK,EACL,GAAK,UACL,GAAK,OACL,WAAY,KACZ,WAAY,UACZ,WAAY,UACZ,WAAY,UACZ,WAAY,UACZ,WAAY,OACZ,WAAY,OACZ,WAAY,GACZ,WAAY,UACZ,WAAY,KACZ,WAAY,OACZ,WAAY,UACZ,WAAY,EACZ,WAAY,UACZ,WAAY,UACZ,WAAY,OACZ,GAAM,OACN,GAAM,UACN,GAAM,GACN,GAAM,KACN,GAAM,UACN,GAAM,UACN,GAAM,UACN,GAAM,OACN,GAAM,EACN,GAAM,OACN,GAAM,UACN,GAAM,UACN,GAAM,UACN,GAAM,OACN,GAAM,KACN,GAAM,UACN,WAAY,OACZ,WAAY,KACZ,WAAY,UACZ,WAAY,OACZ,WAAY,GACZ,WAAY,UACZ,WAAY,UACZ,WAAY,UACZ,WAAY,UACZ,WAAY,UACZ,WAAY,UACZ,WAAY,EACZ,WAAY,OACZ,WAAY,KACZ,WAAY,OACZ,WAAY,SACf,CACV,EAGSC,EAAY,CACZ,WAAY,UAAY,SAAY,QACpC,OAAY,KAAY,IAAY,UAC7C,EAKSC,EAAMzT,EAAO,IAAMoR,EAAY,OAAO,CACtC,SAAU,UAAY,CAOlB,QALIrgC,EAAM,KAAK,KACXshC,EAAWthC,EAAI,MAGf2iC,EAAU,CAAA,EACLv1B,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,IAAIw1B,EAAYP,EAAIj1B,CAAC,EAAI,EACzBu1B,EAAQv1B,CAAC,EAAKk0B,EAASsB,IAAc,CAAC,IAAO,GAAKA,EAAY,GAAO,CACxE,CAID,QADIC,EAAU,KAAK,SAAW,GACrBC,EAAU,EAAGA,EAAU,GAAIA,IAAW,CAQ3C,QANIC,EAASF,EAAQC,CAAO,EAAI,CAAA,EAG5BE,EAAWT,EAAWO,CAAO,EAGxB11B,EAAI,EAAGA,EAAI,GAAIA,IAEpB21B,EAAQ31B,EAAI,EAAK,CAAC,GAAKu1B,GAAUL,EAAIl1B,CAAC,EAAI,EAAK41B,GAAY,EAAE,GAAM,GAAK51B,EAAI,EAG5E21B,EAAO,GAAM31B,EAAI,EAAK,EAAE,GAAKu1B,EAAQ,IAAQL,EAAIl1B,EAAI,EAAE,EAAI,EAAK41B,GAAY,EAAG,GAAM,GAAK51B,EAAI,EAMlG21B,EAAO,CAAC,EAAKA,EAAO,CAAC,GAAK,EAAMA,EAAO,CAAC,IAAM,GAC9C,QAAS31B,EAAI,EAAGA,EAAI,EAAGA,IACnB21B,EAAO31B,CAAC,EAAI21B,EAAO31B,CAAC,KAAQA,EAAI,GAAK,EAAI,EAE7C21B,EAAO,CAAC,EAAKA,EAAO,CAAC,GAAK,EAAMA,EAAO,CAAC,IAAM,EACjD,CAID,QADIE,EAAa,KAAK,YAAc,GAC3B71B,EAAI,EAAGA,EAAI,GAAIA,IACpB61B,EAAW71B,CAAC,EAAIy1B,EAAQ,GAAKz1B,CAAC,CAErC,EAED,aAAc,SAAUgiB,EAAGpW,EAAQ,CAC/B,KAAK,cAAcoW,EAAGpW,EAAQ,KAAK,QAAQ,CAC9C,EAED,aAAc,SAAUoW,EAAGpW,EAAQ,CAC/B,KAAK,cAAcoW,EAAGpW,EAAQ,KAAK,WAAW,CACjD,EAED,cAAe,SAAUoW,EAAGpW,EAAQ6pB,EAAS,CAEzC,KAAK,QAAUzT,EAAEpW,CAAM,EACvB,KAAK,QAAUoW,EAAEpW,EAAS,CAAC,EAG3BkqB,EAAW,KAAK,KAAM,EAAI,SAAU,EACpCA,EAAW,KAAK,KAAM,GAAI,KAAU,EACpCC,EAAW,KAAK,KAAM,EAAI,SAAU,EACpCA,EAAW,KAAK,KAAM,EAAI,QAAU,EACpCD,EAAW,KAAK,KAAM,EAAI,UAAU,EAGpC,QAASxL,EAAQ,EAAGA,EAAQ,GAAIA,IAAS,CAQrC,QANIqL,EAASF,EAAQnL,CAAK,EACtB0L,EAAS,KAAK,QACdC,EAAS,KAAK,QAGdC,EAAI,EACCl2B,EAAI,EAAGA,EAAI,EAAGA,IACnBk2B,GAAKd,EAAOp1B,CAAC,IAAIi2B,EAASN,EAAO31B,CAAC,GAAKq1B,EAAUr1B,CAAC,KAAO,CAAC,EAE9D,KAAK,QAAUi2B,EACf,KAAK,QAAUD,EAASE,CAC3B,CAGD,IAAI/zB,EAAI,KAAK,QACb,KAAK,QAAU,KAAK,QACpB,KAAK,QAAUA,EAGf2zB,EAAW,KAAK,KAAM,EAAI,UAAU,EACpCC,EAAW,KAAK,KAAM,EAAI,QAAU,EACpCA,EAAW,KAAK,KAAM,EAAI,SAAU,EACpCD,EAAW,KAAK,KAAM,GAAI,KAAU,EACpCA,EAAW,KAAK,KAAM,EAAI,SAAU,EAGpC9T,EAAEpW,CAAM,EAAI,KAAK,QACjBoW,EAAEpW,EAAS,CAAC,EAAI,KAAK,OACxB,EAED,QAAS,GAAG,GAEZ,OAAQ,GAAG,GAEX,UAAW,GAAG,EACvB,CAAM,EAGD,SAASkqB,EAAWlqB,EAAQuqB,EAAM,CAC9B,IAAIh0B,GAAM,KAAK,UAAYyJ,EAAU,KAAK,SAAWuqB,EACrD,KAAK,SAAWh0B,EAChB,KAAK,SAAWA,GAAKyJ,CACxB,CAED,SAASmqB,EAAWnqB,EAAQuqB,EAAM,CAC9B,IAAIh0B,GAAM,KAAK,UAAYyJ,EAAU,KAAK,SAAWuqB,EACrD,KAAK,SAAWh0B,EAChB,KAAK,SAAWA,GAAKyJ,CACxB,CAUDiT,EAAE,IAAMoU,EAAY,cAAcqC,CAAG,EAKrC,IAAIc,EAAYvU,EAAO,UAAYoR,EAAY,OAAO,CAClD,SAAU,UAAY,CAElB,IAAIrgC,EAAM,KAAK,KACXshC,EAAWthC,EAAI,MAEnB,GAAIshC,EAAS,SAAW,GAAKA,EAAS,SAAW,GAAKA,EAAS,OAAS,EACpE,MAAM,IAAI,MAAM,+EAA+E,EAInG,IAAImC,EAAOnC,EAAS,MAAM,EAAG,CAAC,EAC1BoC,EAAOpC,EAAS,OAAS,EAAIA,EAAS,MAAM,EAAG,CAAC,EAAIA,EAAS,MAAM,EAAG,CAAC,EACvEqC,EAAOrC,EAAS,OAAS,EAAIA,EAAS,MAAM,EAAG,CAAC,EAAIA,EAAS,MAAM,EAAG,CAAC,EAG3E,KAAK,MAAQoB,EAAI,gBAAgB1V,EAAU,OAAOyW,CAAI,CAAC,EACvD,KAAK,MAAQf,EAAI,gBAAgB1V,EAAU,OAAO0W,CAAI,CAAC,EACvD,KAAK,MAAQhB,EAAI,gBAAgB1V,EAAU,OAAO2W,CAAI,CAAC,CAC1D,EAED,aAAc,SAAUvU,EAAGpW,EAAQ,CAC/B,KAAK,MAAM,aAAaoW,EAAGpW,CAAM,EACjC,KAAK,MAAM,aAAaoW,EAAGpW,CAAM,EACjC,KAAK,MAAM,aAAaoW,EAAGpW,CAAM,CACpC,EAED,aAAc,SAAUoW,EAAGpW,EAAQ,CAC/B,KAAK,MAAM,aAAaoW,EAAGpW,CAAM,EACjC,KAAK,MAAM,aAAaoW,EAAGpW,CAAM,EACjC,KAAK,MAAM,aAAaoW,EAAGpW,CAAM,CACpC,EAED,QAAS,IAAI,GAEb,OAAQ,GAAG,GAEX,UAAW,GAAG,EACvB,CAAM,EAUDiT,EAAE,UAAYoU,EAAY,cAAcmD,CAAS,CACtD,IAGQzX,EAAS,SAEjB,CAAC,wFC1wBC,SAAU5lB,EAAM9D,EAASmvB,EAAO,CAGhC5F,EAAiB,QAAUvpB,EAAQwpB,KAAmB4F,KAAyBiF,KAAkByJ,KAAqBC,GAAwB,CAAA,CAUhJ,GAAEtU,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIE,EAAIF,EACJG,EAAQD,EAAE,IACV2X,EAAe1X,EAAM,aACrB+C,EAAShD,EAAE,KAKX4X,EAAM5U,EAAO,IAAM2U,EAAa,OAAO,CACvC,SAAU,UAAY,CAQlB,QANI5jC,EAAM,KAAK,KACXshC,EAAWthC,EAAI,MACf8jC,EAAc9jC,EAAI,SAGlB+jC,EAAI,KAAK,GAAK,GACT32B,EAAI,EAAGA,EAAI,IAAKA,IACrB22B,EAAE32B,CAAC,EAAIA,EAIX,QAASA,EAAI,EAAG+gB,EAAI,EAAG/gB,EAAI,IAAKA,IAAK,CACjC,IAAI42B,EAAe52B,EAAI02B,EACnBG,EAAW3C,EAAS0C,IAAiB,CAAC,IAAO,GAAMA,EAAe,EAAK,EAAM,IAEjF7V,GAAKA,EAAI4V,EAAE32B,CAAC,EAAI62B,GAAW,IAG3B,IAAI10B,EAAIw0B,EAAE32B,CAAC,EACX22B,EAAE32B,CAAC,EAAI22B,EAAE5V,CAAC,EACV4V,EAAE5V,CAAC,EAAI5e,CACV,CAGD,KAAK,GAAK,KAAK,GAAK,CACvB,EAED,gBAAiB,SAAU6f,EAAGpW,EAAQ,CAClCoW,EAAEpW,CAAM,GAAKkrB,EAAsB,KAAK,IAAI,CAC/C,EAED,QAAS,IAAI,GAEb,OAAQ,CACjB,CAAM,EAED,SAASA,GAAwB,CAQ7B,QANIH,EAAI,KAAK,GACT32B,EAAI,KAAK,GACT+gB,EAAI,KAAK,GAGTgW,EAAgB,EACXj3B,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxBE,GAAKA,EAAI,GAAK,IACd+gB,GAAKA,EAAI4V,EAAE32B,CAAC,GAAK,IAGjB,IAAImC,EAAIw0B,EAAE32B,CAAC,EACX22B,EAAE32B,CAAC,EAAI22B,EAAE5V,CAAC,EACV4V,EAAE5V,CAAC,EAAI5e,EAEP40B,GAAiBJ,GAAGA,EAAE32B,CAAC,EAAI22B,EAAE5V,CAAC,GAAK,GAAG,GAAM,GAAKjhB,EAAI,CACxD,CAGD,YAAK,GAAKE,EACV,KAAK,GAAK+gB,EAEHgW,CACV,CAUDlY,EAAE,IAAM2X,EAAa,cAAcC,CAAG,EAKtC,IAAIO,EAAUnV,EAAO,QAAU4U,EAAI,OAAO,CAMtC,IAAKA,EAAI,IAAI,OAAO,CAChB,KAAM,GACnB,CAAU,EAED,SAAU,UAAY,CAClBA,EAAI,SAAS,KAAK,IAAI,EAGtB,QAASz2B,EAAI,KAAK,IAAI,KAAMA,EAAI,EAAGA,IAC/B82B,EAAsB,KAAK,IAAI,CAEtC,CACV,CAAM,EAUDjY,EAAE,QAAU2X,EAAa,cAAcQ,CAAO,CACnD,IAGQrY,EAAS,GAEjB,CAAC,wFC1IC,SAAU5lB,EAAM9D,EAASmvB,EAAO,CAGhC5F,EAAiB,QAAUvpB,EAAQwpB,KAAmB4F,KAAyBiF,KAAkByJ,KAAqBC,GAAwB,CAAA,CAUhJ,GAAEtU,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIE,EAAIF,EACJG,EAAQD,EAAE,IACV2X,EAAe1X,EAAM,aACrB+C,EAAShD,EAAE,KAGX8X,EAAK,CAAA,EACLM,EAAK,CAAA,EACLC,EAAK,CAAA,EAKLC,EAAStV,EAAO,OAAS2U,EAAa,OAAO,CAC7C,SAAU,UAAY,CAMlB,QAJI7R,EAAI,KAAK,KAAK,MACdqL,EAAK,KAAK,IAAI,GAGThwB,EAAI,EAAGA,EAAI,EAAGA,IACnB2kB,EAAE3kB,CAAC,GAAO2kB,EAAE3kB,CAAC,GAAK,EAAO2kB,EAAE3kB,CAAC,IAAM,IAAO,UAC/B2kB,EAAE3kB,CAAC,GAAK,GAAO2kB,EAAE3kB,CAAC,IAAM,GAAO,WAI7C,IAAIo3B,EAAI,KAAK,GAAK,CACdzS,EAAE,CAAC,EAAIA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,GAC/BA,EAAE,CAAC,EAAIA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,GAC/BA,EAAE,CAAC,EAAIA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,GAC/BA,EAAE,CAAC,EAAIA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,EAChD,EAGiB9F,EAAI,KAAK,GAAK,CACb8F,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,GAAMA,EAAE,CAAC,EAAI,WAAeA,EAAE,CAAC,EAAI,MAC3DA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,GAAMA,EAAE,CAAC,EAAI,WAAeA,EAAE,CAAC,EAAI,MAC3DA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,GAAMA,EAAE,CAAC,EAAI,WAAeA,EAAE,CAAC,EAAI,MAC3DA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,GAAMA,EAAE,CAAC,EAAI,WAAeA,EAAE,CAAC,EAAI,KAC7E,EAGa,KAAK,GAAK,EAGV,QAAS3kB,EAAI,EAAGA,EAAI,EAAGA,IACnB3D,EAAU,KAAK,IAAI,EAIvB,QAAS2D,EAAI,EAAGA,EAAI,EAAGA,IACnB6e,EAAE7e,CAAC,GAAKo3B,EAAGp3B,EAAI,EAAK,CAAC,EAIzB,GAAIgwB,EAAI,CAEJ,IAAIqH,EAAKrH,EAAG,MACRsH,EAAOD,EAAG,CAAC,EACXE,EAAOF,EAAG,CAAC,EAGXG,GAAQF,GAAQ,EAAMA,IAAS,IAAO,UAAiBA,GAAQ,GAAOA,IAAS,GAAM,WACrFG,GAAQF,GAAQ,EAAMA,IAAS,IAAO,UAAiBA,GAAQ,GAAOA,IAAS,GAAM,WACrFG,EAAMF,IAAO,GAAOC,EAAK,WACzBE,EAAMF,GAAM,GAAQD,EAAK,MAG7B3Y,EAAE,CAAC,GAAK2Y,EACR3Y,EAAE,CAAC,GAAK6Y,EACR7Y,EAAE,CAAC,GAAK4Y,EACR5Y,EAAE,CAAC,GAAK8Y,EACR9Y,EAAE,CAAC,GAAK2Y,EACR3Y,EAAE,CAAC,GAAK6Y,EACR7Y,EAAE,CAAC,GAAK4Y,EACR5Y,EAAE,CAAC,GAAK8Y,EAGR,QAAS33B,EAAI,EAAGA,EAAI,EAAGA,IACnB3D,EAAU,KAAK,IAAI,CAE1B,CACJ,EAED,gBAAiB,SAAU2lB,EAAGpW,EAAQ,CAElC,IAAIwrB,EAAI,KAAK,GAGb/6B,EAAU,KAAK,IAAI,EAGnBs6B,EAAE,CAAC,EAAIS,EAAE,CAAC,EAAKA,EAAE,CAAC,IAAM,GAAOA,EAAE,CAAC,GAAK,GACvCT,EAAE,CAAC,EAAIS,EAAE,CAAC,EAAKA,EAAE,CAAC,IAAM,GAAOA,EAAE,CAAC,GAAK,GACvCT,EAAE,CAAC,EAAIS,EAAE,CAAC,EAAKA,EAAE,CAAC,IAAM,GAAOA,EAAE,CAAC,GAAK,GACvCT,EAAE,CAAC,EAAIS,EAAE,CAAC,EAAKA,EAAE,CAAC,IAAM,GAAOA,EAAE,CAAC,GAAK,GAEvC,QAASp3B,EAAI,EAAGA,EAAI,EAAGA,IAEnB22B,EAAE32B,CAAC,GAAO22B,EAAE32B,CAAC,GAAK,EAAO22B,EAAE32B,CAAC,IAAM,IAAO,UAC/B22B,EAAE32B,CAAC,GAAK,GAAO22B,EAAE32B,CAAC,IAAM,GAAO,WAGzCgiB,EAAEpW,EAAS5L,CAAC,GAAK22B,EAAE32B,CAAC,CAE3B,EAED,UAAW,IAAI,GAEf,OAAQ,GAAG,EACpB,CAAM,EAED,SAAS3D,GAAY,CAMjB,QAJI+6B,EAAI,KAAK,GACTvY,EAAI,KAAK,GAGJ7e,EAAI,EAAGA,EAAI,EAAGA,IACnBi3B,EAAGj3B,CAAC,EAAI6e,EAAE7e,CAAC,EAIf6e,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI,WAAa,KAAK,GAAM,EACvCA,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI,YAAeA,EAAE,CAAC,IAAM,EAAMoY,EAAG,CAAC,IAAM,EAAK,EAAI,GAAM,EACtEpY,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI,WAAeA,EAAE,CAAC,IAAM,EAAMoY,EAAG,CAAC,IAAM,EAAK,EAAI,GAAM,EACtEpY,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI,YAAeA,EAAE,CAAC,IAAM,EAAMoY,EAAG,CAAC,IAAM,EAAK,EAAI,GAAM,EACtEpY,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI,YAAeA,EAAE,CAAC,IAAM,EAAMoY,EAAG,CAAC,IAAM,EAAK,EAAI,GAAM,EACtEpY,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI,WAAeA,EAAE,CAAC,IAAM,EAAMoY,EAAG,CAAC,IAAM,EAAK,EAAI,GAAM,EACtEpY,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI,YAAeA,EAAE,CAAC,IAAM,EAAMoY,EAAG,CAAC,IAAM,EAAK,EAAI,GAAM,EACtEpY,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI,YAAeA,EAAE,CAAC,IAAM,EAAMoY,EAAG,CAAC,IAAM,EAAK,EAAI,GAAM,EACtE,KAAK,GAAMpY,EAAE,CAAC,IAAM,EAAMoY,EAAG,CAAC,IAAM,EAAK,EAAI,EAG7C,QAASj3B,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAI43B,EAAKR,EAAEp3B,CAAC,EAAI6e,EAAE7e,CAAC,EAGf63B,EAAKD,EAAK,MACVE,EAAKF,IAAO,GAGZ5Q,IAAS6Q,EAAKA,IAAQ,IAAMA,EAAKC,IAAQ,IAAMA,EAAKA,EACpD7Q,IAAQ2Q,EAAK,YAAcA,EAAM,KAAQA,EAAK,OAAcA,EAAM,GAGtEV,EAAEl3B,CAAC,EAAIgnB,EAAKC,CACf,CAGDmQ,EAAE,CAAC,EAAKF,EAAE,CAAC,GAAMA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,KAASA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,IAAQ,EAClFE,EAAE,CAAC,EAAKF,EAAE,CAAC,GAAMA,EAAE,CAAC,GAAK,EAAOA,EAAE,CAAC,IAAM,IAAOA,EAAE,CAAC,EAAK,EACxDE,EAAE,CAAC,EAAKF,EAAE,CAAC,GAAMA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,KAASA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,IAAQ,EAClFE,EAAE,CAAC,EAAKF,EAAE,CAAC,GAAMA,EAAE,CAAC,GAAK,EAAOA,EAAE,CAAC,IAAM,IAAOA,EAAE,CAAC,EAAK,EACxDE,EAAE,CAAC,EAAKF,EAAE,CAAC,GAAMA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,KAASA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,IAAQ,EAClFE,EAAE,CAAC,EAAKF,EAAE,CAAC,GAAMA,EAAE,CAAC,GAAK,EAAOA,EAAE,CAAC,IAAM,IAAOA,EAAE,CAAC,EAAK,EACxDE,EAAE,CAAC,EAAKF,EAAE,CAAC,GAAMA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,KAASA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,IAAQ,EAClFE,EAAE,CAAC,EAAKF,EAAE,CAAC,GAAMA,EAAE,CAAC,GAAK,EAAOA,EAAE,CAAC,IAAM,IAAOA,EAAE,CAAC,EAAK,CAC3D,CAUDrY,EAAE,OAAS2X,EAAa,cAAcW,CAAM,CACjD,IAGQxY,EAAS,MAEjB,CAAC,wFC/LC,SAAU5lB,EAAM9D,EAASmvB,EAAO,CAGhC5F,EAAiB,QAAUvpB,EAAQwpB,KAAmB4F,KAAyBiF,KAAkByJ,KAAqBC,GAAwB,CAAA,CAUhJ,GAAEtU,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIE,EAAIF,EACJG,EAAQD,EAAE,IACV2X,EAAe1X,EAAM,aACrB+C,EAAShD,EAAE,KAGX8X,EAAK,CAAA,EACLM,EAAK,CAAA,EACLC,EAAK,CAAA,EASLa,EAAelW,EAAO,aAAe2U,EAAa,OAAO,CACzD,SAAU,UAAY,CAElB,IAAI7R,EAAI,KAAK,KAAK,MACdqL,EAAK,KAAK,IAAI,GAGdoH,EAAI,KAAK,GAAK,CACdzS,EAAE,CAAC,EAAIA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,GAC/BA,EAAE,CAAC,EAAIA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,GAC/BA,EAAE,CAAC,EAAIA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,GAC/BA,EAAE,CAAC,EAAIA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,EAChD,EAGiB9F,EAAI,KAAK,GAAK,CACb8F,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,GAAMA,EAAE,CAAC,EAAI,WAAeA,EAAE,CAAC,EAAI,MAC3DA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,GAAMA,EAAE,CAAC,EAAI,WAAeA,EAAE,CAAC,EAAI,MAC3DA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,GAAMA,EAAE,CAAC,EAAI,WAAeA,EAAE,CAAC,EAAI,MAC3DA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,GAAMA,EAAE,CAAC,EAAI,WAAeA,EAAE,CAAC,EAAI,KAC7E,EAGa,KAAK,GAAK,EAGV,QAAS3kB,EAAI,EAAGA,EAAI,EAAGA,IACnB3D,EAAU,KAAK,IAAI,EAIvB,QAAS2D,EAAI,EAAGA,EAAI,EAAGA,IACnB6e,EAAE7e,CAAC,GAAKo3B,EAAGp3B,EAAI,EAAK,CAAC,EAIzB,GAAIgwB,EAAI,CAEJ,IAAIqH,EAAKrH,EAAG,MACRsH,EAAOD,EAAG,CAAC,EACXE,EAAOF,EAAG,CAAC,EAGXG,GAAQF,GAAQ,EAAMA,IAAS,IAAO,UAAiBA,GAAQ,GAAOA,IAAS,GAAM,WACrFG,GAAQF,GAAQ,EAAMA,IAAS,IAAO,UAAiBA,GAAQ,GAAOA,IAAS,GAAM,WACrFG,EAAMF,IAAO,GAAOC,EAAK,WACzBE,EAAMF,GAAM,GAAQD,EAAK,MAG7B3Y,EAAE,CAAC,GAAK2Y,EACR3Y,EAAE,CAAC,GAAK6Y,EACR7Y,EAAE,CAAC,GAAK4Y,EACR5Y,EAAE,CAAC,GAAK8Y,EACR9Y,EAAE,CAAC,GAAK2Y,EACR3Y,EAAE,CAAC,GAAK6Y,EACR7Y,EAAE,CAAC,GAAK4Y,EACR5Y,EAAE,CAAC,GAAK8Y,EAGR,QAAS33B,EAAI,EAAGA,EAAI,EAAGA,IACnB3D,EAAU,KAAK,IAAI,CAE1B,CACJ,EAED,gBAAiB,SAAU2lB,EAAGpW,EAAQ,CAElC,IAAIwrB,EAAI,KAAK,GAGb/6B,EAAU,KAAK,IAAI,EAGnBs6B,EAAE,CAAC,EAAIS,EAAE,CAAC,EAAKA,EAAE,CAAC,IAAM,GAAOA,EAAE,CAAC,GAAK,GACvCT,EAAE,CAAC,EAAIS,EAAE,CAAC,EAAKA,EAAE,CAAC,IAAM,GAAOA,EAAE,CAAC,GAAK,GACvCT,EAAE,CAAC,EAAIS,EAAE,CAAC,EAAKA,EAAE,CAAC,IAAM,GAAOA,EAAE,CAAC,GAAK,GACvCT,EAAE,CAAC,EAAIS,EAAE,CAAC,EAAKA,EAAE,CAAC,IAAM,GAAOA,EAAE,CAAC,GAAK,GAEvC,QAASp3B,EAAI,EAAGA,EAAI,EAAGA,IAEnB22B,EAAE32B,CAAC,GAAO22B,EAAE32B,CAAC,GAAK,EAAO22B,EAAE32B,CAAC,IAAM,IAAO,UAC/B22B,EAAE32B,CAAC,GAAK,GAAO22B,EAAE32B,CAAC,IAAM,GAAO,WAGzCgiB,EAAEpW,EAAS5L,CAAC,GAAK22B,EAAE32B,CAAC,CAE3B,EAED,UAAW,IAAI,GAEf,OAAQ,GAAG,EACpB,CAAM,EAED,SAAS3D,GAAY,CAMjB,QAJI+6B,EAAI,KAAK,GACTvY,EAAI,KAAK,GAGJ7e,EAAI,EAAGA,EAAI,EAAGA,IACnBi3B,EAAGj3B,CAAC,EAAI6e,EAAE7e,CAAC,EAIf6e,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI,WAAa,KAAK,GAAM,EACvCA,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI,YAAeA,EAAE,CAAC,IAAM,EAAMoY,EAAG,CAAC,IAAM,EAAK,EAAI,GAAM,EACtEpY,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI,WAAeA,EAAE,CAAC,IAAM,EAAMoY,EAAG,CAAC,IAAM,EAAK,EAAI,GAAM,EACtEpY,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI,YAAeA,EAAE,CAAC,IAAM,EAAMoY,EAAG,CAAC,IAAM,EAAK,EAAI,GAAM,EACtEpY,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI,YAAeA,EAAE,CAAC,IAAM,EAAMoY,EAAG,CAAC,IAAM,EAAK,EAAI,GAAM,EACtEpY,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI,WAAeA,EAAE,CAAC,IAAM,EAAMoY,EAAG,CAAC,IAAM,EAAK,EAAI,GAAM,EACtEpY,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI,YAAeA,EAAE,CAAC,IAAM,EAAMoY,EAAG,CAAC,IAAM,EAAK,EAAI,GAAM,EACtEpY,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI,YAAeA,EAAE,CAAC,IAAM,EAAMoY,EAAG,CAAC,IAAM,EAAK,EAAI,GAAM,EACtE,KAAK,GAAMpY,EAAE,CAAC,IAAM,EAAMoY,EAAG,CAAC,IAAM,EAAK,EAAI,EAG7C,QAASj3B,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAI43B,EAAKR,EAAEp3B,CAAC,EAAI6e,EAAE7e,CAAC,EAGf63B,EAAKD,EAAK,MACVE,EAAKF,IAAO,GAGZ5Q,IAAS6Q,EAAKA,IAAQ,IAAMA,EAAKC,IAAQ,IAAMA,EAAKA,EACpD7Q,IAAQ2Q,EAAK,YAAcA,EAAM,KAAQA,EAAK,OAAcA,EAAM,GAGtEV,EAAEl3B,CAAC,EAAIgnB,EAAKC,CACf,CAGDmQ,EAAE,CAAC,EAAKF,EAAE,CAAC,GAAMA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,KAASA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,IAAQ,EAClFE,EAAE,CAAC,EAAKF,EAAE,CAAC,GAAMA,EAAE,CAAC,GAAK,EAAOA,EAAE,CAAC,IAAM,IAAOA,EAAE,CAAC,EAAK,EACxDE,EAAE,CAAC,EAAKF,EAAE,CAAC,GAAMA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,KAASA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,IAAQ,EAClFE,EAAE,CAAC,EAAKF,EAAE,CAAC,GAAMA,EAAE,CAAC,GAAK,EAAOA,EAAE,CAAC,IAAM,IAAOA,EAAE,CAAC,EAAK,EACxDE,EAAE,CAAC,EAAKF,EAAE,CAAC,GAAMA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,KAASA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,IAAQ,EAClFE,EAAE,CAAC,EAAKF,EAAE,CAAC,GAAMA,EAAE,CAAC,GAAK,EAAOA,EAAE,CAAC,IAAM,IAAOA,EAAE,CAAC,EAAK,EACxDE,EAAE,CAAC,EAAKF,EAAE,CAAC,GAAMA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,KAASA,EAAE,CAAC,GAAK,GAAOA,EAAE,CAAC,IAAM,IAAQ,EAClFE,EAAE,CAAC,EAAKF,EAAE,CAAC,GAAMA,EAAE,CAAC,GAAK,EAAOA,EAAE,CAAC,IAAM,IAAOA,EAAE,CAAC,EAAK,CAC3D,CAUDrY,EAAE,aAAe2X,EAAa,cAAcuB,CAAY,CAC7D,IAGQpZ,EAAS,YAEjB,CAAC,wFC7LC,SAAU5lB,EAAM9D,EAASmvB,EAAO,CAGhC5F,EAAiB,QAAUvpB,EAAQwpB,KAAmB4F,KAAyBiF,KAAkByJ,KAAqBC,GAAwB,CAAA,CAUhJ,GAAEtU,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIE,EAAIF,EACJG,EAAQD,EAAE,IACVoU,EAAcnU,EAAM,YACpB+C,EAAShD,EAAE,KAEf,MAAMmZ,EAAI,GAGJC,EAAS,CACX,UAAY,WAAY,UAAY,SACpC,WAAY,UAAY,UAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UACrB,EAEWC,EAAS,CACX,CAAI,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,QAAY,UAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,SACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UAAc,EACtD,CAAI,WAAY,WAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,UAAY,UAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,UAAY,WAAY,WACpC,UAAY,WAAY,SAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,UACpC,WAAY,UAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UAAc,EACtD,CAAI,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,SACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,UAAY,SAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,UAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,QAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UAAa,EACrD,CAAI,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,UAAY,SACpC,WAAY,SAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,SAAY,SACpC,WAAY,WAAY,WAAY,WACpC,UAAY,UAAY,WAAY,UACpC,WAAY,WAAY,SAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,SACpC,UAAY,WAAY,UAAY,WACpC,WAAY,UAAY,SAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,UAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,W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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,50,51,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,80,81,82,83,84,85,86,87,88,89,90,91,92,93,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]}